aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/Read Me.txt7
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.css151
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.js30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo.html4807
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.eotbin0 -> 92372 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.svg308
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.ttfbin0 -> 92192 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.woffbin0 -> 92268 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/selection.json8408
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/style.css921
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/default.html16
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-menu-i18n-en-US.properties21
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js69
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js359
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/js/mainpage/load_mainPage.js11
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/json/main_page.json96
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/json/menu_list.json102
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/avalon/avalon.modern.js8177
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.js12101
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js155
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables.min.css1
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/bower.json42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/Thumbs.dbbin0 -> 5120 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/banner.jpgbin0 -> 32768 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.css261
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.styl1191
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/icheck.pngbin0 -> 2382 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-bottom.pngbin0 -> 184 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-top.pngbin0 -> 175 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/header-line.pngbin0 -> 611 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-fork.pngbin0 -> 213 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-github.pngbin0 -> 634 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-lab.pngbin0 -> 683 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-options.pngbin0 -> 666 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-star.pngbin0 -> 348 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.eotbin0 -> 13099 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.svg1490
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.ttfbin0 -> 32768 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.woffbin0 -> 15736 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.eotbin0 -> 13114 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.svg1365
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.ttfbin0 -> 32768 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.woffbin0 -> 15692 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/normalize.css527
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/index.html1544
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.js109
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.min.js5
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/jquery.js4
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/zepto.js41
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.jquery.json48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.js509
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.min.js11
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/all.css61
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/_all.css530
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.pngbin0 -> 1520 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero@2x.pngbin0 -> 3218 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.pngbin0 -> 1518 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue@2x.pngbin0 -> 3217 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.pngbin0 -> 1515 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat@2x.pngbin0 -> 3217 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.pngbin0 -> 1444 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green@2x.pngbin0 -> 3117 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.pngbin0 -> 1516 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey@2x.pngbin0 -> 3217 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.pngbin0 -> 1518 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange@2x.pngbin0 -> 3275 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.pngbin0 -> 1522 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink@2x.pngbin0 -> 3218 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.pngbin0 -> 1519 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple@2x.pngbin0 -> 3218 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.pngbin0 -> 1516 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red@2x.pngbin0 -> 3276 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.pngbin0 -> 1516 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow@2x.pngbin0 -> 3216 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.css53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.pngbin0 -> 1734 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico@2x.pngbin0 -> 3446 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/Thumbs.dbbin0 -> 4608 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/_all.css710
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/aero.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/blue.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/green.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/grey.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.pngbin0 -> 588 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line@2x.pngbin0 -> 1073 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/orange.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/pink.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/purple.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/red.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/yellow.css71
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/_all.css590
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.pngbin0 -> 1151 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero@2x.pngbin0 -> 1409 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.pngbin0 -> 1132 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue@2x.pngbin0 -> 1410 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.pngbin0 -> 1143 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green@2x.pngbin0 -> 1408 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.pngbin0 -> 1142 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey@2x.pngbin0 -> 1407 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.pngbin0 -> 1114 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal@2x.pngbin0 -> 1410 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.pngbin0 -> 1139 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange@2x.pngbin0 -> 1407 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.pngbin0 -> 1150 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink@2x.pngbin0 -> 1409 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.pngbin0 -> 1132 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple@2x.pngbin0 -> 1409 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.pngbin0 -> 1130 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red@2x.pngbin0 -> 1410 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.pngbin0 -> 1135 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow@2x.pngbin0 -> 1406 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.pngbin0 -> 6401 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris@2x.pngbin0 -> 32768 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/Thumbs.dbbin0 -> 32768 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/_all.css590
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.pngbin0 -> 4436 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero@2x.pngbin0 -> 4455 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.pngbin0 -> 2185 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue@2x.pngbin0 -> 4485 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.pngbin0 -> 2193 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green@2x.pngbin0 -> 4498 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.pngbin0 -> 2186 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey@2x.pngbin0 -> 4483 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.pngbin0 -> 2181 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange@2x.pngbin0 -> 4474 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.pngbin0 -> 2189 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink@2x.pngbin0 -> 4479 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.pngbin0 -> 2188 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple@2x.pngbin0 -> 4501 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.pngbin0 -> 2190 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red@2x.pngbin0 -> 4490 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.pngbin0 -> 2175 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square@2x.pngbin0 -> 4478 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.css59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.pngbin0 -> 2131 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow@2x.pngbin0 -> 4385 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_cn.html103
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_en.html102
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/api.js592
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common.css219
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common_ie6.css23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.gifbin0 -> 1736 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.pngbin0 -> 3954 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/background.jpgbin0 -> 36520 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/chinese.pngbin0 -> 1556 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/close.pngbin0 -> 1908 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/contact-bg.pngbin0 -> 177 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/english.pngbin0 -> 1356 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/header-bg.pngbin0 -> 148 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/lightbulb.pngbin0 -> 27355 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.gifbin0 -> 625 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.pngbin0 -> 830 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_bg.pngbin0 -> 109 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gifbin0 -> 441 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.gifbin0 -> 6851 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.pngbin0 -> 12573 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js18
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js69
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree._z.html13
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.destroy.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.init.html74
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.autoParam.html39
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.contentType.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataFilter.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataType.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.enable.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.otherParam.html40
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.type.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.url.html50
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeClick.html49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html36
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html39
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html37
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html37
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRename.html46
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCheck.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onClick.html49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCollapse.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDblClick.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrag.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDragMove.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrop.html46
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onExpand.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRemove.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRename.html40
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRightClick.html36
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkStyle.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkboxType.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.enable.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.radioType.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.leaf.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.parent.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.checked.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.children.html23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.name.html23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.title.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.url.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.inner.html59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.next.html58
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.prev.html58
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.enable.html38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.removeTitle.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.renameTitle.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html51
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeId.html14
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeObj.html14
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addDiyDom.html40
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addHoverDom.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.expandSpeed.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.fontCss.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.selectedMulti.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showIcon.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showLine.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showTitle.html46
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Child_State.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Focus.html19
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checked.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checkedOld.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.children.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.chkDisabled.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.click.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.diy.html15
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.editNameFlag.html19
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html63
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getNextNode.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getParentNode.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getPreNode.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.halfCheck.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.icon.html33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconClose.html33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconOpen.html33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconSkin.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isAjaxing.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isFirstNode.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHidden.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHover.html19
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isLastNode.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isParent.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.level.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.name.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.nocheck.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.open.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.parentTId.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.tId.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.target.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.url.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.zAsync.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.addNodes.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkNode.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.copyNode.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.destroy.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.editName.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandAll.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandNode.html50
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodes.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNode.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.moveNode.html46
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.refresh.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeNode.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.selectNode.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setEditable.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setting.html13
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNode.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNodes.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.updateNode.html37
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree._z.html13
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.destroy.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.init.html75
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.autoParam.html39
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.contentType.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataFilter.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataType.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.enable.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.otherParam.html40
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.type.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.url.html50
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeAsync.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCheck.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeClick.html49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html36
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrag.html39
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html37
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrop.html50
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeEditName.html38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeExpand.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRemove.html37
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRename.html46
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncError.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html38
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCheck.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onClick.html49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCollapse.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDblClick.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrag.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDragMove.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrop.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onExpand.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseDown.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseUp.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRemove.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRename.html40
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRightClick.html36
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkStyle.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkboxType.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.enable.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.nocheckInherit.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.radioType.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.leaf.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.parent.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.checked.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.children.html23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.name.html23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.title.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.url.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.enable.html39
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.inner.html60
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isMove.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.next.html59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.prev.html59
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.enable.html39
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.removeTitle.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.renameTitle.html48
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html50
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html52
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeId.html14
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeObj.html14
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addDiyDom.html40
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addHoverDom.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.dblClickExpand.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.expandSpeed.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.fontCss.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.nameIsHTML.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.removeHoverDom.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.selectedMulti.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showIcon.html45
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showLine.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showTitle.html47
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Child_State.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Focus.html19
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checked.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checkedOld.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.children.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.chkDisabled.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.click.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.diy.html15
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.editNameFlag.html19
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getCheckStatus.html63
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getNextNode.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getParentNode.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getPreNode.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.halfCheck.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.icon.html33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconClose.html33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconOpen.html33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconSkin.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isAjaxing.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isFirstNode.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHidden.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHover.html19
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isLastNode.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isParent.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.level.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.name.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.nocheck.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.open.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.parentTId.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.tId.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.target.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.url.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.zAsync.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.addNodes.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html35
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkNode.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.copyNode.html47
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.destroy.html25
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.editName.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandAll.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandNode.html50
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html28
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html30
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodes.html26
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html43
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html23
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNode.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNodes.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.moveNode.html49
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html42
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.refresh.html24
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html32
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeNode.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.selectNode.html34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setEditable.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setting.html14
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNode.html31
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNodes.html29
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformToArray.html27
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html44
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.updateNode.html37
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/demo.css33
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/ReadMe.txt1
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/Thumbs.dbbin0 -> 23552 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.pngbin0 -> 601 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.pngbin0 -> 580 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/2.pngbin0 -> 570 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/3.pngbin0 -> 762 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/4.pngbin0 -> 399 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/5.pngbin0 -> 710 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/6.pngbin0 -> 432 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/7.pngbin0 -> 534 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/8.pngbin0 -> 529 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/9.pngbin0 -> 467 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.dbbin0 -> 19968 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/line_conn.gifbin0 -> 45 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/loading.gifbin0 -> 381 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbin0 -> 5564 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbakbin0 -> 5564 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbin0 -> 11206 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbakbin0 -> 11173 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psdbin0 -> 93494 bytes
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css107
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.js3506
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.min.js160
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.js1684
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.min.js69
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.js629
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.min.js34
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.js1191
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.min.js53
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.js363
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.min.js22
-rw-r--r--openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/zTree.v3.jquery.json35
548 files changed, 63586 insertions, 4219 deletions
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/Read Me.txt b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/Read Me.txt
new file mode 100644
index 00000000..8491652f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/Read Me.txt
@@ -0,0 +1,7 @@
+Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures.
+
+To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/#docs/local-fonts
+
+You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects.
+
+You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection.
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.css b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.css
new file mode 100644
index 00000000..9b7c293f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.css
@@ -0,0 +1,151 @@
+body {
+ padding: 0;
+ margin: 0;
+ font-family: sans-serif;
+ font-size: 1em;
+ line-height: 1.5;
+ color: #555;
+ background: #fff;
+}
+h1 {
+ font-size: 1.5em;
+ font-weight: normal;
+}
+small {
+ font-size: .66666667em;
+}
+a {
+ color: #e74c3c;
+ text-decoration: none;
+}
+a:hover, a:focus {
+ box-shadow: 0 1px #e74c3c;
+}
+.bshadow0, input {
+ box-shadow: inset 0 -2px #e7e7e7;
+}
+input:hover {
+ box-shadow: inset 0 -2px #ccc;
+}
+input, fieldset {
+ font-size: 1em;
+ margin: 0;
+ padding: 0;
+ border: 0;
+}
+input {
+ color: inherit;
+ line-height: 1.5;
+ height: 1.5em;
+ padding: .25em 0;
+}
+input:focus {
+ outline: none;
+ box-shadow: inset 0 -2px #449fdb;
+}
+.glyph {
+ font-size: 16px;
+ width: 15em;
+ padding-bottom: 1em;
+ margin-right: 4em;
+ margin-bottom: 1em;
+ float: left;
+ overflow: hidden;
+}
+.liga {
+ width: 80%;
+ width: calc(100% - 2.5em);
+}
+.talign-right {
+ text-align: right;
+}
+.talign-center {
+ text-align: center;
+}
+.bgc1 {
+ background: #f1f1f1;
+}
+.fgc1 {
+ color: #999;
+}
+.fgc0 {
+ color: #000;
+}
+p {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.mvm {
+ margin-top: .75em;
+ margin-bottom: .75em;
+}
+.mtn {
+ margin-top: 0;
+}
+.mtl, .mal {
+ margin-top: 1.5em;
+}
+.mbl, .mal {
+ margin-bottom: 1.5em;
+}
+.mal, .mhl {
+ margin-left: 1.5em;
+ margin-right: 1.5em;
+}
+.mhmm {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+.mls {
+ margin-left: .25em;
+}
+.ptl {
+ padding-top: 1.5em;
+}
+.pbs, .pvs {
+ padding-bottom: .25em;
+}
+.pvs, .pts {
+ padding-top: .25em;
+}
+.unit {
+ float: left;
+}
+.unitRight {
+ float: right;
+}
+.size1of2 {
+ width: 50%;
+}
+.size1of1 {
+ width: 100%;
+}
+.clearfix:before, .clearfix:after {
+ content: " ";
+ display: table;
+}
+.clearfix:after {
+ clear: both;
+}
+.hidden-true {
+ display: none;
+}
+.textbox0 {
+ width: 3em;
+ background: #f1f1f1;
+ padding: .25em .5em;
+ line-height: 1.5;
+ height: 1.5em;
+}
+#testDrive {
+ display: block;
+ padding-top: 24px;
+ line-height: 1.5;
+}
+.fs0 {
+ font-size: 16px;
+}
+.fs1 {
+ font-size: 16px;
+}
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.js b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.js
new file mode 100644
index 00000000..6f45f1c4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo-files/demo.js
@@ -0,0 +1,30 @@
+if (!('boxShadow' in document.body.style)) {
+ document.body.setAttribute('class', 'noBoxShadow');
+}
+
+document.body.addEventListener("click", function(e) {
+ var target = e.target;
+ if (target.tagName === "INPUT" &&
+ target.getAttribute('class').indexOf('liga') === -1) {
+ target.select();
+ }
+});
+
+(function() {
+ var fontSize = document.getElementById('fontSize'),
+ testDrive = document.getElementById('testDrive'),
+ testText = document.getElementById('testText');
+ function updateTest() {
+ testDrive.innerHTML = testText.value || String.fromCharCode(160);
+ if (window.icomoonLiga) {
+ window.icomoonLiga(testDrive);
+ }
+ }
+ function updateSize() {
+ testDrive.style.fontSize = fontSize.value + 'px';
+ }
+ fontSize.addEventListener('change', updateSize, false);
+ testText.addEventListener('input', updateTest, false);
+ testText.addEventListener('change', updateTest, false);
+ updateSize();
+}());
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo.html b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo.html
new file mode 100644
index 00000000..4358ee93
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/demo.html
@@ -0,0 +1,4807 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>IcoMoon Demo</title>
+ <meta name="description" content="An Icon Font Generated By IcoMoon.io">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="stylesheet" href="demo-files/demo.css">
+ <link rel="stylesheet" href="style.css"></head>
+<body>
+ <div class="bgc1 clearfix">
+ <h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> ZteIctIcons <small class="fgc1">(Glyphs:&nbsp;298)</small></h1>
+ </div>
+ <div class="clearfix mhl ptl">
+ <h1 class="mvm mtn fgc1">Grid Size: Unknown</h1>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-lenovo">
+
+ </span>
+ <span class="mls"> ict-it-other-lenovo</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e900" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe900;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-router-alu7750">
+
+ </span>
+ <span class="mls"> ict-it-router-alu7750</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e901" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe901;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-nds">
+
+ </span>
+ <span class="mls"> ict-it-other-nds</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e902" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe902;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-php">
+
+ </span>
+ <span class="mls"> ict-it-other-php</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e903" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe903;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-glassfish">
+
+ </span>
+ <span class="mls"> ict-it-app-glassfish</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e904" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe904;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-telnet">
+
+ </span>
+ <span class="mls"> ict-it-other-telnet</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e905" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe905;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-dns">
+
+ </span>
+ <span class="mls"> ict-it-other-dns</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e906" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe906;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-url">
+
+ </span>
+ <span class="mls"> ict-it-other-url</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e907" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe907;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-database-mysql">
+
+ </span>
+ <span class="mls"> ict-it-database-mysql</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e908" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe908;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-ping">
+
+ </span>
+ <span class="mls"> ict-it-other-ping</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e909" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe909;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-ftp">
+
+ </span>
+ <span class="mls"> ict-it-other-ftp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e90a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe90a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-rest">
+
+ </span>
+ <span class="mls"> ict-it-other-rest</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e90b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe90b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-soap">
+
+ </span>
+ <span class="mls"> ict-it-other-soap</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e90c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe90c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-macos">
+
+ </span>
+ <span class="mls"> ict-it-server-macos</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e90d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe90d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-openbsd">
+
+ </span>
+ <span class="mls"> ict-it-server-openbsd</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e90e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe90e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-debian">
+
+ </span>
+ <span class="mls"> ict-it-server-debian</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e90f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe90f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-iis">
+
+ </span>
+ <span class="mls"> ict-it-app-iis</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e910" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe910;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-mailserver">
+
+ </span>
+ <span class="mls"> ict-it-app-mailserver</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e911" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe911;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-websphere">
+
+ </span>
+ <span class="mls"> ict-it-app-websphere</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e912" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe912;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-apache">
+
+ </span>
+ <span class="mls"> ict-it-app-apache</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e913" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe913;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-jboss">
+
+ </span>
+ <span class="mls"> ict-it-app-jboss</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e914" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe914;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-a10bala">
+
+ </span>
+ <span class="mls"> ict-it-other-a10bala</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e915" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe915;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-NFV">
+
+ </span>
+ <span class="mls"> ict-NFV</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e916" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe916;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-VNFM">
+
+ </span>
+ <span class="mls"> ict-VNFM</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e917" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe917;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-VNF">
+
+ </span>
+ <span class="mls"> ict-VNF</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e918" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe918;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-VNFC">
+
+ </span>
+ <span class="mls"> ict-VNFC</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e919" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe919;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-VIM">
+
+ </span>
+ <span class="mls"> ict-VIM</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e91a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe91a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-VDU">
+
+ </span>
+ <span class="mls"> ict-VDU</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e91b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe91b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-host">
+
+ </span>
+ <span class="mls"> ict-host</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e91c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe91c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-NS">
+
+ </span>
+ <span class="mls"> ict-NS</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e91d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe91d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-cluster-vcs">
+
+ </span>
+ <span class="mls"> ict-it-cluster-vcs</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e91e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe91e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-hpeva">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-hpeva</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e91f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe91f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-zte">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-zte</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e920" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe920;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-h3c">
+
+ </span>
+ <span class="mls"> ict-it-firewall-h3c</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e921" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe921;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-ibm-blade">
+
+ </span>
+ <span class="mls"> ict-it-other-ibm-blade</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e922" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe922;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-secfox">
+
+ </span>
+ <span class="mls"> ict-it-other-secfox</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e923" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe923;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-segw">
+
+ </span>
+ <span class="mls"> ict-it-other-segw</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e924" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe924;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-zteatca">
+
+ </span>
+ <span class="mls"> ict-it-other-zteatca</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e925" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe925;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-zteips">
+
+ </span>
+ <span class="mls"> ict-it-other-zteips</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e926" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe926;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-sdn-controller">
+
+ </span>
+ <span class="mls"> ict-it-sdn-controller</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e927" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe927;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-hpux">
+
+ </span>
+ <span class="mls"> ict-it-server-hpux</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e928" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe928;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-ops">
+
+ </span>
+ <span class="mls"> ict-it-storage-ops</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e929" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe929;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-sanswitch-brocade">
+
+ </span>
+ <span class="mls"> ict-it-storage-sanswitch-brocade</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e92a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe92a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-moc-uca-public">
+
+ </span>
+ <span class="mls"> ict-uep-moc-uca-public</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e92b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe92b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-topo-commongroup20x20">
+
+ </span>
+ <span class="mls"> ict-uep-topo-commongroup20x20</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e92c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe92c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-vapel_chgpile">
+
+ </span>
+ <span class="mls"> ict-vapel_chgpile</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e92d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe92d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-car">
+
+ </span>
+ <span class="mls"> ict-car</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e92e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe92e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-chgpile">
+
+ </span>
+ <span class="mls"> ict-chgpile</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e92f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe92f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-chgposition">
+
+ </span>
+ <span class="mls"> ict-chgposition</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e930" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe930;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-chgstation">
+
+ </span>
+ <span class="mls"> ict-chgstation</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e931" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe931;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-common_dc">
+
+ </span>
+ <span class="mls"> ict-common_dc</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e932" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe932;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-common_ncd">
+
+ </span>
+ <span class="mls"> ict-common_ncd</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e933" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe933;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-common_ncd_break">
+
+ </span>
+ <span class="mls"> ict-common_ncd_break</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e934" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe934;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-common_sc">
+
+ </span>
+ <span class="mls"> ict-common_sc</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e935" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe935;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it">
+
+ </span>
+ <span class="mls"> ict-it</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e936" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe936;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app">
+
+ </span>
+ <span class="mls"> ict-it-app</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e937" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe937;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-bind">
+
+ </span>
+ <span class="mls"> ict-it-app-bind</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e938" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe938;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-dns">
+
+ </span>
+ <span class="mls"> ict-it-app-dns</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e939" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe939;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-ems">
+
+ </span>
+ <span class="mls"> ict-it-app-ems</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e93a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe93a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-mediator">
+
+ </span>
+ <span class="mls"> ict-it-app-mediator</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e93b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe93b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-ntp">
+
+ </span>
+ <span class="mls"> ict-it-app-ntp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e93c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe93c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-ota">
+
+ </span>
+ <span class="mls"> ict-it-app-ota</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e93d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe93d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-tomcat">
+
+ </span>
+ <span class="mls"> ict-it-app-tomcat</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e93e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe93e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-trend">
+
+ </span>
+ <span class="mls"> ict-it-app-trend</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e93f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe93f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-tsm">
+
+ </span>
+ <span class="mls"> ict-it-app-tsm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e940" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe940;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-weblogic">
+
+ </span>
+ <span class="mls"> ict-it-app-weblogic</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e941" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe941;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-cluster">
+
+ </span>
+ <span class="mls"> ict-it-cluster</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e942" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe942;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-cluster-hacmp">
+
+ </span>
+ <span class="mls"> ict-it-cluster-hacmp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e943" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe943;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-cluster-nec">
+
+ </span>
+ <span class="mls"> ict-it-cluster-nec</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e944" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe944;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-cluster-ns">
+
+ </span>
+ <span class="mls"> ict-it-cluster-ns</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e945" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe945;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-cluster-sg">
+
+ </span>
+ <span class="mls"> ict-it-cluster-sg</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e946" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe946;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-database">
+
+ </span>
+ <span class="mls"> ict-it-database</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e947" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe947;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-database-mssql">
+
+ </span>
+ <span class="mls"> ict-it-database-mssql</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e948" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe948;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-database-oracle">
+
+ </span>
+ <span class="mls"> ict-it-database-oracle</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e949" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe949;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-database-sybase">
+
+ </span>
+ <span class="mls"> ict-it-database-sybase</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e94a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe94a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-database-sybaseiq">
+
+ </span>
+ <span class="mls"> ict-it-database-sybaseiq</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e94b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe94b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-dellmd">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-dellmd</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e94c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe94c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-emc">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-emc</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e94d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe94d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-eternus">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-eternus</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e94e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe94e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-fujitsu">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-fujitsu</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e94f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe94f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-hds">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-hds</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e950" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe950;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-hpaio">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-hpaio</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e951" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe951;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-hpmsa">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-hpmsa</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e952" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe952;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-ibm">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-ibm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e953" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe953;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-ibmsm">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-ibmsm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e954" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe954;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-macrosan">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-macrosan</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e955" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe955;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-netapp">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-netapp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e956" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe956;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-diskraid-sun">
+
+ </span>
+ <span class="mls"> ict-it-diskraid-sun</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e957" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe957;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall">
+
+ </span>
+ <span class="mls"> ict-it-firewall</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e958" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe958;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-checkpoint">
+
+ </span>
+ <span class="mls"> ict-it-firewall-checkpoint</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e959" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe959;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-cisco">
+
+ </span>
+ <span class="mls"> ict-it-firewall-cisco</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e95a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe95a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-cisco2">
+
+ </span>
+ <span class="mls"> ict-it-firewall-cisco2</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e95b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe95b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-juniper">
+
+ </span>
+ <span class="mls"> ict-it-firewall-juniper</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e95c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe95c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-neteye">
+
+ </span>
+ <span class="mls"> ict-it-firewall-neteye</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e95d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe95d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-zte">
+
+ </span>
+ <span class="mls"> ict-it-firewall-zte</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e95e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe95e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-ztemf">
+
+ </span>
+ <span class="mls"> ict-it-firewall-ztemf</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e95f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe95f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-firewall-zteutm">
+
+ </span>
+ <span class="mls"> ict-it-firewall-zteutm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e960" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe960;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-gather">
+
+ </span>
+ <span class="mls"> ict-it-gather</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e961" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe961;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-ibp">
+
+ </span>
+ <span class="mls"> ict-it-ibp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e962" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe962;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-ibp-ibp2000">
+
+ </span>
+ <span class="mls"> ict-it-ibp-ibp2000</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e963" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe963;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-net">
+
+ </span>
+ <span class="mls"> ict-it-net</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e964" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe964;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other">
+
+ </span>
+ <span class="mls"> ict-it-other</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e965" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe965;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-alteon">
+
+ </span>
+ <span class="mls"> ict-it-other-alteon</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e966" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe966;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-appdirector">
+
+ </span>
+ <span class="mls"> ict-it-other-appdirector</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e967" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe967;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-atca-lb10">
+
+ </span>
+ <span class="mls"> ict-it-other-atca-lb10</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e968" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe968;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-cisco-ucs">
+
+ </span>
+ <span class="mls"> ict-it-other-cisco-ucs</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e969" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe969;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-dcs">
+
+ </span>
+ <span class="mls"> ict-it-other-dcs</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e96a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe96a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-delta">
+
+ </span>
+ <span class="mls"> ict-it-other-delta</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e96b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe96b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-dp">
+
+ </span>
+ <span class="mls"> ict-it-other-dp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e96c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe96c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-e9000">
+
+ </span>
+ <span class="mls"> ict-it-other-e9000</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e96d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe96d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-f5bigip">
+
+ </span>
+ <span class="mls"> ict-it-other-f5bigip</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e96e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe96e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-f5bigip2">
+
+ </span>
+ <span class="mls"> ict-it-other-f5bigip2</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e96f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe96f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-gbe2c">
+
+ </span>
+ <span class="mls"> ict-it-other-gbe2c</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e970" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe970;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-h3c">
+
+ </span>
+ <span class="mls"> ict-it-other-h3c</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e971" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe971;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-hpblc">
+
+ </span>
+ <span class="mls"> ict-it-other-hpblc</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e972" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe972;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-imm">
+
+ </span>
+ <span class="mls"> ict-it-other-imm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e973" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe973;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-secsis">
+
+ </span>
+ <span class="mls"> ict-it-other-secsis</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e974" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe974;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-vc">
+
+ </span>
+ <span class="mls"> ict-it-other-vc</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e975" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe975;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-ztepower">
+
+ </span>
+ <span class="mls"> ict-it-other-ztepower</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e976" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe976;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-ztesgs">
+
+ </span>
+ <span class="mls"> ict-it-other-ztesgs</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e977" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe977;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-other-zxsdr-nt">
+
+ </span>
+ <span class="mls"> ict-it-other-zxsdr-nt</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e978" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe978;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-router">
+
+ </span>
+ <span class="mls"> ict-it-router</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e979" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe979;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-router-cisco">
+
+ </span>
+ <span class="mls"> ict-it-router-cisco</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e97a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe97a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-router-juniper">
+
+ </span>
+ <span class="mls"> ict-it-router-juniper</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e97b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe97b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-router-zte">
+
+ </span>
+ <span class="mls"> ict-it-router-zte</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e97c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe97c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-sdn-host">
+
+ </span>
+ <span class="mls"> ict-it-sdn-host</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e97d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe97d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-sdn-switch">
+
+ </span>
+ <span class="mls"> ict-it-sdn-switch</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e97e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe97e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server">
+
+ </span>
+ <span class="mls"> ict-it-server</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e97f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe97f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-aix">
+
+ </span>
+ <span class="mls"> ict-it-server-aix</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e980" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe980;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-klinux">
+
+ </span>
+ <span class="mls"> ict-it-server-klinux</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e981" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe981;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-redhat">
+
+ </span>
+ <span class="mls"> ict-it-server-redhat</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e982" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe982;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-solaris">
+
+ </span>
+ <span class="mls"> ict-it-server-solaris</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e983" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe983;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-suse">
+
+ </span>
+ <span class="mls"> ict-it-server-suse</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e984" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe984;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-windows">
+
+ </span>
+ <span class="mls"> ict-it-server-windows</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e985" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe985;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-server-zxve">
+
+ </span>
+ <span class="mls"> ict-it-server-zxve</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e986" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe986;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage">
+
+ </span>
+ <span class="mls"> ict-it-storage</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e987" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe987;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-cisco-mds">
+
+ </span>
+ <span class="mls"> ict-it-storage-cisco-mds</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e988" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe988;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-md3000">
+
+ </span>
+ <span class="mls"> ict-it-storage-md3000</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e989" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe989;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-netvault">
+
+ </span>
+ <span class="mls"> ict-it-storage-netvault</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e98a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe98a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-sanswitch-zte">
+
+ </span>
+ <span class="mls"> ict-it-storage-sanswitch-zte</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e98b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe98b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-switch-at">
+
+ </span>
+ <span class="mls"> ict-it-switch-at</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e98c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe98c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-switch-cisco">
+
+ </span>
+ <span class="mls"> ict-it-switch-cisco</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e98d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe98d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-switch-h3c">
+
+ </span>
+ <span class="mls"> ict-it-switch-h3c</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e98e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe98e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-switch-juniper">
+
+ </span>
+ <span class="mls"> ict-it-switch-juniper</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e98f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe98f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-switch-zte">
+
+ </span>
+ <span class="mls"> ict-it-switch-zte</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e990" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe990;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-tapelib-hpmsl">
+
+ </span>
+ <span class="mls"> ict-it-tapelib-hpmsl</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e991" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe991;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-tapelib-ibmts">
+
+ </span>
+ <span class="mls"> ict-it-tapelib-ibmts</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e992" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe992;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-tapelib-sunts">
+
+ </span>
+ <span class="mls"> ict-it-tapelib-sunts</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e993" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe993;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-Virtualnetwork">
+
+ </span>
+ <span class="mls"> ict-it-Virtualnetwork</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e994" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe994;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-networkTree">
+
+ </span>
+ <span class="mls"> ict-networkTree</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e995" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe995;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-resourceType">
+
+ </span>
+ <span class="mls"> ict-resourceType</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e996" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe996;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-tree-icon">
+
+ </span>
+ <span class="mls"> ict-tree-icon</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e997" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe997;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-topo-group20x20">
+
+ </span>
+ <span class="mls"> ict-uep-topo-group20x20</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e998" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe998;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-topo-root">
+
+ </span>
+ <span class="mls"> ict-uep-topo-root</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e999" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe999;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-topo-virtual20x20">
+
+ </span>
+ <span class="mls"> ict-uep-topo-virtual20x20</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e99a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe99a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-common_ncd_stop">
+
+ </span>
+ <span class="mls"> ict-common_ncd_stop</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e99b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe99b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-app-netnumen">
+
+ </span>
+ <span class="mls"> ict-it-app-netnumen</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e99c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe99c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-sdn-vnet">
+
+ </span>
+ <span class="mls"> ict-it-sdn-vnet</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e99d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe99d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-storage-sanswitch-hp">
+
+ </span>
+ <span class="mls"> ict-it-storage-sanswitch-hp</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e99e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe99e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-it-switch">
+
+ </span>
+ <span class="mls"> ict-it-switch</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e99f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe99f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-moc-root">
+
+ </span>
+ <span class="mls"> ict-uep-moc-root</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a0" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a0;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-uep-topo-undefinedgroup20x20">
+
+ </span>
+ <span class="mls"> ict-uep-topo-undefinedgroup20x20</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a1" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a1;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-analysis">
+
+ </span>
+ <span class="mls"> ict-analysis</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a2" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a2;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-bindingRelationship">
+
+ </span>
+ <span class="mls"> ict-bindingRelationship</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a3" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a3;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-browsePolicy">
+
+ </span>
+ <span class="mls"> ict-browsePolicy</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a4" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a4;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-businessManagment">
+
+ </span>
+ <span class="mls"> ict-businessManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a5" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a5;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-cardData">
+
+ </span>
+ <span class="mls"> ict-cardData</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a6" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a6;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-dailyManagment">
+
+ </span>
+ <span class="mls"> ict-dailyManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a7" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a7;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-enterpriseCustomer">
+
+ </span>
+ <span class="mls"> ict-enterpriseCustomer</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a8" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a8;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-equipmentBlacklist">
+
+ </span>
+ <span class="mls"> ict-equipmentBlacklist</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9a9" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9a9;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-equipmentModel">
+
+ </span>
+ <span class="mls"> ict-equipmentModel</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9aa" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9aa;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-examine">
+
+ </span>
+ <span class="mls"> ict-examine</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ab" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ab;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-failureList">
+
+ </span>
+ <span class="mls"> ict-failureList</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ac" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ac;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-familyCustomer">
+
+ </span>
+ <span class="mls"> ict-familyCustomer</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ad" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ad;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-fileTool">
+
+ </span>
+ <span class="mls"> ict-fileTool</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ae" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ae;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-groupManagment">
+
+ </span>
+ <span class="mls"> ict-groupManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9af" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9af;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-notice">
+
+ </span>
+ <span class="mls"> ict-notice</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b0" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b0;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-policy">
+
+ </span>
+ <span class="mls"> ict-policy</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b1" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b1;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-portal">
+
+ </span>
+ <span class="mls"> ict-portal</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b2" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b2;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-recordQuery">
+
+ </span>
+ <span class="mls"> ict-recordQuery</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b3" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b3;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-resourceManagment">
+
+ </span>
+ <span class="mls"> ict-resourceManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b4" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b4;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-ruleManagment">
+
+ </span>
+ <span class="mls"> ict-ruleManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b5" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b5;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-sucessRate">
+
+ </span>
+ <span class="mls"> ict-sucessRate</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b6" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b6;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-terminalManagment">
+
+ </span>
+ <span class="mls"> ict-terminalManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b7" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b7;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-tools">
+
+ </span>
+ <span class="mls"> ict-tools</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b8" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b8;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-track">
+
+ </span>
+ <span class="mls"> ict-track</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9b9" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9b9;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-userManagment">
+
+ </span>
+ <span class="mls"> ict-userManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ba" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ba;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-versionManagment">
+
+ </span>
+ <span class="mls"> ict-versionManagment</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9bb" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9bb;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-workOrder">
+
+ </span>
+ <span class="mls"> ict-workOrder</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9bc" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9bc;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-cpu">
+
+ </span>
+ <span class="mls"> ict-cpu</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9bd" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9bd;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-memory">
+
+ </span>
+ <span class="mls"> ict-memory</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9be" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9be;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-currentAlarm">
+
+ </span>
+ <span class="mls"> ict-currentAlarm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9bf" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9bf;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-noticeAlarm">
+
+ </span>
+ <span class="mls"> ict-noticeAlarm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c0" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c0;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-historyAlarm">
+
+ </span>
+ <span class="mls"> ict-historyAlarm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c1" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c1;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-close">
+
+ </span>
+ <span class="mls"> ict-close</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c2" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c2;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-table">
+
+ </span>
+ <span class="mls"> ict-table</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c3" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c3;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-next">
+
+ </span>
+ <span class="mls"> ict-next</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c4" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c4;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-pre">
+
+ </span>
+ <span class="mls"> ict-pre</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c5" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c5;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-roleset">
+
+ </span>
+ <span class="mls"> ict-roleset</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c6" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c6;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-role">
+
+ </span>
+ <span class="mls"> ict-role</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c7" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c7;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-user">
+
+ </span>
+ <span class="mls"> ict-user</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c8" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c8;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-empty">
+
+ </span>
+ <span class="mls"> ict-empty</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9c9" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9c9;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-noticeFilter">
+
+ </span>
+ <span class="mls"> ict-noticeFilter</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ca" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ca;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-alarmTurn">
+
+ </span>
+ <span class="mls"> ict-alarmTurn</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9cb" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9cb;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-advice">
+
+ </span>
+ <span class="mls"> ict-advice</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9cc" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9cc;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-clearAlarm">
+
+ </span>
+ <span class="mls"> ict-clearAlarm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9cd" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9cd;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-alarmBox">
+
+ </span>
+ <span class="mls"> ict-alarmBox</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ce" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ce;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-afreshDef">
+
+ </span>
+ <span class="mls"> ict-afreshDef</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9cf" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9cf;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-alarmFilter">
+
+ </span>
+ <span class="mls"> ict-alarmFilter</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d0" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d0;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-manAnalysis">
+
+ </span>
+ <span class="mls"> ict-manAnalysis</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d1" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d1;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-drill">
+
+ </span>
+ <span class="mls"> ict-drill</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d2" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d2;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-gear">
+
+ </span>
+ <span class="mls"> ict-gear</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d3" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d3;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-process">
+
+ </span>
+ <span class="mls"> ict-process</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d4" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d4;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-unacknownledge">
+
+ </span>
+ <span class="mls"> ict-unacknownledge</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d5" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d5;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-acknownledge">
+
+ </span>
+ <span class="mls"> ict-acknownledge</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d6" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d6;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Operation">
+
+ </span>
+ <span class="mls"> ict-Operation</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d7" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d7;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-cloud">
+
+ </span>
+ <span class="mls"> ict-cloud</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d8" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d8;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-computer">
+
+ </span>
+ <span class="mls"> ict-computer</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9d9" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9d9;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-alarm">
+
+ </span>
+ <span class="mls"> ict-alarm</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9da" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9da;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-import">
+
+ </span>
+ <span class="mls"> ict-import</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9db" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9db;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-export">
+
+ </span>
+ <span class="mls"> ict-export</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9dc" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9dc;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Admin">
+
+ </span>
+ <span class="mls"> ict-Admin</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9dd" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9dd;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-allSelected">
+
+ </span>
+ <span class="mls"> ict-allSelected</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9de" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9de;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-angleRight">
+
+ </span>
+ <span class="mls"> ict-angleRight</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9df" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9df;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-arrowLeft">
+
+ </span>
+ <span class="mls"> ict-arrowLeft</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e0" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e0;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-arrowLeftAll">
+
+ </span>
+ <span class="mls"> ict-arrowLeftAll</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e1" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e1;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-arrowRight">
+
+ </span>
+ <span class="mls"> ict-arrowRight</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e2" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e2;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-arrowRightAll">
+
+ </span>
+ <span class="mls"> ict-arrowRightAll</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e3" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e3;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-autoFind">
+
+ </span>
+ <span class="mls"> ict-autoFind</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e4" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e4;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-back">
+
+ </span>
+ <span class="mls"> ict-back</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e5" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e5;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-ball">
+
+ </span>
+ <span class="mls"> ict-ball</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e6" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e6;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-bell">
+
+ </span>
+ <span class="mls"> ict-bell</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e7" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e7;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-blackList">
+
+ </span>
+ <span class="mls"> ict-blackList</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e8" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e8;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-breakLink">
+
+ </span>
+ <span class="mls"> ict-breakLink</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9e9" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9e9;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-cancle">
+
+ </span>
+ <span class="mls"> ict-cancle</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ea" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ea;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-circle">
+
+ </span>
+ <span class="mls"> ict-circle</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9eb" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9eb;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-closeTree">
+
+ </span>
+ <span class="mls"> ict-closeTree</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ec" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ec;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-configmap">
+
+ </span>
+ <span class="mls"> ict-configmap</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ed" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ed;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-delete">
+
+ </span>
+ <span class="mls"> ict-delete</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ee" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ee;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-department">
+
+ </span>
+ <span class="mls"> ict-department</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ef" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ef;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-detail">
+
+ </span>
+ <span class="mls"> ict-detail</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f0" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f0;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-displaySwitch">
+
+ </span>
+ <span class="mls"> ict-displaySwitch</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f1" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f1;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-file">
+
+ </span>
+ <span class="mls"> ict-file</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f2" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f2;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-filter">
+
+ </span>
+ <span class="mls"> ict-filter</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f3" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f3;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-find">
+
+ </span>
+ <span class="mls"> ict-find</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f4" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f4;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-folder">
+
+ </span>
+ <span class="mls"> ict-folder</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f5" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f5;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-forceOut">
+
+ </span>
+ <span class="mls"> ict-forceOut</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f6" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f6;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-fullScreen">
+
+ </span>
+ <span class="mls"> ict-fullScreen</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f7" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f7;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Graphical">
+
+ </span>
+ <span class="mls"> ict-Graphical</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f8" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f8;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-helpTip">
+
+ </span>
+ <span class="mls"> ict-helpTip</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9f9" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9f9;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-hide">
+
+ </span>
+ <span class="mls"> ict-hide</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9fa" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9fa;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-history">
+
+ </span>
+ <span class="mls"> ict-history</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9fb" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9fb;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-launchingTower">
+
+ </span>
+ <span class="mls"> ict-launchingTower</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9fc" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9fc;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-layout">
+
+ </span>
+ <span class="mls"> ict-layout</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9fd" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9fd;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-legendhide">
+
+ </span>
+ <span class="mls"> ict-legendhide</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9fe" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9fe;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-legendshow">
+
+ </span>
+ <span class="mls"> ict-legendshow</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="e9ff" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xe9ff;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-link">
+
+ </span>
+ <span class="mls"> ict-link</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea00" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea00;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-lock">
+
+ </span>
+ <span class="mls"> ict-lock</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea01" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea01;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-ltArrow">
+
+ </span>
+ <span class="mls"> ict-ltArrow</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea02" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea02;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Magnifier">
+
+ </span>
+ <span class="mls"> ict-Magnifier</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea03" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea03;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Maintain">
+
+ </span>
+ <span class="mls"> ict-Maintain</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea04" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea04;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-maximize">
+
+ </span>
+ <span class="mls"> ict-maximize</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea05" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea05;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-modify">
+
+ </span>
+ <span class="mls"> ict-modify</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea06" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea06;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Monitor">
+
+ </span>
+ <span class="mls"> ict-Monitor</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea07" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea07;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-move">
+
+ </span>
+ <span class="mls"> ict-move</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea08" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea08;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-new">
+
+ </span>
+ <span class="mls"> ict-new</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea09" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea09;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-newShortcut">
+
+ </span>
+ <span class="mls"> ict-newShortcut</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea0a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea0a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-openTree">
+
+ </span>
+ <span class="mls"> ict-openTree</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea0b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea0b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-poNode">
+
+ </span>
+ <span class="mls"> ict-poNode</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea0c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea0c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-print">
+
+ </span>
+ <span class="mls"> ict-print</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea0d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea0d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-product">
+
+ </span>
+ <span class="mls"> ict-product</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea0e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea0e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-rbArrow">
+
+ </span>
+ <span class="mls"> ict-rbArrow</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea0f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea0f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-reduction">
+
+ </span>
+ <span class="mls"> ict-reduction</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea10" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea10;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-refresh">
+
+ </span>
+ <span class="mls"> ict-refresh</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea11" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea11;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-rename">
+
+ </span>
+ <span class="mls"> ict-rename</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea12" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea12;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-save">
+
+ </span>
+ <span class="mls"> ict-save</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea13" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea13;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-select">
+
+ </span>
+ <span class="mls"> ict-select</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea14" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea14;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-selectAll">
+
+ </span>
+ <span class="mls"> ict-selectAll</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea15" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea15;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-selectLeft">
+
+ </span>
+ <span class="mls"> ict-selectLeft</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea16" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea16;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-selectRight">
+
+ </span>
+ <span class="mls"> ict-selectRight</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea17" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea17;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-show">
+
+ </span>
+ <span class="mls"> ict-show</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea18" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea18;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-shrink">
+
+ </span>
+ <span class="mls"> ict-shrink</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea19" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea19;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-start">
+
+ </span>
+ <span class="mls"> ict-start</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea1a" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea1a;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-stop">
+
+ </span>
+ <span class="mls"> ict-stop</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea1b" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea1b;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-stretch">
+
+ </span>
+ <span class="mls"> ict-stretch</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea1c" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea1c;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-strikeOut">
+
+ </span>
+ <span class="mls"> ict-strikeOut</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea1d" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea1d;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-Synchronous">
+
+ </span>
+ <span class="mls"> ict-Synchronous</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea1e" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea1e;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-toRight">
+
+ </span>
+ <span class="mls"> ict-toRight</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea1f" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea1f;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-treefile">
+
+ </span>
+ <span class="mls"> ict-treefile</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea20" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea20;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-treeFolder">
+
+ </span>
+ <span class="mls"> ict-treeFolder</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea21" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea21;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-unlock">
+
+ </span>
+ <span class="mls"> ict-unlock</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea22" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea22;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-userCompare">
+
+ </span>
+ <span class="mls"> ict-userCompare</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea23" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea23;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-userDispatch">
+
+ </span>
+ <span class="mls"> ict-userDispatch</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea24" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea24;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-xml">
+
+ </span>
+ <span class="mls"> ict-xml</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea25" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea25;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-zoomIn">
+
+ </span>
+ <span class="mls"> ict-zoomIn</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea26" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea26;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-zoomOut">
+
+ </span>
+ <span class="mls"> ict-zoomOut</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea27" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea27;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-zoomOverView">
+
+ </span>
+ <span class="mls"> ict-zoomOverView</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea28" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea28;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ <div class="glyph fs1">
+ <div class="clearfix bshadow0 pbs">
+ <span class="ict-zoomReset">
+
+ </span>
+ <span class="mls"> ict-zoomReset</span>
+ </div>
+ <fieldset class="fs0 size1of1 clearfix hidden-false">
+ <input type="text" readonly value="ea29" class="unit size1of2" />
+ <input type="text" maxlength="1" readonly value="&#xea29;" class="unitRight size1of2 talign-right" />
+ </fieldset>
+ <div class="fs0 bshadow0 clearfix hidden-true">
+ <span class="unit pvs fgc1">liga: </span>
+ <input type="text" readonly value="" class="liga unitRight" />
+ </div>
+ </div>
+ </div>
+
+ <!--[if gt IE 8]><!-->
+ <div class="mhl clearfix mbl">
+ <h1>Font Test Drive</h1>
+ <label>
+ Font Size: <input id="fontSize" type="number" class="textbox0 mbm"
+ min="8" value="48" />
+ px
+ </label>
+ <input id="testText" type="text" class="phl size1of1 mvl"
+ placeholder="Type some text to test..." value=""/>
+ </label>
+ <div id="testDrive" class="ict-">&nbsp;
+ </div>
+ </div>
+ <!--<![endif]-->
+ <div class="bgc1 clearfix">
+ <p class="mhl">Generated by <a href="https://icomoon.io/app">IcoMoon</a></p>
+ </div>
+
+ <script src="demo-files/demo.js"></script>
+</body>
+</html>
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.eot b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.eot
new file mode 100644
index 00000000..49ae78c1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.eot
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.svg b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.svg
new file mode 100644
index 00000000..eb9225f8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.svg
@@ -0,0 +1,308 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="ZteIctIcons" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="it-other-lenovo" d="M820.37 282.697c-13.605 0-24.795-5.193-33.646-15.726-8.85-10.459-13.312-26.331-13.312-47.762 0-21.65 4.389-37.742 13.166-48.128s19.822-15.579 33.134-15.579c13.458 0 24.503 5.12 33.061 15.36 8.631 10.313 13.019 26.697 13.019 49.298 0 21.065-4.389 36.791-13.093 47.177-8.704 10.24-19.456 15.36-32.329 15.36zM888.027 960h-752.055c-75.557 0-135.973-60.416-135.973-135.973v-751.982c0-75.703 60.416-136.046 135.973-136.046h751.982c75.703 0 136.046 60.343 136.046 135.973v752.055c0 75.557-60.343 135.973-135.973 135.973zM107.52 818.615h103.863v-253.294h162.085v-82.725h-265.947v336.018zM350.574 128.366c-24.869-23.918-59.173-35.84-103.058-35.84-39.131 0-70.729 9.947-94.866 29.769-29.696 24.576-44.471 56.832-44.471 96.695 0 37.157 12.507 67.73 37.595 91.794s58.953 36.133 101.522 36.133c48.786 0 85.577-14.117 110.519-42.423 19.968-22.821 30.062-50.761 30.062-84.114 0-37.449-12.434-68.096-37.303-92.014zM573.221 98.011h-82.798l-101.23 243.419h97.061l47.25-154.258 49.006 154.258h94.135l-103.424-243.419zM628.517 493.056c-19.895-10.606-48.347-15.945-85.504-15.945-32.183 0-57.563 4.535-76.069 13.678-18.505 8.997-33.792 23.479-46.007 43.301-12.142 19.749-18.213 43.008-18.213 69.778 0 38.107 12.215 68.827 36.571 92.379 24.43 23.552 58.075 35.255 101.010 35.255 34.889 0 62.391-5.266 82.505-15.799 20.187-10.533 35.547-25.819 46.080-45.787 10.606-20.041 15.872-46.080 15.872-78.19v-10.533h-187.099c1.682-14.994 5.705-26.185 12.142-33.499 8.997-10.533 20.773-15.799 35.255-15.799 9.216 0 17.92 2.267 26.112 6.875 5.047 2.926 10.533 8.046 16.311 15.36l91.941-8.485c-14.043-24.503-31.013-41.984-50.907-52.59zM922.258 128.366c-24.869-23.918-59.246-35.84-103.058-35.84-39.058 0-70.729 9.947-94.866 29.769-29.623 24.576-44.471 56.832-44.471 96.695 0 37.157 12.581 67.73 37.669 91.794 25.015 24.064 58.88 36.133 101.522 36.133 48.786 0 85.577-14.117 110.519-42.423 19.968-22.821 29.989-50.761 29.989-84.114-0.073-37.449-12.507-68.096-37.303-92.014zM984.942 482.597h-93.696v133.851c0 15.287-2.853 26.112-8.485 32.402-5.632 6.363-13.605 9.509-23.845 9.509-11.264 0-20.407-4.315-27.502-12.873-7.022-8.558-10.533-23.918-10.533-46.080v-116.882h-93.33v243.493h86.894v-39.643c13.019 16.165 26.112 27.721 39.424 34.743s29.477 10.459 48.567 10.459c25.893 0 46.080-7.68 60.635-23.040s21.87-39.058 21.87-71.168v-154.77zM575.195 664.576c-7.826 7.753-18.213 11.703-31.013 11.703-14.848 0-26.697-5.851-35.547-17.627-5.632-7.314-9.216-18.286-10.752-32.768h91.941c-1.902 17.993-6.656 30.939-14.629 38.693zM248.686 282.697c-13.605 0-24.869-5.193-33.719-15.726-8.85-10.459-13.312-26.331-13.312-47.762 0-21.65 4.389-37.742 13.166-48.128s19.822-15.579 33.134-15.579c13.458 0 24.43 5.12 33.134 15.36 8.631 10.313 12.946 26.697 12.946 49.298 0 21.065-4.389 36.791-13.093 47.177-8.631 10.24-19.383 15.36-32.256 15.36z" />
+<glyph unicode="&#xe901;" glyph-name="it-router-alu7750" d="M361.536 210.88l-107.008-274.88h58.88l22.656 62.464h109.888l24-62.464h60.352l-110.080 274.88h-58.688zM353.152 44.736l37.12 102.016 37.888-102.016h-75.008zM616.768 208.64h-55.488v-272.64h193.472v46.336h-137.984zM957.632 58.816c0-21.76-0.832-37.312-2.432-46.656s-6.464-17.344-14.464-23.68c-8-6.528-19.904-9.664-35.648-9.664-15.488 0-27.776 3.392-36.608 10.176-9.024 6.784-14.656 15.872-17.024 27.136-1.344 6.976-2.048 22.336-2.048 45.952v148.864h-55.488v-146.624c0-30.72 1.792-54.016 5.44-69.76 2.496-10.624 7.68-20.8 15.552-30.464 7.872-9.728 18.56-17.6 32.192-23.616 13.504-6.080 33.408-9.152 59.712-9.152 21.76 0 39.36 2.816 52.864 8.384 13.504 5.504 24.32 12.992 32.32 22.4 8.128 9.344 13.632 20.864 16.64 34.496s4.48 36.928 4.48 69.952v144.384h-55.488v-152.128zM1006.016 316.608c11.328 42.304 17.984 86.592 17.984 132.416 0 282.688-230.336 510.976-513.024 510.976s-510.976-228.288-510.976-510.976c0-181.504 94.4-340.992 236.544-432.256v171.904c0 70.656 57.344 128 128 128h108.224v19.712c0 19.968-8.384 70.848-42.24 80.448h66.368c36.416 0 44.224-63.68 44.224-84.48v-15.68h464.896zM859.008 515.392v88.512l122.752-122.688-122.752-122.688v88.448h-164.928c-19.968 0-70.912-10.432-80.448-44.224v66.368c0 36.416 61.632 46.272 82.496 46.272h162.88zM408.384 491.264c0-36.416-61.632-44.224-82.496-44.224h-162.944v-88.512l-122.688 122.688 122.688 122.688v-88.512h166.976c19.968 0 68.928 8.384 78.464 42.24v-66.368zM496.896 481.216h-66.368c33.856 9.536 42.24 60.544 42.24 80.448v164.992h-88.512l122.688 122.688 122.688-122.688h-88.448v-162.944c0-20.864-7.872-82.496-44.288-82.496z" />
+<glyph unicode="&#xe902;" glyph-name="it-other-nds" d="M558.656 556.416c-10.624 4.096-27.776 6.144-51.328 6.144h-63.040v-229.12h64c19.776 0 35.264 1.792 46.592 5.504 11.264 3.712 20.16 8.896 26.88 15.552 9.344 9.408 16.768 22.080 22.016 37.952 5.184 15.872 7.808 35.136 7.808 57.856 0 31.36-5.056 55.424-15.424 72.32-10.304 16.768-22.784 28.032-37.504 33.792zM888 960h-752c-75.648 0-136-60.352-136-136v-752c0-75.648 60.352-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.648-60.352 136-136 136zM337.984 298.048h-40.768l-157.504 235.648v-235.648h-38.016v299.904h40.704l157.504-235.52v235.52h38.080v-299.904zM644.544 389.12c-5.312-17.664-12.096-32.192-20.416-43.712-8.384-11.584-17.408-20.608-27.392-27.264-9.856-6.656-21.76-11.648-35.776-14.976-13.952-3.456-30.016-5.12-48.064-5.12h-108.288v299.904h103.36c23.232 0 41.088-1.472 53.312-4.352 17.216-3.904 31.872-11.072 44.032-21.44 15.744-13.376 27.648-30.464 35.456-51.2 7.808-20.864 11.776-44.608 11.776-71.36-0.064-22.784-2.688-42.944-8-60.48zM918.656 337.6c-9.216-14.144-22.272-25.088-39.36-32.96-17.216-7.808-36.416-11.776-57.792-11.776-27.2 0-49.92 4.032-68.16 11.904-18.368 7.936-32.768 19.776-43.2 35.712-10.432 15.872-15.872 33.856-16.448 53.888l37.44 3.264c1.728-14.976 5.824-27.264 12.352-36.864 6.464-9.6 16.448-17.344 30.208-23.296 13.568-5.952 28.864-8.896 46.016-8.896 15.040 0 28.416 2.176 40.064 6.656 11.584 4.48 20.16 10.688 25.792 18.496 5.76 7.872 8.576 16.448 8.576 25.664 0 9.408-2.688 17.664-8.192 24.64-5.44 6.976-14.464 12.928-27.008 17.728-8.064 3.072-25.856 8.064-53.376 14.656-27.648 6.592-46.848 12.864-57.856 18.688-14.4 7.488-25.024 16.768-32 27.904-7.104 11.072-10.56 23.552-10.56 37.312 0 15.104 4.288 29.312 12.928 42.496 8.512 13.184 21.056 23.168 37.632 30.016 16.448 6.784 34.816 10.24 54.976 10.24 22.208 0 41.792-3.52 58.816-10.688 16.96-7.104 30.016-17.664 39.168-31.616 9.088-13.888 14.016-29.696 14.72-47.232l-38.144-2.88c-1.984 18.944-9.024 33.28-20.736 42.944-11.84 9.664-29.248 14.592-52.224 14.592-24 0-41.536-4.416-52.416-13.184-11.008-8.832-16.448-19.392-16.448-31.808 0-10.752 3.84-19.648 11.648-26.624 7.616-6.976 27.52-14.080 59.84-21.376 32.256-7.296 54.4-13.632 66.368-19.136 17.408-8.064 30.272-18.368 38.592-30.72 8.384-12.352 12.544-26.56 12.544-42.624 0-16-4.672-30.976-13.76-45.12z" />
+<glyph unicode="&#xe903;" glyph-name="it-other-php" d="M766.4 540.864c-9.728-48.512-19.52-97.088-29.248-145.664h80.256c23.488 12.48 30.656 14.336 43.904 38.4 7.232 20.416 14.528 40.832 21.76 61.248-23.552 43.456-48.128 49.856-116.672 46.016zM211.968 540.864c-9.728-48.576-19.52-97.088-29.248-145.664 31.616 2.624 63.232 5.184 94.848 7.744 24.96 12.288 24.448 12.416 36.544 38.336 14.144 27.328 13.376 51.52 7.296 84.288-36.48 5.056-72.96 10.176-109.44 15.296zM888 960h-752c-75.584 0-136-60.416-136-136v-752c0-75.648 60.416-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.584-60.352 136-136 136zM175.488 341.568c-50.24-33.088 24.192-82.88-80.256-84.16v22.848c19.456 102.144 38.912 204.416 58.368 306.56 113.472 4.544 188.288 3.136 240.704-53.696 7.232-255.232-114.304-122.816-218.816-191.552zM562.048 341.632v22.976c9.792 51.072 19.52 102.144 29.184 153.28-7.296 7.68-14.592 15.296-21.888 22.976h-80.256c-12.16-66.432-24.32-132.864-36.48-199.232h-65.6c21.888 112.384 43.776 224.768 65.664 337.088h58.368c-2.432-30.592-4.8-61.248-7.296-91.904 71.68 3.072 114.624-4.224 153.28-30.656h-0.128v-7.68c-9.6-68.928-19.456-137.92-29.12-206.848h-65.728zM722.56 333.824c-2.368-25.408-4.8-51.072-7.168-76.416h-65.6c19.456 109.76 38.784 219.584 58.24 329.408 89.792 3.072 174.016 1.6 226.24-30.656 53.632-184.896-72.448-186.56-211.712-222.336z" />
+<glyph unicode="&#xe904;" glyph-name="it-app-glassfish" d="M896-64c70.848 0 128 57.152 128 128v252.032l-379.968-380.032h251.968zM896 960h-768c-70.912 0-128-57.088-128-128v-768c0-70.848 57.088-128 128-128h417.984l478.016 480v416c0 70.912-57.152 128-128 128zM831.936 697.664c-0.832-0.832-1.792-1.344-2.624-2.176h-10.944c4.48 0.768 9.152 1.472 13.568 2.176zM53.824 608.064c120.96 213.76 428.352 120.384 546.112 256.704h10.88c14.528-20.032 29.184-40 43.712-60.032-21.888 10.56-24.128 21.184-38.208 38.208-23.68-18.24-47.296-36.416-70.976-54.592 1.856-3.648 3.648-7.296 5.376-10.944 18.304-5.44 36.48-10.944 54.72-16.384-182.208 17.024-337.216-0.768-447.872-81.92-38.272-28.032-56.64-72.704-98.304-98.304h-5.44v27.264zM239.488 597.12c-5.44-1.792-10.944-3.648-16.384-5.44-25.088 8.064-19.264 10.24-32.768 27.328 7.296 12.8 14.592 25.472 21.888 38.272h32.704v-11.008c8.512-20.352 2.56-33.408-5.44-49.152zM288.704 449.728h-10.944c-75.712-40.832-229.056 50.432-245.76 109.184 110.528-9.92 119.68-119.36 256.704-103.68v-5.504zM294.144 493.44c-31.232-16.768-61.056-29.312-92.8-5.44 54.144-0.96 67.968 11.968 92.8 38.208-1.856 10.944-3.648 21.824-5.44 32.704l16.384-16.32c-3.648-16.384-7.296-32.768-10.944-49.152zM310.528 717.312h-10.944c4.16 0.32 8.32 0.576 12.416 0.832-0.448-0.32-1.024-0.512-1.472-0.832zM414.272 755.584c120.256 2.176 196.544-24.064 283.968-43.712v-5.44c-51.008 9.088-102.016 18.176-152.896 27.264-77.76-5.184-155.584-10.368-233.344-15.488 28.48 20.416 66.368 21.12 102.272 37.376zM610.88 580.8v81.92c19.264-31.68 20.544-47.168 0-81.92zM556.224 569.856v98.304c23.168-37.76 25.92-55.936 0-98.304zM397.888 526.208h-5.44c-1.856 56.448-3.648 112.832-5.504 169.28 36.8-61.056 18.24-90.24 10.944-169.28zM447.040 558.912c-1.792 43.712-3.648 87.424-5.44 131.072 20.672-36.672 25.216-89.28 5.44-131.072zM501.632 558.976v114.688c22.208-41.92 14.4-60.928 5.376-114.688h-5.376zM627.392 400.576c-31.872 11.456-82.816 20.224-120.32 32.768 3.648 5.44 7.36 10.88 10.944 16.448h5.504c53.12-1.024 70.72-19.2 109.248-32.832 3.648 16.384 7.296 32.832 10.88 49.152 5.504-21.248 0.128-50.24-16.256-65.536zM665.472 591.744h-5.504v70.976c13.504-19.968 10.176-43.52 5.504-70.976zM720.128 619.008c-12.736 3.648-25.472 7.296-38.272 10.944l38.272-5.44v-5.504zM818.368 564.416c14.4 31.552 10.112 60.224-5.44 87.424 14.592-10.944 29.12-21.888 43.84-32.768-9.92-27.328-12.864-42.112-38.4-54.656zM944 422.464c-7.232 5.44-14.656 10.944-21.824 16.384-10.944 21.824-21.952 43.712-32.832 65.536 14.592-16.384 29.12-32.768 43.712-49.152-1.088 95.232-28.736 165.44-5.44 251.2-1.792 1.792-3.648 3.584-5.44 5.44-30.208-4.736-60.16-9.536-90.24-14.272 26.624 25.984 60.16 33.408 95.68 52.48h16.384v-327.616zM212.224 646.336c-3.648-7.232-7.232-14.528-10.88-21.824 10.88-5.504 21.76-10.944 32.704-16.448-4.544 26.688-6.016 25.152-21.824 38.272z" />
+<glyph unicode="&#xe905;" glyph-name="it-other-telnet" d="M708.544 483.904h62.592v-64.064h-62.592v64.064zM888 960h-752c-75.648 0-136-60.352-136-135.936v-752.064c0-75.648 60.352-136 136-136h752c75.648 0 136 60.352 136 136v752.064c0 75.584-60.352 135.936-136 135.936zM231.936 610.752h-52.992v-315.456h-30.4v315.456h-53.376v26.944h136.704v-26.944zM383.040 406.848l-9.792-10.304h-80.96v-76.992h62.592v39.040h28.224v-38.528c0-16.512-8.128-24.768-24.512-24.768h-70.016c-16.32 0-24.512 8.256-24.512 24.768v163.392c0 16.512 8.128 24.768 24.512 24.768h70.016c16.32 0 24.512-8.256 24.512-24.768v-76.608zM461.568 295.296h-28.608v342.4h28.672v-342.4zM633.344 295.296h-29.12v186.816l-64.128-1.728v-185.088h-29.056v212.864h29.12v-5.952c11.328 1.472 22.784 3.072 34.368 4.608 13.952 1.728 25.472 2.624 34.496 2.624 16.256 0 24.384-7.936 24.384-23.808v-190.336zM799.36 406.848l-9.856-10.304h-80.96v-76.992h62.592v39.040h28.224v-38.528c0-16.512-8.192-24.768-24.512-24.768h-70.016c-16.384 0-24.512 8.256-24.512 24.768v163.392c0 16.512 8.128 24.768 24.512 24.768h70.016c16.32 0 24.512-8.256 24.512-24.768v-76.608zM924.032 482.56h-37.12v-161.6h37.12v-25.6h-41.344c-16.32 0-24.512 8.256-24.512 24.768v162.432h-25.536v25.6h25.536v66.304h28.672v-66.304h37.12v-25.6zM292.288 483.904h62.592v-64.064h-62.592v64.064z" />
+<glyph unicode="&#xe906;" glyph-name="it-other-dns" d="M264.576 617.152h-55.296v-378.112h53.056c15.488 0 28.032 4.416 37.696 13.312 9.6 8.96 14.464 21.056 14.464 36.544v278.912c0 14.656-4.608 26.56-13.888 35.712-9.344 9.024-21.312 13.632-36.032 13.632zM888 960h-752c-75.648 0-136-60.352-136-136v-752c0-75.648 60.352-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.648-60.352 136-136 136zM354.304 284.864c0-23.68-7.808-43.136-23.36-58.304s-35.2-22.784-58.88-22.784h-102.656v448.64h102.592c23.936 0 43.584-7.616 59.072-22.784s23.232-34.624 23.232-58.304v-286.464zM609.216 203.776h-27.584l-119.808 329.92v-329.92h-37.568v448.64h29.824l117.504-324.224v324.16h37.568v-448.576zM855.68 516.16h-39.872v100.992h-96.896v-94.656l124.416-149.632c8.192-9.92 12.288-21.12 12.288-33.536v-103.744c0-9.344-2.944-17.024-8.768-22.912s-13.44-8.896-22.784-8.896h-112.96c-9.344 0-17.024 2.944-23.040 8.896s-9.024 13.568-9.024 22.912v113.792h39.808v-110.4h96.896v106.944l-123.84 149.632c-8.576 10.304-12.864 21.696-12.864 34.112v90.88c0 9.344 3.008 17.024 9.024 22.848 6.080 5.952 13.76 8.96 23.040 8.96h112.96c9.344 0 17.024-3.008 22.784-8.96 5.824-5.888 8.768-13.568 8.768-22.848v-104.384z" />
+<glyph unicode="&#xe907;" glyph-name="it-other-url" d="M888 960h-752c-75.648 0-136-60.352-136-136v-752c0-75.648 60.352-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.648-60.352 136-136 136zM379.328 235.584c0-9.344-3.008-17.024-9.024-22.912-6.016-5.952-13.696-8.896-23.104-8.896h-122.048c-9.344 0-17.024 2.944-22.912 8.896-5.952 5.952-8.896 13.568-8.896 22.912v416.768h39.872v-413.376h106.368v413.376h39.872v-416.768zM600 203.776l-83.392 240.192 5.44 8.064h71.040v165.12h-102.272v-413.376h-39.808v448.64h150.208c9.344 0 17.024-3.008 22.912-8.96 5.952-5.888 8.896-13.568 8.896-22.848v-170.304c0-21.568-14.528-32.384-43.584-32.384-2.88 0-7.040 0.128-12.608 0.448-5.568 0.192-9.6 0.384-12.096 0.384 25.856-71.488 51.584-143.104 77.184-214.976h-41.92zM844.864 203.776h-143.296v448.64h39.808v-413.376h103.488v-35.264z" />
+<glyph unicode="&#xe908;" glyph-name="it-database-mysql" d="M4.032 472c0 7.232-2.816 30.4-4.032 43.968v-129.984c1.856-20.864 4.032-44.224 4.032-54.016 0-17.472 5.248-33.728 14.016-49.984h237.952c-150.272 38.72-251.968 108.672-251.968 190.016zM0 281.984h1.984c-0.896 9.472-1.28 17.984-1.984 25.984v-25.984zM513.984 515.968c282.752 0 512 99.328 512 222.016 0 1.344 0.128 2.624 0 4.032 0 0.704 0 1.344 0 1.984-7.488 119.808-233.984 216-512 216-282.752 0-512-99.328-512-222.016s229.248-222.016 512-222.016zM516.032 465.984c-282.752 0-512 99.328-512 222.016 0 7.232-2.752 30.4-4.032 44.032v-137.984c1.856-20.864 4.032-44.288 4.032-54.080 0-122.688 229.248-222.016 512-222.016s512 99.328 512 222.016v148.032c0-122.688-229.312-222.016-512-222.016zM776 281.984h238.016c8.768 16.256 14.016 32.512 14.016 49.984v140.032c0-81.344-101.76-151.296-252.032-190.016zM140.736 27.904c-5.056-19.968-8.768-35.072-11.136-45.312-2.048 9.28-5.376 23.168-9.984 41.792l-49.472 200.128h-41.6v-282.624h26.688v240.64l60.48-240.64h24.96l60.736 236.544v-236.544h26.688v282.624h-37.376l-49.984-196.608zM369.792 141.44c-8.96-18.56-16.576-35.2-22.848-49.92-6.592 15.936-13.632 31.872-21.248 47.808l-41.216 85.184h-33.6l80.512-162.88v-119.744h27.648v119.744l83.392 162.88h-32.128l-40.512-83.072zM592.704 115.968c-9.472 6.784-24.128 13.632-43.904 20.032s-31.488 12.096-36.608 17.984c-4.032 4.608-5.824 9.472-5.824 16 0 7.104 1.536 13.76 5.824 17.984 6.656 6.656 16 9.984 27.84 9.984 11.392 0 19.072-3.776 24.896-9.984 5.632-6.208 9.92-15.872 11.712-30.016l40.96 2.048c-0.704 25.28-7.808 44.864-20.48 60.032-12.8 15.104-31.872 24-57.088 24-15.488 0-28.608-3.648-39.552-9.984-10.944-6.4-19.072-15.808-24.896-28.032-5.824-12.16-8.768-25.984-8.768-40 0-21.76 6.656-38.848 19.008-54.016 8.768-10.752 23.616-20.608 45.376-28.032 16.96-5.76 27.456-9.728 32.192-12.032 6.912-3.392 11.84-7.488 14.656-12.032 2.752-4.544 4.416-9.472 4.416-16 0-10.112-3.712-20.416-10.24-28.032-6.656-7.552-16.192-9.984-29.312-9.984-12.352 0-22.080 3.52-29.312 12.032-7.296 8.512-12.224 21.888-14.656 40l-39.424-5.952c2.688-30.72 11.264-53.952 24.896-70.016s33.152-24 58.56-24c17.472 0 32.128 3.328 43.904 9.984 11.712 6.656 19.968 18.24 26.304 32 6.464 13.76 10.24 28.224 10.24 44.032 0 17.344-3.456 32.192-8.768 44.032-5.376 11.84-12.544 21.184-21.952 27.968zM917.632 235.968h-41.024v-272h142.016v46.016h-100.992zM837.12 38.016c4.864 17.984 7.296 38.272 7.296 62.016 0 44.864-8.896 81.088-26.304 105.984-17.472 24.96-40.448 38.016-70.272 38.016-30.144 0-54.208-13.056-71.744-38.016s-26.304-61.12-26.304-105.984c0-44.992 8.768-79.104 26.304-104 17.472-24.896 40.832-38.016 71.744-38.016 16 0 30.72 4.096 43.904 12.032 16.768-15.36 26.56-23.104 27.84-24 5.888-4.352 11.456-7.488 17.536-9.984l14.656 40c-11.712 5.76-22.208 12.224-32.192 22.016 8.064 12.8 13.888 26.176 17.536 39.936zM799.040 59.968c-2.624-11.904-6.528-21.632-11.712-30.016-12.16 12.48-26.176 21.76-39.488 28.032l-10.24-32c8.512-4.096 16.64-10.624 24.896-17.984-5.248-2.624-10.24-4.032-16.128-4.032-15.68 0-29.248 8.064-39.488 24-10.304 15.936-16.128 39.872-16.128 72 0 31.616 5.824 56.256 16.128 72 10.24 15.744 22.912 24 39.488 24s30.72-8.32 41.024-24 14.656-40.256 14.656-72c-0.064-15.36-0.448-28.096-3.008-40z" />
+<glyph unicode="&#xe909;" glyph-name="it-other-ping" d="M154.24 661.248h98.048v-199.808h-98.048v199.808zM888 960h-752c-75.648 0-136-60.416-136-136v-752c0-75.648 60.352-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.584-60.352 136-136 136zM292.096 457.984c0-9.344-3.008-17.088-9.024-23.040-6.016-6.080-13.696-9.088-23.040-9.088h-105.792v-177.984h-39.808v448.64h145.6c9.344 0 17.088-3.008 23.104-8.96 6.016-5.888 9.024-13.568 9.024-22.848v-206.72zM397.312 247.872h-39.872v448.64h39.872v-448.64zM657.088 247.872h-27.584l-119.808 329.92v-329.92h-37.568v448.64h29.824l117.568-324.288v324.288h37.568v-448.64zM910.144 560.32h-40.128v100.928h-101.44v-378.112h101.44v155.072h-47.872v34.432h88v-192.96c0-9.344-2.944-17.024-8.896-22.912s-13.568-8.896-22.912-8.896h-117.824c-9.344 0-17.024 2.944-22.912 8.896s-8.896 13.568-8.896 22.912v385.024c0 9.344 3.008 17.024 8.896 22.848 5.952 5.952 13.632 8.96 22.912 8.96h117.824c9.344 0 17.024-3.008 22.912-8.96 5.952-5.888 8.896-13.568 8.896-22.848v-104.384z" />
+<glyph unicode="&#xe90a;" glyph-name="it-other-ftp" d="M888 960h-752c-75.584 0-136-60.352-136-136v-752c0-75.648 60.416-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.648-60.352 136-136 136zM352 690.88h-119.168v-193.92h109.696v-40.832h-109.696v-236.032h-45.376v510.976h164.544v-40.192zM590.656 690.88h-78.976v-470.784h-45.376v470.784h-79.68v40.192h204.096v-40.192zM846.4 459.392c0-10.624-3.456-19.392-10.304-26.24s-15.616-10.304-26.304-10.304h-120.448v-202.752h-45.44v510.976h165.888c10.688 0 19.456-3.392 26.304-10.112s10.304-15.488 10.304-26.112v-235.456zM689.344 690.88h111.616v-227.584h-111.616v227.584z" />
+<glyph unicode="&#xe90b;" glyph-name="it-other-rest" d="M888 960h-752c-75.584 0-136-60.416-136-136v-752c0-75.648 60.416-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.584-60.352 136-136 136zM243.456 264.96l-79.744 229.632 5.248 7.68h67.968v157.76h-97.856v-395.136h-38.080v428.8h143.616c8.96 0 16.256-2.816 21.888-8.448 5.632-5.696 8.512-12.992 8.512-21.952v-162.752c0-20.672-13.888-30.976-41.664-30.976-2.752 0-6.72 0.128-12.032 0.384s-9.152 0.384-11.52 0.384c24.64-68.288 49.216-136.832 73.728-205.504h-40.064zM481.28 264.96h-140.864v428.8h139.2v-33.664h-101.12v-160h92.032v-34.24h-91.968v-167.168h102.72v-33.728zM707.904 563.584h-38.080v96.448h-92.608v-90.432l118.912-143.040c7.808-9.472 11.776-20.16 11.776-32v-99.2c0-9.024-2.752-16.32-8.32-21.952-5.632-5.696-12.864-8.512-21.824-8.512h-107.968c-8.96 0-16.32 2.816-22.080 8.512-5.76 5.632-8.64 12.928-8.64 21.952v108.736h38.080v-105.472h92.608v102.272l-118.4 142.976c-8.192 9.856-12.352 20.736-12.352 32.64v86.848c0 8.96 2.88 16.256 8.64 21.952 5.824 5.632 13.248 8.448 22.144 8.448h107.968c8.96 0 16.192-2.816 21.824-8.448 5.568-5.696 8.32-12.992 8.32-21.952v-99.776zM923.008 660.032h-66.304v-395.136h-38.080v395.136h-66.88v33.728h171.264v-33.728z" />
+<glyph unicode="&#xe90c;" glyph-name="it-other-soap" d="M594.752 393.984h75.392l-37.568 232.384zM343.488 660.032h104.96v-361.408h-104.96v361.408zM817.472 660.032h93.76v-190.976h-93.76v190.976zM888 960h-752c-75.584 0-136-60.416-136-136v-752c0-75.648 60.416-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.584-60.352 136-136 136zM238.016 563.584h-38.080v96.448h-92.672v-90.432l118.912-143.040c7.872-9.472 11.776-20.16 11.776-32v-99.2c0-9.024-2.752-16.32-8.384-21.952-5.568-5.696-12.8-8.512-21.76-8.512h-107.904c-8.96 0-16.256 2.816-22.016 8.512-5.76 5.632-8.64 12.928-8.64 21.952v108.736h38.080v-105.472h92.608v102.272l-118.4 142.976c-8.192 9.856-12.352 20.736-12.352 32.64v86.848c0 8.96 2.88 16.256 8.64 21.952 5.76 5.632 13.12 8.448 22.080 8.448h107.968c8.96 0 16.192-2.816 21.76-8.448 5.568-5.696 8.384-12.992 8.384-21.952v-99.776zM486.528 295.36c0-9.024-2.88-16.32-8.64-21.952-5.76-5.696-13.12-8.512-22.080-8.512h-120c-8.96 0-16.256 2.816-21.888 8.512-5.632 5.632-8.512 12.928-8.512 21.952v368c0 8.96 2.816 16.256 8.512 21.952 5.632 5.632 12.928 8.448 21.888 8.448h120c8.96 0 16.32-2.816 22.080-8.448 5.76-5.696 8.64-12.992 8.64-21.952v-368zM690.112 264.96l-15.040 95.36h-85.248l-15.104-95.36h-36.672v1.152l76.48 428.8h37.568l75.904-429.952h-37.888zM949.312 465.792c0-8.96-2.88-16.32-8.64-22.080s-13.12-8.64-22.080-8.64h-101.12v-170.176h-38.080v428.8h139.2c8.96 0 16.32-2.816 22.080-8.448 5.76-5.696 8.64-12.992 8.64-21.952v-197.504z" />
+<glyph unicode="&#xe90d;" glyph-name="it-server-macos" d="M766.336 396.416c-6.912 61.952 29.12 128.832 94.144 209.92-23.168 15.424-37.44 36.096-78.592 46.912-170.496 21.632-250.176-23.744-250.176-23.744s-112.192 49.792-191.68 42.624c-130.432-11.648-176.448-134.72-179.712-201.152-2.368-47.936-6.528-116.544 1.408-168 29.888-192.832 130.688-269.952 213.632-297.536 64.768-21.568 88.256 30.784 135.744 30.784 15.232 0 63.872 1.728 73.856-3.712 146.176-79.68 238.656-7.040 303.040 193.024-45.056 16.704-111.36 90.24-121.664 170.88zM696.768 896c-60.8 0-170.88-102.848-162.176-188.288 0.448-4.096 11.968-8.064 16-7.232 56.448 11.648 121.536 70.912 141.888 127.424 5.952 16.768 22.144 68.096 4.288 68.096z" />
+<glyph unicode="&#xe90e;" glyph-name="it-server-openbsd" d="M619.904 507.2c9.984 7.552 16.896 18.24 20.544 31.936l-23.488 2.88c-3.456-9.6-8.128-16.576-14.016-20.928s-12.992-6.592-21.376-6.592c-11.2 0-20.48 3.904-28.032 11.776-7.488 7.808-11.648 19.072-12.48 33.792h100.032c0.064 2.688 0.128 4.672 0.128 6.016 0 22.144-5.696 39.296-17.088 51.52-11.392 12.16-25.984 18.304-43.968 18.304-18.496 0-33.536-6.272-45.184-18.688-11.584-12.416-17.408-29.888-17.408-52.48 0-21.824 5.76-38.72 17.28-50.816s27.072-18.112 46.656-18.112c15.552 0 28.288 3.776 38.4 11.392zM554.112 606.784c7.168 6.976 15.872 10.496 26.304 10.496 11.584 0 20.928-4.352 28.16-13.12 4.672-5.632 7.552-14.144 8.576-25.408h-74.88c0.768 11.712 4.736 21.056 11.84 28.032zM513.472 286.080c-7.424 3.328-21.056 7.232-40.96 11.776s-32.192 8.96-36.928 13.248c-4.864 4.224-7.232 9.728-7.232 16.32 0 7.68 3.392 14.208 10.176 19.648s17.536 8.192 32.384 8.192c14.208 0 24.96-3.008 32.256-9.024 7.296-5.952 11.584-14.784 12.8-26.496l23.488 1.728c-0.448 10.88-3.456 20.544-9.088 29.184-5.632 8.576-13.696 15.104-24.192 19.52-10.432 4.48-22.528 6.656-36.288 6.656-12.48 0-23.808-2.112-33.984-6.336s-17.92-10.368-23.232-18.496c-5.248-8.128-7.936-16.896-7.936-26.176 0-8.512 2.176-16.192 6.528-23.040s10.944-12.544 19.776-17.28c6.848-3.584 18.752-7.424 35.776-11.52s27.968-7.104 32.96-9.088c7.744-2.944 13.312-6.592 16.704-10.944 3.328-4.288 5.056-9.344 5.056-15.168 0-5.76-1.728-11.008-5.248-15.872-3.456-4.8-8.832-8.64-16-11.392-7.168-2.816-15.424-4.16-24.704-4.16-10.56 0-20.032 1.792-28.416 5.504-8.384 3.648-14.656 8.448-18.624 14.4-4.032 5.952-6.592 13.568-7.68 22.784l-23.104-2.048c0.32-12.288 3.712-23.424 10.176-33.28s15.296-17.152 26.624-22.016c11.328-4.864 25.344-7.36 42.112-7.36 13.248 0 25.088 2.432 35.648 7.296 10.56 4.8 18.688 11.648 24.32 20.288s8.512 17.984 8.512 27.84c0 9.92-2.624 18.752-7.744 26.368-5.248 7.616-13.184 13.952-23.936 18.944zM404.032 512.704c3.904-4.864 8.832-8.896 14.784-12.096 6.016-3.2 12.8-4.8 20.416-4.8 10.368 0 20.224 2.944 29.568 8.768 9.408 5.824 16.576 14.272 21.44 25.28 5.056 10.944 7.488 23.36 7.488 37.056 0 12.8-2.24 24.576-6.72 35.264-4.416 10.752-11.008 19.072-19.776 24.96s-18.88 8.832-30.336 8.832c-8.768 0-16.192-1.728-22.336-5.12s-11.648-8.512-16.512-15.36v17.472h-20.736v-185.472h22.72v65.216zM413.12 604.608c7.424 9.024 16 13.568 25.664 13.568 9.728 0 18.176-4.224 25.216-12.736s10.56-21.312 10.56-38.4c0-17.92-3.584-31.168-10.752-39.744-7.232-8.512-15.872-12.8-25.984-12.8-9.92 0-18.368 4.096-25.344 12.352-7.104 8.256-10.56 21.056-10.56 38.272s3.712 30.4 11.2 39.488zM337.408 287.040c8.704 4.224 15.168 9.92 19.456 16.896s6.464 14.464 6.464 22.4c0 8.512-2.432 16.64-7.296 24.448-4.8 7.744-11.52 13.504-20.032 17.28s-19.904 5.632-34.048 5.632h-69.44v-185.152h70.592c11.776 0 21.696 1.024 29.824 3.072s14.848 5.12 20.288 9.216c5.376 4.032 9.92 9.792 13.568 17.28s5.504 15.488 5.504 24.192c0 10.752-3.008 20.032-9.024 28.032-6.016 7.872-14.592 13.44-25.856 16.704zM257.024 351.808h36.992c13.312 0 22.656-0.896 28.16-2.56 5.504-1.728 9.664-4.928 12.608-9.6 2.944-4.736 4.416-10.112 4.416-16.256 0-6.464-1.536-11.84-4.736-16.128s-7.872-7.36-14.080-9.28c-4.736-1.344-12.48-2.112-23.36-2.112h-40v55.936zM343.232 226.624c-2.432-4.48-5.504-7.936-9.344-10.304-3.776-2.304-8.512-4.032-14.144-4.992-3.2-0.64-8.768-0.96-16.64-0.96h-46.080v63.68h42.752c11.84 0 20.8-1.088 27.072-3.136s11.2-5.632 14.72-10.752c3.52-5.056 5.312-11.072 5.312-17.92 0.064-5.952-1.216-11.136-3.648-15.616zM309.12 507.136c13.888 7.616 24.576 18.816 32.192 33.6 7.552 14.848 11.328 31.616 11.328 50.368 0 18.56-3.584 35.072-10.752 49.664-7.168 14.656-17.664 25.984-31.36 34.176s-29.184 12.288-46.272 12.288c-26.112 0-47.36-8.704-63.872-26.048s-24.704-41.472-24.704-72.192c0-16.256 3.52-31.68 10.624-46.208 7.104-14.592 17.472-26.048 31.168-34.496s29.312-12.608 46.72-12.608c16.064 0 31.040 3.84 44.928 11.456zM218.88 535.936c-11.968 12.8-17.984 30.4-17.984 52.672 0 27.84 6.272 47.744 18.752 59.648s27.392 17.856 44.736 17.856c12.224 0 23.232-3.072 33.024-9.28s17.28-14.848 22.336-26.112 7.616-24.384 7.616-39.488c0-23.808-5.952-42.176-17.856-55.168s-27.008-19.392-45.504-19.392c-18.048 0-33.088 6.4-45.12 19.264zM702.4 357.76c-7.488 6.4-16.576 10.816-27.2 13.248-7.552 1.728-18.56 2.688-32.96 2.688h-63.744v-185.152h66.816c11.2 0 21.056 1.088 29.696 3.2 8.64 2.048 16 5.184 22.144 9.28 6.080 4.032 11.712 9.664 16.896 16.832 5.12 7.040 9.344 16.064 12.608 26.944s4.864 23.296 4.864 37.376c0 16.512-2.368 31.168-7.232 44.032-4.864 12.736-12.16 23.296-21.888 31.552zM701.44 246.784c-3.264-9.792-7.808-17.6-13.632-23.36-4.096-4.096-9.6-7.36-16.576-9.6s-16.576-3.456-28.736-3.456h-39.488v141.44h38.848c14.592 0 25.152-1.28 31.68-3.84 9.152-3.52 16.832-10.496 23.168-20.864s9.472-25.28 9.472-44.608c0.064-14.016-1.536-25.856-4.736-35.712zM0 960v-1024h1024v533.12c-85.888-14.656-144.192-122.368-127.936-210.816-55.872 12.48-65.856 52.608-94.016 59.136 5.76-22.656 11.392-45.12 17.216-67.648-34.112 3.264-27.008 9.152-51.2-8.512 11.392-25.28 22.656-50.496 33.984-75.776-2.816 0-5.632 0-8.512 0-23.808 22.016-29.056 31.488-68.096 42.112-2.816-5.632-5.824-11.136-8.64-16.896 5.824-17.024 11.456-33.728 17.216-50.752-37.12 25.152-27.52 31.744-68.416 17.024-2.816-22.528-5.696-44.992-8.512-67.648-21.184 24.128-14.464 29.248-51.2 42.368-2.816-17.024-5.76-33.856-8.512-50.624-8.576 11.264-17.152 22.528-25.536 33.6-8.576-5.76-17.152-11.136-25.6-16.896-2.88-22.4-5.696-44.992-8.64-67.52-11.392 22.528-22.72 45.12-33.984 67.52-5.696-2.752-11.52-5.504-17.152-8.512-8.576-32.64-3.328-25.28-25.6-42.112-2.88 14.144-5.696 28.224-8.576 42.112-5.632-2.624-11.328-5.504-17.024-8.256-10.88-37.504-16.96-43.264-34.112-50.752-5.76 19.84-11.456 39.616-17.152 59.072-17.6-17.152-19.264-28.352-42.624-42.112 0 17.024 0 33.856 0 50.624-22.72-14.016-45.568-28.032-68.288-42.24 6.4 46.848 11.968 56.64-17.088 84.352-17.088-11.136-34.112-22.528-51.264-33.6 5.824 22.528 11.456 44.864 17.152 67.392-25.536-5.632-51.2-11.264-76.8-16.768 11.392 16.768 22.72 33.728 34.176 50.624-18.496 23.36-16.256 18.752-34.176 42.112-11.392-5.632-22.656-11.264-34.112-16.896 23.424 48.64 10.816 38.4-25.536 84.48-40.704-12.544-61.504-8.832-85.44 16.832 82.432 69.184 97.92 184 153.6 261.504-8.512 11.264-17.024 22.464-25.6 33.664 11.392 0 22.72 0 34.112 0-14.144 25.408-28.416 50.688-42.624 76.032 28.416-8.448 56.96-17.024 85.248-25.408-11.968 28.096 20.352 29.504 17.152 75.968 14.208-5.568 28.416-11.2 42.688-16.832-5.696 25.344-11.392 50.624-17.088 75.84 30.592-19.776 28.928-36.352 68.224-50.496 0 11.2 0 22.464 0 33.664 11.392-8.384 22.848-16.768 34.176-25.216 1.728 36.352 2.24 40.64 17.152 59.008 5.568-14.144 11.264-28.16 16.96-42.176 25.28 34.048 19.904-0.512 34.176 25.216 5.696 16.96 11.392 33.792 17.088 50.688 11.392-22.464 22.656-45.056 34.112-67.456 5.76 11.2 11.392 22.592 17.088 33.792 0-14.144 0-28.224 0-42.176 5.632 2.752 11.456 5.632 17.152 8.384 8.512 32.768 3.264 25.344 25.6 42.176 0-16.832 0-33.792 0-50.624 23.936 14.848 14.464 12.352 34.048 16.832 0-8.384 0-16.832 0-25.28 22.656 22.4 45.504 45.056 68.224 67.456-5.568-30.976-11.328-61.824-17.024-92.8 8.512 5.76 17.088 11.392 25.6 17.024 14.080 30.4 2.304 19.776 33.984 33.664-5.632-25.28-11.328-50.688-17.024-75.968 11.392 8.448 22.72 16.896 34.24 25.28-2.88-14.016-5.824-28.032-8.704-42.112 22.848 11.2 45.632 22.464 68.288 33.664-11.392-22.464-22.656-44.928-34.112-67.52 2.816-2.816 5.824-5.568 8.64-8.384 25.472 11.2 51.136 22.656 76.608 33.792 0-2.816 0-5.632 0-8.448-29.376-43.712-33.28-39.808-16.96-76.032 22.656 8.448 45.504 17.024 68.288 25.344 0-2.752 0-5.632 0-8.32-17.152-14.208-34.176-28.16-51.392-42.24 26.368-32.256 12.736 0.576 8.576-50.624 20.032 2.752 40 5.632 59.904 8.384-17.088-19.648-34.176-39.296-51.264-59.072 14.272 2.816 28.608 5.568 42.752 8.448-11.648-16-21.44-19.968-34.176-33.728 5.696-8.32 11.392-16.832 17.024-25.216 45.568 26.688 58.688 51.904 128 58.944 17.216-11.2 34.176-22.528 51.2-33.728v490.944h-1023.936zM769.6 620.16c-3.392 4.736-8.512 8.512-15.232 11.392s-14.208 4.352-22.272 4.352c-18.624 0-32.896-7.36-42.688-22.080v19.136h-20.48v-134.080h22.72v73.152c0 17.216 3.52 28.864 10.56 35.008 6.976 6.144 15.36 9.216 25.088 9.216 6.080 0 11.328-1.344 15.808-4.096 4.48-2.688 7.68-6.4 9.408-10.944 1.728-4.608 2.624-11.52 2.624-20.8v-81.536h22.72v82.432c0 10.56-0.448 17.92-1.28 22.080-1.28 6.464-3.648 12.096-6.976 16.768z" />
+<glyph unicode="&#xe90f;" glyph-name="it-server-debian" d="M797.952 660.928c5.824-5.824 11.648-11.584 17.408-17.408-12.032 16.64-0.896 5.12-17.408 17.408zM0 960v-1024h1024v1024h-1024zM214.656 686.976h17.344v-8.704c-5.76-5.824-11.584-11.584-17.344-17.408h-8.768c2.88 8.768 5.824 17.472 8.768 26.112zM197.184 625.984c2.88-8.64 5.824-17.344 8.704-26.048h-8.704v26.048zM571.648 312.64c-45.888 16.896-81.216 29.568-104.576 69.632 11.584-5.76 23.232-11.648 34.816-17.344-11.584 11.584-23.232 23.104-34.816 34.752-11.648-12.416-10.816-15.296-26.112-26.112-2.88 14.464-5.824 28.928-8.704 43.456 11.648 3.392 11.968 104.576 26.112 165.504 42.688 32.768 54.72 56.64 130.688 60.992 27.904-14.208 36.416-16.064 52.16-43.584-77.888 30.784-114.752-3.328-165.376-43.52-4.416-44.224-9.408-68.608 8.64-104.448 16.704-43.328 35.52-61.184 78.4-78.4 75.776-21.568 126.912 20.096 174.208 52.288 80.576 361.28-300.864 476.672-452.8 208.96-130.688-230.336 75.456-527.296 252.48-574.72v-8.704h-52.288c-398.4 154.56-361.024 598.784-34.816 801.088 494.912 22.080 487.040-512.768 121.984-539.84zM615.104 425.856v-8.832h-8.704c-8.704 2.944-17.408 5.888-26.176 8.832v17.344c11.648-5.76 23.232-11.52 34.88-17.344zM667.264 512.832v26.176c17.92-15.744 6.272-0.128 17.472-26.176h-17.472z" />
+<glyph unicode="&#xe910;" glyph-name="it-app-iis" d="M896-64c70.848 0 128 57.152 128 128v252.032l-379.968-380.032h251.968zM896 960h-768c-70.912 0-128-57.088-128-128v-768c0-70.848 57.088-128 128-128h417.984l478.016 480v416c0 70.912-57.152 128-128 128zM340.032 389.376c0-2.304-1.728-3.52-5.248-3.52-6.976 0-30.272 1.728-80.896 1.728-55.296 0-80.32-1.728-86.72-1.728-2.88 0-4.672 1.216-4.672 3.52v15.68c0 2.368 1.728 3.52 4.672 3.52h32.576c11.648 0 23.872 1.728 26.176 16.896 1.152 8.704 2.88 134.464 2.88 165.248v40.768c0 13.952-1.728 118.72-2.304 127.488-1.152 13.952-6.976 19.776-29.12 19.776h-33.728c-2.88 0-4.608 1.152-4.608 3.52v15.68c0 2.304 1.728 3.456 4.032 3.456 6.976 0 36.672-1.728 90.752-1.728 51.84 0 70.464 1.728 78.592 1.728 2.88 0 4.032-1.728 4.032-4.032v-14.592c0-2.88-1.728-4.032-4.672-4.032h-27.264c-11.648 0-20.352-4.672-20.352-16.32 0-5.824-1.728-134.464-1.728-141.376v-44.864c0-5.824 1.728-140.224 1.728-146.688 0-18.048 8.704-20.992 27.328-20.992h23.872c2.88 0 4.672-1.152 4.672-4.032v-15.104zM561.728 389.376c0-2.304-1.728-3.52-5.248-3.52-6.976 0-30.272 1.728-80.896 1.728-55.296 0-80.32-1.728-86.72-1.728-2.88 0-4.672 1.216-4.672 3.52v15.68c0 2.368 1.728 3.52 4.672 3.52h32.576c11.648 0 23.872 1.728 26.176 16.896 1.216 8.704 2.944 134.464 2.944 165.248v40.768c0 13.952-1.728 118.72-2.304 127.488-1.152 13.952-6.976 19.776-29.12 19.776h-33.792c-2.88 0-4.608 1.152-4.608 3.52v15.68c0 2.304 1.728 3.456 4.032 3.456 6.976 0 36.672-1.728 90.752-1.728 51.84 0 70.4 1.728 78.592 1.728 2.88 0 4.032-1.728 4.032-4.032v-14.592c0-2.88-1.728-4.032-4.608-4.032h-27.264c-11.648 0-20.352-4.672-20.352-16.32 0-5.824-1.728-134.464-1.728-141.376v-44.864c0-5.824 1.728-140.224 1.728-146.688 0-18.048 8.704-20.992 27.328-20.992h23.872c2.944 0 4.672-1.152 4.672-4.032v-15.104zM755.008 378.88c-40.768 0-69.248 12.224-92.48 30.336-6.976 5.184-10.496 6.976-13.44 6.976-3.456 0-5.824-4.096-9.344-9.92-3.52-6.4-6.4-6.976-10.432-6.976-3.52 0-6.464 2.944-5.248 9.344 2.304 14.464 8.128 88.448 9.856 105.28 0.64 3.456 1.728 3.456 4.032 3.456l8.768-0.576c2.304 0 3.52-1.152 3.52-4.672 0.576-18.624 1.728-37.824 20.928-67.52 17.472-27.328 49.472-43.008 81.472-43.008 34.944 0 79.168 21.504 79.168 73.856 0 59.968-43.136 82.048-89.664 98.368-17.984 6.4-59.968 20.928-84.928 47.168-19.264 19.2-29.12 46.592-29.12 84.992 0 29.12 18.048 57.6 36.096 74.496 20.928 19.776 49.984 27.968 81.408 27.968 33.216 0 58.816-9.92 68.672-14.592 5.248-2.88 8.128-2.304 11.072 0.576l7.552 6.976c2.944 2.368 4.672 3.52 7.552 3.52 2.944 0 4.672-4.672 4.672-9.856 0-20.352 7.552-79.744 8.128-92.544 0-2.88-0.576-4.032-2.88-4.672l-6.848-1.792c-1.728-0.576-2.944 0-3.52 1.728-4.672 16.896-12.224 39.616-36.096 64.576-15.68 16.896-36.032 25.024-63.424 25.024-51.776 0-70.4-38.4-70.4-68.096 0-16.256 3.456-35.52 17.984-50.624 16.896-16.896 49.472-29.696 66.368-34.944 40.192-12.8 72.768-22.656 93.696-48.32 15.104-18.048 25.6-40.704 25.6-79.104 0-68.608-41.856-127.424-118.72-127.424z" />
+<glyph unicode="&#xe911;" glyph-name="it-app-mailserver" d="M896-64c70.848 0 128 57.152 128 128v252.032l-379.968-380.032h251.968zM728.832 764.992h-418.624l201.792-140.992zM832 789.312l-315.968-221.312-316.032 220.416v-348.416h632zM896 960h-768c-70.912 0-128-57.088-128-128v-768c0-70.848 57.088-128 128-128h417.984l478.016 480v416c0 70.912-57.152 128-128 128zM896 376h-760v480h760v-480z" />
+<glyph unicode="&#xe912;" glyph-name="it-app-websphere" d="M896-64c70.848 0 128 57.152 128 128v252.032l-379.968-380.032h251.968zM599.744 679.36c-9.664 0-17.664-4.352-24.064-13.184-6.464-8.768-9.6-22.016-9.6-39.872 0-18.432 2.496-32 7.424-40.832 6.976-12.416 16.256-18.688 27.84-18.688 8.896 0 16.448 4.416 22.656 13.312 6.272 8.896 9.344 22.848 9.344 41.92 0 20.288-3.136 34.944-9.408 43.904s-14.4 13.44-24.192 13.44zM425.088 679.36c-8.832 0-16.064-3.776-21.76-11.2-5.76-7.488-8.576-17.6-8.448-30.464h60.16c-0.32 13.632-3.328 23.936-9.024 31.040-5.76 7.104-12.736 10.624-20.928 10.624zM896 960h-768c-70.912 0-128-57.088-128-128v-768c0-70.848 57.088-128 128-128h417.984l478.016 480v416c0 70.912-57.152 128-128 128zM297.536 533.696h-44.928l-41.856 183.296-41.664-183.296h-46.016l-50.112 245.184h43.392l31.68-168.384 38.4 168.384h50.432l36.8-171.264 32.192 171.264h42.688l-51.008-245.184zM403.904 576.384c6.208-7.744 13.952-11.648 23.232-11.648 6.272 0 11.584 2.048 15.936 6.016 4.224 4.096 7.488 10.56 9.664 19.456l40.128-7.872c-5.184-17.152-13.312-30.208-24.448-39.232-11.136-8.96-25.024-13.44-41.728-13.44-26.496 0-46.016 10.048-58.752 30.272-10.048 16.192-15.040 36.608-15.040 61.248 0 29.44 6.592 52.48 19.776 69.184s29.824 25.024 49.984 25.024c22.656 0 40.448-8.704 53.568-26.176s19.328-44.16 18.752-80.192h-100.864c0.32-14.016 3.52-24.896 9.792-32.64zM656.128 554.24c-12.352-16.384-27.456-24.576-45.056-24.576-8.704 0-17.28 2.56-25.728 7.616s-15.808 12.544-21.824 22.528v-26.112h-37.44v245.184h40.32v-88.32c12.352 16.512 27.136 24.768 44.096 24.768 18.496 0 33.792-7.808 45.952-23.488 12.096-15.68 18.176-38.144 18.176-67.456 0-30.4-6.208-53.76-18.496-70.144zM856.704 566.080c-6.4-11.584-15.552-20.544-27.584-26.944s-25.472-9.6-40.448-9.6c-19.072 0-34.944 3.264-47.808 9.728-12.8 6.464-22.912 16.192-30.272 29.184-7.232 12.992-11.136 27.648-11.52 44.032l26.176 2.688c1.28-12.224 4.096-22.336 8.704-30.208 4.544-7.872 11.584-14.208 21.12-19.072s20.288-7.296 32.256-7.296c10.56 0 19.968 1.856 28.032 5.504s14.208 8.704 18.112 15.104c4.032 6.464 5.952 13.376 5.952 20.992 0 7.68-1.856 14.4-5.696 20.16-3.904 5.76-10.112 10.56-18.944 14.464-5.632 2.56-18.112 6.592-37.376 11.968-19.328 5.376-32.832 10.496-40.576 15.296-9.984 6.144-17.472 13.76-22.464 22.848-4.864 9.088-7.36 19.264-7.36 30.528 0 12.352 3.008 23.936 9.088 34.688 6.016 10.752 14.784 18.944 26.304 24.512 11.584 5.568 24.448 8.384 38.592 8.384 15.552 0 29.312-2.944 41.216-8.768s21.056-14.464 27.456-25.856 9.792-24.256 10.304-38.656l-26.624-2.368c-1.408 15.488-6.336 27.2-14.592 35.136s-20.416 11.904-36.608 11.904c-16.832 0-29.056-3.584-36.736-10.816-7.68-7.168-11.52-15.872-11.52-25.984 0-8.832 2.688-16.064 8.192-21.76 5.312-5.696 19.328-11.52 41.856-17.472s38.080-11.2 46.528-15.616c12.16-6.592 21.248-14.912 27.072-25.024s8.768-21.696 8.768-34.88c0-12.992-3.2-25.28-9.6-36.8zM937.6 533.696h-29.376v34.304h29.376v-34.304zM1019.2 533.696h-29.376v34.304h29.376v-34.304z" />
+<glyph unicode="&#xe913;" glyph-name="it-app-apache" d="M896-64c70.848 0 128 57.152 128 128v252.032l-379.968-380.032h251.968zM450.688 704.384c-14.656 0-27.648-6.848-38.848-20.544s-16.896-33.536-16.896-59.648c0-26.112 5.312-45.376 15.872-57.856s23.36-18.688 38.4-18.688c15.296 0 28.352 6.464 39.232 19.392 10.944 12.928 16.384 32.96 16.384 60.032 0 25.856-5.312 45.184-16 58.048s-23.36 19.264-38.144 19.264zM203.2 774.528c-3.584-17.92-8.576-35.776-15.040-53.44l-30.72-82.112h94.912l-29.312 77.44c-8.896 23.552-15.488 42.944-19.84 58.112zM624.64 605.888c-5.888-2.56-10.368-6.272-13.568-11.2s-4.736-10.368-4.736-16.32c0-9.216 3.456-16.832 10.368-22.912s17.152-9.152 30.528-9.152c13.248 0 25.024 2.88 35.328 8.704s17.856 13.696 22.72 23.808c3.712 7.744 5.504 19.2 5.504 34.368v12.544c-12.416-5.12-31.168-9.408-56.128-12.992-14.144-2.048-24.128-4.352-30.016-6.848zM896 960h-768c-70.912 0-128-57.088-128-128v-768c0-70.848 57.088-128 128-128h417.984l478.016 480v416c0 70.912-57.152 128-128 128zM296.384 523.968l-32.64 84.8h-117.056l-30.72-84.8h-39.36l107.52 280h39.872l114.56-280h-42.176zM528.704 570.816c-7.424-16.576-18.24-29.376-32.448-38.208-14.272-8.832-29.12-13.312-44.8-13.312-11.456 0-21.76 2.432-30.784 7.296-9.152 4.864-16.64 10.944-22.464 18.368v-98.688h-34.368v280.448h31.296v-26.368c7.424 10.368 15.68 18.112 25.024 23.232s20.544 7.744 33.792 7.744c17.344 0 32.576-4.48 45.824-13.376s23.232-21.44 30.016-37.696c6.72-16.192 10.112-34.048 10.112-53.376 0-20.736-3.776-39.424-11.2-56.064zM720.512 523.968c-3.584 7.104-5.888 15.488-6.848 25.024-12.736-10.816-25.024-18.496-36.736-22.912-11.84-4.416-24.448-6.656-37.952-6.656-22.272 0-39.36 5.44-51.392 16.32-11.968 10.816-17.984 24.704-17.984 41.664 0 9.92 2.24 19.008 6.784 27.2 4.48 8.192 10.432 14.784 17.728 19.776 7.36 4.928 15.616 8.768 24.768 11.264 6.72 1.792 16.96 3.52 30.592 5.184 27.776 3.328 48.192 7.232 61.312 11.84 0.128 4.736 0.192 7.68 0.192 8.96 0 14.016-3.264 23.872-9.728 29.632-8.768 7.744-21.824 11.648-39.104 11.648-16.192 0-28.096-2.816-35.84-8.512-7.68-5.632-13.376-15.68-17.088-30.080l-33.664 4.544c3.072 14.4 8.064 26.048 15.040 34.88s17.152 15.68 30.4 20.416c13.248 4.736 28.544 7.168 46.080 7.168 17.344 0 31.36-2.048 42.176-6.144 10.816-4.032 18.752-9.216 23.872-15.36 5.056-6.144 8.64-13.952 10.688-23.36 1.152-5.888 1.664-16.448 1.664-31.744v-45.824c0-32 0.768-52.16 2.24-60.672 1.408-8.448 4.288-16.576 8.704-24.32h-35.904zM847.744 523.968h-39.168v39.104h39.168v-39.104zM956.352 523.968h-39.168v39.104h39.168v-39.104z" />
+<glyph unicode="&#xe914;" glyph-name="it-app-jboss" d="M900.032 963.968h-768c-70.912 0-128-57.088-128-128v-768c0-70.848 57.088-128 128-128h417.984l478.016 480v416c0 70.912-57.152 128-128 128zM361.152 556.864c0-40.256-4.864-71.424-14.592-93.504s-25.152-38.976-46.272-50.56c-21.12-11.52-45.888-17.344-74.304-17.344-42.24 0-74.56 12.096-96.96 36.352-22.464 24.32-33.216 60.416-32.32 108.288l57.408 7.872c1.536-36.736 8.448-61.888 20.672-75.456s29.248-20.352 50.88-20.352c16 0 29.76 3.712 41.344 11.008s19.584 17.28 23.936 29.824c4.352 12.608 6.528 32.704 6.528 60.288v331.328h63.68v-327.744zM811.52 480.256c-9.472-19.392-21.248-34.304-35.264-44.8s-31.552-18.432-52.672-23.744c-21.12-5.376-46.912-8.064-77.568-8.064h-183.424v480.96h180.416c36.736 0 66.24-4.864 88.448-14.592s39.616-24.704 52.16-44.928c12.544-20.224 18.88-41.408 18.88-63.488 0-20.544-5.568-39.936-16.768-58.048-11.136-18.176-28.032-32.832-50.496-43.968 29.056-8.512 51.456-23.104 67.072-43.648s23.424-44.864 23.424-72.832c0-22.592-4.736-43.52-14.208-62.848zM707.84 617.728c-16.32 5.312-39.744 8-70.4 8h-111.232v-165.376h119.808c20.544 0 35.008 0.768 43.328 2.304 14.656 2.624 26.88 6.976 36.736 13.12 9.792 6.144 17.856 15.040 24.256 26.752s9.472 25.216 9.472 40.512c0 17.92-4.544 33.536-13.76 46.784-9.152 13.248-21.952 22.528-38.208 27.904zM690.944 688.064c16.192 4.8 28.352 12.8 36.544 24s12.288 25.152 12.288 41.984c0 15.936-3.84 30.016-11.52 42.176-7.616 12.096-18.56 20.416-32.832 24.96-14.208 4.48-38.592 6.72-73.152 6.72h-96.064v-145.344h104c28.224 0 48.448 1.792 60.736 5.504zM900.032-60.032c70.848 0 128 57.152 128 128v252.032l-379.968-380.032h251.968z" />
+<glyph unicode="&#xe915;" glyph-name="it-other-a10bala" d="M399.965 619.287h-172.125l-227.84-387.398 88.343-2.56 51.293 100.119h223.139l41.053-99.98h182.132l-185.996 389.818zM173.009 398.615l82.060 138.612 73.123-138.519-155.183-0.093zM590.988 533.364l100.119 44.87h29.51v-343.692h-85.876v243.665h-42.356zM970.799 578.234h-150.388c-28.207 0-51.153-22.854-51.153-51.107v-241.478c0-28.253 22.9-51.153 51.153-51.153h150.388c28.207 0 51.153 22.854 51.153 51.153v241.524c0 28.207-22.854 51.060-51.153 51.060zM941.196 324.282c0-24.716-20.154-44.87-44.87-44.87-24.762 0-44.916 20.154-44.916 44.87v161.652c0 24.809 20.154 44.87 44.916 44.87 24.716 0 44.87-20.061 44.87-44.87v-161.652z" />
+<glyph unicode="&#xe916;" glyph-name="NFV" d="M176.567 386.414c11.703 14.263 27.721 67.584 27.721 67.584v92.745l-103.424 9.874-100.864-10.898v-92.745c0 0 15.945-53.321 27.794-67.803 39.058-48.421 53.979-63.415 73.070-83.017h1.463v1.097h1.317c18.798 19.529 33.792 34.45 72.923 83.163zM103.131 342.821h-1.024v-0.878h-1.024c-14.775 15.36-26.478 16.311-57.198 54.199-9.143 11.557-21.723 53.248-21.723 53.248v72.485l78.921 8.631 80.896-7.826v-72.485c0 0-12.434-41.618-21.577-52.882-30.72-38.181-42.423-39.205-57.271-54.491zM166.4 505.856l-65.097 6.217-63.415-6.875v-58.368c0 0 10.021-33.499 17.481-42.642 24.576-30.574 34.085-31.451 45.934-43.593h0.878v0.731h0.878c11.776 12.069 21.285 12.946 45.934 43.52 7.461 8.997 17.408 42.642 17.408 42.642v58.368zM901.12 461.605c67.584 0 122.441 22.455 122.441 50.395 0 0.293 0 0.512 0 0.805 0 0.146 0 0.585 0 0.805-1.682 27.209-56.027 48.933-122.441 48.933-67.438-0.146-122.295-22.747-122.295-50.542 0-27.867 54.857-50.395 122.295-50.395zM901.632 450.194c-67.511 0-122.368 22.601-122.368 50.395 0 1.682-0.731 6.949-0.878 10.167v-31.525c0.439-4.754 0.878-9.874 0.878-12.142 0-27.794 54.857-50.469 122.368-50.469 67.584 0 122.368 22.674 122.368 50.469v33.573c0-27.867-54.784-50.469-122.368-50.469zM901.632 401.262c-67.511 0-122.368 22.747-122.368 50.395 0 1.609-0.731 6.583-0.878 9.655v-29.403c0.439-4.827 0.878-9.874 0.878-12.069 0-28.087 54.857-50.542 122.368-50.542 67.584 0.146 122.368 22.528 122.368 50.688v31.817c0-27.794-54.784-50.542-122.368-50.542zM901.632 354.158c-67.511 0-122.368 22.455-122.368 50.395 0 1.536-0.731 6.583-0.878 9.728v-31.013c0.146-1.024 0.439-2.267 0.439-2.999 0-28.014 54.857-50.395 122.295-50.395 67.584 0 122.441 22.601 122.441 50.395 0 0.731 0.219 1.975 0.439 2.999v21.285c0-27.867-54.784-50.395-122.368-50.395zM623.835 922.478c0 20.699-17.701 37.376-39.57 37.376h-94.427c-21.87 0.073-39.643-16.677-39.643-37.376v-54.711h173.568l0.073 54.711zM450.267 712.631c0-20.626 17.701-37.376 39.57-37.376h94.501c21.943 0 39.57 16.75 39.57 37.376v136.411h-173.641v-136.411zM537.015 765.659c8.85 0 16.018-6.729 16.018-15.067s-7.168-14.994-16.018-14.994c-8.704 0-15.872 6.802-15.872 15.067s7.022 14.994 15.872 14.994zM669.769 101.742c0-10.018-56.62-18.139-126.464-18.139s-126.464 8.121-126.464 18.139c0 10.018 56.62 18.139 126.464 18.139s126.464-8.121 126.464-18.139zM418.67 85.504v-121.051c0 0 27.721-28.306 128.512-28.453 106.423 0 122.661 28.453 122.661 28.453v121.051c0 0-68.608-11.849-124.343-11.849-66.487-0.073-126.83 11.849-126.83 11.849zM501.979-5.559v0h-16.018v-16.238l-25.673 24.43 25.673 23.771v-16.165h16.018v-15.799zM540.745-49.737l-25.746 24.283h16.969v15.141h16.896v-15.141h16.969l-25.088-24.283zM578.926 10.313h16.018v16.165l25.673-23.845-25.673-24.283v16.165h-16.018v15.799zM548.864 29.842v-15.067h-16.969v15.067h-16.969l25.673 24.357 25.234-24.357h-16.969zM382.025 805.303l-23.406 53.687c-18.139-7.973-35.621-16.896-52.224-26.99l30.208-50.103c14.482 8.777 29.623 16.603 45.422 23.406zM281.819 742.327l-38.181 44.325c-19.529-16.823-37.742-35.401-54.199-55.296l45.056-37.303c14.409 17.408 30.354 33.646 47.323 48.274zM196.096 638.171l-50.761 29.111c-9.655-16.969-18.286-34.597-25.746-52.663l54.053-22.309c6.51 15.653 13.97 31.086 22.455 45.861zM909.897 592.311l54.126 22.309c-7.607 18.359-16.091 35.986-25.746 52.736l-50.688-29.038c8.411-14.702 15.799-30.062 22.309-46.007zM893.294 732.672c-16.823 20.334-35.547 39.351-55.808 56.466l-37.888-44.544c17.481-14.994 33.865-31.525 48.494-49.225l45.202 37.303zM697.125 807.643c15.799-6.656 31.013-14.263 45.641-22.894l29.55 50.469c-16.75 9.801-34.304 18.578-52.37 26.258l-22.821-53.833zM697.051 74.898l22.967-53.833c18.139 7.753 35.547 16.53 52.297 26.112l-29.257 50.688c-14.702-8.411-29.989-16.165-46.007-22.967zM798.354 136.85l37.595-44.837c19.749 16.603 38.181 34.962 54.93 54.711l-44.544 37.888c-14.702-17.335-30.866-33.426-47.982-47.762zM885.321 239.982l50.542-29.403c9.801 16.75 18.505 34.231 26.185 52.224l-53.833 22.967c-6.656-15.726-14.19-31.013-22.894-45.787zM175.543 285.769l-53.76-22.967c7.753-18.139 16.53-35.547 26.112-52.224l50.615 29.257c-8.485 14.629-16.165 30.062-22.967 45.934zM191.561 148.407c16.018-19.383 33.938-37.595 53.321-54.053l38.034 44.398c-16.823 14.409-32.402 30.208-46.299 46.958l-45.056-37.303zM306.542 49.81c16.75-10.094 34.231-19.090 52.005-26.843l23.406 53.541c-15.506 6.802-30.72 14.629-45.422 23.406l-29.989-50.103z" />
+<glyph unicode="&#xe917;" glyph-name="VNFM" d="M785.481 79.214h-555.081l92.306 294.766h203.703v73.143h-257.39l-78.921-252.050-102.619 420.937v63.561h225.134l81.993-85.797h247.589v73.143h-216.283l-81.993 85.797h-329.582v-141.093l146.578-605.55h655.872l100.718 105.399-52.882 50.615zM1020.050 263.607c-13.239 39.936-56.466 61.952-96.768 48.64-28.965-9.655-47.909-34.816-51.639-63.195l-264.558 0.293c-0.731 4.169-1.609 8.265-2.853 12.288-4.096 12.142-10.971 22.235-19.383 30.501l160.841 265.874c16.018-5.998 33.938-7.168 51.273-1.39 40.155 13.312 61.879 56.686 48.494 96.914-13.312 40.155-56.539 61.952-96.768 48.64-40.082-13.312-61.806-56.686-48.567-96.841 3.73-11.118 9.801-20.846 17.554-28.745l-161.573-266.606c-15.287 5.266-32.037 5.998-48.64 0.585-40.155-13.312-61.952-56.613-48.64-96.768 13.312-40.302 56.613-62.025 96.841-48.64 24.576 8.119 42.13 27.502 49.152 50.469l269.824-0.219c13.312-40.155 56.686-61.879 96.695-48.567 40.302 13.385 62.025 56.686 48.713 96.768z" />
+<glyph unicode="&#xe918;" glyph-name="VNF" d="M706.267 314.368c-29.989 0-55.589-17.627-67.73-42.935l-246.93 81.993c0.805 4.023 1.317 8.119 1.317 12.507 0 12.361-3.365 24.064-8.631 34.523l232.448 198.29c13.166-10.533 29.403-17.042 47.25-17.042 41.545 0 75.41 33.719 75.41 75.337 0 41.545-33.865 75.264-75.41 75.264-41.618 0-75.337-33.719-75.337-75.337 0-11.63 2.779-22.455 7.534-32.256l-233.253-198.949c-12.654 9.728-28.233 15.579-45.275 15.579-41.691 0-75.41-33.646-75.41-75.264 0-41.691 33.719-75.264 75.41-75.264 25.454 0 47.835 12.434 61.513 31.89l251.831-83.749c0-41.618 33.719-75.264 75.264-75.264 41.691 0 75.557 33.646 75.557 75.264-0.073 41.618-33.792 75.41-75.557 75.41zM512 960c-282.258 0-512-229.742-512-512 0-282.331 229.742-512 512-512 282.331 0 512 229.669 512 512 0 282.258-229.669 512-512 512zM512 9.143c-242.030 0-438.857 196.827-438.857 438.857s196.827 438.857 438.857 438.857 438.857-196.827 438.857-438.857-196.827-438.857-438.857-438.857z" />
+<glyph unicode="&#xe919;" glyph-name="VNFC" d="M536.869 360.302c-24.21 0-44.763-14.19-54.638-34.597l-198.729 66.048c0.585 3.218 1.024 6.583 1.024 10.094 0 9.947-2.706 19.383-6.949 27.721l187.246 159.671c10.533-8.485 23.625-13.751 38.034-13.751 33.499 0 60.709 27.209 60.709 60.709s-27.209 60.709-60.709 60.709-60.709-27.282-60.709-60.782c0-9.362 2.194-18.066 5.998-25.966l-187.831-160.183c-10.167 7.826-22.674 12.581-36.425 12.581-33.499 0-60.709-27.136-60.709-60.635s27.209-60.635 60.709-60.635c20.48 0 38.546 10.021 49.518 25.673l202.752-67.365c0-33.573 27.209-60.635 60.709-60.635s60.782 27.063 60.782 60.635c-0.073 33.499-27.209 60.709-60.782 60.709zM1024 599.406l-192.073 99.547-192.146-99.547 192.146-99.621 192.073 99.621zM831.927 660.334l117.321-60.928-117.321-60.928-117.467 60.928 117.467 60.928zM831.927 408.722l-105.253 54.638h-74.679l179.931-93.33 179.931 93.33h-74.679zM831.927 278.894l-105.253 54.784h-74.679l179.931-93.403 179.931 93.403h-74.679zM821.394 137.143c-79.36-79.067-188.782-128-309.394-128-242.030 0-438.857 196.827-438.857 438.857s196.827 438.857 438.857 438.857c97.792 0 187.904-32.549 260.974-86.894h109.861c-93.33 98.304-224.914 160.037-370.834 160.037-282.331 0-512-229.669-512-512 0-282.258 229.669-512 512-512 165.376 0 312.247 79.141 405.87 201.143h-96.475z" />
+<glyph unicode="&#xe91a;" glyph-name="VIM" d="M992.11 325.266l-49.591 20.773c1.097 10.167 3.072 19.968 3.072 30.354 0 10.459-1.829 20.041-3.072 30.135l49.737 20.919c26.917 11.337 39.058 44.178 27.063 73.509l-14.994 36.571c-11.922 29.403-43.447 43.959-70.363 32.549l-49.591-20.773c-9.582 12.361-20.261 23.845-32.11 34.377l22.894 49.079c12.361 26.697-0.366 59.246-28.745 72.85l-35.401 16.75c-28.16 13.531-61.147 2.926-73.435-23.771l-4.169-8.85h-122.88l-4.169 8.923c-12.434 26.697-45.349 37.303-73.509 23.771l-35.401-16.823c-8.046-3.877-14.409-9.435-19.749-15.799h-69.266l-81.993 85.797h-329.655v-141.166l146.578-605.623h394.24c14.043-5.339 28.599-5.12 41.253 0h186.149c14.117-5.705 30.647-6.071 46.007 1.317l35.328 17.115c25.088 11.776 36.864 38.546 30.939 63.049l22.821 23.845-42.423 40.594c9.509 9.070 18.578 18.432 26.77 28.745l49.371-20.919c26.917-11.191 58.514 3.218 70.437 32.622l14.994 36.498c12.142 29.55-0.219 62.098-27.136 73.582zM400.384 396.873c-0.951-6.729-2.048-13.458-2.048-20.48 0-10.459 1.975-20.187 3.072-30.501l-49.664-20.773c-26.917-11.337-39.131-43.886-27.136-73.435l15.141-36.498c11.849-29.403 43.447-43.886 70.29-32.622l49.371 20.626c9.728-12.288 20.48-23.698 32.037-34.231l-22.821-49.079c-2.706-5.778-3.657-11.849-4.096-17.92h-251.611l92.306 294.912h95.159zM841.070 376.247c0-94.574-75.776-171.593-169.033-171.593-93.477 0-169.179 77.019-169.179 171.593 0 7.095 1.243 13.824 2.048 20.699h4.096v22.674c19.017 73.801 84.48 128.366 163.109 128.366 93.184 0 168.96-76.727 168.96-171.739zM715.118 102.034h-10.094c3.218 0.512 6.583 0.512 9.728 1.024l0.366-1.024zM638.683 102.034h-10.094l0.512 1.024c3.145-0.585 6.437-0.585 9.582-1.024zM69.925 702.464h225.207l81.993-85.797h99.035l15.287-32.914c-11.703-10.533-22.382-22.016-32.11-34.377l-49.445 20.699c-26.843 11.337-58.368-3.145-70.217-32.549l-15.067-36.571c-4.242-10.313-4.535-20.846-3.145-30.939h-69.998l-78.921-252.197-102.619 421.010v63.634z" />
+<glyph unicode="&#xe91b;" glyph-name="VDU" d="M153.161 774.875h315.465v-73.143h-315.465v73.143zM153.161 628.59h315.465v-73.143h-315.465v73.143zM360.009 387.438c0-27.146-22.006-49.152-49.152-49.152s-49.152 22.006-49.152 49.152c0 27.146 22.006 49.152 49.152 49.152s49.152-22.006 49.152-49.152zM429.714 180.151h-237.714c-15.799 0-28.599-16.384-28.599-36.571s12.8-36.571 28.599-36.571h237.714c15.799 0 28.599 16.384 28.599 36.571s-12.8 36.571-28.599 36.571zM951.589 118.857h-38.034c-40.009 0-72.411-32.402-72.411-72.485v-12.288h-103.424v377.929h104.96c5.705-34.304 34.158-60.928 70.071-60.928h38.034c40.009 0 72.411 32.402 72.411 72.411v38.034c0 40.009-32.402 72.485-72.411 72.485h-38.034c-40.009 0-72.411-32.402-72.411-72.485v-12.873h-102.546v386.999h105.179c6.363-33.499 34.45-59.392 69.778-59.392h38.034c40.009 0 72.411 32.402 72.411 72.485v37.961c0 40.009-32.402 72.485-72.411 72.485h-38.034c-40.009 0-72.411-32.402-72.411-72.485v-14.482h-119.369v-0.219h-19.822v-423.424h-79.433v406.894c0 57.637-45.568 104.521-101.669 104.521h-418.45c-56.027 0-101.595-46.885-101.595-104.521v-815.031c0-57.563 45.568-104.448 101.595-104.448h418.45c56.101 0 101.669 46.885 101.669 104.521v371.566h79.433v-414.354h19.822v-0.219h122.368c5.413-34.597 34.085-61.513 70.217-61.513h38.034c40.009 0 72.411 32.402 72.411 72.411v37.961c0 40.082-32.402 72.485-72.411 72.485zM548.571 40.521c0-17.335-12.8-31.378-28.526-31.378h-418.45c-15.726 0-28.453 14.043-28.453 31.378v814.958c0 17.335 12.727 31.378 28.453 31.378h418.45c15.726 0 28.526-14.043 28.526-31.378v-814.958z" />
+<glyph unicode="&#xe91c;" glyph-name="host" d="M336.238 774.875h315.465v-73.143h-315.465v73.143zM703.122 960h-418.45c-56.027 0-101.595-46.885-101.595-104.521v-815.031c0-57.563 45.568-104.448 101.595-104.448h418.523c56.101 0 101.669 46.885 101.669 104.521v814.958c-0.073 57.637-45.641 104.521-101.742 104.521zM731.648 40.521c0-17.262-12.8-31.378-28.526-31.378h-418.45c-15.653 0-28.453 14.043-28.453 31.378v814.958c0 17.335 12.727 31.378 28.453 31.378h418.523c15.726 0 28.526-14.043 28.526-31.378v-814.958zM336.238 628.59h315.465v-73.143h-315.465v73.143zM543.086 387.438c0-27.146-22.006-49.152-49.152-49.152s-49.152 22.006-49.152 49.152c0 27.146 22.006 49.152 49.152 49.152s49.152-22.006 49.152-49.152zM612.791 180.151h-237.714c-15.799 0-28.599-16.384-28.599-36.571s12.8-36.571 28.599-36.571h237.714c15.799 0 28.599 16.384 28.599 36.571s-12.8 36.571-28.599 36.571z" />
+<glyph unicode="&#xe91d;" glyph-name="NS" d="M512 960c-282.331 0-512-229.669-512-512 0-239.031 164.864-439.808 386.779-495.835 0.366-0.585 1.097-1.536 1.317-1.755l1.463 1.097c39.278-9.801 80.165-15.506 122.441-15.506 282.258 0 512 229.742 512 512 0 282.331-229.742 512-512 512zM469.358 71.168c-11.995 14.775-29.477 24.869-49.957 24.869-15.799 0-29.769-6.363-41.106-15.726-3.145 6.29-6.363 12.434-9.582 19.237 43.081 19.383 92.891 47.982 145.701 90.478 8.631-4.242 18.066-7.168 28.379-7.168 24.576 0 45.129 14.117 56.247 34.158 135.753 12.507 248.174 65.024 320.366 108.617 4.315-1.17 8.485-2.341 13.093-2.633-5.047-16.969-11.045-33.499-18.066-49.591-56.174-36.279-192.366-123.026-242.249-143.579-53.029-21.87-143.726-44.837-202.825-58.661zM82.798 539.063l4.974-5.705c0.878 0.805 64.219 52.955 183.735 90.77-17.554-46.226-30.574-95.232-35.474-145.92-3.291-34.597-3.584-68.315-1.682-101.083-1.463-0.805-2.779-1.829-4.169-2.779-70.949 47.909-123.904 101.083-152.503 133.047 1.463 10.679 2.926 21.358 5.12 31.671zM512 886.857c77.019 0 149.358-20.041 212.261-55.003-1.536-26.551-4.901-67.218-11.41-115.054-6.29-3.365-12.142-7.314-16.969-12.434-62.757 11.63-133.12 18.871-207.506 16.018-36.059-1.463-69.851-4.681-101.449-9.289-1.243 2.341-2.926 4.389-4.389 6.51 45.787 76.507 97.719 136.777 128 169.179 0.512 0 0.951 0.073 1.463 0.073zM934.107 566.565c10.533-37.303 16.53-76.434 16.677-116.955-4.901 1.17-9.582 2.926-14.775 2.926-35.986 0-65.17-29.111-65.17-65.17 0-7.022 1.902-13.531 4.023-19.822-64.585-37.23-158.427-78.921-268.873-91.355 2.56 2.926 5.193 5.413 7.826 8.338 72.119 80.603 113.737 201.509 137.801 312.174 16.969 2.267 31.525 10.679 41.691 23.406 81.774-24.503 135.241-50.761 140.8-53.541zM292.791 382.318c-1.682 29.403-1.463 59.538 1.463 90.331 4.754 49.591 18.651 97.719 37.157 143.141 24.795 0.512 45.714 14.994 56.247 35.694 32.037 4.974 65.975 8.923 102.985 10.386 67.365 2.56 131.877-4.096 190.098-14.775 2.414-11.703 7.095-22.382 14.921-30.866-22.016-104.96-59.977-219.502-125.44-292.718-4.242-4.681-8.411-8.777-12.654-13.385-4.827 1.243-9.509 2.999-14.702 2.999-25.893 0-47.762-15.36-58.295-37.23-54.857 5.851-106.203 20.992-152.942 41.765 0.146 1.536 0.951 2.926 0.951 4.608 0 26.99-16.384 50.176-39.79 60.050zM457.435 220.233c-40.667-30.208-78.775-51.566-112.128-66.633-13.019 32.841-25.088 69.413-34.523 108.91 45.056-19.602 94.062-34.67 146.651-42.277zM904.119 643.877c-25.893 10.533-59.611 22.747-99.401 34.45-5.12 17.262-16.603 31.305-32.329 39.278 3.803 28.891 6.363 54.93 8.119 76.873 51.712-40.229 94.062-91.648 123.611-150.601zM424.594 878.080c-29.038-34.889-62.683-79.872-93.915-132.389-0.146 0-0.293 0.146-0.439 0.146-34.962 0-62.83-27.575-64.512-62.098-69.632-20.773-122.88-45.861-158.72-66.926 55.369 132.389 173.787 232.082 317.586 261.266zM74.24 425.838c32.475-31.89 75.703-69.339 128.146-104.082 0.219-29.842 20.919-53.906 48.494-61.221 10.386-46.811 24.283-89.893 39.497-128.146-37.595-11.849-61.879-14.263-66.414-14.629-86.967 75.922-143.506 185.417-149.723 308.078zM288.987 70.729c7.68 2.048 15.945 4.535 24.722 7.387 4.608-9.728 9.216-18.944 13.751-27.721-13.239 6.144-26.039 12.873-38.473 20.334zM512 9.143c-10.679 0-21.065 0.878-31.525 1.536 0.366 1.024 0.366 2.048 0.658 3.072 60.709 14.19 155.648 38.107 213.504 62.098 31.086 12.873 89.6 47.177 144.896 81.115-80.384-90.478-197.266-147.822-327.534-147.822z" />
+<glyph unicode="&#xe91e;" glyph-name="it-cluster-vcs" d="M86 960v-80h268v-324h140v-92h-208v346h-286v-874h286v388h208v-34h286v520h-286v-172h-80v322zM580 960v-80h264v-590h60v670zM690 221.422c-34.861-0.001-62.608-12.688-84-38s-32-60.25-32-106c0-43.25 10.721-77.061 32-102s48.95-38 82-38c26.711 0 48.626 7.439 66 22s28.53 36 36 66l-48 18c-4.188-20.125-12.379-34.624-22-44-9.621-9.356-20.644-14-34-14-18.11 0-32.682 7.25-44 22s-16 39.25-16 74c0 32.75 4.512 55.375 16 70s27.551 21.999 46 22c13.356-0.001 24.662-3.75 34-12s15.057-19.75 18-34l50 14c-5.66 21.999-14.682 38.249-26 50-19.015 19.875-43.553 29.999-74 30zM920 221.422c-19.128-0.001-34.474-3.624-48-10s-24.813-15.812-32-28c-7.187-12.188-10-24-10-38 0-21.75 6.72-40.875 22-56 10.866-10.75 31.062-20.625 58-28 20.939-5.751 34.114-9.747 40-12 8.602-3.375 14.548-7.44 18-12 3.452-4.563 6-9.503 6-16 0-10.125-5.795-18.434-14-26-8.206-7.573-19.815-12-36-12-15.28 0-27.002 5.499-36 14-8.998 8.497-15.057 21.875-18 40l-50-6c3.283-30.75 15.135-53.939 32-70 16.865-16.068 40.535-24 72-24 21.618 0 39.512 3.341 54 10 14.487 6.685 26.077 16.253 34 30s12 28.25 12 44c0 17.375-3.379 32.188-10 44s-16.286 21.187-28 28c-11.715 6.813-29.552 13.624-54 20-24.448 6.374-39.662 12.122-46 18-4.98 4.625-8 11.496-8 18 0 7.125 2.68 11.749 8 16 8.262 6.622 19.399 10 34 10 14.148 0 24.926-3.812 32-10s11.85-15.875 14-30l50 2c-0.792 25.25-8.211 46.874-24 62-15.789 15.124-40.761 21.999-72 22zM324 217.422l90-276h54l88 276h-52l-62-204-62 204z" />
+<glyph unicode="&#xe91f;" glyph-name="it-diskraid-hpeva" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106h-832zM76 886h872v-420h-872v420zM128 812v-132h338v132h-338zM546 812v-132h338v132h-338zM126 634v-130h338v130h-338zM546 634v-130h338v130h-338zM68 344v-322h244v54h-180v88h162v54h-162v72h174v54h-238zM334 344l116-322h68l116 322h-70l-78-238-82 238h-70zM758 344l-124-322h68l28 74h128l28-74h70l-128 322h-70zM792 268l44-118h-86l42 118z" />
+<glyph unicode="&#xe920;" glyph-name="it-diskraid-zte" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM142 334.746v-56h142l-160-220v-62h246v58h-172l166 228v52zM388 334.746v-56h90v-282h62v282h90v56zM670 334.746v-338h230v58h-170v92h152v56h-152v76h164v56z" />
+<glyph unicode="&#xe921;" glyph-name="it-firewall-h3c" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-112h352v112h102v-112h160v-56h-18v-176h18v-490h-160v-62h-102v62h-352v-62h-104v62h-178v490h320v176h-320v56h178v112zM488 728v-176h352v176h-352zM768 480c-39.586 0-71.709-16.469-96-46s-36-70.625-36-124c0-50.458 11.837-88.906 36-118s56.47-44 94-44c30.332 0 54.271 7.010 74 24s33.517 43 42 78l-54 20c-4.756-23.479-13.076-39.063-24-50s-24.834-18-40-18c-20.564 0-37.148 8.792-50 26s-18 47.458-18 88c0 38.208 4.955 64.937 18 82s31.050 26 52 26c15.166 0 27.396-4.375 38-14s18.658-23.375 22-40l56 16c-6.427 25.666-17.148 44.291-30 58-21.593 23.187-49.427 36-84 36zM142 474v-322h56v142h112v-142h58v322h-58v-126h-112v126h-56zM504 474c-15.552 0-29.469-3.365-42-10s-22.995-14.407-30-26c-7.005-11.594-12.53-26.604-16-46l50-10c1.414 14 5.445 24.708 12 32s14.746 10 24 10c9.382 0 16.345-3.584 22-10s10-15.209 10-26c0-12.688-4.289-22.344-12-30s-19.348-10.438-34-10l-6-50c9.639 3.062 19.060 4 26 4 10.539 0 18.674-4.959 26-14s10-20.542 10-36c0-16.333-2.353-30.375-10-40s-16.818-14-28-14c-10.411 0-20.674 3.979-28 12s-10.329 20.833-12 36l-54-8c2.699-26.979 13.163-49.302 30-66s38.423-24 64-24c26.99 0 49.878 10.167 68 30s26 43.854 26 72c0 19.396-4.297 34.292-14 48s-21.806 24.062-38 28c27.119 16.771 40 37.854 40 66 0 19.833-6.762 38.25-20 54-16.066 19.25-37.395 28-64 28z" />
+<glyph unicode="&#xe922;" glyph-name="it-other-ibm-blade" d="M136 960c-75.55 0-136-60.45-136-136v-410h1024v410c0 75.55-60.45 136-136 136h-752zM92 872h72v-408h-72v408zM232 872h142c28.247-0.001 50.12-1.312 64-4s27.042-7.469 38-16c10.958-8.532 18.694-19.812 26-34s12-30.381 12-48c0-19.103-4.99-36.050-14-52s-20.578-28.025-36-36c21.753-7.233 38.311-20.566 50-38s16-36.445 16-60c0-18.547-2.451-36.473-10-54s-18.932-31.521-32-42c-13.069-10.479-28.844-17.589-48-20-12.013-1.484-40.058-3.624-86-4h-122v408zM592 872h108l64-278 64 278h108v-408h-68v322l-70-322h-70l-70 322v-322h-66v408zM304 804v-94h48c28.085-0.001 45.181 1.090 52 2 12.338 1.669 20.938 5.934 28 14 7.062 8.068 12 18.832 12 32 0 12.612-3.912 24.117-10 32s-13.987 12.331-26 14c-7.143 0.93-28.071 0-62 0h-42zM304 642v-108h66c25.974 0 43.019 0.331 50 2 10.714 2.223 19.263 7.375 26 16s10 21.534 10 36c0 12.241-2.805 21.468-8 30s-12.179 14.105-22 18c-9.822 3.892-31.207 6-64 6h-58zM396 366v-274h94c35.375 0.256 56.75 0.976 66 2 14.75 1.626 27.937 4.941 38 12 10.062 7.066 18.187 16.186 24 28s8 25.501 8 38c0 15.878-3 28.25-12 40s-23.25 21.136-40 26c11.875 5.37 21.062 13.248 28 24 6.937 10.746 12 23.123 12 36 0 11.872-4.375 22.438-10 32s-11.563 16.24-20 22c-8.438 5.779-19.313 10.208-30 12s-26.25 2-48 2h-110zM452 320h32c26.125 0 42.5 0.64 48 0 9.25-1.126 15.312-4.688 20-10s8-11.494 8-20c0-8.87-2.563-16.56-8-22-5.438-5.427-14.5-8.848-24-10-5.25-0.96-18.375 0-40 0h-36v62zM452 212h44c25.25 0 42.437-1.376 50-4s14-8.24 18-14c4-5.754 6-11.75 6-20 0-9.754-2.813-18.176-8-24-5.188-5.786-11.75-8.464-20-10-5.375-1.024-18-2-38-2h-52v74zM0 74v-2c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v2h-1024z" />
+<glyph unicode="&#xe923;" glyph-name="it-other-secfox" d="M887.994 960h-751.988c-75.59 0-136.006-60.416-136.006-136.006v-751.988c0-75.543 60.416-136.006 136.006-136.006h751.988c75.543 0 136.006 60.463 136.006 136.006v751.988c0 75.59-60.463 136.006-136.006 136.006zM405.923 271.546c-12.567-19.363-30.627-34.49-54.179-45.242-23.505-10.799-49.99-16.198-79.453-16.198-37.329 0-68.608 5.399-93.836 16.337-25.228 10.845-45.009 27.183-59.299 49.059-14.383 21.876-21.923 46.545-22.668 74.147l51.433 4.515c2.467-20.62 8.099-37.609 16.989-50.781 8.89-13.219 22.761-23.924 41.519-32.023 18.758-8.192 39.843-12.288 63.302-12.288 20.806 0 39.191 3.072 55.11 9.309 15.919 6.144 27.788 14.615 35.607 25.46 7.773 10.705 11.636 22.528 11.636 35.328 0 12.847-3.77 24.204-11.264 33.885-7.494 9.635-19.875 17.734-37.097 24.297-11.078 4.329-35.561 10.985-73.402 20.154-37.888 9.030-64.419 17.687-79.593 25.693-19.689 10.38-34.397 23.133-44.032 38.447-9.635 15.267-14.476 32.349-14.476 51.293 0 20.806 5.911 40.262 17.687 58.368 11.823 18.060 29.091 31.837 51.759 41.193 22.807 9.309 48.035 14.010 75.776 14.010 30.58 0 57.53-4.934 80.849-14.755 23.366-9.868 41.286-24.343 53.853-43.473s19.316-40.774 20.247-64.977l-52.317-3.956c-2.839 26.065-12.335 45.754-28.579 59.066-16.198 13.359-40.122 20.015-71.82 20.015-33.001 0-57.065-6.051-72.145-18.153s-22.621-26.671-22.621-43.753c0-14.801 5.353-26.996 16.012-36.538 10.519-9.588 37.888-19.409 82.292-29.417 44.311-10.054 74.752-18.851 91.229-26.298 24.017-10.985 41.705-25.088 53.155-41.984 11.45-16.989 17.129-36.538 17.129-58.647 0.047-22.016-6.237-42.636-18.804-62.092zM852.294 580.841h-223.651v-127.674h193.489v-48.64h-193.489v-187.345h-54.505v412.3h278.156v-48.64z" />
+<glyph unicode="&#xe924;" glyph-name="it-other-segw" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM322 686c50.426 0 88.513-12.744 114-38 25.487-25.257 38.721-59.837 40-102l-80-4c-3.472 23.586-10.581 41.667-22 52s-29.162 13.999-52 14c-23.569-0.001-42.663-4.94-56-16-8.587-7.097-12-16.103-12-28 0-10.854 3.961-20.277 12-28 10.231-9.811 34.536-19.355 74-30 39.464-10.646 69.090-22.624 88-34s33.312-26.275 44-46c10.688-19.725 16-44.986 16-74 0-26.3-7.211-51.039-20-74s-30.614-38.833-54-50c-23.386-11.167-51.104-18-86-18-50.792 0-90.777 13.178-118 40s-42.702 66.652-48 118l78 8c4.75-30.266 15.475-51.806 30-66s33.335-22.001 58-22c26.126-0.001 46.754 7.372 60 20s20 27.092 20 44c0 10.853-4.428 20.382-10 28s-14.115 14.364-28 20c-9.501 3.756-32.2 10.398-66 20-43.484 12.315-72.461 28.049-90 46-24.665 25.257-38 55.681-38 92 0 23.378 6.398 45.648 18 66s28.167 35.354 50 46c21.833 10.645 47.123 16 78 16zM556 678h298v-78h-216v-102h202v-78h-202v-124h224v-78h-306v460z" />
+<glyph unicode="&#xe925;" glyph-name="it-other-zteatca" d="M136 960c-75.55 0-136-60.45-136-136v-410h1024v410c0 75.55-60.45 136-136 136h-752zM122 814h234v-50l-176-218h182v-54h-260v60l168 208h-148v54zM380 814h256v-54h-96v-268h-64v268h-96v54zM678 814h238v-54h-174v-72h162v-54h-162v-88h180v-54h-244v322zM496 384c-38.5 0-70.375-12.688-94-38s-36-60.25-36-106c0-43.25 12.5-77.063 36-102s53.5-38 90-38c29.5 0 54.812 7.438 74 22s31.75 38 40 68l-54 16c-4.625-20.125-11.375-34.625-22-44s-23.25-14-38-14c-20 0-37.5 7.25-50 22s-18 39.25-18 74c0 32.75 7.312 57.375 20 72s27.625 22 48 22c14.75 0 27.687-5.75 38-14s16.75-17.75 20-32l56 12c-6.25 22-15.5 38.25-28 50-21 19.875-48.375 30-82 30zM122 380v-46h82v-228h56v228h80v46h-218zM734 380l-108-274h58l24 62h110l24-62h60l-110 274h-58zM762 316l38-102h-76l38 102zM0 74v-2c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v2h-1024z" />
+<glyph unicode="&#xe926;" glyph-name="it-other-zteips" d="M176 960c-97.115 0-176-78.886-176-176v-672c0-97.114 78.885-176 176-176h672c97.115 0 176 78.886 176 176v672c0 97.114-78.885 176-176 176h-672zM142 920c46.967 0 84-38.355 84-86.003 0-20.058-6.681-37.344-18-52l104-204c2.902 0 5.019 1.984 8 1.984 15.987 0 31.225-4.224 44-12l134 128c-3.301 9.203-4 19.642-4 29.997 0 47.648 37.033 86.003 84 86.003s86-38.355 86-86.003c0-0.64 0.014-1.344 0-1.984l164-76c14.938 13.197 34.634 21.997 56 21.997 46.967 0 86-40.352 86-88 0-47.642-39.033-85.997-86-85.997s-84 38.355-84 85.997c0 2.624-0.224 5.44 0 8l-160 76.006c-15.514-16.762-37.542-25.997-62-25.997-14.090 0-26.299 3.84-38 9.997l-138-132c2.086-7.475 4-15.84 4-24 0-47.642-39.033-85.997-86-85.997s-84 38.355-84 85.997c0 20.64 8.082 39.155 20 54.003l-102 201.997c-3.796-0.64-8.062-1.984-12-1.984-46.967 0-86 38.355-86 85.997 0 47.648 39.033 86.003 86 86.003zM140 324h234v-50.003l-176-216h182v-53.997h-260v57.997l168 208h-148v54.003zM398 324h256v-54.003h-96v-265.997h-64v265.997h-96v54.003zM696 324h238v-54.003h-174v-72h162v-53.997h-162v-86.003h180v-53.997h-244v320z" />
+<glyph unicode="&#xe927;" glyph-name="it-sdn-controller" d="M508 960c-82.558-0.672-166.697-21.188-244-64-247.365-137.005-336.997-448.64-200-696 112.572-203.257 342.286-298.233 558-250l84 146 29.283 49.683-47.283 92.317 52 28c-27.342 23.445-47.521 53.56-60 88l-44-24-54 98 92 50c24.687 87.31 104.927 152 200 152 50.663 0 95.87-19.753 132-50-10.596 39.485-25.3 78.624-46 116-94.189 170.064-270.372 265.479-452 264zM530 862c45.407-1.984 91.792-9.699 134-26l-66-36c-22.418 22.534-44.33 43.274-68 62zM400 848c39.131-26.349 77.86-57.629 114-94l-86-48-70 126c-0.339 0.64 0.362 1.424 0 2 13.85 5.504 27.877 10.038 42 14zM266 784c0.32-0.64 1.711-1.488 2-2l70-126-94-52c-11.828 49.536-16.086 99.133-18 146 12.612 11.942 25.674 23.568 40 34zM766 778c30.756-23.571 58.291-51.565 82-84l-118-66c-19.826 33.114-41.392 64.963-64 94l90 48c3.229 1.792 7.526 5.517 10 8zM584 674c22.436-28.877 42.268-59.046 62-92l-114-64-54 98zM146 642c3.501-27.974 7.145-55.238 14-84l-56-32c7.85 40.659 22.519 79.302 42 116zM388 566l54-98-122-66c-17.597 34.106-31.279 67.754-44 102zM192 458c12.788-34.547 26.288-69.67 44-104l-110-60c-14.57 36.442-26.168 74.317-30 112zM492 378l54-98-106-58c-24.154 28.173-46.514 57.469-68 90zM288 264c21.57-32.525 45.675-59.827 70-88l-102-58c-29.908 23.232-56.84 52.314-80 84zM596 188l70-126c-7.344-2.944-14.551-7.504-22-10-43.856 24.314-86.79 54.854-128 92zM432 98c28.391-25.472 58.222-46.435 88-66-53.331-1.024-106.52 9.274-156 28zM873.145 568.147c-83.828 0-150.949-67.322-150.949-148.794 0-57.709 34.419-105.702 84.1-129.939v-299.699c0-21.075 17.123-37.722 38.815-37.722h56.067c21.692 0 38.815 16.646 38.815 37.722v299.699c49.682 24.237 84.1 72.23 84.1 129.939 0 81.472-67.121 148.794-150.949 148.794zM745.671 57.408h247.663l36.421-118.976h-313.221z" />
+<glyph unicode="&#xe928;" glyph-name="it-server-hpux" d="M0 956v-424h76v186h148v-186h74v424h-74v-166h-148v166h-76zM376 956v-424h76v160h50c34.135 0 59.998 1.945 78 6 13.246 3.282 25.178 9.863 38 20s23.678 24.237 32 42c8.321 17.763 12 39.935 12 66 0 33.788-5.565 60.665-20 82s-32.602 35.628-54 42c-13.926 4.247-44.148 6-90 6h-122zM452 884h36c27.172 0 44.999-0.070 54-2 12.227-2.51 24.018-7.96 32-18s12-24.554 12-40c0-12.55-4.311-22.54-10-32s-11.981-17.56-22-22c-10.020-4.441-30.281-6-60-6h-42v120zM986 554l-28-10-234-190-50 84-22 14-26 2-42-30-176-168-36-14-22 4 6 26 88 120 28 46-6 34-22 6-36-32-170-184-44-24-12 8 2 28 72 98 34 64-8 36-14 10-30-16-102-150-36-64-6-74 20-32 36-8 38 14 78 66 14-54 30-16 50-2 44 26 96 80 124 132 12 2 42-60 4-22-276-316c0 0-8.993-18.503 2-36s8-16 8-16l48 6 238 294 10 2 18-6 70-124 30-6 14 20-4 34-78 122 226 198 30 30-14 32-18 16z" />
+<glyph unicode="&#xe929;" glyph-name="it-storage-ops" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM178 838h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM176 616h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM214 382c47.25 0 85.635-14.688 114-44s42-69.792 42-122c0-51.771-13.854-92.76-42-122s-64.896-44-112-44c-47.688 0-85.854 14.906-114 44s-42 68.958-42 120c0 32.666 4.229 59.833 14 82 7.292 16.333 17.385 31.021 30 44s26.979 21.729 42 28c19.979 8.458 41.896 14 68 14zM832 382c40.25 0 71.656-8.354 92-26s30.979-42.542 32-72l-66-2c-2.771 16.479-8.886 28.781-18 36s-21.771 10-40 10c-18.813 0-33.354-4.271-44-12-6.854-4.959-10-11.688-10-20 0-7.584 1.583-12.604 8-18 8.167-6.854 28.5-14.563 60-22s54.906-16.052 70-24c15.094-7.948 27.468-18.219 36-32s12-31.729 12-52c0-18.375-3.792-33.958-14-50s-25.334-28.198-44-36c-18.667-7.802-42.146-12-70-12-40.542 0-72.271 9.26-94 28s-33.771 46.125-38 82l62 6c3.791-21.146 12.406-36.083 24-46s26.312-16 46-16c20.854 0 37.427 5.177 48 14s16 18.187 16 30c0 7.583-1.552 14.677-6 20s-12.917 10.062-24 14c-7.583 2.625-25.021 7.292-52 14-34.708 8.604-60 19.458-74 32-19.688 17.646-28 38.625-28 64 0 16.333 4.74 31.781 14 46s22.573 24.562 40 32c17.427 7.437 37.354 12 62 12zM420 376h104c39.375 0 66.041-0.792 78-4 18.375-4.813 33.604-15.886 46-32s18-36.479 18-62c0-19.688-2.854-36.583-10-50s-16.99-24.344-28-32c-11.011-7.656-20.625-11.521-32-14-15.459-3.062-38.688-6-68-6h-42v-120h-66v320zM216 326c-26.688 0-49.667-9.698-66-28s-24-45.104-24-82c0-36.313 9.229-63.261 26-82s38.187-28 64-28c25.812 0 45.448 9.406 62 28s26 44.812 26 82c0 36.75-7.886 65.916-24 84s-37.313 26-64 26zM486 322v-92h36c25.521 0 41.396 2.646 50 6s15.114 8.854 20 16c4.885 7.146 8 14.521 8 24 0 11.667-3.146 22.416-10 30s-15.5 12.104-26 14c-7.729 1.458-24.667 2-48 2h-30z" />
+<glyph unicode="&#xe92a;" glyph-name="it-storage-sanswitch-brocade" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM178 838h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM176 616h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM724 376c39.229 0 71.5-10.813 96-34 14.583-13.709 24.708-34.334 32-60l-64-16c-3.792 16.625-11.969 30.375-24 40s-24.792 14-42 14c-23.771 0-43.198-8.938-58-26s-24-43.792-24-82c0-40.542 7.417-68.792 22-86s34.666-26 58-26c17.208 0 31.604 5.062 44 16s20.604 28.521 26 52l64-20c-9.625-35-25.615-61.010-48-78s-51.583-26-86-26c-42.583 0-76.583 14.906-104 44s-42 69.542-42 120c0 53.375 14.437 94.468 42 124s63.083 44 108 44zM164 370h128c25.375 0 43.531 0.115 56-2s24.156-7.292 34-14c9.843-6.709 17.437-14.844 24-26s10-24.146 10-38c0-15.021-3.907-29.459-12-42s-18.146-21.729-32-28c19.541-5.688 33.5-16.292 44-30s16-29.479 16-48c0-14.583-3.219-28.219-10-42s-16.261-23.76-28-32c-11.74-8.24-24.792-14.104-42-16-10.792-1.167-38.729-1.708-80-2h-108v320zM228 316v-74h44c25.229 0 39.875 1.271 46 2 11.083 1.312 19.656 5.656 26 12s10 13.646 10 24c0 9.916-2.531 17.802-8 24s-13.209 10.687-24 12c-6.417 0.729-25.521 0-56 0h-38zM228 190v-86h60c23.333 0 37.729 0.687 44 2 9.625 1.75 17.948 5.219 24 12s10 16.625 10 28c0 9.625-3.334 17.292-8 24s-11.177 10.937-20 14c-8.823 3.062-28.542 6-58 6h-52z" />
+<glyph unicode="&#xe92b;" glyph-name="uep-moc-uca-public" d="M86 960c-47.477 0-86-38.076-86-84v-514c0-45.924 38.523-82 86-82h234v-90h-184v-82h280v172h192v-172h280v82h-184v90h234c47.477 0 86 36.076 86 82v514c0 45.924-38.523 84-86 84h-852zM110 852h804v-454h-804v454zM136 14v-80h752v80h-752z" />
+<glyph unicode="&#xe92c;" glyph-name="uep-topo-commongroup20x20" d="M2 698v-192h96v-320c-55.192-13.323-96-62.716-96-122 0-69.49 56.51-126 126-126s126 56.51 126 126c0 57.76-38.954 107.215-92 122v320h320v-320c-54.028-14.132-94-63.542-94-122 0-69.49 56.51-126 126-126s126 56.51 126 126c0 58.458-39.972 107.868-94 122v320h320v-320c-53.356-14.581-94-64.019-94-122 0-69.49 56.51-126 126-126s126 56.51 126 126c0 58.632-39.727 108.036-94 122v320h96v192h-1024z" />
+<glyph unicode="&#xe92d;" glyph-name="vapel_chgpile" d="M741.841 865.885c0 39.983-32.256 72.239-72.099 72.239h-375.529c-39.983 0-72.239-32.256-72.239-72.239v-58.508h519.82v58.508zM745.472-20.713v2.327c0-0.465-0.093-0.884-0.186-1.164 0.093-0.372 0.186-0.745 0.186-1.164zM218.345-20.713c0 0.465 0.14 0.838 0.186 1.164-0.047 0.372-0.186 0.745-0.186 1.164v-2.327zM840.285 747.753h-98.351v49.105h-519.913v-128.047h519.866v29.137h25.553v-24.902h10.892c-0.605-26.577-5.353-228.492-7.075-279.459-4.561-138.333-7.121-198.796-21.83-231.098-24.25-53.248-103.098-64.698-119.901-66.607v195.072h40.169c39.796 0 72.192 32.349 72.192 72.099v295.331h-519.866v-295.284c0-39.75 32.209-72.099 72.239-72.099h40.076v-283.276c0-3.724 0.605-7.075 1.583-10.473h-99.514c-9.635 0-17.361-7.354-17.873-16.803 0.512-9.356 8.239-16.803 17.873-16.803h491.055c9.495 0 17.315 7.447 17.92 16.803-0.605 9.449-8.425 16.803-17.92 16.803h-99.421c0.977 3.351 1.396 6.749 1.396 10.38v49.105c38.121 7.447 118.551 15.453 154.065 92.346 21.225 46.173 22.295 125.719 24.948 241.478 3.072 134.004 5.958 261.911 6.423 282.484h9.495v24.902h15.919v49.804zM693.62 639.348c9.914 0 18.060-8.052 18.060-18.060 0-9.914-8.145-18.106-18.060-18.106-10.1 0-18.106 8.192-18.106 18.106 0.047 10.007 8.052 18.060 18.106 18.060zM435.852 317.021l30.906 96.815-45.056 11.729 84.294 145.315-23.366-114.502 45.754-20.48-92.532-118.877z" />
+<glyph unicode="&#xe92e;" glyph-name="car" d="M792.529 178.641v-2.932c-1.955-0.093-28.393-4.887-44.544-8.052-12.241 0-203.124-0.326-333.405-0.326-66.979 0-117.9 0.093-120.413 0.326-7.494 0.559-53.76 9.588-55.715 9.961l0.652 3.305c-15.407-15.22-24.948-32.489-23.924-44.963 1.722-22.714 46.685-44.823 62.883-50.223 0.931-0.419 2.7-0.791 4.841-0.977l-0.233 0.279c2.095 1.35 20.62 12.753 29.091 12.753l418.257-0.372c0.093-0.093 6.33-4.375 14.941-9.961l-1.815-2.746c13.917 1.908 24.948 4.096 31.558 6.377 40.96 14.662 41.565 52.317 41.565 52.689-0.652 9.449-10.845 22.481-23.738 34.863zM749.009 218.81c-16.989 4.887-182.737 21.132-236.544 22.947-1.908 0.093-3.91 0.093-6.097 0.093-59.252 0-219.555-23.505-221.184-23.831-42.449-13.731-78.103-59.159-76.288-85.178 1.769-25.507 47.709-50.129 64.186-56.273 12.567-4.701 136.099-10.38 202.426-13.312 21.69-0.977 38.772-1.722 45.847-2.095 2.7-0.233 6.796-0.326 12.288-0.326 56.273 0 211.27 8.471 245.62 21.969 41.612 16.198 43.241 54.877 43.706 67.444 0.605 13.359-43.892 59.578-73.961 68.561zM775.959 87.738c-36.631-13.172-194.42-20.108-242.362-20.108-5.446 0-9.588 0.093-12.288 0.279-6.842 0.559-23.599 1.21-44.823 2.095-69.911 2.886-186.927 7.633-199.727 12.055-12.567 4.329-63.535 27.089-65.536 53.62-1.955 25.135 33.652 67.119 77.824 80.198 1.862 0.186 159.372 21.364 217.74 21.364 2.141 0 4.189-0.093 6.097-0.093 52.829-1.629 216.111-16.291 232.82-20.666 16.524-4.561 72.937-48.826 74.24-72.332 0.559-8.471-5.585-42.775-43.985-56.413zM747.66 171.473c6.33 1.117 38.028 7.168 44.032 8.052-16.989 16.244-38.167 30.767-46.825 33.187-16.57 4.655-179.293 18.897-232.029 20.527-1.908 0.093-3.863 0.093-6.004 0.093-58.135 0-215.412-20.992-216.948-21.225-7.866-2.374-15.546-5.632-22.714-9.775 11.823-1.117 60.090-6.051 66.56-6.703 7.308-0.559 378.321 0 382.045 0.093 12.381 1.443 45.196 5.12 47.709 5.585l0.698-3.863c-3.025-0.559-46.266-5.353-48.175-5.539-10.193 0-169.658-0.372-279.412-0.372-56.972 0-100.585 0.093-103.145 0.372-7.401 0.652-68.655 6.796-69.26 6.842l0.186 1.815c-9.263-5.492-17.687-12.195-24.902-19.316 3.863-0.745 47.942-9.216 54.97-9.868 7.354-0.512 448.791 0.093 453.213 0.093zM311.761 94.068c-5.073 0-16.477-6.051-23.319-10.1 33.327-3.724 131.863-7.727 188.276-10.054 21.271-0.977 37.981-1.629 44.87-2.001 2.653-0.233 6.703-0.326 12.009-0.326 44.172 0 150.807 4.934 208.617 13.079-6.935 4.468-12.335 8.145-13.871 9.309l-416.582 0.093zM1016.367 217.6c-1.303 12.986-5.26 37.841-5.26 44.265 0 6.47-15.593 79.5-15.593 79.5l-10.426 24.669-28.625 27.415-40.401 26.065-32.489 14.383-14.429 10.426-8.518 14.615c6.749 0.465 58.321 4.329 64.372 8.099 6.423 4.003 10.752 5.772 10.147 7.121-0.745 1.35-4.375 20.34-9.123 24.716-4.794 4.422-38.26 10.799-43.008 10.519-4.841-0.326-8.099-0.326-8.099-0.326s-11.543-17.268-10.193-27.415c1.303-10.193 2.048-12.567 2.048-12.567l-9.402-4.655-1.21 2.001-20.852 29.975-33.792 55.994-27.415 39.052-24.809 18.292-11.683 7.82c0 0-129.117 13.731-221.044 12.288-102.54-1.722-210.851-12.847-210.851-12.847l-8.425-6.051-20.806-19.084-84.759-103.331c-5.399-7.727-10.193-13.731-14.941-19.409l-10.938 4.98c0 0 0.745 2.374 2.001 12.567 1.35 10.147-10.193 27.415-10.193 27.415s-3.351 0-8.099 0.326c-4.748 0.419-38.26-6.051-43.008-10.426-4.748-4.422-8.425-23.412-9.123-24.762s3.724-3.025 10.147-7.121c6.33-4.003 62.883-8.239 64.512-8.332-4.143-4.655-8.332-9.169-12.986-14.289-11.683-13.033-37.841-23.459-46.918-30.022-9.123-6.563-69.027-41.658-69.027-53.434 0-11.683-26.065-98.956-26.065-98.956s0-19.549-1.303-27.322c-1.303-7.866-1.303-43.008-2.56-57.344-1.303-14.476 5.167-118.598 5.167-118.598l4.608-10.985c-0.559-7.494-0.279-22.807 10.333-27.276 1.303-0.465 4.003-1.303 7.82-2.513 1.164-4.329 26.81-33.187 40.076-34.956 13.591-1.955 43.38-3.212 51.153-3.212s18.665 8.657 21.923 9.914c0.047 0 0 0.14 0 0.14 39.657-9.263 74.473-16.756 77.824-15.965 7.773 2.001 12.335 3.91 18.758 3.91 6.516 0 213.085-17.455 231.191-16.756 18.153 0.652 286.255 16.756 296.029 16.756 9.635 0 10.333-0.652 20.015-2.56 4.608-0.977 44.218 6.982 86.807 16.943-0.698-2.095-1.024-5.585 1.862-8.611 4.608-4.608 59.625 1.908 69.958 5.167 10.38 3.212 31.092 30.348 31.092 30.348l-9.216-2.234c7.447 2.42 12.847 4.608 15.034 6.191 15.546 10.985 14.336 23.971 14.336 23.971l-3.351-0.605 6.516 8.378c-0.047 0.047 6.516 144.756 5.213 157.743zM983.599 89.833c-3.91-8.657-33.745-29.929-43.38-33.373-9.681-3.444-112.035-23.040-115.433-22.854-3.584 0.326-12.521 8.099-14.057 14.569-1.583 6.516 25.321 40.96 34.444 47.709 9.123 6.703 94.72 36.538 108.218 41.705 13.545 5.167 40.401 22.854 40.401 22.854s3.537-40.215-10.193-70.609zM781.079 79.639c-37.283-14.615-198.191-22.249-247.063-22.249-5.539 0-9.728 0.093-12.614 0.279-6.982 0.465-24.111 1.164-45.754 2.234-71.215 3.165-190.511 8.751-203.636 13.498-12.753 4.841-64.652 30.208-66.7 59.671-1.955 28.020 34.257 74.705 79.313 89.228 1.908 0.279 162.49 23.971 222.022 23.971 2.188 0 4.282-0.093 6.237-0.186 53.853-1.815 220.3-18.013 237.382-23.087 30.999-9.169 77.545-55.855 76.893-72.425-0.419-13.172-2.141-53.76-46.080-70.935zM841.356 304.221c8.844 5.818 132.841 49.338 132.841 49.338s12.428-32.442 13.452-39.331c0.977-6.842-3.398-33.14-6.516-37.004-3.025-3.724-35.933-26.345-40.215-26.95-4.236-0.838-20.852 8.564-24.017 8.564-2.932 0-55.808-16.896-75.729-19.363-20.015-2.7-57.204 16.57-57.204 16.57s48.593 42.403 57.391 48.175zM288.861 551.657c17.687 11.776 42.915 24.157 60.556 26.298 0 0 56.739 9.961 143.22 12.567l-0.047 0.326c12.055 0.233 23.692 0.326 34.956 0.279 11.264 0.047 22.807 0 34.816-0.279l-0.093-0.326c86.435-2.607 143.081-12.567 143.081-12.567 17.734-2.095 43.008-14.476 60.742-26.298l52.317-59.206c0-10.705-3.677-19.875-14.476-19.875l-281.367 0.652-281.414-0.652c-10.705 0-14.476 9.123-14.476 19.875l62.185 59.206zM45.708 313.763c1.024 6.842 14.895 40.96 14.895 40.96s126.836-45.568 135.68-51.34c8.844-5.818 57.391-48.361 57.391-48.361s-37.143-19.037-57.111-16.57c-19.968 2.56-72.797 19.503-75.823 19.503-2.979 0-19.689-9.263-24.017-8.657-4.282 0.884-41.425 22.249-44.451 26.065-3.025 3.77-7.54 31.651-6.563 38.4zM33.932 158.301c0 0 26.95-17.78 40.401-22.807 13.452-5.12 99.049-34.909 108.218-41.705s36.073-41.239 34.444-47.756c-1.583-6.423-10.519-14.196-14.010-14.476-3.444-0.279-105.798 19.27-115.479 22.761-9.728 3.537-39.471 24.855-43.334 33.466-13.731 30.441-10.24 70.516-10.24 70.516z" />
+<glyph unicode="&#xe92f;" glyph-name="chgpile" d="M286.627 796.579h521.263v-128.372h-521.263v128.372zM807.889 865.792c0 40.029-32.396 72.378-72.378 72.378h-376.553c-39.936 0-72.425-32.303-72.425-72.378v-58.647h521.309v58.647zM811.473-22.202c0-0.372 0.093-0.791 0.093-1.21v2.607c0-0.605-0.093-0.977-0.093-1.396zM282.996-23.412c0 0.512 0.14 0.977 0.14 1.21 0 0.372-0.14 0.791-0.14 1.35v-2.56zM793.46-5.26h-99.84c0.977 3.258 1.536 6.842 1.536 10.473v284.067h40.355c39.889 0 72.378 32.396 72.378 72.471v296.029h-521.309v-296.029c0-39.983 32.442-72.378 72.425-72.378h40.308v-284.16c0-3.491 0.512-7.075 1.536-10.287h-99.747c-9.635 0-17.361-7.447-17.967-16.989 0.652-9.309 8.332-16.803 17.967-16.803h492.358c9.542 0 17.315 7.494 18.013 16.803-0.698 9.449-8.425 16.803-18.013 16.803zM759.529 638.557c9.914 0 18.060-8.099 18.060-18.153 0-9.961-8.145-18.106-18.060-18.106-10.007 0-18.199 8.099-18.199 18.106 0.14 10.054 8.239 18.153 18.199 18.153zM501.062 315.345l31.046 97.094-45.242 11.543 84.48 145.873-23.273-114.828 45.708-20.527-92.719-119.156z" />
+<glyph unicode="&#xe930;" glyph-name="chgposition" d="M550.959 396.195c-9.635 1.815-28.998 2.746-58.089 2.746h-39.005v-113.478h44.172c31.837 0 53.108 2.095 63.86 6.284 10.705 4.189 19.084 10.705 25.181 19.642s9.169 19.27 9.169 31.092c0 14.569-4.329 26.531-12.8 35.98-8.518 9.449-19.363 15.36-32.489 17.734zM977.455 564.364h-930.909c-25.693 0-46.545-20.852-46.545-46.545v-488.727c0-25.74 20.852-46.545 46.545-46.545h930.909c25.74 0 46.545 20.806 46.545 46.545v488.727c0 25.74-20.806 46.545-46.545 46.545zM666.112 281.647c-8.844-16.71-20.294-29.929-33.932-39.471s-27.695-15.825-41.751-18.897c-19.27-3.817-47.244-5.725-83.782-5.725h-52.783v-150.807h-80.71v399.779h129.536c49.152 0 81.129-2.001 96.023-6.004 22.9-6.004 42.077-19.037 57.53-39.145s23.18-45.987 23.18-77.824c0.047-24.529-4.422-45.196-13.312-61.905z" />
+<glyph unicode="&#xe931;" glyph-name="chgstation" d="M667.741 568.087h-638.697v138.799l638.697 11.171zM995.002 520.471l-618.17 0.652-347.788 35.468h638.697zM995.002 533.783l-327.261 34.304v149.969l327.261-53.388zM150.761 547.328h63.86v-600.111h-63.86v600.111zM635.811 547.328h63.814v-600.111h-63.814v600.111zM348.393 542.208h63.86v-503.948h-63.86v503.948zM853.085 525.824h63.86v-487.564h-63.86v487.564zM475.881 199.727h71.075v-161.466h-71.075v161.466zM739.142 199.727h71.075v-161.466h-71.075v161.466zM285.091 183.622l-24.716-23.645v-160.954h17.594l26.205 23.18v161.42zM834.001 144.803l-24.716-23.599v-161.001h17.641l26.159 23.18v161.42z" />
+<glyph unicode="&#xe932;" glyph-name="common_dc" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h768c70.912 0 128 57.088 128 128v768c0 70.912-57.088 128-128 128h-768zM266.182 887.277h490.182c43.596 0 80-32.73 80-72.736v-738.906c0-40-36.404-72.723-80-72.723h-490.182c-43.596 0-78.545 32.723-78.545 72.723v738.906c0 40.006 34.95 72.736 78.545 72.736zM667.636 770.912c-41.36 0-73.529-12.877-98.909-37.818-25.38-24.947-37.818-59.635-37.818-104.73 0-42.63 12.572-77.242 37.818-101.818 25.246-24.582 56.788-34.912 96-34.912 31.691 0 59.387 5.952 80 20.365 20.613 14.355 34.773 37.338 43.636 66.906l-58.182 14.554c-4.969-19.846-11.859-34.4-23.273-43.642s-26.336-11.635-42.182-11.635c-21.486 0-38.935 5.824-52.364 20.358-13.429 14.547-20.364 38.483-20.364 72.736 0 32.275 6.734 55.398 20.364 69.811 13.63 14.419 31.929 23.277 53.818 23.277 15.846 0 29.648-3.456 40.727-11.635 11.078-8.128 18.326-20.864 21.818-34.912l58.182 14.547c-6.715 21.683-17.117 37.869-30.545 49.453-22.56 19.59-52.605 29.094-88.727 29.094zM242.909 765.088v-270.547h113.455c22.023 0 39.203 1.984 52.364 5.824 17.591 5.184 30.387 14.042 40.727 23.277 13.697 12.198 24.614 26.835 32 46.547 6.042 16.141 8.727 35.885 8.727 58.182 0 25.382-2.282 46.688-8.727 64-6.446 17.306-16.737 31.68-29.091 43.635-12.355 11.949-26.314 21.504-43.636 26.182-12.892 3.456-33.608 2.88-58.182 2.88h-107.636zM302.545 721.446h26.182c24.306 0 41.129-1.216 49.455-2.88 11.146-2.24 21.839-8.256 29.091-14.541 7.251-6.272 10.517-14.976 14.545-26.182 4.028-11.213 7.273-25.6 7.273-46.554 0-20.941-3.244-37.318-7.273-49.446-4.029-12.134-8.167-20.89-14.545-26.189-6.379-5.312-15.059-9.414-24.727-11.629-7.386-1.728-19.712-2.88-36.364-2.88h-43.636v180.365zM272 360.717c-15.139 0-27.636-10.374-27.636-23.264 0-12.902 12.498-23.277 27.636-23.277h485.818c15.139 0 27.636 10.374 27.636 23.277 0 12.89-12.498 23.264-27.636 23.264h-485.818zM272 226.899c-15.139 0-27.636-10.381-27.636-23.27 0-12.896 12.498-23.27 27.636-23.27h485.818c15.139 0 27.636 10.374 27.636 23.27 0 12.89-12.498 23.27-27.636 23.27h-485.818z" />
+<glyph unicode="&#xe933;" glyph-name="common_ncd" d="M152 960c-84.32 0-152-67.68-152-152v-720c0-84.32 67.68-152 152-152h720c84.32 0 152 67.68 152 152v720c0 84.32-67.68 152-152 152zM104 794h98l202-264v264h94v-302c-17.538 5.098-37.024 8-56 8-37.084 0-71.491-11.742-102-30l-144 186v-258h-92zM456 408.664c40.013 0 73.010-10.353 98-34 14.874-13.982 26.562-33.824 34-60l-66-16c-3.868 16.956-9.729 30.18-22 40-12.272 9.825-28.448 14-46 14-24.246 0-44.902-8.593-60-26-15.098-17.401-22-45.029-22-84 0-41.357 7.125-72.45 22-90s36.2-24 60-24c17.552 0 31.356 4.844 44 16s20.496 28.050 26 52l64-20c-9.818-35.705-25.168-60.673-48-78s-50.896-28-86-28c-43.434 0-80.036 16.33-108 46-27.965 29.676-42 68.532-42 120 0 54.437 13.887 97.879 42 128s64.186 44 110 44zM646 402.664h122c27.221 0 47.72 0.168 62-4 19.188-5.652 34.315-17.573 48-32s24.86-31.105 32-52c7.14-20.901 10-47.359 10-78 0-26.924-3.307-50.515-10-70-8.181-23.796-20.828-41.27-36-56-11.454-11.156-26.514-19.754-46-26-14.577-4.63-33.606-8-58-8h-124zM712 348.664v-216h50c18.445 0 31.819-0.055 40 2 10.71 2.672 18.934 7.606 26 14s13.537 17.345 18 32c4.463 14.65 6 34.714 6 60s-1.538 44.464-6 58c-4.463 13.536-11.968 24.413-20 32-8.033 7.582-17.654 13.317-30 16-9.223 2.341-27.077 2-54 2z" />
+<glyph unicode="&#xe934;" glyph-name="common_ncd_break" d="M820 960l-40-4 12-66 40 4-12 66zM678 938c-39.083 0-68-30.966-68-70 0-39.021 28.917-70 68-70 10.831 0 22.823 1.648 32 6l48-46 36 38-48 48c2.62 7.392 4 15.725 4 24 0 39.034-32.916 70-72 70zM948 916l-90-60 30-46 90 62-30 44zM150 862c-84.081 0-150-66.045-150-150v-626c0-83.962 65.919-150 150-150h628c84.081 0 150 66.038 150 150v420c-97.009-35.552-219.538-4.931-304 82-79.068 81.382-102.955 187.984-68 274h-406zM1020 792l-66-12 4-40 66 12-4 40zM662 770l-66-12 4-38 66 10-4 40zM858 742l-38-38 38-36c-2.531-7.27-6-15.866-6-24 0-39.027 30.916-70 70-70s72 30.973 72 70c0 39.027-32.917 72-72 72-10.992 0-20.719-3.507-30-8l-34 34zM732 700l-90-62 28-44 92 58-30 48zM104 672h92l190-232v232h88v-266c-16.509 4.523-34.138 8-52 8-34.907 0-67.282-9.908-96-26l-136 164v-228h-86v348zM826 616l-40-2 10-66 40 4-10 64zM436 362c37.664 0 68.477-9.161 92-30 14.001-12.316 24.999-30.929 32-54l-62-14c-3.641 14.94-10.449 27.349-22 36-11.552 8.66-25.478 12-42 12-22.823 0-41.788-8.66-56-24-14.212-15.33-22-39.655-22-74 0-36.445 7.998-62.541 22-78 14.002-15.463 33.597-22 56-22 16.522 0 28.098 4.188 40 14 11.901 9.831 20.819 24.9 26 46l60-18c-9.241-31.46-24.508-52.727-46-68-21.493-15.263-46.956-24-80-24-40.885 0-75.677 13.848-102 40s-40 60.647-40 106c0 47.971 13.537 85.458 40 112s60.875 40 104 40zM614 356h116c25.623 0 44.558-0.525 58-4 18.062-4.961 31.118-15.279 44-28 12.881-12.707 23.279-27.585 30-46s10-40.996 10-68c0-23.724-3.7-44.832-10-62-7.701-20.972-19.719-37.012-34-50-10.782-9.827-23.658-16.496-42-22-13.722-4.047-33.037-8-56-8h-116v288zM676 308v-190h48c17.362 0 30.299 0.237 38 2 10.081 2.381 17.349 6.368 24 12 6.651 5.637 11.799 15.088 16 28s6 31.719 6 54c0 22.286-1.8 38.074-6 50-4.201 11.936-10.439 21.316-18 28s-16.379 11.634-28 14c-8.681 2.095-26.657 2-52 2h-28z" />
+<glyph unicode="&#xe935;" glyph-name="common_sc" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h768c70.912 0 128 57.088 128 128v768c0 70.912-57.088 128-128 128h-768zM192 814h628c26.012 0 49.542-11.019 68-26 22.109-17.944 38-42.938 38-72v-380c0-53.325-48.83-96-106-96h-252c13.755-26.81 28.292-66.589 12-86-28.199-33.594-107.060-33.030-136 0-16.62 18.976-2.325 59.030 10 86h-262c-57.17 0-104 42.675-104 96v380c0 29.062 13.891 54.056 36 72 18.458 14.981 41.988 26 68 26zM308 732c-31.688 0-57.594-4.438-80-14s-40.094-23.719-52-42c-11.906-18.282-18-39-18-60 0-32.625 12.687-59.313 38-82 18-16.125 49.375-28.938 94-40 34.687-8.625 58.25-14.625 68-18 14.25-5.063 22.281-11.156 28-18s10-16.25 10-26c0-15.188-6.407-28.656-20-40s-35.188-16-62-16c-25.313 0-45.094 5.25-60 18s-25.125 32.812-30 60l-80-8c5.437-46.125 22.062-79.906 50-104s67.875-36 120-36c35.812 0 66 3.969 90 14s42.875 25.375 56 46c13.125 20.625 18 42.375 18 66 0 26.062-5.032 48.281-16 66s-26.594 31.781-46 42c-19.407 10.219-49.5 20.437-90 30s-65.5 19.187-76 28c-8.25 6.937-12 14.25-12 24 0 10.687 5.187 19.625 14 26 13.687 9.937 31.812 16 56 16 23.437 0 40.281-4.719 52-14s20.437-24.813 24-46l82 4c-1.313 37.875-13.844 67.312-40 90s-66.25 34-118 34zM728 732c-57.75 0-104.563-18.032-140-56s-54-91.375-54-160c0-64.875 18.75-116.594 54-154s79.25-56 134-56c44.25 0 81.218 10.156 110 32s49.625 55 62 100l-80 26c-6.938-30.188-20.063-51.938-36-66s-33.875-22-56-22c-30 0-55.25 11.875-74 34s-28 59.875-28 112c0 49.125 10.969 84.062 30 106s43.437 32 74 32c22.125 0 40.531-5.625 56-18s25.125-28.625 30-50l82 20c-9.375 33-23.25 58.375-42 76-31.5 29.812-71.563 44-122 44zM418 146c1.096-8.128 5.046-14.406 10-20 35.944-40.614 134.977-41.312 170 0 4.685 5.504 7.107 12.186 8 20 62.661-8.262 104-25.222 104-44 0-27.11-88.3-48-198-48s-200 20.89-200 48c0 18.778 43.339 35.738 106 44z" />
+<glyph unicode="&#xe936;" glyph-name="it" d="M256 860v-834h-256v-90h1034v90h-256v252h-400v96h400v108h-400v96h400v282h-522z" />
+<glyph unicode="&#xe937;" glyph-name="it-app" d="M132 964c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM516 884c203.792 0 370-166.208 370-370s-166.208-372-370-372c-203.792 0-370 168.208-370 372s166.208 370 370 370zM516 778c-147.271 0-266-116.729-266-264s118.729-266 266-266c147.271 0 266 118.729 266 266s-118.729 264-266 264zM480 674h68l128-322h-70l-28 74h-128l-26-74h-68l124 322zM514 598l-44-118h88l-44 118zM1028 320l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe938;" glyph-name="it-app-bind" d="M132 964c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM114 874h226c44.738 0 78.016-2.249 100-6s40.644-10.174 58-22c17.355-11.837 32.429-28.328 44-48 11.57-19.662 17.999-41.566 18-66-0.001-26.476-7.73-49.889-22-72s-33.574-38.945-58-50c34.453-10.003 61.487-27.826 80-52 18.512-24.174 27.999-53.345 28-86-0.001-25.716-6.045-49.701-18-74s-29.302-43.475-50-58c-20.698-14.535-45.661-24.655-76-28-19.027-2.084-65.236-1.479-138-2h-192v564zM228 780v-130h74c44.481 0 73.201 1.062 84 2 19.541 2.292 34.815 8.809 46 20 11.184 11.18 16 25.745 16 44 0 17.484-4.358 31.070-14 42s-24.974 17.687-44 20c-11.314 1.25-42.263 2-96 2h-66zM228 556v-152h106c41.139 0 66.944 1.708 78 4 16.969 3.126 31.329 10.038 42 22 10.67 11.951 16 27.942 16 48 0 16.974-5.773 32.174-14 44-8.228 11.826-18.445 20.592-34 26-15.556 5.418-50.062 8-102 8h-92zM1028 320l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe939;" glyph-name="it-app-dns" d="M132 964c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM836 820c41.156 0 73.198-11.587 94-34s30.956-50.584 32-88l-66-4c-2.833 20.931-8.68 34.831-18 44s-23.361 13.999-42 14c-19.236-0.001-33.115-4.181-44-14-7.009-6.298-12-15.442-12-26 0-9.632 3.439-17.147 10-24 8.35-8.706 29.791-18.553 62-28s54.566-17.905 70-28c15.433-10.095 27.276-24.496 36-42s14-40.253 14-66c0-23.339-5.562-43.625-16-64s-24.913-36.090-44-46c-19.087-9.91-43.519-16-72-16-41.455 0-71.782 12.198-94 36s-35.676 58.433-40 104l64 8c3.877-26.858 12.145-45.404 24-58s27.869-20 48-20c21.324 0 37.189 6.79 48 18 10.811 11.207 16 22.996 16 38 0 9.632-3.452 19.239-8 26s-10.667 10.998-22 16c-7.754 3.331-26.414 9.479-54 18-35.49 10.928-59.685 24.071-74 40-20.131 22.413-30 49.769-30 82 0 20.746 4.531 39.94 14 58s22.18 32.553 40 42c17.819 9.446 38.799 14 64 14zM60 814h120c27.288 0 49.685-2.817 64-8 19.236-7.040 34.281-20.033 48-38s24.842-39.975 32-66c7.157-26.025 10-57.843 10-96 0-33.527-3.29-61.735-10-86-8.202-29.637-18.79-53.662-34-72-11.482-13.892-26.466-26.22-46-34-14.614-5.742-35.545-8-60-8h-124v408zM392 814h64l134-272v272h62v-408h-66l-132 266v-266h-62v408zM126 744v-270h50c18.49 0 31.798 1.411 40 4 10.736 3.331 18.917 10.035 26 18s13.526 19.755 18 38c4.473 18.246 6 44.511 6 76s-1.527 55.144-6 72c-4.474 16.855-11.948 30.553-20 40s-17.623 14.665-30 18c-9.245 2.596-27.010 4-54 4h-30zM1028 320l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe93a;" glyph-name="it-app-ems" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM816 788c37.375 0 65.109-7.615 84-24s29.052-38.646 30-66l-60-4c-2.573 15.302-9.537 27.297-18 34s-21.073 10-38 10c-17.469 0-30.115-2.823-40-10-6.365-4.604-10-12.281-10-20 0-7.042 2.042-12.99 8-18 7.583-6.365 26.75-13.094 56-20s51.984-12.62 66-20c14.015-7.38 24.078-17.203 32-30s12-29.177 12-48c0-17.063-4.521-33.104-14-48s-22.667-26.755-40-34c-17.334-7.245-40.136-10-66-10-37.646 0-65.823 8.599-86 26s-32.073 42.687-36 76l58 6c3.521-19.636 11.234-34.792 22-44s25.719-14 44-14c19.364 0 34.182 3.807 44 12s14 19.031 14 30c0 7.042-1.87 13.057-6 18s-11.708 8.344-22 12c-7.042 2.437-22.948 7.771-48 14-32.229 7.989-55 16.354-68 28-18.281 16.385-28 36.437-28 60 0 15.166 5.401 30.797 14 44s19.818 23.093 36 30c16.182 6.906 37.114 10 60 10zM86 782h220v-50h-160v-66h150v-50h-150v-80h166v-52h-226v298zM364 782h90l54-202 52 202h90v-298h-56v236l-58-236h-58l-58 236v-236h-56v298zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe93b;" glyph-name="it-app-mediator" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM158 812h112l66-250 66 250h110v-366h-68v288l-72-288h-72l-72 288v-288h-70v366zM586 812h272v-62h-198v-80h184v-62h-184v-100h206v-62h-280v366zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe93c;" glyph-name="it-app-ntp" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM58 810h68l142-272v272h64v-408h-70l-140 266v-266h-64v408zM382 810h274v-70h-102v-338h-70v338h-102v70zM702 810h112c42.436-0.001 69.112-1.922 82-6 19.803-6.114 36.64-19.532 50-40s20-47.585 20-80c0-25.007-4.299-44.959-12-62s-16.134-32.275-28-42c-11.867-9.724-25.741-14.851-38-18-16.66-3.891-40.409-6-72-6h-44v-154h-70v408zM772 740v-116h38c27.505 0 44.727 3.734 54 8 9.273 4.259 16.735 10.923 22 20s8 19.96 8 32c0 14.818-4.613 26.368-12 36s-16.684 15.592-28 18c-8.33 1.848-24.853 2-50 2h-32zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe93d;" glyph-name="it-app-ota" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM202 816c48.314 0 86.996-18.769 116-56 29.003-37.232 42-87.687 42-154 0-65.757-13.221-118.861-42-156s-67.835-54-116-54c-48.761 0-87.221 17.046-116 54s-44 89.169-44 154c0 41.491 6.009 75.845 16 104 7.456 20.745 17.101 39.514 30 56s26.641 28.035 42 36c20.429 10.743 45.308 16 72 16zM388 810h262v-70h-98v-338h-66v338h-98v70zM786 810h70l132-408h-72l-28 92h-132l-26-92h-72l128 408zM202 746c-27.289-0.001-49.299-10.754-66-34-16.701-23.247-26-59.137-26-106 0-46.123 8.851-80.199 26-104 17.148-23.803 39.606-36 66-36s47.075 10.383 64 34c16.924 23.617 26 60.766 26 108 0 46.678-7.523 81.031-24 104s-38.712 33.999-66 34zM820 714l-44-150h90l-46 150zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe93e;" glyph-name="it-app-tomcat" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM596 816c50.805-0.001 92.27-16.028 124-50 18.886-20.085 32.556-50.396 42-88l-82-22c-4.911 24.358-14.419 43.897-30 58-15.582 14.101-35.714 21.999-58 22-30.785-0.001-54.83-13.002-74-38s-30-66.020-30-122c0-59.399 11.113-100.787 30-126s41.781-38 72-38c22.286 0 41.946 7.975 58 24s27.012 41.6 34 76l82-30c-12.465-51.279-33.010-89.108-62-114s-65.428-38-110-38c-55.149 0-100.493 21.374-136 64s-54 102.072-54 176c0 78.201 18.304 138.733 54 182s81.829 63.999 140 64zM32 808h330v-80h-122v-390h-84v390h-124v80zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe93f;" glyph-name="it-app-trend" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM32 808h330v-80h-122v-390h-84v390h-124v80zM416 808h126l74-320 76 320h126v-470h-78v370l-84-370h-80l-82 370v-370h-78v470zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe940;" glyph-name="it-app-tsm" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM450 816c41.156 0 73.198-11.587 94-34s30.956-50.584 32-88l-66-4c-2.833 20.931-8.68 34.831-18 44s-23.361 13.999-42 14c-19.236-0.001-35.115-4.181-46-14-7.009-6.298-10-15.442-10-26 0-9.632 3.439-17.147 10-24 8.35-8.706 29.791-18.553 62-28s54.566-17.905 70-28c15.433-10.095 27.276-24.496 36-42s14-40.253 14-66c0-23.339-5.562-43.625-16-64s-24.913-36.090-44-46c-19.087-9.91-43.519-16-72-16-41.455 0-71.782 12.198-94 36s-35.676 58.433-40 104l64 8c3.877-26.858 12.145-45.404 24-58s27.869-20 48-20c21.324 0 37.189 6.79 48 18 10.811 11.207 16 22.996 16 38 0 9.632-3.452 19.239-8 26s-10.667 10.998-22 16c-7.754 3.331-26.414 9.479-54 18-35.49 10.928-59.685 24.071-74 40-20.131 22.413-30 49.769-30 82 0 20.746 4.531 39.94 14 58s22.18 32.553 40 42c17.819 9.446 38.799 14 64 14zM32 810h262v-70h-98v-338h-66v338h-98v70zM642 810h98l60-278 58 278h100v-408h-62v320l-64-320h-64l-66 320v-320h-60v408zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe941;" glyph-name="it-app-weblogic" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM24 810h68l50-280 60 280h78l58-286 50 286h66l-78-408h-72l-64 304-66-304h-72l-78 408zM490 806h66v-336h164v-68h-230v404zM1024 316l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe942;" glyph-name="it-cluster" d="M180 958v-168h156v-278h172v-98h-236v308h-272v-786h272v340h236v-338h274v784h-274v-72h-40v308h-288zM740 958v-168h156v-852h132v1020h-288zM336 212v-278h132v278h-132z" />
+<glyph unicode="&#xe943;" glyph-name="it-cluster-hacmp" d="M86 956.077v-80.685h268.592v-322.739h140.395v-93.101h-208.987v345.498h-286v-873.050h286v388.941h208.987v-35.168h286v519.277h-286v-171.712h-80.395v322.739zM580.987 956.077v-80.685h262.913v-589.619h60v670.304zM426 245.978l-122-291.219h68l24 70.342h124l28-70.342h68l-124 291.219zM646 245.978v-291.219h64v291.219zM746 245.978l96-129.85-104-161.37h74l68 107.578 70-107.578h74l-106 159.296 98 131.923h-74l-60-82.266-62 82.266zM458 190.605l42-113.786h-84z" />
+<glyph unicode="&#xe944;" glyph-name="it-cluster-nec" d="M86 956v-80h268v-324h140v-92h-208v346h-286v-874h286v388h208v-34h286v520h-286v-172h-80v322h-328zM580 956v-80h264v-590h60v670h-324zM924 256c-34.513 0-60.822-14.992-82-42-21.178-27.014-32-63.181-32-112 0-46.157 10.934-83.389 32-110s47.28-40 80-40c26.445 0 48.8 8.454 66 24 17.2 15.539 28.604 37.987 36 70l-48 20c-4.146-21.478-10.476-37.997-20-48-9.525-10.016-20.778-16-34-16-17.929 0-32.795 8.262-44 24s-18 42.918-18 80c0 34.95 6.626 60.397 18 76 11.373 15.61 25.735 22 44 22 13.222 0 24.755-3.2 34-12 9.244-8.806 15.087-20.794 18-36l50 14c-5.603 23.475-14.795 41.462-26 54-18.825 21.21-43.858 32-74 32zM340 250v-292h46v190l100-190h50v292h-46v-196l-102 196h-48zM588 250v-292h188v48h-138v80h124v50h-124v64h134v50h-184z" />
+<glyph unicode="&#xe945;" glyph-name="it-cluster-ns" d="M86 956v-80h268v-324h140v-92h-208v346h-286v-874h286v388h208v-34h286v520h-286v-172h-80v322zM580 956v-80h264v-590h60v670zM856.41 236.759c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28s-12-24.003-12-38c0-21.754 9.125-40.877 26-56 12-10.752 32.25-20.627 62-28 23.125-5.728 39.5-9.76 46-12 9.5-3.373 16.188-7.456 20-12 3.812-4.563 4-9.504 4-16 0-10.125-2.938-18.435-12-26s-24.125-12-42-12c-16.875 0-30.063 5.501-40 14s-16.75 21.875-20 40l-54-6c3.625-30.752 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.312 60 10s29.25 16.253 38 30c8.75 13.747 12 28.25 12 44 0 17.376-2.688 32.186-10 44s-19.063 21.19-32 28c-12.938 6.816-33 13.6-60 20-27 6.374-43 12.112-50 18-5.5 4.627-8 11.504-8 18 0 7.13 2.125 11.776 8 16 9.125 6.611 21.875 10 38 10 15.625 0 28.187-3.792 36-10 7.812-6.189 11.625-15.875 14-30l56 2c-0.875 25.248-10.563 46.877-28 62s-43.5 22-78 22zM423.783 242.482v-276h50v180l112-180h56v276h-52v-184l-112 184z" />
+<glyph unicode="&#xe946;" glyph-name="it-cluster-sg" d="M86 960v-80h268v-324h140v-92h-208v345.997h-286v-873.997h286v388h208v-34.003h286v520h-286v-172h-80v322.003zM580 960v-80h264v-590.003h60v670.003zM483.586 225.76v-276h56v120h108v-120h56v276h-56v-108h-108v108zM806.959 225.76v-276h56v104h36c25.125 0 44.75 1.408 58 3.968 9.75 2.112 18.562 7.437 28 13.997 9.437 6.566 17.875 14.502 24 26.003 6.125 11.494 8 25.12 8 41.997 0 21.875-5.375 40.192-16 54.003s-22.25 23.904-38 28c-10.25 2.688-32.25 3.968-66 3.968zM862.959 177.76h26c20 0 33.375-0.704 40-1.984 9-1.6 16.125-5.504 22-12 5.875-6.502 10-14.003 10-24 0-8.128-1.812-15.853-6-21.997s-10.625-9.12-18-12c-7.375-2.88-22.125-6.016-44-6.016h-30z" />
+<glyph unicode="&#xe947;" glyph-name="it-database" d="M514 960c-282.77 0-512-99.331-512-222s229.23-222 512-222c282.77 0 512 99.331 512 222 0 1.383 0.058 2.623 0 4-0.029 0.688 0.043 1.313 0 2-7.57 119.802-234.011 216-512 216zM0 732v-138c1.854-20.829 4-44.253 4-54 0-122.669 229.23-222 512-222s512 99.331 512 222v148c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44zM0 516v-130c1.854-20.829 4-44.253 4-54 0-122.669 229.23-222 512-222s512 99.331 512 222v140c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44zM0 308v-138c0.439-3.52 2-9.51 2-12 0-122.669 229.23-222 512-222s512 99.331 512 222c0 2.24 1.483 8.499 2 12v94c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44z" />
+<glyph unicode="&#xe948;" glyph-name="it-database-mssql" d="M514 960c-282.77 0-512-99.331-512-222s229.23-222 512-222c282.77 0 512 99.331 512 222 0 1.383 0.058 2.623 0 4-0.029 0.688 0.043 1.313 0 2-7.57 119.802-234.011 216-512 216zM0 732v-138c1.854-20.829 4-44.253 4-54 0-122.669 229.23-222 512-222s512 99.331 512 222v148c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44zM0 516v-130c1.854-20.829 4-44.253 4-54 0-17.453 5.225-33.711 14-50h238c-150.238 38.674-252 108.698-252 190 0 7.227-2.795 30.407-4 44zM1028 472c0-81.302-101.762-151.326-252-190h238c8.775 16.289 14 32.547 14 50v140zM0 308v-26h2c-0.917 9.45-1.289 17.978-2 26zM114 244c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28-7.938-12.192-12-26.003-12-40 0-21.747 9.125-38.87 26-54 12-10.746 32.25-20.621 62-28 23.125-5.728 37.5-9.76 44-12 9.5-3.373 16.187-7.456 20-12 3.812-4.563 6-9.498 6-16 0-10.125-4.938-20.442-14-28-9.063-7.571-22.125-10-40-10-16.875 0-30.063 3.494-40 12-9.938 8.499-16.75 21.875-20 40l-54-6c3.625-30.746 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.318 60 10 16 6.688 27.25 18.246 36 32 8.75 13.747 14 28.25 14 44 0 17.37-4.688 32.192-12 44-7.313 11.814-17.063 21.184-30 28-12.938 6.81-33 13.6-60 20-27 6.381-43 12.112-50 18-5.5 4.621-8 9.498-8 16 0 7.123 2.125 13.776 8 18 9.125 6.611 21.875 10 38 10 15.625 0 26.187-3.792 34-10 7.812-6.189 13.625-15.875 16-30l56 2c-0.875 25.248-10.563 44.87-28 60-17.438 15.123-43.5 24-78 24zM398 244c-41.125 0-74-13.066-98-38-24-24.941-36-61.123-36-106 0-44.998 12.062-79.123 36-104 23.937-24.87 55.75-38 98-38 21.875 0 42 4.128 60 12 22.875-15.373 36.25-23.104 38-24 8-4.365 15.625-7.504 24-10l20 40c-16 5.754-30.375 12.253-44 22 11 12.877 19 26.253 24 40 6.625 18.003 10 38.25 10 62 0 44.877-12.125 81.059-36 106-23.875 24.934-55.25 38-96 38zM904 244c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28-7.938-12.192-12-26.003-12-40 0-21.747 9.125-38.87 26-54 12-10.746 32.25-20.621 62-28 23.125-5.728 37.5-9.76 44-12 9.5-3.373 16.188-7.456 20-12 3.812-4.563 6-9.498 6-16 0-10.125-4.938-20.442-14-28-9.063-7.571-22.125-10-40-10-16.875 0-30.063 3.494-40 12-9.938 8.499-16.75 21.875-20 40l-54-6c3.625-30.746 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.318 60 10 16 6.688 27.25 18.246 36 32 8.75 13.747 14 28.25 14 44 0 17.37-4.688 32.192-12 44-7.313 11.814-17.063 21.184-30 28-12.938 6.81-33 13.6-60 20-27 6.381-43 12.112-50 18-5.5 4.621-10 9.498-10 16 0 7.123 4.125 13.776 10 18 9.125 6.611 21.875 10 38 10 15.625 0 26.187-3.792 34-10 7.812-6.189 13.625-15.875 16-30l56 2c-0.875 25.248-10.563 44.87-28 60-17.438 15.123-43.5 24-78 24zM574 236v-272h194v46h-138v226h-56zM396 196c22.625 0 42-8.314 56-24 14-15.693 20-40.25 20-72 0-15.373-0.438-28.128-4-40-3.563-11.878-8.875-21.629-16-30-16.625 12.499-35.75 21.728-54 28l-14-32c11.625-4.128 22.75-10.627 34-18-7.125-2.624-14-4-22-4-21.5 0-39.938 8.064-54 24s-22 39.878-22 72c0 31.629 7.937 56.25 22 72s31.375 24 54 24z" />
+<glyph unicode="&#xe949;" glyph-name="it-database-oracle" d="M514 960c-282.77 0-512-99.331-512-222s229.23-222 512-222c282.77 0 512 99.331 512 222 0 1.383 0.058 2.623 0 4-0.029 0.688 0.043 1.313 0 2-7.57 119.802-234.011 216-512 216zM0 732v-138c1.854-20.829 4-44.253 4-54 0-122.669 229.23-222 512-222s512 99.331 512 222v148c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44zM0 516v-130c1.854-20.829 4-44.253 4-54 0-17.453 5.225-33.711 14-50h238c-150.238 38.674-252 108.698-252 190 0 7.227-2.795 30.407-4 44zM1028 472c0-81.302-101.762-151.326-252-190h238c8.775 16.289 14 32.547 14 50zM0 308v-26h2c-0.917 9.45-1.289 17.978-2 26zM140 244c-22.375 0-42.875-4.749-60-12-12.875-5.376-23.188-12.877-34-24s-19.75-23.997-26-38c-8.375-18.995-14-42-14-70 0-43.75 13.875-79.059 38-104 24.125-24.934 55.125-38 96-38 40.375 0 73.875 12.938 98 38s36 59.622 36 104c0 44.749-11.688 80.874-36 106s-57.5 38-98 38zM714 244c-38.5 0-70.375-12.688-94-38s-36-62.253-36-108c0-43.251 12.5-77.059 36-102 23.5-24.934 53.5-38 90-38 29.5 0 52.812 7.44 72 22 19.187 14.566 33.75 37.997 42 68l-54 16c-4.625-20.128-11.375-34.624-22-44-10.625-9.389-23.25-14.006-38-14-20-0.006-37.5 7.248-50 22-12.5 14.746-18 39.248-18 74 0 32.749 5.313 57.37 18 72 12.687 14.624 29.625 22 50 22 14.75 0 27.687-3.75 38-12s16.75-19.747 20-34l56 12c-6.25 22.003-17.5 40.25-30 52-21 19.878-46.375 30-80 30zM316 238v-274h56v114h12c12.75 0 22.125 0.048 28-2 5.875-2.061 10.75-6.432 16-12 5.25-5.562 15.75-18.63 30-40l40-60h66l-34 54c-13.25 21.376-24.188 35.629-32 44-7.813 8.378-16 14.998-28 22 24.125 3.501 41.875 12.56 54 26 12.125 13.434 18 31.373 18 52 0 16.25-4 29.373-12 42-8 12.621-18.688 23.072-32 28-13.313 4.909-34.625 6-64 6zM874 236v-272h146.652v46h-92.652v226zM140 196c22.875 0 42.187-8.506 56-24 13.812-15.501 20-38.499 20-70 0-31.878-7.813-56.064-22-72s-31.875-24.006-54-24c-22.125-0.006-39.625 7.936-54 24s-22 40.87-22 72c0 31.622 8 54.307 22 70 14 15.686 31.125 24 54 24zM372 192h44c22.5 0 35.5 0.64 40 0 9-1.498 17.062-6.304 22-12 4.937-5.683 6-12.746 6-22 0-8.25-2.25-14.496-6-20-3.75-5.485-7.375-9.76-14-12s-23.375-4-50-4h-42z" />
+<glyph unicode="&#xe94a;" glyph-name="it-database-sybase" d="M514 960c-282.77 0-512-99.331-512-222s229.23-222 512-222c282.77 0 512 99.331 512 222 0 1.383 0.058 2.623 0 4-0.029 0.688 0.043 1.313 0 2-7.57 119.802-234.011 216-512 216zM0 732v-138c1.854-20.829 4-44.253 4-54 0-122.669 229.23-222 512-222s512 99.331 512 222v148c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44zM0 516v-130c1.854-20.829 4-44.253 4-54 0-17.453 5.225-33.711 14-50h238c-150.238 38.674-252 108.698-252 190 0 7.227-2.795 30.407-4 44zM1028 472c0-81.302-101.762-151.326-252-190h238c8.775 16.289 14 32.547 14 50v140zM0 308v-26h2c-0.917 9.45-1.289 17.978-2 26zM114 244c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28-7.938-12.192-12-26.003-12-40 0-21.747 9.125-38.87 26-54 12-10.746 32.25-20.621 62-28 23.125-5.728 37.5-9.76 44-12 9.5-3.373 16.187-7.456 20-12 3.812-4.563 6-9.498 6-16 0-10.125-4.938-20.442-14-28-9.063-7.571-22.125-10-40-10-16.875 0-30.063 3.494-40 12-9.938 8.499-16.75 21.875-20 40l-54-6c3.625-30.746 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.318 60 10 16 6.688 27.25 18.246 36 32 8.75 13.747 14 28.25 14 44 0 17.37-4.688 32.192-12 44-7.313 11.814-17.063 21.184-30 28-12.938 6.81-33 13.6-60 20-27 6.381-43 12.112-50 18-5.5 4.621-8 9.498-8 16 0 7.123 2.125 13.776 8 18 9.125 6.611 21.875 10 38 10 15.625 0 26.187-3.792 34-10 7.812-6.189 13.625-15.875 16-30l56 2c-0.875 25.248-10.563 44.87-28 60-17.438 15.123-43.5 24-78 24zM904 244c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28-7.938-12.192-12-26.003-12-40 0-21.747 9.125-38.87 26-54 12-10.746 32.25-20.621 62-28 23.125-5.728 37.5-9.76 44-12 9.5-3.373 16.188-7.456 20-12 3.812-4.563 6-9.498 6-16 0-10.125-2.938-20.442-12-28-9.063-7.571-24.125-10-42-10-16.875 0-30.063 3.494-40 12-9.938 8.499-16.75 21.875-20 40l-54-6c3.625-30.746 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.318 60 10 16 6.688 27.25 18.246 36 32 8.75 13.747 14 28.25 14 44 0 17.37-2.688 32.192-10 44-7.313 11.814-19.063 21.184-32 28-12.938 6.81-33 13.6-60 20-27 6.381-43 12.112-50 18-5.5 4.621-8 9.498-8 16 0 7.123 2.125 13.776 8 18 9.125 6.611 21.875 10 38 10 15.625 0 28.187-3.792 36-10 7.812-6.189 11.625-15.875 14-30l56 2c-0.876 25.248-10.563 44.87-28 60-17.438 15.123-43.5 24-78 24zM246 238l100-158v-116h56v114l102 160h-64l-64-108-64 108h-66zM532 238v-274h92c35.375 0.256 58.75 0.976 68 2 14.75 1.626 27.937 4.934 38 12 10.062 7.059 16.188 16.186 22 28 5.812 11.808 10 25.501 10 38 0 15.872-5 28.25-14 40s-21.25 21.136-38 26c11.875 5.376 21.062 13.254 28 24 6.937 10.752 10 23.13 10 36 0 11.878-2.375 22.438-8 32s-13.563 16.24-22 22c-8.438 5.773-17.313 10.208-28 12-10.688 1.856-26.25 2-48 2h-110zM586 192h32c26.125 0 42.5 0.64 48 0 9.25-1.126 17.312-4.688 22-10s6-11.501 6-20c0-8.877-2.563-16.56-8-22-5.437-5.434-12.5-8.848-22-10-5.25-0.96-18.375 0-40 0h-38v62zM586 84h46c25.25 0 40.437-1.376 48-4s14-8.24 18-14c4-5.747 6-11.75 6-20 0-9.747-2.813-18.176-8-24-5.188-5.85-11.75-8.528-20-10-5.375-1.024-18-2-38-2h-52v74z" />
+<glyph unicode="&#xe94b;" glyph-name="it-database-sybaseiq" d="M514 960c-282.77 0-512-99.331-512-222s229.23-222 512-222c282.77 0 512 99.331 512 222 0 1.383 0.058 2.623 0 4-0.029 0.688 0.043 1.313 0 2-7.57 119.802-234.011 216-512 216zM576 888c40.75 0 74.125-13.059 98-38 23.875-24.934 36-59.13 36-104 0-23.75-3.375-44.003-10-62-5-13.754-13-27.123-24-40 13.625-9.747 28-18.253 44-24l-20-40c-8.375 2.496-18 7.642-26 12-1.75 0.896-13.125 8.627-36 24-18-7.872-38.125-12-60-12-42.25 0-76.063 13.123-100 38s-36 59.002-36 104c0 44.87 12 79.066 36 104 24 24.941 56.875 38 98 38zM346 884h56v-276h-56v276zM560 840c-15.363-2.954-27.453-12.187-38-24-14.063-15.75-22-38.378-22-70 0-32.128 7.937-56.064 22-72s30.5-24 52-24c8 0 16.875 1.376 24 4-11.25 7.373-24.375 13.878-36 18l16 30c18.25-6.272 35.375-15.501 52-28 7.125 8.378 12.437 20.128 16 32 3.562 11.878 5.999 24.621 6 40 0 31.75-6 56.314-20 72s-33.375 22-56 22c-5.656 0-10.879 0.985-16 0zM0 732v-138c1.854-20.829 4-44.253 4-54 0-122.669 229.23-222 512-222s512 99.331 512 222v148c0-122.669-229.23-222-512-222s-512 99.331-512 222c0 7.227-2.795 30.407-4 44zM0 516v-130c1.854-20.829 4-44.253 4-54 0-17.453 5.225-33.711 14-50h238c-150.238 38.674-252 108.698-252 190 0 7.227-2.795 30.407-4 44zM1028 472c0-81.302-101.762-151.326-252-190h238c8.775 16.289 14 32.547 14 50v140zM0 308v-26h2c-0.917 9.45-1.289 17.978-2 26zM114 244c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28-7.938-12.192-12-26.003-12-40 0-21.747 9.125-38.87 26-54 12-10.746 32.25-20.621 62-28 23.125-5.728 37.5-9.76 44-12 9.5-3.373 16.187-7.456 20-12 3.812-4.563 6-9.498 6-16 0-10.125-4.938-20.442-14-28-9.063-7.571-22.125-10-40-10-16.875 0-30.063 3.494-40 12-9.938 8.499-16.75 21.875-20 40l-54-6c3.625-30.746 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.318 60 10 16 6.688 27.25 18.246 36 32 8.75 13.747 14 28.25 14 44 0 17.37-4.688 32.192-12 44-7.313 11.814-17.063 21.184-30 28-12.938 6.81-33 13.6-60 20-27 6.381-43 12.112-50 18-5.5 4.621-8 9.498-8 16 0 7.123 2.125 13.776 8 18 9.125 6.611 21.875 10 38 10 15.625 0 26.187-3.792 34-10 7.812-6.189 13.625-15.875 16-30l56 2c-0.875 25.248-10.563 44.87-28 60-17.438 15.123-43.5 24-78 24zM904 244c-21.125 0-39.063-3.6-54-10-14.938-6.374-26.063-15.814-34-28-7.938-12.192-12-26.003-12-40 0-21.747 9.125-38.87 26-54 12-10.746 32.25-20.621 62-28 23.125-5.728 37.5-9.76 44-12 9.5-3.373 16.188-7.456 20-12 3.812-4.563 6-9.498 6-16 0-10.125-2.938-20.442-12-28-9.063-7.571-24.125-10-42-10-16.875 0-30.063 3.494-40 12-9.938 8.499-16.75 21.875-20 40l-54-6c3.625-30.746 15.375-53.936 34-70s45.25-24 80-24c23.875 0 44 3.318 60 10 16 6.688 27.25 18.246 36 32 8.75 13.747 14 28.25 14 44 0 17.37-2.688 32.192-10 44-7.313 11.814-19.063 21.184-32 28-12.938 6.81-33 13.6-60 20-27 6.381-43 12.112-50 18-5.5 4.621-8 9.498-8 16 0 7.123 2.125 13.776 8 18 9.125 6.611 21.875 10 38 10 15.625 0 28.187-3.792 36-10 7.812-6.189 11.625-15.875 14-30l56 2c-0.876 25.248-10.563 44.87-28 60-17.438 15.123-43.5 24-78 24zM246 238l100-158v-116h56v114l102 160h-64l-64-108-64 108h-66zM532 238v-274h92c35.375 0.256 58.75 0.976 68 2 14.75 1.626 27.937 4.934 38 12 10.062 7.059 16.188 16.186 22 28 5.812 11.808 10 25.501 10 38 0 15.872-5 28.25-14 40s-21.25 21.136-38 26c11.875 5.376 21.062 13.254 28 24 6.937 10.752 10 23.13 10 36 0 11.878-2.375 22.438-8 32s-13.563 16.24-22 22c-8.438 5.773-17.313 10.208-28 12-10.688 1.856-26.25 2-48 2h-110zM586 192h32c26.125 0 42.5 0.64 48 0 9.25-1.126 17.312-4.688 22-10s6-11.501 6-20c0-8.877-2.563-16.56-8-22-5.437-5.434-12.5-8.848-22-10-5.25-0.96-18.375 0-40 0h-38v62zM586 84h46c25.25 0 40.437-1.376 48-4s14-8.24 18-14c4-5.747 6-11.75 6-20 0-9.747-2.813-18.176-8-24-5.188-5.85-11.75-8.528-20-10-5.375-1.024-18-2-38-2h-52v74z" />
+<glyph unicode="&#xe94c;" glyph-name="it-diskraid-dellmd" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM0 354.228v-320h110c21.777 0 40.987 1.48 54 6 17.395 6.125 29.775 15.063 40 26 13.544 14.438 24.696 34.667 32 58 5.975 19.104 8 41.604 8 68 0 30.041-1.626 55.51-8 76s-15.784 37.854-28 52c-12.217 14.146-26.87 22.458-44 28-12.748 4.083-31.7 6-56 6zM294 354.228v-320h224v54h-164v88h146v54h-146v70h158v54zM570 352.228v-318h204v54h-146v264zM818 352.228v-318h206v54h-146v264zM58 300.228h28c24.035 0 39.767 0.041 48-2 11.021-2.625 20.829-8.563 28-16s12.016-16.729 16-30c3.983-13.271 6-33.209 6-58s-2.017-43.636-6-58c-3.984-14.365-9.693-25.729-16-32s-14.439-9.375-24-12c-7.304-2.042-19.534-4-36-4h-44z" />
+<glyph unicode="&#xe94d;" glyph-name="it-diskraid-emc" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM854 346.102c-44.917 0-82.438-14.469-110-44s-40-72.625-40-126c0-50.458 12.583-88.906 40-118s63.417-44 106-44c34.416 0 61.614 9.010 84 26s38.375 43 48 78l-62 20c-5.396-23.479-15.604-41.063-28-52s-26.792-16-44-16c-23.334 0-41.417 8.792-56 26s-22 45.458-22 86c0 38.208 7.198 64.937 22 82s34.229 26 58 26c17.208 0 31.969-4.375 44-14s20.208-23.375 24-40l64 16c-7.292 25.666-19.417 44.291-34 58-24.5 23.187-54.771 36-94 36zM42 340.102v-320h244v54h-180v86h162v54h-162v72h174v54zM340 340.102v-320h60v252l64-252h62l64 252v-252h60v320h-98l-56-218-60 218z" />
+<glyph unicode="&#xe94e;" glyph-name="it-diskraid-eternus" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM906 337.424c-22.115 0-42.363-4.563-58-12s-27.691-17.781-36-32c-8.309-14.219-12-29.667-12-46 0-25.375 8.335-46.354 26-64 12.562-12.542 34.857-23.396 66-32 24.208-6.708 41.195-11.375 48-14 9.945-3.937 16.009-8.677 20-14s6-12.417 6-20c0-11.813-4.513-21.177-14-30s-23.288-14-42-14c-17.665 0-31.597 6.083-42 16s-18.598 24.854-22 46l-56-6c3.795-35.875 14.503-63.26 34-82s47.622-28 84-28c24.993 0 47.25 4.198 64 12s28.84 19.958 38 36c9.159 16.042 14 33.625 14 52 0 20.271-4.346 36.219-12 50s-18.457 24.052-32 32c-13.544 7.948-33.736 16.562-62 24s-46.672 15.146-54 22c-5.758 5.396-8 10.416-8 18 0 8.312 3.85 15.041 10 20 9.552 7.729 21.12 12 38 12 16.357 0 29.821-2.781 38-10s13.514-19.521 16-36l58 2c-0.916 29.458-9.746 54.354-28 72s-45.884 26-82 26zM0 331.424v-320h218v54h-160v88h144v54h-144v70h156v54zM248 331.424v-54h86v-266h58v266h84v54zM514 331.424v-320h54v208l116-208h60v320h-54v-214l-118 214z" />
+<glyph unicode="&#xe94f;" glyph-name="it-diskraid-fujitsu" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106h-832zM76 886h872v-420h-872v420zM128 812v-132h338v132h-338zM546 812v-132h338v132h-338zM126 634v-130h338v130h-338zM546 634v-130h338v130h-338zM216 340v-322h72v136h134v54h-134v76h154v56h-226zM728 340v-208c0-25.958-2.021-43.761-8-52-5.663-7.804-14.751-11.587-28-12-12.099 1.212-21.741 7.699-28 18-4.667 7.583-7.271 19.625-8 38h-6l-62-6c0.146-34.271 8.937-60.281 26-78 14.335-14.887 33.371-23.621 58-26 6.9-1.241 14.089-2 22-2 26.979 0 49.521 6.698 66 18s27.729 25.333 34 44c4.667 14.292 6 35.458 6 62v204h-72z" />
+<glyph unicode="&#xe950;" glyph-name="it-diskraid-hds" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM826 341.763c-24.646 0-46.573-4.563-64-12s-30.74-17.782-40-32c-9.26-14.219-14-29.667-14-46 0-25.375 10.312-46.354 30-64 14-12.542 39.292-23.396 74-32 26.979-6.708 44.417-11.375 52-14 11.083-3.937 17.552-8.677 22-14s8-12.417 8-20c0-11.813-5.427-21.177-16-30s-27.146-14-48-14c-19.688 0-34.406 6.083-46 16s-20.209 24.854-24 46l-62-6c4.229-35.875 16.271-63.26 38-82s53.458-28 94-28c27.854 0 51.333 4.198 70 12s31.791 19.958 42 36c10.208 16.042 16 33.625 16 52 0 20.271-3.469 36.219-12 50s-20.906 24.052-36 32c-15.094 7.948-38.5 16.562-70 24s-51.833 15.146-60 22c-6.417 5.396-10 10.416-10 18 0 8.312 3.146 15.041 10 20 10.646 7.729 27.187 12 46 12 18.229 0 30.885-2.781 40-10s15.229-19.521 18-36l64 2c-1.021 29.458-11.657 54.354-32 72s-49.75 26-90 26zM66 335.763v-320h64v140h128v-140h64v320h-64v-126h-128v126zM390 335.763v-320h122c23.916 0 41.708 1.479 56 6 19.104 6.125 34.771 15.062 46 26 14.875 14.437 25.979 32.667 34 56 6.562 19.104 10 41.604 10 68 0 30.041-3 55.51-10 76s-16.584 37.854-30 52c-13.417 14.146-31.188 24.458-50 30-14 4.083-33.313 6-60 6zM454 281.763h30c26.396 0 42.958 0.042 52-2 12.104-2.625 22.125-8.563 30-16s13.625-18.729 18-32c4.375-13.271 8-31.209 8-56s-3.625-43.636-8-58c-4.375-14.365-9.073-25.729-16-32s-15.5-11.375-26-14c-8.021-2.042-21.99-0.371-40-2h-48z" />
+<glyph unicode="&#xe951;" glyph-name="it-diskraid-hpaio" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM732 342.407c-24.727 0-45.075-5.071-64-14-14.229-6.62-28.051-16.298-40-30s-21.093-28.757-28-46c-9.255-23.401-14-51.514-14-86 0-53.884 13.339-97.286 40-128s62.828-46 108-46c44.619 0 79.339 15.132 106 46s40 73.346 40 128c0 55.115-13.132 99.055-40 130s-63.243 46-108 46zM262 336.407l-118-338h64l26 76h120l28-76h66l-122 338zM480 336.407v-60h58v60zM734 284.407c25.28 0 44.735-8.91 60-28s24-49.204 24-88c0-39.258-8.321-68.371-24-88s-35.549-30-60-30c-24.451 0-44.114 10.217-60 30s-24 49.665-24 88c0 38.95 6.528 66.678 22 86s36.72 30 62 30zM294 258.407l42-126h-84zM480 244.407v-246h58v246z" />
+<glyph unicode="&#xe952;" glyph-name="it-diskraid-hpmsa" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM516 342.407c-23.346 0-41.492-4.148-58-12s-29.228-18.99-38-34c-8.772-15.011-14-30.757-14-48 0-26.788 9.351-49.372 28-68 13.261-13.24 37.122-24.917 70-34 25.556-7.082 40.817-11.229 48-14 10.499-4.157 17.787-10.381 22-16s6-11.994 6-20c0-12.47-3.985-22.686-14-32s-24.246-14-44-14c-18.649 0-35.018 5.531-46 16s-18.408 25.677-22 48l-58-6c4.006-37.873 15.417-66.217 36-86s49.597-30 88-30c26.385 0 48.318 3.763 66 12s32.33 21.065 42 38c9.669 16.935 14 34.602 14 54 0 21.399-3.919 39.451-12 54s-19.703 25.609-34 34c-14.298 8.39-36.162 18.148-66 26s-48.264 14.764-56 22c-6.078 5.696-10 11.994-10 20 0 8.775 3.507 16.765 10 22 10.084 8.159 24.18 12 42 12 17.267 0 31.366-4.38 40-12s13.375-20.604 16-38l62 4c-0.967 31.098-10.73 55.371-30 74s-49.873 28-88 28zM56 336.407v-338h56v266l62-266h58l60 266v-266h58v338h-92l-56-230-54 230zM782 336.407l-118-338h64l26 76h120l28-76h66l-122 338zM814 258.407l42-126h-84z" />
+<glyph unicode="&#xe953;" glyph-name="it-diskraid-ibm" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM152 334.746v-338h62v338zM272 334.746v-338h104c39.094 0.307 63.777 0.769 74 2 16.3 2.001 28.879 7.302 40 16s21.576 21.451 28 36c6.423 14.549 8 28.604 8 44 0 19.552-4.054 37.528-14 52s-23.489 23.996-42 30c13.123 6.62 22.333 16.76 30 30s12 28.142 12 44c0 14.625-3.784 26.222-10 38s-12.676 22.918-22 30c-9.325 7.082-20.189 11.768-32 14s-29.964 2-54 2zM578 334.746v-338h56v266l62-266h58l60 266v-266h58v338h-92l-56-230-54 230zM334 278.746h34c28.871 0 47.922 0.769 54 0 10.222-1.386 16.82-5.457 22-12s8-15.531 8-26c0-10.931-1.991-19.303-8-26s-15.501-10.615-26-12c-5.802-0.769-20.102-2-44-2h-40zM334 144.746h50c27.904 0 45.642-2.767 54-6s13.579-6.918 18-14c4.42-7.082 8-15.839 8-26 0-12.009-4.267-22.841-10-30s-12.883-10.153-22-12c-5.94-1.386-19.898-2-42-2h-56z" />
+<glyph unicode="&#xe954;" glyph-name="it-diskraid-ibmsm" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM338 349.424c-23.346 0-43.492-4.148-60-12s-29.228-18.99-38-34c-8.772-15.011-12-30.757-12-48 0-26.788 9.351-49.372 28-68 13.261-13.24 35.122-24.917 68-34 25.556-7.082 42.817-11.229 50-14 10.499-4.157 17.787-10.38 22-16s6-11.994 6-20c0-12.47-5.985-22.686-16-32s-24.246-14-44-14c-18.649 0-33.018 5.531-44 16s-18.408 25.677-22 48l-60-6c4.006-37.873 17.417-66.217 38-86s49.597-30 88-30c26.385 0 48.318 3.763 66 12s30.33 21.065 40 38c9.67 16.935 16 34.602 16 54 0 21.399-3.919 39.451-12 54s-19.703 25.609-34 34c-14.298 8.39-36.162 18.148-66 26s-50.264 14.764-58 22c-6.078 5.696-8 11.994-8 20 0 8.775 3.507 16.765 10 22 10.084 8.159 24.18 12 42 12 17.267 0 29.366-4.38 38-12s15.375-20.604 18-38l60 4c-0.967 31.098-10.73 55.371-30 74s-47.873 28-86 28zM514 343.424v-338h58v266l60-266h58l60 266v-266h58v338h-92l-54-230-56 230z" />
+<glyph unicode="&#xe955;" glyph-name="it-diskraid-macrosan" d="M545.978 634.927h338.060v-129.629h-338.060v129.629zM545.978 812.404h338.060v-131.631h-338.060v131.631zM126.045 634.927h337.967v-129.629h-337.967v129.629zM128.047 812.404h337.967v-131.631h-337.967v131.631zM928.023 960h-832c-53.434 0-96.023-46.732-96.023-105.705v-353.001c0-58.973 42.589-107.706 96.023-107.706h832.047c53.341 0 95.977 48.733 95.977 107.706v353.001c-0.047 58.973-42.636 105.705-96.023 105.705zM948.038 467.363h-872.029v418.863h872.029v-418.863zM326.051 115.898c-7.68-22.481-13.405-39.657-17.036-51.293-3.212 10.519-8.332 26.298-15.267 47.383l-75.916 226.444h-63.907v-319.814h40.913v272.244l92.719-272.244h38.353l93.091 267.636v-267.636h40.96v319.814h-57.065l-76.847-222.534zM838.982 187.066c-12.753 5.818-36.399 12.614-70.889 20.387-34.444 7.82-55.808 15.407-63.953 22.807-8.378 7.401-12.521 16.849-12.521 28.346 0 13.219 5.818 24.529 17.594 33.932 11.729 9.402 30.394 14.103 56.087 14.103 24.623 0 43.241-5.167 55.855-15.453 12.66-10.38 20.061-25.6 22.202-45.894l40.774 3.119c-0.791 18.665-5.958 35.561-15.732 50.362-9.821 14.801-23.785 26.065-41.937 33.745-18.153 7.587-39.098 11.404-62.883 11.404-21.597 0-41.239-3.631-58.833-10.845-17.641-7.261-31.139-17.92-40.262-31.977-9.216-14.010-13.777-29.091-13.777-45.335 0-14.615 3.77-27.927 11.217-39.75 7.494-11.823 18.944-21.783 34.211-29.789 11.823-6.237 32.396-12.893 61.952-19.968 29.463-7.028 48.454-12.288 57.111-15.593 13.405-5.12 23.040-11.404 28.858-18.851 5.818-7.494 8.751-16.291 8.751-26.298 0-9.914-2.979-18.991-9.030-27.369-6.097-8.332-15.313-14.941-27.695-19.735-12.428-4.841-26.717-7.168-42.915-7.168-18.246 0-34.583 3.119-49.199 9.449-14.615 6.284-25.414 14.569-32.256 24.855-6.935 10.24-11.311 23.366-13.219 39.331l-39.983-3.491c0.559-21.318 6.377-40.495 17.594-57.437 11.124-16.943 26.438-29.603 46.127-37.981 19.596-8.471 43.892-12.66 72.89-12.66 22.993 0 43.567 4.236 61.812 12.614 18.339 8.378 32.349 20.061 42.124 35.095s14.662 31.046 14.662 48.035c0 17.175-4.515 32.396-13.359 45.521-8.844 13.033-22.668 23.831-41.379 32.489z" />
+<glyph unicode="&#xe956;" glyph-name="it-diskraid-netapp" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM222 343.424v-338h56v220l124-220h60v338h-56v-226l-124 226zM616 343.424l-118-338h64l26 76h120l28-76h66l-122 338zM648 265.424l42-126h-84z" />
+<glyph unicode="&#xe957;" glyph-name="it-diskraid-sun" d="M96 960c-53.411 0-96-46.841-96-106v-354c0-59.159 42.589-108 96-108h832c53.411 0 96 48.841 96 108v354c0 59.159-42.589 106-96 106zM76 886h872v-420h-872zM128 812v-132h338v132zM546 812v-132h338v132zM126 634v-130h338v130zM546 634v-130h338v130zM210 345.085c-23.346 0-43.492-4.148-60-12s-29.228-18.99-38-34c-8.772-15.011-12-30.757-12-48 0-26.788 9.351-49.372 28-68 13.261-13.24 35.122-24.917 68-34 25.556-7.082 42.817-11.229 50-14 10.499-4.157 17.787-10.38 22-16s6-11.994 6-20c0-12.47-5.985-22.686-16-32s-24.246-14-44-14c-18.649 0-33.018 5.531-44 16s-18.408 25.677-22 48l-60-6c4.006-37.873 17.417-66.217 38-86s49.597-30 88-30c26.385 0 48.318 3.763 66 12s30.33 21.065 40 38c9.67 16.935 16 34.602 16 54 0 21.399-3.919 39.451-12 54s-19.703 25.609-34 34c-14.298 8.39-36.162 18.148-66 26s-48.264 14.764-56 22c-6.078 5.696-10 11.994-10 20 0 8.775 3.507 16.765 10 22 10.084 8.159 24.18 12 42 12 17.267 0 29.366-4.38 38-12s15.375-20.604 18-38l60 4c-0.967 31.098-10.73 55.371-30 74s-47.873 28-86 28zM386 339.085v-180c0-37.873 1.994-66.602 6-86 2.763-13.086 9.297-26.069 18-38s21.012-20.533 36-28c14.988-7.467 36.99-12 66-12 24.036 0 43.081 3.149 58 10s27.090 16.453 36 28c8.91 11.547 14.684 25.219 18 42s6 45.356 6 86v178h-62v-186c0-26.788-0.204-46.454-2-58s-7.159-22.071-16-30c-8.841-7.928-22.594-12-40-12-17.13 0-30.123 5.61-40 14s-17.375 18.144-20 32c-1.52 8.621-2 28.903-2 58v182zM694 339.085v-338h58v220l122-220h62v338h-58v-226l-124 226z" />
+<glyph unicode="&#xe958;" glyph-name="it-firewall" d="M0 960v-176h242v176h-242zM346 960v-176h352v176h-352zM800 960v-176h224v176h-224zM30 728v-176h354v176h-354zM488 728v-176h352v176h-352zM942 728v-176h82v176h-82zM0 498v-178h256v178h-256zM366 498v-178h352v178h-352zM822 498v-178h202v178h-202zM30 258v-176h354v176h-354zM488 258v-176h352v176h-352zM942 258v-176h82v176h-82zM0 26v-90h242v90h-242zM346 26v-90h352v90h-352zM800 26v-90h224v90h-224z" />
+<glyph unicode="&#xe959;" glyph-name="it-firewall-checkpoint" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-112h352v112h102v-112h160v-56h-18v-176h18v-490h-160v-62h-102v62h-352v-62h-104v62h-178v490h320v176h-320v56h178v112zM488 728v-176h352v176h-352zM380 482c-44.917 0-82.438-14.47-110-44s-40-72.624-40-126c0-50.458 12.583-88.906 40-118s63.417-44 106-44c34.417 0 61.614 9.008 84 26s38.375 42.998 48 78l-62 20c-5.396-23.482-13.604-41.062-26-52-12.396-10.963-26.792-16-44-16-23.333 0-43.417 8.79-58 26s-22 45.456-22 86c0 38.208 7.198 64.938 22 82s34.229 26 58 26c17.208 0 31.969-4.374 44-14s20.208-23.373 24-40l64 16c-7.292 25.67-17.417 44.291-32 58-24.5 23.187-56.771 36-96 36zM564 476v-320h66v120h42c29.312 0 50.541 2.928 66 6 11.375 2.477 22.989 6.346 34 14 11.010 7.661 20.854 18.586 28 32 7.146 13.421 10 30.314 10 50 0 25.523-5.604 45.885-18 62s-27.625 27.2-46 32c-11.959 3.2-38.625 4-78 4h-104zM630 422h30c23.333 0 40.271-0.531 48-2 10.5-1.901 19.146-6.416 26-14s10-18.333 10-30c0-9.478-3.115-16.858-8-24-4.886-7.149-11.396-12.672-20-16-8.604-3.392-26.479-6-52-6h-34v92z" />
+<glyph unicode="&#xe95a;" glyph-name="it-firewall-cisco" d="M68 960c-37.964 0-68-30.272-68-68v-888c0-37.728 30.036-68 68-68h894c37.964 0 68 30.272 68 68v888c0 37.728-30.036 68-68 68h-894zM244 896h104v-112h354v112h102v-112h162v-56h-18v-176h18v-490h-162v-62h-102v62h-354v-62h-104v62h-180v490h322v176h-322v56h180v112zM492 728v-176h354v176h-354zM340 468c-44.917 0-82.438-14.47-110-44s-40-72.624-40-126c0-50.458 12.583-88.906 40-118s63.417-44 106-44c34.416 0 61.614 9.008 84 26s38.375 42.998 48 78l-62 20c-5.396-23.482-13.604-41.062-26-52-12.396-10.963-26.792-16-44-16-23.334 0-43.417 8.79-58 26s-22 45.456-22 86c0 38.208 7.198 64.938 22 82s34.229 26 58 26c17.208 0 31.969-4.355 44-14 12.031-9.626 20.208-23.373 24-40l64 16c-7.292 25.67-17.417 44.291-32 58-24.5 23.187-56.771 36-96 36zM714 468c-44.917 0-82.438-14.47-110-44s-40-72.624-40-126c0-50.458 12.583-88.906 40-118s63.417-44 106-44c34.417 0 61.614 9.008 84 26s38.375 42.998 48 78l-62 20c-5.396-23.482-15.604-41.062-28-52-12.396-10.963-26.792-16-44-16-23.333 0-41.417 8.79-56 26s-22 45.456-22 86c0 38.208 7.198 64.938 22 82s34.229 26 58 26c17.208 0 31.969-4.355 44-14 12.031-9.626 20.208-23.373 24-40l64 16c-7.292 25.67-19.417 44.291-34 58-24.5 23.187-54.771 36-94 36z" />
+<glyph unicode="&#xe95b;" glyph-name="it-firewall-cisco2" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-112h352v112h102v-112h160v-56h-18v-176h18v-490h-160v-62h-102v62h-352v-62h-104v62h-178v490h320v176h-320v56h178v112zM488 728v-176h352v176h-352zM266 482c-44.917 0-82.438-14.47-110-44s-40-72.624-40-126c0-50.458 12.583-88.906 40-118s63.417-44 106-44c34.417 0 61.614 9.008 84 26s38.375 42.998 48 78l-62 20c-5.396-23.482-13.604-41.062-26-52-12.396-10.963-26.792-16-44-16-23.333 0-43.417 8.79-58 26s-22 45.456-22 86c0 38.208 7.198 64.938 22 82s34.229 26 58 26c17.208 0 31.969-4.374 44-14s20.208-23.373 24-40l64 16c-7.292 25.67-17.417 44.291-32 58-24.5 23.187-56.771 36-96 36zM768 482c-44.917 0-82.438-14.47-110-44s-40-72.624-40-126c0-50.458 12.583-88.906 40-118s63.417-44 106-44c34.417 0 61.614 9.008 84 26s38.375 42.998 48 78l-62 20c-5.396-23.482-13.604-41.062-26-52-12.396-10.963-26.792-16-44-16-23.333 0-43.417 8.79-58 26s-22 45.456-22 86c0 38.208 7.198 64.938 22 82s34.229 26 58 26c17.208 0 31.969-4.374 44-14s20.208-23.373 24-40l64 16c-7.292 25.67-17.417 44.291-32 58-24.5 23.187-56.771 36-96 36zM420 366v-96h150v96h-150z" />
+<glyph unicode="&#xe95c;" glyph-name="it-firewall-juniper" d="M68 960c-37.964 0-68-30.272-68-68v-888c0-37.728 30.036-68 68-68h894c37.964 0 68 30.272 68 68v888c0 37.728-30.036 68-68 68h-894zM244 896h104v-112h354v112h102v-112h162v-56h-18v-176h18v-490h-162v-62h-102v62h-354v-62h-104v62h-180v490h322v176h-322v56h180v112zM492 728v-176h354v176h-354zM396 464v-206c0-25.958-4.021-43.76-10-52s-15.563-12-30-12c-14.292 0-25 6.479-32 18-4.667 7.583-7.271 19.625-8 38l-60-6c0.146-34.271 8.937-60.281 26-78s40.354-28 72-28c26.979 0 49.521 6.698 66 18s27.729 25.333 34 44c4.666 14.292 6 35.458 6 62v202h-64zM530 464v-320h64v122h42c29.312 0 52.542 0.938 68 4 11.375 2.479 22.989 8.344 34 16s18.854 16.583 26 30c7.146 13.416 12 30.312 12 50 0 25.521-7.604 45.885-20 62s-27.625 27.187-46 32c-11.959 3.208-36.625 4-76 4h-104zM594 410h32c23.333 0 38.271-0.542 46-2 10.5-1.896 19.146-6.417 26-14s10-16.334 10-28c0-9.479-1.115-18.854-6-26s-13.396-12.646-22-16c-8.604-3.354-24.479-4-50-4h-36v90z" />
+<glyph unicode="&#xe95d;" glyph-name="it-firewall-neteye" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-112h352v112h102v-112h160v-56h-18v-176h18v-82h-154v-322h154v-86h-160v-62h-102v62h-352v-62h-104v62h-178v86h24v210l100-210h50v322h-46v-214l-102 214h-26v82h320v176h-320v56h178v112zM488 728v-176h352v176h-352zM306 470v-322h168v54h-102v88h84v54h-84v72h96v54h-162zM500 470l92-186v-136h50v136l90 186h-58l-56-128-58 128h-60zM870 416h90v-72h-90v72zM870 290h90v-88h-90v88z" />
+<glyph unicode="&#xe95e;" glyph-name="it-firewall-zte" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-112h352v112h102v-112h160v-56h-18v-176h18v-490h-160v-62h-102v62h-352v-62h-104v62h-178v490h320v176h-320v56h178v112zM488 728v-176h352v176h-352zM122 462v-54h148l-168-208v-58h260v54h-182l176 216v50h-234zM380 462v-54h96v-266h64v266h96v54h-256zM678 462v-320h244v54h-180v88h162v54h-162v70h174v54h-238z" />
+<glyph unicode="&#xe95f;" glyph-name="it-firewall-ztemf" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-12c-36.731-40.161-60-93.286-60-152 0-1.333-0.023-2.673 0-4h-222v56h178v112zM698 896h102v-112h160v-56h-18v-176h18v-490h-160v-62h-102v62h-352v-62h-104v62h-178v490h312c37.915-28.819 84.701-46 136-46s98.085 17.181 136 46h192v176h-102c0.023 1.34 0 2.655 0 4 0 47.763-14.694 91.517-40 128v36zM418 862h188v-48h-132v-64h114v-46h-114v-118h-56v276zM122 462v-54h148l-146-180-22-28v-58h260v54h-182l176 216v50h-234zM380 462v-54h96v-266h64v266h96v54h-256zM678 462v-320h244v54h-180v88h162v54h-162v70h174v54h-238z" />
+<glyph unicode="&#xe960;" glyph-name="it-firewall-zteutm" d="M68 960c-37.728 0-68-30.272-68-68v-888c0-37.728 30.272-68 68-68h888c37.728 0 68 30.272 68 68v888c0 37.728-30.272 68-68 68h-888zM242 896h104v-12c-36.731-40.161-60-93.286-60-152 0-1.333-0.023-2.673 0-4h-222v56h178v112zM698 896h102v-112h160v-56h-18v-176h18v-490h-160v-62h-102v62h-352v-62h-104v62h-178v490h312c37.915-28.819 84.701-46 136-46s98.085 17.181 136 46h192v176h-102c0.023 1.34 0 2.655 0 4 0 47.763-14.694 91.517-40 128v36zM410 862h56v-148c0-23.625 0.625-39 2-46 2.375-11.25 7.062-21.188 16-28s20.5-10 36-10c15.75 0 28 3.562 36 10s12.375 14.625 14 24c1.625 9.375 4 24.25 4 46v152h54v-144c0-33-1-56.375-4-70s-7.938-24.625-16-34c-8.063-9.375-18.5-16.438-32-22s-32.25-8-54-8c-26.25 0-46.438 1.937-60 8s-24.125 14.312-32 24c-7.875 9.687-11.5 19.375-14 30-3.625 15.75-6 39.25-6 70v146zM122 462v-54h148l-146-180-22-28v-58h260v54h-182l176 216v50h-234zM380 462v-54h96v-266h64v266h96v54h-256zM678 462v-320h244v54h-180v88h162v54h-162v70h174v54h-238z" />
+<glyph unicode="&#xe961;" glyph-name="it-gather" d="M260 958c-65.696-7.147-134.149-50.113-186-122-94.814-131.45-98.966-314.24-10-410 37.902-40.797 87.3-58.623 138-56v-402c42.667-47.332 85.333-40.057 128 0v456c23.249 18.201 46.339 38.742 66 66 94.814 131.45 100.966 316.24 12 412-33.362 35.91-75.78 53.99-120 56-9.213 0.419-18.615 1.021-28 0zM484 914c54.103-128.562 67.65-281.261-28-418-34.982-50.009-66.676-94.444-104-130l102-12c620.106 30.772 784.298 551.082 242 514-68.87-4.709-170.379 12.038-212 46zM270 854c28.56-1.298 54.453-12.807 76-36 57.459-61.847 55.236-181.102-6-266s-158.541-103.847-216-42c-57.459 61.847-53.236 181.102 8 266 38.272 53.061 90.4 80.163 138 78z" />
+<glyph unicode="&#xe962;" glyph-name="it-ibp" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h768c70.912 0 128 57.088 128 128v768c0 70.912-57.088 128-128 128h-768zM164 608h64v-320h-64v320zM290 608h128c25.375 0 45.531 0.115 58-2s24.156-7.292 34-14c9.843-6.709 17.437-14.844 24-26s10-24.146 10-38c0-15.021-3.907-29.459-12-42s-20.146-21.729-34-28c19.541-5.688 35.5-16.292 46-30s16-29.479 16-48c0-14.583-3.219-28.219-10-42s-16.261-23.76-28-32c-11.74-8.24-26.792-14.104-44-16-10.792-1.167-36.729-1.708-78-2h-110v320zM614 608h104c39.375 0 66.041-0.792 78-4 18.375-4.813 33.604-15.886 46-32s18-36.479 18-62c0-19.688-2.854-36.584-10-50s-16.99-24.344-28-32c-11.011-7.656-22.625-11.521-34-14-15.459-3.063-36.688-6-66-6h-44v-120h-64v320zM356 554v-74h42c25.229 0 39.875 1.27 46 2 11.083 1.312 19.656 5.656 26 12s10 13.646 10 24c0 9.916-2.531 17.802-8 24s-13.209 10.687-24 12c-6.417 0.729-25.521 0-56 0h-36zM678 554v-90h36c25.521 0 43.396 0.646 52 4s15.114 8.854 20 16c4.885 7.146 8 14.521 8 24 0 11.666-5.146 22.416-12 30s-15.5 12.104-26 14c-7.729 1.458-22.667 2-46 2h-32zM356 428v-86h60c23.333 0 37.729 0.687 44 2 9.625 1.75 17.948 5.219 24 12s8 16.625 8 28c0 9.625-1.334 17.292-6 24s-11.177 10.937-20 14c-8.823 3.062-28.542 6-58 6h-52z" />
+<glyph unicode="&#xe963;" glyph-name="it-ibp-ibp2000" d="M128 960c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h768c70.912 0 128 57.088 128 128v768c0 70.912-57.088 128-128 128h-768zM164 790h64v-322h-64v322zM290 790h128c25.375 0 45.531-1.886 58-4s24.156-7.292 34-14c9.843-6.709 17.437-14.844 24-26s10-24.146 10-38c0-15.021-3.907-27.459-12-40s-20.146-21.729-34-28c19.541-5.688 35.5-16.292 46-30s16-29.479 16-48c0-14.583-3.219-28.219-10-42s-16.261-25.76-28-34c-11.74-8.24-26.792-14.104-44-16-10.792-1.167-36.729-1.708-78-2h-110v322zM614 790h104c39.375 0 66.041-2.792 78-6 18.375-4.813 33.604-13.886 46-30s18-38.479 18-64c0-19.688-2.854-34.584-10-48s-16.99-24.344-28-32c-11.011-7.656-22.625-13.521-34-16-15.459-3.063-36.688-4-66-4h-44v-122h-64v322zM356 736v-74h42c25.229 0 39.875-0.73 46 0 11.083 1.312 19.656 5.656 26 12s10 15.646 10 26c0 9.916-2.531 17.802-8 24s-13.209 8.687-24 10c-6.417 0.729-25.521 2-56 2h-36zM678 736v-92h36c25.521 0 43.396 2.646 52 6s15.114 6.854 20 14c4.885 7.146 8 16.521 8 26 0 11.666-5.146 20.416-12 28s-15.5 12.104-26 14c-7.729 1.458-22.667 4-46 4h-32zM356 608v-86h60c23.333 0 37.729 0.687 44 2 9.625 1.75 17.948 7.219 24 14s8 14.625 8 26c0 9.625-1.334 19.292-6 26s-11.177 10.937-20 14c-8.823 3.062-28.542 4-58 4h-52zM196 362c27.125 0 48.5-7.375 64-22s24-34.25 24-56c0-12.375-3.563-22.813-8-34s-10.375-23.75-20-36c-6.375-8.125-17.375-18.75-34-34s-27.563-25-32-30c-4.438-5-9.25-11.25-12-16h106v-48h-186c2 18.5 8 35.438 18 52s30.5 38.625 60 66c23.75 22.125 38.625 36.125 44 44 7.25 10.875 10 23.375 10 34 0 11.75-1.688 19.687-8 26s-14.875 10-26 10c-11 0-21.5-3.375-28-10s-9-18.625-10-34l-52 6c3.125 29 11.5 49.375 28 62s37.25 20 62 20zM408 362c26.625 0 47-11 62-30 17.875-22.5 28-57.875 28-110 0-52-10-91.25-28-114-14.875-18.75-35.375-28-62-28-26.75 0-47.625 11.437-64 32s-24 57.25-24 110c0 51.75 8 89.25 26 112 14.875 18.75 35.375 28 62 28zM622 362c26.625 0 47-11 62-30 17.875-22.5 28-57.875 28-110 0-52-10-91.25-28-114-14.875-18.75-35.375-28-62-28-26.75 0-47.625 11.437-64 32s-26 57.25-26 110c0 51.75 10 89.25 28 112 14.875 18.75 35.375 28 62 28zM836 362c26.625 0 47-11 62-30 17.875-22.5 28-57.875 28-110 0-52-10-91.25-28-114-14.875-18.75-35.375-28-62-28-26.75 0-47.625 11.437-64 32s-26 57.25-26 110c0 51.75 10 89.25 28 112 14.875 18.75 35.375 28 62 28zM408 318c-6.375 0-11-1.937-16-6s-9.25-11.5-12-22c-3.625-13.625-6-35.75-6-68s2.75-55.938 6-68c3.25-12.063 7.062-20 12-24s9.625-6 16-6c6.375 0 13 1.937 18 6s9.25 11.5 12 22c3.625 13.5 4 37.75 4 70s-0.75 53.937-4 66c-3.25 12.062-7.063 19.937-12 24s-11.625 5.999-18 6zM622 318c-6.375 0-11-1.937-16-6s-9.25-11.5-12-22c-3.625-13.625-6-35.75-6-68s0.75-55.938 4-68c3.25-12.063 9.062-20 14-24s9.625-6 16-6c6.375 0 13 1.937 18 6s7.25 11.5 10 22c3.625 13.5 6 37.75 6 70s-0.75 53.937-4 66c-3.25 12.062-7.063 19.937-12 24s-11.625 5.999-18 6zM836 318c-6.375 0-13-1.937-18-6s-7.25-11.5-10-22c-3.625-13.625-6-35.75-6-68s0.75-55.938 4-68c3.25-12.063 7.062-20 12-24s11.625-6 18-6c6.375 0 11 1.937 16 6s9.25 11.5 12 22c3.625 13.5 6 37.75 6 70s-0.75 53.937-4 66c-3.25 12.062-9.063 19.937-14 24s-9.625 5.999-16 6z" />
+<glyph unicode="&#xe964;" glyph-name="it-net" d="M512 960c-282.77 0-512-229.229-512-512s229.23-512 512-512c282.77 0 512 229.229 512 512s-229.23 512-512 512zM460 860c-0.035-0.64 0-1.344 0-1.984v-144h-106c13.653 49.069 32.968 94.080 54 136 16.822 4.352 34.424 7.789 52 10.003zM564 860c14.799-1.856 29.727-4.608 44-8 21.464-42.010 40.007-88.672 54-138.003h-98v144c0 0.64 0.035 1.344 0 1.984zM728 801.997c38.764-23.725 74.975-53.293 104-88h-74c-8.692 30.573-18.367 60.154-30 88zM286 795.981c-10.493-26.163-20.063-53.523-28-82.003h-66c26.566 31.763 59.179 59.334 94 82.003zM894 613.978c15.484-35.52 24.974-74.131 30-113.997h-134c-1.3 38.579-4.291 75.648-10 112h102c3.699 0 8.643 0.96 12 1.984zM128 611.994h110c-5.555-36.416-10.864-73.389-12-112h-126c4.91 38.938 13.095 77.184 28 112zM332 611.994h128v-112h-138c1.129 38.362 4.536 75.872 10 112zM564 611.994h120c5.637-36.122 8.706-73.606 10-112h-130v112zM100 395.994h128c3.115-38.906 10.371-75.571 18-112h-118c-14.905 34.816-23.090 73.062-28 112zM324 395.994h136v-112h-120c-7.481 36.346-12.966 73.126-16 112zM564 395.994h130c-2.897-38.304-8.783-76.128-16-112h-114v112zM788 395.994h136c-4.91-38.938-13.095-77.184-28-112h-124c7.324 35.814 13.028 73.824 16 112zM194 179.994h78c12.495-36.038 29.429-68.461 46-100-47.143 24.954-89.788 59.642-124 100zM368 179.994h92v-144c-7.868 0.96-16.275 0.64-24 1.984-26.587 42.522-49.947 89.542-68 142.003zM564 179.994h86c-17.597-51.622-40.138-99.91-66-142.003-6.473-1.152-13.428-1.152-20-1.984v144zM746 179.994h84c-35.169-41.491-79.231-76.851-128-102.003 16.61 31.923 31.55 65.536 44 102.003z" />
+<glyph unicode="&#xe965;" glyph-name="it-other" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM248 730l124-32-142-528-122 32 140 528zM448 728h128v-546h-128v546zM774 726l142-528-124-32-142 528 124 32z" />
+<glyph unicode="&#xe966;" glyph-name="it-other-alteon" d="M832 960h-640c-105.984 0-192-85.969-192-192v-640c0-106.031 86.016-192 192-192h640c106.031 0 192 85.969 192 192v640c0 106.031-85.969 192-192 192zM607.697 875.008c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012c-44.218 0-80.012 35.84-80.012 80.012s35.747 80.012 80.012 80.012zM392.332 875.008c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012-80.012 35.84-80.012 80.012 35.84 80.012 80.012 80.012zM177.012 714.985c-44.172 0-80.012 35.84-80.012 80.012s35.84 80.012 80.012 80.012 80.012-35.84 80.012-80.012-35.84-80.012-80.012-80.012zM574.65 14.010l-45.382 117.993h-162.863l-42.775-117.993h-54.691l149.551 389.446h55.529l159.372-389.446h-58.74zM607.697 448.977c-44.218 0-80.012 35.84-80.012 80.012s35.793 80.012 80.012 80.012c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012zM715.171 14.010h-47.802v389.446h47.802v-389.446zM823.017 448.977c-44.172 0-80.012 35.84-80.012 80.012s35.84 80.012 80.012 80.012 79.965-35.84 79.965-80.012-35.793-80.012-79.965-80.012zM823.017 714.985c-44.172 0-80.012 35.84-80.012 80.012s35.84 80.012 80.012 80.012 79.965-35.84 79.965-80.012-35.793-80.012-79.965-80.012zM445.021 362.496c-4.934-24.948-11.962-49.757-20.945-74.38l-42.775-114.176h132.049l-40.681 107.753c-12.428 32.815-21.597 59.811-27.648 80.803z" />
+<glyph unicode="&#xe967;" glyph-name="it-other-appdirector" d="M816.035 337.129c-8.611 2.281-24.436 3.398-47.569 3.398h-98.49v-137.681h99.561c32.954 0 56.32 6.144 70.191 18.432 13.824 12.241 20.713 29.51 20.713 51.712 0 16.151-4.049 29.929-12.195 41.425-8.192 11.45-18.944 19.037-32.209 22.714zM832 960h-640c-105.984 0-192-85.969-192-192v-640c0-105.984 86.016-192 192-192h640.047c105.937 0 191.953 86.016 191.953 192v640c0 106.031-86.016 192-192 192zM823.017 875.008c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012-80.012 35.84-80.012 80.012c0 44.172 35.793 80.012 80.012 80.012zM823.017 609.001c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012-80.012 35.84-80.012 80.012c0 44.172 35.793 80.012 80.012 80.012zM607.744 875.008c44.125 0 80.012-35.84 80.012-80.012s-35.887-80.012-80.012-80.012c-44.265 0-80.058 35.84-80.058 80.012s35.747 80.012 80.058 80.012zM392.332 875.008c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012c-44.172 0-80.012 35.84-80.012 80.012s35.84 80.012 80.012 80.012zM177.012 714.985c-44.172 0-80.012 35.84-80.012 80.012s35.84 80.012 80.012 80.012c44.172 0 80.012-35.84 80.012-80.012s-35.84-80.012-80.012-80.012zM520.192 0.838l-44.916 116.643h-161.094l-42.31-116.643h-54.132l147.921 385.164h54.924l157.649-385.164h-58.042zM527.686 528.989c0 44.172 35.793 80.012 80.058 80.012 44.125 0 80.012-35.84 80.012-80.012s-35.887-80.012-80.012-80.012c-44.311 0-80.058 35.84-80.058 80.012zM881.711 191.441c-20.852-22.668-58.554-34.025-113.012-34.025h-98.769v-156.579h-51.014v385.164h145.315c25.553 0 45.103-1.21 58.601-3.677 18.897-3.119 34.769-9.123 47.523-18.013s23.087-21.225 30.86-37.19c7.82-15.965 11.683-33.466 11.683-52.55 0.047-32.768-10.333-60.416-31.185-83.13zM391.959 345.553c-4.887-24.716-11.823-49.245-20.759-73.588l-42.31-112.966h130.607l-40.215 106.682c-12.241 32.349-21.364 59.020-27.322 79.872z" />
+<glyph unicode="&#xe968;" glyph-name="it-other-atca-lb10" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM518 730h186c36.836-0.001 65.899-2.491 84-6s33.71-10.875 48-22c14.289-11.126 26.473-25.499 36-44 9.526-18.503 14-39.023 14-62 0-24.912-6.251-47.2-18-68s-27.889-37.6-48-48c28.367-9.433 50.757-25.266 66-48s22-49.284 22-80c0-24.186-4.156-47.145-14-70s-22.959-40.335-40-54c-17.042-13.665-39.020-22.856-64-26-15.666-1.936-52.089-3.521-112-4h-160v532zM124 726h94v-438h234v-90h-328v528zM612 642v-124h62c36.624-0.001 59.108 0.803 68 2 16.089 2.175 28.791 9.479 38 20s14 24.828 14 42c0 16.446-4.061 29.72-12 40-7.939 10.278-18.334 15.823-34 18-9.315 1.211-37.755 2-82 2h-54zM612 430v-142h88c33.872 0 54.897 1.825 64 4 13.972 2.9 25.214 8.754 34 20s14 27.135 14 46c0 15.962-3.226 28.874-10 40s-17.192 18.921-30 24c-12.808 5.083-41.237 7.999-84 8h-76z" />
+<glyph unicode="&#xe969;" glyph-name="it-other-cisco-ucs" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM528 630c37.548-0.001 68.55-12.645 92-38 13.958-14.991 23.021-37.933 30-66l-60-16c-3.629 18.179-12.484 33.475-24 44s-25.529 13.999-42 14c-22.752-0.001-39.832-9.342-54-28s-22-48.219-22-90c0-44.333 8.041-75.183 22-94s31.666-28 54-28c16.471 0 30.135 6.038 42 18 11.864 11.96 20.835 30.325 26 56l60-22c-9.213-38.273-24.574-67.422-46-86s-49.058-28-82-28c-40.759 0-73.758 16.186-100 48s-40 76.823-40 132c0 58.366 13.618 103.707 40 136s61.008 47.999 104 48zM812 630c38.525-0.001 68.528-10.704 88-30s29.023-43.787 30-76l-62-4c-2.653 18.020-7.276 30.106-16 38s-22.552 12-40 12c-18.007 0-31.81-3.55-42-12-6.561-5.425-10-12.911-10-22 0-8.293 3.859-14.1 10-20 7.817-7.495 25.85-15.867 56-24s51.553-17.309 66-26c14.447-8.691 25.834-20.93 34-36s14-33.834 14-56c0-20.093-6.23-38.458-16-56s-24.133-29.468-42-38c-17.867-8.532-39.339-14-66-14-38.805 0-69.202 11.508-90 32s-31.952 48.77-36 88l60 8c3.629-23.124 10.903-41.156 22-52s25.156-16 44-16c19.96 0 35.88 4.351 46 14 10.12 9.647 16 21.083 16 34 0 8.292-3.743 16.179-8 22s-11.392 11.694-22 16c-7.259 2.866-24.177 6.664-50 14-33.221 9.409-56.6 22.285-70 36-18.844 19.296-28 42.252-28 70 0 17.86 5.136 34.451 14 50s21.32 27.867 38 36 36.41 11.999 60 12zM84 624h62v-190c0-30.139 2.464-51.070 4-60 2.652-14.352 8.020-25.309 18-34s24.691-12 42-12c17.587 0 29.066 3.786 38 12 8.933 8.213 16.185 18.040 18 30s2 32.252 2 60v194h62v-184c0-42.1-2.65-72.618-6-90s-8.997-32.040-18-44c-9.003-11.96-20.925-20.904-36-28s-33.712-12-58-12c-29.313 0-52.855 4.264-68 12s-27.206 17.641-36 30-13.208 26.445-16 40c-4.048 20.093-8 48.77-8 88v188z" />
+<glyph unicode="&#xe96a;" glyph-name="it-other-dcs" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM528 630c37.548-0.001 68.55-12.645 92-38 13.958-14.991 23.021-37.933 30-66l-60-16c-3.629 18.179-12.484 33.475-24 44s-25.529 13.999-42 14c-22.752-0.001-39.832-9.342-54-28s-22-48.219-22-90c0-44.333 8.041-75.183 22-94s31.666-28 54-28c16.471 0 30.135 6.038 42 18 11.864 11.96 20.835 30.325 26 56l60-22c-9.213-38.273-24.574-67.422-46-86s-49.058-28-82-28c-40.759 0-73.758 16.186-100 48s-40 76.823-40 132c0 58.366 13.618 103.707 40 136s61.008 47.999 104 48zM812 630c38.525-0.001 68.528-10.704 88-30s29.023-43.787 30-76l-62-4c-2.653 18.020-7.276 30.106-16 38s-22.552 12-40 12c-18.007 0-31.81-3.55-42-12-6.561-5.425-10-12.911-10-22 0-8.293 1.859-14.1 8-20 7.817-7.495 27.85-15.867 58-24s51.553-17.309 66-26c14.447-8.691 25.834-20.93 34-36s12-33.834 12-56c0-20.093-4.23-38.458-14-56s-24.133-29.468-42-38c-17.867-8.532-39.339-14-66-14-38.805 0-69.202 11.508-90 32s-31.952 48.77-36 88l60 8c3.629-23.124 10.903-41.156 22-52s25.156-16 44-16c19.96 0 35.88 4.351 46 14 10.12 9.647 14 21.083 14 34 0 8.292-1.743 16.179-6 22s-11.392 11.694-22 16c-7.259 2.866-24.177 6.664-50 14-33.221 9.409-56.6 22.285-70 36-18.844 19.296-28 42.252-28 70 0 17.86 5.137 34.451 14 50s21.32 27.867 38 36 36.41 11.999 60 12zM86 624h112c25.544-0.001 44.6-3.533 58-8 18.006-6.061 35.158-16.532 48-32s21.3-33.595 28-56c6.7-22.405 10-51.149 10-84 0-28.864-3.719-53.109-10-74-7.677-25.515-17.763-46.212-32-62-10.748-11.96-25.715-21.302-44-28-13.679-4.946-31.108-8-54-8h-116v352zM148 564v-232h46c17.308 0 28.323 1.77 36 4 10.050 2.873 19.37 7.142 26 14s11.812 18.292 16 34c4.187 15.708 6 36.89 6 64s-1.813 47.488-6 62c-4.188 14.512-10.463 25.866-18 34s-16.415 13.129-28 16c-8.654 2.23-26.735 4-52 4h-26z" />
+<glyph unicode="&#xe96b;" glyph-name="it-other-delta" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM88 624h112c25.544-0.001 46.6-3.533 60-8 18.006-6.061 33.158-16.532 46-32s21.3-33.595 28-56c6.7-22.405 10-51.149 10-84 0-28.864-1.719-53.109-8-74-7.677-25.515-19.763-46.212-34-62-10.748-11.96-25.715-21.302-44-28-13.679-4.946-31.108-8-54-8h-116v352zM748 624h66l122-352h-66l-28 80h-122l-26-80h-66l120 352zM400 620h62v-288h154v-60h-216v348zM150 564v-232h46c17.308 0 30.323 1.77 38 4 10.050 2.873 17.37 7.142 24 14s11.812 18.292 16 34c4.187 15.708 6 36.89 6 64s-1.813 47.488-6 62c-4.188 14.512-10.463 25.866-18 34s-16.415 13.129-28 16c-8.654 2.23-24.735 4-50 4h-28zM780 542l-42-130h84l-42 130z" />
+<glyph unicode="&#xe96c;" glyph-name="it-other-dp" d="M799.651 577.164c-9.123 2.42-26.159 3.677-50.921 3.677h-105.472v-147.363h106.589c35.281 0 60.276 6.563 75.124 19.689 14.708 13.126 22.295 31.604 22.295 55.389 0 17.268-4.422 32.023-13.126 44.311-8.797 12.241-20.294 20.34-34.49 24.297zM887.994 960h-751.988c-75.59 0-136.006-60.416-136.006-136.006v-751.988c0-75.543 60.416-136.006 136.006-136.006h751.988c75.543 0 136.006 60.463 136.006 136.006v751.988c0 75.59-60.463 136.006-136.006 136.006zM445.021 342.295c-7.308-24.204-16.663-44.172-28.113-60.044-11.45-15.919-23.971-28.3-37.562-37.423s-30.022-16.012-49.199-20.666c-19.223-4.655-41.286-7.028-66.234-7.028h-148.759v412.346h142.010c32.070 0 56.506-1.955 73.402-5.911 23.599-5.446 43.753-15.313 60.463-29.556 21.737-18.339 37.981-41.844 48.826-70.423 10.752-28.579 16.151-61.254 16.151-98.025-0.047-31.279-3.677-59.066-10.985-83.27zM869.981 421.19c-22.342-24.297-62.65-36.445-121.018-36.445h-105.705v-167.61h-54.551v412.346h155.555c27.369 0 48.221-1.303 62.743-3.956 20.294-3.351 37.143-9.775 50.874-19.27 13.638-9.495 24.762-22.714 33.001-39.75 8.425-17.082 12.614-35.84 12.614-56.227 0-35.142-11.217-64.791-33.513-89.088zM326.889 572.369c-14.615 5.632-38.167 8.471-70.609 8.471h-86.575v-315.020h88.064c27.183 0 48.5 2.56 64 7.54 15.453 5.12 27.788 12.288 36.957 21.364 12.94 12.986 22.993 30.394 30.208 52.224 7.215 21.783 10.845 48.314 10.845 79.407 0 43.148-7.075 76.288-21.225 99.468-14.196 23.133-31.418 38.679-51.665 46.545z" />
+<glyph unicode="&#xe96d;" glyph-name="it-other-e9000" d="M743.936 960h-471.459c-152.623 0-276.294-124.975-276.294-279.133v-465.734c0-154.159 123.671-279.133 276.294-279.133h471.505c152.529 0 276.247 125.021 276.247 279.133v465.734c-0.047 154.159-123.718 279.133-276.294 279.133zM234.17 182.877c-8.657-25.088-21.504-44.172-38.54-57.297-17.082-13.079-37.050-19.642-60.044-19.642-24.343 0-44.265 7.168-59.671 21.597-15.453 14.383-24.716 34.583-27.834 60.695l36.771 3.584c3.119-18.385 9.030-31.744 17.827-39.983 8.751-8.285 20.015-12.428 33.792-12.428 11.729 0 22.063 2.886 30.906 8.611 8.844 5.679 16.105 13.359 21.783 22.9 5.679 9.588 10.426 22.481 14.243 38.772s5.725 32.861 5.725 49.711c0 1.815-0.047 4.515-0.186 8.145-7.68-12.94-18.106-23.459-31.325-31.558-13.219-8.052-27.555-12.102-43.008-12.102-25.786 0-47.569 9.961-65.443 29.882-17.827 19.875-26.764 46.080-26.764 78.615 0 33.606 9.309 60.649 27.927 81.129s41.937 30.72 70.004 30.72c20.247 0 38.772-5.818 55.529-17.408 16.756-11.636 29.51-28.16 38.214-49.617 8.751-21.457 13.079-52.55 13.079-93.231 0-42.356-4.329-76.009-12.986-101.097zM402.991 867.514h214.063v-40.401h-174.871v-104.82h163.747v-40.169h-163.747v-116.503h181.76v-40.401h-220.951v342.295zM476.113 180.829c-7.494-23.878-18.711-42.356-33.652-55.343-14.941-13.033-33.839-19.549-56.599-19.549-30.022 0-53.62 11.45-70.749 34.304-20.527 27.601-30.813 72.518-30.813 134.749 0 39.191 3.817 70.703 11.357 94.58 7.587 23.878 18.851 42.263 33.792 55.249 14.941 12.94 33.745 19.409 56.413 19.409 16.71 0 31.372-3.584 43.985-10.705 12.614-7.168 22.993-17.501 31.185-30.953 8.239-13.498 14.662-29.929 19.363-49.292s6.982-45.475 6.982-78.336c0-38.865-3.77-70.284-11.264-94.115zM718.057 180.829c-7.494-23.878-18.711-42.356-33.699-55.343-14.895-13.033-33.839-19.549-56.599-19.549-30.068 0-53.574 11.45-70.749 34.304-20.527 27.601-30.813 72.518-30.813 134.749 0 39.191 3.817 70.703 11.357 94.58 7.587 23.878 18.851 42.263 33.792 55.249 14.941 12.94 33.745 19.409 56.413 19.409 16.71 0 31.372-3.584 43.939-10.705 12.614-7.168 23.040-17.501 31.232-30.953 8.239-13.498 14.662-29.929 19.316-49.292 4.701-19.363 7.028-45.475 7.028-78.336 0.047-38.865-3.724-70.284-11.217-94.115zM960 180.829c-7.494-23.878-18.711-42.356-33.699-55.343-14.895-13.033-33.839-19.549-56.599-19.549-30.068 0-53.574 11.45-70.749 34.304-20.527 27.601-30.813 72.518-30.813 134.749 0 39.191 3.817 70.703 11.357 94.58 7.587 23.878 18.851 42.263 33.792 55.249 14.941 12.94 33.745 19.409 56.413 19.409 16.71 0 31.372-3.584 43.939-10.705 12.614-7.168 23.040-17.501 31.232-30.953 8.239-13.498 14.662-29.929 19.316-49.292 4.701-19.363 7.028-45.475 7.028-78.336 0.047-38.865-3.724-70.284-11.217-94.115zM627.386 410.531c-17.594 0-31.604-7.913-42.077-23.738-13.126-20.201-19.735-57.437-19.735-111.849s5.958-90.577 17.967-108.591c11.962-18.013 26.717-26.996 44.265-26.996s32.303 8.983 44.265 27.089c12.009 18.106 17.967 54.272 17.967 108.497 0 54.551-5.958 90.764-17.967 108.73-11.962 17.92-26.903 26.857-44.684 26.857zM385.396 410.531c-17.548 0-31.558-7.913-42.031-23.738-13.172-20.201-19.782-57.437-19.782-111.849s6.004-90.577 17.967-108.591c11.962-18.013 26.717-26.996 44.311-26.996 17.548 0 32.303 8.983 44.311 27.089 11.962 18.106 17.92 54.272 17.92 108.497 0 54.551-5.958 90.764-17.92 108.73-12.009 17.92-26.903 26.857-44.777 26.857zM869.329 410.531c-17.594 0-31.604-7.913-42.077-23.738-13.126-20.201-19.735-57.437-19.735-111.849s5.958-90.577 17.967-108.591c11.962-18.013 26.717-26.996 44.265-26.996s32.303 8.983 44.265 27.089c12.009 18.106 17.967 54.272 17.967 108.497 0 54.551-5.958 90.764-17.967 108.73-11.962 17.92-26.857 26.857-44.684 26.857zM144.989 410.531c-16.989 0-31.791-7.354-44.404-22.156-12.614-14.755-18.897-33.932-18.897-57.391 0-21.085 6.004-38.214 17.967-51.386s26.717-19.782 44.311-19.782c17.687 0 32.256 6.609 43.66 19.782s17.082 31.465 17.082 54.831c0 23.319-5.818 41.844-17.501 55.575-11.729 13.684-25.833 20.527-42.217 20.527z" />
+<glyph unicode="&#xe96e;" glyph-name="it-other-f5bigip" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM200 692h288v-82h-202v-112h174v-82h-174v-204h-86v480zM592 686h212v-86h-150l-14-82c17.929 10.241 37.308 16 56 16 35.667 0 65.204-16.365 90-46 24.795-29.636 38-66.714 38-114 0-39.441-9.973-75.057-30-106-27.275-42.274-65.554-64-114-64-38.719 0-69.586 12.248-94 36s-39.232 55.905-44 96l80 10c2.289-20.701 8.747-37.906 20-50s23.313-18 38-18c16.784 0 32.365 8.42 44 24s16 38.622 16 70c0 29.417-4.461 51.291-16 66s-27.499 22-46 22c-23.079 0-43.69-12.684-62-36l-64 12 40 250z" />
+<glyph unicode="&#xe96f;" glyph-name="it-other-f5bigip2" d="M114 960c-63.812 0-114-47.546-114-108v-602c0-53.579 40.456-98.664 94-108v590c0 64.077 53.716 114 120 114h650v6c0 60.454-50.188 108-114 108zM273.868 750.368c-63.812 0-114.869-48.378-114.869-108.832v-601.779c0-60.454 51.057-108.832 114.869-108.832h635.16c63.812 0 114.869 48.378 114.869 108.832v601.779c0 60.454-51.057 108.832-114.869 108.832h-635.16zM327.924 535.904h243.253v-65.619h-170.615v-89.626h146.965v-65.619h-146.965v-163.251h-72.638v384.115zM659.018 531.104h179.061v-68.819h-126.694l-11.825-65.619c15.143 8.192 31.511 12.8 47.299 12.8 30.125 0 55.074-13.094 76.017-36.813 20.943-23.712 32.096-53.382 32.096-91.226 0-31.558-8.424-60.064-25.339-84.826-23.037-33.824-55.369-51.213-96.288-51.213-32.703 0-58.775 9.798-79.395 28.806s-33.136 44.742-37.164 76.826l67.57 8c1.933-16.563 7.388-30.33 16.893-40.013 9.505-9.677 19.691-14.4 32.096-14.4 14.177 0 27.336 6.739 37.164 19.206s13.514 30.906 13.514 56.013c0 23.539-3.768 41.043-13.514 52.819-9.747 11.77-23.226 17.6-38.853 17.6-19.493 0-36.902-10.15-52.367-28.806l-54.056 9.606 33.785 200.058z" />
+<glyph unicode="&#xe970;" glyph-name="it-other-gbe2c" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM230 802c36.969 0 65.213-6.495 86-22s34.041-36.646 40-64l-60-12c-4.198 14.625-12.422 25.536-24 34s-24.667 14-42 14c-26.271 0-48.495-9.344-64-26s-22-41.229-22-74c0-35.344 8.292-62.328 24-80s34.542-26 60-26c12.594 0 25.338 3.057 38 8s24.927 10.958 34 18v38h-70v50h130v-118c-12.594-12.188-30.099-24.724-54-34s-49.49-14-74-14c-31.146 0-56.844 6.932-80 20s-40.354 31.693-52 56c-11.646 24.307-18 51.427-18 80 0 31.010 7 57.896 20 82s30.948 43.135 56 56c19.094 9.885 43.562 14 72 14zM416 798h118c23.562 0 42.422-2.037 54-4s20.859-5.771 30-12c9.14-6.229 17.906-13.641 24-24s8-23.136 8-36c0-13.948-2.485-26.354-10-38s-19.136-20.177-32-26c18.146-5.281 32.25-13.271 42-26s14-28.802 14-46c0-13.542-1.704-27.203-8-40s-15.099-22.349-26-30c-10.901-7.651-24.021-12.24-40-14-10.021-1.083-35.677-1.729-74-2h-100v298zM716 798h220v-50h-160v-66h150v-50h-150v-82h166v-50h-226v298zM476 748v-68h40c23.427 0 36.312-0.677 42 0 10.291 1.219 18.109 6.109 24 12s10 12.385 10 22c0 9.208-2.922 16.245-8 22s-11.979 10.781-22 12c-5.959 0.677-23.698 0-52 0h-34zM476 630v-80h56c21.666 0 34.177 0.781 40 2 8.937 1.625 16.38 5.703 22 12s8 15.437 8 26c0 8.937-1.667 15.771-6 22s-9.807 11.156-18 14c-8.193 2.844-26.646 4-54 4h-48zM652 384c39.229 0 71.5-12.813 96-36 14.583-13.709 24.708-32.334 32-58l-64-16c-3.792 16.625-11.969 30.375-24 40s-26.792 14-44 14c-23.771 0-43.198-8.938-58-26s-22-43.792-22-82c0-40.542 7.417-68.792 22-86s34.667-26 58-26c17.208 0 31.604 5.062 44 16s20.604 28.521 26 52l64-20c-9.625-35-25.615-61.010-48-78s-51.584-26-86-26c-42.583 0-76.583 14.906-104 44s-42 67.542-42 118c0 53.375 14.437 96.468 42 126s63.083 44 108 44zM356 380c31.646 0 55.916-8.938 74-26s28-38.625 28-64c0-14.438-2.823-26.948-8-40s-12.771-27.708-24-42c-7.438-9.479-20.604-22.208-40-40s-32.823-30.167-38-36c-5.177-5.834-8.792-12.458-12-18h122v-56h-216c2.333 21.583 10.333 40.677 22 60s33.583 46.062 68 78c27.708 25.812 45.729 42.812 52 52 8.458 12.687 12 25.604 12 38 0 13.708-2.636 24.635-10 32s-19.021 10-32 10c-12.833 0-22.417-4.271-30-12s-10.833-20.063-12-38l-62 6c3.646 33.833 14.75 59.271 34 74s43.125 22 72 22z" />
+<glyph unicode="&#xe971;" glyph-name="it-other-h3c" d="M888 960h-752c-75.584 0-136-60.416-136-136v-752c0-75.648 60.416-136 136-136h752c75.648 0 136 60.352 136 136v752c0 75.584-60.352 136-136 136zM366.144 305.6h-42.432v151.168h-166.72v-151.104h-42.432v320.64h42.432v-131.712h166.656v131.712h42.432v-320.704zM600.448 329.152c-20.416-19.52-46.272-29.248-77.44-29.248-28.096 0-51.52 8.384-70.144 25.216-18.56 16.768-29.184 38.464-31.808 65.152l39.36 5.248c4.48-22.336 12.16-38.4 23.040-48.256 10.88-9.792 24.128-14.72 39.744-14.72 18.496 0 34.112 6.4 46.848 19.264s19.136 28.736 19.136 47.68c0 18.112-5.888 33.024-17.664 44.736s-26.752 17.536-44.992 17.536c-7.424 0-16.704-1.472-27.776-4.352l4.352 34.56c2.624-0.256 4.736-0.448 6.336-0.448 16.768 0 31.872 4.352 45.312 13.12 13.376 8.768 20.096 22.272 20.096 40.448 0 14.464-4.928 26.432-14.656 35.904s-22.4 14.208-37.824 14.208c-15.36 0-28.096-4.8-38.336-14.464s-16.704-24-19.648-43.264l-39.36 6.976c4.8 26.432 15.744 46.848 32.768 61.376 17.088 14.528 38.336 21.76 63.68 21.76 17.472 0 33.536-3.776 48.32-11.264 14.72-7.488 25.984-17.728 33.792-30.72s11.712-26.752 11.712-41.344c0-13.824-3.712-26.496-11.2-37.824-7.36-11.392-18.432-20.416-32.96-27.136 18.944-4.416 33.664-13.504 44.16-27.264s15.744-30.976 15.744-51.712c0-28.032-10.176-51.776-30.592-71.168zM909.184 327.552c-23.104-18.304-51.392-27.456-84.8-27.456-34.496 0-62.656 6.976-84.288 21.12-21.632 14.080-38.144 34.432-49.408 61.12s-16.96 55.36-16.96 85.952c0 33.408 6.4 62.528 19.136 87.424 12.736 24.832 30.912 43.776 54.528 56.64 23.552 12.928 49.408 19.392 77.76 19.392 32.064 0 59.072-8.128 80.96-24.512s37.12-39.296 45.76-68.928l-41.792-9.856c-7.424 23.36-18.24 40.32-32.384 50.944s-31.936 16-53.376 16c-24.64 0-45.248-5.888-61.824-17.728s-28.16-27.648-34.88-47.616c-6.656-19.904-10.048-40.384-10.048-61.568 0-27.264 4.032-51.072 11.968-71.424 7.936-20.288 20.288-35.52 37.056-45.632 16.768-9.984 34.944-15.040 54.464-15.040 23.808 0 43.968 6.784 60.352 20.544 16.512 13.76 27.712 34.048 33.472 61.056l42.432-10.688c-9.024-34.816-25.024-61.44-48.128-79.744z" />
+<glyph unicode="&#xe972;" glyph-name="it-other-hpblc" d="M136 960c-75.55 0-136-60.45-136-136v-410h1024v410c0 75.55-60.45 136-136 136h-752zM228 826h64v-128h128v128h64v-322h-64v140h-128v-140h-64v322zM550 826h104c39.375 0 66.041-2.792 78-6 18.375-4.813 33.604-15.886 46-32s18-36.479 18-62c0-19.688-2.854-36.584-10-50s-16.99-22.344-28-30c-11.011-7.656-20.625-13.521-32-16-15.459-3.063-38.688-4-68-4h-42v-122h-66v322zM616 770v-90h36c25.521 0 41.396 0.646 50 4s15.114 8.854 20 16c4.885 7.146 8 16.521 8 26 0 11.666-3.146 20.416-10 28s-15.5 12.104-26 14c-7.729 1.458-24.667 2-48 2h-30zM782 362c-39.962 0-71.478-10.197-96-32s-38-52.592-38-92c0-37.254 13.608-66.52 38-88s54.114-32 92-32c30.62 0 56.084 5.456 76 18s33.436 32.159 42 58l-54 14c-4.801-17.335-12.972-29.925-24-38s-24.69-12-40-12c-20.76 0-37.025 7.295-50 20s-20 32.067-20 62c0 28.21 6.831 49.402 20 62s30.851 20 52 20c15.31 0 27.296-4.894 38-12s18.626-15.726 22-28l56 10c-6.488 18.95-17.026 33.879-30 44-21.798 17.12-49.098 26-84 26zM128 358v-236h96c36.718 0.218 60.399-0.861 70 0 15.31 1.4 27.555 5.917 38 12s17.966 13.825 24 24c6.033 10.175 10 21.233 10 32 0 13.674-4.658 25.879-14 36s-22.614 15.801-40 20c12.326 4.63 22.799 12.74 30 22s10 18.91 10 30c0 10.229-2.162 19.763-8 28s-13.242 15.047-22 20c-8.758 4.953-18.907 8.439-30 10s-27.424 2-50 2h-114zM416 356v-234h202v40h-144v194h-58zM184 318h34c27.117 0 42.291 0.538 48 0 9.601-0.97 17.134-3.424 22-8s8-10.679 8-18c0-7.645-2.356-13.317-8-18s-14.139-9.031-24-10c-5.45-0.538-19.554 0-42 0h-38v54zM184 224h48c26.209 0 42.15-1.739 50-4s13.848-5.047 18-10c4.152-4.953 6-10.894 6-18 0-8.398-2.616-14.994-8-20s-11.437-8.708-20-10c-5.579-0.97-19.241 0-40 0h-54v62zM0 74v-2c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v2h-1024z" />
+<glyph unicode="&#xe973;" glyph-name="it-other-imm" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM108 608h64v-320h-64v320zM232 608h98l58-218 58 218h96v-320h-60v252l-64-252h-62l-62 252v-252h-62v320zM606 608h98l58-218 58 218h96v-320h-60v252l-64-252h-62l-64 252v-252h-60v320z" />
+<glyph unicode="&#xe974;" glyph-name="it-other-secsis" d="M887.994 960h-751.988c-75.59 0-136.006-60.416-136.006-136.006v-751.988c0-75.543 60.416-136.006 136.006-136.006h751.988c75.543 0 136.006 60.463 136.006 136.006v751.988c0 75.59-60.463 136.006-136.006 136.006zM405.923 271.546c-12.567-19.363-30.627-34.49-54.179-45.242-23.505-10.799-49.99-16.198-79.453-16.198-37.329 0-68.608 5.399-93.836 16.337-25.228 10.845-45.009 27.183-59.299 49.059-14.383 21.876-21.923 46.545-22.668 74.147l51.433 4.515c2.467-20.62 8.099-37.609 16.989-50.781 8.89-13.219 22.761-23.924 41.519-32.023 18.758-8.192 39.843-12.288 63.302-12.288 20.806 0 39.191 3.072 55.11 9.309 15.919 6.144 27.788 14.615 35.607 25.46 7.773 10.705 11.636 22.528 11.636 35.328 0 12.847-3.77 24.204-11.264 33.885-7.494 9.635-19.875 17.734-37.097 24.297-11.078 4.329-35.561 10.985-73.402 20.154-37.888 9.030-64.419 17.687-79.593 25.693-19.689 10.38-34.397 23.133-44.032 38.447-9.635 15.267-14.476 32.349-14.476 51.293 0 20.806 5.911 40.262 17.687 58.368 11.823 18.060 29.091 31.837 51.759 41.193 22.807 9.309 48.035 14.010 75.776 14.010 30.58 0 57.53-4.934 80.849-14.755 23.366-9.868 41.286-24.343 53.853-43.473s19.316-40.774 20.247-64.977l-52.317-3.956c-2.839 26.065-12.335 45.754-28.579 59.066-16.198 13.359-40.122 20.015-71.82 20.015-33.001 0-57.065-6.051-72.145-18.153s-22.621-26.671-22.621-43.753c0-14.801 5.353-26.996 16.012-36.538 10.519-9.588 37.888-19.409 82.292-29.417 44.311-10.054 74.752-18.851 91.229-26.298 24.017-10.985 41.705-25.088 53.155-41.984 11.45-16.989 17.129-36.538 17.129-58.647 0.047-22.016-6.237-42.636-18.804-62.092zM862.115 271.546c-12.614-19.363-30.627-34.49-54.132-45.242-23.645-10.799-50.129-16.198-79.5-16.198-37.376 0-68.655 5.399-93.789 16.337-25.228 10.845-45.009 27.183-59.345 49.059s-21.876 46.545-22.621 74.147l51.526 4.515c2.374-20.62 8.006-37.609 16.989-50.781 8.844-13.219 22.575-23.924 41.472-32.023 18.618-8.192 39.75-12.288 63.255-12.288 20.713 0 39.145 3.072 55.156 9.309 15.872 6.144 27.741 14.615 35.514 25.46 7.866 10.705 11.729 22.528 11.729 35.328 0 12.847-3.724 24.204-11.217 33.885-7.494 9.635-19.875 17.734-37.143 24.297-11.124 4.329-35.654 10.985-73.356 20.154-37.981 9.030-64.512 17.687-79.639 25.693-19.735 10.38-34.351 23.133-43.985 38.447-9.728 15.267-14.522 32.349-14.522 51.293 0 20.806 5.865 40.262 17.78 58.368 11.729 18.060 28.998 31.837 51.712 41.193 22.621 9.402 47.849 14.057 75.636 14.057 30.487 0 57.484-4.934 80.849-14.755 23.226-9.868 41.239-24.343 53.853-43.473 12.521-19.13 19.27-40.774 20.294-64.977l-52.364-3.956c-2.793 26.065-12.428 45.754-28.532 59.066-16.244 13.312-40.215 19.968-71.866 19.968-33.001 0-57.158-6.051-72.145-18.153-15.081-12.055-22.575-26.671-22.575-43.706 0-14.801 5.213-26.996 16.012-36.538 10.519-9.588 37.841-19.409 82.246-29.417 44.358-10.054 74.752-18.851 91.276-26.298 24.017-10.985 41.705-25.088 53.108-41.984 11.543-16.989 17.268-36.538 17.268-58.647-0.047-22.063-6.423-42.682-18.944-62.138z" />
+<glyph unicode="&#xe975;" glyph-name="it-other-vc" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM714 644c46.577 0 84.911-14.61 114-42 17.315-16.194 31.342-37.681 40-68l-76-20c-4.502 19.638-15.716 36.63-30 48s-31.569 16-52 16c-28.223 0-50.426-9.845-68-30s-26-52.866-26-98c0-47.891 8.685-81.672 26-102s40.296-30 68-30c20.431 0 37.282 5.080 52 18s25.593 34.265 32 62l74-24c-11.428-41.345-29.422-71.931-56-92s-61.137-30-102-30c-50.56 0-91.448 17.632-124 52s-50 80.395-50 140c0 63.050 17.275 113.115 50 148s74.67 52 128 52zM156 638h84l96-280 92 280h82l-136-380h-82l-136 380z" />
+<glyph unicode="&#xe976;" glyph-name="it-other-ztepower" d="M136 960c-75.55 0-136-60.45-136-136v-410h1024v410c0 75.55-60.45 136-136 136h-752zM122 814h234v-50l-176-218h182v-54h-260v60l168 208h-148v54zM380 814h256v-54h-96v-268h-64v268h-96v54zM678 814h238v-54h-174v-72h162v-54h-162v-88h180v-54h-244v322zM78 354v-244h56v92h36c25.125 0 44.75 1.665 58 4 9.75 1.89 18.562 4.162 28 10s17.875 13.771 24 24c6.125 10.229 10 22.99 10 38 0 19.458-5.375 35.714-16 48s-24.25 20.331-40 24c-10.25 2.446-32.25 4-66 4h-90zM308 354l66-244h60l56 182 54-182h58l68 244h-56l-42-170-48 170h-66l-50-168-42 168h-58zM698 354v-244h56v102h10c12.75 0 22.125-2.166 28-4s12.75-5.052 18-10c5.25-4.948 13.75-16.987 28-36l40-52h68l-34 48c-13.25 19.013-24.188 30.55-32 38s-18 15.773-30 22c24.125 3.113 41.875 10.047 54 22s18 27.654 18 46c0 14.454-4 26.77-12 38s-18.688 19.608-32 24c-13.313 4.392-34.625 6-64 6h-116zM134 312h28c20 0 33.375 1.112 40 0 9-1.446 16.125-6.219 22-12s8-13.105 8-22c0-7.227-1.813-12.552-6-18s-10.625-9.442-18-12c-7.375-2.557-22.125-4-44-4h-30v68zM754 312h42c22.5-0.001 37.5 0.557 42 0 9-1.334 15.063-4.941 20-10s8-11.772 8-20c0-7.338-2.25-13.108-6-18s-9.375-7.998-16-10c-6.625-2.001-23.375-4-50-4h-40v62zM0 74v-2c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v2h-1024z" />
+<glyph unicode="&#xe977;" glyph-name="it-other-ztesgs" d="M510.016 960l-510.016-128c38.682-381.043-34.883-833.642 502.078-896h19.845c536.96 62.358 463.396 514.957 502.078 896l-513.984 128zM130.977 628h234.171v-50l-174.636-218h180.589v-54h-257.984v60l166.698 208h-148.837v54zM388.961 628h254.016v-54h-95.256v-268h-63.504v268h-95.256v54zM684.651 628h234.171v-54h-170.667v-72h158.76v-54h-158.76v-88h176.62v-54h-240.124v322z" />
+<glyph unicode="&#xe978;" glyph-name="it-other-zxsdr-nt" d="M136 960c-75.55 0-136-60.45-136-136v-752c0-75.55 60.45-136 136-136h752c75.55 0 136 60.45 136 136v752c0 75.55-60.45 136-136 136h-752zM94 698h94l198-334v334h92v-500h-98l-196 326v-326h-90v500zM546 698h384v-84h-144v-416h-96v416h-144v84z" />
+<glyph unicode="&#xe979;" glyph-name="it-router" d="M510.994 960c-282.703 0-510.994-228.291-510.994-510.994s228.291-513.006 510.994-513.006c282.703 0 513.006 230.303 513.006 513.006s-230.303 510.994-513.006 510.994zM506.97 849.352l122.719-122.719h-88.519v-162.955c0-20.826-7.813-82.483-44.259-82.483h-66.389c33.843 9.545 42.248 60.513 42.248 80.472v164.967h-88.519l122.719 122.719zM162.955 603.914v-88.519h166.978c19.959 0 68.914 8.405 78.46 42.248v-66.389c0-36.446-61.657-44.259-82.483-44.259h-162.955v-88.519l-122.719 122.719 122.719 122.719zM859.033 603.914l122.719-122.719-122.719-122.719v88.519h-164.967c-19.959 0-70.926-10.416-80.472-44.259v66.389c0 36.446 61.657 46.271 82.483 46.271h162.955v88.519zM430.522 416.817h66.389c36.446 0 44.259-63.669 44.259-84.495v-160.943h88.519l-122.719-124.731-122.719 124.731h88.519v164.967c0 19.959-8.405 70.926-42.248 80.472z" />
+<glyph unicode="&#xe97a;" glyph-name="it-router-cisco" d="M510 960c-282.703 0-510-227.297-510-510s227.297-514 510-514c9.173 0 18.943 1.521 28 2-36.918 3.27-66 32.204-66 70v74l-88 90h88v164c0 19.959-8.157 70.455-42 80h66c34.803 0 45.287-56.63 46-80 0.678 0.019 1.317 0 2 0h408c19.995 0 38.952-8.952 52-22 11.787 43.072 20 89.259 20 136 0 282.703-231.297 510-514 510zM506 850l124-124h-88v-162c0-20.826-9.554-82-46-82h-66c33.843 9.545 42 60.041 42 80v164h-88l122 124zM162 604v-88h168c19.959 0 68.455 8.157 78 42v-66c0-36.446-61.174-46-82-46h-164v-88l-122 124 122 122zM860 604l122-122-122-124v88h-166c-19.959 0-70.455-10.157-80-44v68c0 36.446 61.174 46 82 46h164v88zM636 274c-35.745 0-64.066-14.163-86-40s-32-61.302-32-108c0-44.146 10.182-78.546 32-104s50.112-38 84-38c27.388 0 50.186 7.136 68 22s30.34 37.378 38 68l-50 18c-4.294-20.542-12.136-36.431-22-46s-20.306-14-34-14c-18.569 0-34.395 6.944-46 22s-18 40.53-18 76c0 33.428 6.22 57.072 18 72s27.083 24 46 24c13.694 0 26.425-5.58 36-14s14.982-19.455 18-34l50 14c-5.803 22.456-14.395 40.006-26 52-19.497 20.287-44.782 30-76 30zM894 274c-35.745 0-64.066-14.163-86-40s-34-61.302-34-108c0-44.146 12.182-78.546 34-104s50.112-38 84-38c27.388 0 50.186 7.136 68 22s30.34 37.378 38 68l-50 18c-4.294-20.542-12.136-36.431-22-46s-22.306-14-36-14c-18.569 0-32.395 6.944-44 22s-18 40.53-18 76c0 33.428 6.221 57.072 18 72s27.083 24 46 24c13.694 0 24.425-5.58 34-14s16.982-19.455 20-34l50 14c-5.803 22.456-14.395 40.006-26 52-19.497 20.287-44.782 30-76 30z" />
+<glyph unicode="&#xe97b;" glyph-name="it-router-juniper" d="M510 960c-282.703 0-510-227.297-510-510s227.297-514 510-514c9.173 0 18.943 1.521 28 2-36.918 3.27-66 32.204-66 70v74l-88 90h88v164c0 19.959-8.157 70.455-42 80h66c34.803 0 45.287-56.63 46-80 0.678 0.019 1.317 0 2 0h408c80.239-45.398 67.455 57.196 72 114 0 282.703-231.297 510-514 510zM506 850l124-124h-88v-162c0-20.826-9.554-82-46-82h-66c33.843 9.545 42 60.041 42 80v164h-88l122 124zM162 604v-88h168c19.959 0 68.455 8.157 78 42v-66c0-36.446-61.174-46-82-46h-164v-88l-122 124 122 122zM860 604l122-122-122-124v88h-166c-19.959 0-70.455-10.157-80-44v68c0 36.446 61.174 46 82 46h164v88zM644 294v-206c0-25.958-2.021-43.761-8-52s-15.563-12-30-12c-14.292 0-25 4.479-32 16-4.667 7.583-7.271 21.625-8 40l-62-8c0.146-34.271 8.937-60.281 26-78s40.354-26 72-26c26.979 0 49.521 6.698 66 18s27.729 25.333 34 44c4.667 14.292 8 35.458 8 62v202h-66zM778 294v-320h66v120h42c29.312 0 50.542 2.938 66 6 11.375 2.479 22.989 6.344 34 14s20.854 18.583 28 32c7.146 13.417 10 30.312 10 50 0 25.521-5.604 45.885-18 62s-27.625 27.187-46 32c-11.959 3.208-38.625 4-78 4h-104zM844 240h30c23.333 0 40.271-0.544 48-2 10.5-1.896 19.146-6.417 26-14s10-18.334 10-30c0-9.479-3.115-16.854-8-24s-11.396-12.646-20-16c-8.604-3.354-26.479-4-52-4h-34v90z" />
+<glyph unicode="&#xe97c;" glyph-name="it-router-zte" d="M510 960c-282.703 0-510-227.297-510-510s227.297-514 510-514c9.173 0 18.943 1.521 28 2-36.918 3.27-66 32.204-66 70v74l-88 90h88v164c0 19.959-8.157 70.455-42 80h66c34.803 0 45.287-56.63 46-80 0.678 0.019 1.317 0 2 0h408c19.995 0 38.952-8.952 52-22 11.787 43.072 20 89.259 20 136 0 282.703-231.297 510-514 510zM506 850l124-124h-88v-162c0-20.826-9.554-82-46-82h-66c33.843 9.545 42 60.041 42 80v164h-88l122 124zM162 604v-88h168c19.959 0 68.455 8.157 78 42v-66c0-36.446-61.174-46-82-46h-164v-88l-122 124 122 122zM860 604l122-122-122-124v88h-166c-19.959 0-70.455-10.157-80-44v68c0 36.446 61.174 46 82 46h164v88zM518 268v-46h90l-100-182v-52h156v48h-110l106 188v44h-142zM674 268v-46h58v-234h38v234h58v46h-154zM852 268v-280h146v48h-106v76h96v48h-96v62h102v46h-142z" />
+<glyph unicode="&#xe97d;" glyph-name="it-sdn-host" d="M498 960c-82.519-2.143-165.486-23.825-242-68-244.845-141.361-329.362-455.154-188-700 106.738-184.875 312.557-278.159 512-252-23.098 16.31-36 37.265-36 58 0 22.862 16.376 42.721 44 60h-32c-41.912 0-76 34.088-76 76v106l-34-20c-24.647 27.731-47.939 55.857-70 88l104 60v64c0 41.912 34.088 76 76 76h234c-4.577 10.693-8.966 21.469-14 32l118 68c13.86-32.95 24.711-65.817 30-100h66c10.478 0 20.943-2.182 30-6-7.234 69.314-26.904 137.747-64 202-97.186 168.332-276.459 260.715-458 256zM522 862c45.425-1.164 91.517-8.458 134-24l-64-36c-22.81 22.127-46.007 41.704-70 60zM394 846c39.587-25.645 77.222-56.281 114-92l-84-50-72 126c13.742 5.791 27.946 11.802 42 16zM760 782c31.164-23.016 57.718-51.994 82-84l-116-66c-20.412 32.755-40.883 63.378-64 92l88 50c3.203 1.849 7.605 5.435 10 8zM260 778h2l72-126-92-52c-12.71 49.313-19.255 97.188-22 144 12.39 12.178 25.888 23.296 40 34zM578 676c22.939-28.459 45.686-59.403 66-92l-112-64-56 96 102 60zM142 636c3.994-27.9 10.635-55.372 18-84l-58-34c7.124 40.784 21.181 80.964 40 118zM384 564l56-96-118-70c-18.2 33.781-34.67 67.986-48 102l110 64zM192 454c13.396-34.309 27.682-69.999 46-104l-108-62c-15.214 36.17-27.501 72.402-32 110l94 56zM612 454c-49.516 0-90-38.484-90-88v-194c0-49.516 40.484-90 90-90h102l-6-34c-51.586-9.811-88-30.549-88-54 0-32.643 68.81-58 154-58s154 25.357 154 58c0 24.169-37.838 46.585-92 56l-6 32h104c49.516 0 90 40.484 90 90v194c0 49.516-40.484 88-90 88h-322zM584 386h380v-236h-380v236zM292 260c22.147-32.13 47.183-58.271 72-86l-102-60c-30.311 22.695-56.283 52.739-80 84l110 62zM438 96c28.836-24.958 59.885-44.975 90-64-53.295-1.962-108.201 6.157-158 24l68 40z" />
+<glyph unicode="&#xe97e;" glyph-name="it-sdn-switch" d="M498 960c-82.532-2.144-165.473-23.817-242-68-244.886-141.385-329.386-455.113-188-700 58.255-100.901 146.218-174.257 246-216v168l-52-30c-30.316 22.699-56.279 52.734-80 84l104 60-14 4-156 8 30 28-16-10c-15.217 36.176-27.5 72.396-32 110l94 56c10.044-25.725 21.614-52.249 34-78l72 72c-8.357 17.441-17.093 34.376-24 52l112 64 10-18 92 92 10-10 82 48c22.943-28.464 43.682-59.397 64-92l-66-36 78-78 40 24 104 60 94 56c7.367-17.515 14.618-36.072 20-54h4l92 14c-11.285 45.819-29.221 91.081-54 134-97.203 168.36-276.429 260.716-458 256zM522 862c45.433-1.164 91.51-8.455 134-24l-64-36c-22.814 22.131-46.003 41.701-70 60zM394 846c39.593-25.649 77.216-56.275 114-92l-84-50-72 126c13.744 5.792 27.944 11.801 42 16zM760 782c31.169-23.019 57.714-49.989 82-82l-116-68c-20.416 32.76-40.879 63.373-64 92l88 52c3.203 1.849 7.605 3.435 10 6zM262 778l72-126-92-52c-12.711 49.321-17.254 97.18-20 144 12.392 12.18 25.886 23.294 40 34zM142 636c3.995-27.904 10.633-55.367 18-84l-58-34c7.125 40.791 21.178 80.958 40 118zM474 524l-208-210h126v-286l72-92h94v378h126l-210 210zM804 524l-72-90v-288h-126l208-210 210 210h-126v378h-94z" />
+<glyph unicode="&#xe97f;" glyph-name="it-server" d="M52 960c-28.218 0-52-27.877-52-62v-900c0-34.123 23.782-62 52-62h524c28.218 0 50 27.877 50 62v900c0 34.123-19.782 62-48 62h-526zM674 954c18.999-10.074 32-31.54 32-56v-900c0-20.133-9.853-36.659-24-48l262 78c42.237 12.574 80 30.971 80 70v706c0 39.029-37.766 57.42-80 70l-270 80zM120 820h388c19.009 0 34-19.012 34-42v-210c0-22.988-14.991-40-34-40h-388c-19.009 0-36 17.012-36 40v210c0 22.988 16.991 42 36 42zM136 760c-8.519 0-16-12.757-16-30s7.481-32 16-32h356c8.519 0 14 14.757 14 32s-5.481 30-14 30h-356zM136 648c-8.519 0-16-12.757-16-30s7.481-32 16-32h356c8.519 0 14 14.757 14 32s-5.481 30-14 30h-356zM314 288c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64z" />
+<glyph unicode="&#xe980;" glyph-name="it-server-aix" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 896c247.424 0 448-200.576 448-448s-200.576-448-448-448c-247.424 0-448 200.576-448 448s200.576 448 448 448zM512 832c-212.077 0-384-171.923-384-384 0-36.156 6.659-70.831 16-104l112 292h68l130-320h-72l-28 72h-128l-26-72h-48c53.837-147.035 194.315-252 360-252s306.163 104.965 360 252h-72l-72 110-72-110h-76l108 166-98 154h76l64-102 62 102h56c-65.661 117.507-191.828 196-336 196zM486 636h64v-320h-64v320zM856 618l-88-138 106-158c13.732 39.506 22 81.817 22 126 0 60.905-14.763 118.84-40 170zM290 562l-44-120h88l-44 120z" />
+<glyph unicode="&#xe981;" glyph-name="it-server-klinux" d="M702.196 960c-83.559 0-149.421-75.593-149.421-171.057 0-45.281 15.194-86.372 39.69-117.162-8.686-12.223-17.338-24.876-25.682-37.492-23.194-35.070-43.629-76.976-60.702-89.043-83.523-59.033-121.404-129.992-121.404-248.384 0-16.631 2.556-30.874 4.669-46.865 23.321 11.463 52.84 16.403 84.049 16.403 4.043 0 7.718 0.217 11.673 0-3.685 18.422-7.004 35.25-7.004 53.895 1.251 128.832 55.389 209.786 114.4 292.906 2.648 3.499 6.269 9.105 9.339 14.059 2.452-4.241 6.283-6.793 11.673-9.373l49.029-23.432c23.628-11.307 48.25-10.417 72.376 0l53.698 23.432c0.84 0.363 1.558-0.418 2.335 0 42.272-91.45 99.084-194.293 100.392-278.847 0-23.808-2.958-45.866-7.004-67.954 13.057 2.524 27.684 2.343 42.025 2.343 18.9 0 37.191-0.405 53.698-4.686 0.818 10.044 2.335 17.843 2.335 28.119 0 99.83-26.283 175.644-88.719 236.668-25.549 24.971-56.834 78.168-91.053 126.535 31.389 31.635 51.363 77.388 51.363 128.879 0 95.465-68.196 171.057-151.755 171.057zM641.494 819.405c25.311 0 44.359-22.043 44.359-51.551 0-4.072-1.65-7.893-2.335-11.716-4.628-0.607-9.186-2.398-14.008-4.686 0 22.185-14.217 39.835-30.351 39.835s-28.016-17.65-28.016-39.835c0-13.422 4.319-27.854 11.673-35.149-16.692 8.63-28.016 29.42-28.016 51.551 0 29.509 21.383 51.551 46.694 51.551zM762.898 817.062c25.311 0 46.694-22.043 46.694-51.551 0-22.132-11.324-42.921-28.016-51.551 5.88 7.348 7.004 18.677 7.004 30.462 0 22.185-11.882 42.178-28.016 42.178s-30.351-19.994-30.351-42.178c0-2.428-0.299-4.792 0-7.030-3.068 2.177-6.263 5.265-9.339 7.030-2.536 6.816-4.669 13.366-4.669 21.089 0 29.509 21.383 51.551 46.694 51.551zM699.861 735.048c12.3 0 25.767-3.837 35.020-11.716l46.694-42.178c13.118-11.17 17.678-26.761 11.673-39.835-1.907-1.316-2.389-3.702-4.669-4.686l-53.698-23.432c-24.126-10.417-48.748-11.307-72.376 0l-49.029 23.432c-1.721 0.824-3.302 1.337-4.669 2.343-7.374 13.896-2.206 30.36 11.673 42.178l46.694 42.178c9.253 7.879 20.386 11.716 32.686 11.716zM620.482 674.124c-2.285-2.318-4.669-4.488-4.669-7.030 0-14.123 39.651-25.776 86.384-25.776s81.714 11.653 81.714 25.776c0 2.542-0.049 4.712-2.335 7.030-9.308-11.067-39.863-18.746-79.38-18.746s-72.407 7.679-81.714 18.746zM879.633 249.995c-64.504-7.634-86.384-42.072-86.384-114.819 0-83.14-83.624-189.803 4.669-189.803s224.131 80.887 224.131 164.027c0 83.14-23.773 140.595-112.066 140.595-11.037 0-21.136 1.091-30.351 0zM466.391 240.622c-88.293 0-112.066-57.455-112.066-140.595s135.839-164.027 224.131-164.027c88.293 0 4.669 104.32 4.669 187.46s-28.442 117.162-116.735 117.162zM620.482 71.908l14.008-49.208 14.008-56.238c11.583-1.562 23.045-2.343 35.020-2.343 12.676 0 25.138 0.585 37.355 2.343 5.185 25.46 21.012 89.043 21.012 89.043l7.004 16.403c-19.981-9.799-40.537-16.403-63.037-16.403-23.030 0-44.951 6.259-65.372 16.403zM434.89 957.895l-417.088-440.582 190.741-30.089-208.544-371.808 399.285 425.537-139.877 83.818z" />
+<glyph unicode="&#xe982;" glyph-name="it-server-redhat" d="M510.592 960c-281.856 0-510.592-230.336-510.592-513.472s228.736-510.528 510.592-510.528 513.408 227.52 513.408 510.528c0 283.072-231.552 513.472-513.408 513.472zM464.704 871.104l31.552-8.64 37.312-8.576 31.552 5.696 17.28 2.88 22.912 5.76c0 0 20.992 4.544 31.488 2.88 10.304-1.664 21.888 0.768 31.552-2.88 13.376-5.056 25.984-14.080 37.248-22.912 19.456-15.296 37.248-63.104 37.248-63.104l20.096-54.528 22.848-65.984 5.76-48.768-5.76-60.224 43.136 37.312c33.344-8.128 72.64-28.736 111.808-54.528 0 0 7.168-44.672 5.76-65.984-1.216-18.496-4.8-38.656-14.336-54.528-16.768-27.776-44.608-45.632-71.744-63.104-21.504-13.888-44.032-25.344-68.864-31.488-38.016-9.344-78.4-6.4-117.568-5.76-37.056 0.64-72.576 1.6-108.992 8.64-43.264 8.256-88.064 20.736-128.96 37.248-47.36 19.136-134.784 74.624-134.784 74.624s-76.672 44.16-114.752 80.32c-15.232 14.4-48.832 65.92-48.832 65.92s-8.896 48.32 2.88 57.344c0 0 38.080 28.736 54.528 31.552 39.616 6.784 79.040 8.512 123.328 14.336v-2.816l22.912-22.976 63.104-43.008 91.776-34.432 45.952-20.096c0 0 34.816-2.88 45.824-2.88 11.136 0 2.88 22.912 2.88 22.912l-17.216 17.28-5.76 14.336-8.512 22.912-14.336 17.216-94.656 31.552-77.44 28.672-40.192 31.616 8.64 40.128 17.216 37.312 14.336 22.976 22.976 14.336 31.552 8.64 37.248 2.816zM613.888 845.248l-8.64-14.336 25.728-8.64 20.032-5.696-20.032-31.552 60.224 14.336 5.824 28.672-31.488 11.456-51.648 5.76zM410.176 805.056l-14.336-42.944 31.552-31.552 17.216 5.76 43.008 8.576 48.768 14.336 5.76 17.216-37.312 8.576-54.464-8.576-40.192 28.608zM238.080 429.312h17.216l25.792-14.336 37.312-40.128 51.648-5.76 65.984-80.384 286.848-5.76-22.976-106.112-48.768-62.976-28.608-25.856-2.88 2.88 2.88-22.848 31.488 5.76 108.992 80.32v22.912h114.752l45.888-11.52c-92.032-131.136-244.48-215.104-413.056-215.104-216.192 0-400.128 135.424-470.4 332.672l20.096 5.824 8.576 34.368 8.576 5.76 100.416-5.76 68.864-45.888 25.792 5.696-2.88 28.672-37.312 34.432-14.336 22.912-2.88 28.736 8.64 14.336 14.336 17.152zM527.808 219.968c-10.688-2.368 1.152-9.344-8.576-14.4-19.008-9.664 22.912-28.672 22.912-28.672s22.72-12.032 34.368-11.456c10.624 0.576 28.736 11.456 28.736 11.456 17.728 17.28 9.024 41.344 0 34.496l-22.976-14.464h-22.912c0 0.064-19.712 25.536-31.552 23.040z" />
+<glyph unicode="&#xe983;" glyph-name="it-server-solaris" d="M468 960l-48-268c16.173 3.297 30.849 4 48 4s33.827-0.703 50-4l-50 268zM140 826l150-208c22.048 23.283 46.359 42.605 76 56l-226 152zM798 826l-226-152c29.641-13.395 53.952-32.717 76-56l150 208zM0 586l222-102c4.34 29.541 14.151 58.816 28 84l-250 18zM938 586l-252-18c13.849-25.184 23.66-54.459 28-84l224 102zM650 434c-359.894 0-650-58.809-650-132s290.106-134 650-134c58.987 0 117.658 3.012 172 6-10.202-0.109-19.67 0-30 0-330.653 0-600 54.037-600 122s269.347 124 600 124c82.663 0 160.373-3.773 232-10-105.684 15.034-235.24 24-374 24z" />
+<glyph unicode="&#xe984;" glyph-name="it-server-suse" d="M516 902c-65.675-2.119-123.16-4.56-184-34-72.421-32-145.651-59.003-206-112l-68-84c-69.777-119.589-54.416-232.934 106-290 77.742-5.552 221.478 57.888 130 202-29.523 28.96-55.273 37.398-104 30-41.79-11.271-68.086-46.084-54-102 19.492-27.884 22.688-25.105 42-30l48-4 8 26-6 20-8 6-24-8c-8.312-15.984-60.714 16.58-8 42 9.817 4.489 38.161 14.031 60-6 31.625-31.716 57.773-84.241-28-118-67.019-7.312-100.036 7.173-128 76l-2 44 8 40c25.624 32.030 36.815 49.83 80 54 52.83 2.032 90.154 5.104 136-26l30-40 20-40 14-30 34-22 30-14c0 47.834-13.068 83.628 26 114l28 10c29.176-0.729 53.498 9.082 82-10l20-20 46-52 52-28 44-26 8 6-24 32c-9.354 42.571-25.187 62.438 0 106l26 8c80.668-5.366 185.805-20.894 260 38 5.991 2.681 19.875 27.248-2 38-2.468-7.251-2.487-15.266-20-22-43.274-12.798-69.848-21.603-118 4-31.965 11.776-57.959 15.825-76 46l-6 12 18 6 40-24c25.187-12.253 45.744-28.964 76-30 35.19 2.629 61.074-2.317 92 20l14 16c-13.040 40.569-18.998 80.996-52 110-42.108 21.054-82.178 38.858-130 44l-86 12 6-38-50 22-90 16-110 10zM918 838c33.395 0 60-26.605 60-60s-26.605-60-60-60c-33.395 0-60 26.605-60 60s26.605 60 60 60zM918 818c-21.945 0-40-18.055-40-40s18.055-40 40-40c21.945 0 40 18.055 40 40s-18.055 40-40 40zM922 806c10.165 0 18-7.835 18-18s-7.835-18-18-18c-10.165 0-18 7.835-18 18s7.835 18 18 18zM116 314c-21.527 0-40.779-4.988-56-12s-25.912-16.594-34-30c-8.088-13.407-12-28.6-12-44 0-23.926 8.804-43.362 26-60 12.228-11.825 33.684-21.888 64-30 23.565-6.325 37.376-11.525 44-14 9.68-3.713 16.115-6.981 20-12s6-10.85 6-18c0-11.138-4.765-21.681-14-30s-21.785-12-40-12c-17.196 0-31.874 4.65-42 14s-16.688 24.062-20 44l-54-6c3.694-33.826 15.021-60.331 34-78s46.589-26 82-26c24.329 0 43.696 4.644 60 12s29.083 18.875 38 34c8.916 15.125 14 30.675 14 48 0 19.113-4.549 35.006-12 48s-16.817 22.506-30 30c-13.184 7.494-34.487 14.987-62 22s-44.867 13.537-52 20c-5.605 5.087-8 12.85-8 20 0 7.837 2.013 13.325 8 18 9.298 7.287 23.568 10 40 10 15.922 0 28.039-3.194 36-10s11.58-18.463 14-34l58 4c-0.892 27.775-10.231 49.362-28 66s-44.844 26-80 26zM616 314c-21.527 0-38.779-4.988-54-12s-27.912-16.594-36-30c-8.088-13.407-12-28.6-12-44 0-23.926 8.804-43.362 26-60 12.228-11.825 33.684-21.888 64-30 23.565-6.325 39.376-11.525 46-14 9.681-3.713 16.115-6.981 20-12s6-10.85 6-18c0-11.138-4.765-21.681-14-30s-23.785-12-42-12c-17.196 0-29.874 4.65-40 14s-16.689 24.062-20 44l-56-6c3.694-33.826 15.021-60.331 34-78s46.589-26 82-26c24.329 0 43.695 4.644 60 12s29.083 18.875 38 34c8.916 15.125 14 30.675 14 48 0 19.113-4.548 35.006-12 48s-16.817 22.506-30 30c-13.184 7.494-34.487 14.987-62 22s-44.867 13.537-52 20c-5.605 5.087-8 12.85-8 20 0 7.837 4.013 13.325 10 18 9.298 7.287 21.568 10 38 10 15.922 0 28.039-3.194 36-10s13.58-18.462 16-34l56 4c-0.892 27.775-10.231 49.362-28 66s-44.844 26-80 26zM896 310c-33.989 0-63.77-13.115-86-40s-32-64.524-32-112c0-39.744 7.086-71.924 24-98 23.472-24.814 37.445-40.196 80-48 10.305 3.467 69.29-0.256 76 6 9.704 9.048 12.525 32.631 2 44-6.247 6.748-56.534 2.879-72 6-26.387 8.256-41.018 28.763-40 70h170c0.966 58.086-9.932 101.856-32 130s-51.823 42-90 42zM900 252c13.853 0 24.335-4.58 34-16s15.518-28.060 16-50h-102c-0.16 20.681 4.335 35.951 14 48s23.18 18 38 18zM278 224v-138c0-20.625 1.16-36.312 6-48s13.173-21.537 24-28c10.827-6.463 24.371-10 38-10 13.374 0 25.963 3.262 38 10s20.612 16.312 28 28v-32h50v218h-54v-92c0-31.351-1.325-49.956-4-58s-6.74-14.569-14-20c-7.261-5.432-16.829-10-26-10-8.025 0-12.778 1.944-18 6s-10.026 11.056-12 18c-1.974 6.944-2 25.199-2 56v100h-54z" />
+<glyph unicode="&#xe985;" glyph-name="it-server-windows" d="M398 912c-49.48 0.394-105.040-6.773-168-26l-106-332c130.327 31.196 261.844 49.831 374-28l100 326c-53.73 36.361-117.533 59.343-200 60zM646 824l-102-326c85.969-58.177 202.107-85.272 370-34l104 332c-130.327-31.196-259.844-49.831-372 28zM276 514c-49.48 0.394-105.040-8.773-168-28l-104-330c130.327 31.196 261.844 49.831 374-28l100 324c-53.73 36.361-119.533 61.343-202 62zM532 428l-100-324c85.969-58.177 200.107-87.272 368-36l106 332c-130.327-31.196-261.844-49.831-374 28z" />
+<glyph unicode="&#xe986;" glyph-name="it-server-zxve" d="M172 958c-94.922 0-174-77.078-174-172v-678c0-94.922 79.078-174 174-174h678c94.922 0 172 79.078 172 174v678c0 94.922-77.078 172-172 172h-678zM172 894h678c60.656 0 108-47.344 108-108v-678c0-60.656-47.344-110-108-110h-678c-60.656 0-110 49.344-110 110v678c0 60.656 49.344 108 110 108zM648 832c-65.702 0-118-59.253-118-134 0-35.455 12.739-67.892 32-92-6.83-9.571-13.44-18.122-20-28-18.237-27.459-34.576-60.552-48-70-65.673-46.222-96-101.301-96-194 0-13.022 2.338-25.479 4-38 18.337 8.975 41.46 14 66 14 3.179 0 4.89 0.173 8 0-2.898 14.424-4 27.401-4 42 0.984 100.874 43.6 162.918 90 228 2.082 2.74 3.586 8.121 6 12 1.928-3.32 5.762-5.98 10-8l38-18c18.578-8.853 39.030-8.156 58 0l42 18c0.66 0.284 1.389-0.328 2 0 33.238-71.604 76.972-151.795 78-218 0-18.641-2.819-36.706-6-54 10.267 1.976 22.724 2 34 2 14.861 0 29.020-0.648 42-4 0.643 7.865 2 15.954 2 24 0 78.166-20.908 136.219-70 184-20.089 19.552-45.094 62.129-72 100 24.681 24.77 40 59.684 40 100 0 74.747-52.298 134-118 134zM438 830l-328-344 150-24-164-292 314 334-110 66 138 260zM600 722c19.902 0 34-16.895 34-40 0-3.188-1.461-7.006-2-10-3.639-0.476-6.208-2.208-10-4 0 17.37-11.314 32-24 32s-22-14.63-22-32c0-10.509 4.217-20.288 10-26-13.125 6.757-22 22.671-22 40 0 23.105 16.098 40 36 40zM696 720c19.902 0 36-16.895 36-40 0-17.329-8.875-33.243-22-40 4.623 5.753 6 14.772 6 24 0 17.37-9.314 32-22 32s-24-14.63-24-32c0-1.901-0.237-4.248 0-6-2.413 1.705-5.581 4.618-8 6-1.994 5.337-4 9.953-4 16 0 23.105 18.098 40 38 40zM646 656c9.671 0 20.724-3.831 28-10l36-32c10.315-8.746 14.721-21.763 10-32-1.499-1.031-2.207-1.229-4-2l-42-20c-18.97-8.156-39.422-8.853-58 0l-38 20c-1.353 0.645-2.925-0.788-4 0-5.798 10.88-0.914 24.747 10 34l36 32c7.276 6.169 16.329 10 26 10zM584 608c-1.797-1.815-4-4.010-4-6 0-11.058 31.255-20 68-20s64 8.942 64 20c0 1.99-0.205 4.185-2 6-7.318-8.665-30.929-14-62-14s-56.682 5.335-64 14zM788 276c-50.719-5.978-68-33.040-68-90 0-65.098-67.424-148 2-148s178 62.902 178 128c0 65.098-20.576 110-90 110-8.678 0-14.754 0.854-22 0zM462 268c-69.424 0-88-44.902-88-110s106.576-128 176-128c69.424 0 4 82.902 4 148s-22.576 90-92 90zM584 136l10-38 12-44c9.107-1.223 16.584-2 26-2 9.967 0 20.394 0.621 30 2 4.077 19.935 16 70 16 70l6 12c-15.711-7.673-32.308-12-50-12-18.109 0-33.944 4.058-50 12z" />
+<glyph unicode="&#xe987;" glyph-name="it-storage" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM184 752h656c30.953 0 56-25.979 56-58v-12c0-32.021-25.047-58-56-58h-656c-30.953 0-56 25.979-56 58v12c0 32.021 25.047 58 56 58zM184 484h656c30.953 0 56-25.979 56-58v-12c0-32.021-25.047-58-56-58h-656c-30.953 0-56 25.979-56 58v12c0 32.021 25.047 58 56 58zM184 216h656c30.953 0 56-25.979 56-58v-12c0-32.021-25.047-58-56-58h-656c-30.953 0-56 25.979-56 58v12c0 32.021 25.047 58 56 58z" />
+<glyph unicode="&#xe988;" glyph-name="it-storage-cisco-mds" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM178 838h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM176 616h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM320 374c39.229 0 71.5-10.813 96-34 14.583-13.709 24.708-34.334 32-60l-64-16c-3.792 16.625-11.969 30.375-24 40s-26.792 14-44 14c-23.771 0-43.198-8.938-58-26s-22-43.792-22-82c0-40.542 7.417-68.792 22-86s34.667-26 58-26c17.208 0 31.604 5.062 44 16s20.604 28.521 26 52l64-20c-9.625-35-25.615-61.010-48-78s-51.584-26-86-26c-42.583 0-76.583 14.906-104 44s-42 69.542-42 120c0 53.375 14.437 94.468 42 124s63.083 44 108 44zM724 374c39.229 0 71.5-10.813 96-34 14.583-13.709 26.708-34.334 34-60l-64-16c-3.792 16.625-11.969 30.375-24 40s-26.792 14-44 14c-23.771 0-43.198-8.938-58-26s-22-43.792-22-82c0-40.542 7.417-68.792 22-86s32.667-26 56-26c17.208 0 31.604 5.062 44 16s22.604 28.521 28 52l62-20c-9.625-35-25.615-61.010-48-78s-51.583-26-86-26c-42.583 0-76.583 14.906-104 44s-42 69.542-42 120c0 53.375 14.437 94.468 42 124s63.083 44 108 44z" />
+<glyph unicode="&#xe989;" glyph-name="it-storage-md3000" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM178 838h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM176 616h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM76 362h94c21.391 0 38.778-3.844 50-8 15.079-5.641 27.246-13.603 38-28s18.389-31.146 24-52c5.611-20.854 8-47.424 8-78 0-26.865-0.74-50.556-6-70-6.429-23.748-16.077-43.306-28-58-9.001-11.132-20.687-17.766-36-24-11.456-4.602-26.83-10-46-10h-98v328zM356 362h152v-56h-88v-72h76v-54h-76v-90h94v-56h-158v328zM568 358h64v-268h100v-56h-164v324zM782 356h66v-268h100v-56h-166v324zM128 306v-216h38c14.495 0 25.571 1.922 32 4 8.416 2.672 14.447 5.617 20 12s10.493 17.38 14 32c3.507 14.62 6 34.767 6 60s-2.493 44.493-6 58c-3.507 13.507-7.688 24.43-14 32s-14.298 13.328-24 16c-7.248 2.077-22.842 2-44 2h-22z" />
+<glyph unicode="&#xe98a;" glyph-name="it-storage-netvault" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM178 838h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM176 616h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM84 370h64l132-214v214h60v-320h-66l-128 208v-208h-62v320zM376 370h70l80-236 80 236h68l-116-320h-68l-114 320zM684 370h256v-54h-96v-266h-64v266h-96v54z" />
+<glyph unicode="&#xe98b;" glyph-name="it-storage-sanswitch-zte" d="M869.981 960h-715.962c-85.039 0-154.019-68.98-154.019-154.019v-716.009c0-84.992 68.98-153.972 154.019-153.972h716.009c84.992 0 153.972 68.98 153.972 154.019v715.962c0 85.039-68.98 154.019-154.019 154.019zM177.99 838.004h672.023c26.717 0 47.988-28.532 47.988-64s-21.271-64-47.988-64h-672.023c-26.764 0-47.988 28.532-47.988 64s21.271 64 47.988 64zM175.988 615.983h672.023c26.717 0 47.988-28.532 47.988-64s-21.271-64-47.988-64h-672.023c-26.764 0-47.988 28.532-47.988 64s21.271 64 47.988 64zM351.418 52.457h-253.533v39.377l164.305 205.452c11.636 14.569 22.761 27.229 33.233 37.981h-178.921v37.841h229.702v-37.841l-180.038-222.441-19.456-22.528h204.707v-37.841zM627.293 335.267h-106.077v-282.81h-42.496v282.81h-105.658v37.841h254.185v-37.841zM910.988 52.457h-239.337v320.698h231.843v-37.841h-189.347v-98.211h177.385v-37.609h-177.385v-109.196h196.841v-37.841z" />
+<glyph unicode="&#xe98c;" glyph-name="it-switch-at" d="M234 960l-234-228 140-134c59.702 39.324 131.164 62 208 62 47.699 0 93.962-9.903 136-26h186v198h-436v128zM788 716v-128h-222c68.34-46.169 118.415-116.099 140-198h82v-124l234 224-234 226zM346 626c-190.682 0-346-153.318-346-344s155.318-346 346-346c190.682 0 344 155.318 344 346s-153.318 344-344 344zM188 430h64l118-298h-64l-26 68h-120l-24-68h-64l116 298zM382 430h236v-50h-88v-248h-60v248h-88v50zM220 360l-40-110h80l-40 110z" />
+<glyph unicode="&#xe98d;" glyph-name="it-switch-cisco" d="M234 960l-234-228 140-134c59.702 39.324 131.164 62 208 62 47.699 0 93.962-9.903 136-26h186v198h-436v128zM788 716v-128h-222c68.34-46.169 118.415-116.099 140-198h82v-124l234 224-234 226zM346 626c-190.682 0-346-153.318-346-344s155.318-346 346-346c190.682 0 344 155.318 344 346s-153.318 344-344 344zM204 436c36.427 0 67.25-12.469 90-34 13.541-12.729 23.229-30.167 30-54l-60-14c-3.521 15.437-10.828 27.062-22 36s-24.021 14-40 14c-22.073 0-40.255-8.156-54-24s-20-40.521-20-76c0-37.646 6.458-66.021 20-82s30.333-24 52-24c15.979 0 30.489 5.844 42 16s18.989 26.198 24 48l58-18c-8.938-32.5-23.214-58.224-44-74s-48.042-22-80-22c-39.542 0-70.542 12.984-96 40s-38 63.146-38 110c0 49.562 12.406 88.578 38 116s58.292 42 100 42zM506 436c36.427 0 65.25-12.469 88-34 13.541-12.729 23.229-30.167 30-54l-60-14c-3.521 15.437-10.828 27.062-22 36s-24.021 14-40 14c-22.073 0-40.255-8.156-54-24s-20-40.521-20-76c0-37.646 6.458-66.021 20-82s30.333-24 52-24c15.979 0 30.489 5.844 42 16s18.989 26.198 24 48l60-18c-8.938-32.5-25.214-58.224-46-74s-46.042-22-78-22c-39.542 0-72.542 12.984-98 40s-38 63.146-38 110c0 49.562 12.406 88.578 38 116s60.292 42 102 42z" />
+<glyph unicode="&#xe98e;" glyph-name="it-switch-h3c" d="M697.809 416.349c32.349 20.573 70.563 32.908 111.756 32.908 47.709 0 91.183-16.477 126.371-43.38l88.064 84.108-234.449 225.978v-128h-222.441c60.835-40.96 105.891-101.329 130.7-171.613zM348.672 660.015c47.756 0 94.161-9.914 136.285-26.019h186.368v198.004h-436.876v128l-234.449-227.98 140.288-134.004c59.764 39.284 131.398 61.999 208.384 61.999zM346.671 625.99c-191.069 0-346.671-153.321-346.671-343.971s155.601-346.019 346.671-346.019c128.791 0 240.314 70.703 299.52 175.151-28.346 35.607-45.94 80.151-45.94 129.117 0 61.999 27.555 117.062 70.516 155.369-47.011 134.097-173.196 230.353-324.096 230.353zM334.848 79.965h-42.543v151.087h-167.005v-151.087h-42.496v320.698h42.543v-131.677h166.959v131.677h42.543v-320.698zM569.53 103.471c-20.387-19.456-46.266-29.184-77.545-29.184-28.253 0-51.665 8.378-70.284 25.181-18.665 16.71-29.231 38.493-31.884 65.071l39.377 5.26c4.561-22.295 12.288-38.353 23.18-48.175 10.892-9.914 24.111-14.801 39.75-14.801 18.525 0 34.257 6.47 47.057 19.223 12.753 12.893 19.177 28.765 19.177 47.756 0 18.060-5.865 32.908-17.78 44.684-11.776 11.776-26.857 17.641-45.103 17.641-7.494 0-16.756-1.443-27.881-4.422l4.375 34.583c2.653-0.279 4.748-0.465 6.33-0.465 16.849 0 31.977 4.422 45.428 13.126s20.154 22.295 20.154 40.448c0 14.522-4.887 26.391-14.708 35.887-9.775 9.495-22.435 14.243-37.888 14.243-15.36 0-28.113-4.841-38.4-14.429-10.193-9.635-16.803-24.111-19.689-43.334l-39.517 6.982c4.887 26.345 15.825 46.871 32.861 61.347 17.175 14.522 38.4 21.737 63.814 21.737 17.548 0 33.699-3.77 48.407-11.264 14.755-7.494 26.065-17.734 33.885-30.72 7.866-12.986 11.729-26.764 11.729-41.425 0-13.824-3.677-26.391-11.124-37.841-7.447-11.357-18.479-20.387-33.047-27.089 18.991-4.375 33.699-13.452 44.218-27.276 10.519-13.731 15.779-30.999 15.779-51.665 0.047-27.881-10.147-51.572-30.673-71.075zM879.29 131.351c-16.477-13.684-36.631-20.48-60.509-20.48-19.549 0-37.748 4.98-54.551 15.081-16.756 10.054-29.184 25.228-37.143 45.568s-11.962 44.125-11.962 71.447c0 21.132 3.398 41.658 10.1 61.533s18.385 35.793 34.956 47.569 37.283 17.734 61.905 17.734c21.504 0 39.377-5.353 53.481-16.012 14.15-10.612 24.995-27.601 32.442-51.014l41.844 9.868c-8.657 29.649-23.924 52.596-45.801 68.887-21.923 16.384-49.012 24.483-81.082 24.483-28.346 0-54.319-6.47-77.917-19.316-23.645-12.94-41.844-31.837-54.644-56.692s-19.13-53.993-19.13-87.412c0-30.58 5.632-59.206 16.943-86.016 11.357-26.577 27.881-47.057 49.524-61.114 21.737-14.103 49.897-21.132 84.433-21.132 33.559 0 61.812 9.169 84.992 27.508s39.191 44.87 48.081 79.732l-42.496 10.705c-5.772-26.81-16.943-47.151-33.466-60.928z" />
+<glyph unicode="&#xe98f;" glyph-name="it-switch-juniper" d="M234 960l-234-228 140-134c59.702 39.324 131.164 62 208 62 47.699 0 93.962-9.903 136-26h186v198h-436v128zM788 716v-128h-222c68.34-46.169 118.415-116.099 140-198h82v-124l234 224-234 226zM346 626c-190.682 0-346-153.318-346-344s155.318-346 346-346c190.682 0 344 155.318 344 346s-153.318 344-344 344zM226 444h64v-202c0-26.542-1.334-47.708-6-62-6.271-18.667-17.521-32.698-34-44s-39.021-18-66-18c-31.646 0-54.938 8.281-72 26s-25.854 43.729-26 78l60 8c0.729-18.375 3.333-32.417 8-40 7-11.521 17.708-16 32-16 14.437 0 24.021 3.76 30 12s10 26.042 10 52v206zM360 444h104c39.375 0 64.041-0.792 76-4 18.375-4.813 33.604-15.886 46-32s20-36.479 20-62c0-19.688-4.854-36.583-12-50s-14.99-24.344-26-32c-11.011-7.656-22.625-11.521-34-14-15.459-3.062-38.688-6-68-6h-42v-120h-64v320zM424 390v-90h36c25.521 0 41.396 0.646 50 4s17.114 8.854 22 16c4.885 7.146 6 14.521 6 24 0 11.666-3.146 22.416-10 30s-15.5 12.104-26 14c-7.729 1.458-22.667 2-46 2h-32z" />
+<glyph unicode="&#xe990;" glyph-name="it-switch-zte" d="M234 960l-234-228 140-134c59.702 39.324 131.164 62 208 62 47.699 0 93.962-9.903 136-26h186v198h-436v128zM788 716v-128h-222c68.34-46.169 118.415-116.099 140-198h82v-124l234 224-234 226zM346 626c-190.682 0-346-153.318-346-344s155.318-346 346-346c190.682 0 344 155.318 344 346s-153.318 344-344 344zM98 424h148v-44l-112-194h116v-48h-164v52l106 186h-94v48zM262 424h162v-48h-60v-238h-42v238h-60v48zM450 424h152v-48h-110v-64h102v-48h-102v-78h114v-48h-156v286z" />
+<glyph unicode="&#xe991;" glyph-name="it-tapelib-hpmsl" d="M60 960c-33.495 0-60-26.505-60-60v-484c0-33.495 26.505-60 60-60h904c33.495 0 60 26.505 60 60v484c0 33.495-26.505 60-60 60zM222 790h580c33.495 0 60-26.505 60-60v-114c0-33.495-26.505-62-60-62h-580c-33.495 0-60 28.505-60 62v114c0 33.495 26.505 60 60 60zM740 776c-54.503 0-98-43.497-98-98s43.497-98 98-98c54.503 0 98 43.497 98 98s-43.497 98-98 98zM284 766c-54.503 0-98-43.497-98-98s43.497-100 98-100c54.503 0 98 45.497 98 100s-43.497 98-98 98zM228 319.936v-320h64v140h128v-140h64v320h-64v-126h-128v126zM550 319.936v-320h66v120h42c29.312 0 52.541 2.938 68 6 11.375 2.479 20.989 6.344 32 14s20.854 18.583 28 32c7.146 13.417 10 30.312 10 50 0 25.521-5.604 45.885-18 62s-27.625 27.187-46 32c-11.959 3.208-38.625 4-78 4zM616 265.936h30c23.333 0 40.271-0.544 48-2 10.5-1.896 19.146-6.417 26-14s10-16.334 10-28c0-9.479-3.115-18.854-8-26s-11.396-12.646-20-16c-8.604-3.354-24.479-4-50-4h-36z" />
+<glyph unicode="&#xe992;" glyph-name="it-tapelib-ibmts" d="M60 962c-33.495 0-60-26.505-60-60v-484c0-33.495 26.505-60 60-60h904c33.495 0 60 26.505 60 60v484c0 33.495-26.505 60-60 60h-904zM222 792h580c33.495 0 60-26.505 60-60v-114c0-33.495-26.505-62-60-62h-580c-33.495 0-60 28.505-60 62v114c0 33.495 26.505 60 60 60zM740 778c-54.503 0-98-43.497-98-98s43.497-98 98-98c54.503 0 98 43.497 98 98s-43.497 98-98 98zM284 768c-54.503 0-98-43.497-98-98s43.497-100 98-100c54.503 0 98 45.497 98 100s-43.497 98-98 98zM642 330c-24.646 0-46.573-4.563-64-12s-30.74-17.782-40-32c-9.26-14.219-14-29.667-14-46 0-25.375 10.312-46.354 30-64 14-12.542 37.292-23.396 72-32 26.979-6.708 44.416-11.375 52-14 11.083-3.938 19.552-8.677 24-14s6-12.417 6-20c0-11.813-5.427-21.177-16-30s-25.146-14-46-14c-19.688 0-36.406 6.083-48 16s-18.208 24.854-22 46l-64-6c4.229-35.875 18.271-63.26 40-82s51.458-28 92-28c27.854 0 51.333 4.198 70 12s33.791 19.958 44 36c10.208 16.042 16 31.625 16 50 0 20.271-5.469 38.219-14 52s-18.906 24.052-34 32c-15.094 7.948-38.5 16.562-70 24s-51.833 15.146-60 22c-6.417 5.396-10 10.416-10 18 0 8.312 3.146 15.041 10 20 10.646 7.729 25.187 12 44 12 18.229 0 32.885-2.781 42-10s15.229-19.521 18-36l64 2c-1.021 29.458-11.657 54.354-32 72s-49.75 26-90 26zM232 324v-54h96v-266h64v266h94v54h-254z" />
+<glyph unicode="&#xe993;" glyph-name="it-tapelib-sunts" d="M60 960c-33.495 0-60-26.505-60-60v-484c0-33.495 26.505-60 60-60h904c33.495 0 60 26.505 60 60v484c0 33.495-26.505 60-60 60zM222 790h580c33.495 0 60-26.505 60-60v-114c0-33.495-26.505-62-60-62h-580c-33.495 0-60 28.505-60 62v114c0 33.495 26.505 60 60 60zM740 776c-54.503 0-98-43.497-98-98s43.497-98 98-98c54.503 0 98 43.497 98 98s-43.497 98-98 98zM284 766c-54.503 0-98-43.497-98-98s43.497-100 98-100c54.503 0 98 45.497 98 100s-43.497 98-98 98zM194 321.282c-24.646 0-46.573-4.563-64-12s-30.74-17.782-40-32c-9.26-14.219-14-29.667-14-46 0-25.375 10.312-46.354 30-64 14-12.542 37.292-23.396 72-32 26.979-6.708 44.416-11.375 52-14 11.083-3.937 19.552-8.677 24-14s6-12.417 6-20c0-11.813-5.427-21.177-16-30s-25.146-14-46-14c-19.688 0-36.406 6.083-48 16s-18.208 24.854-22 46l-64-6c4.229-35.875 18.271-63.26 40-82s53.458-28 94-28c27.854 0 49.333 4.198 68 12s33.791 19.958 44 36c10.208 16.042 16 33.625 16 52 0 20.271-5.469 36.219-14 50s-18.906 24.052-34 32c-15.094 7.948-38.5 16.562-70 24s-51.833 15.146-60 22c-6.417 5.396-10 10.416-10 18 0 8.312 3.146 15.041 10 20 10.646 7.729 25.187 12 44 12 18.229 0 32.885-2.781 42-10s15.229-19.521 18-36l64 2c-1.021 29.458-11.657 54.354-32 72s-49.75 26-90 26zM380 315.282v-170c0-35.875 1.771-63.625 6-82 2.917-12.396 8.812-24.698 18-36s22.177-20.927 38-28c15.823-7.073 39.375-10 70-10 25.375 0 46.25 3.51 62 10s28.593 15.062 38 26c9.406 10.937 14.5 24.104 18 40s6 43.5 6 82v168h-66v-178c0-25.375-0.104-43.063-2-54s-6.667-20.49-16-28c-9.334-7.511-23.625-10-42-10-18.083 0-33.573 4.052-44 12s-15.229 18.875-18 32c-1.604 8.167-4 24.437-4 52v174zM704 315.282v-320h60v208l130-208h66v320h-60v-214l-132 214z" />
+<glyph unicode="&#xe994;" glyph-name="it-Virtualnetwork" d="M511.975 956.754l211.157-211.187-211.232-211.202-211.157 211.187 211.232 211.202zM-0.023 452.056l211.202 211.202 211.202-211.202-211.202-211.202-211.202 211.202zM601.514 452.162l211.232 211.172 211.218-211.277-211.232-211.172-211.218 211.277zM511.954-63.998l-211.202 211.202 211.157 211.157 211.202-211.202-211.157-211.157z" />
+<glyph unicode="&#xe995;" glyph-name="networkTree" d="M496 960c-88.366 0-160-71.634-160-160 0-24.616 6.069-47.168 16-68-2.717 0.137-5.249 0-8 0-88.366 0-160-71.634-160-160 0-27.456 5.815-53.421 18-76-66.58-19.363-116-79.172-116-152 0-35.129 12.807-67.609 32-94-67.806-18.571-118-80.301-118-154 0-88.366 71.634-160 160-160 46.834 0 88.74 19.93 118 52 29.284-32.474 72.829-52 120-52 45.179 0 84.906 17.887 114 48 29.094-30.113 70.821-48 116-48 47.171 0 88.716 19.526 118 52 29.26-32.070 71.166-52 118-52 88.366 0 160 71.634 160 160 0 75.074-52.257 136.747-122 154 18.745 26.206 30 59.324 30 94 0 80.039-59.259 144.213-136 156 8.096 19.142 12 41.909 12 64 0 88.366-71.634 160-160 160-4.843 0-9.266-1.579-14-2 12.979 23.123 22 49.597 22 78 0 88.366-71.634 160-160 160zM486 640c3.384-0.214 6.562 0 10 0 4.814 0 9.294-0.416 14 0-4.875-8.722-10.808-16.369-14-26-2.494 9.021-6.040 17.694-10 26zM494 522c1.789-6.866 3.354-13.525 6-20-4.77-0.246-9.349-1.346-14-2 3.459 6.858 5.543 14.62 8 22z" />
+<glyph unicode="&#xe996;" glyph-name="resourceType" d="M192 960c-105.522 0-190-84.478-190-190v-644c0-105.522 84.478-190 190-190h644c105.522 0 190 84.478 190 190v644c0 105.522-84.478 190-190 190h-644zM800 864c52.598 0 96-43.403 96-96s-43.402-96-96-96c-52.598 0-94 43.403-94 96s41.402 96 94 96zM156 852h446v-176h-446v176zM804 542c52.598 0 96-43.403 96-96s-43.402-96-96-96c-52.598 0-94 43.403-94 96s41.402 96 94 96zM150 536h444v-176h-444v176zM156 220h446v-176h-446v176zM808 220c52.598 0 94-43.402 94-96s-41.402-96-94-96c-52.598 0-96 43.402-96 96s43.402 96 96 96z" />
+<glyph unicode="&#xe997;" glyph-name="tree-icon" d="M384 960h256v-256h-56.617v-128h312.617v-384h128v-256h-384v256h128v256h-512v-256h128v-256h-384v256h128v384h322.873v128h-66.873v256z" />
+<glyph unicode="&#xe998;" glyph-name="uep-topo-group20x20" d="M0 704v-192h96v-320h-96v-256h256v256h-96v320h320v-320h-96v-256h256v256h-96v320h320v-320h-96v-256h256v256h-96v320h96v192z" />
+<glyph unicode="&#xe999;" glyph-name="uep-topo-root" d="M86 960c-47.477 0-86-38.523-86-86v-532c0-47.477 38.523-86 86-86h350l-44-172c108.143-38.808 178.516-26.928 240 0l-34 172h340c47.477 0 86 38.523 86 86v532c0 47.477-38.523 86-86 86h-852zM110 848h804v-468h-804v468zM304 120c-37.227-19.359-60-45.155-60-72 0-62.25 120.094-112 268-112s268 49.75 268 112c0 26.845-22.773 52.641-60 72-22.376-63.518-106.109-112-208-112s-185.624 48.482-208 112z" />
+<glyph unicode="&#xe99a;" glyph-name="uep-topo-virtual20x20" d="M0 444.997h192v-508.997h-192v508.997zM623.819 960v-384l136 122v-762h128v746l136-122v384l-192-172-208 188zM298.857 444.997h192v-508.997h-192v508.997zM597.714 444.997h192v-508.997h-192v508.997z" />
+<glyph unicode="&#xe99b;" glyph-name="common_ncd_stop" d="M814 960.002c-115.833 0-208-94.371-208-210 0-115.623 92.167-208 208-208s210 92.377 210 208c0 115.629-94.167 210-210 210zM152 866.002c-84.432 0-152-67.717-152-152v-626c0-84.277 67.568-152 152-152h628c84.432 0 150 67.723 150 152v392c-35.867-16.242-74.050-26-116-26-157.445 0-286 126.827-286 284 0 45.721 10.802 89.719 30 128h-406zM704 854.002h70v-206h-70v206zM856 854.002h70v-206h-70v206zM110 668.002h84l176-228v228h80v-260c-15.173 4.433-31.583 6-48 6-32.083 0-61.605-10.229-88-26l-124 160v-222h-80v342zM414 362.002c34.617 0 62.38-9.577 84-30 12.869-12.071 23.565-27.389 30-50l-56-14c-3.346 14.642-9.383 25.522-20 34-10.617 8.487-24.815 12-40 12-20.976 0-38.938-6.966-52-22-13.062-15.024-18-40.34-18-74 0-35.718 5.131-60.85 18-76 12.869-15.155 31.41-22 52-22 15.185 0 27.061 4.383 38 14 10.938 9.635 17.238 25.321 22 46l56-18c-8.494-30.833-22.246-53.032-42-68-19.754-14.959-43.63-24-74-24-37.577 0-69.807 14.37-94 40s-36 59.552-36 104c0 47.014 11.678 83.987 36 110s56.364 38 96 38zM578 356.002h106c23.55 0 41.646 1.406 54-2 16.601-4.862 30.16-15.533 42-28 11.839-12.453 19.823-25.952 26-44s10-41.535 10-68c0-23.25-4.21-43.175-10-60-7.078-20.553-16.874-37.271-30-50-9.909-9.631-23.142-16.606-40-22-12.612-3.966-28.895-6-50-6h-108v280zM636 310.002v-186h42c15.957 0 28.922 0.275 36 2 9.265 2.333 15.887 6.48 22 12 6.113 5.524 12.139 15.346 16 28s4 30.163 4 52c0 21.841-0.141 38.312-4 50-3.861 11.698-11.051 19.449-18 26s-15.319 11.681-26 14c-7.979 2.053-22.707 2-46 2h-26z" />
+<glyph unicode="&#xe99c;" glyph-name="it-app-netnumen" d="M132 964c-70.912 0-128-57.088-128-128v-768c0-70.912 57.088-128 128-128h418l478 480v416c0 70.912-57.088 128-128 128h-768zM114 882h112l234-380v380h106v-570h-116l-230 372v-372h-106v570zM1028 320l-380-380h252c70.912 0 128 57.088 128 128v252z" />
+<glyph unicode="&#xe99d;" glyph-name="it-sdn-vnet" d="M498 960c-82.532-2.144-165.473-23.817-242-68-244.886-141.385-329.386-455.113-188-700 110.457-191.318 326.328-283.858 532-248-67.447 15.471-126.088 49.392-172 98-19.648 4.043-39.322 7.308-58 14l32 18c-20.773 27.959-38.401 58.436-50 92l-90-52c-30.316 22.699-56.279 52.734-80 84l110 64c16.047-23.28 34.225-43.553 52-64-6.339 26.139-12 51.912-12 80 0 51.261 11.931 100.275 32 144l-42-24c-18.203 33.787-34.668 67.98-48 102l112 64 34-58c23.494 26.609 49.379 49.664 80 68l-24 42 104 60c14.891-18.474 28.283-37.666 42-58 18.097 2.934 35.074 6 54 6 60.481 0 118.588-16.641 168-44l50 30c11.932-28.367 20.080-58.668 26-88 0.673-0.673 1.332-1.322 2-2 45.731-46.49 78.423-105.65 92-172 23.66 117.806 6.802 243.76-58 356-97.203 168.36-276.429 260.716-458 256zM522 862c45.433-1.164 91.51-8.455 134-24l-64-36c-22.814 22.131-46.003 41.701-70 60zM394 846c39.593-25.649 77.216-56.275 114-92l-84-50-72 126c13.744 5.792 27.944 11.801 42 16zM760 782c31.169-23.019 57.714-49.989 82-82l-116-68c-20.416 32.76-40.879 63.373-64 92l88 52c3.203 1.849 7.605 3.435 10 6zM262 778l72-126-92-52c-12.711 49.321-17.254 97.18-20 144 12.392 12.18 25.886 23.294 40 34zM142 636c3.995-27.904 10.633-55.367 18-84l-58-34c7.125 40.791 21.178 80.958 40 118zM674 564c-158.574 0-286-129.426-286-288s127.426-286 286-286c158.574 0 288 127.426 288 286s-129.426 288-288 288zM192 454c13.398-34.314 27.679-69.994 46-104l-108-62c-15.217 36.176-27.5 72.396-32 110l94 56zM654 448c19.614 0 36-16.386 36-36 0-1.039 0.083-0.988 0-2l126-66c8.663 7.366 19.441 12 32 12 27.46 0 50-21.325 50-48s-22.54-48-50-48c-12.559 0-23.337 4.305-32 12l-76-50c0-1.051 0.147-0.989 0-2l92-62c4.905 3.888 8.99 6 16 6 16.568 0 32-11.905 32-28s-15.432-30-32-30c-16.568 0-28 13.905-28 30l-94 66c-2.938-1.163-6.665-2-10-2-13.338 0-26 9.043-26 22s12.662 24 26 24c4.798 0 8.156-1.697 12-4l76 48c-2.479 5.875-4 11.331-4 18 0 5.095 0.518 11.414 2 16l-122 64c-6.254-6.254-16.193-10-26-10-4.385 0-8.176 2.601-12 4l-90-114c8.642-9.928 12-23.723 12-38 0-31.383-24.617-56-56-56s-56 24.617-56 56c0 31.383 24.617 56 56 56 8.553 0 16.75-2.641 24-6l94 116c-3.186 5.279-6 9.223-6 16 0 19.614 14.386 36 34 36z" />
+<glyph unicode="&#xe99e;" glyph-name="it-storage-sanswitch-hp" d="M154 960c-85.040 0-154-68.96-154-154v-716c0-85.040 68.96-154 154-154h716c85.040 0 154 68.96 154 154v716c0 85.040-68.96 154-154 154h-716zM178 838h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM176 616h672c26.747 0 48-28.544 48-64s-21.253-64-48-64h-672c-26.747 0-48 28.544-48 64s21.253 64 48 64zM180 372h64v-126h128v126h64v-320h-64v140h-128v-140h-64v320zM598 372h104c39.375 0 66.041-0.792 78-4 18.375-4.813 33.604-15.886 46-32s18-36.479 18-62c0-19.688-2.854-36.584-10-50s-16.99-24.344-28-32c-11.011-7.656-22.625-11.521-34-14-15.458-3.062-36.688-6-66-6h-44v-120h-64v320zM662 318v-90h36c25.521 0 43.396 0.646 52 4s15.114 8.854 20 16c4.885 7.146 8 14.521 8 24 0 11.666-5.146 22.416-12 30s-15.5 12.104-26 14c-7.729 1.458-22.667 1.999-46 2h-32z" />
+<glyph unicode="&#xe99f;" glyph-name="it-switch" d="M526 960c-4.17 0.122-9.077 0.191-14 0.191-282.77 0-512-229.23-512-512 0-0.067 0-0.135 0-0.202 0-282.759 229.23-511.99 512-511.99s512 229.23 512 512c0 0.057 0 0.124 0 0.191 0 277.847-221.318 504.002-497.281 511.792zM294 848v-78h562v-96h-562v-78l-126 126 126 126zM728 574l128-128-128-126v78h-560v96h560v80zM294 302v-80h562v-96h-562v-78l-126 126 126 128z" />
+<glyph unicode="&#xe9a0;" glyph-name="uep-moc-root" d="M120 754.817l-58-124h894l-30 64h-424l-16 60zM0 530l64-594h898l62 594z" />
+<glyph unicode="&#xe9a1;" glyph-name="uep-topo-undefinedgroup20x20" d="M0 704v-192h96v-320h-96v-256h256v256h-96v320h320v-320h-96v-256h256v256h-96v320h320v-320h-96v-256h256v256h-96v320h96v192zM64 128h128v-128h-128zM448 128h128v-128h-128zM832 128h128v-128h-128z" />
+<glyph unicode="&#xe9a2;" glyph-name="analysis" d="M288.414 557.82c0-0.009 0-0.020 0-0.030 0-79.643-64.564-144.207-144.207-144.207s-144.207 64.564-144.207 144.207c0 0.011 0 0.021 0 0.032 0 0.007 0 0.018 0 0.029 0 79.643 64.564 144.207 144.207 144.207s144.207-64.564 144.207-144.207c0-0.011 0-0.021 0-0.032zM287.26 148.272c0-0.007 0-0.016 0-0.025 0-64.352-52.167-116.519-116.519-116.519s-116.519 52.167-116.519 116.519c0 0.009 0 0.017 0 0.026 0 0.006 0 0.015 0 0.023 0 64.352 52.167 116.519 116.519 116.519s116.519-52.167 116.519-116.519c0-0.009 0-0.017 0-0.026zM716.419 61.748c0-0.008 0-0.017 0-0.026 0-69.449-56.299-125.748-125.748-125.748s-125.748 56.299-125.748 125.748c0 0.009 0 0.019 0 0.028 0 0.006 0 0.016 0 0.025 0 69.449 56.299 125.748 125.748 125.748s125.748-56.299 125.748-125.748c0-0.009 0-0.019 0-0.028zM748.721 732.021c0-0.014 0-0.031 0-0.047 0-124.243-100.719-224.963-224.963-224.963s-224.963 100.719-224.963 224.963c0 0.017 0 0.033 0 0.050 0 0.011 0 0.028 0 0.045 0 124.243 100.719 224.963 224.963 224.963s224.963-100.719 224.963-224.963c0-0.017 0-0.033 0-0.050zM1025.598 418.227c0-0.011 0-0.024 0-0.037 0-97.483-79.026-176.509-176.509-176.509s-176.509 79.026-176.509 176.509c0 0.013 0 0.026 0 0.039 0 0.009 0 0.022 0 0.035 0 97.483 79.026 176.509 176.509 176.509s176.509-79.026 176.509-176.509c0-0.013 0-0.026 0-0.039zM526.066 324.781c0-0.006 0-0.013 0-0.020 0-51.609-41.837-93.446-93.446-93.446s-93.446 41.837-93.446 93.446c0 0.007 0 0.014 0 0.021 0 0.005 0 0.012 0 0.019 0 51.609 41.837 93.446 93.446 93.446s93.446-41.837 93.446-93.446c0-0.007 0-0.014 0-0.021z" />
+<glyph unicode="&#xe9a3;" glyph-name="bindingRelationship" d="M316 962c-95.089 0-172-76.911-172-172 0-92.48 72.524-167.929 164-172-90.194-5.431-162-78.44-162-170 0-86.687 64.634-158.002 148-170-84.072-11.37-148-82.811-148-170 0-95.089 76.911-172 172-172s172 76.911 172 172c0 87.422-65.601 158.925-150 170 84.346 11.124 150 82.616 150 170 0 92.33-72.732 167.706-164 172 90.194 5.431 162 78.44 162 170 0 95.089-76.911 172-172 172zM750 754c-95.089 0-172-76.911-172-172s76.911-172 172-172c-94.127-1.118-170-77.608-170-172 0-95.089 76.911-172 172-172s174 76.911 174 172c0 95.089-78.911 172-174 172 94.18 1.057 170 77.569 170 172 0 95.089-76.911 172-172 172z" />
+<glyph unicode="&#xe9a4;" glyph-name="browsePolicy" d="M0 960v-1024h1024v1024h-1024zM64 728h896v-744h-896v744zM154 580v-64h386v64h-386zM154 374v-64h738v64h-738zM154 162v-64h738v64h-738z" />
+<glyph unicode="&#xe9a5;" glyph-name="businessManagment" d="M0 960v-1024h1024v1024h-1024zM122 840h780v-584h-198v-198h-384v198h-198v584zM234 726v-64h556v64h-556zM234 514v-64h556v64h-556z" />
+<glyph unicode="&#xe9a6;" glyph-name="cardData" d="M0 754.528v-818.528h1024v818.528zM66 690.528h896v-108.902h-896zM66 415.622h896v-415.622h-896zM726 260.902v-192h192v192zM108 132.902v-64h156v64zM314 132.902v-64h64v64z" />
+<glyph unicode="&#xe9a7;" glyph-name="dailyManagment" d="M340 964l-34-6-286-48 12-34 22-76h-54v-862h1024v585.229l-295.229 276.771h-262.771l-14 120-64-6 12-114h-46l-10 128zM282 888l8-88h-78l-22 50-44-18 12-32h-34l-20 58zM64 736h118l84-216 10-22 24 4 48 6 30 6-2 30-16 192h368.771v-212.771h231.229v-521.229h-896zM240 736h56l12-150zM142 382v-64h762v64zM142 196v-64h762v64z" />
+<glyph unicode="&#xe9a8;" glyph-name="enterpriseCustomer" d="M512 960l-512-322h1024l-512 322zM512 846c26.51 0 48-21.49 48-48s-21.49-48-48-48c-26.51 0-48 21.49-48 48s21.49 48 48 48zM55.344 570.669l4-30.336v-391.379l-4-31.853h174l-4 31.853v391.379l4 30.336h-174zM301.344 570.669l4-30.336v-391.379l-4-31.853h174l-4 31.853v391.379l4 30.336h-174zM547.344 570.669l4-30.336v-391.379l-4-31.853h174l-4 31.853v391.379l4 30.336h-174zM793.344 570.669l4-30.336v-391.379l-4-31.853h174l-4 31.853v391.379l4 30.336h-174zM33.331 62.656h957.338l33.331-126.656h-1024z" />
+<glyph unicode="&#xe9a9;" glyph-name="equipmentBlacklist" d="M96 960v-1024h832v554c-16.551-23.661-38.104-28.804-64-42v-448h-704v896h422c23.693 31.685 58.349 54.324 98 64h-584zM816 934c-114.539 0-206-93.461-206-208s91.461-208 206-208c114.54 0 208 93.461 208 208s-93.46 208-208 208zM220 840v-64h248v64h-248zM710 764h214v-76h-214v76zM220 738v-206h248v206h-248zM220 496v-98h248v98h-248zM218 314v-64h578v64h-578zM224 162v-64h580v64h-580z" />
+<glyph unicode="&#xe9aa;" glyph-name="equipmentModel" d="M962.030 912.032c-8.838-62.893-26.692-87.763-47.41-100.083-20.708-12.307-50.544-12.506-82.517-12.282-31.978 0-67.463 2.432-98.328-22.835-15.428-12.595-26.625-30.035-29.849-52.672-0.25-1.728 0.198-3.52 0.011-5.248-51.048 20.41-232.3 46.931-275.527 8.051-1.923-1.792-5.16-1.664-7.021-3.52l-421.389-419.59 367.856-367.853 421.389 419.635c1.8 1.792 3.59 3.392 5.265 5.312 47.548 52.435 13.878 252.998-27.359 308.89-2.946 19.462-4.849 36.262-3.511 45.651 1.751 12.32 4.106 15.181 7.021 17.562 5.823 4.736 28.684 7.251 61.453 7.027 32.769-0.006 75.936-1.664 114.126 21.062 38.191 22.714 65.175 68.762 75.499 142.221l-59.699 8.781zM623.738 615.885c31.034 0 56.189-25.158 56.185-56.192 0.001-31.027-25.154-56.179-56.183-56.179s-56.184 25.152-56.185 56.179c-0.001 31.034 25.154 56.192 56.183 56.192z" />
+<glyph unicode="&#xe9ab;" glyph-name="examine" d="M160 952c-25.903-30.044-41.331-62.192-48-94h-106v-924h670c10.497-1.078 21.219-2 32-2 8.767 0 17.417 1.283 26 2h40v6c140.119 31.085 246 156.583 246 306s-105.881 273.317-246 304v308h-158c5.279 16.405 16.044 33.491 32 52l-48 42c-25.903-30.044-41.331-62.192-48-94h-80c5.311 16.271 14.187 33.658 30 52l-48 42c-25.903-30.044-41.331-62.192-48-94h-82c5.819 16.405 16.044 33.491 32 52l-50 42c-25.903-30.044-41.331-62.192-48-94h-82c5.279 16.405 16.044 33.491 32 52l-48 42zM86 778h28c8.23-31.167 24.037-60.201 44-88l52 36c-13.274 18.483-23.611 34.856-30 52h82c8.815-31.148 24.048-60.216 44-88l52 36c-13.245 18.443-23.056 34.89-30 52h80c8.23-31.167 24.037-60.201 44-88l52 36c-13.274 18.483-23.611 34.856-30 52h80c8.23-31.167 24.037-60.201 44-88l52 36c-13.274 18.483-23.611 34.856-30 52h76v-220c-166.907-6.305-300-143.532-300-312 0-91.892 40.922-174.406 104-232h-414v764zM888 378l46-44-226-230-28-26-22 30-128 180 52 38 106-150 200 202z" />
+<glyph unicode="&#xe9ac;" glyph-name="failureList" d="M0 960v-1024h818v106l-64-8v-34h-690v896h690v-106l64-8v178h-818zM730 732c-163.35 0-296-130.65-296-294s132.65-296 296-296c163.35 0 294 132.65 294 296s-130.65 294-294 294zM132 714v-64h306v64h-306zM704 636h48c17.845 0 35.574-14.224 34-32l-18-200c-1.574-17.776-14.155-32-32-32h-10c-17.845 0-30.060 14.261-32 32l-22 200c-1.94 17.739 14.155 32 32 32zM132 526v-64h226v64h-226zM132 338v-64h226v64h-226zM728 336c27.036 0 50-20.964 50-48s-22.964-50-50-50c-27.036 0-48 22.964-48 50s20.964 48 48 48zM132 148v-64h354v64h-354z" />
+<glyph unicode="&#xe9ad;" glyph-name="familyCustomer" d="M448 960.001c-99.149 0-184-84.858-184-184s84.851-178 184-178c99.149 0 174 78.858 174 178s-74.851 184-174 184zM286 586.001c-129.705-57.273-217.877-186.935-226-336l-60-250c284.445 318.778 236 372.086 236-66h276.671v270.561c3.512 99.722 66.764 160.188 121.919 172.125-17.49 54.214-25.625 122.175 3.41 167.313-5.942 21.014-17.153 35.182-36 42-1.835 1.639-2.149 0-4 0-40.421-38.476-89.792-64-150-64s-117.579 25.524-158 64c-1.347 1.639-2.68-1.639-4 0zM786 562.001c-60.168 0-112-51.224-112-112s51.832-110 112-110c60.168 0 106 49.224 106 110s-45.832 112-106 112zM1014 550.001c-65.69-147.654-105.651-269.621-246-250-36.537 0-71.471 14.414-96 38-0.818 1.005-1.199-1.005-2 0-74.281-35.109-67.145-38.621-110-130l4.464-254 63.536 178h10v-192h254v192h12c97.602 38.567 100.046 313.036 110 418z" />
+<glyph unicode="&#xe9ae;" glyph-name="fileTool" d="M256 938v-150h64v54h398v-54h64v150h-526zM8 718v-294h132v64h96v-64h600v64h96v-64h100v294h-1024zM0 364v-428h1024v428h-92v-64h-96v64h-600v-64h-96v64h-140zM404 302l224-152-224-152v304z" />
+<glyph unicode="&#xe9af;" glyph-name="groupManagment" d="M0 960v-1024h1024v1024h-1024zM448 896h128v-896h-128v896zM120 848h208v-210h-208v210zM696 848h208v-210h-208v210zM120 546h208v-210h-208v210zM696 546h208v-210h-208v210zM120 244h208v-210h-208v210zM696 244h208v-210h-208v210z" />
+<glyph unicode="&#xe9b0;" glyph-name="notice" d="M830 955.998c-3.954 0-6.163-1.654-10-2-21.087-1.899-42.52-9.182-60-20-150.563-49.266-299.814-132.472-452-140v-310l470-160c6.045-2.682 13.576-4.251 20-6 2.196-0.595 3.76-1.518 6-2 8.682-1.868 16.664-2 26-2 62.639 0 110.185 44.115 142 102s50 131.924 50 216c0 84.083-18.185 164.115-50 222-31.815 57.892-79.361 102-142 102zM830 895.998c25.474 0 58.072-20.828 84-68 25.928-47.179 42-119.755 42-196 0-76.238-16.072-142.828-42-190-25.928-47.179-58.526-68-84-68s-56.072 20.821-82 68c-25.928 47.172-44 113.762-44 190 0 76.245 18.072 148.821 44 196 25.928 47.172 56.526 68 82 68zM72 793.998c-33.614 0-60-26.386-60-60v-190c0-33.614 26.386-60 60-60h172v310h-172zM830 733.998c-17.38 0-30-49.537-30-110s12.62-108 30-108c17.38 0 32 47.537 32 108s-14.62 110-32 110zM330 389.998c-6.68 0.112-12.981-0.409-20-2-9.358-2.121-19.412-5.042-28-10l-58-34c-34.354-19.839-42.526-54.103-34-84 32.971-115.619 74.038-226.209 176-302 25.476-18.866 55.648-31.828 90-12l56 32c34.353 19.834 64.686 68.57 36 84-110.803 59.587-141.877 183.942-176 304-4.781 16.821-21.959 23.665-42 24z" />
+<glyph unicode="&#xe9b1;" glyph-name="policy" d="M516 960l-182-362h362l-180 362zM270 470l-104-206h696l-102 206h-490zM100 136l-100-200h1024l-100 200h-824z" />
+<glyph unicode="&#xe9b2;" glyph-name="portal" d="M0 960v-1024h1024v1024h-1024zM74 886h876v-132h-876v132zM126 856v-64h64v64h-64zM258 856v-64h64v64h-64zM390 856v-64h64v64h-64zM74 690h876v-680h-876v680zM510 634l-284-194h572l-288 194zM272 402v-320h478v320h-478zM448 222h126v-138h-126v138z" />
+<glyph unicode="&#xe9b3;" glyph-name="recordQuery" d="M0 960v-1024h818v98h-64v-34h-690v896h690v-114h64v178h-818zM572 780c-147.574 0-268-123.722-268-276s120.426-276 268-276c50.852 0 97.535 16.556 138 42 2.376-5.114 5.882-11.751 10-16l188-194c19.466-20.086 50.534-20.086 70 0l24 24c19.466 20.086 19.466 51.914 0 72l-188 196c-4.077 4.207-9.099 7.555-14 10 24.048 41.386 38 90.234 38 142 0 152.278-118.426 276-266 276zM572 706c107.326 0 194-91.253 194-202s-86.674-200-194-200c-107.326 0-196 89.253-196 200s88.674 202 196 202zM134 494v-64h82c-5.078 20.817-9.052 41.784-10 64h-72zM138 306v-64h204c-24.807 17.419-47.038 40.025-66 64h-138zM138 136v-64h452v64h-452z" />
+<glyph unicode="&#xe9b4;" glyph-name="resourceManagment" d="M116 930l-114-528h-2l2-6-2-6h2l102-454h840l78 454h2l-2 6 2 6h-2l-114 528h-792zM162 876h700l84-398h-868l84 398zM328 820v-48h370v48h-370zM236 710v-58h554v58h-554zM190 598v-64h646v64h-646zM378 210h268v-60h-268v60z" />
+<glyph unicode="&#xe9b5;" glyph-name="ruleManagment" d="M0 192h1024v-256h-1024v256zM155.869 827.558h192v-535.838h-192v535.838zM880.115 483.718v-192h-427.888v192h427.888zM871.413 827.558v-192h-427.888v192h427.888zM0 960v-1024h1024v1024h-1024zM60 900h904v-901.997h-904v901.997z" />
+<glyph unicode="&#xe9b6;" glyph-name="sucessRate" d="M908 956l-440-1016h82l438 1016h-80zM586 904c-28.986 0-55.758-11.758-76-32s-34-50.999-34-88c0-37.001 13.758-67.758 34-88s47.014-32 76-32c28.986 0 55.758 11.758 76 32s34 50.999 34 88c0 37.001-13.758 67.758-34 88s-47.014 32-76 32zM586 856c24.033 0 45.497-11.497 60-26s22-29.982 22-46c0-16.018-7.497-33.497-22-48s-35.967-24-60-24c-24.033 0-45.497 9.497-60 24s-22 31.982-22 48c0 16.018 7.497 31.497 22 46s35.967 26 60 26zM462 618l-208-428-124 200-132-84 208-204 22-26 28 22 380 448-174 72zM872 220c-28.986 0-55.758-11.758-76-32s-36-50.999-36-88c0-37.001 15.758-67.758 36-88s47.014-32 76-32c28.986 0 53.758 11.758 74 32s36 50.999 36 88c0 37.001-15.758 67.758-36 88s-45.014 32-74 32zM872 172c24.033 0 45.497-11.497 60-26s20-29.982 20-46c0-16.018-5.497-33.497-20-48s-35.967-24-60-24c-24.033 0-45.497 9.497-60 24s-22 31.982-22 48c0 16.018 7.497 31.497 22 46s35.967 26 60 26z" />
+<glyph unicode="&#xe9b7;" glyph-name="terminalManagment" d="M340 960c-188.394 0-340-151.606-340-340v-344c0-188.394 151.606-340 340-340h344c188.394 0 340 151.606 340 340v344c0 188.394-151.606 340-340 340h-344zM340 900h344c156.193 0 280-123.807 280-280v-344c0-156.193-123.807-280-280-280h-344c-156.193 0-280 123.807-280 280v344c0 156.193 123.807 280 280 280zM294 808l-118-98 140-172-148-204 116-86 224 284-214 276zM526 344v-96h96v96h-96zM758 344v-96h96v96h-96z" />
+<glyph unicode="&#xe9b8;" glyph-name="tools" d="M232 950c-61.702-26.098-104-88.791-104-160 0-63.406 36.891-118.173 88-148v-142h-28c-102.784 0-188-79.286-188-174v-216c0-94.714 85.216-174 188-174h648c102.784 0 188 79.286 188 174v216c0 94.714-85.216 174-188 174h-90v272.744l32.242-10.697h75.758c9.891 1.512 13.281 2.842 20 18 16.523 50.182 124.738 56.639 146 37.954 3.52 58.704-84.581 96.842-148 94-38.653 1.549-114 0-114 0-12.518-0.026-23.19-12.302-28-28h-56v8c0 29.134-22.866 54-52 54h-20c-29.134 0-54-24.866-54-54v-108c0-29.134 24.866-54 54-54h20c10.645 0 19.738 4.604 28 10v-240h-270v138c55.309 28.606 92 85.473 92 152 0 71.885-45.362 134.327-108 160 0.91-2.929 4-6.714 4-10v-176c0-15.687-14.009-28-28-28h-80c-13.991 0-28 12.313-28 28v176c0 3.286 3.090 7.071 4 10-0.589-0.241-3.414 0.248-4 0zM188 400h648c45.538 0 82-32.037 82-74v-16h-812v16c0 41.963 36.462 74 82 74zM106 246h812v-136c0-41.963-36.462-76-82-76h-648c-45.538 0-82 34.037-82 76z" />
+<glyph unicode="&#xe9b9;" glyph-name="track" d="M386.288 809.389c-64.504-2.92-124.19-43.881-109.558-141.846 15.955-106.825 15.406-172.256 93.327-158.057 87.588 15.961 108.823 82.844 103.471 164.136-5.847 88.81-26.616 138.511-87.24 135.767zM670.326 793.178c-46.129-2.217-72.376-54.29-93.327-119.556-33.015-102.851-30.356-144.937 48.692-149.951 88.855-5.637 118.134 31.147 131.875 111.45 13.208 77.193-5.994 141.384-64.923 156.030-7.366 1.831-15.727 2.343-22.317 2.026zM112.394 600.673c-60.726 0-106.386-63.689-111.586-141.846-7.171-107.77 33.666-156.045 111.586-141.846 87.588 15.961 115.64 60.605 109.558 141.846-5.847 78.094-48.831 141.846-109.558 141.846zM923.931 586.488c-43.702-4.545-86.594-41.033-113.615-93.213-49.679-95.935-32.478-154.168 44.635-172.241 86.68-20.316 129.302 8.204 156.221 85.107 25.876 73.924 13.064 150.038-42.606 174.268-13.918 6.057-30.067 7.594-44.635 6.079zM493.817 462.88c-80.695 0-167.197-57.335-200.855-176.294-89.884-44.495-159.755-129.365-137.961-214.795 35.956-140.948 185.98-135.767 338.817-135.767s326.644-1.514 326.644 143.872c0 145.386-173.807 382.983-326.644 382.983z" />
+<glyph unicode="&#xe9ba;" glyph-name="userManagment" d="M325.771 824.845c-83.461 0-153.836-70.365-153.836-153.834 0-83.463 70.375-150.816 153.836-150.816s147.803 67.353 147.803 150.816c0 83.469-64.342 153.834-147.803 153.834zM190.033 511.141c-109.183-48.214-183.195-158.051-190.033-283.537h404.954l113.039 250.144c-12.772 8.111-48.521 27.215-62.517 33.393-1.545 1.312-1.458 0-3.017 0l-126.689-189.911-132.721 189.911c-1.134 1.312-1.905-1.312-3.016 0zM703.355 604.824c-83.461 0-153.836-70.365-153.836-153.834 0-83.463 70.375-150.816 153.836-150.816s147.804 67.354 147.804 150.816c0 83.469-64.342 153.834-147.804 153.834zM567.617 291.12c-109.183-48.214-183.195-158.051-190.033-283.537h645.509c-6.838 125.486-80.85 235.323-190.033 283.537-1.546 1.312-1.459 0-3.017 0-71.621-110.94-177.699-111.193-259.41 0-1.134 1.312-1.905-1.312-3.016 0z" />
+<glyph unicode="&#xe9bb;" glyph-name="versionManagment" d="M128 959.75v-481.997h-128l112-540.806h802l110 540.806h-128v481.997zM192 895.75h640v-417.997h-640zM244 767.75v-64h270v64zM242 637.754v-64h520v64z" />
+<glyph unicode="&#xe9bc;" glyph-name="workOrder" d="M116 960v-1024h792v722h2l-282 300v2h-512zM176 900h390v-302h282v-600h-672v902zM628 864l192-206h-192v206zM374 862v-106h-114v-84h114v-112l140 154-140 148zM650 508v-106h-114v-84h114v-112l140 154-140 148zM374 344v-106h-114v-84h114v-112l140 154-140 148z" />
+<glyph unicode="&#xe9bd;" glyph-name="cpu" d="M888.686 960h-753.371c-74.606 0-135.314-62.171-135.314-138.606v-746.862c0-76.361 60.709-138.533 135.314-138.533h753.371c74.606 0 135.314 62.171 135.314 138.606v746.789c0 76.434-60.709 138.606-135.314 138.606zM888.686 9.143h-49.445v59.831c0 77.531-64 140.581-142.702 140.581h-15.287c-13.239 22.601-37.010 38.473-65.463 38.473-42.35 0-76.8-33.646-76.8-75.118 0-41.399 34.45-75.191 76.8-75.191 28.526 0 52.517 16.091 65.609 38.766h15.141c38.327 0 69.559-30.208 69.559-67.438v-59.904h-571.611v59.831c0 37.23 31.232 67.438 69.559 67.438h51.785c13.239-22.747 37.157-38.766 65.682-38.766 42.35 0 76.727 33.792 76.727 75.191 0 41.472-34.377 75.118-76.727 75.118-28.453 0-52.297-15.872-65.536-38.4h-51.931c-78.702 0-142.702-63.049-142.702-140.581v-56.832c-27.355 6.802-48.201 31.598-48.201 62.464v263.68h109.568c10.679-13.605 26.697-22.894 45.568-22.894 32.329 0 58.441 25.6 58.441 57.198 0 31.671-26.039 57.344-58.441 57.344-21.65 0-39.863-12.069-49.957-29.33h-105.179v91.429h111.835c10.752-11.776 25.893-19.602 43.301-19.602 32.329 0 58.441 25.673 58.441 57.271 0 31.671-26.039 57.344-58.441 57.344-23.186 0-42.789-13.531-52.224-32.695h-102.912v267.045c0 36.133 27.867 65.463 62.171 65.463h266.459v-108.032c-19.602-9.216-33.353-28.526-33.353-51.2 0-31.744 26.185-57.344 58.587-57.344 32.183 0 58.441 25.6 58.441 57.344 0 17.042-7.973 31.89-19.968 42.423v116.809h93.33v-110.226c-17.774-9.947-30.062-27.721-30.062-49.006 0-31.744 26.185-57.344 58.514-57.344 32.183 0 58.441 25.6 58.441 57.344 0 18.505-9.509 34.231-23.406 44.617v114.615h266.459c34.231 0 62.098-29.33 62.098-65.463v-267.045h-102.546c-9.435 19.163-28.965 32.695-52.224 32.695-32.329 0-58.441-25.673-58.441-57.344 0-31.598 26.039-57.271 58.441-57.271 17.408 0 32.475 7.826 43.301 19.602h111.47v-91.429h-104.887c-10.094 17.262-28.306 29.33-49.957 29.33-32.329 0-58.441-25.673-58.441-57.344s26.039-57.198 58.441-57.198c18.871 0 34.962 9.362 45.568 22.894h109.275v-263.68c0-36.133-27.867-65.463-62.171-65.463zM356.206 582.363h294.985v-275.529h-294.985v275.529z" />
+<glyph unicode="&#xe9be;" glyph-name="memory" d="M1023.854 306.249l-97.938 566.491h-794.99l-130.706-566.491h-0.219v-284.306h1024v284.306h-0.146zM183.296 799.598h686.885l72.923-421.010h-856.942l97.134 421.010zM955.685 95.159h-887.369v137.947h887.442v-137.947zM131.95 209.262h73.143v-99.109h-73.143v99.109zM247.003 209.262h73.143v-99.109h-73.143v99.109zM890.368 157.769c0-17.693-14.343-32.037-32.037-32.037s-32.037 14.343-32.037 32.037c0 17.693 14.343 32.037 32.037 32.037s32.037-14.343 32.037-32.037z" />
+<glyph unicode="&#xe9bf;" glyph-name="currentAlarm" d="M512 960c-282.331 0-512-229.742-512-512s229.669-512 512-512c282.258 0 512 229.742 512 512s-229.742 512-512 512zM512 9.143c-242.030 0-438.857 196.827-438.857 438.857s196.827 438.857 438.857 438.857 438.857-196.827 438.857-438.857-196.827-438.857-438.857-438.857zM757.906 328.704c-56.174 56.174-80.018 165.961-77.605 227.474 2.853 61.44-14.409 118.638-58.661 152.357-39.79 30.208-80.53 24.064-80.53 24.064l-2.414 21.431c0 0-8.923 6.949-26.77 6.949-16.823 0-26.697-6.949-26.697-6.949l-2.706-21.431c0 0-40.667 6.071-80.165-24.064-44.471-33.719-61.586-90.99-58.88-152.357 2.706-61.513-21.358-171.301-77.605-227.401-56.101-56.174-64.073-58.953-61.44-88.283 2.779-29.33 26.917-43.813 26.917-43.813h196.462c0-34.158 37.742-61.733 84.187-61.733 46.592 0 84.187 27.575 84.187 61.733h196.535c0 0 24.21 14.409 26.843 43.813s-5.266 32.11-61.659 88.21z" />
+<glyph unicode="&#xe9c0;" glyph-name="noticeAlarm" d="M518.656 957.659c-282.331 0-512-229.669-512-512 0-282.258 229.669-512 512-512s512.073 229.742 512.073 512c0 282.331-229.742 512-512.073 512zM518.656 6.875c-242.030 0-438.857 196.827-438.857 438.857s196.827 438.857 438.857 438.857c242.103 0 438.93-196.827 438.93-438.857s-196.901-438.857-438.93-438.857zM818.907 527.506c-1.755 0-3.365-1.243-5.339-1.463v192.951c0 0-27.209 12.142-51.273 0-50.834-25.307-118.711-109.495-190.245-123.173-71.314-13.531-264.265 0.512-350.939-7.607-23.918-2.121-63.927-15.067-67.511-67.584-3.877-52.443 0-107.154 0-107.154s19.602-45.202 45.056-45.202c25.381 0 81.627 0 81.627 0s-2.121-107.447 0-143.287c3.145-50.176 18.871-62.318 38.107-88.137 11.045-15.141 73.655-49.737 112.347-25.966 21.504 13.385 39.643 36.425 31.89 65.536-9.509 35.182-44.105 1.39-54.711 44.105-10.679 42.496-7.607 127.561-7.607 127.561s18.286 25.893 42.642 31.963c5.413 1.463 74.459-4.608 74.459-4.608s190.464-66.779 235.52-129.097c31.963-44.032 60.635-13.531 60.635-13.531v190.61c1.902-0.219 3.584-1.463 5.266-1.463 20.626 0 37.376 23.479 37.376 52.809 0.073 29.111-16.603 52.736-37.303 52.736zM781.824 291.913h-13.824c0 0 0 0-39.424 35.035-39.424 34.889-127.122 69.925-180.809 86.674-15.433 4.754-65.024 8.338-65.024 8.338v112.347c6.437 0.146 17.262 4.389 37.815 3.73 107.886-2.999 249.198 129.243 249.198 129.243h12.142v-375.369z" />
+<glyph unicode="&#xe9c1;" glyph-name="historyAlarm" d="M672.329 608.695l-117.906-100.571c-10.679 6.217-22.528 10.679-35.767 10.679-8.997 0-17.335-2.121-25.234-5.12l-182.491 182.491c-13.458 13.458-35.84 12.727-50.103-1.609-14.263-14.263-14.994-36.645-1.609-50.103l188.416-188.416c-0.512-3.511-2.121-6.656-2.121-10.386 0-40.375 32.768-73.143 73.143-73.143 39.643 0 71.534 31.671 72.704 71.022l128.439 109.568c15.36 13.093 17.189 36.133 4.169 51.493-13.166 15.433-36.279 17.262-51.639 4.096zM518.656 753.152c20.187 0 36.571 16.384 36.571 36.571v51.2c0 20.187-16.384 36.571-36.571 36.571s-36.571-16.384-36.571-36.571v-51.2c0-20.187 16.311-36.571 36.571-36.571zM518.656 139.264c-20.187 0-36.571-16.457-36.571-36.571v-51.273c0-20.114 16.384-36.571 36.571-36.571s36.571 16.457 36.571 36.571v51.273c0 20.187-16.384 36.571-36.571 36.571zM910.336 482.231h-51.127c-20.187 0-36.571-16.384-36.571-36.571s16.384-36.571 36.571-36.571h51.127c20.261 0 36.571 16.384 36.571 36.571s-16.238 36.571-36.571 36.571zM172.105 482.231h-51.2c-20.114 0-36.571-16.384-36.571-36.571s16.457-36.571 36.571-36.571h51.2c20.187 0 36.571 16.384 36.571 36.571s-16.384 36.571-36.571 36.571zM518.656 957.659c-282.331 0-512-229.669-512-512 0-282.258 229.669-512 512-512s512.073 229.742 512.073 512c0 282.331-229.742 512-512.073 512zM518.656 6.875c-242.030 0-438.857 196.827-438.857 438.857s196.827 438.857 438.857 438.857c242.103 0 438.93-196.827 438.93-438.857s-196.901-438.857-438.93-438.857z" />
+<glyph unicode="&#xe9c2;" glyph-name="close" d="M868.791 204.215l-251.026 245.102 245.175 250.88-107.154 104.521-245.029-250.88-251.026 245.029-104.521-107.008 251.026-245.102-245.175-251.026 107.081-104.448 245.102 250.953 251.026-245.175z" />
+<glyph unicode="&#xe9c3;" glyph-name="table" d="M36.571 886.857v-950.857h950.857v950.857h-950.857zM919.113 813.714v-113.225h-814.226v113.225h814.226zM688.567 627.346v-165.23h-136.338v165.23h136.338zM479.086 462.043h-144.018v165.303h144.018v-165.303zM261.925 462.043h-157.038v165.303h157.038v-165.303zM261.925 388.901v-142.482h-157.038v142.482h157.038zM335.067 388.901h144.018v-142.482h-144.018v142.482zM552.229 388.901h136.338v-142.482h-136.338v142.482zM761.71 388.901h157.403v-142.482h-157.403v142.482zM761.71 462.043v165.303h157.403v-165.23h-157.403zM104.887 9.070v164.206h157.038v-164.206h-157.038zM335.067 9.070v164.206h144.018v-164.206h-144.018zM552.229 9.070v164.206h136.338v-164.206h-136.338zM761.71 9.070v164.206h157.403v-164.206h-157.403z" />
+<glyph unicode="&#xe9c4;" glyph-name="next" d="M215.040 923.429l501.102-481.646v481.573h146.286v-950.784h-146.286v463.506l-501.102-463.506z" />
+<glyph unicode="&#xe9c5;" glyph-name="pre" d="M862.427 923.429l-501.102-481.646v481.573h-146.286v-950.784h146.286v463.506l501.102-463.506z" />
+<glyph unicode="&#xe9c6;" glyph-name="roleset" d="M942.528 385.152c0 0-39.872 43.904-77.632 68.096-37.888 24.32-102.656 36.992-102.656 36.992l-3.392 31.104 6.848 4.608c0 0 27.776 56.64 32.384 69.312 4.544 12.736 12.8 12.736 18.56 19.648s12.032 51.84 8.128 58.88c-2.88 5.184-9.344 7.040-9.344 7.040l1.28 9.152c0 0 10.368 57.728 6.848 75.072s-11.648 45.12-21.888 58.88c-10.496 13.888-27.648 20.8-41.6 18.56-13.888-2.368-20.864 6.912-20.864 6.912s-26.368 23.104-51.84 24.256-98.304-17.344-113.28-85.504c-14.976-68.16 0-110.848 0-110.848l-6.976-2.304c0 0-3.456-28.864 3.52-49.664 6.848-20.736 24.256-33.408 24.256-33.408l3.456-6.976c0 0 4.032-9.344 9.28-20.672 53.44-35.776 90.176-104.704 90.176-184.96 0-46.080-12.224-88.384-32.576-123.072 11.2-0.704 22.464-1.344 33.6-1.088 134.208 3.648 236.672 42.24 243.712 61.888 6.848 19.52 0 68.096 0 68.096zM355.136 379.264c0 78.912 35.52 146.88 87.552 183.168 6.528 13.76 12.864 27.456 14.848 32.896 4.48 12.672 12.736 12.672 18.496 19.584s12.032 51.84 8.128 58.88c-2.88 5.184-9.344 7.040-9.344 7.040l1.28 9.152c0 0 10.368 57.728 6.848 75.072s-11.648 45.12-21.888 58.88c-10.56 13.888-27.712 20.864-41.664 18.56-13.888-2.368-20.864 6.912-20.864 6.912s-26.368 23.104-51.84 24.256c-25.472 1.152-98.304-17.344-113.28-85.504s0-110.848 0-110.848l-6.912-2.304c0 0-3.456-28.864 3.456-49.664 6.912-20.736 24.256-33.408 24.256-33.408l3.456-6.976c0 0 22.016-51.968 31.168-60.032 9.28-8.128 2.304-28.928 2.304-28.928l-12.672-9.216c0 0-161.664-50.88-166.336-97.088s-6.464-55.808-3.264-69.888c2.176-9.344 129.664-68.096 249.28-64.768 10.048 0.256 19.392 1.152 29.056 1.728-20.032 34.688-32.064 76.736-32.064 122.496zM568.832 530.496c0 0-26.368 23.104-51.84 24.256s-98.304-17.344-113.28-85.504c-14.976-68.16 0-110.848 0-110.848l-6.912-2.368c0 0-3.456-28.864 3.456-49.664 6.912-20.736 24.256-33.408 24.256-33.408l3.456-6.976c0 0 22.016-51.968 31.168-60.032 9.28-8.064 2.304-28.864 2.304-28.864l-12.672-9.216c0 0-161.664-50.88-166.336-97.088s-6.464-55.808-3.264-69.888c2.176-9.408 129.664-68.16 249.28-64.832 134.208 3.712 236.736 42.304 243.712 61.888 6.848 19.648 0 68.16 0 68.16s-39.872 43.904-77.632 68.096c-37.888 24.32-102.656 36.992-102.656 36.992l-3.392 31.104 6.848 4.608c0 0 27.776 56.64 32.384 69.312 4.48 12.672 12.736 12.672 18.496 19.648s12.032 51.84 8.128 58.88c-2.88 5.184-9.344 7.040-9.344 7.040l1.28 9.152c0 0 10.368 57.728 6.848 75.072s-11.648 45.12-21.888 58.88c-10.432 14.016-27.52 20.928-41.536 18.688-13.888-2.368-20.864 6.912-20.864 6.912z" />
+<glyph unicode="&#xe9c7;" glyph-name="role" d="M509.504 289.344c0 0 9.344 27.904-3.072 38.656-12.288 10.816-41.792 80.448-41.792 80.448l-4.608 9.344c0 0-23.232 16.96-32.512 44.864-0.64 1.856-0.768 3.968-1.28 5.888-17.152 4.544-28.928 6.848-28.928 6.848l-4.352 39.36 8.64 5.888c0 0 12.16 24.832 23.424 48.512-2.88 25.856-3.456 64 7.104 111.68 6.208 28.096 20.096 49.344 36.864 65.984 3.584 23.104 8.576 61.056 5.504 75.904-4.16 21.888-14.528 56.96-27.712 74.432-13.12 17.536-34.944 26.304-52.48 23.36s-26.24 8.768-26.24 8.768-33.472 29.248-65.6 30.656c-32.128 1.472-124.16-21.888-143.168-107.968-18.944-86.080 0-140.032 0-140.032l-8.64-3.008c0 0-4.416-36.544 4.288-62.72 8.768-26.304 30.656-42.368 30.656-42.368l4.352-8.768c0 0 27.84-65.664 39.424-75.904 11.648-10.112 2.88-36.48 2.88-36.48l-15.936-11.584c0 0-204.288-64.192-210.176-122.688-5.824-58.304-8.192-70.528-4.096-88.256 2.624-11.072 144.704-77.184 287.104-81.728 54.144 51.456 203.456 98.496 203.456 98.496l16.896 12.416zM1019.84 110.464c0 0-53.376 58.816-104 91.328-50.752 32.576-137.344 49.472-137.344 49.472l-4.608 41.728 9.28 6.272c0 0 37.12 75.84 43.392 92.864 6.144 17.024 17.024 17.024 24.768 26.304s16 69.376 10.752 78.976c-3.776 6.912-12.224 9.344-12.224 9.344l1.344 12.224c0 0 13.888 77.376 9.28 100.608s-15.488 60.352-29.376 78.912c-14.016 18.624-37.12 27.904-55.744 24.832-18.624-3.136-27.904 9.28-27.904 9.28s-35.52 30.912-69.504 32.448c-34.112 1.536-131.648-23.168-151.744-114.56-20.096-91.264 0-148.48 0-148.48l-9.28-3.136c0 0-4.672-38.72 4.608-66.56 9.28-27.904 32.512-44.928 32.512-44.928l4.608-9.344c0 0 29.504-69.632 41.728-80.448 12.352-10.752 3.136-38.656 3.136-38.656l-17.024-12.288c0 0-216.64-68.096-222.848-130.048s-8.704-74.752-4.352-93.632c2.88-12.544 173.76-91.264 334.016-86.784 179.904 4.928 317.248 56.704 326.528 82.944 9.344 26.304 0 91.328 0 91.328z" />
+<glyph unicode="&#xe9c8;" glyph-name="user" d="M593.664 859.072c0 0-41.216 35.84-80.64 37.632-39.488 1.792-152.512-26.88-175.808-132.736-23.296-105.792 0-172.096 0-172.096l-10.688-3.648c0 0-5.376-44.864 5.312-77.184 10.752-32.256 37.696-51.968 37.696-51.968l5.376-10.816c0 0 34.112-80.704 48.384-93.184 14.4-12.48 3.584-44.8 3.584-44.8l-19.712-14.336c0 0-251.072-78.912-258.24-150.656s-10.048-86.656-5.056-108.48c3.328-14.592 201.344-105.728 386.944-100.608 208.512 5.76 367.68 65.664 378.432 96.128 10.752 30.528 0 105.792 0 105.792s-61.952 68.16-120.64 105.792c-58.752 37.76-159.104 57.344-159.104 57.344l-5.248 48.448 10.624 7.232c0 0 43.136 87.872 50.304 107.584 7.104 19.712 19.712 19.712 28.672 30.464s18.56 80.384 12.48 91.52c-4.352 8-14.336 10.88-14.336 10.88l1.792 14.208c0 0 16.064 89.664 10.688 116.544-5.312 26.88-17.92 69.952-34.048 91.456s-42.944 32.256-64.512 28.736c-21.568-3.648-32.256 10.752-32.256 10.752z" />
+<glyph unicode="&#xe9c9;" glyph-name="empty" d="M490.639 704.031l-457.452-128.548 31.401-141.455-2.253 0.481v-3.779l-45.338-141.681 402.376-96.333 77.45 145.454 1.884 3.779-411.1 87.199 434.191 129.428zM62.336 258.381v-205.455l436.372-115.231v359.347l-66.514-126.766zM531.937 340.26l1.889-3.779 77.445-145.459 402.381 96.338-45.348 141.681v3.779l-1.367-0.287 33.623 151.404-447.601 120.095-31.16-145.454 442.87-126.525zM531.937 295.352v-359.352l436.367 115.236v205.455l-369.848-88.1z" />
+<glyph unicode="&#xe9ca;" glyph-name="noticeFilter" d="M544.427 556.817l179.849-222.788v-295.424l119.74-102.605v397.414l179.985 223.403h-479.573zM809.882 345.054v-333.346l-51.473 39.458v295.492l-138.923 176.503h333.858l-143.462-178.108zM393.865 534.528c-35.601-8.499-61.269-42.598-62.362-44.032l-3.14-4.267-0.205-5.291c-0.137-4.164-3.686-103.185 9.899-155.136 9.83-37.717 35.635-40.482 51.029-42.052 12.834-1.399 14.336-1.843 16.691-10.138 8.431-30.071-19.422-50.381-31.676-57.617-37.717-21.914-106.701 12.937-116.873 26.317-3.618 4.676-7.134 8.943-10.513 13.073-18.091 21.982-30.071 36.42-32.939 81.203-2.628 40.994 0 165.751 0.034 167.049l0.375 17.442h-118.374c-13.141 0-30.413 23.279-39.014 40.585-0.853 13.483-3.823 68.164 0.205 120.286 3.789 50.62 44.237 61.679 68.028 63.795 47.002 4.198 98.202 3.243 147.763 2.321 63.556-1.126 123.563-2.287 174.046 6.861 59.187 10.786 114.449 54.511 163.226 93.082 27.785 21.948 54.033 42.735 76.015 53.146 13.756 6.554 29.286 4.949 39.287 2.765v-234.598l19.831 3.277 3.721 1.502c15.735 0 29.047-20.651 29.047-45.056 0-7.817-1.468-15.462-4.403-22.767l31.744-12.629c4.506 11.366 6.793 23.279 6.793 35.43 0 39.868-22.357 72.021-52.599 78.131v220.604l-10.513 4.403c-1.604 0.717-41.267 16.964-77.551-0.307-25.463-12.083-53.248-33.997-82.534-57.207-45.67-36.079-97.382-77.005-148.173-86.255-47.138-8.499-105.54-7.441-167.322-6.315-50.449 0.956-102.571 1.877-151.415-2.458-57.89-5.12-94.925-40.721-99.021-95.198-4.813-62.259-0.205-125.952 0-128.649l1.502-5.837c2.97-6.451 30.174-63.181 71.339-63.181h83.524c-0.614-36.352-1.775-119.159 0.375-152.508 3.618-55.774 20.753-76.595 40.653-100.727 3.209-3.891 6.519-7.885 9.83-12.151 13.107-17.135 65.092-46.558 114.142-46.558 16.555 0 32.802 3.379 47.070 11.708 39.834 23.586 57.481 59.597 47.206 96.324-8.738 30.857-32.017 33.348-45.943 34.816-13.585 1.399-17.681 1.809-21.572 16.759-10.581 40.516-9.489 118.101-8.977 139.605 7.543 8.67 22.938 23.313 38.059 26.999 6.588 0.478 50.039-2.458 86.699-5.564l8.533 33.143-4.198 0.887c-87.996 7.134-94.481 5.666-97.348 4.983z" />
+<glyph unicode="&#xe9cb;" glyph-name="alarmTurn" d="M260.949 566.784c14.711 9.284 56.491 30.891 129.877 33.485 93.15 3.174 275.9-29.491 277.675-29.798l52.156-9.353-36.864 38.059c-5.905 6.076-145.681 148.651-287.369 158.618-68.574 4.881-119.159-4.233-146.33-11.196l-5.803 149.094-233.745-271.189 250.402-235.042v177.323zM226.816 583.509v-115.2l-169.097 158.72 155.819 180.736 4.267-108.51 22.323 8.704c0.512 0.171 58.914 22.391 153.873 15.77 85.026-6.007 172.954-68.301 223.198-110.217-63.181 9.694-164.215 22.972-227.601 20.855-106.325-3.755-154.795-44.032-156.809-45.739l-5.973-5.12zM936.073 240.162l-27.477 27.136c-72.841 72.738-102.332 217.771-99.396 292.796 4.471 95.881-25.907 173.705-85.538 219.17-40.073 30.447-80.828 36.079-103.356 36.489l-2.253 20.105-5.7 4.437c-1.707 1.331-17.476 12.971-46.49 12.971-27.238 0-43.895-11.23-45.705-12.493l-6.144-4.335-2.628-20.719c-14.131-0.273-35.567-2.594-59.358-11.878l12.356-31.812c32.529 12.629 59.255 9.148 59.46 9.114l17.237-2.56 4.71 37.069c9.148 3.413 31.846 3.243 40.141 0.239l4.301-37.239 17.374 2.458c1.98 0.205 48.777 6.383 95.403-29.047 50.415-38.434 76.049-106.086 72.090-190.566-3.311-83.558 28.467-237.568 109.397-318.43l27.648-27.307c51.132-50.21 52.531-52.395 50.278-77.653-2.15-23.484-17.51-37.888-24.474-43.315h-275.831v-17.067c0-36.318-43.145-65.911-96.119-65.911s-96.085 29.559-96.085 65.911v17.067h-275.763c-6.929 5.461-22.391 20.070-24.576 43.315-2.253 25.259-0.853 27.443 49.971 77.517l27.75 27.511c68.13 68.062 100.489 187.631 107.52 269.346l-33.997 2.935c-6.519-75.981-36.045-186.539-97.655-248.149l-27.58-27.307c-51.541-50.756-63.795-62.839-60.006-104.96 4.471-47.514 42.769-70.895 44.407-71.851l4.028-2.423h253.645c10.581-47.070 64.102-82.978 128.341-82.978 64.273 0 117.794 35.908 128.375 82.978h253.679l4.028 2.389c1.638 0.956 40.073 24.405 44.373 71.953 3.721 42.121-8.602 54.238-60.382 105.097z" />
+<glyph unicode="&#xe9cc;" glyph-name="advice" d="M846.814 841.182c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.42-21.060-41.847-52.326h-56.695c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.42-21.060-41.847-52.326h-56.695c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.42-21.060-41.847-52.326h-56.695c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.42-21.060-41.847-52.326h-56.695c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.454-21.060-41.847-52.326h-56.661c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.454-21.060-41.847-52.326h-56.661c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.454-21.060-41.847-52.326h-56.695c2.526 10.513 5.939 17.169 6.997 18.193v34.133c-20.617 0-36.454-21.060-41.847-52.326h-114.005v-705.434h927.778v705.434h-138.172zM950.852 169.882h-859.511v637.167h78.302c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.799 1.707-8.738 13.073-10.615 31.607h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.799 1.707-8.772 13.073-10.615 31.607h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.833 1.673-8.806 13.039-10.684 31.607h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.833 1.673-8.806 13.039-10.684 31.607h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.833 1.673-8.772 13.005-10.65 31.573h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.833 1.673-8.772 13.005-10.65 31.573h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.833 1.673-8.772 13.005-10.65 31.573h57.139c2.731-38.4 20.036-65.399 43.383-65.399l1.638 33.792c-2.833 1.673-8.772 13.005-10.65 31.573h106.052v-637.030zM197.086 626.21h176.469v-34.133h-176.469v34.133zM195.584 505.071h684.919v-34.133h-684.919v34.133zM195.584 363.008h684.919v-34.133h-684.919v34.133z" />
+<glyph unicode="&#xe9cd;" glyph-name="clearAlarm" d="M857.463 445.713c0 28.228-22.46 51.2-50.074 51.2h-224.939v379.529c0 36.284-30.481 65.775-67.891 65.775-37.478 0-67.925-29.491-67.925-65.775v-379.529h-222.72c-27.648 0-50.108-22.972-50.108-51.2v-87.825l2.492-12.015 0.853-5.393 4.028-17.545c4.608-48.23 6.793-213.299-31.232-292.25l-4.096-9.045 5.052-7.987c6.076-9.523 17.033-10.001 35.874-10.001 114.483 0 632.866 48.435 654.848 50.483l15.565 1.468v276.378h0.239v113.732zM480.768 876.442c0 17.442 15.155 31.642 33.792 31.642s33.758-14.199 33.758-31.642v-379.529h-67.55v379.529zM207.94 445.713c0 9.421 7.168 17.067 15.974 17.067h583.475c8.806 0 15.94-7.646 15.94-17.067v-79.565h-615.39v79.565zM822.886 86.699c-88.337-8.158-525.21-48.094-632.9-48.913 31.437 87.927 30.071 228.727 25.19 285.15h607.71v-236.237z" />
+<glyph unicode="&#xe9ce;" glyph-name="alarmBox" d="M914.193 423.697h-814.182c-33.826 0-61.338 27.511-61.338 61.338v186.948c0 33.826 27.511 61.338 61.338 61.338h814.182c33.826 0 61.338-27.511 61.338-61.338v-186.948c0-33.826-27.511-61.338-61.338-61.338zM100.011 699.187c-14.985 0-27.204-12.22-27.204-27.204v-186.948c0-14.985 12.186-27.204 27.204-27.204h814.182c14.985 0 27.204 12.22 27.204 27.204v186.948c0 14.985-12.186 27.204-27.204 27.204h-814.182zM914.193 56.183h-814.182c-33.826 0-61.338 27.511-61.338 61.338v186.948c0 33.826 27.511 61.338 61.338 61.338h814.182c33.826 0 61.338-27.511 61.338-61.338v-186.948c0-33.86-27.511-61.338-61.338-61.338zM100.011 331.639c-14.985 0-27.204-12.186-27.204-27.204v-186.948c0-14.985 12.186-27.204 27.204-27.204h814.182c14.985 0 27.204 12.186 27.204 27.204v186.948c0 14.985-12.186 27.204-27.204 27.204h-814.182zM668.433 588.356c0-25.977-21.059-47.036-47.036-47.036s-47.036 21.059-47.036 47.036c0 25.977 21.059 47.036 47.036 47.036s47.036-21.059 47.036-47.036zM848.282 588.356c0-25.977-21.059-47.036-47.036-47.036s-47.036 21.059-47.036 47.036c0 25.977 21.059 47.036 47.036 47.036s47.036-21.059 47.036-47.036zM247.569 203.742c0-25.977-21.059-47.036-47.036-47.036s-47.036 21.059-47.036 47.036c0 25.977 21.059 47.036 47.036 47.036s47.036-21.059 47.036-47.036zM452.369 203.742c0-25.977-21.059-47.036-47.036-47.036s-47.036 21.059-47.036 47.036c0 25.977 21.059 47.036 47.036 47.036s47.036-21.059 47.036-47.036zM670.003 203.742c0-25.996-21.074-47.070-47.070-47.070s-47.070 21.074-47.070 47.070c0 25.996 21.074 47.070 47.070 47.070s47.070-21.074 47.070-47.070z" />
+<glyph unicode="&#xe9cf;" glyph-name="afreshDef" d="M487.083 60.382l-26.658 308.838 307.507-177.527-280.849-131.311zM500.053 306.927l16.828-194.97 177.254 82.91-194.082 112.060zM770.15 226.987l-280.337 161.792 260.233 450.697c21.163 36.693 69.666 49.835 106.496 28.57l145.306-83.9c37.786-21.845 50.347-68.608 28.57-106.462l-15.394-26.522 0.034-0.034-244.907-424.141zM536.474 401.271l221.218-127.659 210.773 365.056-221.218 127.727-210.773-365.124zM780.834 824.422l221.116-127.693c10.923 21.163 3.823 45.739-17.135 57.856l-145.306 83.9c-20.173 11.708-46.251 5.257-58.675-14.063zM0 596.617h331.332v-34.133h-331.332v34.133zM0 419.328h331.332v-34.133h-331.332v34.133zM0 242.039h331.332v-34.133h-331.332v34.133zM0 64.751h720.657v-34.133h-720.657v34.133zM777.683 693.932l29.282-17.61-172.845-287.404-29.282 17.61 172.845 287.404zM865.434 636.727l29.282-17.61-172.845-287.404-29.282 17.61 172.845 287.404z" />
+<glyph unicode="&#xe9d0;" glyph-name="alarmFilter" d="M843.981-64l-119.706 102.605v295.424l-179.849 222.788h479.573l-180.019-223.437v-397.38zM758.409 51.2l51.439-39.458v333.346l143.497 178.108h-333.892l138.957-176.503v-295.492zM493.261 262.895c0-32.631-39.014-59.153-86.972-59.153-47.104 0-86.938 27.102-86.938 59.153v17.067h-254.396c-6.417 5.086-19.729 17.954-21.641 38.571-2.048 22.562-0.751 24.542 45.466 70.076l25.6 25.327c75.127 75.059 104.175 216.951 100.796 293.751-3.413 77.278 20.002 139.059 66.014 173.943 40.516 30.891 84.48 26.658 86.255 26.419l17.271-2.56 4.369 34.679c8.090 2.901 26.931 2.731 34.304 0.239l4.062-34.782 17.34 2.423c2.15 0.307 45.807 4.608 86.665-26.419 45.978-35.089 69.359-96.836 65.741-174.012-0.717-17.203-1.809-28.262-0.683-43.418h34.406c-1.297 14.848-0.273 25.6 0.375 41.95 4.13 88.576-23.962 160.563-79.155 202.65-36.454 27.716-73.591 33.246-94.583 33.792l-2.048 17.886-5.666 4.403c-1.673 1.229-16.521 12.186-43.657 12.186-25.429 0-41.062-10.513-42.769-11.708l-6.144-4.335-2.321-18.466c-21.026-0.546-58.163-6.076-94.481-33.758-55.125-41.847-83.354-113.801-79.428-202.615 3.004-68.506-23.757-201.114-90.829-268.117l-25.395-25.156c-47.718-46.967-59.051-58.129-55.501-97.485 4.164-44.373 39.936-66.219 41.472-67.14l4.028-2.423h232.414c10.445-43.349 59.836-76.22 119.023-76.22 59.221 0 108.646 32.905 119.091 76.22h107.554v34.133h-139.639v-17.101z" />
+<glyph unicode="&#xe9d1;" glyph-name="manAnalysis" d="M608.037 573.147c7.314-9.143 15.141-17.627 23.698-25.381l-16.823-35.986c-9.216-19.602 0.293-43.739 21.065-53.614l25.966-12.507c20.846-10.021 45.202-2.048 54.272 17.554l16.75 35.986c10.386-1.609 20.699-3.145 31.598-3.145 10.679 0 21.211 1.536 31.598 3.145l16.75-35.986c9.143-19.675 33.426-27.575 54.272-17.627l25.893 12.507c20.919 9.874 30.354 34.011 21.211 53.614l-16.75 36.133c8.558 7.68 16.457 16.238 23.698 25.381l36.279-15.287c19.822-8.411 43.154 2.414 51.858 23.991l10.971 26.917c8.997 21.65 0 45.861-19.822 54.199l-36.571 15.287c0.878 7.387 2.194 14.629 2.194 22.309 0 7.607-1.39 14.775-2.194 22.162l36.718 15.36c19.822 8.411 28.818 32.622 19.822 54.199l-10.898 26.99c-8.704 21.577-32.11 32.329-51.858 23.991l-36.425-15.287c-7.241 9.143-14.994 17.627-23.698 25.307l16.75 36.279c9.143 19.602-0.293 43.666-21.138 53.614l-26.039 12.434c-20.699 9.947-44.983 2.048-54.126-17.554l-16.75-36.059c-10.386 1.682-20.699 3.218-31.598 3.218s-21.211-1.536-31.598-3.218l-16.75 36.059c-9.143 19.602-33.499 27.502-54.199 17.554l-25.966-12.434c-20.919-10.021-30.427-34.011-21.211-53.614l16.75-36.206c-8.558-7.753-16.53-16.165-23.698-25.381l-36.425 15.36c-19.822 8.411-43.081-2.341-51.858-23.991l-11.045-26.99c-8.777-21.577 0.146-45.861 19.968-54.199l36.571-15.287c-0.878-7.461-2.267-14.629-2.267-22.235 0-7.68 1.536-14.921 2.267-22.382l-36.571-15.287c-19.749-8.411-28.745-32.549-19.968-54.199l11.045-26.917c8.777-21.504 32.037-32.329 51.785-23.991l36.498 15.214zM764.635 827.173c68.608 0 124.489-56.613 124.489-126.537 0-69.778-55.735-126.464-124.489-126.464s-124.562 56.686-124.562 126.464c0 69.925 55.808 126.537 124.562 126.537zM2.926-74.021h463.141v386.56h-463.141v-386.56zM392.923-0.878h-121.856v240.274h121.856v-240.274zM76.069 239.397h121.856v-240.274h-121.856v240.274zM317.147 595.456l-133.559-8.119c14.19 31.378 35.84 58.953 65.463 79.872 106.13 74.679 191.269 42.789 191.269 42.789-76.946 54.491-160.11 59.099-227.182 12.507-49.957-34.523-86.235-81.774-102.839-136.997l-110.299-4.389 160.11-149.358 157.038 163.694zM915.822 335.214l-198.729-109.275 129.755-32.183c-22.894-25.673-51.858-45.422-86.382-56.466-123.611-39.57-195.291 16.53-195.291 16.53 57.125-75.045 135.168-104.375 213.138-80.018 58.002 17.92 106.715 52.297 139.045 99.913l106.642-28.965-108.178 190.464z" />
+<glyph unicode="&#xe9d2;" glyph-name="drill" d="M296.96 663.113c0-82.003-66.477-148.48-148.48-148.48s-148.48 66.477-148.48 148.48c0 82.003 66.477 148.48 148.48 148.48s148.48-66.477 148.48-148.48zM551.936 152.21c0-82.003-66.477-148.48-148.48-148.48s-148.48 66.477-148.48 148.48c0 82.003 66.477 148.48 148.48 148.48s148.48-66.477 148.48-148.48zM930.158 648.192c0-91.496-74.172-165.669-165.669-165.669s-165.669 74.172-165.669 165.669c0 91.496 74.172 165.669 165.669 165.669s165.669-74.172 165.669-165.669zM1024 175.982c0-73.803-59.829-133.632-133.632-133.632s-133.632 59.829-133.632 133.632c0 73.803 59.829 133.632 133.632 133.632s133.632-59.829 133.632-133.632zM732.286 597.973l55.324 19.275 166.956-479.199-55.324-19.275-166.956 479.199zM812.421 734.786l46.39-35.785-460.695-597.214-46.39 35.785 460.695 597.214zM112.914 659.524l52.061 26.868 293.504-568.704-52.061-26.868-293.504 568.704z" />
+<glyph unicode="&#xe9d3;" glyph-name="gear" d="M977.774 373.687l-72.192 30.281c1.609 14.629 4.462 28.965 4.462 44.032s-2.779 29.257-4.462 43.886l72.338 30.427c39.058 16.457 56.759 64.293 39.278 106.862l-21.723 53.248c-17.335 42.715-63.195 63.854-102.254 47.397l-72.046-30.354c-14.263 18.066-29.696 34.743-46.738 50.030l33.134 71.534c17.993 38.766-0.658 86.235-41.765 105.911l-51.419 24.503c-41.106 19.675-89.015 4.096-107.081-34.67l-33.061-71.168c-20.407 3.291-40.96 6.363-62.318 6.363-21.285 0-41.838-3.072-62.245-6.363l-33.061 71.168c-18.066 38.766-66.048 54.345-107.081 34.67l-51.419-24.576c-41.106-19.675-59.831-67.145-41.765-105.838l33.134-71.461c-17.042-15.287-32.475-31.963-46.738-50.030l-71.973 30.281c-39.058 16.457-84.919-4.681-102.254-47.397l-21.797-53.248c-17.408-42.569 0.219-90.478 39.351-106.862l72.192-30.354c-1.536-14.702-4.315-28.891-4.315-43.959 0-15.141 2.779-29.403 4.389-44.105l-72.192-30.281c-39.131-16.603-56.832-64.219-39.497-106.935l21.87-53.175c17.335-42.569 63.269-63.781 102.327-47.397l71.899 30.208c14.263-17.993 29.696-34.743 46.665-50.030l-33.134-71.314c-18.066-38.693 0.658-86.309 41.765-105.838l51.419-24.722c41.106-19.675 89.088-4.023 107.081 34.816l32.987 71.095c20.407-3.291 40.96-6.363 62.245-6.363 21.358 0 41.911 3.072 62.391 6.363l32.987-71.095c17.993-38.766 65.975-54.418 107.081-34.816l51.419 24.722c41.179 19.602 59.758 67.145 41.765 105.838l-33.134 71.461c16.969 15.287 32.402 31.963 46.738 49.957l71.899-30.281c39.058-16.384 84.992 4.827 102.327 47.47l21.797 53.175c17.627 42.715-0.219 90.405-39.278 106.935zM512 198.29c-135.899 0-246.053 111.909-246.053 249.637 0 138.094 110.153 249.71 246.053 249.71 135.753 0 245.906-111.616 245.906-249.71 0-137.728-110.153-249.637-245.906-249.637z" />
+<glyph unicode="&#xe9d4;" glyph-name="process" d="M512 960c-282.317 0-512-229.683-512-512 0-282.33 229.683-512 512-512 282.33 0 512 229.67 512 512 0 282.317-229.67 512-512 512zM512-51.379c-275.341 0-499.354 224.026-499.354 499.379 0 275.341 224.013 499.354 499.354 499.354 275.354 0 499.379-224.013 499.379-499.354 0-275.354-224.026-499.379-499.379-499.379zM873.011 413.376c-15.206 0-29.312-4.71-40.973-12.723l-144.064 175.002c10.803 12.659 17.344 29.043 17.344 46.976 0 40-32.422 72.435-72.422 72.435s-72.448-32.435-72.448-72.435c0-22.144 9.971-41.946 25.638-55.219l-147.52-214.63c-12.48 10.202-28.416 16.32-45.786 16.32-19.917 0-37.952-8.051-51.059-21.069l-126.118 104.038c6.003 10.56 9.485 22.733 9.485 35.75 0 40-32.435 72.435-72.435 72.435s-72.435-32.435-72.435-72.435c0-40.013 32.435-72.435 72.435-72.435 22.374 0 42.368 10.15 55.654 26.099l125.184-103.27c-8.269-11.763-13.158-26.074-13.158-41.549 0-40.013 32.435-72.435 72.435-72.435s72.435 32.422 72.435 72.435c0 17.933-6.566 34.342-17.37 46.989l148.723 216.384c10.688-6.221 23.078-9.843 36.339-9.843 17.421 0 33.421 6.157 45.914 16.422l143.347-174.131c-13.312-13.133-21.594-31.373-21.594-51.558 0-40.013 32.435-72.435 72.435-72.435s72.422 32.422 72.422 72.435c0.013 40.013-32.41 72.448-72.41 72.448z" />
+<glyph unicode="&#xe9d5;" glyph-name="unacknownledge" d="M950.857 9.143h-877.714v877.714h482.011v73.143h-555.154v-1024h1024v458.679h-73.143zM526.19 682.715c-98.231-91.721-224.475-317.001-224.475-317.001s193.17 118.272 280.576 162.816c77.824 39.643 192.658 28.818 218.478 26.697l-0.658-184.466 223.89 308.297-224.402 280.942 0.585-183.077c-30.647-1.902-187.831-13.897-273.993-94.208z" />
+<glyph unicode="&#xe9d6;" glyph-name="acknownledge" d="M950.857 9.143h-877.714v877.714h482.011v73.143h-555.154v-1024h1024v458.679h-73.143zM240.933 477.111l335.433-327.826 447.634 640-119.881 83.822-348.818-498.688-212.187 207.36z" />
+<glyph unicode="&#xe9d7;" glyph-name="Operation" d="M512.064 960c-282.304 0-512.064-229.696-512.064-512 0-282.368 229.76-512 512.064-512s511.936 229.632 511.936 512-229.632 512-511.936 512zM512.064 0c-246.976 0-448.064 201.024-448.064 448 0 247.040 201.088 448 448.064 448 247.040 0 447.936-201.024 447.936-448 0-246.912-200.896-448-447.936-448zM615.872 532.928l-73.408 41.792 80.64 142.016c-72.576 19.648-152.192-10.624-191.168-79.232-36.224-63.744-26.048-140.608 18.944-193.28l-141.632-249.216c-15.616-27.52-6.016-62.528 21.504-78.144s62.528-6.016 78.144 21.504l141.568 249.28c68.352-11.776 139.712 18.88 175.872 82.56 38.976 68.544 24.384 152.384-29.76 204.864l-80.704-142.144z" />
+<glyph unicode="&#xe9d8;" glyph-name="cloud" d="M512 960c-282.317 0-512-229.683-512-512 0-282.33 229.683-512 512-512 282.33 0 512 229.67 512 512 0 282.317-229.67 512-512 512zM512-51.366c-275.341 0-499.354 224.026-499.354 499.366s224.013 499.354 499.354 499.354 499.366-224.013 499.366-499.354-224.026-499.366-499.366-499.366zM910.118 397.645c0 77.478-60.083 140.314-134.208 140.314-4.851 0-9.626-0.307-14.349-0.819-18.867 28.506-47.552 49.28-80.96 57.101-31.194 75.405-102.912 128.205-186.496 128.205-85.978 0-159.334-55.923-188.992-134.81-8.32 1.357-16.794 2.291-25.485 2.291-89.907 0-162.79-76.211-162.79-170.163 0-38.464 12.339-73.805 32.909-102.298-5.99-9.050-9.523-19.878-9.523-31.526 0-31.578 25.587-57.165 57.165-57.165h631.386c31.59 0 57.165 25.587 57.165 57.165 0 8.576-2.022 16.614-5.414 23.923 18.458 24.038 29.594 54.541 29.594 87.782z" />
+<glyph unicode="&#xe9d9;" glyph-name="computer" d="M512 960c-282.317 0-512-229.683-512-512 0-282.33 229.683-512 512-512 282.33 0 512 229.67 512 512 0 282.317-229.67 512-512 512zM512-51.366c-275.341 0-499.354 224.013-499.354 499.366 0 275.341 224.013 499.354 499.354 499.354 275.354 0 499.366-224.013 499.366-499.354 0-275.354-224.013-499.366-499.366-499.366zM559.629 556.058h-364.096c-12.57 0-22.758-9.37-22.758-20.928v-219.827c0-11.546 10.189-20.928 22.758-20.928h364.096c12.57 0 22.746 9.37 22.746 20.928v219.827c0 11.558-10.176 20.928-22.746 20.928zM552.32 338.957c0-9.062-8.704-16.41-19.405-16.41h-310.682c-10.714 0-19.418 7.347-19.418 16.41v172.506c0 9.062 8.704 16.422 19.418 16.422h310.682c10.701 0 19.405-7.36 19.405-16.422v-172.506zM377.587 284.416c-35.341 0-64-28.646-64-64h128c0 35.341-28.659 64-64 64zM831.603 672h-182.4c-7.078 0-12.8-5.734-12.8-12.8v-80h208v80c0 7.066-5.734 12.8-12.8 12.8zM636.403 566.4h208v-67.2h-208v67.2zM636.403 233.6c0-7.078 5.722-12.8 12.8-12.8h182.4c7.078 0 12.8 5.722 12.8 12.8v252.8h-208v-252.8zM740.403 329.6c10.598 0 19.2-8.602 19.2-19.2s-8.602-19.2-19.2-19.2-19.2 8.602-19.2 19.2 8.602 19.2 19.2 19.2z" />
+<glyph unicode="&#xe9da;" glyph-name="alarm" d="M512 896c-247.424 0-448-200.576-448-448 0-247.36 200.576-448 448-448 247.488 0 448 200.64 448 448 0 247.424-200.512 448-448 448zM444.032 51.968l41.6 365.696-253.632 6.336 300.032 432-33.344-321.472 222.4-20.864-277.056-461.696z" />
+<glyph unicode="&#xe9db;" glyph-name="import" d="M225.984 381.312l290.688-293.312 297.344 293.312-188.992 0.064c-1.728 31.616 9.28 106.688-41.024 253.632-53.312 155.648-242.688 310.336-242.688 310.336s66.688-154.688 90.688-322.112c15.552-108.48 5.312-205.312-17.472-242.88l-188.544 0.96zM771.84 897.984v-64h178.176v-819.968h-876.032v819.968h138.56v64h-202.56v-947.968h1004.032v947.968z" />
+<glyph unicode="&#xe9dc;" glyph-name="export" d="M432 410.048c-24-167.36-90.688-322.048-90.688-322.048s189.312 154.688 242.688 310.336c50.304 146.88 39.296 222.016 41.024 253.632h188.992l-297.344 293.376-290.688-293.376 188.48 0.96c22.848-37.568 33.088-134.4 17.536-242.88zM771.84 897.984v-64h178.176v-819.968h-876.032v819.968h138.56v64h-202.56v-947.968h1004.032v947.968z" />
+<glyph unicode="&#xe9dd;" glyph-name="Admin" d="M512 960.064c-282.304 0-512-229.696-512-512s229.696-512 512-512 512 229.696 512 512-229.696 512-512 512zM512 0.064c-247.040 0-448 201.024-448 448 0 247.040 200.96 448 448 448 246.976 0 448-200.96 448-448 0-246.976-201.024-448-448-448zM786.816 508.352c0-61.312-56.96-111.040-127.040-111.040-70.208 0-127.168 49.728-127.168 111.040 0 6.656 0.96 12.992 2.24 19.328h-43.584c1.28-6.4 2.24-12.736 2.24-19.328 0-61.312-56.96-111.040-127.040-111.040-70.208 0-127.104 49.728-127.104 111.040 0 6.656 0.96 12.992 2.24 19.328h-42.56l67.84-310.656c0 0 101.952 29.76 248.384 29.76 130.368 0 248.64-29.76 248.64-29.76l67.648 310.656h-47.040c1.216-6.336 2.304-12.736 2.304-19.328zM581.76 595.072c0-37.22-30.172-67.392-67.392-67.392s-67.392 30.172-67.392 67.392c0 37.22 30.172 67.392 67.392 67.392s67.392-30.172 67.392-67.392zM273.92 584.128c0-31.175-25.273-56.448-56.448-56.448s-56.448 25.273-56.448 56.448c0 31.175 25.273 56.448 56.448 56.448s56.448-25.273 56.448-56.448zM863.040 584.128c0-31.175-25.273-56.448-56.448-56.448s-56.448 25.273-56.448 56.448c0 31.175 25.273 56.448 56.448 56.448s56.448-25.273 56.448-56.448z" />
+<glyph unicode="&#xe9de;" glyph-name="allSelected" d="M512 960c-282.77 0-512-229.229-512-512s229.23-512 512-512c282.77 0 512 229.229 512 512s-229.23 512-512 512zM770 658l94-92-378-368-320 202 136 102 146-142 322 298z" />
+<glyph unicode="&#xe9df;" glyph-name="angleRight" d="M311.382 746.107l512-314.202-512-325.798z" />
+<glyph unicode="&#xe9e0;" glyph-name="arrowLeft" d="M480 960l-480-512 480-512v342.551h488c30.527 0 56 28.108 56 61.793v218.354c0 33.685-25.473 61.793-56 61.793h-488z" />
+<glyph unicode="&#xe9e1;" glyph-name="arrowLeftAll" d="M297.119 960l-297.119-317.333 79.585-85.333 376.705 402.667h-159.171zM567.71 954.667l-474.86-509.333 474.86-509.333v341.333h400.58c30.278 0 55.71 27.75 55.71 61.333v216c0 33.526-25.432 61.333-55.71 61.333h-400.58v338.667zM652.601 813.333v-109.333h363.44v48c0 33.526-25.432 61.333-55.71 61.333h-307.731z" />
+<glyph unicode="&#xe9e2;" glyph-name="arrowRight" d="M544 960l480-512-480-512v342.551h-488c-30.527 0-56 28.108-56 61.793v218.354c0 33.685 25.473 61.793 56 61.793h488z" />
+<glyph unicode="&#xe9e3;" glyph-name="arrowRightAll" d="M726.881 960l297.119-317.333-79.585-85.333-376.705 402.667h159.171zM456.29 954.667l474.86-509.333-474.86-509.333v341.333h-400.58c-30.278 0-55.71 27.75-55.71 61.333v216c0 33.526 25.432 61.333 55.71 61.333h400.58v338.667zM371.399 813.333v-109.333h-363.44v48c0 33.526 25.432 61.333 55.71 61.333h307.731z" />
+<glyph unicode="&#xe9e4;" glyph-name="autoFind" d="M508 960c-31.119 0-58-24.881-58-56v-46c-69.831-10.816-133.646-38.889-188-78l-42 40c-11.002 11.002-25.641 18-40 18s-26.998-6.998-38-18l-18-16c-22.005-22.005-22.005-57.995 0-80l42-40c-34.941-48.538-61.038-103.432-72-164h-36c-31.119 0-58-24.881-58-56v-22c0-31.119 26.881-58 58-58h36c12.292-76.335 44.912-147.337 94-204l-34-36c-22.005-22.005-22.005-55.995 0-78l16-18c22.005-22.005 57.995-22.005 80 0l44 46c47.099-28.042 99.181-47.199 156-56v-46c0-31.119 26.881-56 58-56h22c31.119 0 56 24.881 56 56v46c27.753 4.228 54.286 11.152 80 20l-104 106c-14.44-2.229-28.936-4-44-4-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288 0-47.853-13.349-92.29-34-132l104-98c33.635 49.218 58.247 105.432 68 166h22c31.119 0 56 26.881 56 58v22c0 31.119-24.881 56-56 56h-22c-10.615 58.652-34.805 112.539-68 160l36 36c22.005 22.005 22.005 57.995 0 80l-16 16c-11.002 11.002-25.641 16-40 16s-28.998-4.998-40-16l-36-36c-55.735 41.399-121.471 70.951-194 82v46c0 31.119-24.881 56-56 56h-22zM520 668c-126.678 0-230-103.322-230-230s103.322-228 230-228c29.501 0 58.095 5.855 84 16l210-210c22.005-22.005 55.995-22.005 78 0l10 10c22.005 22.005 22.005 55.995 0 78l-198 198c28.25 38.126 46 84.904 46 136 0 126.678-103.322 230-230 230zM520 560c67.275 0 122-54.725 122-122s-54.725-122-122-122c-67.275 0-122 54.725-122 122s54.725 122 122 122z" />
+<glyph unicode="&#xe9e5;" glyph-name="back" d="M674.24-50.112l-481.28 481.344 485.696 485.824 45.312-45.248-440.512-440.576 436.032-436.096z" />
+<glyph unicode="&#xe9e6;" glyph-name="ball" d="M366 960v-364h-180v-300h184v52h52v-52h40v300h92v-300h40v52h54v-52h184v300h-174v364h-292zM0 302v-366h366v152h-132v92h-90v122h-144zM880 302v-122h-90v-92h-132v-152h366v366h-144zM432 88v-152h160v152h-160z" />
+<glyph unicode="&#xe9e7;" glyph-name="bell" d="M448.031 938.016v-110.003c-111.249-27.552-192-127.68-192-248v-93.997c-14.104-170.784-120.996-270.701-224-378.003 4.723 0 9.21 1.984 14 1.984h282c-1.498-8.525-1.997-17.030-1.997-25.997 0-82.726 65.275-148 148-148h34c82.725 0 150 65.274 150 148 0 8.986-2.49 17.459-4 25.997h320c4.787 0 9.277-1.728 14-1.984-103.004 107.302-209.896 207.219-224 378.003v93.997c0 120.32-80.751 220.448-192 248v110.003h-124zM396.031 110.016h32c-11.965-12.403-20-28.371-20-46.003 0-40.346 37.391-73.997 84-73.997-10.154-4.16-20.329-8-32-8-46.609 0-84 34.176-84 77.997 0 19.418 7.773 36.070 20 50.003z" />
+<glyph unicode="&#xe9e8;" glyph-name="blackList" d="M509.091 958.293c-134.448 0-242.544-108.704-242.544-244s108.096-246 242.544-246c134.448 0 242.544 110.704 242.544 246s-108.096 244-242.544 244zM769.528 512.293c-140.541 0-254.472-114.618-254.472-256s113.931-256 254.472-256c140.541 0 254.472 114.618 254.472 256s-113.931 256-254.472 256zM306.308 456.293c-346.855-195.91-302.524-531.61-306.162-520h685.883l-1.988 6c-135.113 23.090-238.568 141.499-238.568 284 0 50.008 13.499 97.017 35.785 138-72.082 7.589-136.306 42.513-174.95 92zM610.482 326.293h318.091v-128h-318.091v128z" />
+<glyph unicode="&#xe9e9;" glyph-name="breakLink" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM530 832l22-124-72-6-22 122 72 8zM276 790c70.131 0 128-57.239 128-130 0-15.422-1.298-30.22-6-44l86-90-66-70-86 86c-16.468-8.112-36.565-12-56-12-70.131 0-122 57.267-122 130 0 72.761 51.869 130 122 130zM760 750l54-82-162-116-54 86 162 112zM888 518l8-74-118-22-8 74 118 22zM246 478l8-74-118-20-8 72 118 22zM598 426l62-64c16.654 8.376 32.276 16 52 16 70.131 0 130-63.253 130-136 0-72.752-59.869-130-130-130s-124 57.248-124 130c0 15.163 5.459 32.45 10 46l-68 66 68 72zM372 348l54-90-166-108-50 82 162 116zM540 190l18-118-72-8-18 124 72 2z" />
+<glyph unicode="&#xe9ea;" glyph-name="cancle" d="M512 960c-282.77 0-512-229.229-512-512s229.23-512 512-512c282.77 0 512 229.229 512 512s-229.23 512-512 512zM128 645.997l180-104c61.902 49.734 140.551 80 226 80 198.617 0 360-163.379 360-361.997 0-2.944 0.070-5.056 0-8l-90-1.984c0.134 3.456 0 6.528 0 10.003 0 148.96-121.038 272-270 272-51.469 0-98.972-14.771-140-40l184-106.003-356-93.997-94 353.978z" />
+<glyph unicode="&#xe9eb;" glyph-name="circle" d="M1024 447.998c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 282.77 229.23 512 512 512s512-229.23 512-512z" />
+<glyph unicode="&#xe9ec;" glyph-name="closeTree" d="M0 954.667v-341.333h122.667v-445.333h362.667c17.783-132.745 129.128-234.667 266.667-234.667 149.839 0 272 122.278 272 272s-122.161 269.333-272 269.333c-133.011 0-240.954-95.465-264-221.333h-280v360h133.333v341.333h-341.333zM712 373.333h85.333v-128h128v-85.333h-128v-128h-85.333v128h-128v85.333h128v128z" />
+<glyph unicode="&#xe9ed;" glyph-name="configmap" d="M0 960v-1024h400l-6 238 158 260-146 188-278-392v602h768v-120l128-74v322h-1024zM796 670l-266-462 166-96 266 460-166 98zM1024 534l-8-16-290-534-58-48h356v598zM486 132l14-166 152 70-166 96z" />
+<glyph unicode="&#xe9ee;" glyph-name="delete" d="M135.461 834.487h789.211v-73.143h-789.211v73.143zM430.373 898.853v-107.666h199.387v107.666h-199.387zM286.281 496.64h99.035v-395.045h-99.035v395.045zM480.549 496.64h99.035v-395.045h-99.035v395.045zM674.816 496.64h99.035v-395.045h-99.035v395.045zM922.697-39.863h-785.335v714.606h785.335v-714.606zM210.505 33.28h639.049v568.32h-639.049v-568.32z" />
+<glyph unicode="&#xe9ef;" glyph-name="department" d="M211.587 928l-205.602-224h429.166l-223.564 224zM0 656v-720h1024v496h-596.833v224h-427.167zM77.845 553.997h95.813v-96h-95.813v96zM255.502 553.997h95.813v-96h-95.813v96zM77.845 345.997h95.813v-96h-95.813v96zM255.502 345.997h95.813v-96h-95.813v96zM680.67 345.997h95.813v-96h-95.813v96zM858.326 345.997h95.813v-96h-95.813v96zM501.020 339.981h63.875v-296h-63.875v296zM75.852 139.981h95.813v-96h-95.813v96zM253.502 139.981h95.813v-96h-95.813v96zM680.67 139.981h95.813v-96h-95.813v96zM858.326 139.981h95.813v-96h-95.813v96z" />
+<glyph unicode="&#xe9f0;" glyph-name="detail" d="M0 914.667v-170.667h1024v170.667h-1024zM0 658.667v-170.667h1024v170.667h-1024zM0 402.667v-170.667h1024v170.667h-1024zM0 146.667v-170.667h768v170.667h-768z" />
+<glyph unicode="&#xe9f1;" glyph-name="displaySwitch" d="M0 960v-1024h862.766v292h160l-192 192-190-192h158v-228h-366.766v896h366.503v-204h-158l190-192 192 192h-160v268h-560.503zM72 746h290v-64h-290zM72 486h290v-64h-290zM72 234h290v-64h-290z" />
+<glyph unicode="&#xe9f2;" glyph-name="file" d="M120 960v-1024h812l20 822-160 202h-672zM216 864h516l124-164-14-668h-626v832zM298 782v-140h146v140h-146zM524 726v-64h252v64h-252zM298 574v-64h478v64h-478zM298 398v-64h478v64h-478zM298 222v-64h478v64h-478z" />
+<glyph unicode="&#xe9f3;" glyph-name="filter" d="M0.006 960l0.497-77.36 415.5-392.907v-329.797l192-223.936v551.698l416.664 388.835-0.668 83.467h-1024zM254.006 858.211h514v-44.787l-256-242.258-256 246.33-1.997 40.716z" />
+<glyph unicode="&#xe9f4;" glyph-name="find" d="M278 964c-16.425 0-30-13.575-30-30v-132c0-16.425 13.575-30 30-30h132c16.425 0 30 13.575 30 30v132c0 16.425-13.575 30-30 30h-132zM598 962c-16.425 0-30-13.575-30-30v-132c0-16.425 13.575-30 30-30h132c16.425 0 30 13.575 30 30v132c0 16.425-13.575 30-30 30h-132zM440 710l-270-2-114-274v-368h208l30 30v272l126 2c12.464 1.292 21.634 18.792 20 40v300zM568 708v-300c-1.634-21.208 7.536-38.708 20-40l126-2v-272l30-30h208v368l-114 274-270 2zM56 0v-64h238v64h-238zM714-2v-64h238v64h-238z" />
+<glyph unicode="&#xe9f5;" glyph-name="folder" d="M96.8 823.424h200.277c43.173 0.136 53.665-12.675 68.962-42.158 0 0 38.028-112.952 79.827-152.074 13.079-12.242 22.734-21.78 49.133-21.78h432.201c53.627 0 96.8-43.571 96.8-97.694v-486.13c0-54.122-43.173-97.694-96.8-97.694h-830.399c-53.627 0-96.8 43.571-96.8 97.694v702.143c0 54.122 43.173 97.694 96.8 97.694z" />
+<glyph unicode="&#xe9f6;" glyph-name="forceOut" d="M707.2 7.744h-675.52v870.912h675.52v-64h-611.52v-742.912h611.52zM737.92 161.728l-45.248 45.248 235.84 235.776-236.544 236.608 45.248 45.248 281.792-281.856zM226.24 475.2h713.664v-64h-713.664v64z" />
+<glyph unicode="&#xe9f7;" glyph-name="fullScreen" d="M512 960l-224-256h448l-224 256zM256 672l-256-224 256-224v448zM768 672v-448l256 224-256 224zM288 192l224-256 224 256h-448z" />
+<glyph unicode="&#xe9f8;" glyph-name="Graphical" d="M823.104 449.088c0-89.472-37.376-169.6-96.576-226.688l132.096-132.096c92.096 91.072 149.44 218.112 149.44 358.784v0.064l-184.96-0.064zM795.392 574.784h195.136c-49.024 191.36-205.312 338.56-400.896 368.896v-191.936c92.736-23.616 167.808-89.984 205.76-176.96zM611.392 153.344c-30.464-10.688-62.656-17.344-96.768-17.344-170.304 0-308.352 140.096-308.352 313.152 0 154.752 110.848 282.56 256.256 307.776v190.272c-248.064-26.432-441.408-239.36-441.408-498.112 0-276.608 220.992-500.864 493.504-500.864 86.72 0 167.424 23.744 238.208 63.68l-141.44 141.44z" />
+<glyph unicode="&#xe9f9;" glyph-name="helpTip" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM508 806c46.383 1.856 85.454-3.072 114-14 28.545-10.93 51.941-26.114 74-44 22.058-17.888 38.725-39.581 48-64 9.273-24.42 13.365-47.981 12-74-1.804-25.729-7.361-51.469-18-76-10.64-24.532-25.936-48.956-46-72-20.065-23.044-44.056-45.493-72-68l-48-38v-96h-140v144c24.721 18.659 47.471 36.070 68 52s40.81 33.788 60 52c19.19 18.211 34.589 37.048 44 58s12.13 42.057 10 60c-3.115 23.536-12.211 39.974-28 52-15.789 12.025-34.516 20.198-56 22-21.485 1.8-39.222-3.978-54-14-13.986-9.106-22.307-19.262-24-30l-6-26-8-4-134-6c1.366 25.281 5.356 50.331 10 72 4.644 21.667 16.939 41.396 38 60 21.061 18.602 46.109 32.135 74 40 27.89 7.863 54.246 12.545 82 14zM428 160h148v-94h-148v94z" />
+<glyph unicode="&#xe9fa;" glyph-name="hide" d="M368 960v-596h-234l364-360h-498v-70h1024v70h-522l388 360h-234v596h-288z" />
+<glyph unicode="&#xe9fb;" glyph-name="history" d="M167.615 773.158v-487.328l34-73.35h572.385l38 75.226v33.856h26c104.401 0 188 78.618 188 176.794 0 98.182-83.599 176.8-188 176.8h-26v98.003zM812 613.088h14c66.898 0 122-51.821 122-114.733 0-62.906-55.102-112.845-122-112.845h-14zM0 116.557l108-180.557h834l82 180.557z" />
+<glyph unicode="&#xe9fc;" glyph-name="launchingTower" d="M212 954c-86.27-49.558-144-133.862-144-230 0-97.724 59.409-182.82 148-232l24 52c-65.834 40.067-108 105.085-108 180s42.166 141.933 108 182l-28 48zM848 954l-28-48c65.834-40.067 108-107.085 108-182s-42.166-139.933-108-180l24-52c88.591 49.18 148 134.276 148 232 0 96.138-57.73 180.442-144 230zM318 890c-57.742-35.475-98-97.182-98-166 0-69.953 40.705-130.796 100-166l16 38c-44.064 28.681-72 74.374-72 128s27.936 101.319 72 130l-18 36zM742 890l-18-36c44.064-28.681 72-76.374 72-130s-27.936-99.319-72-128l16-38c59.295 35.204 100 96.047 100 166 0 68.818-40.258 130.525-98 166zM406 820c-33.569-20.623-56-55.993-56-96 0-40.667 23.529-75.534 58-96l10 22c-25.617 16.673-42 42.824-42 74s16.383 59.327 42 76l-12 20zM654 820l-12-20c25.617-16.673 42-44.824 42-76s-16.383-57.327-42-74l10-22c34.471 20.466 58 55.333 58 96 0 40.007-22.431 75.377-56 96zM480 766l-28-830h156l-28 830h-100zM218.989 399.607h121.908v-463.389h-121.908v463.389zM88 304.217v-368h152v368h-152zM114 288.217h26v-346h-26v346zM-4.535 115.809h99.537v-179.809h-99.537v179.809zM592.5 156.846h82.665v-223.6h-82.665v223.6zM662.092 379.81h78.332v-446.564h-78.332v446.564zM738 254v-318h94v318h-94zM758 226h20v-262h-20v262zM808 144v-208h174v208h-174zM864 100h82v-146h-82v146zM967.595 45.899h68.362v-109.899h-68.362v109.899zM331.201 141.725v-208h143.859v208h-143.859zM377.501 97.725h67.796v-146h-67.796v146z" />
+<glyph unicode="&#xe9fd;" glyph-name="layout" d="M0 960v-160h64v-864h896v864h64v160h-1024zM192 702h640v-640h-640v640zM400 630l-172-174 172-174v114h112v124h-112v110zM624 444v-110h-112v-124h112v-114l172 174-172 174z" />
+<glyph unicode="&#xe9fe;" glyph-name="legendhide" d="M1024 960v-1024h-736.508v1024zM168.136 960v-1024h-168.136v1024zM635.932 630l-182-182 182-182v122h232v120h-232z" />
+<glyph unicode="&#xe9ff;" glyph-name="legendshow" d="M0 960v-1024h602v1024h-602zM704 960v-1024h320v1024h-320zM778 824h172v-86h-172v86zM336 630l182-182-182-182v122h-232v120h232v122zM778 584h172v-86h-172v86zM778 344h172v-86h-172v86zM778 106h172v-88h-172v88z" />
+<glyph unicode="&#xea00;" glyph-name="link" d="M174 960c-95.761 0-174-78.239-174-174s78.239-172 174-172c30.236 0 57.252 6.394 82 20l442-442c-13.606-24.748-20-51.764-20-82 0-95.761 76.239-174 172-174s174 78.239 174 174c0 95.761-78.239 172-174 172-30.57 0-59.061-6.113-84-20l-442 438c14.951 25.628 22 54.19 22 86 0 95.761-76.239 174-172 174zM174 874c47.881 0 86-40.119 86-88s-38.119-86-86-86c-47.881 0-88 38.119-88 86s40.119 88 88 88zM850 196c47.881 0 88-38.119 88-86s-40.119-88-88-88c-47.881 0-86 40.119-86 88s38.119 86 86 86z" />
+<glyph unicode="&#xea01;" glyph-name="lock" d="M510 952c-203.422 0-367.735-153.347-370-344h92c2.507 130.677 125.564 236 278 236s277.452-105.323 280-236h92c-2.292 190.653-168.578 344-372 344zM156 544c-56.19 0-102-43.81-102-100v-406c0-56.19 45.81-102 102-102h710c56.19 0 102 45.81 102 102v406c0 56.19-45.81 100-102 100h-710zM510 374c37.842 0 68-30.158 68-68 0-20.924-9.216-41.432-24-54v-170h-90v170c-14.784 12.568-24 33.076-24 54 0 37.842 32.158 68 70 68z" />
+<glyph unicode="&#xea02;" glyph-name="ltArrow" d="M839.68 165.056l-469.12 469.12 325.824 325.824h-696.384v-696.384l325.312 325.312 469.12-469.12z" />
+<glyph unicode="&#xea03;" glyph-name="Magnifier" d="M384 960c-211.661 0-384-172.339-384-384s172.339-382 384-382c72.935 0 139.963 20.633 198 56 3.407-7.108 8.094-14.094 14-20l270-272c27.919-27.919 74.081-27.919 102 0l34 36c27.919 27.919 27.919 72.081 0 100l-272 272c-5.848 5.848-10.97 10.602-18 14 34.492 57.525 54 124.046 54 196 0 211.661-170.339 384-382 384zM384 856c153.936 0 278-126.064 278-280s-124.064-278-278-278c-153.936 0-280 124.064-280 278s126.064 280 280 280z" />
+<glyph unicode="&#xea04;" glyph-name="Maintain" d="M512.064 960c-282.368 0-512.064-229.632-512.064-512 0-282.432 229.696-512 512.064-512 282.304 0 511.936 229.632 511.936 512s-229.632 512-511.936 512zM512.064 0c-247.040 0-448.064 201.024-448.064 448 0 247.040 201.024 448 448.064 448 246.976 0 447.936-200.96 447.936-448 0-246.976-200.96-448-447.936-448zM734.976 587.776l20.672 55.808-49.408 32.896-3.84 59.392-58.56 9.856-27.52 52.672-57.728-14.72-46.592 36.864-46.656-36.864-57.6 14.72-27.52-52.672-58.688-9.92-3.712-59.392-49.536-32.832 20.672-55.808-31.808-50.24 41.536-42.496-8.64-58.816 55.296-21.824 13.952-49.92-88.64-237.504 91.648 25.152 46.656-76.736 97.92 262.272 5.12 2.56 3.264-1.6 95.488-255.872 46.656 76.608 91.648-25.152-84.992 227.776 14.656 52.416 55.296 21.824-8.704 58.816 41.6 42.496-31.936 50.24zM626.176 421.12l-105.024-39.104c-3.072-0.256-6.016-1.024-9.152-1.024-19.968 0-38.784 4.032-56.768 9.728l-21.44 8.064c-63.552 29.568-107.904 93.568-107.904 168.32 0 102.848 83.328 186.176 186.112 186.176 102.848 0 186.112-83.328 186.112-186.176 0-59.52-28.416-111.936-71.936-145.984zM669.12 567.168c0-86.775-70.345-157.12-157.12-157.12s-157.12 70.345-157.12 157.12c0 86.775 70.345 157.12 157.12 157.12s157.12-70.345 157.12-157.12z" />
+<glyph unicode="&#xea05;" glyph-name="maximize" d="M177.898 640v-704h704v704zM273.457 360.237h512.883v-326.237h-512.883z" />
+<glyph unicode="&#xea06;" glyph-name="modify" d="M634.117 946.912c-39.104 22.577-87.176 9.696-109.753-29.408l-9.772-16.925 330.977-191.089 9.772 16.925c22.577 39.104 9.696 87.176-29.408 109.752l-191.816 110.745zM492.879 862.968l-300.749-520.912 330.977-191.089 300.749 520.912-330.976 191.089zM519.824 744.608l60.178-34.744-210.633-364.826-60.178 34.744 210.633 364.826zM647.702 670.778l60.178-34.744-210.633-364.826-60.178 34.743 210.633 364.826zM148.7 266.834l28.686-332.494 302.291 141.404-330.977 191.089z" />
+<glyph unicode="&#xea07;" glyph-name="Monitor" d="M508.608 950.4c-282.368 0-512.064-229.696-512.064-512 0-282.432 229.696-512 512.064-512 282.304 0 511.936 229.632 512 512 0 282.368-229.632 512-512 512zM508.608-9.6c-247.040 0-448.064 201.024-448.064 448s201.024 448 448.064 448 447.936-201.024 448-448c0-246.976-200.96-448-448-448zM610.048 250.496h-203.008v-33.856h-168.96v-64h540.928v64h-168.96zM206.080 293.376h604.928v429.312h-604.928v-429.312zM749.056 342.976h-68.032v28.032h68.032v-28.032zM270.080 658.688h476.928v-250.688h-476.928v250.688z" />
+<glyph unicode="&#xea08;" glyph-name="move" d="M497.019 950c-30.138 0-54-30.398-54-69.728v-354.615l-62-15.938h-6v241.058c0 39.33-23.862 71.72-54 71.72s-54-32.39-54-71.72v-316.763l-44-63.751-10-13.946-100 99.611c-27.919 27.811-70.929 28.958-96 3.984s-21.919-67.816 6-95.626l212-209.183c31.677-130.522 169.028-229.105 332-229.105 175.44 0 317.928 115.646 334 260.981 2.746 8.499 4 16.066 4 25.899v414.381c0 39.33-23.862 71.72-54 71.72s-56-32.39-56-71.72v-153.401l-34 9.961-32 17.93v318.755c0 39.33-25.862 71.72-56 71.72s-54-32.39-54-71.72v-288.872l-44 1.992-24 3.984v342.661c0 39.33-23.862 69.728-54 69.728z" />
+<glyph unicode="&#xea09;" glyph-name="new" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM488 786h48c31.119 0 56-24.881 56-56v-202h204c31.119 0 56-24.881 56-56v-48c0-31.119-24.881-56-56-56h-204v-204c0-31.119-24.881-56-56-56h-48c-31.119 0-56 24.881-56 56v204h-204c-31.119 0-56 24.881-56 56v48c0 31.119 24.881 56 56 56h204v202c0 31.119 24.881 56 56 56z" />
+<glyph unicode="&#xea0a;" glyph-name="newShortcut" d="M370 960v-100h132v-322h-132v-98h-170v-504h800v810l-194 214h-436zM150 904v-132h-132v-128h132v-132h128v132h132v128h-132v132h-128zM704 456l204-204-198-198-2 132h-244v156h242l-2 114zM352 344h40v-158h-40v158z" />
+<glyph unicode="&#xea0b;" glyph-name="openTree" d="M800 960v-82l-284-6h-32v-390h-342v88h120v262h-262v-262h78v-154h406v-384h316v-96h224v224h-224v-64h-252v320h252v-80h224v224h-224v-78h-252v326l252 6v-78h224v224h-224zM880 880h64v-64h-64v64zM880 480h64v-64h-64v64zM880 80h64v-64h-64v64z" />
+<glyph unicode="&#xea0c;" glyph-name="poNode" d="M448 960v-320h576v320h-576zM0 512v-576h1024v576h-1024z" />
+<glyph unicode="&#xea0d;" glyph-name="print" d="M272 960v-200h480v200h-480zM98 848c-54.122 0-98-43.878-98-98v-358c0-54.122 43.878-98 98-98h828c54.122 0 98 43.878 98 98v358c0 54.122-43.878 98-98 98h-110v-168h-608v168h-110zM284 236v-300h484v300h-484zM330 174h364v-52h-364v52zM332 66h264v-50h-264v50z" />
+<glyph unicode="&#xea0e;" glyph-name="product" d="M186.869 960v-1024h640v1024h-640zM304.869 825.997h404v-133.997h-404v133.997zM304.869 457.997h186v-64h-186v64zM304.869 228h186v-64h-186v64z" />
+<glyph unicode="&#xea0f;" glyph-name="rbArrow" d="M184.32 730.944l469.12-469.12-325.824-325.824h696.384v696.384l-325.312-325.312-469.12 469.12z" />
+<glyph unicode="&#xea10;" glyph-name="reduction" d="M169.25 640v-456h203.925v-248h500.075v456h-203.925v248zM239.752 460h362.35v-68h-228.928v-110h-133.422zM443.677 214h360.71v-178h-360.71z" />
+<glyph unicode="&#xea11;" glyph-name="refresh" d="M514 906c-101.166 0-194.73-36.006-268-98l-158 94 88-354 368 86-194 110c48.27 30.912 103.639 52 164 52 157.484 0 288.023-121.916 314-280l102 32c-38.978 204.361-210.106 358-416 358zM188 376l-100-32c38.978-204.361 208.106-358 414-358 101.166 0 194.73 36.006 268 98l160-94-88 354-368-84 194-112c-48.27-30.911-105.639-52-166-52-157.484 0-288.023 121.916-314 280z" />
+<glyph unicode="&#xea12;" glyph-name="rename" d="M56 960c-31.119 0-56-24.881-56-56v-618c0-31.119 24.881-56 56-56 0 0 226.78-4.516 260.648 0v176c0 34.183 27.817 62 62 62h87.352l-36 92h-164l-34-94h-88l160 418h88l166-416h52.899c34.183 0 62-27.817 62-62v-72h57.101v570c0 31.119-24.881 56-56 56zM348 788l-56-156h112zM414 404v-322.99h412v-143.343l202 209.343-202 224.847v-144.847h-266v176.99z" />
+<glyph unicode="&#xea13;" glyph-name="save" d="M0 960v-1024h1024v856l-154 168h-870zM158 810h414v-138h192v138h102v-240h-708v240zM158 458h708v-406h-708v406zM254 364v-76h516v76h-516zM254 198v-76h516v76h-516z" />
+<glyph unicode="&#xea14;" glyph-name="select" d="M0 960l486-1024 96 396 442 142-1024 486zM156 792l666-304-308-82-60-234-298 620z" />
+<glyph unicode="&#xea15;" glyph-name="selectAll" d="M68 960c-38.145 0-68-31.069-68-70v-52c0-38.931 29.855-70 68-70h888c38.145 0 68 31.069 68 70v52c0 38.931-29.855 70-68 70h-888zM68 692c-38.145 0-68-29.855-68-68v-620c0-38.145 29.855-68 68-68h888c38.145 0 68 29.855 68 68v620c0 38.145-29.855 68-68 68h-888zM810 572l124-10-460-528-320 264 144 124 154-222 358 372z" />
+<glyph unicode="&#xea16;" glyph-name="selectLeft" d="M354 958l-352-264 352-266v140h434v-278h-234v64h-204v-204h204v76h104v-188h-454v98h-204v-204h204v42h518v252h130v342h172v252h-670v138z" />
+<glyph unicode="&#xea17;" glyph-name="selectRight" d="M670 958l352-264-352-266v140h-434v-278h234v64h204v-204h-204v76h-104v-188h454v98h204v-204h-204v42h-518v252h-130v342h-172v252h670v138z" />
+<glyph unicode="&#xea18;" glyph-name="show" d="M0 960v-356h486l-352-348h234v-250h-368v-70h1024v70h-368v250h234l-374 348h508v356h-1024z" />
+<glyph unicode="&#xea19;" glyph-name="shrink" d="M512 722.318l-512-786.318h1024z" />
+<glyph unicode="&#xea1a;" glyph-name="start" d="M154 960c-85.352 0-154-68.648-154-154v-716c0-85.352 68.648-154 154-154h716c85.352 0 154 68.648 154 154v716c0 85.352-68.648 154-154 154h-716zM190 832h644c34.183 0 62-27.817 62-62v-644c0-34.183-27.817-62-62-62h-644c-34.183 0-62 27.817-62 62v644c0 34.183 27.817 62 62 62zM272 758v-620l518 310-518 310z" />
+<glyph unicode="&#xea1b;" glyph-name="stop" d="M154 960c-85.352 0-154-68.648-154-154v-716c0-85.352 68.648-154 154-154h716c85.352 0 154 68.648 154 154v716c0 85.352-68.648 154-154 154h-716zM190 832h644c34.183 0 62-27.817 62-62v-644c0-34.183-27.817-62-62-62h-644c-34.183 0-62 27.817-62 62v644c0 34.183 27.817 62 62 62zM296 664v-432h432v432h-432z" />
+<glyph unicode="&#xea1c;" glyph-name="stretch" d="M512-64l-512 786.318h1024z" />
+<glyph unicode="&#xea1d;" glyph-name="strikeOut" d="M194 960c-107.068 0-194-82.412-194-184v-656c0-101.588 86.932-184 194-184h636c107.068 0 194 82.412 194 184v656c0 101.588-86.932 184-194 184h-636zM256 794l254-254 254 254 92-90-256-254 258-258-90-90-258 258-258-258-90 90 258 258-254 254 90 90z" />
+<glyph unicode="&#xea1e;" glyph-name="Synchronous" d="M494.591 959.75c-104.514-3.264-208.762-40.365-296.56-108.41 54.963-14.432 104.846-45.722 142.015-91.731 26.183-32.416 43.293-69.434 52.211-108.41 7.471 4.416 15.182 6.931 22.973 10.419 92.228 41.331 202.903 21.402 273.587-58.374 2.3-2.624 4.099-5.696 6.266-8.339 38.539 10.528 75.134 28.589 106.511 56.294 44.602 39.379 72.015 90.355 83.538 145.939-104.684 110.842-248.067 167.085-390.54 162.611zM129.112 788.8c-154.656-173.299-171.74-430.515-43.857-623.366 14.934 42.534 37.92 81.523 73.096 112.576 40.821 36.064 90.261 55.533 142.015 62.547-39.251 78.547-32.851 174.438 18.796 246.010-8.527 40.979-24.855 80.813-52.211 114.669-35.942 44.499-84.853 73.018-137.838 87.565zM945.696 717.914c-12.714-52.192-39.333-100.41-81.45-137.6-37.012-32.678-81.354-51.789-127.396-60.461 26.015-79.027 6.736-167.418-52.211-231.411 19.428-31.75 44.529-59.674 77.273-81.312 53.569-35.405 115.945-48.032 177.518-41.696 109.728 165.357 113.583 382.061 6.266 552.48zM356.753 269.67c-49.599-7.29-96.216-27.635-135.749-62.541-37.037-32.698-60.956-73.747-75.184-118.835 189.751-193.376 500.447-204.333 705.897-22.938 7.2 6.336 14.128 12.109 20.885 18.771-56.711-3.136-113.526 11.149-162.899 43.776-41.445 27.398-71.715 65.645-91.892 108.41-84.866-42.72-188.114-30.099-261.056 33.357z" />
+<glyph unicode="&#xea1f;" glyph-name="toRight" d="M517.312 908.352c-261.504 0-474.24-212.736-474.24-474.24s212.736-474.24 474.24-474.24c261.44 0 474.176 212.736 474.176 474.24s-212.736 474.24-474.176 474.24zM517.312 23.872c-226.24 0-410.24 184.064-410.24 410.24 0 226.24 184 410.24 410.24 410.24 226.176 0 410.176-184 410.176-410.24 0-226.176-184-410.24-410.176-410.24zM498.624 763.712l-45.312-45.248 245.632-245.632h-445.184v-64h457.536l-244.16-244.224 45.248-45.248 315.264 315.328z" />
+<glyph unicode="&#xea20;" glyph-name="treefile" d="M172 960c-95.48 0-172-76.52-172-172v-680c0-95.48 76.52-172 172-172h680c95.48 0 172 76.52 172 172v680c0 95.48-76.52 172-172 172h-680zM244 782h432l104-132v-536h-536v668zM326 654v-78h200v78h-200zM328 482v-76h374v76h-374zM320 312v-78h384v78h-384z" />
+<glyph unicode="&#xea21;" glyph-name="treeFolder" d="M172 960c-95.48 0-172-76.52-172-172v-680c0-95.48 76.52-172 172-172h680c95.48 0 172 76.52 172 172v680c0 95.48-76.52 172-172 172zM238.712 718.271h206.949c27.848 0 50.787-21.897 50-48v-144h316c28.751 0 52-23.249 52-52v-266.237c0-28.751-23.249-52-52-52h-568.949c-28.751 0-51.098 23.263-52 52v462.237c0 26.115 20.152 48 48 48z" />
+<glyph unicode="&#xea22;" glyph-name="unlock" d="M510 952c-202.717 0-366.626-152.266-370-342-0.012-0.659 0.008-1.34 0-2v-66c-48.364-7.619-86-47.443-86-98v-406c0-56.19 45.81-102 102-102h710c56.19 0 102 45.81 102 102v406c0 56.19-45.81 100-102 100h-634v66c3.722 129.746 126.346 234 278 234 125.236 0 230.961-71.332 266.403-169.184 9.788-9.965 18.88-19.916 30.894-22.829 12.716-3.084 41.895-4.16 53.558 6.145 7.663 6.77 13.476 15.71 11.628 22.481-37.206 155.677-185.523 271.387-362.482 271.387zM510 374c37.842 0 68-30.158 68-68 0-20.924-9.216-41.432-24-54v-170h-90v170c-14.784 12.568-24 33.076-24 54 0 37.842 32.158 68 70 68z" />
+<glyph unicode="&#xea23;" glyph-name="userCompare" d="M430.051 958.163c-113.748 0-204-92.25-204-206.003 0-113.747 90.252-205.997 204-205.997s206 92.25 206 205.997c0 113.754-92.252 206.003-206 206.003zM260.051 536.16c-293.451-164.71-256.921-447.763-260-437.997h378c24.631 42.662 62.629 86.432 126 121.997l12 38.003v1.984c-0.602 0.704-1.411 1.28-2 1.984-16.909 20.928-28.629 51.814-30 97.997 0 62.336 42.539 115.219 100 130.003l4 1.984v1.984l14 41.997c-37.012-47.104-100.907-80-172-80s-132.988 32.896-170 80zM688.051 492.16c-73.692 0-134-58.304-134-132 0-73.69 60.308-133.997 134-133.997s132 60.307 132 133.997c0 73.696-58.308 132-132 132zM576.051 220.16c-190.112-106.707-166.005-290.323-168-284h558c-1.994-6.336 22.112 177.293-168 284-23.978-30.515-63.943-52-110-52s-88.022 21.485-112 52z" />
+<glyph unicode="&#xea24;" glyph-name="userDispatch" d="M512 960c-135.256 0-243.927-108.883-243.927-244.403 0-135.526 108.671-246.413 243.927-246.413s243.927 110.886 243.927 246.413c0 135.52-108.671 244.403-243.927 244.403zM308.061 457.158c-348.938-196.237-304.247-532.493-307.907-520.864h1023.692c-3.66-11.629 41.030 324.627-307.907 520.864-44.011-56.115-119.403-94.15-203.939-94.15-50.341 0-96.799 15.302-135.959 38.061 100.275-77.171 212.359-110.496 331.9-118.195l3.999 152.256 235.929-208.346-213.936-242.406-11.996 138.234c-166.671 50.202-400.945 148.48-413.876 334.547z" />
+<glyph unicode="&#xea25;" glyph-name="xml" d="M130 960c-71.877 0-130-58.123-130-130v-764c0-71.877 58.123-130 130-130h764c71.877 0 130 58.123 130 130v506l-388 388h-506zM772 960l252-252v122c0 71.877-58.123 130-130 130h-122zM56 608h76l64-102 62 102h76l-100-156 110-164h-78l-72 110-70-110h-78l110 168-100 152zM376 608h98l58-218 58 218h96v-320h-60v252l-64-252h-62l-64 252v-252h-60v320zM752 606h66v-264h160v-54h-226v318z" />
+<glyph unicode="&#xea26;" glyph-name="zoomIn" d="M638 958c-211.661 0-382-172.339-382-384 0-71.954 19.508-138.475 54-196-7.030-3.398-12.152-8.152-18-14l-272-272c-27.919-27.919-27.919-72.081 0-100l34-36c27.919-27.919 74.081-27.919 102 0l270 272c5.906 5.906 10.593 12.892 14 20 58.037-35.367 125.065-56 198-56 211.661 0 384 170.339 384 382s-172.339 384-384 384zM638 854c153.936 0 280-126.064 280-280s-126.064-278-280-278c-153.936 0-278 124.064-278 278s124.064 280 278 280zM620 766c-25.053 0-46-20.947-46-46v-84h-84c-25.053 0-44-18.947-44-44v-38c0-25.053 18.947-46 44-46h84v-84c0-25.053 20.947-44 46-44h38c25.053 0 44 18.947 44 44v84h84c25.053 0 46 20.947 46 46v38c0 25.053-20.947 44-46 44h-84v84c0 25.053-18.947 46-44 46h-38z" />
+<glyph unicode="&#xea27;" glyph-name="zoomOut" d="M638.939 958.939c211.661 0 384-172.339 384-384s-172.339-382-384-382c-72.935 0-139.963 20.633-198 56-3.407-7.108-8.094-14.094-14-20l-270-272c-27.919-27.919-74.081-27.919-102 0l-34 36c-27.919 27.919-27.919 72.081 0 100l272 272c5.848 5.848 10.97 10.602 18 14-34.492 57.525-54 124.046-54 196 0 211.661 170.339 384 382 384zM638.939 854.939c-153.936 0-278-126.064-278-280s124.064-278 278-278c153.936 0 280 124.064 280 278s-126.064 280-280 280zM490.9 636.501h295.725c24.975 0 45.222-20.247 45.222-45.222v-37.556c0-24.975-20.247-45.222-45.222-45.222h-295.725c-24.975 0-45.222 20.247-45.222 45.222v37.556c0 24.975 20.247 45.222 45.222 45.222z" />
+<glyph unicode="&#xea28;" glyph-name="zoomOverView" d="M0 960v-172l172 172h-172zM852 960l172-172v172h-172zM128 832v-768h768v768h-768zM234 706h556v-272l-42 56-72-86-66 194-114-230-104 122-158-162v378zM0 108v-172h172l-172 172zM1024 108l-172-172h172v172z" />
+<glyph unicode="&#xea29;" glyph-name="zoomReset" d="M388 960l114-128 114 128h-228zM502 832h-374v-768h768v768h-394zM896 490l128-114v228l-128-114zM512 64l-114-128h226l-112 128zM128 488l-128 112v-226l128 114zM234 706h556v-272l-42 56-72-86-66 194-114-230-104 122-158-162v378z" />
+</font></defs></svg> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.ttf b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.ttf
new file mode 100644
index 00000000..e610cb1f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.ttf
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.woff b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.woff
new file mode 100644
index 00000000..2e193ba1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/fonts/ZteIctIcons.woff
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/selection.json b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/selection.json
new file mode 100644
index 00000000..79a56e09
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/selection.json
@@ -0,0 +1,8408 @@
+{
+ "IcoMoonType": "selection",
+ "icons": [
+ {
+ "icon": {
+ "paths": [
+ "M820.37 677.303c-13.605 0-24.795 5.193-33.646 15.726-8.85 10.459-13.312 26.331-13.312 47.762 0 21.65 4.389 37.742 13.166 48.128s19.822 15.579 33.134 15.579c13.458 0 24.503-5.12 33.061-15.36 8.631-10.313 13.019-26.697 13.019-49.298 0-21.065-4.389-36.791-13.093-47.177-8.704-10.24-19.456-15.36-32.329-15.36z",
+ "M888.027 0h-752.055c-75.557 0-135.973 60.416-135.973 135.973v751.982c0 75.703 60.416 136.046 135.973 136.046h751.982c75.703 0 136.046-60.343 136.046-135.973v-752.055c0-75.557-60.343-135.973-135.973-135.973zM107.52 141.385h103.863v253.294h162.085v82.725h-265.947v-336.018zM350.574 831.634c-24.869 23.918-59.173 35.84-103.058 35.84-39.131 0-70.729-9.947-94.866-29.769-29.696-24.576-44.471-56.832-44.471-96.695 0-37.157 12.507-67.73 37.595-91.794s58.953-36.133 101.522-36.133c48.786 0 85.577 14.117 110.519 42.423 19.968 22.821 30.062 50.761 30.062 84.114 0 37.449-12.434 68.096-37.303 92.014zM573.221 861.989h-82.798l-101.23-243.419h97.061l47.25 154.258 49.006-154.258h94.135l-103.424 243.419zM628.517 466.944c-19.895 10.606-48.347 15.945-85.504 15.945-32.183 0-57.563-4.535-76.069-13.678-18.505-8.997-33.792-23.479-46.007-43.301-12.142-19.749-18.213-43.008-18.213-69.778 0-38.107 12.215-68.827 36.571-92.379 24.43-23.552 58.075-35.255 101.010-35.255 34.889 0 62.391 5.266 82.505 15.799 20.187 10.533 35.547 25.819 46.080 45.787 10.606 20.041 15.872 46.080 15.872 78.19v10.533h-187.099c1.682 14.994 5.705 26.185 12.142 33.499 8.997 10.533 20.773 15.799 35.255 15.799 9.216 0 17.92-2.267 26.112-6.875 5.047-2.926 10.533-8.046 16.311-15.36l91.941 8.485c-14.043 24.503-31.013 41.984-50.907 52.59zM922.258 831.634c-24.869 23.918-59.246 35.84-103.058 35.84-39.058 0-70.729-9.947-94.866-29.769-29.623-24.576-44.471-56.832-44.471-96.695 0-37.157 12.581-67.73 37.669-91.794 25.015-24.064 58.88-36.133 101.522-36.133 48.786 0 85.577 14.117 110.519 42.423 19.968 22.821 29.989 50.761 29.989 84.114-0.073 37.449-12.507 68.096-37.303 92.014zM984.942 477.403h-93.696v-133.851c0-15.287-2.853-26.112-8.485-32.402-5.632-6.363-13.605-9.509-23.845-9.509-11.264 0-20.407 4.315-27.502 12.873-7.022 8.558-10.533 23.918-10.533 46.080v116.882h-93.33v-243.493h86.894v39.643c13.019-16.165 26.112-27.721 39.424-34.743s29.477-10.459 48.567-10.459c25.893 0 46.080 7.68 60.635 23.040s21.87 39.058 21.87 71.168v154.77z",
+ "M575.195 295.424c-7.826-7.753-18.213-11.703-31.013-11.703-14.848 0-26.697 5.851-35.547 17.627-5.632 7.314-9.216 18.286-10.752 32.768h91.941c-1.902-17.993-6.656-30.939-14.629-38.693z",
+ "M248.686 677.303c-13.605 0-24.869 5.193-33.719 15.726-8.85 10.459-13.312 26.331-13.312 47.762 0 21.65 4.389 37.742 13.166 48.128s19.822 15.579 33.134 15.579c13.458 0 24.43-5.12 33.134-15.36 8.631-10.313 12.946-26.697 12.946-49.298 0-21.065-4.389-36.791-13.093-47.177-8.631-10.24-19.383-15.36-32.256-15.36z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-lenovo"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 4,
+ 4,
+ 4,
+ 4
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "properties": {
+ "order": 298,
+ "id": 297,
+ "prevSize": 16,
+ "code": 59648,
+ "name": "it-other-lenovo"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 0
+ },
+ {
+ "icon": {
+ "paths": [
+ "M361.536 749.12l-107.008 274.88h58.88l22.656-62.464h109.888l24 62.464h60.352l-110.080-274.88h-58.688zM353.152 915.264l37.12-102.016 37.888 102.016h-75.008z",
+ "M616.768 751.36h-55.488v272.64h193.472v-46.336h-137.984z",
+ "M957.632 901.184c0 21.76-0.832 37.312-2.432 46.656s-6.464 17.344-14.464 23.68c-8 6.528-19.904 9.664-35.648 9.664-15.488 0-27.776-3.392-36.608-10.176-9.024-6.784-14.656-15.872-17.024-27.136-1.344-6.976-2.048-22.336-2.048-45.952v-148.864h-55.488v146.624c0 30.72 1.792 54.016 5.44 69.76 2.496 10.624 7.68 20.8 15.552 30.464 7.872 9.728 18.56 17.6 32.192 23.616 13.504 6.080 33.408 9.152 59.712 9.152 21.76 0 39.36-2.816 52.864-8.384 13.504-5.504 24.32-12.992 32.32-22.4 8.128-9.344 13.632-20.864 16.64-34.496s4.48-36.928 4.48-69.952v-144.384h-55.488v152.128z",
+ "M1006.016 643.392c11.328-42.304 17.984-86.592 17.984-132.416 0-282.688-230.336-510.976-513.024-510.976s-510.976 228.288-510.976 510.976c0 181.504 94.4 340.992 236.544 432.256v-171.904c0-70.656 57.344-128 128-128h108.224v-19.712c0-19.968-8.384-70.848-42.24-80.448h66.368c36.416 0 44.224 63.68 44.224 84.48v15.68h464.896zM859.008 444.608v-88.512l122.752 122.688-122.752 122.688v-88.448h-164.928c-19.968 0-70.912 10.432-80.448 44.224v-66.368c0-36.416 61.632-46.272 82.496-46.272h162.88zM408.384 468.736c0 36.416-61.632 44.224-82.496 44.224h-162.944v88.512l-122.688-122.688 122.688-122.688v88.512h166.976c19.968 0 68.928-8.384 78.464-42.24v66.368zM496.896 478.784h-66.368c33.856-9.536 42.24-60.544 42.24-80.448v-164.992h-88.512l122.688-122.688 122.688 122.688h-88.448v162.944c0 20.864-7.872 82.496-44.288 82.496z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-router-alu7750"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 299,
+ "id": 296,
+ "prevSize": 16,
+ "code": 59649,
+ "name": "it-router-alu7750"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 1
+ },
+ {
+ "icon": {
+ "paths": [
+ "M558.656 403.584c-10.624-4.096-27.776-6.144-51.328-6.144h-63.040v229.12h64c19.776 0 35.264-1.792 46.592-5.504 11.264-3.712 20.16-8.896 26.88-15.552 9.344-9.408 16.768-22.080 22.016-37.952 5.184-15.872 7.808-35.136 7.808-57.856 0-31.36-5.056-55.424-15.424-72.32-10.304-16.768-22.784-28.032-37.504-33.792z",
+ "M888 0h-752c-75.648 0-136 60.352-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM337.984 661.952h-40.768l-157.504-235.648v235.648h-38.016v-299.904h40.704l157.504 235.52v-235.52h38.080v299.904zM644.544 570.88c-5.312 17.664-12.096 32.192-20.416 43.712-8.384 11.584-17.408 20.608-27.392 27.264-9.856 6.656-21.76 11.648-35.776 14.976-13.952 3.456-30.016 5.12-48.064 5.12h-108.288v-299.904h103.36c23.232 0 41.088 1.472 53.312 4.352 17.216 3.904 31.872 11.072 44.032 21.44 15.744 13.376 27.648 30.464 35.456 51.2 7.808 20.864 11.776 44.608 11.776 71.36-0.064 22.784-2.688 42.944-8 60.48zM918.656 622.4c-9.216 14.144-22.272 25.088-39.36 32.96-17.216 7.808-36.416 11.776-57.792 11.776-27.2 0-49.92-4.032-68.16-11.904-18.368-7.936-32.768-19.776-43.2-35.712-10.432-15.872-15.872-33.856-16.448-53.888l37.44-3.264c1.728 14.976 5.824 27.264 12.352 36.864 6.464 9.6 16.448 17.344 30.208 23.296 13.568 5.952 28.864 8.896 46.016 8.896 15.040 0 28.416-2.176 40.064-6.656 11.584-4.48 20.16-10.688 25.792-18.496 5.76-7.872 8.576-16.448 8.576-25.664 0-9.408-2.688-17.664-8.192-24.64-5.44-6.976-14.464-12.928-27.008-17.728-8.064-3.072-25.856-8.064-53.376-14.656-27.648-6.592-46.848-12.864-57.856-18.688-14.4-7.488-25.024-16.768-32-27.904-7.104-11.072-10.56-23.552-10.56-37.312 0-15.104 4.288-29.312 12.928-42.496 8.512-13.184 21.056-23.168 37.632-30.016 16.448-6.784 34.816-10.24 54.976-10.24 22.208 0 41.792 3.52 58.816 10.688 16.96 7.104 30.016 17.664 39.168 31.616 9.088 13.888 14.016 29.696 14.72 47.232l-38.144 2.88c-1.984-18.944-9.024-33.28-20.736-42.944-11.84-9.664-29.248-14.592-52.224-14.592-24 0-41.536 4.416-52.416 13.184-11.008 8.832-16.448 19.392-16.448 31.808 0 10.752 3.84 19.648 11.648 26.624 7.616 6.976 27.52 14.080 59.84 21.376 32.256 7.296 54.4 13.632 66.368 19.136 17.408 8.064 30.272 18.368 38.592 30.72 8.384 12.352 12.544 26.56 12.544 42.624 0 16-4.672 30.976-13.76 45.12z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-nds"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 300,
+ "id": 295,
+ "prevSize": 16,
+ "code": 59650,
+ "name": "it-other-nds"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 2
+ },
+ {
+ "icon": {
+ "paths": [
+ "M766.4 419.136c-9.728 48.512-19.52 97.088-29.248 145.664h80.256c23.488-12.48 30.656-14.336 43.904-38.4 7.232-20.416 14.528-40.832 21.76-61.248-23.552-43.456-48.128-49.856-116.672-46.016z",
+ "M211.968 419.136c-9.728 48.576-19.52 97.088-29.248 145.664 31.616-2.624 63.232-5.184 94.848-7.744 24.96-12.288 24.448-12.416 36.544-38.336 14.144-27.328 13.376-51.52 7.296-84.288-36.48-5.056-72.96-10.176-109.44-15.296z",
+ "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM175.488 618.432c-50.24 33.088 24.192 82.88-80.256 84.16v-22.848c19.456-102.144 38.912-204.416 58.368-306.56 113.472-4.544 188.288-3.136 240.704 53.696 7.232 255.232-114.304 122.816-218.816 191.552zM562.048 618.368v-22.976c9.792-51.072 19.52-102.144 29.184-153.28-7.296-7.68-14.592-15.296-21.888-22.976h-80.256c-12.16 66.432-24.32 132.864-36.48 199.232h-65.6c21.888-112.384 43.776-224.768 65.664-337.088h58.368c-2.432 30.592-4.8 61.248-7.296 91.904 71.68-3.072 114.624 4.224 153.28 30.656h-0.128v7.68c-9.6 68.928-19.456 137.92-29.12 206.848h-65.728zM722.56 626.176c-2.368 25.408-4.8 51.072-7.168 76.416h-65.6c19.456-109.76 38.784-219.584 58.24-329.408 89.792-3.072 174.016-1.6 226.24 30.656 53.632 184.896-72.448 186.56-211.712 222.336z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-php"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 301,
+ "id": 294,
+ "prevSize": 16,
+ "code": 59651,
+ "name": "it-other-php"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 3
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z",
+ "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM831.936 262.336c-0.832 0.832-1.792 1.344-2.624 2.176h-10.944c4.48-0.768 9.152-1.472 13.568-2.176zM53.824 351.936c120.96-213.76 428.352-120.384 546.112-256.704h10.88c14.528 20.032 29.184 40 43.712 60.032-21.888-10.56-24.128-21.184-38.208-38.208-23.68 18.24-47.296 36.416-70.976 54.592 1.856 3.648 3.648 7.296 5.376 10.944 18.304 5.44 36.48 10.944 54.72 16.384-182.208-17.024-337.216 0.768-447.872 81.92-38.272 28.032-56.64 72.704-98.304 98.304h-5.44v-27.264zM239.488 362.88c-5.44 1.792-10.944 3.648-16.384 5.44-25.088-8.064-19.264-10.24-32.768-27.328 7.296-12.8 14.592-25.472 21.888-38.272h32.704v11.008c8.512 20.352 2.56 33.408-5.44 49.152zM288.704 510.272h-10.944c-75.712 40.832-229.056-50.432-245.76-109.184 110.528 9.92 119.68 119.36 256.704 103.68v5.504zM294.144 466.56c-31.232 16.768-61.056 29.312-92.8 5.44 54.144 0.96 67.968-11.968 92.8-38.208-1.856-10.944-3.648-21.824-5.44-32.704l16.384 16.32c-3.648 16.384-7.296 32.768-10.944 49.152zM310.528 242.688h-10.944c4.16-0.32 8.32-0.576 12.416-0.832-0.448 0.32-1.024 0.512-1.472 0.832zM414.272 204.416c120.256-2.176 196.544 24.064 283.968 43.712v5.44c-51.008-9.088-102.016-18.176-152.896-27.264-77.76 5.184-155.584 10.368-233.344 15.488 28.48-20.416 66.368-21.12 102.272-37.376zM610.88 379.2v-81.92c19.264 31.68 20.544 47.168 0 81.92zM556.224 390.144v-98.304c23.168 37.76 25.92 55.936 0 98.304zM397.888 433.792h-5.44c-1.856-56.448-3.648-112.832-5.504-169.28 36.8 61.056 18.24 90.24 10.944 169.28zM447.040 401.088c-1.792-43.712-3.648-87.424-5.44-131.072 20.672 36.672 25.216 89.28 5.44 131.072zM501.632 401.024v-114.688c22.208 41.92 14.4 60.928 5.376 114.688h-5.376zM627.392 559.424c-31.872-11.456-82.816-20.224-120.32-32.768 3.648-5.44 7.36-10.88 10.944-16.448h5.504c53.12 1.024 70.72 19.2 109.248 32.832 3.648-16.384 7.296-32.832 10.88-49.152 5.504 21.248 0.128 50.24-16.256 65.536zM665.472 368.256h-5.504v-70.976c13.504 19.968 10.176 43.52 5.504 70.976zM720.128 340.992c-12.736-3.648-25.472-7.296-38.272-10.944l38.272 5.44v5.504zM818.368 395.584c14.4-31.552 10.112-60.224-5.44-87.424 14.592 10.944 29.12 21.888 43.84 32.768-9.92 27.328-12.864 42.112-38.4 54.656zM944 537.536c-7.232-5.44-14.656-10.944-21.824-16.384-10.944-21.824-21.952-43.712-32.832-65.536 14.592 16.384 29.12 32.768 43.712 49.152-1.088-95.232-28.736-165.44-5.44-251.2-1.792-1.792-3.648-3.584-5.44-5.44-30.208 4.736-60.16 9.536-90.24 14.272 26.624-25.984 60.16-33.408 95.68-52.48h16.384v327.616z",
+ "M212.224 313.664c-3.648 7.232-7.232 14.528-10.88 21.824 10.88 5.504 21.76 10.944 32.704 16.448-4.544-26.688-6.016-25.152-21.824-38.272z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-glassfish"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 302,
+ "id": 293,
+ "prevSize": 16,
+ "code": 59652,
+ "name": "it-app-glassfish"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 4
+ },
+ {
+ "icon": {
+ "paths": [
+ "M708.544 476.096h62.592v64.064h-62.592v-64.064z",
+ "M888 0h-752c-75.648 0-136 60.352-136 135.936v752.064c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752.064c0-75.584-60.352-135.936-136-135.936zM231.936 349.248h-52.992v315.456h-30.4v-315.456h-53.376v-26.944h136.704v26.944zM383.040 553.152l-9.792 10.304h-80.96v76.992h62.592v-39.040h28.224v38.528c0 16.512-8.128 24.768-24.512 24.768h-70.016c-16.32 0-24.512-8.256-24.512-24.768v-163.392c0-16.512 8.128-24.768 24.512-24.768h70.016c16.32 0 24.512 8.256 24.512 24.768v76.608zM461.568 664.704h-28.608v-342.4h28.672v342.4zM633.344 664.704h-29.12v-186.816l-64.128 1.728v185.088h-29.056v-212.864h29.12v5.952c11.328-1.472 22.784-3.072 34.368-4.608 13.952-1.728 25.472-2.624 34.496-2.624 16.256 0 24.384 7.936 24.384 23.808v190.336zM799.36 553.152l-9.856 10.304h-80.96v76.992h62.592v-39.040h28.224v38.528c0 16.512-8.192 24.768-24.512 24.768h-70.016c-16.384 0-24.512-8.256-24.512-24.768v-163.392c0-16.512 8.128-24.768 24.512-24.768h70.016c16.32 0 24.512 8.256 24.512 24.768v76.608zM924.032 477.44h-37.12v161.6h37.12v25.6h-41.344c-16.32 0-24.512-8.256-24.512-24.768v-162.432h-25.536v-25.6h25.536v-66.304h28.672v66.304h37.12v25.6z",
+ "M292.288 476.096h62.592v64.064h-62.592v-64.064z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-telnet"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 303,
+ "id": 292,
+ "prevSize": 16,
+ "code": 59653,
+ "name": "it-other-telnet"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 5
+ },
+ {
+ "icon": {
+ "paths": [
+ "M264.576 342.848h-55.296v378.112h53.056c15.488 0 28.032-4.416 37.696-13.312 9.6-8.96 14.464-21.056 14.464-36.544v-278.912c0-14.656-4.608-26.56-13.888-35.712-9.344-9.024-21.312-13.632-36.032-13.632z",
+ "M888 0h-752c-75.648 0-136 60.352-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM354.304 675.136c0 23.68-7.808 43.136-23.36 58.304s-35.2 22.784-58.88 22.784h-102.656v-448.64h102.592c23.936 0 43.584 7.616 59.072 22.784s23.232 34.624 23.232 58.304v286.464zM609.216 756.224h-27.584l-119.808-329.92v329.92h-37.568v-448.64h29.824l117.504 324.224v-324.16h37.568v448.576zM855.68 443.84h-39.872v-100.992h-96.896v94.656l124.416 149.632c8.192 9.92 12.288 21.12 12.288 33.536v103.744c0 9.344-2.944 17.024-8.768 22.912s-13.44 8.896-22.784 8.896h-112.96c-9.344 0-17.024-2.944-23.040-8.896s-9.024-13.568-9.024-22.912v-113.792h39.808v110.4h96.896v-106.944l-123.84-149.632c-8.576-10.304-12.864-21.696-12.864-34.112v-90.88c0-9.344 3.008-17.024 9.024-22.848 6.080-5.952 13.76-8.96 23.040-8.96h112.96c9.344 0 17.024 3.008 22.784 8.96 5.824 5.888 8.768 13.568 8.768 22.848v104.384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-dns"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 304,
+ "id": 291,
+ "prevSize": 16,
+ "code": 59654,
+ "name": "it-other-dns"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 6
+ },
+ {
+ "icon": {
+ "paths": [
+ "M888 0h-752c-75.648 0-136 60.352-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM379.328 724.416c0 9.344-3.008 17.024-9.024 22.912-6.016 5.952-13.696 8.896-23.104 8.896h-122.048c-9.344 0-17.024-2.944-22.912-8.896-5.952-5.952-8.896-13.568-8.896-22.912v-416.768h39.872v413.376h106.368v-413.376h39.872v416.768zM600 756.224l-83.392-240.192 5.44-8.064h71.040v-165.12h-102.272v413.376h-39.808v-448.64h150.208c9.344 0 17.024 3.008 22.912 8.96 5.952 5.888 8.896 13.568 8.896 22.848v170.304c0 21.568-14.528 32.384-43.584 32.384-2.88 0-7.040-0.128-12.608-0.448-5.568-0.192-9.6-0.384-12.096-0.384 25.856 71.488 51.584 143.104 77.184 214.976h-41.92zM844.864 756.224h-143.296v-448.64h39.808v413.376h103.488v35.264z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-url"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 305,
+ "id": 290,
+ "prevSize": 16,
+ "code": 59655,
+ "name": "it-other-url"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 7
+ },
+ {
+ "icon": {
+ "paths": [
+ "M4.032 488c0-7.232-2.816-30.4-4.032-43.968v129.984c1.856 20.864 4.032 44.224 4.032 54.016 0 17.472 5.248 33.728 14.016 49.984h237.952c-150.272-38.72-251.968-108.672-251.968-190.016z",
+ "M0 678.016h1.984c-0.896-9.472-1.28-17.984-1.984-25.984v25.984z",
+ "M513.984 444.032c282.752 0 512-99.328 512-222.016 0-1.344 0.128-2.624 0-4.032 0-0.704 0-1.344 0-1.984-7.488-119.808-233.984-216-512-216-282.752 0-512 99.328-512 222.016s229.248 222.016 512 222.016z",
+ "M516.032 494.016c-282.752 0-512-99.328-512-222.016 0-7.232-2.752-30.4-4.032-44.032v137.984c1.856 20.864 4.032 44.288 4.032 54.080 0 122.688 229.248 222.016 512 222.016s512-99.328 512-222.016v-148.032c-0 122.688-229.312 222.016-512 222.016z",
+ "M776 678.016h238.016c8.768-16.256 14.016-32.512 14.016-49.984v-140.032c0 81.344-101.76 151.296-252.032 190.016z",
+ "M140.736 932.096c-5.056 19.968-8.768 35.072-11.136 45.312-2.048-9.28-5.376-23.168-9.984-41.792l-49.472-200.128h-41.6v282.624h26.688v-240.64l60.48 240.64h24.96l60.736-236.544v236.544h26.688v-282.624h-37.376l-49.984 196.608z",
+ "M369.792 818.56c-8.96 18.56-16.576 35.2-22.848 49.92-6.592-15.936-13.632-31.872-21.248-47.808l-41.216-85.184h-33.6l80.512 162.88v119.744h27.648v-119.744l83.392-162.88h-32.128l-40.512 83.072z",
+ "M592.704 844.032c-9.472-6.784-24.128-13.632-43.904-20.032s-31.488-12.096-36.608-17.984c-4.032-4.608-5.824-9.472-5.824-16 0-7.104 1.536-13.76 5.824-17.984 6.656-6.656 16-9.984 27.84-9.984 11.392 0 19.072 3.776 24.896 9.984 5.632 6.208 9.92 15.872 11.712 30.016l40.96-2.048c-0.704-25.28-7.808-44.864-20.48-60.032-12.8-15.104-31.872-24-57.088-24-15.488 0-28.608 3.648-39.552 9.984-10.944 6.4-19.072 15.808-24.896 28.032-5.824 12.16-8.768 25.984-8.768 40 0 21.76 6.656 38.848 19.008 54.016 8.768 10.752 23.616 20.608 45.376 28.032 16.96 5.76 27.456 9.728 32.192 12.032 6.912 3.392 11.84 7.488 14.656 12.032 2.752 4.544 4.416 9.472 4.416 16 0 10.112-3.712 20.416-10.24 28.032-6.656 7.552-16.192 9.984-29.312 9.984-12.352 0-22.080-3.52-29.312-12.032-7.296-8.512-12.224-21.888-14.656-40l-39.424 5.952c2.688 30.72 11.264 53.952 24.896 70.016s33.152 24 58.56 24c17.472 0 32.128-3.328 43.904-9.984 11.712-6.656 19.968-18.24 26.304-32 6.464-13.76 10.24-28.224 10.24-44.032 0-17.344-3.456-32.192-8.768-44.032-5.376-11.84-12.544-21.184-21.952-27.968z",
+ "M917.632 724.032h-41.024v272h142.016v-46.016h-100.992z",
+ "M837.12 921.984c4.864-17.984 7.296-38.272 7.296-62.016 0-44.864-8.896-81.088-26.304-105.984-17.472-24.96-40.448-38.016-70.272-38.016-30.144 0-54.208 13.056-71.744 38.016s-26.304 61.12-26.304 105.984c0 44.992 8.768 79.104 26.304 104 17.472 24.896 40.832 38.016 71.744 38.016 16 0 30.72-4.096 43.904-12.032 16.768 15.36 26.56 23.104 27.84 24 5.888 4.352 11.456 7.488 17.536 9.984l14.656-40c-11.712-5.76-22.208-12.224-32.192-22.016 8.064-12.8 13.888-26.176 17.536-39.936zM799.040 900.032c-2.624 11.904-6.528 21.632-11.712 30.016-12.16-12.48-26.176-21.76-39.488-28.032l-10.24 32c8.512 4.096 16.64 10.624 24.896 17.984-5.248 2.624-10.24 4.032-16.128 4.032-15.68 0-29.248-8.064-39.488-24-10.304-15.936-16.128-39.872-16.128-72 0-31.616 5.824-56.256 16.128-72 10.24-15.744 22.912-24 39.488-24s30.72 8.32 41.024 24 14.656 40.256 14.656 72c-0.064 15.36-0.448 28.096-3.008 40z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-database-mysql"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 306,
+ "id": 289,
+ "prevSize": 16,
+ "code": 59656,
+ "name": "it-database-mysql"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 8
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154.24 298.752h98.048v199.808h-98.048v-199.808z",
+ "M888 0h-752c-75.648 0-136 60.416-136 136v752c0 75.648 60.352 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM292.096 502.016c0 9.344-3.008 17.088-9.024 23.040-6.016 6.080-13.696 9.088-23.040 9.088h-105.792v177.984h-39.808v-448.64h145.6c9.344 0 17.088 3.008 23.104 8.96 6.016 5.888 9.024 13.568 9.024 22.848v206.72zM397.312 712.128h-39.872v-448.64h39.872v448.64zM657.088 712.128h-27.584l-119.808-329.92v329.92h-37.568v-448.64h29.824l117.568 324.288v-324.288h37.568v448.64zM910.144 399.68h-40.128v-100.928h-101.44v378.112h101.44v-155.072h-47.872v-34.432h88v192.96c0 9.344-2.944 17.024-8.896 22.912s-13.568 8.896-22.912 8.896h-117.824c-9.344 0-17.024-2.944-22.912-8.896s-8.896-13.568-8.896-22.912v-385.024c0-9.344 3.008-17.024 8.896-22.848 5.952-5.952 13.632-8.96 22.912-8.96h117.824c9.344 0 17.024 3.008 22.912 8.96 5.952 5.888 8.896 13.568 8.896 22.848v104.384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-ping"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 307,
+ "id": 288,
+ "prevSize": 16,
+ "code": 59657,
+ "name": "it-other-ping"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 9
+ },
+ {
+ "icon": {
+ "paths": [
+ "M888 0h-752c-75.584 0-136 60.352-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.648-60.352-136-136-136zM352 269.12h-119.168v193.92h109.696v40.832h-109.696v236.032h-45.376v-510.976h164.544v40.192zM590.656 269.12h-78.976v470.784h-45.376v-470.784h-79.68v-40.192h204.096v40.192zM846.4 500.608c0 10.624-3.456 19.392-10.304 26.24s-15.616 10.304-26.304 10.304h-120.448v202.752h-45.44v-510.976h165.888c10.688 0 19.456 3.392 26.304 10.112s10.304 15.488 10.304 26.112v235.456z",
+ "M689.344 269.12h111.616v227.584h-111.616v-227.584z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-ftp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 308,
+ "id": 287,
+ "prevSize": 16,
+ "code": 59658,
+ "name": "it-other-ftp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 10
+ },
+ {
+ "icon": {
+ "paths": [
+ "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM243.456 695.040l-79.744-229.632 5.248-7.68h67.968v-157.76h-97.856v395.136h-38.080v-428.8h143.616c8.96 0 16.256 2.816 21.888 8.448 5.632 5.696 8.512 12.992 8.512 21.952v162.752c0 20.672-13.888 30.976-41.664 30.976-2.752 0-6.72-0.128-12.032-0.384s-9.152-0.384-11.52-0.384c24.64 68.288 49.216 136.832 73.728 205.504h-40.064zM481.28 695.040h-140.864v-428.8h139.2v33.664h-101.12v160h92.032v34.24h-91.968v167.168h102.72v33.728zM707.904 396.416h-38.080v-96.448h-92.608v90.432l118.912 143.040c7.808 9.472 11.776 20.16 11.776 32v99.2c0 9.024-2.752 16.32-8.32 21.952-5.632 5.696-12.864 8.512-21.824 8.512h-107.968c-8.96 0-16.32-2.816-22.080-8.512-5.76-5.632-8.64-12.928-8.64-21.952v-108.736h38.080v105.472h92.608v-102.272l-118.4-142.976c-8.192-9.856-12.352-20.736-12.352-32.64v-86.848c0-8.96 2.88-16.256 8.64-21.952 5.824-5.632 13.248-8.448 22.144-8.448h107.968c8.96 0 16.192 2.816 21.824 8.448 5.568 5.696 8.32 12.992 8.32 21.952v99.776zM923.008 299.968h-66.304v395.136h-38.080v-395.136h-66.88v-33.728h171.264v33.728z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-rest"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 309,
+ "id": 286,
+ "prevSize": 16,
+ "code": 59659,
+ "name": "it-other-rest"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 11
+ },
+ {
+ "icon": {
+ "paths": [
+ "M594.752 566.016h75.392l-37.568-232.384z",
+ "M343.488 299.968h104.96v361.408h-104.96v-361.408z",
+ "M817.472 299.968h93.76v190.976h-93.76v-190.976z",
+ "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM238.016 396.416h-38.080v-96.448h-92.672v90.432l118.912 143.040c7.872 9.472 11.776 20.16 11.776 32v99.2c0 9.024-2.752 16.32-8.384 21.952-5.568 5.696-12.8 8.512-21.76 8.512h-107.904c-8.96 0-16.256-2.816-22.016-8.512-5.76-5.632-8.64-12.928-8.64-21.952v-108.736h38.080v105.472h92.608v-102.272l-118.4-142.976c-8.192-9.856-12.352-20.736-12.352-32.64v-86.848c0-8.96 2.88-16.256 8.64-21.952 5.76-5.632 13.12-8.448 22.080-8.448h107.968c8.96 0 16.192 2.816 21.76 8.448 5.568 5.696 8.384 12.992 8.384 21.952v99.776zM486.528 664.64c0 9.024-2.88 16.32-8.64 21.952-5.76 5.696-13.12 8.512-22.080 8.512h-120c-8.96 0-16.256-2.816-21.888-8.512-5.632-5.632-8.512-12.928-8.512-21.952v-368c0-8.96 2.816-16.256 8.512-21.952 5.632-5.632 12.928-8.448 21.888-8.448h120c8.96 0 16.32 2.816 22.080 8.448 5.76 5.696 8.64 12.992 8.64 21.952v368zM690.112 695.040l-15.040-95.36h-85.248l-15.104 95.36h-36.672v-1.152l76.48-428.8h37.568l75.904 429.952h-37.888zM949.312 494.208c0 8.96-2.88 16.32-8.64 22.080s-13.12 8.64-22.080 8.64h-101.12v170.176h-38.080v-428.8h139.2c8.96 0 16.32 2.816 22.080 8.448 5.76 5.696 8.64 12.992 8.64 21.952v197.504z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-soap"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 310,
+ "id": 285,
+ "prevSize": 16,
+ "code": 59660,
+ "name": "it-other-soap"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 12
+ },
+ {
+ "icon": {
+ "paths": [
+ "M766.336 563.584c-6.912-61.952 29.12-128.832 94.144-209.92-23.168-15.424-37.44-36.096-78.592-46.912-170.496-21.632-250.176 23.744-250.176 23.744s-112.192-49.792-191.68-42.624c-130.432 11.648-176.448 134.72-179.712 201.152-2.368 47.936-6.528 116.544 1.408 168 29.888 192.832 130.688 269.952 213.632 297.536 64.768 21.568 88.256-30.784 135.744-30.784 15.232 0 63.872-1.728 73.856 3.712 146.176 79.68 238.656 7.040 303.040-193.024-45.056-16.704-111.36-90.24-121.664-170.88z",
+ "M696.768 64c-60.8 0-170.88 102.848-162.176 188.288 0.448 4.096 11.968 8.064 16 7.232 56.448-11.648 121.536-70.912 141.888-127.424 5.952-16.768 22.144-68.096 4.288-68.096z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-macos"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 311,
+ "id": 284,
+ "prevSize": 16,
+ "code": 59661,
+ "name": "it-server-macos"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 13
+ },
+ {
+ "icon": {
+ "paths": [
+ "M619.904 452.8c9.984-7.552 16.896-18.24 20.544-31.936l-23.488-2.88c-3.456 9.6-8.128 16.576-14.016 20.928s-12.992 6.592-21.376 6.592c-11.2 0-20.48-3.904-28.032-11.776-7.488-7.808-11.648-19.072-12.48-33.792h100.032c0.064-2.688 0.128-4.672 0.128-6.016 0-22.144-5.696-39.296-17.088-51.52-11.392-12.16-25.984-18.304-43.968-18.304-18.496 0-33.536 6.272-45.184 18.688-11.584 12.416-17.408 29.888-17.408 52.48 0 21.824 5.76 38.72 17.28 50.816s27.072 18.112 46.656 18.112c15.552-0 28.288-3.776 38.4-11.392zM554.112 353.216c7.168-6.976 15.872-10.496 26.304-10.496 11.584 0 20.928 4.352 28.16 13.12 4.672 5.632 7.552 14.144 8.576 25.408h-74.88c0.768-11.712 4.736-21.056 11.84-28.032z",
+ "M513.472 673.92c-7.424-3.328-21.056-7.232-40.96-11.776s-32.192-8.96-36.928-13.248c-4.864-4.224-7.232-9.728-7.232-16.32 0-7.68 3.392-14.208 10.176-19.648s17.536-8.192 32.384-8.192c14.208 0 24.96 3.008 32.256 9.024 7.296 5.952 11.584 14.784 12.8 26.496l23.488-1.728c-0.448-10.88-3.456-20.544-9.088-29.184-5.632-8.576-13.696-15.104-24.192-19.52-10.432-4.48-22.528-6.656-36.288-6.656-12.48 0-23.808 2.112-33.984 6.336s-17.92 10.368-23.232 18.496c-5.248 8.128-7.936 16.896-7.936 26.176 0 8.512 2.176 16.192 6.528 23.040s10.944 12.544 19.776 17.28c6.848 3.584 18.752 7.424 35.776 11.52s27.968 7.104 32.96 9.088c7.744 2.944 13.312 6.592 16.704 10.944 3.328 4.288 5.056 9.344 5.056 15.168 0 5.76-1.728 11.008-5.248 15.872-3.456 4.8-8.832 8.64-16 11.392-7.168 2.816-15.424 4.16-24.704 4.16-10.56 0-20.032-1.792-28.416-5.504-8.384-3.648-14.656-8.448-18.624-14.4-4.032-5.952-6.592-13.568-7.68-22.784l-23.104 2.048c0.32 12.288 3.712 23.424 10.176 33.28s15.296 17.152 26.624 22.016c11.328 4.864 25.344 7.36 42.112 7.36 13.248 0 25.088-2.432 35.648-7.296 10.56-4.8 18.688-11.648 24.32-20.288s8.512-17.984 8.512-27.84c0-9.92-2.624-18.752-7.744-26.368-5.248-7.616-13.184-13.952-23.936-18.944z",
+ "M404.032 447.296c3.904 4.864 8.832 8.896 14.784 12.096 6.016 3.2 12.8 4.8 20.416 4.8 10.368 0 20.224-2.944 29.568-8.768 9.408-5.824 16.576-14.272 21.44-25.28 5.056-10.944 7.488-23.36 7.488-37.056 0-12.8-2.24-24.576-6.72-35.264-4.416-10.752-11.008-19.072-19.776-24.96s-18.88-8.832-30.336-8.832c-8.768 0-16.192 1.728-22.336 5.12s-11.648 8.512-16.512 15.36v-17.472h-20.736v185.472h22.72v-65.216zM413.12 355.392c7.424-9.024 16-13.568 25.664-13.568 9.728 0 18.176 4.224 25.216 12.736s10.56 21.312 10.56 38.4c0 17.92-3.584 31.168-10.752 39.744-7.232 8.512-15.872 12.8-25.984 12.8-9.92 0-18.368-4.096-25.344-12.352-7.104-8.256-10.56-21.056-10.56-38.272s3.712-30.4 11.2-39.488z",
+ "M337.408 672.96c8.704-4.224 15.168-9.92 19.456-16.896s6.464-14.464 6.464-22.4c0-8.512-2.432-16.64-7.296-24.448-4.8-7.744-11.52-13.504-20.032-17.28s-19.904-5.632-34.048-5.632h-69.44v185.152h70.592c11.776 0 21.696-1.024 29.824-3.072s14.848-5.12 20.288-9.216c5.376-4.032 9.92-9.792 13.568-17.28s5.504-15.488 5.504-24.192c0-10.752-3.008-20.032-9.024-28.032-6.016-7.872-14.592-13.44-25.856-16.704zM257.024 608.192h36.992c13.312 0 22.656 0.896 28.16 2.56 5.504 1.728 9.664 4.928 12.608 9.6 2.944 4.736 4.416 10.112 4.416 16.256 0 6.464-1.536 11.84-4.736 16.128s-7.872 7.36-14.080 9.28c-4.736 1.344-12.48 2.112-23.36 2.112h-40v-55.936zM343.232 733.376c-2.432 4.48-5.504 7.936-9.344 10.304-3.776 2.304-8.512 4.032-14.144 4.992-3.2 0.64-8.768 0.96-16.64 0.96h-46.080v-63.68h42.752c11.84 0 20.8 1.088 27.072 3.136s11.2 5.632 14.72 10.752c3.52 5.056 5.312 11.072 5.312 17.92 0.064 5.952-1.216 11.136-3.648 15.616z",
+ "M309.12 452.864c13.888-7.616 24.576-18.816 32.192-33.6 7.552-14.848 11.328-31.616 11.328-50.368 0-18.56-3.584-35.072-10.752-49.664-7.168-14.656-17.664-25.984-31.36-34.176s-29.184-12.288-46.272-12.288c-26.112 0-47.36 8.704-63.872 26.048s-24.704 41.472-24.704 72.192c0 16.256 3.52 31.68 10.624 46.208 7.104 14.592 17.472 26.048 31.168 34.496s29.312 12.608 46.72 12.608c16.064 0 31.040-3.84 44.928-11.456zM218.88 424.064c-11.968-12.8-17.984-30.4-17.984-52.672 0-27.84 6.272-47.744 18.752-59.648s27.392-17.856 44.736-17.856c12.224 0 23.232 3.072 33.024 9.28s17.28 14.848 22.336 26.112 7.616 24.384 7.616 39.488c0 23.808-5.952 42.176-17.856 55.168s-27.008 19.392-45.504 19.392c-18.048 0-33.088-6.4-45.12-19.264z",
+ "M702.4 602.24c-7.488-6.4-16.576-10.816-27.2-13.248-7.552-1.728-18.56-2.688-32.96-2.688h-63.744v185.152h66.816c11.2 0 21.056-1.088 29.696-3.2 8.64-2.048 16-5.184 22.144-9.28 6.080-4.032 11.712-9.664 16.896-16.832 5.12-7.040 9.344-16.064 12.608-26.944s4.864-23.296 4.864-37.376c0-16.512-2.368-31.168-7.232-44.032-4.864-12.736-12.16-23.296-21.888-31.552zM701.44 713.216c-3.264 9.792-7.808 17.6-13.632 23.36-4.096 4.096-9.6 7.36-16.576 9.6s-16.576 3.456-28.736 3.456h-39.488v-141.44h38.848c14.592 0 25.152 1.28 31.68 3.84 9.152 3.52 16.832 10.496 23.168 20.864s9.472 25.28 9.472 44.608c0.064 14.016-1.536 25.856-4.736 35.712z",
+ "M0 0v1024h1024v-533.12c-85.888 14.656-144.192 122.368-127.936 210.816-55.872-12.48-65.856-52.608-94.016-59.136 5.76 22.656 11.392 45.12 17.216 67.648-34.112-3.264-27.008-9.152-51.2 8.512 11.392 25.28 22.656 50.496 33.984 75.776-2.816 0-5.632 0-8.512 0-23.808-22.016-29.056-31.488-68.096-42.112-2.816 5.632-5.824 11.136-8.64 16.896 5.824 17.024 11.456 33.728 17.216 50.752-37.12-25.152-27.52-31.744-68.416-17.024-2.816 22.528-5.696 44.992-8.512 67.648-21.184-24.128-14.464-29.248-51.2-42.368-2.816 17.024-5.76 33.856-8.512 50.624-8.576-11.264-17.152-22.528-25.536-33.6-8.576 5.76-17.152 11.136-25.6 16.896-2.88 22.4-5.696 44.992-8.64 67.52-11.392-22.528-22.72-45.12-33.984-67.52-5.696 2.752-11.52 5.504-17.152 8.512-8.576 32.64-3.328 25.28-25.6 42.112-2.88-14.144-5.696-28.224-8.576-42.112-5.632 2.624-11.328 5.504-17.024 8.256-10.88 37.504-16.96 43.264-34.112 50.752-5.76-19.84-11.456-39.616-17.152-59.072-17.6 17.152-19.264 28.352-42.624 42.112 0-17.024 0-33.856 0-50.624-22.72 14.016-45.568 28.032-68.288 42.24 6.4-46.848 11.968-56.64-17.088-84.352-17.088 11.136-34.112 22.528-51.264 33.6 5.824-22.528 11.456-44.864 17.152-67.392-25.536 5.632-51.2 11.264-76.8 16.768 11.392-16.768 22.72-33.728 34.176-50.624-18.496-23.36-16.256-18.752-34.176-42.112-11.392 5.632-22.656 11.264-34.112 16.896 23.424-48.64 10.816-38.4-25.536-84.48-40.704 12.544-61.504 8.832-85.44-16.832 82.432-69.184 97.92-184 153.6-261.504-8.512-11.264-17.024-22.464-25.6-33.664 11.392 0 22.72 0 34.112 0-14.144-25.408-28.416-50.688-42.624-76.032 28.416 8.448 56.96 17.024 85.248 25.408-11.968-28.096 20.352-29.504 17.152-75.968 14.208 5.568 28.416 11.2 42.688 16.832-5.696-25.344-11.392-50.624-17.088-75.84 30.592 19.776 28.928 36.352 68.224 50.496 0-11.2 0-22.464 0-33.664 11.392 8.384 22.848 16.768 34.176 25.216 1.728-36.352 2.24-40.64 17.152-59.008 5.568 14.144 11.264 28.16 16.96 42.176 25.28-34.048 19.904 0.512 34.176-25.216 5.696-16.96 11.392-33.792 17.088-50.688 11.392 22.464 22.656 45.056 34.112 67.456 5.76-11.2 11.392-22.592 17.088-33.792 0 14.144 0 28.224 0 42.176 5.632-2.752 11.456-5.632 17.152-8.384 8.512-32.768 3.264-25.344 25.6-42.176 0 16.832 0 33.792 0 50.624 23.936-14.848 14.464-12.352 34.048-16.832 0 8.384 0 16.832 0 25.28 22.656-22.4 45.504-45.056 68.224-67.456-5.568 30.976-11.328 61.824-17.024 92.8 8.512-5.76 17.088-11.392 25.6-17.024 14.080-30.4 2.304-19.776 33.984-33.664-5.632 25.28-11.328 50.688-17.024 75.968 11.392-8.448 22.72-16.896 34.24-25.28-2.88 14.016-5.824 28.032-8.704 42.112 22.848-11.2 45.632-22.464 68.288-33.664-11.392 22.464-22.656 44.928-34.112 67.52 2.816 2.816 5.824 5.568 8.64 8.384 25.472-11.2 51.136-22.656 76.608-33.792 0 2.816 0 5.632 0 8.448-29.376 43.712-33.28 39.808-16.96 76.032 22.656-8.448 45.504-17.024 68.288-25.344 0 2.752 0 5.632 0 8.32-17.152 14.208-34.176 28.16-51.392 42.24 26.368 32.256 12.736-0.576 8.576 50.624 20.032-2.752 40-5.632 59.904-8.384-17.088 19.648-34.176 39.296-51.264 59.072 14.272-2.816 28.608-5.568 42.752-8.448-11.648 16-21.44 19.968-34.176 33.728 5.696 8.32 11.392 16.832 17.024 25.216 45.568-26.688 58.688-51.904 128-58.944 17.216 11.2 34.176 22.528 51.2 33.728v-490.944h-1023.936z",
+ "M769.6 339.84c-3.392-4.736-8.512-8.512-15.232-11.392s-14.208-4.352-22.272-4.352c-18.624 0-32.896 7.36-42.688 22.080v-19.136h-20.48v134.080h22.72v-73.152c0-17.216 3.52-28.864 10.56-35.008 6.976-6.144 15.36-9.216 25.088-9.216 6.080 0 11.328 1.344 15.808 4.096 4.48 2.688 7.68 6.4 9.408 10.944 1.728 4.608 2.624 11.52 2.624 20.8v81.536h22.72v-82.432c0-10.56-0.448-17.92-1.28-22.080-1.28-6.464-3.648-12.096-6.976-16.768z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-openbsd"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 312,
+ "id": 283,
+ "prevSize": 16,
+ "code": 59662,
+ "name": "it-server-openbsd"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 14
+ },
+ {
+ "icon": {
+ "paths": [
+ "M797.952 299.072c5.824 5.824 11.648 11.584 17.408 17.408-12.032-16.64-0.896-5.12-17.408-17.408zM0 0v1024h1024v-1024h-1024zM214.656 273.024h17.344v8.704c-5.76 5.824-11.584 11.584-17.344 17.408h-8.768c2.88-8.768 5.824-17.472 8.768-26.112zM197.184 334.016c2.88 8.64 5.824 17.344 8.704 26.048h-8.704v-26.048zM571.648 647.36c-45.888-16.896-81.216-29.568-104.576-69.632 11.584 5.76 23.232 11.648 34.816 17.344-11.584-11.584-23.232-23.104-34.816-34.752-11.648 12.416-10.816 15.296-26.112 26.112-2.88-14.464-5.824-28.928-8.704-43.456 11.648-3.392 11.968-104.576 26.112-165.504 42.688-32.768 54.72-56.64 130.688-60.992 27.904 14.208 36.416 16.064 52.16 43.584-77.888-30.784-114.752 3.328-165.376 43.52-4.416 44.224-9.408 68.608 8.64 104.448 16.704 43.328 35.52 61.184 78.4 78.4 75.776 21.568 126.912-20.096 174.208-52.288 80.576-361.28-300.864-476.672-452.8-208.96-130.688 230.336 75.456 527.296 252.48 574.72v8.704h-52.288c-398.4-154.56-361.024-598.784-34.816-801.088 494.912-22.080 487.040 512.768 121.984 539.84zM615.104 534.144v8.832h-8.704c-8.704-2.944-17.408-5.888-26.176-8.832v-17.344c11.648 5.76 23.232 11.52 34.88 17.344zM667.264 447.168v-26.176c17.92 15.744 6.272 0.128 17.472 26.176h-17.472z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-debian"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 313,
+ "id": 282,
+ "prevSize": 16,
+ "code": 59663,
+ "name": "it-server-debian"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 15
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z",
+ "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM340.032 570.624c0 2.304-1.728 3.52-5.248 3.52-6.976 0-30.272-1.728-80.896-1.728-55.296 0-80.32 1.728-86.72 1.728-2.88 0-4.672-1.216-4.672-3.52v-15.68c0-2.368 1.728-3.52 4.672-3.52h32.576c11.648 0 23.872-1.728 26.176-16.896 1.152-8.704 2.88-134.464 2.88-165.248v-40.768c0-13.952-1.728-118.72-2.304-127.488-1.152-13.952-6.976-19.776-29.12-19.776h-33.728c-2.88 0-4.608-1.152-4.608-3.52v-15.68c0-2.304 1.728-3.456 4.032-3.456 6.976 0 36.672 1.728 90.752 1.728 51.84 0 70.464-1.728 78.592-1.728 2.88 0 4.032 1.728 4.032 4.032v14.592c0 2.88-1.728 4.032-4.672 4.032h-27.264c-11.648 0-20.352 4.672-20.352 16.32 0 5.824-1.728 134.464-1.728 141.376v44.864c0 5.824 1.728 140.224 1.728 146.688 0 18.048 8.704 20.992 27.328 20.992h23.872c2.88 0 4.672 1.152 4.672 4.032v15.104zM561.728 570.624c0 2.304-1.728 3.52-5.248 3.52-6.976 0-30.272-1.728-80.896-1.728-55.296 0-80.32 1.728-86.72 1.728-2.88 0-4.672-1.216-4.672-3.52v-15.68c0-2.368 1.728-3.52 4.672-3.52h32.576c11.648 0 23.872-1.728 26.176-16.896 1.216-8.704 2.944-134.464 2.944-165.248v-40.768c0-13.952-1.728-118.72-2.304-127.488-1.152-13.952-6.976-19.776-29.12-19.776h-33.792c-2.88 0-4.608-1.152-4.608-3.52v-15.68c0-2.304 1.728-3.456 4.032-3.456 6.976 0 36.672 1.728 90.752 1.728 51.84 0 70.4-1.728 78.592-1.728 2.88 0 4.032 1.728 4.032 4.032v14.592c0 2.88-1.728 4.032-4.608 4.032h-27.264c-11.648 0-20.352 4.672-20.352 16.32 0 5.824-1.728 134.464-1.728 141.376v44.864c0 5.824 1.728 140.224 1.728 146.688 0 18.048 8.704 20.992 27.328 20.992h23.872c2.944 0 4.672 1.152 4.672 4.032v15.104zM755.008 581.12c-40.768 0-69.248-12.224-92.48-30.336-6.976-5.184-10.496-6.976-13.44-6.976-3.456 0-5.824 4.096-9.344 9.92-3.52 6.4-6.4 6.976-10.432 6.976-3.52 0-6.464-2.944-5.248-9.344 2.304-14.464 8.128-88.448 9.856-105.28 0.64-3.456 1.728-3.456 4.032-3.456l8.768 0.576c2.304 0 3.52 1.152 3.52 4.672 0.576 18.624 1.728 37.824 20.928 67.52 17.472 27.328 49.472 43.008 81.472 43.008 34.944 0 79.168-21.504 79.168-73.856 0-59.968-43.136-82.048-89.664-98.368-17.984-6.4-59.968-20.928-84.928-47.168-19.264-19.2-29.12-46.592-29.12-84.992 0-29.12 18.048-57.6 36.096-74.496 20.928-19.776 49.984-27.968 81.408-27.968 33.216 0 58.816 9.92 68.672 14.592 5.248 2.88 8.128 2.304 11.072-0.576l7.552-6.976c2.944-2.368 4.672-3.52 7.552-3.52 2.944 0 4.672 4.672 4.672 9.856 0 20.352 7.552 79.744 8.128 92.544 0 2.88-0.576 4.032-2.88 4.672l-6.848 1.792c-1.728 0.576-2.944 0-3.52-1.728-4.672-16.896-12.224-39.616-36.096-64.576-15.68-16.896-36.032-25.024-63.424-25.024-51.776 0-70.4 38.4-70.4 68.096 0 16.256 3.456 35.52 17.984 50.624 16.896 16.896 49.472 29.696 66.368 34.944 40.192 12.8 72.768 22.656 93.696 48.32 15.104 18.048 25.6 40.704 25.6 79.104-0 68.608-41.856 127.424-118.72 127.424z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-iis"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 314,
+ "id": 281,
+ "prevSize": 16,
+ "code": 59664,
+ "name": "it-app-iis"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 16
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z",
+ "M728.832 195.008h-418.624l201.792 140.992z",
+ "M832 170.688l-315.968 221.312-316.032-220.416v348.416h632z",
+ "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM896 584h-760v-480h760v480z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-mailserver"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 315,
+ "id": 280,
+ "prevSize": 16,
+ "code": 59665,
+ "name": "it-app-mailserver"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 17
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z",
+ "M599.744 280.64c-9.664 0-17.664 4.352-24.064 13.184-6.464 8.768-9.6 22.016-9.6 39.872 0 18.432 2.496 32 7.424 40.832 6.976 12.416 16.256 18.688 27.84 18.688 8.896 0 16.448-4.416 22.656-13.312 6.272-8.896 9.344-22.848 9.344-41.92 0-20.288-3.136-34.944-9.408-43.904s-14.4-13.44-24.192-13.44z",
+ "M425.088 280.64c-8.832 0-16.064 3.776-21.76 11.2-5.76 7.488-8.576 17.6-8.448 30.464h60.16c-0.32-13.632-3.328-23.936-9.024-31.040-5.76-7.104-12.736-10.624-20.928-10.624z",
+ "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM297.536 426.304h-44.928l-41.856-183.296-41.664 183.296h-46.016l-50.112-245.184h43.392l31.68 168.384 38.4-168.384h50.432l36.8 171.264 32.192-171.264h42.688l-51.008 245.184zM403.904 383.616c6.208 7.744 13.952 11.648 23.232 11.648 6.272 0 11.584-2.048 15.936-6.016 4.224-4.096 7.488-10.56 9.664-19.456l40.128 7.872c-5.184 17.152-13.312 30.208-24.448 39.232-11.136 8.96-25.024 13.44-41.728 13.44-26.496 0-46.016-10.048-58.752-30.272-10.048-16.192-15.040-36.608-15.040-61.248 0-29.44 6.592-52.48 19.776-69.184s29.824-25.024 49.984-25.024c22.656 0 40.448 8.704 53.568 26.176s19.328 44.16 18.752 80.192h-100.864c0.32 14.016 3.52 24.896 9.792 32.64zM656.128 405.76c-12.352 16.384-27.456 24.576-45.056 24.576-8.704 0-17.28-2.56-25.728-7.616s-15.808-12.544-21.824-22.528v26.112h-37.44v-245.184h40.32v88.32c12.352-16.512 27.136-24.768 44.096-24.768 18.496 0 33.792 7.808 45.952 23.488 12.096 15.68 18.176 38.144 18.176 67.456 0 30.4-6.208 53.76-18.496 70.144zM856.704 393.92c-6.4 11.584-15.552 20.544-27.584 26.944s-25.472 9.6-40.448 9.6c-19.072 0-34.944-3.264-47.808-9.728-12.8-6.464-22.912-16.192-30.272-29.184-7.232-12.992-11.136-27.648-11.52-44.032l26.176-2.688c1.28 12.224 4.096 22.336 8.704 30.208 4.544 7.872 11.584 14.208 21.12 19.072s20.288 7.296 32.256 7.296c10.56 0 19.968-1.856 28.032-5.504s14.208-8.704 18.112-15.104c4.032-6.464 5.952-13.376 5.952-20.992 0-7.68-1.856-14.4-5.696-20.16-3.904-5.76-10.112-10.56-18.944-14.464-5.632-2.56-18.112-6.592-37.376-11.968-19.328-5.376-32.832-10.496-40.576-15.296-9.984-6.144-17.472-13.76-22.464-22.848-4.864-9.088-7.36-19.264-7.36-30.528 0-12.352 3.008-23.936 9.088-34.688 6.016-10.752 14.784-18.944 26.304-24.512 11.584-5.568 24.448-8.384 38.592-8.384 15.552 0 29.312 2.944 41.216 8.768s21.056 14.464 27.456 25.856 9.792 24.256 10.304 38.656l-26.624 2.368c-1.408-15.488-6.336-27.2-14.592-35.136s-20.416-11.904-36.608-11.904c-16.832 0-29.056 3.584-36.736 10.816-7.68 7.168-11.52 15.872-11.52 25.984 0 8.832 2.688 16.064 8.192 21.76 5.312 5.696 19.328 11.52 41.856 17.472s38.080 11.2 46.528 15.616c12.16 6.592 21.248 14.912 27.072 25.024s8.768 21.696 8.768 34.88c0 12.992-3.2 25.28-9.6 36.8zM937.6 426.304h-29.376v-34.304h29.376v34.304zM1019.2 426.304h-29.376v-34.304h29.376v34.304z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-websphere"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 316,
+ "id": 279,
+ "prevSize": 16,
+ "code": 59666,
+ "name": "it-app-websphere"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 18
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 1024c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z",
+ "M450.688 255.616c-14.656 0-27.648 6.848-38.848 20.544s-16.896 33.536-16.896 59.648c0 26.112 5.312 45.376 15.872 57.856s23.36 18.688 38.4 18.688c15.296 0 28.352-6.464 39.232-19.392 10.944-12.928 16.384-32.96 16.384-60.032 0-25.856-5.312-45.184-16-58.048s-23.36-19.264-38.144-19.264z",
+ "M203.2 185.472c-3.584 17.92-8.576 35.776-15.040 53.44l-30.72 82.112h94.912l-29.312-77.44c-8.896-23.552-15.488-42.944-19.84-58.112z",
+ "M624.64 354.112c-5.888 2.56-10.368 6.272-13.568 11.2s-4.736 10.368-4.736 16.32c0 9.216 3.456 16.832 10.368 22.912s17.152 9.152 30.528 9.152c13.248 0 25.024-2.88 35.328-8.704s17.856-13.696 22.72-23.808c3.712-7.744 5.504-19.2 5.504-34.368v-12.544c-12.416 5.12-31.168 9.408-56.128 12.992-14.144 2.048-24.128 4.352-30.016 6.848z",
+ "M896 0h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c0-70.912-57.152-128-128-128zM296.384 436.032l-32.64-84.8h-117.056l-30.72 84.8h-39.36l107.52-280h39.872l114.56 280h-42.176zM528.704 389.184c-7.424 16.576-18.24 29.376-32.448 38.208-14.272 8.832-29.12 13.312-44.8 13.312-11.456 0-21.76-2.432-30.784-7.296-9.152-4.864-16.64-10.944-22.464-18.368v98.688h-34.368v-280.448h31.296v26.368c7.424-10.368 15.68-18.112 25.024-23.232s20.544-7.744 33.792-7.744c17.344 0 32.576 4.48 45.824 13.376s23.232 21.44 30.016 37.696c6.72 16.192 10.112 34.048 10.112 53.376 0 20.736-3.776 39.424-11.2 56.064zM720.512 436.032c-3.584-7.104-5.888-15.488-6.848-25.024-12.736 10.816-25.024 18.496-36.736 22.912-11.84 4.416-24.448 6.656-37.952 6.656-22.272 0-39.36-5.44-51.392-16.32-11.968-10.816-17.984-24.704-17.984-41.664 0-9.92 2.24-19.008 6.784-27.2 4.48-8.192 10.432-14.784 17.728-19.776 7.36-4.928 15.616-8.768 24.768-11.264 6.72-1.792 16.96-3.52 30.592-5.184 27.776-3.328 48.192-7.232 61.312-11.84 0.128-4.736 0.192-7.68 0.192-8.96 0-14.016-3.264-23.872-9.728-29.632-8.768-7.744-21.824-11.648-39.104-11.648-16.192 0-28.096 2.816-35.84 8.512-7.68 5.632-13.376 15.68-17.088 30.080l-33.664-4.544c3.072-14.4 8.064-26.048 15.040-34.88s17.152-15.68 30.4-20.416c13.248-4.736 28.544-7.168 46.080-7.168 17.344 0 31.36 2.048 42.176 6.144 10.816 4.032 18.752 9.216 23.872 15.36 5.056 6.144 8.64 13.952 10.688 23.36 1.152 5.888 1.664 16.448 1.664 31.744v45.824c0 32 0.768 52.16 2.24 60.672 1.408 8.448 4.288 16.576 8.704 24.32h-35.904zM847.744 436.032h-39.168v-39.104h39.168v39.104zM956.352 436.032h-39.168v-39.104h39.168v39.104z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-apache"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 317,
+ "id": 278,
+ "prevSize": 16,
+ "code": 59667,
+ "name": "it-app-apache"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 19
+ },
+ {
+ "icon": {
+ "paths": [
+ "M900.032-3.968h-768c-70.912 0-128 57.088-128 128v768c0 70.848 57.088 128 128 128h417.984l478.016-480v-416c-0-70.912-57.152-128-128-128zM361.152 403.136c0 40.256-4.864 71.424-14.592 93.504s-25.152 38.976-46.272 50.56c-21.12 11.52-45.888 17.344-74.304 17.344-42.24 0-74.56-12.096-96.96-36.352-22.464-24.32-33.216-60.416-32.32-108.288l57.408-7.872c1.536 36.736 8.448 61.888 20.672 75.456s29.248 20.352 50.88 20.352c16 0 29.76-3.712 41.344-11.008s19.584-17.28 23.936-29.824c4.352-12.608 6.528-32.704 6.528-60.288v-331.328h63.68v327.744zM811.52 479.744c-9.472 19.392-21.248 34.304-35.264 44.8s-31.552 18.432-52.672 23.744c-21.12 5.376-46.912 8.064-77.568 8.064h-183.424v-480.96h180.416c36.736 0 66.24 4.864 88.448 14.592s39.616 24.704 52.16 44.928c12.544 20.224 18.88 41.408 18.88 63.488 0 20.544-5.568 39.936-16.768 58.048-11.136 18.176-28.032 32.832-50.496 43.968 29.056 8.512 51.456 23.104 67.072 43.648s23.424 44.864 23.424 72.832c0 22.592-4.736 43.52-14.208 62.848z",
+ "M707.84 342.272c-16.32-5.312-39.744-8-70.4-8h-111.232v165.376h119.808c20.544 0 35.008-0.768 43.328-2.304 14.656-2.624 26.88-6.976 36.736-13.12 9.792-6.144 17.856-15.040 24.256-26.752s9.472-25.216 9.472-40.512c0-17.92-4.544-33.536-13.76-46.784-9.152-13.248-21.952-22.528-38.208-27.904z",
+ "M690.944 271.936c16.192-4.8 28.352-12.8 36.544-24s12.288-25.152 12.288-41.984c0-15.936-3.84-30.016-11.52-42.176-7.616-12.096-18.56-20.416-32.832-24.96-14.208-4.48-38.592-6.72-73.152-6.72h-96.064v145.344h104c28.224 0 48.448-1.792 60.736-5.504z",
+ "M900.032 1020.032c70.848 0 128-57.152 128-128v-252.032l-379.968 380.032h251.968z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-jboss"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 318,
+ "id": 277,
+ "prevSize": 16,
+ "code": 59668,
+ "name": "it-app-jboss"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 20
+ },
+ {
+ "icon": {
+ "paths": [
+ "M399.965 340.713h-172.125l-227.84 387.398 88.343 2.56 51.293-100.119h223.139l41.053 99.98h182.132l-185.996-389.818zM173.009 561.385l82.060-138.612 73.123 138.519-155.183 0.093z",
+ "M590.988 426.636l100.119-44.87h29.51v343.692h-85.876v-243.665h-42.356z",
+ "M970.799 381.766h-150.388c-28.207 0-51.153 22.854-51.153 51.107v241.478c0 28.253 22.9 51.153 51.153 51.153h150.388c28.207 0 51.153-22.854 51.153-51.153v-241.524c0-28.207-22.854-51.060-51.153-51.060zM941.196 635.718c0 24.716-20.154 44.87-44.87 44.87-24.762 0-44.916-20.154-44.916-44.87v-161.652c0-24.809 20.154-44.87 44.916-44.87 24.716 0 44.87 20.061 44.87 44.87v161.652z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(24, 49, 109)"
+ },
+ {
+ "fill": "rgb(24, 49, 109)"
+ },
+ {
+ "fill": "rgb(24, 49, 109)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-a10bala"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 0,
+ 0,
+ 0
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(24, 49, 109)"
+ },
+ {
+ "fill": "rgb(24, 49, 109)"
+ },
+ {
+ "fill": "rgb(24, 49, 109)"
+ }
+ ],
+ "properties": {
+ "order": 319,
+ "id": 276,
+ "prevSize": 16,
+ "code": 59669,
+ "name": "it-other-a10bala"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 21
+ },
+ {
+ "icon": {
+ "paths": [
+ "M176.567 573.586c11.703-14.263 27.721-67.584 27.721-67.584v-92.745l-103.424-9.874-100.864 10.898v92.745c0 0 15.945 53.321 27.794 67.803 39.058 48.421 53.979 63.415 73.070 83.017h1.463v-1.097h1.317c18.798-19.529 33.792-34.45 72.923-83.163zM103.131 617.179h-1.024v0.878h-1.024c-14.775-15.36-26.478-16.311-57.198-54.199-9.143-11.557-21.723-53.248-21.723-53.248v-72.485l78.921-8.631 80.896 7.826v72.485c0 0-12.434 41.618-21.577 52.882-30.72 38.181-42.423 39.205-57.271 54.491z",
+ "M166.4 454.144l-65.097-6.217-63.415 6.875v58.368c0 0 10.021 33.499 17.481 42.642 24.576 30.574 34.085 31.451 45.934 43.593h0.878v-0.731h0.878c11.776-12.069 21.285-12.946 45.934-43.52 7.461-8.997 17.408-42.642 17.408-42.642v-58.368z",
+ "M901.12 498.395c67.584 0 122.441-22.455 122.441-50.395 0-0.293 0-0.512 0-0.805 0-0.146 0-0.585 0-0.805-1.682-27.209-56.027-48.933-122.441-48.933-67.438 0.146-122.295 22.747-122.295 50.542 0 27.867 54.857 50.395 122.295 50.395z",
+ "M901.632 509.806c-67.511 0-122.368-22.601-122.368-50.395 0-1.682-0.731-6.949-0.878-10.167v31.525c0.439 4.754 0.878 9.874 0.878 12.142 0 27.794 54.857 50.469 122.368 50.469 67.584 0 122.368-22.674 122.368-50.469v-33.573c0 27.867-54.784 50.469-122.368 50.469z",
+ "M901.632 558.738c-67.511 0-122.368-22.747-122.368-50.395 0-1.609-0.731-6.583-0.878-9.655v29.403c0.439 4.827 0.878 9.874 0.878 12.069 0 28.087 54.857 50.542 122.368 50.542 67.584-0.146 122.368-22.528 122.368-50.688v-31.817c0 27.794-54.784 50.542-122.368 50.542z",
+ "M901.632 605.842c-67.511 0-122.368-22.455-122.368-50.395 0-1.536-0.731-6.583-0.878-9.728v31.013c0.146 1.024 0.439 2.267 0.439 2.999 0 28.014 54.857 50.395 122.295 50.395 67.584 0 122.441-22.601 122.441-50.395 0-0.731 0.219-1.975 0.439-2.999v-21.285c0 27.867-54.784 50.395-122.368 50.395z",
+ "M623.835 37.522c0-20.699-17.701-37.376-39.57-37.376h-94.427c-21.87-0.073-39.643 16.677-39.643 37.376v54.711h173.568l0.073-54.711z",
+ "M450.267 247.369c0 20.626 17.701 37.376 39.57 37.376h94.501c21.943 0 39.57-16.75 39.57-37.376v-136.411h-173.641v136.411zM537.015 194.341c8.85 0 16.018 6.729 16.018 15.067s-7.168 14.994-16.018 14.994c-8.704 0-15.872-6.802-15.872-15.067s7.022-14.994 15.872-14.994z",
+ "M669.769 858.258c0 10.018-56.62 18.139-126.464 18.139s-126.464-8.121-126.464-18.139c0-10.018 56.62-18.139 126.464-18.139s126.464 8.121 126.464 18.139z",
+ "M418.67 874.496v121.051c0 0 27.721 28.306 128.512 28.453 106.423 0 122.661-28.453 122.661-28.453v-121.051c0 0-68.608 11.849-124.343 11.849-66.487 0.073-126.83-11.849-126.83-11.849zM501.979 965.559v0h-16.018v16.238l-25.673-24.43 25.673-23.771v16.165h16.018v15.799zM540.745 1009.737l-25.746-24.283h16.969v-15.141h16.896v15.141h16.969l-25.088 24.283zM578.926 949.687h16.018v-16.165l25.673 23.845-25.673 24.283v-16.165h-16.018v-15.799zM548.864 930.158v15.067h-16.969v-15.067h-16.969l25.673-24.357 25.234 24.357h-16.969z",
+ "M382.025 154.697l-23.406-53.687c-18.139 7.973-35.621 16.896-52.224 26.99l30.208 50.103c14.482-8.777 29.623-16.603 45.422-23.406z",
+ "M281.819 217.673l-38.181-44.325c-19.529 16.823-37.742 35.401-54.199 55.296l45.056 37.303c14.409-17.408 30.354-33.646 47.323-48.274z",
+ "M196.096 321.829l-50.761-29.111c-9.655 16.969-18.286 34.597-25.746 52.663l54.053 22.309c6.51-15.653 13.97-31.086 22.455-45.861z",
+ "M909.897 367.689l54.126-22.309c-7.607-18.359-16.091-35.986-25.746-52.736l-50.688 29.038c8.411 14.702 15.799 30.062 22.309 46.007z",
+ "M893.294 227.328c-16.823-20.334-35.547-39.351-55.808-56.466l-37.888 44.544c17.481 14.994 33.865 31.525 48.494 49.225l45.202-37.303z",
+ "M697.125 152.357c15.799 6.656 31.013 14.263 45.641 22.894l29.55-50.469c-16.75-9.801-34.304-18.578-52.37-26.258l-22.821 53.833z",
+ "M697.051 885.102l22.967 53.833c18.139-7.753 35.547-16.53 52.297-26.112l-29.257-50.688c-14.702 8.411-29.989 16.165-46.007 22.967z",
+ "M798.354 823.15l37.595 44.837c19.749-16.603 38.181-34.962 54.93-54.711l-44.544-37.888c-14.702 17.335-30.866 33.426-47.982 47.762z",
+ "M885.321 720.018l50.542 29.403c9.801-16.75 18.505-34.231 26.185-52.224l-53.833-22.967c-6.656 15.726-14.19 31.013-22.894 45.787z",
+ "M175.543 674.231l-53.76 22.967c7.753 18.139 16.53 35.547 26.112 52.224l50.615-29.257c-8.485-14.629-16.165-30.062-22.967-45.934z",
+ "M191.561 811.593c16.018 19.383 33.938 37.595 53.321 54.053l38.034-44.398c-16.823-14.409-32.402-30.208-46.299-46.958l-45.056 37.303z",
+ "M306.542 910.19c16.75 10.094 34.231 19.090 52.005 26.843l23.406-53.541c-15.506-6.802-30.72-14.629-45.422-23.406l-29.989 50.103z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "NFV"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 320,
+ "id": 275,
+ "prevSize": 16,
+ "code": 59670,
+ "name": "NFV"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 22
+ },
+ {
+ "icon": {
+ "paths": [
+ "M785.481 880.786h-555.081l92.306-294.766h203.703v-73.143h-257.39l-78.921 252.050-102.619-420.937v-63.561h225.134l81.993 85.797h247.589v-73.143h-216.283l-81.993-85.797h-329.582v141.093l146.578 605.55h655.872l100.718-105.399-52.882-50.615z",
+ "M1020.050 696.393c-13.239-39.936-56.466-61.952-96.768-48.64-28.965 9.655-47.909 34.816-51.639 63.195l-264.558-0.293c-0.731-4.169-1.609-8.265-2.853-12.288-4.096-12.142-10.971-22.235-19.383-30.501l160.841-265.874c16.018 5.998 33.938 7.168 51.273 1.39 40.155-13.312 61.879-56.686 48.494-96.914-13.312-40.155-56.539-61.952-96.768-48.64-40.082 13.312-61.806 56.686-48.567 96.841 3.73 11.118 9.801 20.846 17.554 28.745l-161.573 266.606c-15.287-5.266-32.037-5.998-48.64-0.585-40.155 13.312-61.952 56.613-48.64 96.768 13.312 40.302 56.613 62.025 96.841 48.64 24.576-8.119 42.13-27.502 49.152-50.469l269.824 0.219c13.312 40.155 56.686 61.879 96.695 48.567 40.302-13.385 62.025-56.686 48.713-96.768z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "VNFM"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 321,
+ "id": 274,
+ "prevSize": 16,
+ "code": 59671,
+ "name": "VNFM"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 23
+ },
+ {
+ "icon": {
+ "paths": [
+ "M706.267 645.632c-29.989 0-55.589 17.627-67.73 42.935l-246.93-81.993c0.805-4.023 1.317-8.119 1.317-12.507 0-12.361-3.365-24.064-8.631-34.523l232.448-198.29c13.166 10.533 29.403 17.042 47.25 17.042 41.545 0 75.41-33.719 75.41-75.337 0-41.545-33.865-75.264-75.41-75.264-41.618 0-75.337 33.719-75.337 75.337 0 11.63 2.779 22.455 7.534 32.256l-233.253 198.949c-12.654-9.728-28.233-15.579-45.275-15.579-41.691 0-75.41 33.646-75.41 75.264 0 41.691 33.719 75.264 75.41 75.264 25.454 0 47.835-12.434 61.513-31.89l251.831 83.749c0 41.618 33.719 75.264 75.264 75.264 41.691 0 75.557-33.646 75.557-75.264-0.073-41.618-33.792-75.41-75.557-75.41z",
+ "M512 0c-282.258 0-512 229.742-512 512 0 282.331 229.742 512 512 512 282.331 0 512-229.669 512-512 0-282.258-229.669-512-512-512zM512 950.857c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857 438.857 196.827 438.857 438.857-196.827 438.857-438.857 438.857z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "VNF"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 322,
+ "id": 273,
+ "prevSize": 16,
+ "code": 59672,
+ "name": "VNF"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 24
+ },
+ {
+ "icon": {
+ "paths": [
+ "M536.869 599.698c-24.21 0-44.763 14.19-54.638 34.597l-198.729-66.048c0.585-3.218 1.024-6.583 1.024-10.094 0-9.947-2.706-19.383-6.949-27.721l187.246-159.671c10.533 8.485 23.625 13.751 38.034 13.751 33.499 0 60.709-27.209 60.709-60.709s-27.209-60.709-60.709-60.709-60.709 27.282-60.709 60.782c0 9.362 2.194 18.066 5.998 25.966l-187.831 160.183c-10.167-7.826-22.674-12.581-36.425-12.581-33.499 0-60.709 27.136-60.709 60.635s27.209 60.635 60.709 60.635c20.48 0 38.546-10.021 49.518-25.673l202.752 67.365c0 33.573 27.209 60.635 60.709 60.635s60.782-27.063 60.782-60.635c-0.073-33.499-27.209-60.709-60.782-60.709z",
+ "M1024 360.594l-192.073-99.547-192.146 99.547 192.146 99.621 192.073-99.621zM831.927 299.666l117.321 60.928-117.321 60.928-117.467-60.928 117.467-60.928z",
+ "M831.927 551.278l-105.253-54.638h-74.679l179.931 93.33 179.931-93.33h-74.679z",
+ "M831.927 681.106l-105.253-54.784h-74.679l179.931 93.403 179.931-93.403h-74.679z",
+ "M821.394 822.857c-79.36 79.067-188.782 128-309.394 128-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857c97.792 0 187.904 32.549 260.974 86.894h109.861c-93.33-98.304-224.914-160.037-370.834-160.037-282.331 0-512 229.669-512 512 0 282.258 229.669 512 512 512 165.376 0 312.247-79.141 405.87-201.143h-96.475z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "VNFC"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 323,
+ "id": 272,
+ "prevSize": 16,
+ "code": 59673,
+ "name": "VNFC"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 25
+ },
+ {
+ "icon": {
+ "paths": [
+ "M992.11 634.734l-49.591-20.773c1.097-10.167 3.072-19.968 3.072-30.354 0-10.459-1.829-20.041-3.072-30.135l49.737-20.919c26.917-11.337 39.058-44.178 27.063-73.509l-14.994-36.571c-11.922-29.403-43.447-43.959-70.363-32.549l-49.591 20.773c-9.582-12.361-20.261-23.845-32.11-34.377l22.894-49.079c12.361-26.697-0.366-59.246-28.745-72.85l-35.401-16.75c-28.16-13.531-61.147-2.926-73.435 23.771l-4.169 8.85h-122.88l-4.169-8.923c-12.434-26.697-45.349-37.303-73.509-23.771l-35.401 16.823c-8.046 3.877-14.409 9.435-19.749 15.799h-69.266l-81.993-85.797h-329.655v141.166l146.578 605.623h394.24c14.043 5.339 28.599 5.12 41.253 0h186.149c14.117 5.705 30.647 6.071 46.007-1.317l35.328-17.115c25.088-11.776 36.864-38.546 30.939-63.049l22.821-23.845-42.423-40.594c9.509-9.070 18.578-18.432 26.77-28.745l49.371 20.919c26.917 11.191 58.514-3.218 70.437-32.622l14.994-36.498c12.142-29.55-0.219-62.098-27.136-73.582zM400.384 563.127c-0.951 6.729-2.048 13.458-2.048 20.48 0 10.459 1.975 20.187 3.072 30.501l-49.664 20.773c-26.917 11.337-39.131 43.886-27.136 73.435l15.141 36.498c11.849 29.403 43.447 43.886 70.29 32.622l49.371-20.626c9.728 12.288 20.48 23.698 32.037 34.231l-22.821 49.079c-2.706 5.778-3.657 11.849-4.096 17.92h-251.611l92.306-294.912h95.159zM841.070 583.753c0 94.574-75.776 171.593-169.033 171.593-93.477 0-169.179-77.019-169.179-171.593 0-7.095 1.243-13.824 2.048-20.699h4.096v-22.674c19.017-73.801 84.48-128.366 163.109-128.366 93.184 0 168.96 76.727 168.96 171.739zM715.118 857.966h-10.094c3.218-0.512 6.583-0.512 9.728-1.024l0.366 1.024zM638.683 857.966h-10.094l0.512-1.024c3.145 0.585 6.437 0.585 9.582 1.024zM69.925 257.536h225.207l81.993 85.797h99.035l15.287 32.914c-11.703 10.533-22.382 22.016-32.11 34.377l-49.445-20.699c-26.843-11.337-58.368 3.145-70.217 32.549l-15.067 36.571c-4.242 10.313-4.535 20.846-3.145 30.939h-69.998l-78.921 252.197-102.619-421.010v-63.634z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "VIM"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 324,
+ "id": 271,
+ "prevSize": 16,
+ "code": 59674,
+ "name": "VIM"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 26
+ },
+ {
+ "icon": {
+ "paths": [
+ "M153.161 185.125h315.465v73.143h-315.465v-73.143z",
+ "M153.161 331.41h315.465v73.143h-315.465v-73.143z",
+ "M360.009 572.562c0 27.146-22.006 49.152-49.152 49.152s-49.152-22.006-49.152-49.152c0-27.146 22.006-49.152 49.152-49.152s49.152 22.006 49.152 49.152z",
+ "M429.714 779.849h-237.714c-15.799 0-28.599 16.384-28.599 36.571s12.8 36.571 28.599 36.571h237.714c15.799 0 28.599-16.384 28.599-36.571s-12.8-36.571-28.599-36.571z",
+ "M951.589 841.143h-38.034c-40.009 0-72.411 32.402-72.411 72.485v12.288h-103.424v-377.929h104.96c5.705 34.304 34.158 60.928 70.071 60.928h38.034c40.009 0 72.411-32.402 72.411-72.411v-38.034c0-40.009-32.402-72.485-72.411-72.485h-38.034c-40.009 0-72.411 32.402-72.411 72.485v12.873h-102.546v-386.999h105.179c6.363 33.499 34.45 59.392 69.778 59.392h38.034c40.009 0 72.411-32.402 72.411-72.485v-37.961c0-40.009-32.402-72.485-72.411-72.485h-38.034c-40.009 0-72.411 32.402-72.411 72.485v14.482h-119.369v0.219h-19.822v423.424h-79.433v-406.894c0-57.637-45.568-104.521-101.669-104.521h-418.45c-56.027 0-101.595 46.885-101.595 104.521v815.031c0 57.563 45.568 104.448 101.595 104.448h418.45c56.101 0 101.669-46.885 101.669-104.521v-371.566h79.433v414.354h19.822v0.219h122.368c5.413 34.597 34.085 61.513 70.217 61.513h38.034c40.009 0 72.411-32.402 72.411-72.411v-37.961c0-40.082-32.402-72.485-72.411-72.485zM548.571 919.479c0 17.335-12.8 31.378-28.526 31.378h-418.45c-15.726 0-28.453-14.043-28.453-31.378v-814.958c0-17.335 12.727-31.378 28.453-31.378h418.45c15.726 0 28.526 14.043 28.526 31.378v814.958z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "VDU"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 325,
+ "id": 270,
+ "prevSize": 16,
+ "code": 59675,
+ "name": "VDU"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 27
+ },
+ {
+ "icon": {
+ "paths": [
+ "M336.238 185.125h315.465v73.143h-315.465v-73.143z",
+ "M703.122 0h-418.45c-56.027 0-101.595 46.885-101.595 104.521v815.031c0 57.563 45.568 104.448 101.595 104.448h418.523c56.101 0 101.669-46.885 101.669-104.521v-814.958c-0.073-57.637-45.641-104.521-101.742-104.521zM731.648 919.479c0 17.262-12.8 31.378-28.526 31.378h-418.45c-15.653 0-28.453-14.043-28.453-31.378v-814.958c0-17.335 12.727-31.378 28.453-31.378h418.523c15.726 0 28.526 14.043 28.526 31.378v814.958z",
+ "M336.238 331.41h315.465v73.143h-315.465v-73.143z",
+ "M543.086 572.562c0 27.146-22.006 49.152-49.152 49.152s-49.152-22.006-49.152-49.152c0-27.146 22.006-49.152 49.152-49.152s49.152 22.006 49.152 49.152z",
+ "M612.791 779.849h-237.714c-15.799 0-28.599 16.384-28.599 36.571s12.8 36.571 28.599 36.571h237.714c15.799 0 28.599-16.384 28.599-36.571s-12.8-36.571-28.599-36.571z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "host"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 326,
+ "id": 269,
+ "prevSize": 16,
+ "code": 59676,
+ "name": "host"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 28
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.331 0-512 229.669-512 512 0 239.031 164.864 439.808 386.779 495.835 0.366 0.585 1.097 1.536 1.317 1.755l1.463-1.097c39.278 9.801 80.165 15.506 122.441 15.506 282.258 0 512-229.742 512-512 0-282.331-229.742-512-512-512zM469.358 888.832c-11.995-14.775-29.477-24.869-49.957-24.869-15.799 0-29.769 6.363-41.106 15.726-3.145-6.29-6.363-12.434-9.582-19.237 43.081-19.383 92.891-47.982 145.701-90.478 8.631 4.242 18.066 7.168 28.379 7.168 24.576 0 45.129-14.117 56.247-34.158 135.753-12.507 248.174-65.024 320.366-108.617 4.315 1.17 8.485 2.341 13.093 2.633-5.047 16.969-11.045 33.499-18.066 49.591-56.174 36.279-192.366 123.026-242.249 143.579-53.029 21.87-143.726 44.837-202.825 58.661zM82.798 420.937l4.974 5.705c0.878-0.805 64.219-52.955 183.735-90.77-17.554 46.226-30.574 95.232-35.474 145.92-3.291 34.597-3.584 68.315-1.682 101.083-1.463 0.805-2.779 1.829-4.169 2.779-70.949-47.909-123.904-101.083-152.503-133.047 1.463-10.679 2.926-21.358 5.12-31.671zM512 73.143c77.019 0 149.358 20.041 212.261 55.003-1.536 26.551-4.901 67.218-11.41 115.054-6.29 3.365-12.142 7.314-16.969 12.434-62.757-11.63-133.12-18.871-207.506-16.018-36.059 1.463-69.851 4.681-101.449 9.289-1.243-2.341-2.926-4.389-4.389-6.51 45.787-76.507 97.719-136.777 128-169.179 0.512 0 0.951-0.073 1.463-0.073zM934.107 393.435c10.533 37.303 16.53 76.434 16.677 116.955-4.901-1.17-9.582-2.926-14.775-2.926-35.986 0-65.17 29.111-65.17 65.17 0 7.022 1.902 13.531 4.023 19.822-64.585 37.23-158.427 78.921-268.873 91.355 2.56-2.926 5.193-5.413 7.826-8.338 72.119-80.603 113.737-201.509 137.801-312.174 16.969-2.267 31.525-10.679 41.691-23.406 81.774 24.503 135.241 50.761 140.8 53.541zM292.791 577.682c-1.682-29.403-1.463-59.538 1.463-90.331 4.754-49.591 18.651-97.719 37.157-143.141 24.795-0.512 45.714-14.994 56.247-35.694 32.037-4.974 65.975-8.923 102.985-10.386 67.365-2.56 131.877 4.096 190.098 14.775 2.414 11.703 7.095 22.382 14.921 30.866-22.016 104.96-59.977 219.502-125.44 292.718-4.242 4.681-8.411 8.777-12.654 13.385-4.827-1.243-9.509-2.999-14.702-2.999-25.893 0-47.762 15.36-58.295 37.23-54.857-5.851-106.203-20.992-152.942-41.765 0.146-1.536 0.951-2.926 0.951-4.608-0-26.99-16.384-50.176-39.79-60.050zM457.435 739.767c-40.667 30.208-78.775 51.566-112.128 66.633-13.019-32.841-25.088-69.413-34.523-108.91 45.056 19.602 94.062 34.67 146.651 42.277zM904.119 316.123c-25.893-10.533-59.611-22.747-99.401-34.45-5.12-17.262-16.603-31.305-32.329-39.278 3.803-28.891 6.363-54.93 8.119-76.873 51.712 40.229 94.062 91.648 123.611 150.601zM424.594 81.92c-29.038 34.889-62.683 79.872-93.915 132.389-0.146 0-0.293-0.146-0.439-0.146-34.962 0-62.83 27.575-64.512 62.098-69.632 20.773-122.88 45.861-158.72 66.926 55.369-132.389 173.787-232.082 317.586-261.266zM74.24 534.162c32.475 31.89 75.703 69.339 128.146 104.082 0.219 29.842 20.919 53.906 48.494 61.221 10.386 46.811 24.283 89.893 39.497 128.146-37.595 11.849-61.879 14.263-66.414 14.629-86.967-75.922-143.506-185.417-149.723-308.078zM288.987 889.271c7.68-2.048 15.945-4.535 24.722-7.387 4.608 9.728 9.216 18.944 13.751 27.721-13.239-6.144-26.039-12.873-38.473-20.334zM512 950.857c-10.679 0-21.065-0.878-31.525-1.536 0.366-1.024 0.366-2.048 0.658-3.072 60.709-14.19 155.648-38.107 213.504-62.098 31.086-12.873 89.6-47.177 144.896-81.115-80.384 90.478-197.266 147.822-327.534 147.822z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "NS"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 327,
+ "id": 268,
+ "prevSize": 16,
+ "code": 59677,
+ "name": "NS"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 29
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 0v80h268v324h140v92h-208v-346h-286v874h286v-388h208v34h286v-520h-286v172h-80v-322zM580 0v80h264v590h60v-670zM690 738.578c-34.861 0.001-62.608 12.688-84 38s-32 60.25-32 106c-0 43.25 10.721 77.061 32 102s48.95 38 82 38c26.711 0 48.626-7.439 66-22s28.53-36 36-66l-48-18c-4.188 20.125-12.379 34.624-22 44-9.621 9.356-20.644 14-34 14-18.11 0-32.682-7.25-44-22s-16-39.25-16-74c-0-32.75 4.512-55.375 16-70s27.551-21.999 46-22c13.356 0.001 24.662 3.75 34 12s15.057 19.75 18 34l50-14c-5.66-21.999-14.682-38.249-26-50-19.015-19.875-43.553-29.999-74-30zM920 738.578c-19.128 0.001-34.474 3.624-48 10s-24.813 15.812-32 28c-7.187 12.188-10 24-10 38 0 21.75 6.72 40.875 22 56 10.866 10.75 31.062 20.625 58 28 20.939 5.751 34.114 9.747 40 12 8.602 3.375 14.548 7.44 18 12 3.452 4.563 6 9.503 6 16-0 10.125-5.795 18.434-14 26-8.206 7.573-19.815 12-36 12-15.28 0-27.002-5.499-36-14-8.998-8.497-15.057-21.875-18-40l-50 6c3.283 30.75 15.135 53.939 32 70 16.865 16.068 40.535 24 72 24 21.618 0 39.512-3.341 54-10 14.487-6.685 26.077-16.253 34-30s12-28.25 12-44c-0-17.375-3.379-32.188-10-44s-16.286-21.187-28-28c-11.715-6.813-29.552-13.624-54-20-24.448-6.374-39.662-12.122-46-18-4.98-4.625-8-11.496-8-18-0-7.125 2.68-11.749 8-16 8.262-6.622 19.399-10 34-10 14.148 0 24.926 3.812 32 10s11.85 15.875 14 30l50-2c-0.792-25.25-8.211-46.874-24-62-15.789-15.124-40.761-21.999-72-22zM324 742.578l90 276h54l88-276h-52l-62 204-62-204z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-cluster-vcs"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 328,
+ "id": 267,
+ "prevSize": 16,
+ "code": 59678,
+ "name": "it-cluster-vcs"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 30
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106h-832zM76 74h872v420h-872v-420zM128 148v132h338v-132h-338zM546 148v132h338v-132h-338zM126 326v130h338v-130h-338zM546 326v130h338v-130h-338zM68 616v322h244v-54h-180v-88h162v-54h-162v-72h174v-54h-238zM334 616l116 322h68l116-322h-70l-78 238-82-238h-70zM758 616l-124 322h68l28-74h128l28 74h70l-128-322h-70zM792 692l44 118h-86l42-118z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-hpeva"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 329,
+ "id": 266,
+ "prevSize": 16,
+ "code": 59679,
+ "name": "it-diskraid-hpeva"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 31
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM142 625.254v56h142l-160 220v62h246v-58h-172l166-228v-52zM388 625.254v56h90v282h62v-282h90v-56zM670 625.254v338h230v-58h-170v-92h152v-56h-152v-76h164v-56z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-zte"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 330,
+ "id": 265,
+ "prevSize": 16,
+ "code": 59680,
+ "name": "it-diskraid-zte"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 32
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM768 480c-39.586 0-71.709 16.469-96 46s-36 70.625-36 124c-0 50.458 11.837 88.906 36 118s56.47 44 94 44c30.332 0 54.271-7.010 74-24s33.517-43 42-78l-54-20c-4.756 23.479-13.076 39.063-24 50s-24.834 18-40 18c-20.564 0-37.148-8.792-50-26s-18-47.458-18-88c-0-38.208 4.955-64.937 18-82s31.050-26 52-26c15.166 0 27.396 4.375 38 14s18.658 23.375 22 40l56-16c-6.427-25.666-17.148-44.291-30-58-21.593-23.187-49.427-36-84-36zM142 486v322h56v-142h112v142h58v-322h-58v126h-112v-126h-56zM504 486c-15.552 0-29.469 3.365-42 10s-22.995 14.407-30 26c-7.005 11.594-12.53 26.604-16 46l50 10c1.414-14 5.445-24.708 12-32s14.746-10 24-10c9.382 0 16.345 3.584 22 10s10 15.209 10 26c-0 12.688-4.289 22.344-12 30s-19.348 10.438-34 10l-6 50c9.639-3.062 19.060-4 26-4 10.539 0 18.674 4.959 26 14s10 20.542 10 36c-0 16.333-2.353 30.375-10 40s-16.818 14-28 14c-10.411 0-20.674-3.979-28-12s-10.329-20.833-12-36l-54 8c2.699 26.979 13.163 49.302 30 66s38.423 24 64 24c26.99 0 49.878-10.167 68-30s26-43.854 26-72c-0-19.396-4.297-34.292-14-48s-21.806-24.062-38-28c27.119-16.771 40-37.854 40-66-0-19.833-6.762-38.25-20-54-16.066-19.25-37.395-28-64-28z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-h3c"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 331,
+ "id": 264,
+ "prevSize": 16,
+ "code": 59681,
+ "name": "it-firewall-h3c"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 33
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM92 88h72v408h-72v-408zM232 88h142c28.247 0.001 50.12 1.312 64 4s27.042 7.469 38 16c10.958 8.532 18.694 19.812 26 34 7.305 14.189 12 30.381 12 48-0 19.103-4.99 36.050-14 52s-20.578 28.025-36 36c21.753 7.233 38.311 20.566 50 38s16 36.445 16 60c-0 18.547-2.451 36.473-10 54s-18.932 31.521-32 42c-13.069 10.479-28.844 17.589-48 20-12.013 1.484-40.058 3.624-86 4h-122v-408zM592 88h108l64 278 64-278h108v408h-68v-322l-70 322h-70l-70-322v322h-66v-408zM304 156v94h48c28.085 0.001 45.181-1.090 52-2 12.338-1.669 20.938-5.934 28-14 7.062-8.068 12-18.832 12-32-0-12.612-3.912-24.117-10-32s-13.987-12.331-26-14c-7.143-0.93-28.071 0-62 0h-42zM304 318v108h66c25.974 0 43.019-0.331 50-2 10.714-2.223 19.263-7.375 26-16s10-21.534 10-36c-0-12.241-2.805-21.468-8-30s-12.179-14.105-22-18c-9.822-3.892-31.207-6-64-6h-58zM396 594v274h94c35.375-0.256 56.75-0.976 66-2 14.75-1.626 27.937-4.941 38-12 10.062-7.066 18.187-16.186 24-28s8-25.501 8-38c-0-15.878-3-28.25-12-40s-23.25-21.136-40-26c11.875-5.37 21.062-13.248 28-24 6.937-10.746 12-23.123 12-36-0-11.872-4.375-22.438-10-32s-11.563-16.24-20-22c-8.438-5.779-19.313-10.208-30-12s-26.25-2-48-2h-110zM452 640h32c26.125 0 42.5-0.64 48 0 9.25 1.126 15.312 4.688 20 10s8 11.494 8 20c-0 8.87-2.563 16.56-8 22-5.438 5.427-14.5 8.848-24 10-5.25 0.96-18.375 0-40 0h-36v-62zM452 748h44c25.25 0 42.437 1.376 50 4s14 8.24 18 14c4 5.754 6 11.75 6 20-0 9.754-2.813 18.176-8 24-5.188 5.786-11.75 8.464-20 10-5.375 1.024-18 2-38 2h-52v-74zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-ibm-blade"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 332,
+ "id": 263,
+ "prevSize": 16,
+ "code": 59682,
+ "name": "it-other-ibm-blade"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 34
+ },
+ {
+ "icon": {
+ "paths": [
+ "M887.994 0h-751.988c-75.59 0-136.006 60.416-136.006 136.006v751.988c0 75.543 60.416 136.006 136.006 136.006h751.988c75.543 0 136.006-60.463 136.006-136.006v-751.988c0-75.59-60.463-136.006-136.006-136.006zM405.923 688.454c-12.567 19.363-30.627 34.49-54.179 45.242-23.505 10.799-49.99 16.198-79.453 16.198-37.329 0-68.608-5.399-93.836-16.337-25.228-10.845-45.009-27.183-59.299-49.059-14.383-21.876-21.923-46.545-22.668-74.147l51.433-4.515c2.467 20.62 8.099 37.609 16.989 50.781 8.89 13.219 22.761 23.924 41.519 32.023 18.758 8.192 39.843 12.288 63.302 12.288 20.806 0 39.191-3.072 55.11-9.309 15.919-6.144 27.788-14.615 35.607-25.46 7.773-10.705 11.636-22.528 11.636-35.328 0-12.847-3.77-24.204-11.264-33.885-7.494-9.635-19.875-17.734-37.097-24.297-11.078-4.329-35.561-10.985-73.402-20.154-37.888-9.030-64.419-17.687-79.593-25.693-19.689-10.38-34.397-23.133-44.032-38.447-9.635-15.267-14.476-32.349-14.476-51.293 0-20.806 5.911-40.262 17.687-58.368 11.823-18.060 29.091-31.837 51.759-41.193 22.807-9.309 48.035-14.010 75.776-14.010 30.58 0 57.53 4.934 80.849 14.755 23.366 9.868 41.286 24.343 53.853 43.473s19.316 40.774 20.247 64.977l-52.317 3.956c-2.839-26.065-12.335-45.754-28.579-59.066-16.198-13.359-40.122-20.015-71.82-20.015-33.001 0-57.065 6.051-72.145 18.153s-22.621 26.671-22.621 43.753c0 14.801 5.353 26.996 16.012 36.538 10.519 9.588 37.888 19.409 82.292 29.417 44.311 10.054 74.752 18.851 91.229 26.298 24.017 10.985 41.705 25.088 53.155 41.984 11.45 16.989 17.129 36.538 17.129 58.647 0.047 22.016-6.237 42.636-18.804 62.092zM852.294 379.159h-223.651v127.674h193.489v48.64h-193.489v187.345h-54.505v-412.3h278.156v48.64z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(96, 140, 193)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-secfox"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 3
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(96, 140, 193)"
+ }
+ ],
+ "properties": {
+ "order": 333,
+ "id": 262,
+ "prevSize": 16,
+ "code": 59683,
+ "name": "it-other-secfox"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 35
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM322 274c50.426 0 88.513 12.744 114 38 25.487 25.257 38.721 59.837 40 102l-80 4c-3.472-23.586-10.581-41.667-22-52-11.419-10.332-29.162-13.999-52-14-23.569 0.001-42.663 4.94-56 16-8.587 7.097-12 16.103-12 28-0 10.854 3.961 20.277 12 28 10.231 9.811 34.536 19.355 74 30 39.464 10.646 69.090 22.624 88 34s33.312 26.275 44 46c10.688 19.725 16 44.986 16 74-0 26.3-7.211 51.039-20 74s-30.614 38.833-54 50c-23.386 11.167-51.104 18-86 18-50.792 0-90.777-13.178-118-40s-42.702-66.652-48-118l78-8c4.75 30.266 15.475 51.806 30 66s33.335 22.001 58 22c26.126 0.001 46.754-7.372 60-20s20-27.092 20-44c-0-10.853-4.428-20.382-10-28s-14.115-14.364-28-20c-9.501-3.756-32.2-10.398-66-20-43.484-12.315-72.461-28.049-90-46-24.665-25.257-38-55.681-38-92-0-23.378 6.398-45.648 18-66s28.167-35.354 50-46c21.833-10.645 47.123-16 78-16zM556 282h298v78h-216v102h202v78h-202v124h224v78h-306v-460z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-segw"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 334,
+ "id": 261,
+ "prevSize": 16,
+ "code": 59684,
+ "name": "it-other-segw"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 36
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM122 146h234v50l-176 218h182v54h-260v-60l168-208h-148v-54zM380 146h256v54h-96v268h-64v-268h-96v-54zM678 146h238v54h-174v72h162v54h-162v88h180v54h-244v-322zM496 576c-38.5 0-70.375 12.688-94 38s-36 60.25-36 106c-0 43.25 12.5 77.063 36 102s53.5 38 90 38c29.5-0 54.812-7.438 74-22s31.75-38 40-68l-54-16c-4.625 20.125-11.375 34.625-22 44s-23.25 14-38 14c-20 0-37.5-7.25-50-22s-18-39.25-18-74c-0-32.75 7.312-57.375 20-72s27.625-22 48-22c14.75 0 27.687 5.75 38 14s16.75 17.75 20 32l56-12c-6.25-22-15.5-38.25-28-50-21-19.875-48.375-30-82-30zM122 580v46h82v228h56v-228h80v-46h-218zM734 580l-108 274h58l24-62h110l24 62h60l-110-274h-58zM762 644l38 102h-76l38-102zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-zteatca"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 335,
+ "id": 260,
+ "prevSize": 16,
+ "code": 59685,
+ "name": "it-other-zteatca"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 37
+ },
+ {
+ "icon": {
+ "paths": [
+ "M176 0c-97.115 0-176 78.886-176 176v672c0 97.114 78.885 176 176 176h672c97.115 0 176-78.886 176-176v-672c0-97.114-78.885-176-176-176h-672zM142 40c46.967 0 84 38.355 84 86.003 0 20.058-6.681 37.344-18 52l104 204c2.902 0 5.019-1.984 8-1.984 15.987 0 31.225 4.224 44 12l134-128c-3.301-9.203-4-19.642-4-29.997 0-47.648 37.033-86.003 84-86.003s86 38.355 86 86.003c0 0.64 0.014 1.344 0 1.984l164 76c14.938-13.197 34.634-21.997 56-21.997 46.967 0 86 40.352 86 88 0 47.642-39.033 85.997-86 85.997s-84-38.355-84-85.997c0-2.624-0.224-5.44 0-8l-160-76.006c-15.514 16.762-37.542 25.997-62 25.997-14.090 0-26.299-3.84-38-9.997l-138 132c2.086 7.475 4 15.84 4 24 0 47.642-39.033 85.997-86 85.997s-84-38.355-84-85.997c0-20.64 8.082-39.155 20-54.003l-102-201.997c-3.796 0.64-8.062 1.984-12 1.984-46.967 0-86-38.355-86-85.997 0-47.648 39.033-86.003 86-86.003zM140 636h234v50.003l-176 216h182v53.997h-260v-57.997l168-208h-148v-54.003zM398 636h256v54.003h-96v265.997h-64v-265.997h-96v-54.003zM696 636h238v54.003h-174v72h162v53.997h-162v86.003h180v53.997h-244v-320z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-zteips"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 336,
+ "id": 259,
+ "prevSize": 16,
+ "code": 59686,
+ "name": "it-other-zteips"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 38
+ },
+ {
+ "icon": {
+ "paths": [
+ "M508 0c-82.558 0.672-166.697 21.188-244 64-247.365 137.005-336.997 448.64-200 696 112.572 203.257 342.286 298.233 558 250l84-146 29.283-49.683-47.283-92.317 52-28c-27.342-23.445-47.521-53.56-60-88l-44 24-54-98 92-50c24.687-87.31 104.927-152 200-152 50.663 0 95.87 19.753 132 50-10.596-39.485-25.3-78.624-46-116-94.189-170.064-270.372-265.479-452-264zM530 98c45.407 1.984 91.792 9.699 134 26l-66 36c-22.418-22.534-44.33-43.274-68-62zM400 112c39.131 26.349 77.86 57.629 114 94l-86 48-70-126c-0.339-0.64 0.362-1.424 0-2 13.85-5.504 27.877-10.038 42-14zM266 176c0.32 0.64 1.711 1.488 2 2l70 126-94 52c-11.828-49.536-16.086-99.133-18-146 12.612-11.942 25.674-23.568 40-34zM766 182c30.756 23.571 58.291 51.565 82 84l-118 66c-19.826-33.114-41.392-64.963-64-94l90-48c3.229-1.792 7.526-5.517 10-8zM584 286c22.436 28.877 42.268 59.046 62 92l-114 64-54-98zM146 318c3.501 27.974 7.145 55.238 14 84l-56 32c7.85-40.659 22.519-79.302 42-116zM388 394l54 98-122 66c-17.597-34.106-31.279-67.754-44-102zM192 502c12.788 34.547 26.288 69.67 44 104l-110 60c-14.57-36.442-26.168-74.317-30-112zM492 582l54 98-106 58c-24.154-28.173-46.514-57.469-68-90zM288 696c21.57 32.525 45.675 59.827 70 88l-102 58c-29.908-23.232-56.84-52.314-80-84zM596 772l70 126c-7.344 2.944-14.551 7.504-22 10-43.856-24.314-86.79-54.854-128-92zM432 862c28.391 25.472 58.222 46.435 88 66-53.331 1.024-106.52-9.274-156-28z",
+ "M873.145 391.853c-83.828 0-150.949 67.322-150.949 148.794 0 57.709 34.419 105.702 84.1 129.939v299.699c0 21.075 17.123 37.722 38.815 37.722h56.067c21.692 0 38.815-16.646 38.815-37.722v-299.699c49.682-24.237 84.1-72.23 84.1-129.939 0-81.472-67.121-148.794-150.949-148.794z",
+ "M745.671 902.592h247.663l36.421 118.976h-313.221z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-sdn-controller"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 337,
+ "id": 258,
+ "prevSize": 16,
+ "code": 59687,
+ "name": "it-sdn-controller"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 39
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 4v424h76v-186h148v186h74v-424h-74v166h-148v-166h-76zM376 4v424h76v-160h50c34.135 0 59.998-1.945 78-6 13.246-3.282 25.178-9.863 38-20s23.678-24.237 32-42c8.321-17.763 12-39.935 12-66-0-33.788-5.565-60.665-20-82s-32.602-35.628-54-42c-13.926-4.247-44.148-6-90-6h-122zM452 76h36c27.172 0 44.999 0.070 54 2 12.227 2.51 24.018 7.96 32 18s12 24.554 12 40c-0 12.55-4.311 22.54-10 32s-11.981 17.56-22 22c-10.020 4.441-30.281 6-60 6h-42v-120zM986 406l-28 10-234 190-50-84-22-14-26-2-42 30-176 168-36 14-22-4 6-26 88-120 28-46-6-34-22-6-36 32-170 184-44 24-12-8 2-28 72-98 34-64-8-36-14-10-30 16-102 150-36 64-6 74 20 32 36 8 38-14 78-66 14 54 30 16 50 2 44-26 96-80 124-132 12-2 42 60 4 22-276 316c0 0-8.993 18.503 2 36s8 16 8 16l48-6 238-294 10-2 18 6 70 124 30 6 14-20-4-34-78-122 226-198 30-30-14-32-18-16z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-hpux"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 338,
+ "id": 257,
+ "prevSize": 16,
+ "code": 59688,
+ "name": "it-server-hpux"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 40
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM214 578c47.25 0 85.635 14.688 114 44s42 69.792 42 122c-0 51.771-13.854 92.76-42 122s-64.896 44-112 44c-47.688 0-85.854-14.906-114-44s-42-68.958-42-120c-0-32.666 4.229-59.833 14-82 7.292-16.333 17.385-31.021 30-44s26.979-21.729 42-28c19.979-8.458 41.896-14 68-14zM832 578c40.25 0 71.656 8.354 92 26s30.979 42.542 32 72l-66 2c-2.771-16.479-8.886-28.781-18-36s-21.771-10-40-10c-18.813 0-33.354 4.271-44 12-6.854 4.959-10 11.688-10 20-0 7.584 1.583 12.604 8 18 8.167 6.854 28.5 14.563 60 22s54.906 16.052 70 24c15.094 7.948 27.468 18.219 36 32s12 31.729 12 52c-0 18.375-3.792 33.958-14 50s-25.334 28.198-44 36c-18.667 7.802-42.146 12-70 12-40.542 0-72.271-9.26-94-28s-33.771-46.125-38-82l62-6c3.791 21.146 12.406 36.083 24 46s26.312 16 46 16c20.854 0 37.427-5.177 48-14s16-18.187 16-30c-0-7.583-1.552-14.677-6-20s-12.917-10.062-24-14c-7.583-2.625-25.021-7.292-52-14-34.708-8.604-60-19.458-74-32-19.688-17.646-28-38.625-28-64 0-16.333 4.74-31.781 14-46s22.573-24.562 40-32c17.427-7.437 37.354-12 62-12zM420 584h104c39.375 0 66.041 0.792 78 4 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.583-10 50s-16.99 24.344-28 32c-11.011 7.656-20.625 11.521-32 14-15.459 3.062-38.688 6-68 6h-42v120h-66v-320zM216 634c-26.688 0-49.667 9.698-66 28s-24 45.104-24 82c-0 36.313 9.229 63.261 26 82s38.187 28 64 28c25.812 0 45.448-9.406 62-28s26-44.812 26-82c-0-36.75-7.886-65.916-24-84s-37.313-26-64-26zM486 638v92h36c25.521 0 41.396-2.646 50-6s15.114-8.854 20-16c4.885-7.146 8-14.521 8-24-0-11.667-3.146-22.416-10-30s-15.5-12.104-26-14c-7.729-1.458-24.667-2-48-2h-30z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-ops"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 339,
+ "id": 256,
+ "prevSize": 16,
+ "code": 59689,
+ "name": "it-storage-ops"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 41
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM724 584c39.229 0 71.5 10.813 96 34 14.583 13.709 24.708 34.334 32 60l-64 16c-3.792-16.625-11.969-30.375-24-40s-24.792-14-42-14c-23.771 0-43.198 8.938-58 26s-24 43.792-24 82c-0 40.542 7.417 68.792 22 86s34.666 26 58 26c17.208 0 31.604-5.062 44-16s20.604-28.521 26-52l64 20c-9.625 35-25.615 61.010-48 78s-51.583 26-86 26c-42.583 0-76.583-14.906-104-44s-42-69.542-42-120c-0-53.375 14.437-94.468 42-124s63.083-44 108-44zM164 590h128c25.375 0 43.531-0.115 56 2s24.156 7.292 34 14c9.843 6.709 17.437 14.844 24 26s10 24.146 10 38c-0 15.021-3.907 29.459-12 42s-18.146 21.729-32 28c19.541 5.688 33.5 16.292 44 30s16 29.479 16 48c-0 14.583-3.219 28.219-10 42s-16.261 23.76-28 32c-11.74 8.24-24.792 14.104-42 16-10.792 1.167-38.729 1.708-80 2h-108v-320zM228 644v74h44c25.229 0 39.875-1.271 46-2 11.083-1.312 19.656-5.656 26-12s10-13.646 10-24c-0-9.916-2.531-17.802-8-24s-13.209-10.687-24-12c-6.417-0.729-25.521 0-56 0h-38zM228 770v86h60c23.333 0 37.729-0.687 44-2 9.625-1.75 17.948-5.219 24-12s10-16.625 10-28c-0-9.625-3.334-17.292-8-24s-11.177-10.937-20-14c-8.823-3.062-28.542-6-58-6h-52z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-sanswitch-brocade"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 340,
+ "id": 255,
+ "prevSize": 16,
+ "code": 59690,
+ "name": "it-storage-sanswitch-brocade"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 42
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 0c-47.477 0-86 38.076-86 84v514c0 45.924 38.523 82 86 82h234v90h-184v82h280v-172h192v172h280v-82h-184v-90h234c47.477 0 86-36.076 86-82v-514c0-45.924-38.523-84-86-84h-852zM110 108h804v454h-804v-454zM136 946v80h752v-80h-752z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-moc-uca-public"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 341,
+ "id": 254,
+ "prevSize": 16,
+ "code": 59691,
+ "name": "uep-moc-uca-public"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 43
+ },
+ {
+ "icon": {
+ "paths": [
+ "M2 262v192h96v320c-55.192 13.323-96 62.716-96 122 0 69.49 56.51 126 126 126s126-56.51 126-126c0-57.76-38.954-107.215-92-122v-320h320v320c-54.028 14.132-94 63.542-94 122 0 69.49 56.51 126 126 126s126-56.51 126-126c0-58.458-39.972-107.868-94-122v-320h320v320c-53.356 14.581-94 64.019-94 122 0 69.49 56.51 126 126 126s126-56.51 126-126c0-58.632-39.727-108.036-94-122v-320h96v-192h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-topo-commongroup20x20"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 342,
+ "id": 253,
+ "prevSize": 16,
+ "code": 59692,
+ "name": "uep-topo-commongroup20x20"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 44
+ },
+ {
+ "icon": {
+ "paths": [
+ "M741.841 94.115c0-39.983-32.256-72.239-72.099-72.239h-375.529c-39.983 0-72.239 32.256-72.239 72.239v58.508h519.82v-58.508z",
+ "M745.472 980.713v-2.327c0 0.465-0.093 0.884-0.186 1.164 0.093 0.372 0.186 0.745 0.186 1.164z",
+ "M218.345 980.713c0-0.465 0.14-0.838 0.186-1.164-0.047-0.372-0.186-0.745-0.186-1.164v2.327z",
+ "M840.285 212.247h-98.351v-49.105h-519.913v128.047h519.866v-29.137h25.553v24.902h10.892c-0.605 26.577-5.353 228.492-7.075 279.459-4.561 138.333-7.121 198.796-21.83 231.098-24.25 53.248-103.098 64.698-119.901 66.607v-195.072h40.169c39.796 0 72.192-32.349 72.192-72.099v-295.331h-519.866v295.284c0 39.75 32.209 72.099 72.239 72.099h40.076v283.276c0 3.724 0.605 7.075 1.583 10.473h-99.514c-9.635 0-17.361 7.354-17.873 16.803 0.512 9.356 8.239 16.803 17.873 16.803h491.055c9.495 0 17.315-7.447 17.92-16.803-0.605-9.449-8.425-16.803-17.92-16.803h-99.421c0.977-3.351 1.396-6.749 1.396-10.38v-49.105c38.121-7.447 118.551-15.453 154.065-92.346 21.225-46.173 22.295-125.719 24.948-241.478 3.072-134.004 5.958-261.911 6.423-282.484h9.495v-24.902h15.919v-49.804h-0zM693.62 320.652c9.914 0 18.060 8.052 18.060 18.060 0 9.914-8.145 18.106-18.060 18.106-10.1 0-18.106-8.192-18.106-18.106 0.047-10.007 8.052-18.060 18.106-18.060zM435.852 642.979l30.906-96.815-45.056-11.729 84.294-145.315-23.366 114.502 45.754 20.48-92.532 118.877z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "vapel_chgpile"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 2,
+ 2,
+ 2,
+ 2
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "properties": {
+ "order": 343,
+ "id": 252,
+ "prevSize": 16,
+ "code": 59693,
+ "name": "vapel_chgpile"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 45
+ },
+ {
+ "icon": {
+ "paths": [
+ "M792.529 781.359v2.932c-1.955 0.093-28.393 4.887-44.544 8.052-12.241 0-203.124 0.326-333.405 0.326-66.979 0-117.9-0.093-120.413-0.326-7.494-0.559-53.76-9.588-55.715-9.961l0.652-3.305c-15.407 15.22-24.948 32.489-23.924 44.963 1.722 22.714 46.685 44.823 62.883 50.223 0.931 0.419 2.7 0.791 4.841 0.977l-0.233-0.279c2.095-1.35 20.62-12.753 29.091-12.753l418.257 0.372c0.093 0.093 6.33 4.375 14.941 9.961l-1.815 2.746c13.917-1.908 24.948-4.096 31.558-6.377 40.96-14.662 41.565-52.317 41.565-52.689-0.652-9.449-10.845-22.481-23.738-34.863z",
+ "M749.009 741.19c-16.989-4.887-182.737-21.132-236.544-22.947-1.908-0.093-3.91-0.093-6.097-0.093-59.252 0-219.555 23.505-221.184 23.831-42.449 13.731-78.103 59.159-76.288 85.178 1.769 25.507 47.709 50.129 64.186 56.273 12.567 4.701 136.099 10.38 202.426 13.312 21.69 0.977 38.772 1.722 45.847 2.095 2.7 0.233 6.796 0.326 12.288 0.326 56.273 0 211.27-8.471 245.62-21.969 41.612-16.198 43.241-54.877 43.706-67.444 0.605-13.359-43.892-59.578-73.961-68.561zM775.959 872.262c-36.631 13.172-194.42 20.108-242.362 20.108-5.446 0-9.588-0.093-12.288-0.279-6.842-0.559-23.599-1.21-44.823-2.095-69.911-2.886-186.927-7.633-199.727-12.055-12.567-4.329-63.535-27.089-65.536-53.62-1.955-25.135 33.652-67.119 77.824-80.198 1.862-0.186 159.372-21.364 217.74-21.364 2.141 0 4.189 0.093 6.097 0.093 52.829 1.629 216.111 16.291 232.82 20.666 16.524 4.561 72.937 48.826 74.24 72.332 0.559 8.471-5.585 42.775-43.985 56.413z",
+ "M747.66 788.527c6.33-1.117 38.028-7.168 44.032-8.052-16.989-16.244-38.167-30.767-46.825-33.187-16.57-4.655-179.293-18.897-232.029-20.527-1.908-0.093-3.863-0.093-6.004-0.093-58.135 0-215.412 20.992-216.948 21.225-7.866 2.374-15.546 5.632-22.714 9.775 11.823 1.117 60.090 6.051 66.56 6.703 7.308 0.559 378.321 0 382.045-0.093 12.381-1.443 45.196-5.12 47.709-5.585l0.698 3.863c-3.025 0.559-46.266 5.353-48.175 5.539-10.193 0-169.658 0.372-279.412 0.372-56.972 0-100.585-0.093-103.145-0.372-7.401-0.652-68.655-6.796-69.26-6.842l0.186-1.815c-9.263 5.492-17.687 12.195-24.902 19.316 3.863 0.745 47.942 9.216 54.97 9.868 7.354 0.512 448.791-0.093 453.213-0.093z",
+ "M311.761 865.932c-5.073 0-16.477 6.051-23.319 10.1 33.327 3.724 131.863 7.727 188.276 10.054 21.271 0.977 37.981 1.629 44.87 2.001 2.653 0.233 6.703 0.326 12.009 0.326 44.172 0 150.807-4.934 208.617-13.079-6.935-4.468-12.335-8.145-13.871-9.309l-416.582-0.093z",
+ "M1016.367 742.4c-1.303-12.986-5.26-37.841-5.26-44.265 0-6.47-15.593-79.5-15.593-79.5l-10.426-24.669-28.625-27.415-40.401-26.065-32.489-14.383-14.429-10.426-8.518-14.615c6.749-0.465 58.321-4.329 64.372-8.099 6.423-4.003 10.752-5.772 10.147-7.121-0.745-1.35-4.375-20.34-9.123-24.716-4.794-4.422-38.26-10.799-43.008-10.519-4.841 0.326-8.099 0.326-8.099 0.326s-11.543 17.268-10.193 27.415c1.303 10.193 2.048 12.567 2.048 12.567l-9.402 4.655-1.21-2.001-20.852-29.975-33.792-55.994-27.415-39.052-24.809-18.292-11.683-7.82c0 0-129.117-13.731-221.044-12.288-102.54 1.722-210.851 12.847-210.851 12.847l-8.425 6.051-20.806 19.084-84.759 103.331c-5.399 7.727-10.193 13.731-14.941 19.409l-10.938-4.98c0 0 0.745-2.374 2.001-12.567 1.35-10.147-10.193-27.415-10.193-27.415s-3.351 0-8.099-0.326c-4.748-0.419-38.26 6.051-43.008 10.426-4.748 4.422-8.425 23.412-9.123 24.762s3.724 3.025 10.147 7.121c6.33 4.003 62.883 8.239 64.512 8.332-4.143 4.655-8.332 9.169-12.986 14.289-11.683 13.033-37.841 23.459-46.918 30.022-9.123 6.563-69.027 41.658-69.027 53.434 0 11.683-26.065 98.956-26.065 98.956s0 19.549-1.303 27.322c-1.303 7.866-1.303 43.008-2.56 57.344-1.303 14.476 5.167 118.598 5.167 118.598l4.608 10.985c-0.559 7.494-0.279 22.807 10.333 27.276 1.303 0.465 4.003 1.303 7.82 2.513 1.164 4.329 26.81 33.187 40.076 34.956 13.591 1.955 43.38 3.212 51.153 3.212s18.665-8.657 21.923-9.914c0.047 0 0-0.14 0-0.14 39.657 9.263 74.473 16.756 77.824 15.965 7.773-2.001 12.335-3.91 18.758-3.91 6.516 0 213.085 17.455 231.191 16.756 18.153-0.652 286.255-16.756 296.029-16.756 9.635 0 10.333 0.652 20.015 2.56 4.608 0.977 44.218-6.982 86.807-16.943-0.698 2.095-1.024 5.585 1.862 8.611 4.608 4.608 59.625-1.908 69.958-5.167 10.38-3.212 31.092-30.348 31.092-30.348l-9.216 2.234c7.447-2.42 12.847-4.608 15.034-6.191 15.546-10.985 14.336-23.971 14.336-23.971l-3.351 0.605 6.516-8.378c-0.047-0.047 6.516-144.756 5.213-157.743zM983.599 870.167c-3.91 8.657-33.745 29.929-43.38 33.373-9.681 3.444-112.035 23.040-115.433 22.854-3.584-0.326-12.521-8.099-14.057-14.569-1.583-6.516 25.321-40.96 34.444-47.709 9.123-6.703 94.72-36.538 108.218-41.705 13.545-5.167 40.401-22.854 40.401-22.854s3.537 40.215-10.193 70.609zM781.079 880.361c-37.283 14.615-198.191 22.249-247.063 22.249-5.539 0-9.728-0.093-12.614-0.279-6.982-0.465-24.111-1.164-45.754-2.234-71.215-3.165-190.511-8.751-203.636-13.498-12.753-4.841-64.652-30.208-66.7-59.671-1.955-28.020 34.257-74.705 79.313-89.228 1.908-0.279 162.49-23.971 222.022-23.971 2.188 0 4.282 0.093 6.237 0.186 53.853 1.815 220.3 18.013 237.382 23.087 30.999 9.169 77.545 55.855 76.893 72.425-0.419 13.172-2.141 53.76-46.080 70.935zM841.356 655.779c8.844-5.818 132.841-49.338 132.841-49.338s12.428 32.442 13.452 39.331c0.977 6.842-3.398 33.14-6.516 37.004-3.025 3.724-35.933 26.345-40.215 26.95-4.236 0.838-20.852-8.564-24.017-8.564-2.932 0-55.808 16.896-75.729 19.363-20.015 2.7-57.204-16.57-57.204-16.57s48.593-42.403 57.391-48.175zM288.861 408.343c17.687-11.776 42.915-24.157 60.556-26.298 0 0 56.739-9.961 143.22-12.567l-0.047-0.326c12.055-0.233 23.692-0.326 34.956-0.279 11.264-0.047 22.807 0 34.816 0.279l-0.093 0.326c86.435 2.607 143.081 12.567 143.081 12.567 17.734 2.095 43.008 14.476 60.742 26.298l52.317 59.206c0 10.705-3.677 19.875-14.476 19.875l-281.367-0.652-281.414 0.652c-10.705 0-14.476-9.123-14.476-19.875l62.185-59.206zM45.708 646.237c1.024-6.842 14.895-40.96 14.895-40.96s126.836 45.568 135.68 51.34c8.844 5.818 57.391 48.361 57.391 48.361s-37.143 19.037-57.111 16.57c-19.968-2.56-72.797-19.503-75.823-19.503-2.979 0-19.689 9.263-24.017 8.657-4.282-0.884-41.425-22.249-44.451-26.065-3.025-3.77-7.54-31.651-6.563-38.4zM33.932 801.699c0 0 26.95 17.78 40.401 22.807 13.452 5.12 99.049 34.909 108.218 41.705s36.073 41.239 34.444 47.756c-1.583 6.423-10.519 14.196-14.010 14.476-3.444 0.279-105.798-19.27-115.479-22.761-9.728-3.537-39.471-24.855-43.334-33.466-13.731-30.441-10.24-70.516-10.24-70.516z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "car"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 2,
+ 2,
+ 2,
+ 2,
+ 2
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "properties": {
+ "order": 344,
+ "id": 251,
+ "prevSize": 16,
+ "code": 59694,
+ "name": "car"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 46
+ },
+ {
+ "icon": {
+ "paths": [
+ "M286.627 163.421h521.263v128.372h-521.263v-128.372z",
+ "M807.889 94.208c0-40.029-32.396-72.378-72.378-72.378h-376.553c-39.936 0-72.425 32.303-72.425 72.378v58.647h521.309v-58.647z",
+ "M811.473 982.202c0 0.372 0.093 0.791 0.093 1.21v-2.607c0 0.605-0.093 0.977-0.093 1.396z",
+ "M282.996 983.412c0-0.512 0.14-0.977 0.14-1.21 0-0.372-0.14-0.791-0.14-1.35v2.56z",
+ "M793.46 965.26h-99.84c0.977-3.258 1.536-6.842 1.536-10.473v-284.067h40.355c39.889 0 72.378-32.396 72.378-72.471v-296.029h-521.309v296.029c0 39.983 32.442 72.378 72.425 72.378h40.308v284.16c0 3.491 0.512 7.075 1.536 10.287h-99.747c-9.635 0-17.361 7.447-17.967 16.989 0.652 9.309 8.332 16.803 17.967 16.803h492.358c9.542 0 17.315-7.494 18.013-16.803-0.698-9.449-8.425-16.803-18.013-16.803zM759.529 321.443c9.914 0 18.060 8.099 18.060 18.153 0 9.961-8.145 18.106-18.060 18.106-10.007 0-18.199-8.099-18.199-18.106 0.14-10.054 8.239-18.153 18.199-18.153zM501.062 644.655l31.046-97.094-45.242-11.543 84.48-145.873-23.273 114.828 45.708 20.527-92.719 119.156z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "chgpile"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 2,
+ 2,
+ 2,
+ 2,
+ 2
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "properties": {
+ "order": 345,
+ "id": 250,
+ "prevSize": 16,
+ "code": 59695,
+ "name": "chgpile"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 47
+ },
+ {
+ "icon": {
+ "paths": [
+ "M550.959 563.805c-9.635-1.815-28.998-2.746-58.089-2.746h-39.005v113.478h44.172c31.837 0 53.108-2.095 63.86-6.284 10.705-4.189 19.084-10.705 25.181-19.642s9.169-19.27 9.169-31.092c0-14.569-4.329-26.531-12.8-35.98-8.518-9.449-19.363-15.36-32.489-17.734z",
+ "M977.455 395.636h-930.909c-25.693 0-46.545 20.852-46.545 46.545v488.727c0 25.74 20.852 46.545 46.545 46.545h930.909c25.74 0 46.545-20.806 46.545-46.545v-488.727c0-25.74-20.806-46.545-46.545-46.545zM666.112 678.353c-8.844 16.71-20.294 29.929-33.932 39.471s-27.695 15.825-41.751 18.897c-19.27 3.817-47.244 5.725-83.782 5.725h-52.783v150.807h-80.71v-399.779h129.536c49.152 0 81.129 2.001 96.023 6.004 22.9 6.004 42.077 19.037 57.53 39.145s23.18 45.987 23.18 77.824c0.047 24.529-4.422 45.196-13.312 61.905z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "chgposition"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 2,
+ 2
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(124, 133, 150)"
+ },
+ {
+ "fill": "rgb(124, 133, 150)"
+ }
+ ],
+ "properties": {
+ "order": 346,
+ "id": 249,
+ "prevSize": 16,
+ "code": 59696,
+ "name": "chgposition"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 48
+ },
+ {
+ "icon": {
+ "paths": [
+ "M667.741 391.913h-638.697v-138.799l638.697-11.171z",
+ "M995.002 439.529l-618.17-0.652-347.788-35.468h638.697z",
+ "M995.002 426.217l-327.261-34.304v-149.969l327.261 53.388z",
+ "M150.761 412.672h63.86v600.111h-63.86v-600.111z",
+ "M635.811 412.672h63.814v600.111h-63.814v-600.111z",
+ "M348.393 417.792h63.86v503.948h-63.86v-503.948z",
+ "M853.085 434.176h63.86v487.564h-63.86v-487.564z",
+ "M475.881 760.273h71.075v161.466h-71.075v-161.466z",
+ "M739.142 760.273h71.075v161.466h-71.075v-161.466z",
+ "M285.091 776.378l-24.716 23.645v160.954h17.594l26.205-23.18v-161.42z",
+ "M834.001 815.197l-24.716 23.599v161.001h17.641l26.159-23.18v-161.42z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "chgstation"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ },
+ {
+ "fill": "rgb(123, 131, 147)"
+ }
+ ],
+ "properties": {
+ "order": 347,
+ "id": 248,
+ "prevSize": 16,
+ "code": 59697,
+ "name": "chgstation"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 49
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM266.182 72.723h490.182c43.596 0 80 32.73 80 72.736v738.906c0 40-36.404 72.723-80 72.723h-490.182c-43.596 0-78.545-32.723-78.545-72.723v-738.906c0-40.006 34.95-72.736 78.545-72.736zM667.636 189.088c-41.36 0-73.529 12.877-98.909 37.818-25.38 24.947-37.818 59.635-37.818 104.73 0 42.63 12.572 77.242 37.818 101.818 25.246 24.582 56.788 34.912 96 34.912 31.691 0 59.387-5.952 80-20.365 20.613-14.355 34.773-37.338 43.636-66.906l-58.182-14.554c-4.969 19.846-11.859 34.4-23.273 43.642s-26.336 11.635-42.182 11.635c-21.486 0-38.935-5.824-52.364-20.358-13.429-14.547-20.364-38.483-20.364-72.736-0-32.275 6.734-55.398 20.364-69.811 13.63-14.419 31.929-23.277 53.818-23.277 15.846 0 29.648 3.456 40.727 11.635 11.078 8.128 18.326 20.864 21.818 34.912l58.182-14.547c-6.715-21.683-17.117-37.869-30.545-49.453-22.56-19.59-52.605-29.094-88.727-29.094zM242.909 194.912v270.547h113.455c22.023 0 39.203-1.984 52.364-5.824 17.591-5.184 30.387-14.042 40.727-23.277 13.697-12.198 24.614-26.835 32-46.547 6.042-16.141 8.727-35.885 8.727-58.182-0-25.382-2.282-46.688-8.727-64-6.446-17.306-16.737-31.68-29.091-43.635-12.355-11.949-26.314-21.504-43.636-26.182-12.892-3.456-33.608-2.88-58.182-2.88h-107.636zM302.545 238.554h26.182c24.306 0 41.129 1.216 49.455 2.88 11.146 2.24 21.839 8.256 29.091 14.541 7.251 6.272 10.517 14.976 14.545 26.182 4.028 11.213 7.273 25.6 7.273 46.554-0 20.941-3.244 37.318-7.273 49.446-4.029 12.134-8.167 20.89-14.545 26.189-6.379 5.312-15.059 9.414-24.727 11.629-7.386 1.728-19.712 2.88-36.364 2.88h-43.636v-180.365zM272 599.283c-15.139 0-27.636 10.374-27.636 23.264 0 12.902 12.498 23.277 27.636 23.277h485.818c15.139 0 27.636-10.374 27.636-23.277 0-12.89-12.498-23.264-27.636-23.264h-485.818zM272 733.101c-15.139 0-27.636 10.381-27.636 23.27 0 12.896 12.498 23.27 27.636 23.27h485.818c15.139 0 27.636-10.374 27.636-23.27 0-12.89-12.498-23.27-27.636-23.27h-485.818z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 155, 230)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "common_dc"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 6
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 155, 230)"
+ }
+ ],
+ "properties": {
+ "order": 348,
+ "id": 247,
+ "prevSize": 16,
+ "code": 59698,
+ "name": "common_dc"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 50
+ },
+ {
+ "icon": {
+ "paths": [
+ "M152 0c-84.32 0-152 67.68-152 152v720c0 84.32 67.68 152 152 152h720c84.32 0 152-67.68 152-152v-720c0-84.32-67.68-152-152-152zM104 166h98l202 264v-264h94v302c-17.538-5.098-37.024-8-56-8-37.084 0-71.491 11.742-102 30l-144-186v258h-92zM456 551.336c40.013 0 73.010 10.353 98 34 14.874 13.982 26.562 33.824 34 60l-66 16c-3.868-16.956-9.729-30.18-22-40-12.272-9.825-28.448-14-46-14-24.246 0-44.902 8.593-60 26-15.098 17.401-22 45.029-22 84-0 41.357 7.125 72.45 22 90s36.2 24 60 24c17.552 0 31.356-4.844 44-16s20.496-28.050 26-52l64 20c-9.818 35.705-25.168 60.673-48 78s-50.896 28-86 28c-43.434 0-80.036-16.33-108-46-27.965-29.676-42-68.532-42-120-0-54.437 13.887-97.879 42-128s64.186-44 110-44zM646 557.336h122c27.221 0 47.72-0.168 62 4 19.188 5.652 34.315 17.573 48 32s24.86 31.105 32 52c7.14 20.901 10 47.359 10 78-0 26.924-3.307 50.515-10 70-8.181 23.796-20.828 41.27-36 56-11.454 11.156-26.514 19.754-46 26-14.577 4.63-33.606 8-58 8h-124zM712 611.336v216h50c18.445 0 31.819 0.055 40-2 10.71-2.672 18.934-7.606 26-14s13.537-17.345 18-32c4.463-14.65 6-34.714 6-60s-1.538-44.464-6-58c-4.463-13.536-11.968-24.413-20-32-8.033-7.582-17.654-13.317-30-16-9.223-2.341-27.077-2-54-2z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "common_ncd"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 349,
+ "id": 246,
+ "prevSize": 16,
+ "code": 59699,
+ "name": "common_ncd"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 51
+ },
+ {
+ "icon": {
+ "paths": [
+ "M820 0l-40 4 12 66 40-4-12-66zM678 22c-39.083 0-68 30.966-68 70 0 39.021 28.917 70 68 70 10.831 0 22.823-1.648 32-6l48 46 36-38-48-48c2.62-7.392 4-15.725 4-24 0-39.034-32.916-70-72-70zM948 44l-90 60 30 46 90-62-30-44zM150 98c-84.081 0-150 66.045-150 150v626c0 83.962 65.919 150 150 150h628c84.081 0 150-66.038 150-150v-420c-97.009 35.552-219.538 4.931-304-82-79.068-81.382-102.955-187.984-68-274h-406zM1020 168l-66 12 4 40 66-12-4-40zM662 190l-66 12 4 38 66-10-4-40zM858 218l-38 38 38 36c-2.531 7.27-6 15.866-6 24 0 39.027 30.916 70 70 70s72-30.973 72-70c0-39.027-32.917-72-72-72-10.992 0-20.719 3.507-30 8l-34-34zM732 260l-90 62 28 44 92-58-30-48zM104 288h92l190 232v-232h88v266c-16.509-4.523-34.138-8-52-8-34.907 0-67.282 9.908-96 26l-136-164v228h-86v-348zM826 344l-40 2 10 66 40-4-10-64zM436 598c37.664 0 68.477 9.161 92 30 14.001 12.316 24.999 30.929 32 54l-62 14c-3.641-14.94-10.449-27.349-22-36-11.552-8.66-25.478-12-42-12-22.823 0-41.788 8.66-56 24-14.212 15.33-22 39.655-22 74-0 36.445 7.998 62.541 22 78 14.002 15.463 33.597 22 56 22 16.522 0 28.098-4.188 40-14 11.901-9.831 20.819-24.9 26-46l60 18c-9.241 31.46-24.508 52.727-46 68-21.493 15.263-46.956 24-80 24-40.885 0-75.677-13.848-102-40s-40-60.647-40-106c0-47.971 13.537-85.458 40-112s60.875-40 104-40zM614 604h116c25.623 0 44.558 0.525 58 4 18.062 4.961 31.118 15.279 44 28 12.881 12.707 23.279 27.585 30 46s10 40.996 10 68c-0 23.724-3.7 44.832-10 62-7.701 20.972-19.719 37.012-34 50-10.782 9.827-23.658 16.496-42 22-13.722 4.047-33.037 8-56 8h-116v-288zM676 652v190h48c17.362 0 30.299-0.237 38-2 10.081-2.381 17.349-6.368 24-12 6.651-5.637 11.799-15.088 16-28s6-31.719 6-54c0-22.286-1.8-38.074-6-50-4.201-11.936-10.439-21.316-18-28s-16.379-11.634-28-14c-8.681-2.095-26.657-2-52-2h-28z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "common_ncd_break"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 350,
+ "id": 245,
+ "prevSize": 16,
+ "code": 59700,
+ "name": "common_ncd_break"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 52
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM192 146h628c26.012 0 49.542 11.019 68 26 22.109 17.944 38 42.938 38 72v380c0 53.325-48.83 96-106 96h-252c13.755 26.81 28.292 66.589 12 86-28.199 33.594-107.060 33.030-136 0-16.62-18.976-2.325-59.030 10-86h-262c-57.17 0-104-42.675-104-96v-380c0-29.062 13.891-54.056 36-72 18.458-14.981 41.988-26 68-26zM308 228c-31.688 0-57.594 4.438-80 14s-40.094 23.719-52 42c-11.906 18.282-18 39-18 60-0 32.625 12.687 59.313 38 82 18 16.125 49.375 28.938 94 40 34.687 8.625 58.25 14.625 68 18 14.25 5.063 22.281 11.156 28 18s10 16.25 10 26c-0 15.188-6.407 28.656-20 40s-35.188 16-62 16c-25.313 0-45.094-5.25-60-18s-25.125-32.812-30-60l-80 8c5.437 46.125 22.062 79.906 50 104s67.875 36 120 36c35.812 0 66-3.969 90-14s42.875-25.375 56-46c13.125-20.625 18-42.375 18-66-0-26.062-5.032-48.281-16-66s-26.594-31.781-46-42c-19.407-10.219-49.5-20.437-90-30s-65.5-19.187-76-28c-8.25-6.937-12-14.25-12-24-0-10.687 5.187-19.625 14-26 13.687-9.937 31.812-16 56-16 23.437 0 40.281 4.719 52 14s20.437 24.813 24 46l82-4c-1.313-37.875-13.844-67.312-40-90s-66.25-34-118-34zM728 228c-57.75 0-104.563 18.032-140 56s-54 91.375-54 160c-0 64.875 18.75 116.594 54 154s79.25 56 134 56c44.25 0 81.218-10.156 110-32s49.625-55 62-100l-80-26c-6.938 30.188-20.063 51.938-36 66s-33.875 22-56 22c-30 0-55.25-11.875-74-34s-28-59.875-28-112c-0-49.125 10.969-84.062 30-106s43.437-32 74-32c22.125 0 40.531 5.625 56 18s25.125 28.625 30 50l82-20c-9.375-33-23.25-58.375-42-76-31.5-29.812-71.563-44-122-44zM418 814c1.096 8.128 5.046 14.406 10 20 35.944 40.614 134.977 41.312 170 0 4.685-5.504 7.107-12.186 8-20 62.661 8.262 104 25.222 104 44 0 27.11-88.3 48-198 48s-200-20.89-200-48c0-18.778 43.339-35.738 106-44z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 155, 230)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "common_sc"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 6
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 155, 230)"
+ }
+ ],
+ "properties": {
+ "order": 351,
+ "id": 244,
+ "prevSize": 16,
+ "code": 59701,
+ "name": "common_sc"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 53
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 100v834h-256v90h1034v-90h-256v-252h-400v-96h400v-108h-400v-96h400v-282h-522z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 352,
+ "id": 243,
+ "prevSize": 16,
+ "code": 59702,
+ "name": "it"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 54
+ },
+ {
+ "icon": {
+ "paths": [
+ "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM516 76c203.792 0 370 166.208 370 370s-166.208 372-370 372c-203.792 0-370-168.208-370-372s166.208-370 370-370zM516 182c-147.271 0-266 116.729-266 264s118.729 266 266 266c147.271 0 266-118.729 266-266s-118.729-264-266-264zM480 286h68l128 322h-70l-28-74h-128l-26 74h-68l124-322zM514 362l-44 118h88l-44-118zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 353,
+ "id": 242,
+ "prevSize": 16,
+ "code": 59703,
+ "name": "it-app"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 55
+ },
+ {
+ "icon": {
+ "paths": [
+ "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM114 86h226c44.738 0 78.016 2.249 100 6s40.644 10.174 58 22c17.355 11.837 32.429 28.328 44 48 11.57 19.662 17.999 41.566 18 66-0.001 26.476-7.73 49.889-22 72s-33.574 38.945-58 50c34.453 10.003 61.487 27.826 80 52 18.512 24.174 27.999 53.345 28 86-0.001 25.716-6.045 49.701-18 74-11.956 24.299-29.302 43.475-50 58-20.698 14.535-45.661 24.655-76 28-19.027 2.084-65.236 1.479-138 2h-192v-564zM228 180v130h74c44.481 0 73.201-1.062 84-2 19.541-2.292 34.815-8.809 46-20 11.184-11.18 16-25.745 16-44-0-17.484-4.358-31.070-14-42s-24.974-17.687-44-20c-11.314-1.25-42.263-2-96-2h-66zM228 404v152h106c41.139 0 66.944-1.708 78-4 16.969-3.126 31.329-10.038 42-22 10.67-11.951 16-27.942 16-48-0-16.974-5.773-32.174-14-44-8.228-11.826-18.445-20.592-34-26-15.556-5.418-50.062-8-102-8h-92zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-bind"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 354,
+ "id": 241,
+ "prevSize": 16,
+ "code": 59704,
+ "name": "it-app-bind"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 56
+ },
+ {
+ "icon": {
+ "paths": [
+ "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM836 140c41.156 0 73.198 11.587 94 34s30.956 50.584 32 88l-66 4c-2.833-20.931-8.68-34.831-18-44s-23.361-13.999-42-14c-19.236 0.001-33.115 4.181-44 14-7.009 6.298-12 15.442-12 26-0 9.632 3.439 17.147 10 24 8.35 8.706 29.791 18.553 62 28s54.566 17.905 70 28c15.433 10.095 27.276 24.496 36 42s14 40.253 14 66c-0 23.339-5.562 43.625-16 64s-24.913 36.090-44 46c-19.087 9.91-43.519 16-72 16-41.455 0-71.782-12.198-94-36s-35.676-58.433-40-104l64-8c3.877 26.858 12.145 45.404 24 58s27.869 20 48 20c21.324 0 37.189-6.79 48-18 10.811-11.207 16-22.996 16-38-0-9.632-3.452-19.239-8-26s-10.667-10.998-22-16c-7.754-3.331-26.414-9.479-54-18-35.49-10.928-59.685-24.071-74-40-20.131-22.413-30-49.769-30-82 0-20.746 4.531-39.94 14-58s22.18-32.553 40-42c17.819-9.446 38.799-14 64-14zM60 146h120c27.288 0 49.685 2.817 64 8 19.236 7.040 34.281 20.033 48 38s24.842 39.975 32 66c7.157 26.025 10 57.843 10 96-0 33.527-3.29 61.735-10 86-8.202 29.637-18.79 53.662-34 72-11.482 13.892-26.466 26.22-46 34-14.614 5.742-35.545 8-60 8h-124v-408zM392 146h64l134 272v-272h62v408h-66l-132-266v266h-62v-408zM126 216v270h50c18.49 0 31.798-1.411 40-4 10.736-3.331 18.917-10.035 26-18s13.526-19.755 18-38c4.473-18.246 6-44.511 6-76s-1.527-55.144-6-72c-4.474-16.855-11.948-30.553-20-40s-17.623-14.665-30-18c-9.245-2.596-27.010-4-54-4h-30zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-dns"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 355,
+ "id": 240,
+ "prevSize": 16,
+ "code": 59705,
+ "name": "it-app-dns"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 57
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM816 172c37.375 0 65.109 7.615 84 24s29.052 38.646 30 66l-60 4c-2.573-15.302-9.537-27.297-18-34s-21.073-10-38-10c-17.469 0-30.115 2.823-40 10-6.365 4.604-10 12.281-10 20-0 7.042 2.042 12.99 8 18 7.583 6.365 26.75 13.094 56 20s51.984 12.62 66 20c14.015 7.38 24.078 17.203 32 30s12 29.177 12 48c-0 17.063-4.521 33.104-14 48s-22.667 26.755-40 34c-17.334 7.245-40.136 10-66 10-37.646-0-65.823-8.599-86-26s-32.073-42.687-36-76l58-6c3.521 19.636 11.234 34.792 22 44s25.719 14 44 14c19.364 0 34.182-3.807 44-12s14-19.031 14-30c-0-7.042-1.87-13.057-6-18s-11.708-8.344-22-12c-7.042-2.437-22.948-7.771-48-14-32.229-7.989-55-16.354-68-28-18.281-16.385-28-36.437-28-60 0-15.166 5.401-30.797 14-44s19.818-23.093 36-30c16.182-6.906 37.114-10 60-10zM86 178h220v50h-160v66h150v50h-150v80h166v52h-226v-298zM364 178h90l54 202 52-202h90v298h-56v-236l-58 236h-58l-58-236v236h-56v-298zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-ems"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 356,
+ "id": 239,
+ "prevSize": 16,
+ "code": 59706,
+ "name": "it-app-ems"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 58
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM158 148h112l66 250 66-250h110v366h-68v-288l-72 288h-72l-72-288v288h-70v-366zM586 148h272v62h-198v80h184v62h-184v100h206v62h-280v-366zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-mediator"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 357,
+ "id": 238,
+ "prevSize": 16,
+ "code": 59707,
+ "name": "it-app-mediator"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 59
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM58 150h68l142 272v-272h64v408h-70l-140-266v266h-64v-408zM382 150h274v70h-102v338h-70v-338h-102v-70zM702 150h112c42.436 0.001 69.112 1.922 82 6 19.803 6.114 36.64 19.532 50 40s20 47.585 20 80c-0 25.007-4.299 44.959-12 62s-16.134 32.275-28 42c-11.867 9.724-25.741 14.851-38 18-16.66 3.891-40.409 6-72 6h-44v154h-70v-408zM772 220v116h38c27.505 0 44.727-3.734 54-8 9.273-4.259 16.735-10.923 22-20s8-19.96 8-32c-0-14.818-4.613-26.368-12-36s-16.684-15.592-28-18c-8.33-1.848-24.853-2-50-2h-32zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-ntp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 358,
+ "id": 237,
+ "prevSize": 16,
+ "code": 59708,
+ "name": "it-app-ntp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 60
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM202 144c48.314 0 86.996 18.769 116 56 29.003 37.232 42 87.687 42 154-0 65.757-13.221 118.861-42 156s-67.835 54-116 54c-48.761 0-87.221-17.046-116-54s-44-89.169-44-154c-0-41.491 6.009-75.845 16-104 7.456-20.745 17.101-39.514 30-56s26.641-28.035 42-36c20.429-10.743 45.308-16 72-16zM388 150h262v70h-98v338h-66v-338h-98v-70zM786 150h70l132 408h-72l-28-92h-132l-26 92h-72l128-408zM202 214c-27.289 0.001-49.299 10.754-66 34-16.701 23.247-26 59.137-26 106-0 46.123 8.851 80.199 26 104 17.148 23.803 39.606 36 66 36s47.075-10.383 64-34c16.924-23.617 26-60.766 26-108-0-46.678-7.523-81.031-24-104s-38.712-33.999-66-34zM820 246l-44 150h90l-46-150zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-ota"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 359,
+ "id": 236,
+ "prevSize": 16,
+ "code": 59709,
+ "name": "it-app-ota"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 61
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM596 144c50.805 0.001 92.27 16.028 124 50 18.886 20.085 32.556 50.396 42 88l-82 22c-4.911-24.358-14.419-43.897-30-58-15.582-14.101-35.714-21.999-58-22-30.785 0.001-54.83 13.002-74 38s-30 66.020-30 122c-0 59.399 11.113 100.787 30 126s41.781 38 72 38c22.286 0 41.946-7.975 58-24s27.012-41.6 34-76l82 30c-12.465 51.279-33.010 89.108-62 114s-65.428 38-110 38c-55.149 0-100.493-21.374-136-64s-54-102.072-54-176c-0-78.201 18.304-138.733 54-182s81.829-63.999 140-64zM32 152h330v80h-122v390h-84v-390h-124v-80zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-tomcat"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 360,
+ "id": 235,
+ "prevSize": 16,
+ "code": 59710,
+ "name": "it-app-tomcat"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 62
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM32 152h330v80h-122v390h-84v-390h-124v-80zM416 152h126l74 320 76-320h126v470h-78v-370l-84 370h-80l-82-370v370h-78v-470zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-trend"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 361,
+ "id": 234,
+ "prevSize": 16,
+ "code": 59711,
+ "name": "it-app-trend"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 63
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM450 144c41.156 0 73.198 11.587 94 34s30.956 50.584 32 88l-66 4c-2.833-20.931-8.68-34.831-18-44s-23.361-13.999-42-14c-19.236 0.001-35.115 4.181-46 14-7.009 6.298-10 15.442-10 26-0 9.632 3.439 17.147 10 24 8.35 8.706 29.791 18.553 62 28s54.566 17.905 70 28c15.433 10.095 27.276 24.496 36 42s14 40.253 14 66c-0 23.339-5.562 43.625-16 64s-24.913 36.090-44 46c-19.087 9.91-43.519 16-72 16-41.455 0-71.782-12.198-94-36s-35.676-58.433-40-104l64-8c3.877 26.858 12.145 45.404 24 58s27.869 20 48 20c21.324 0 37.189-6.79 48-18 10.811-11.207 16-22.996 16-38-0-9.632-3.452-19.239-8-26s-10.667-10.998-22-16c-7.754-3.331-26.414-9.479-54-18-35.49-10.928-59.685-24.071-74-40-20.131-22.413-30-49.769-30-82-0-20.746 4.531-39.94 14-58s22.18-32.553 40-42c17.819-9.446 38.799-14 64-14zM32 150h262v70h-98v338h-66v-338h-98v-70zM642 150h98l60 278 58-278h100v408h-62v-320l-64 320h-64l-66-320v320h-60v-408zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-tsm"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 362,
+ "id": 233,
+ "prevSize": 16,
+ "code": 59712,
+ "name": "it-app-tsm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 64
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM24 150h68l50 280 60-280h78l58 286 50-286h66l-78 408h-72l-64-304-66 304h-72l-78-408zM490 154h66v336h164v68h-230v-404zM1024 644l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-weblogic"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 363,
+ "id": 232,
+ "prevSize": 16,
+ "code": 59713,
+ "name": "it-app-weblogic"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 65
+ },
+ {
+ "icon": {
+ "paths": [
+ "M180 2v168h156v278h172v98h-236v-308h-272v786h272v-340h236v338h274v-784h-274v72h-40v-308h-288zM740 2v168h156v852h132v-1020h-288zM336 748v278h132v-278h-132z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-cluster"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 364,
+ "id": 231,
+ "prevSize": 16,
+ "code": 59714,
+ "name": "it-cluster"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 66
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 3.923v80.685h268.592v322.739h140.395v93.101h-208.987v-345.498h-286v873.050h286v-388.941h208.987v35.168h286v-519.277h-286v171.712h-80.395v-322.739zM580.987 3.923v80.685h262.913v589.619h60v-670.304zM426 714.022l-122 291.219h68l24-70.342h124l28 70.342h68l-124-291.219zM646 714.022v291.219h64v-291.219zM746 714.022l96 129.85-104 161.37h74l68-107.578 70 107.578h74l-106-159.296 98-131.923h-74l-60 82.266-62-82.266zM458 769.395l42 113.786h-84z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-cluster-hacmp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 365,
+ "id": 230,
+ "prevSize": 16,
+ "code": 59715,
+ "name": "it-cluster-hacmp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 67
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 4v80h268v324h140v92h-208v-346h-286v874h286v-388h208v34h286v-520h-286v172h-80v-322h-328zM580 4v80h264v590h60v-670h-324zM924 704c-34.513 0-60.822 14.992-82 42-21.178 27.014-32 63.181-32 112-0 46.157 10.934 83.389 32 110s47.28 40 80 40c26.445 0 48.8-8.454 66-24 17.2-15.539 28.604-37.987 36-70l-48-20c-4.146 21.478-10.476 37.997-20 48-9.525 10.016-20.778 16-34 16-17.929 0-32.795-8.262-44-24s-18-42.918-18-80c-0-34.95 6.626-60.397 18-76 11.373-15.61 25.735-22 44-22 13.222 0 24.755 3.2 34 12 9.244 8.806 15.087 20.794 18 36l50-14c-5.603-23.475-14.795-41.462-26-54-18.825-21.21-43.858-32-74-32zM340 710v292h46v-190l100 190h50v-292h-46v196l-102-196h-48zM588 710v292h188v-48h-138v-80h124v-50h-124v-64h134v-50h-184z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-cluster-nec"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 366,
+ "id": 229,
+ "prevSize": 16,
+ "code": 59716,
+ "name": "it-cluster-nec"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 68
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 4v80h268v324h140v92h-208v-346h-286v874h286v-388h208v34h286v-520h-286v172h-80v-322zM580 4v80h264v590h60v-670zM856.41 723.241c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28s-12 24.003-12 38c0 21.754 9.125 40.877 26 56 12 10.752 32.25 20.627 62 28 23.125 5.728 39.5 9.76 46 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 4 9.504 4 16-0 10.125-2.938 18.435-12 26s-24.125 12-42 12c-16.875 0-30.063-5.501-40-14s-16.75-21.875-20-40l-54 6c3.625 30.752 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.312 60-10s29.25-16.253 38-30c8.75-13.747 12-28.25 12-44-0-17.376-2.688-32.186-10-44s-19.063-21.19-32-28c-12.938-6.816-33-13.6-60-20-27-6.374-43-12.112-50-18-5.5-4.627-8-11.504-8-18-0-7.13 2.125-11.776 8-16 9.125-6.611 21.875-10 38-10 15.625 0 28.187 3.792 36 10 7.812 6.189 11.625 15.875 14 30l56-2c-0.875-25.248-10.563-46.877-28-62s-43.5-22-78-22zM423.783 717.518v276h50v-180l112 180h56v-276h-52v184l-112-184z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-cluster-ns"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 367,
+ "id": 228,
+ "prevSize": 16,
+ "code": 59717,
+ "name": "it-cluster-ns"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 69
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 0v80h268v324h140v92h-208v-345.997h-286v873.997h286v-388h208v34.003h286v-520h-286v172h-80v-322.003zM580 0v80h264v590.003h60v-670.003zM483.586 734.24v276h56v-120h108v120h56v-276h-56v108h-108v-108zM806.959 734.24v276h56v-104h36c25.125 0 44.75-1.408 58-3.968 9.75-2.112 18.562-7.437 28-13.997 9.437-6.566 17.875-14.502 24-26.003 6.125-11.494 8-25.12 8-41.997-0-21.875-5.375-40.192-16-54.003s-22.25-23.904-38-28c-10.25-2.688-32.25-3.968-66-3.968zM862.959 782.24h26c20 0 33.375 0.704 40 1.984 9 1.6 16.125 5.504 22 12 5.875 6.502 10 14.003 10 24 0 8.128-1.812 15.853-6 21.997s-10.625 9.12-18 12c-7.375 2.88-22.125 6.016-44 6.016h-30z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-cluster-sg"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 368,
+ "id": 227,
+ "prevSize": 16,
+ "code": 59718,
+ "name": "it-cluster-sg"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 70
+ },
+ {
+ "icon": {
+ "paths": [
+ "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-140c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 652v138c0.439 3.52 2 9.51 2 12 0 122.669 229.23 222 512 222s512-99.331 512-222c0-2.24 1.483-8.499 2-12v-94c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-database"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 369,
+ "id": 226,
+ "prevSize": 16,
+ "code": 59719,
+ "name": "it-database"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 71
+ },
+ {
+ "icon": {
+ "paths": [
+ "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50v-140zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM114 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.187 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM398 716c-41.125 0-74 13.066-98 38-24 24.941-36 61.123-36 106-0 44.998 12.062 79.123 36 104 23.937 24.87 55.75 38 98 38 21.875 0 42-4.128 60-12 22.875 15.373 36.25 23.104 38 24 8 4.365 15.625 7.504 24 10l20-40c-16-5.754-30.375-12.253-44-22 11-12.877 19-26.253 24-40 6.625-18.003 10-38.25 10-62-0-44.877-12.125-81.059-36-106-23.875-24.934-55.25-38-96-38zM904 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40 0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-10-9.498-10-16-0-7.123 4.125-13.776 10-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM574 724v272h194v-46h-138v-226h-56zM396 764c22.625 0 42 8.314 56 24 14 15.693 20 40.25 20 72-0 15.373-0.438 28.128-4 40-3.563 11.878-8.875 21.629-16 30-16.625-12.499-35.75-21.728-54-28l-14 32c11.625 4.128 22.75 10.627 34 18-7.125 2.624-14 4-22 4-21.5 0-39.938-8.064-54-24s-22-39.878-22-72c-0-31.629 7.937-56.25 22-72s31.375-24 54-24z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-database-mssql"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 370,
+ "id": 225,
+ "prevSize": 16,
+ "code": 59720,
+ "name": "it-database-mssql"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 72
+ },
+ {
+ "icon": {
+ "paths": [
+ "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM140 716c-22.375 0-42.875 4.749-60 12-12.875 5.376-23.188 12.877-34 24s-19.75 23.997-26 38c-8.375 18.995-14 42-14 70-0 43.75 13.875 79.059 38 104 24.125 24.934 55.125 38 96 38 40.375 0 73.875-12.938 98-38s36-59.622 36-104c-0-44.749-11.688-80.874-36-106s-57.5-38-98-38zM714 716c-38.5 0-70.375 12.688-94 38s-36 62.253-36 108c-0 43.251 12.5 77.059 36 102 23.5 24.934 53.5 38 90 38 29.5 0 52.812-7.44 72-22 19.187-14.566 33.75-37.997 42-68l-54-16c-4.625 20.128-11.375 34.624-22 44-10.625 9.389-23.25 14.006-38 14-20 0.006-37.5-7.248-50-22-12.5-14.746-18-39.248-18-74-0-32.749 5.313-57.37 18-72 12.687-14.624 29.625-22 50-22 14.75 0 27.687 3.75 38 12s16.75 19.747 20 34l56-12c-6.25-22.003-17.5-40.25-30-52-21-19.878-46.375-30-80-30zM316 722v274h56v-114h12c12.75 0 22.125-0.048 28 2 5.875 2.061 10.75 6.432 16 12 5.25 5.562 15.75 18.63 30 40l40 60h66l-34-54c-13.25-21.376-24.188-35.629-32-44-7.813-8.378-16-14.998-28-22 24.125-3.501 41.875-12.56 54-26 12.125-13.434 18-31.373 18-52-0-16.25-4-29.373-12-42-8-12.621-18.688-23.072-32-28-13.313-4.909-34.625-6-64-6zM874 724v272h146.652v-46h-92.652v-226zM140 764c22.875 0 42.187 8.506 56 24 13.812 15.501 20 38.499 20 70-0 31.878-7.813 56.064-22 72s-31.875 24.006-54 24c-22.125 0.006-39.625-7.936-54-24s-22-40.87-22-72c-0-31.622 8-54.307 22-70 14-15.686 31.125-24 54-24zM372 768h44c22.5 0 35.5-0.64 40 0 9 1.498 17.062 6.304 22 12 4.937 5.683 6 12.746 6 22-0 8.25-2.25 14.496-6 20-3.75 5.485-7.375 9.76-14 12s-23.375 4-50 4h-42z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-database-oracle"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 371,
+ "id": 224,
+ "prevSize": 16,
+ "code": 59721,
+ "name": "it-database-oracle"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 73
+ },
+ {
+ "icon": {
+ "paths": [
+ "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50v-140zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM114 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.187 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM904 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-2.938 20.442-12 28-9.063 7.571-24.125 10-42 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-2.688-32.192-10-44-7.313-11.814-19.063-21.184-32-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 28.187 3.792 36 10 7.812 6.189 11.625 15.875 14 30l56-2c-0.876-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM246 722l100 158v116h56v-114l102-160h-64l-64 108-64-108h-66zM532 722v274h92c35.375-0.256 58.75-0.976 68-2 14.75-1.626 27.937-4.934 38-12 10.062-7.059 16.188-16.186 22-28 5.812-11.808 10-25.501 10-38-0-15.872-5-28.25-14-40s-21.25-21.136-38-26c11.875-5.376 21.062-13.254 28-24 6.937-10.752 10-23.13 10-36-0-11.878-2.375-22.438-8-32s-13.563-16.24-22-22c-8.438-5.773-17.313-10.208-28-12-10.688-1.856-26.25-2-48-2h-110zM586 768h32c26.125 0 42.5-0.64 48 0 9.25 1.126 17.312 4.688 22 10s6 11.501 6 20c-0 8.877-2.563 16.56-8 22-5.437 5.434-12.5 8.848-22 10-5.25 0.96-18.375 0-40 0h-38v-62zM586 876h46c25.25 0 40.437 1.376 48 4s14 8.24 18 14c4 5.747 6 11.75 6 20-0 9.747-2.813 18.176-8 24-5.188 5.85-11.75 8.528-20 10-5.375 1.024-18 2-38 2h-52v-74z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-database-sybase"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 372,
+ "id": 223,
+ "prevSize": 16,
+ "code": 59722,
+ "name": "it-database-sybase"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 74
+ },
+ {
+ "icon": {
+ "paths": [
+ "M514 0c-282.77 0-512 99.331-512 222s229.23 222 512 222c282.77 0 512-99.331 512-222 0-1.383 0.058-2.623 0-4-0.029-0.688 0.043-1.313 0-2-7.57-119.802-234.011-216-512-216zM576 72c40.75 0 74.125 13.059 98 38 23.875 24.934 36 59.13 36 104-0 23.75-3.375 44.003-10 62-5 13.754-13 27.123-24 40 13.625 9.747 28 18.253 44 24l-20 40c-8.375-2.496-18-7.642-26-12-1.75-0.896-13.125-8.627-36-24-18 7.872-38.125 12-60 12-42.25 0-76.063-13.123-100-38s-36-59.002-36-104c-0-44.87 12-79.066 36-104 24-24.941 56.875-38 98-38zM346 76h56v276h-56v-276zM560 120c-15.363 2.954-27.453 12.187-38 24-14.063 15.75-22 38.378-22 70-0 32.128 7.937 56.064 22 72s30.5 24 52 24c8 0 16.875-1.376 24-4-11.25-7.373-24.375-13.878-36-18l16-30c18.25 6.272 35.375 15.501 52 28 7.125-8.378 12.437-20.128 16-32 3.562-11.878 5.999-24.621 6-40-0-31.75-6-56.314-20-72s-33.375-22-56-22c-5.656 0-10.879-0.985-16 0zM0 228v138c1.854 20.829 4 44.253 4 54 0 122.669 229.23 222 512 222s512-99.331 512-222v-148c0 122.669-229.23 222-512 222s-512-99.331-512-222c0-7.227-2.795-30.407-4-44zM0 444v130c1.854 20.829 4 44.253 4 54 0 17.453 5.225 33.711 14 50h238c-150.238-38.674-252-108.698-252-190 0-7.227-2.795-30.407-4-44zM1028 488c0 81.302-101.762 151.326-252 190h238c8.775-16.289 14-32.547 14-50v-140zM0 652v26h2c-0.917-9.45-1.289-17.978-2-26zM114 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.187 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-4.938 20.442-14 28-9.063 7.571-22.125 10-40 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-4.688-32.192-12-44-7.313-11.814-17.063-21.184-30-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 26.187 3.792 34 10 7.812 6.189 13.625 15.875 16 30l56-2c-0.875-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM904 716c-21.125 0-39.063 3.6-54 10-14.938 6.374-26.063 15.814-34 28-7.938 12.192-12 26.003-12 40-0 21.747 9.125 38.87 26 54 12 10.746 32.25 20.621 62 28 23.125 5.728 37.5 9.76 44 12 9.5 3.373 16.188 7.456 20 12 3.812 4.563 6 9.498 6 16-0 10.125-2.938 20.442-12 28-9.063 7.571-24.125 10-42 10-16.875 0-30.063-3.494-40-12-9.938-8.499-16.75-21.875-20-40l-54 6c3.625 30.746 15.375 53.936 34 70s45.25 24 80 24c23.875 0 44-3.318 60-10 16-6.688 27.25-18.246 36-32 8.75-13.747 14-28.25 14-44-0-17.37-2.688-32.192-10-44-7.313-11.814-19.063-21.184-32-28-12.938-6.81-33-13.6-60-20-27-6.381-43-12.112-50-18-5.5-4.621-8-9.498-8-16-0-7.123 2.125-13.776 8-18 9.125-6.611 21.875-10 38-10 15.625 0 28.187 3.792 36 10 7.812 6.189 11.625 15.875 14 30l56-2c-0.876-25.248-10.563-44.87-28-60-17.438-15.123-43.5-24-78-24zM246 722l100 158v116h56v-114l102-160h-64l-64 108-64-108h-66zM532 722v274h92c35.375-0.256 58.75-0.976 68-2 14.75-1.626 27.937-4.934 38-12 10.062-7.059 16.188-16.186 22-28 5.812-11.808 10-25.501 10-38-0-15.872-5-28.25-14-40s-21.25-21.136-38-26c11.875-5.376 21.062-13.254 28-24 6.937-10.752 10-23.13 10-36-0-11.878-2.375-22.438-8-32s-13.563-16.24-22-22c-8.438-5.773-17.313-10.208-28-12-10.688-1.856-26.25-2-48-2h-110zM586 768h32c26.125 0 42.5-0.64 48 0 9.25 1.126 17.312 4.688 22 10s6 11.501 6 20c-0 8.877-2.563 16.56-8 22-5.437 5.434-12.5 8.848-22 10-5.25 0.96-18.375 0-40 0h-38v-62zM586 876h46c25.25 0 40.437 1.376 48 4s14 8.24 18 14c4 5.747 6 11.75 6 20-0 9.747-2.813 18.176-8 24-5.188 5.85-11.75 8.528-20 10-5.375 1.024-18 2-38 2h-52v-74z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-database-sybaseiq"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 373,
+ "id": 222,
+ "prevSize": 16,
+ "code": 59723,
+ "name": "it-database-sybaseiq"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 75
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM0 605.772v320h110c21.777 0 40.987-1.48 54-6 17.395-6.125 29.775-15.063 40-26 13.544-14.438 24.696-34.667 32-58 5.975-19.104 8-41.604 8-68-0-30.041-1.626-55.51-8-76s-15.784-37.854-28-52c-12.217-14.146-26.87-22.458-44-28-12.748-4.083-31.7-6-56-6zM294 605.772v320h224v-54h-164v-88h146v-54h-146v-70h158v-54zM570 607.772v318h204v-54h-146v-264zM818 607.772v318h206v-54h-146v-264zM58 659.772h28c24.035 0 39.767-0.041 48 2 11.021 2.625 20.829 8.563 28 16s12.016 16.729 16 30c3.983 13.271 6 33.209 6 58s-2.017 43.636-6 58c-3.984 14.365-9.693 25.729-16 32s-14.439 9.375-24 12c-7.304 2.042-19.534 4-36 4h-44z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-dellmd"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 374,
+ "id": 221,
+ "prevSize": 16,
+ "code": 59724,
+ "name": "it-diskraid-dellmd"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 76
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM854 613.898c-44.917 0-82.438 14.469-110 44s-40 72.625-40 126c-0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.416 0 61.614-9.010 84-26s38.375-43 48-78l-62-20c-5.396 23.479-15.604 41.063-28 52s-26.792 16-44 16c-23.334 0-41.417-8.792-56-26s-22-45.458-22-86c-0-38.208 7.198-64.937 22-82s34.229-26 58-26c17.208 0 31.969 4.375 44 14s20.208 23.375 24 40l64-16c-7.292-25.666-19.417-44.291-34-58-24.5-23.187-54.771-36-94-36zM42 619.898v320h244v-54h-180v-86h162v-54h-162v-72h174v-54zM340 619.898v320h60v-252l64 252h62l64-252v252h60v-320h-98l-56 218-60-218z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-emc"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 375,
+ "id": 220,
+ "prevSize": 16,
+ "code": 59725,
+ "name": "it-diskraid-emc"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 77
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM906 622.576c-22.115 0-42.363 4.563-58 12s-27.691 17.781-36 32c-8.309 14.219-12 29.667-12 46 0 25.375 8.335 46.354 26 64 12.562 12.542 34.857 23.396 66 32 24.208 6.708 41.195 11.375 48 14 9.945 3.937 16.009 8.677 20 14s6 12.417 6 20c-0 11.813-4.513 21.177-14 30s-23.288 14-42 14c-17.665 0-31.597-6.083-42-16s-18.598-24.854-22-46l-56 6c3.795 35.875 14.503 63.26 34 82s47.622 28 84 28c24.993 0 47.25-4.198 64-12s28.84-19.958 38-36c9.159-16.042 14-33.625 14-52-0-20.271-4.346-36.219-12-50s-18.457-24.052-32-32c-13.544-7.948-33.736-16.562-62-24s-46.672-15.146-54-22c-5.758-5.396-8-10.416-8-18-0-8.312 3.85-15.041 10-20 9.552-7.729 21.12-12 38-12 16.357 0 29.821 2.781 38 10s13.514 19.521 16 36l58-2c-0.916-29.458-9.746-54.354-28-72s-45.884-26-82-26zM0 628.576v320h218v-54h-160v-88h144v-54h-144v-70h156v-54zM248 628.576v54h86v266h58v-266h84v-54zM514 628.576v320h54v-208l116 208h60v-320h-54v214l-118-214z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-eternus"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 376,
+ "id": 219,
+ "prevSize": 16,
+ "code": 59726,
+ "name": "it-diskraid-eternus"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 78
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106h-832zM76 74h872v420h-872v-420zM128 148v132h338v-132h-338zM546 148v132h338v-132h-338zM126 326v130h338v-130h-338zM546 326v130h338v-130h-338zM216 620v322h72v-136h134v-54h-134v-76h154v-56h-226zM728 620v208c-0 25.958-2.021 43.761-8 52-5.663 7.804-14.751 11.587-28 12-12.099-1.212-21.741-7.699-28-18-4.667-7.583-7.271-19.625-8-38h-6l-62 6c0.146 34.271 8.937 60.281 26 78 14.335 14.887 33.371 23.621 58 26 6.9 1.241 14.089 2 22 2 26.979 0 49.521-6.698 66-18s27.729-25.333 34-44c4.667-14.292 6-35.458 6-62v-204h-72z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-fujitsu"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 377,
+ "id": 218,
+ "prevSize": 16,
+ "code": 59727,
+ "name": "it-diskraid-fujitsu"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 79
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM826 618.237c-24.646 0-46.573 4.563-64 12s-30.74 17.782-40 32c-9.26 14.219-14 29.667-14 46-0 25.375 10.312 46.354 30 64 14 12.542 39.292 23.396 74 32 26.979 6.708 44.417 11.375 52 14 11.083 3.937 17.552 8.677 22 14s8 12.417 8 20c-0 11.813-5.427 21.177-16 30s-27.146 14-48 14c-19.688 0-34.406-6.083-46-16s-20.209-24.854-24-46l-62 6c4.229 35.875 16.271 63.26 38 82s53.458 28 94 28c27.854 0 51.333-4.198 70-12s31.791-19.958 42-36c10.208-16.042 16-33.625 16-52-0-20.271-3.469-36.219-12-50s-20.906-24.052-36-32c-15.094-7.948-38.5-16.562-70-24s-51.833-15.146-60-22c-6.417-5.396-10-10.416-10-18-0-8.312 3.146-15.041 10-20 10.646-7.729 27.187-12 46-12 18.229 0 30.885 2.781 40 10s15.229 19.521 18 36l64-2c-1.021-29.458-11.657-54.354-32-72s-49.75-26-90-26zM66 624.237v320h64v-140h128v140h64v-320h-64v126h-128v-126zM390 624.237v320h122c23.916 0 41.708-1.479 56-6 19.104-6.125 34.771-15.062 46-26 14.875-14.437 25.979-32.667 34-56 6.562-19.104 10-41.604 10-68-0-30.041-3-55.51-10-76s-16.584-37.854-30-52c-13.417-14.146-31.188-24.458-50-30-14-4.083-33.313-6-60-6zM454 678.237h30c26.396 0 42.958-0.042 52 2 12.104 2.625 22.125 8.563 30 16s13.625 18.729 18 32c4.375 13.271 8 31.209 8 56s-3.625 43.636-8 58c-4.375 14.365-9.073 25.729-16 32s-15.5 11.375-26 14c-8.021 2.042-21.99 0.371-40 2h-48z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-hds"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 378,
+ "id": 217,
+ "prevSize": 16,
+ "code": 59728,
+ "name": "it-diskraid-hds"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 80
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM732 617.593c-24.727 0-45.075 5.071-64 14-14.229 6.62-28.051 16.298-40 30s-21.093 28.757-28 46c-9.255 23.401-14 51.514-14 86-0 53.884 13.339 97.286 40 128s62.828 46 108 46c44.619 0 79.339-15.132 106-46s40-73.346 40-128c-0-55.115-13.132-99.055-40-130s-63.243-46-108-46zM262 623.593l-118 338h64l26-76h120l28 76h66l-122-338zM480 623.593v60h58v-60zM734 675.593c25.28 0 44.735 8.91 60 28s24 49.204 24 88c-0 39.258-8.321 68.371-24 88s-35.549 30-60 30c-24.451 0-44.114-10.217-60-30s-24-49.665-24-88c-0-38.95 6.528-66.678 22-86s36.72-30 62-30zM294 701.593l42 126h-84zM480 715.593v246h58v-246z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-hpaio"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 379,
+ "id": 216,
+ "prevSize": 16,
+ "code": 59729,
+ "name": "it-diskraid-hpaio"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 81
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM516 617.593c-23.346 0-41.492 4.148-58 12s-29.228 18.99-38 34c-8.772 15.011-14 30.757-14 48-0 26.788 9.351 49.372 28 68 13.261 13.24 37.122 24.917 70 34 25.556 7.082 40.817 11.229 48 14 10.499 4.157 17.787 10.381 22 16s6 11.994 6 20c-0 12.47-3.985 22.686-14 32s-24.246 14-44 14c-18.649 0-35.018-5.531-46-16s-18.408-25.677-22-48l-58 6c4.006 37.873 15.417 66.217 36 86s49.597 30 88 30c26.385 0 48.318-3.763 66-12s32.33-21.065 42-38c9.669-16.935 14-34.602 14-54-0-21.399-3.919-39.451-12-54s-19.703-25.609-34-34c-14.298-8.39-36.162-18.148-66-26s-48.264-14.764-56-22c-6.078-5.696-10-11.994-10-20-0-8.775 3.507-16.765 10-22 10.084-8.159 24.18-12 42-12 17.267 0 31.366 4.38 40 12s13.375 20.604 16 38l62-4c-0.967-31.098-10.73-55.371-30-74s-49.873-28-88-28zM56 623.593v338h56v-266l62 266h58l60-266v266h58v-338h-92l-56 230-54-230zM782 623.593l-118 338h64l26-76h120l28 76h66l-122-338zM814 701.593l42 126h-84z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-hpmsa"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 380,
+ "id": 215,
+ "prevSize": 16,
+ "code": 59730,
+ "name": "it-diskraid-hpmsa"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 82
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM152 625.254v338h62v-338zM272 625.254v338h104c39.094-0.307 63.777-0.769 74-2 16.3-2.001 28.879-7.302 40-16s21.576-21.451 28-36c6.423-14.549 8-28.604 8-44-0-19.552-4.054-37.528-14-52s-23.489-23.996-42-30c13.123-6.62 22.333-16.76 30-30s12-28.142 12-44c-0-14.625-3.784-26.222-10-38s-12.676-22.918-22-30c-9.325-7.082-20.189-11.768-32-14s-29.964-2-54-2zM578 625.254v338h56v-266l62 266h58l60-266v266h58v-338h-92l-56 230-54-230zM334 681.254h34c28.871 0 47.922-0.769 54 0 10.222 1.386 16.82 5.457 22 12s8 15.531 8 26c-0 10.931-1.991 19.303-8 26s-15.501 10.615-26 12c-5.802 0.769-20.102 2-44 2h-40zM334 815.254h50c27.904 0 45.642 2.767 54 6s13.579 6.918 18 14c4.42 7.082 8 15.839 8 26-0 12.009-4.267 22.841-10 30s-12.883 10.153-22 12c-5.94 1.386-19.898 2-42 2h-56z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-ibm"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 381,
+ "id": 214,
+ "prevSize": 16,
+ "code": 59731,
+ "name": "it-diskraid-ibm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 83
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM338 610.576c-23.346 0-43.492 4.148-60 12s-29.228 18.99-38 34c-8.772 15.011-12 30.757-12 48-0 26.788 9.351 49.372 28 68 13.261 13.24 35.122 24.917 68 34 25.556 7.082 42.817 11.229 50 14 10.499 4.157 17.787 10.38 22 16s6 11.994 6 20c-0 12.47-5.985 22.686-16 32s-24.246 14-44 14c-18.649 0-33.018-5.531-44-16s-18.408-25.677-22-48l-60 6c4.006 37.873 17.417 66.217 38 86s49.597 30 88 30c26.385 0 48.318-3.763 66-12s30.33-21.065 40-38c9.67-16.935 16-34.602 16-54-0-21.399-3.919-39.451-12-54s-19.703-25.609-34-34c-14.298-8.39-36.162-18.148-66-26s-50.264-14.764-58-22c-6.078-5.696-8-11.994-8-20-0-8.775 3.507-16.765 10-22 10.084-8.159 24.18-12 42-12 17.267 0 29.366 4.38 38 12s15.375 20.604 18 38l60-4c-0.967-31.098-10.73-55.371-30-74s-47.873-28-86-28zM514 616.576v338h58v-266l60 266h58l60-266v266h58v-338h-92l-54 230-56-230z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-ibmsm"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 382,
+ "id": 213,
+ "prevSize": 16,
+ "code": 59732,
+ "name": "it-diskraid-ibmsm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 84
+ },
+ {
+ "icon": {
+ "paths": [
+ "M545.978 325.073h338.060v129.629h-338.060v-129.629z",
+ "M545.978 147.596h338.060v131.631h-338.060v-131.631z",
+ "M126.045 325.073h337.967v129.629h-337.967v-129.629z",
+ "M128.047 147.596h337.967v131.631h-337.967v-131.631z",
+ "M928.023 0h-832c-53.434 0-96.023 46.732-96.023 105.705v353.001c0 58.973 42.589 107.706 96.023 107.706h832.047c53.341 0 95.977-48.733 95.977-107.706v-353.001c-0.047-58.973-42.636-105.705-96.023-105.705zM948.038 492.637h-872.029v-418.863h872.029v418.863z",
+ "M326.051 844.102c-7.68 22.481-13.405 39.657-17.036 51.293-3.212-10.519-8.332-26.298-15.267-47.383l-75.916-226.444h-63.907v319.814h40.913v-272.244l92.719 272.244h38.353l93.091-267.636v267.636h40.96v-319.814h-57.065l-76.847 222.534z",
+ "M838.982 772.934c-12.753-5.818-36.399-12.614-70.889-20.387-34.444-7.82-55.808-15.407-63.953-22.807-8.378-7.401-12.521-16.849-12.521-28.346 0-13.219 5.818-24.529 17.594-33.932 11.729-9.402 30.394-14.103 56.087-14.103 24.623 0 43.241 5.167 55.855 15.453 12.66 10.38 20.061 25.6 22.202 45.894l40.774-3.119c-0.791-18.665-5.958-35.561-15.732-50.362-9.821-14.801-23.785-26.065-41.937-33.745-18.153-7.587-39.098-11.404-62.883-11.404-21.597 0-41.239 3.631-58.833 10.845-17.641 7.261-31.139 17.92-40.262 31.977-9.216 14.010-13.777 29.091-13.777 45.335 0 14.615 3.77 27.927 11.217 39.75 7.494 11.823 18.944 21.783 34.211 29.789 11.823 6.237 32.396 12.893 61.952 19.968 29.463 7.028 48.454 12.288 57.111 15.593 13.405 5.12 23.040 11.404 28.858 18.851 5.818 7.494 8.751 16.291 8.751 26.298 0 9.914-2.979 18.991-9.030 27.369-6.097 8.332-15.313 14.941-27.695 19.735-12.428 4.841-26.717 7.168-42.915 7.168-18.246 0-34.583-3.119-49.199-9.449-14.615-6.284-25.414-14.569-32.256-24.855-6.935-10.24-11.311-23.366-13.219-39.331l-39.983 3.491c0.559 21.318 6.377 40.495 17.594 57.437 11.124 16.943 26.438 29.603 46.127 37.981 19.596 8.471 43.892 12.66 72.89 12.66 22.993 0 43.567-4.236 61.812-12.614 18.339-8.378 32.349-20.061 42.124-35.095s14.662-31.046 14.662-48.035c0-17.175-4.515-32.396-13.359-45.521-8.844-13.033-22.668-23.831-41.379-32.489z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-macrosan"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 4,
+ 4,
+ 4,
+ 4,
+ 4,
+ 4,
+ 4
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "properties": {
+ "order": 383,
+ "id": 212,
+ "prevSize": 16,
+ "code": 59733,
+ "name": "it-diskraid-macrosan"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 85
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM222 616.576v338h56v-220l124 220h60v-338h-56v226l-124-226zM616 616.576l-118 338h64l26-76h120l28 76h66l-122-338zM648 694.576l42 126h-84z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-netapp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 384,
+ "id": 211,
+ "prevSize": 16,
+ "code": 59734,
+ "name": "it-diskraid-netapp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 86
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0c-53.411 0-96 46.841-96 106v354c0 59.159 42.589 108 96 108h832c53.411 0 96-48.841 96-108v-354c0-59.159-42.589-106-96-106zM76 74h872v420h-872zM128 148v132h338v-132zM546 148v132h338v-132zM126 326v130h338v-130zM546 326v130h338v-130zM210 614.915c-23.346 0-43.492 4.148-60 12s-29.228 18.99-38 34c-8.772 15.011-12 30.757-12 48-0 26.788 9.351 49.372 28 68 13.261 13.24 35.122 24.917 68 34 25.556 7.082 42.817 11.229 50 14 10.499 4.157 17.787 10.38 22 16s6 11.994 6 20c-0 12.47-5.985 22.686-16 32s-24.246 14-44 14c-18.649 0-33.018-5.531-44-16s-18.408-25.677-22-48l-60 6c4.006 37.873 17.417 66.217 38 86s49.597 30 88 30c26.385 0 48.318-3.763 66-12s30.33-21.065 40-38c9.67-16.935 16-34.602 16-54-0-21.399-3.919-39.451-12-54s-19.703-25.609-34-34c-14.298-8.39-36.162-18.148-66-26s-48.264-14.764-56-22c-6.078-5.696-10-11.994-10-20-0-8.775 3.507-16.765 10-22 10.084-8.159 24.18-12 42-12 17.267 0 29.366 4.38 38 12s15.375 20.604 18 38l60-4c-0.967-31.098-10.73-55.371-30-74s-47.873-28-86-28zM386 620.915v180c0 37.873 1.994 66.602 6 86 2.763 13.086 9.297 26.069 18 38s21.012 20.533 36 28c14.988 7.467 36.99 12 66 12 24.036 0 43.081-3.149 58-10s27.090-16.453 36-28c8.91-11.547 14.684-25.219 18-42s6-45.356 6-86v-178h-62v186c0 26.788-0.204 46.454-2 58s-7.159 22.071-16 30c-8.841 7.928-22.594 12-40 12-17.13 0-30.123-5.61-40-14s-17.375-18.144-20-32c-1.52-8.621-2-28.903-2-58v-182zM694 620.915v338h58v-220l122 220h62v-338h-58v226l-124-226z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-diskraid-sun"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 385,
+ "id": 210,
+ "prevSize": 16,
+ "code": 59735,
+ "name": "it-diskraid-sun"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 87
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v176h242v-176h-242zM346 0v176h352v-176h-352zM800 0v176h224v-176h-224zM30 232v176h354v-176h-354zM488 232v176h352v-176h-352zM942 232v176h82v-176h-82zM0 462v178h256v-178h-256zM366 462v178h352v-178h-352zM822 462v178h202v-178h-202zM30 702v176h354v-176h-354zM488 702v176h352v-176h-352zM942 702v176h82v-176h-82zM0 934v90h242v-90h-242zM346 934v90h352v-90h-352zM800 934v90h224v-90h-224z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 386,
+ "id": 209,
+ "prevSize": 16,
+ "code": 59736,
+ "name": "it-firewall"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 88
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM380 478c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.333 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.374 44 14s20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM564 484v320h66v-120h42c29.312 0 50.541-2.928 66-6 11.375-2.477 22.989-6.346 34-14 11.010-7.661 20.854-18.586 28-32 7.146-13.421 10-30.314 10-50-0-25.523-5.604-45.885-18-62s-27.625-27.2-46-32c-11.959-3.2-38.625-4-78-4h-104zM630 538h30c23.333 0 40.271 0.531 48 2 10.5 1.901 19.146 6.416 26 14s10 18.333 10 30c-0 9.478-3.115 16.858-8 24-4.886 7.149-11.396 12.672-20 16-8.604 3.392-26.479 6-52 6h-34v-92z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-checkpoint"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 387,
+ "id": 208,
+ "prevSize": 16,
+ "code": 59737,
+ "name": "it-firewall-checkpoint"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 89
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.964 0-68 30.272-68 68v888c0 37.728 30.036 68 68 68h894c37.964 0 68-30.272 68-68v-888c0-37.728-30.036-68-68-68h-894zM244 64h104v112h354v-112h102v112h162v56h-18v176h18v490h-162v62h-102v-62h-354v62h-104v-62h-180v-490h322v-176h-322v-56h180v-112zM492 232v176h354v-176h-354zM340 492c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.416 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.334 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.355 44 14 12.031 9.626 20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM714 492c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-15.604 41.062-28 52-12.396 10.963-26.792 16-44 16-23.333 0-41.417-8.79-56-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.355 44 14 12.031 9.626 20.208 23.373 24 40l64-16c-7.292-25.67-19.417-44.291-34-58-24.5-23.187-54.771-36-94-36z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-cisco"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 388,
+ "id": 207,
+ "prevSize": 16,
+ "code": 59738,
+ "name": "it-firewall-cisco"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 90
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM266 478c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.333 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.374 44 14s20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM768 478c-44.917 0-82.438 14.47-110 44s-40 72.624-40 126c0 50.458 12.583 88.906 40 118s63.417 44 106 44c34.417 0 61.614-9.008 84-26s38.375-42.998 48-78l-62-20c-5.396 23.482-13.604 41.062-26 52-12.396 10.963-26.792 16-44 16-23.333 0-43.417-8.79-58-26s-22-45.456-22-86c-0-38.208 7.198-64.938 22-82s34.229-26 58-26c17.208 0 31.969 4.374 44 14s20.208 23.373 24 40l64-16c-7.292-25.67-17.417-44.291-32-58-24.5-23.187-56.771-36-96-36zM420 594v96h150v-96h-150z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-cisco2"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 389,
+ "id": 206,
+ "prevSize": 16,
+ "code": 59739,
+ "name": "it-firewall-cisco2"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 91
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.964 0-68 30.272-68 68v888c0 37.728 30.036 68 68 68h894c37.964 0 68-30.272 68-68v-888c0-37.728-30.036-68-68-68h-894zM244 64h104v112h354v-112h102v112h162v56h-18v176h18v490h-162v62h-102v-62h-354v62h-104v-62h-180v-490h322v-176h-322v-56h180v-112zM492 232v176h354v-176h-354zM396 496v206c-0 25.958-4.021 43.76-10 52s-15.563 12-30 12c-14.292 0-25-6.479-32-18-4.667-7.583-7.271-19.625-8-38l-60 6c0.146 34.271 8.937 60.281 26 78s40.354 28 72 28c26.979 0 49.521-6.698 66-18s27.729-25.333 34-44c4.666-14.292 6-35.458 6-62v-202h-64zM530 496v320h64v-122h42c29.312 0 52.542-0.938 68-4 11.375-2.479 22.989-8.344 34-16s18.854-16.583 26-30c7.146-13.416 12-30.312 12-50-0-25.521-7.604-45.885-20-62s-27.625-27.187-46-32c-11.959-3.208-36.625-4-76-4h-104zM594 550h32c23.333 0 38.271 0.542 46 2 10.5 1.896 19.146 6.417 26 14s10 16.334 10 28c-0 9.479-1.115 18.854-6 26s-13.396 12.646-22 16c-8.604 3.354-24.479 4-50 4h-36v-90z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-juniper"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 390,
+ "id": 205,
+ "prevSize": 16,
+ "code": 59740,
+ "name": "it-firewall-juniper"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 92
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v82h-154v322h154v86h-160v62h-102v-62h-352v62h-104v-62h-178v-86h24v-210l100 210h50v-322h-46v214l-102-214h-26v-82h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM306 490v322h168v-54h-102v-88h84v-54h-84v-72h96v-54h-162zM500 490l92 186v136h50v-136l90-186h-58l-56 128-58-128h-60zM870 544h90v72h-90v-72zM870 670h90v88h-90v-88z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-neteye"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 391,
+ "id": 204,
+ "prevSize": 16,
+ "code": 59741,
+ "name": "it-firewall-neteye"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 93
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v112h352v-112h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h320v-176h-320v-56h178v-112zM488 232v176h352v-176h-352zM122 498v54h148l-168 208v58h260v-54h-182l176-216v-50h-234zM380 498v54h96v266h64v-266h96v-54h-256zM678 498v320h244v-54h-180v-88h162v-54h-162v-70h174v-54h-238z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-zte"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 392,
+ "id": 203,
+ "prevSize": 16,
+ "code": 59742,
+ "name": "it-firewall-zte"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 94
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v12c-36.731 40.161-60 93.286-60 152 0 1.333-0.023 2.673 0 4h-222v-56h178v-112zM698 64h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h312c37.915 28.819 84.701 46 136 46s98.085-17.181 136-46h192v-176h-102c0.023-1.34 0-2.655 0-4 0-47.763-14.694-91.517-40-128v-36zM418 98h188v48h-132v64h114v46h-114v118h-56v-276zM122 498v54h148l-146 180-22 28v58h260v-54h-182l176-216v-50h-234zM380 498v54h96v266h64v-266h96v-54h-256zM678 498v320h244v-54h-180v-88h162v-54h-162v-70h174v-54h-238z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-ztemf"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 393,
+ "id": 202,
+ "prevSize": 16,
+ "code": 59743,
+ "name": "it-firewall-ztemf"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 95
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-37.728 0-68 30.272-68 68v888c0 37.728 30.272 68 68 68h888c37.728 0 68-30.272 68-68v-888c0-37.728-30.272-68-68-68h-888zM242 64h104v12c-36.731 40.161-60 93.286-60 152 0 1.333-0.023 2.673 0 4h-222v-56h178v-112zM698 64h102v112h160v56h-18v176h18v490h-160v62h-102v-62h-352v62h-104v-62h-178v-490h312c37.915 28.819 84.701 46 136 46s98.085-17.181 136-46h192v-176h-102c0.023-1.34 0-2.655 0-4 0-47.763-14.694-91.517-40-128v-36zM410 98h56v148c-0 23.625 0.625 39 2 46 2.375 11.25 7.062 21.188 16 28s20.5 10 36 10c15.75 0 28-3.562 36-10s12.375-14.625 14-24c1.625-9.375 4-24.25 4-46v-152h54v144c-0 33-1 56.375-4 70s-7.938 24.625-16 34c-8.063 9.375-18.5 16.438-32 22s-32.25 8-54 8c-26.25-0-46.438-1.937-60-8s-24.125-14.312-32-24c-7.875-9.687-11.5-19.375-14-30-3.625-15.75-6-39.25-6-70v-146zM122 498v54h148l-146 180-22 28v58h260v-54h-182l176-216v-50h-234zM380 498v54h96v266h64v-266h96v-54h-256zM678 498v320h244v-54h-180v-88h162v-54h-162v-70h174v-54h-238z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-firewall-zteutm"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 394,
+ "id": 201,
+ "prevSize": 16,
+ "code": 59744,
+ "name": "it-firewall-zteutm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 96
+ },
+ {
+ "icon": {
+ "paths": [
+ "M260 2c-65.696 7.147-134.149 50.113-186 122-94.814 131.45-98.966 314.24-10 410 37.902 40.797 87.3 58.623 138 56v402c42.667 47.332 85.333 40.057 128 0v-456c23.249-18.201 46.339-38.742 66-66 94.814-131.45 100.966-316.24 12-412-33.362-35.91-75.78-53.99-120-56-9.213-0.419-18.615-1.021-28 0zM484 46c54.103 128.562 67.65 281.261-28 418-34.982 50.009-66.676 94.444-104 130l102 12c620.106-30.772 784.298-551.082 242-514-68.87 4.709-170.379-12.038-212-46zM270 106c28.56 1.298 54.453 12.807 76 36 57.459 61.847 55.236 181.102-6 266s-158.541 103.847-216 42c-57.459-61.847-53.236-181.102 8-266 38.272-53.061 90.4-80.163 138-78z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-gather"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 395,
+ "id": 200,
+ "prevSize": 16,
+ "code": 59745,
+ "name": "it-gather"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 97
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM164 352h64v320h-64v-320zM290 352h128c25.375 0 45.531-0.115 58 2s24.156 7.292 34 14c9.843 6.709 17.437 14.844 24 26s10 24.146 10 38c-0 15.021-3.907 29.459-12 42s-20.146 21.729-34 28c19.541 5.688 35.5 16.292 46 30s16 29.479 16 48c-0 14.583-3.219 28.219-10 42s-16.261 23.76-28 32c-11.74 8.24-26.792 14.104-44 16-10.792 1.167-36.729 1.708-78 2h-110v-320zM614 352h104c39.375 0 66.041 0.792 78 4 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.584-10 50s-16.99 24.344-28 32c-11.011 7.656-22.625 11.521-34 14-15.459 3.063-36.688 6-66 6h-44v120h-64v-320zM356 406v74h42c25.229 0 39.875-1.27 46-2 11.083-1.312 19.656-5.656 26-12s10-13.646 10-24c-0-9.916-2.531-17.802-8-24s-13.209-10.687-24-12c-6.417-0.729-25.521 0-56 0h-36zM678 406v90h36c25.521 0 43.396-0.646 52-4s15.114-8.854 20-16c4.885-7.146 8-14.521 8-24-0-11.666-5.146-22.416-12-30s-15.5-12.104-26-14c-7.729-1.458-22.667-2-46-2h-32zM356 532v86h60c23.333 0 37.729-0.687 44-2 9.625-1.75 17.948-5.219 24-12s8-16.625 8-28c-0-9.625-1.334-17.292-6-24s-11.177-10.937-20-14c-8.823-3.062-28.542-6-58-6h-52z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-ibp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 396,
+ "id": 199,
+ "prevSize": 16,
+ "code": 59746,
+ "name": "it-ibp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 98
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h768c70.912 0 128-57.088 128-128v-768c0-70.912-57.088-128-128-128h-768zM164 170h64v322h-64v-322zM290 170h128c25.375 0 45.531 1.886 58 4s24.156 7.292 34 14c9.843 6.709 17.437 14.844 24 26s10 24.146 10 38c-0 15.021-3.907 27.459-12 40s-20.146 21.729-34 28c19.541 5.688 35.5 16.292 46 30s16 29.479 16 48c-0 14.583-3.219 28.219-10 42s-16.261 25.76-28 34c-11.74 8.24-26.792 14.104-44 16-10.792 1.167-36.729 1.708-78 2h-110v-322zM614 170h104c39.375 0 66.041 2.792 78 6 18.375 4.813 33.604 13.886 46 30s18 38.479 18 64c-0 19.688-2.854 34.584-10 48s-16.99 24.344-28 32c-11.011 7.656-22.625 13.521-34 16-15.459 3.063-36.688 4-66 4h-44v122h-64v-322zM356 224v74h42c25.229 0 39.875 0.73 46 0 11.083-1.312 19.656-5.656 26-12s10-15.646 10-26c-0-9.916-2.531-17.802-8-24s-13.209-8.687-24-10c-6.417-0.729-25.521-2-56-2h-36zM678 224v92h36c25.521 0 43.396-2.646 52-6s15.114-6.854 20-14c4.885-7.146 8-16.521 8-26-0-11.666-5.146-20.416-12-28s-15.5-12.104-26-14c-7.729-1.458-22.667-4-46-4h-32zM356 352v86h60c23.333 0 37.729-0.687 44-2 9.625-1.75 17.948-7.219 24-14s8-14.625 8-26c-0-9.625-1.334-19.292-6-26s-11.177-10.937-20-14c-8.823-3.062-28.542-4-58-4h-52zM196 598c27.125 0 48.5 7.375 64 22s24 34.25 24 56c-0 12.375-3.563 22.813-8 34s-10.375 23.75-20 36c-6.375 8.125-17.375 18.75-34 34s-27.563 25-32 30c-4.438 5-9.25 11.25-12 16h106v48h-186c2-18.5 8-35.438 18-52s30.5-38.625 60-66c23.75-22.125 38.625-36.125 44-44 7.25-10.875 10-23.375 10-34-0-11.75-1.688-19.687-8-26s-14.875-10-26-10c-11 0-21.5 3.375-28 10s-9 18.625-10 34l-52-6c3.125-29 11.5-49.375 28-62s37.25-20 62-20zM408 598c26.625 0 47 11 62 30 17.875 22.5 28 57.875 28 110-0 52-10 91.25-28 114-14.875 18.75-35.375 28-62 28-26.75 0-47.625-11.437-64-32s-24-57.25-24-110c-0-51.75 8-89.25 26-112 14.875-18.75 35.375-28 62-28zM622 598c26.625 0 47 11 62 30 17.875 22.5 28 57.875 28 110-0 52-10 91.25-28 114-14.875 18.75-35.375 28-62 28-26.75 0-47.625-11.437-64-32s-26-57.25-26-110c-0-51.75 10-89.25 28-112 14.875-18.75 35.375-28 62-28zM836 598c26.625 0 47 11 62 30 17.875 22.5 28 57.875 28 110-0 52-10 91.25-28 114-14.875 18.75-35.375 28-62 28-26.75 0-47.625-11.437-64-32s-26-57.25-26-110c0-51.75 10-89.25 28-112 14.875-18.75 35.375-28 62-28zM408 642c-6.375 0-11 1.937-16 6s-9.25 11.5-12 22c-3.625 13.625-6 35.75-6 68s2.75 55.938 6 68c3.25 12.063 7.062 20 12 24s9.625 6 16 6c6.375 0 13-1.937 18-6s9.25-11.5 12-22c3.625-13.5 4-37.75 4-70s-0.75-53.937-4-66c-3.25-12.062-7.063-19.937-12-24s-11.625-5.999-18-6zM622 642c-6.375 0-11 1.937-16 6s-9.25 11.5-12 22c-3.625 13.625-6 35.75-6 68s0.75 55.938 4 68c3.25 12.063 9.062 20 14 24s9.625 6 16 6c6.375 0 13-1.937 18-6s7.25-11.5 10-22c3.625-13.5 6-37.75 6-70s-0.75-53.937-4-66c-3.25-12.062-7.063-19.937-12-24s-11.625-5.999-18-6zM836 642c-6.375 0-13 1.937-18 6s-7.25 11.5-10 22c-3.625 13.625-6 35.75-6 68s0.75 55.938 4 68c3.25 12.063 7.062 20 12 24s11.625 6 18 6c6.375 0 11-1.937 16-6s9.25-11.5 12-22c3.625-13.5 6-37.75 6-70s-0.75-53.937-4-66c-3.25-12.062-9.063-19.937-14-24s-9.625-5.999-16-6z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-ibp-ibp2000"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 397,
+ "id": 198,
+ "prevSize": 16,
+ "code": 59747,
+ "name": "it-ibp-ibp2000"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 99
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.229-512 512s229.23 512 512 512c282.77 0 512-229.229 512-512s-229.23-512-512-512zM460 100c-0.035 0.64 0 1.344 0 1.984v144h-106c13.653-49.069 32.968-94.080 54-136 16.822-4.352 34.424-7.789 52-10.003zM564 100c14.799 1.856 29.727 4.608 44 8 21.464 42.010 40.007 88.672 54 138.003h-98v-144c0-0.64 0.035-1.344 0-1.984zM728 158.003c38.764 23.725 74.975 53.293 104 88h-74c-8.692-30.573-18.367-60.154-30-88zM286 164.019c-10.493 26.163-20.063 53.523-28 82.003h-66c26.566-31.763 59.179-59.334 94-82.003zM894 346.022c15.484 35.52 24.974 74.131 30 113.997h-134c-1.3-38.579-4.291-75.648-10-112h102c3.699 0 8.643-0.96 12-1.984zM128 348.006h110c-5.555 36.416-10.864 73.389-12 112h-126c4.91-38.938 13.095-77.184 28-112zM332 348.006h128v112h-138c1.129-38.362 4.536-75.872 10-112zM564 348.006h120c5.637 36.122 8.706 73.606 10 112h-130v-112zM100 564.006h128c3.115 38.906 10.371 75.571 18 112h-118c-14.905-34.816-23.090-73.062-28-112zM324 564.006h136v112h-120c-7.481-36.346-12.966-73.126-16-112zM564 564.006h130c-2.897 38.304-8.783 76.128-16 112h-114v-112zM788 564.006h136c-4.91 38.938-13.095 77.184-28 112h-124c7.324-35.814 13.028-73.824 16-112zM194 780.006h78c12.495 36.038 29.429 68.461 46 100-47.143-24.954-89.788-59.642-124-100zM368 780.006h92v144c-7.868-0.96-16.275-0.64-24-1.984-26.587-42.522-49.947-89.542-68-142.003zM564 780.006h86c-17.597 51.622-40.138 99.91-66 142.003-6.473 1.152-13.428 1.152-20 1.984v-144zM746 780.006h84c-35.169 41.491-79.231 76.851-128 102.003 16.61-31.923 31.55-65.536 44-102.003z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-net"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 398,
+ "id": 197,
+ "prevSize": 16,
+ "code": 59748,
+ "name": "it-net"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 100
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM248 230l124 32-142 528-122-32 140-528zM448 232h128v546h-128v-546zM774 234l142 528-124 32-142-528 124-32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 399,
+ "id": 196,
+ "prevSize": 16,
+ "code": 59749,
+ "name": "it-other"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 101
+ },
+ {
+ "icon": {
+ "paths": [
+ "M832 0h-640c-105.984 0-192 85.969-192 192v640c0 106.031 86.016 192 192 192h640c106.031 0 192-85.969 192-192v-640c0-106.031-85.969-192-192-192zM607.697 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012c-44.218 0-80.012-35.84-80.012-80.012s35.747-80.012 80.012-80.012zM392.332 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012-80.012-35.84-80.012-80.012 35.84-80.012 80.012-80.012zM177.012 245.015c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012 80.012 35.84 80.012 80.012-35.84 80.012-80.012 80.012zM574.65 945.99l-45.382-117.993h-162.863l-42.775 117.993h-54.691l149.551-389.446h55.529l159.372 389.446h-58.74zM607.697 511.023c-44.218 0-80.012-35.84-80.012-80.012s35.793-80.012 80.012-80.012c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012zM715.171 945.99h-47.802v-389.446h47.802v389.446zM823.017 511.023c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012 79.965 35.84 79.965 80.012-35.793 80.012-79.965 80.012zM823.017 245.015c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012 79.965 35.84 79.965 80.012-35.793 80.012-79.965 80.012z",
+ "M445.021 597.504c-4.934 24.948-11.962 49.757-20.945 74.38l-42.775 114.176h132.049l-40.681-107.753c-12.428-32.815-21.597-59.811-27.648-80.803z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-alteon"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 4,
+ 4
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "properties": {
+ "order": 400,
+ "id": 195,
+ "prevSize": 16,
+ "code": 59750,
+ "name": "it-other-alteon"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 102
+ },
+ {
+ "icon": {
+ "paths": [
+ "M816.035 622.871c-8.611-2.281-24.436-3.398-47.569-3.398h-98.49v137.681h99.561c32.954 0 56.32-6.144 70.191-18.432 13.824-12.241 20.713-29.51 20.713-51.712 0-16.151-4.049-29.929-12.195-41.425-8.192-11.45-18.944-19.037-32.209-22.714z",
+ "M832 0h-640c-105.984 0-192 85.969-192 192v640c0 105.984 86.016 192 192 192h640.047c105.937 0 191.953-86.016 191.953-192v-640c0-106.031-86.016-192-192-192zM823.017 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012-80.012-35.84-80.012-80.012c0-44.172 35.793-80.012 80.012-80.012zM823.017 350.999c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012-80.012-35.84-80.012-80.012c0-44.172 35.793-80.012 80.012-80.012zM607.744 84.992c44.125 0 80.012 35.84 80.012 80.012s-35.887 80.012-80.012 80.012c-44.265 0-80.058-35.84-80.058-80.012s35.747-80.012 80.058-80.012zM392.332 84.992c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012zM177.012 245.015c-44.172 0-80.012-35.84-80.012-80.012s35.84-80.012 80.012-80.012c44.172 0 80.012 35.84 80.012 80.012s-35.84 80.012-80.012 80.012zM520.192 959.162l-44.916-116.643h-161.094l-42.31 116.643h-54.132l147.921-385.164h54.924l157.649 385.164h-58.042zM527.686 431.011c0-44.172 35.793-80.012 80.058-80.012 44.125 0 80.012 35.84 80.012 80.012s-35.887 80.012-80.012 80.012c-44.311 0-80.058-35.84-80.058-80.012zM881.711 768.559c-20.852 22.668-58.554 34.025-113.012 34.025h-98.769v156.579h-51.014v-385.164h145.315c25.553 0 45.103 1.21 58.601 3.677 18.897 3.119 34.769 9.123 47.523 18.013s23.087 21.225 30.86 37.19c7.82 15.965 11.683 33.466 11.683 52.55 0.047 32.768-10.333 60.416-31.185 83.13z",
+ "M391.959 614.447c-4.887 24.716-11.823 49.245-20.759 73.588l-42.31 112.966h130.607l-40.215-106.682c-12.241-32.349-21.364-59.020-27.322-79.872z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-appdirector"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 4,
+ 4,
+ 4
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ },
+ {
+ "fill": "rgb(100, 148, 206)"
+ }
+ ],
+ "properties": {
+ "order": 401,
+ "id": 194,
+ "prevSize": 16,
+ "code": 59751,
+ "name": "it-other-appdirector"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 103
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM518 230h186c36.836 0.001 65.899 2.491 84 6s33.71 10.875 48 22c14.289 11.126 26.473 25.499 36 44 9.526 18.503 14 39.023 14 62-0 24.912-6.251 47.2-18 68s-27.889 37.6-48 48c28.367 9.433 50.757 25.266 66 48s22 49.284 22 80c-0 24.186-4.156 47.145-14 70s-22.959 40.335-40 54c-17.042 13.665-39.020 22.856-64 26-15.666 1.936-52.089 3.521-112 4h-160v-532zM124 234h94v438h234v90h-328v-528zM612 318v124h62c36.624 0.001 59.108-0.803 68-2 16.089-2.175 28.791-9.479 38-20s14-24.828 14-42c-0-16.446-4.061-29.72-12-40-7.939-10.278-18.334-15.823-34-18-9.315-1.211-37.755-2-82-2h-54zM612 530v142h88c33.872 0 54.897-1.825 64-4 13.972-2.9 25.214-8.754 34-20s14-27.135 14-46c-0-15.962-3.226-28.874-10-40-6.775-11.125-17.192-18.921-30-24-12.808-5.083-41.237-7.999-84-8h-76z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-atca-lb10"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 402,
+ "id": 193,
+ "prevSize": 16,
+ "code": 59752,
+ "name": "it-other-atca-lb10"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 104
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM528 330c37.548 0.001 68.55 12.645 92 38 13.958 14.991 23.021 37.933 30 66l-60 16c-3.629-18.179-12.484-33.475-24-44s-25.529-13.999-42-14c-22.752 0.001-39.832 9.342-54 28s-22 48.219-22 90c-0 44.333 8.041 75.183 22 94s31.666 28 54 28c16.471 0 30.135-6.038 42-18 11.864-11.96 20.835-30.325 26-56l60 22c-9.213 38.273-24.574 67.422-46 86s-49.058 28-82 28c-40.759 0-73.758-16.186-100-48s-40-76.823-40-132c-0-58.366 13.618-103.707 40-136s61.008-47.999 104-48zM812 330c38.525 0.001 68.528 10.704 88 30s29.023 43.787 30 76l-62 4c-2.653-18.020-7.276-30.106-16-38s-22.552-12-40-12c-18.007 0-31.81 3.55-42 12-6.561 5.425-10 12.911-10 22-0 8.293 3.859 14.1 10 20 7.817 7.495 25.85 15.867 56 24s51.553 17.309 66 26c14.447 8.691 25.834 20.93 34 36s14 33.834 14 56c-0 20.093-6.23 38.458-16 56s-24.133 29.468-42 38c-17.867 8.532-39.339 14-66 14-38.805 0-69.202-11.508-90-32s-31.952-48.77-36-88l60-8c3.629 23.124 10.903 41.156 22 52s25.156 16 44 16c19.96 0 35.88-4.351 46-14 10.12-9.647 16-21.083 16-34-0-8.292-3.743-16.179-8-22s-11.392-11.694-22-16c-7.259-2.866-24.177-6.664-50-14-33.221-9.409-56.6-22.285-70-36-18.844-19.296-28-42.252-28-70 0-17.86 5.136-34.451 14-50 8.864-15.548 21.32-27.867 38-36s36.41-11.999 60-12zM84 336h62v190c-0 30.139 2.464 51.070 4 60 2.652 14.352 8.020 25.309 18 34s24.691 12 42 12c17.587 0 29.066-3.786 38-12 8.933-8.213 16.185-18.040 18-30s2-32.252 2-60v-194h62v184c-0 42.1-2.65 72.618-6 90s-8.997 32.040-18 44c-9.003 11.96-20.925 20.904-36 28s-33.712 12-58 12c-29.313 0-52.855-4.264-68-12-15.145-7.735-27.206-17.641-36-30s-13.208-26.445-16-40c-4.048-20.093-8-48.77-8-88v-188z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-cisco-ucs"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 403,
+ "id": 192,
+ "prevSize": 16,
+ "code": 59753,
+ "name": "it-other-cisco-ucs"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 105
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM528 330c37.548 0.001 68.55 12.645 92 38 13.958 14.991 23.021 37.933 30 66l-60 16c-3.629-18.179-12.484-33.475-24-44s-25.529-13.999-42-14c-22.752 0.001-39.832 9.342-54 28s-22 48.219-22 90c-0 44.333 8.041 75.183 22 94s31.666 28 54 28c16.471 0 30.135-6.038 42-18 11.864-11.96 20.835-30.325 26-56l60 22c-9.213 38.273-24.574 67.422-46 86s-49.058 28-82 28c-40.759 0-73.758-16.186-100-48s-40-76.823-40-132c-0-58.366 13.618-103.707 40-136s61.008-47.999 104-48zM812 330c38.525 0.001 68.528 10.704 88 30s29.023 43.787 30 76l-62 4c-2.653-18.020-7.276-30.106-16-38s-22.552-12-40-12c-18.007 0-31.81 3.55-42 12-6.561 5.425-10 12.911-10 22-0 8.293 1.859 14.1 8 20 7.817 7.495 27.85 15.867 58 24s51.553 17.309 66 26c14.447 8.691 25.834 20.93 34 36s12 33.834 12 56c-0 20.093-4.23 38.458-14 56s-24.133 29.468-42 38c-17.867 8.532-39.339 14-66 14-38.805 0-69.202-11.508-90-32s-31.952-48.77-36-88l60-8c3.629 23.124 10.903 41.156 22 52s25.156 16 44 16c19.96 0 35.88-4.351 46-14 10.12-9.647 14-21.083 14-34-0-8.292-1.743-16.179-6-22s-11.392-11.694-22-16c-7.259-2.866-24.177-6.664-50-14-33.221-9.409-56.6-22.285-70-36-18.844-19.296-28-42.252-28-70 0-17.86 5.137-34.451 14-50 8.864-15.548 21.32-27.867 38-36s36.41-11.999 60-12zM86 336h112c25.544 0.001 44.6 3.533 58 8 18.006 6.061 35.158 16.532 48 32s21.3 33.595 28 56c6.7 22.405 10 51.149 10 84-0 28.864-3.719 53.109-10 74-7.677 25.515-17.763 46.212-32 62-10.748 11.96-25.715 21.302-44 28-13.679 4.946-31.108 8-54 8h-116v-352zM148 396v232h46c17.308 0 28.323-1.77 36-4 10.050-2.873 19.37-7.142 26-14s11.812-18.292 16-34c4.187-15.708 6-36.89 6-64s-1.813-47.488-6-62c-4.188-14.512-10.463-25.866-18-34s-16.415-13.129-28-16c-8.654-2.23-26.735-4-52-4h-26z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-dcs"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 404,
+ "id": 191,
+ "prevSize": 16,
+ "code": 59754,
+ "name": "it-other-dcs"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 106
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM88 336h112c25.544 0.001 46.6 3.533 60 8 18.006 6.061 33.158 16.532 46 32s21.3 33.595 28 56c6.7 22.405 10 51.149 10 84-0 28.864-1.719 53.109-8 74-7.677 25.515-19.763 46.212-34 62-10.748 11.96-25.715 21.302-44 28-13.679 4.946-31.108 8-54 8h-116v-352zM748 336h66l122 352h-66l-28-80h-122l-26 80h-66l120-352zM400 340h62v288h154v60h-216v-348zM150 396v232h46c17.308 0 30.323-1.77 38-4 10.050-2.873 17.37-7.142 24-14s11.812-18.292 16-34c4.187-15.708 6-36.89 6-64s-1.813-47.488-6-62c-4.188-14.512-10.463-25.866-18-34s-16.415-13.129-28-16c-8.654-2.23-24.735-4-50-4h-28zM780 418l-42 130h84l-42-130z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-delta"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 405,
+ "id": 190,
+ "prevSize": 16,
+ "code": 59755,
+ "name": "it-other-delta"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 107
+ },
+ {
+ "icon": {
+ "paths": [
+ "M799.651 382.836c-9.123-2.42-26.159-3.677-50.921-3.677h-105.472v147.363h106.589c35.281 0 60.276-6.563 75.124-19.689 14.708-13.126 22.295-31.604 22.295-55.389 0-17.268-4.422-32.023-13.126-44.311-8.797-12.241-20.294-20.34-34.49-24.297z",
+ "M887.994 0h-751.988c-75.59 0-136.006 60.416-136.006 136.006v751.988c0 75.543 60.416 136.006 136.006 136.006h751.988c75.543 0 136.006-60.463 136.006-136.006v-751.988c0-75.59-60.463-136.006-136.006-136.006zM445.021 617.705c-7.308 24.204-16.663 44.172-28.113 60.044-11.45 15.919-23.971 28.3-37.562 37.423s-30.022 16.012-49.199 20.666c-19.223 4.655-41.286 7.028-66.234 7.028h-148.759v-412.346h142.010c32.070 0 56.506 1.955 73.402 5.911 23.599 5.446 43.753 15.313 60.463 29.556 21.737 18.339 37.981 41.844 48.826 70.423 10.752 28.579 16.151 61.254 16.151 98.025-0.047 31.279-3.677 59.066-10.985 83.27zM869.981 538.81c-22.342 24.297-62.65 36.445-121.018 36.445h-105.705v167.61h-54.551v-412.346h155.555c27.369 0 48.221 1.303 62.743 3.956 20.294 3.351 37.143 9.775 50.874 19.27 13.638 9.495 24.762 22.714 33.001 39.75 8.425 17.082 12.614 35.84 12.614 56.227 0 35.142-11.217 64.791-33.513 89.088z",
+ "M326.889 387.631c-14.615-5.632-38.167-8.471-70.609-8.471h-86.575v315.020h88.064c27.183 0 48.5-2.56 64-7.54 15.453-5.12 27.788-12.288 36.957-21.364 12.94-12.986 22.993-30.394 30.208-52.224 7.215-21.783 10.845-48.314 10.845-79.407 0-43.148-7.075-76.288-21.225-99.468-14.196-23.133-31.418-38.679-51.665-46.545z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(96, 140, 193)"
+ },
+ {
+ "fill": "rgb(96, 140, 193)"
+ },
+ {
+ "fill": "rgb(96, 140, 193)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-dp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 3,
+ 3,
+ 3
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(96, 140, 193)"
+ },
+ {
+ "fill": "rgb(96, 140, 193)"
+ },
+ {
+ "fill": "rgb(96, 140, 193)"
+ }
+ ],
+ "properties": {
+ "order": 406,
+ "id": 189,
+ "prevSize": 16,
+ "code": 59756,
+ "name": "it-other-dp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 108
+ },
+ {
+ "icon": {
+ "paths": [
+ "M743.936 0h-471.459c-152.623 0-276.294 124.975-276.294 279.133v465.734c0 154.159 123.671 279.133 276.294 279.133h471.505c152.529 0 276.247-125.021 276.247-279.133v-465.734c-0.047-154.159-123.718-279.133-276.294-279.133zM234.17 777.123c-8.657 25.088-21.504 44.172-38.54 57.297-17.082 13.079-37.050 19.642-60.044 19.642-24.343 0-44.265-7.168-59.671-21.597-15.453-14.383-24.716-34.583-27.834-60.695l36.771-3.584c3.119 18.385 9.030 31.744 17.827 39.983 8.751 8.285 20.015 12.428 33.792 12.428 11.729 0 22.063-2.886 30.906-8.611 8.844-5.679 16.105-13.359 21.783-22.9 5.679-9.588 10.426-22.481 14.243-38.772s5.725-32.861 5.725-49.711c0-1.815-0.047-4.515-0.186-8.145-7.68 12.94-18.106 23.459-31.325 31.558-13.219 8.052-27.555 12.102-43.008 12.102-25.786 0-47.569-9.961-65.443-29.882-17.827-19.875-26.764-46.080-26.764-78.615 0-33.606 9.309-60.649 27.927-81.129s41.937-30.72 70.004-30.72c20.247 0 38.772 5.818 55.529 17.408 16.756 11.636 29.51 28.16 38.214 49.617 8.751 21.457 13.079 52.55 13.079 93.231-0 42.356-4.329 76.009-12.986 101.097zM402.991 92.486h214.063v40.401h-174.871v104.82h163.747v40.169h-163.747v116.503h181.76v40.401h-220.951v-342.295zM476.113 779.171c-7.494 23.878-18.711 42.356-33.652 55.343-14.941 13.033-33.839 19.549-56.599 19.549-30.022 0-53.62-11.45-70.749-34.304-20.527-27.601-30.813-72.518-30.813-134.749 0-39.191 3.817-70.703 11.357-94.58 7.587-23.878 18.851-42.263 33.792-55.249 14.941-12.94 33.745-19.409 56.413-19.409 16.71 0 31.372 3.584 43.985 10.705 12.614 7.168 22.993 17.501 31.185 30.953 8.239 13.498 14.662 29.929 19.363 49.292s6.982 45.475 6.982 78.336c0 38.865-3.77 70.284-11.264 94.115zM718.057 779.171c-7.494 23.878-18.711 42.356-33.699 55.343-14.895 13.033-33.839 19.549-56.599 19.549-30.068 0-53.574-11.45-70.749-34.304-20.527-27.601-30.813-72.518-30.813-134.749 0-39.191 3.817-70.703 11.357-94.58 7.587-23.878 18.851-42.263 33.792-55.249 14.941-12.94 33.745-19.409 56.413-19.409 16.71 0 31.372 3.584 43.939 10.705 12.614 7.168 23.040 17.501 31.232 30.953 8.239 13.498 14.662 29.929 19.316 49.292 4.701 19.363 7.028 45.475 7.028 78.336 0.047 38.865-3.724 70.284-11.217 94.115zM960 779.171c-7.494 23.878-18.711 42.356-33.699 55.343-14.895 13.033-33.839 19.549-56.599 19.549-30.068 0-53.574-11.45-70.749-34.304-20.527-27.601-30.813-72.518-30.813-134.749 0-39.191 3.817-70.703 11.357-94.58 7.587-23.878 18.851-42.263 33.792-55.249 14.941-12.94 33.745-19.409 56.413-19.409 16.71 0 31.372 3.584 43.939 10.705 12.614 7.168 23.040 17.501 31.232 30.953 8.239 13.498 14.662 29.929 19.316 49.292 4.701 19.363 7.028 45.475 7.028 78.336 0.047 38.865-3.724 70.284-11.217 94.115z",
+ "M627.386 549.469c-17.594 0-31.604 7.913-42.077 23.738-13.126 20.201-19.735 57.437-19.735 111.849s5.958 90.577 17.967 108.591c11.962 18.013 26.717 26.996 44.265 26.996s32.303-8.983 44.265-27.089c12.009-18.106 17.967-54.272 17.967-108.497 0-54.551-5.958-90.764-17.967-108.73-11.962-17.92-26.903-26.857-44.684-26.857z",
+ "M385.396 549.469c-17.548 0-31.558 7.913-42.031 23.738-13.172 20.201-19.782 57.437-19.782 111.849s6.004 90.577 17.967 108.591c11.962 18.013 26.717 26.996 44.311 26.996 17.548 0 32.303-8.983 44.311-27.089 11.962-18.106 17.92-54.272 17.92-108.497 0-54.551-5.958-90.764-17.92-108.73-12.009-17.92-26.903-26.857-44.777-26.857z",
+ "M869.329 549.469c-17.594 0-31.604 7.913-42.077 23.738-13.126 20.201-19.735 57.437-19.735 111.849s5.958 90.577 17.967 108.591c11.962 18.013 26.717 26.996 44.265 26.996s32.303-8.983 44.265-27.089c12.009-18.106 17.967-54.272 17.967-108.497 0-54.551-5.958-90.764-17.967-108.73-11.962-17.92-26.857-26.857-44.684-26.857z",
+ "M144.989 549.469c-16.989 0-31.791 7.354-44.404 22.156-12.614 14.755-18.897 33.932-18.897 57.391 0 21.085 6.004 38.214 17.967 51.386s26.717 19.782 44.311 19.782c17.687 0 32.256-6.609 43.66-19.782s17.082-31.465 17.082-54.831c0-23.319-5.818-41.844-17.501-55.575-11.729-13.684-25.833-20.527-42.217-20.527z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-e9000"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 6,
+ 6,
+ 6,
+ 6,
+ 6
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ },
+ {
+ "fill": "rgb(100, 155, 230)"
+ }
+ ],
+ "properties": {
+ "order": 407,
+ "id": 188,
+ "prevSize": 16,
+ "code": 59757,
+ "name": "it-other-e9000"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 109
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM200 268h288v82h-202v112h174v82h-174v204h-86v-480zM592 274h212v86h-150l-14 82c17.929-10.241 37.308-16 56-16 35.667 0 65.204 16.365 90 46 24.795 29.636 38 66.714 38 114-0 39.441-9.973 75.057-30 106-27.275 42.274-65.554 64-114 64-38.719 0-69.586-12.248-94-36s-39.232-55.905-44-96l80-10c2.289 20.701 8.747 37.906 20 50s23.313 18 38 18c16.784 0 32.365-8.42 44-24s16-38.622 16-70c-0-29.417-4.461-51.291-16-66s-27.499-22-46-22c-23.079 0-43.69 12.684-62 36l-64-12 40-250z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-f5bigip"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 408,
+ "id": 187,
+ "prevSize": 16,
+ "code": 59758,
+ "name": "it-other-f5bigip"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 110
+ },
+ {
+ "icon": {
+ "paths": [
+ "M114 0c-63.812 0-114 47.546-114 108v602c0 53.579 40.456 98.664 94 108v-590c0-64.077 53.716-114 120-114h650v-6c0-60.454-50.188-108-114-108z",
+ "M273.868 209.632c-63.812 0-114.869 48.378-114.869 108.832v601.779c0 60.454 51.057 108.832 114.869 108.832h635.16c63.812 0 114.869-48.378 114.869-108.832v-601.779c0-60.454-51.057-108.832-114.869-108.832h-635.16zM327.924 424.096h243.253v65.619h-170.615v89.626h146.965v65.619h-146.965v163.251h-72.638v-384.115zM659.018 428.896h179.061v68.819h-126.694l-11.825 65.619c15.143-8.192 31.511-12.8 47.299-12.8 30.125 0 55.074 13.094 76.017 36.813 20.943 23.712 32.096 53.382 32.096 91.226-0 31.558-8.424 60.064-25.339 84.826-23.037 33.824-55.369 51.213-96.288 51.213-32.703 0-58.775-9.798-79.395-28.806s-33.136-44.742-37.164-76.826l67.57-8c1.933 16.563 7.388 30.33 16.893 40.013 9.505 9.677 19.691 14.4 32.096 14.4 14.177 0 27.336-6.739 37.164-19.206s13.514-30.906 13.514-56.013c-0-23.539-3.768-41.043-13.514-52.819-9.747-11.77-23.226-17.6-38.853-17.6-19.493 0-36.902 10.15-52.367 28.806l-54.056-9.606 33.785-200.058z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-f5bigip2"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 409,
+ "id": 186,
+ "prevSize": 16,
+ "code": 59759,
+ "name": "it-other-f5bigip2"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 111
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM230 158c36.969 0 65.213 6.495 86 22s34.041 36.646 40 64l-60 12c-4.198-14.625-12.422-25.536-24-34s-24.667-14-42-14c-26.271 0-48.495 9.344-64 26s-22 41.229-22 74c-0 35.344 8.292 62.328 24 80s34.542 26 60 26c12.594 0 25.338-3.057 38-8s24.927-10.958 34-18v-38h-70v-50h130v118c-12.594 12.188-30.099 24.724-54 34s-49.49 14-74 14c-31.146 0-56.844-6.932-80-20s-40.354-31.693-52-56c-11.646-24.307-18-51.427-18-80-0-31.010 7-57.896 20-82s30.948-43.135 56-56c19.094-9.885 43.562-14 72-14zM416 162h118c23.562 0 42.422 2.037 54 4s20.859 5.771 30 12c9.14 6.229 17.906 13.641 24 24s8 23.136 8 36c-0 13.948-2.485 26.354-10 38s-19.136 20.177-32 26c18.146 5.281 32.25 13.271 42 26s14 28.802 14 46c-0 13.542-1.704 27.203-8 40s-15.099 22.349-26 30c-10.901 7.651-24.021 12.24-40 14-10.021 1.083-35.677 1.729-74 2h-100v-298zM716 162h220v50h-160v66h150v50h-150v82h166v50h-226v-298zM476 212v68h40c23.427 0 36.312 0.677 42 0 10.291-1.219 18.109-6.109 24-12s10-12.385 10-22c-0-9.208-2.922-16.245-8-22s-11.979-10.781-22-12c-5.959-0.677-23.698 0-52 0h-34zM476 330v80h56c21.666 0 34.177-0.781 40-2 8.937-1.625 16.38-5.703 22-12s8-15.437 8-26c-0-8.937-1.667-15.771-6-22s-9.807-11.156-18-14c-8.193-2.844-26.646-4-54-4h-48zM652 576c39.229 0 71.5 12.813 96 36 14.583 13.709 24.708 32.334 32 58l-64 16c-3.792-16.625-11.969-30.375-24-40s-26.792-14-44-14c-23.771 0-43.198 8.938-58 26s-22 43.792-22 82c-0 40.542 7.417 68.792 22 86s34.667 26 58 26c17.208 0 31.604-5.062 44-16s20.604-28.521 26-52l64 20c-9.625 35-25.615 61.010-48 78s-51.584 26-86 26c-42.583 0-76.583-14.906-104-44s-42-67.542-42-118c-0-53.375 14.437-96.468 42-126s63.083-44 108-44zM356 580c31.646 0 55.916 8.938 74 26s28 38.625 28 64c-0 14.438-2.823 26.948-8 40s-12.771 27.708-24 42c-7.438 9.479-20.604 22.208-40 40s-32.823 30.167-38 36c-5.177 5.834-8.792 12.458-12 18h122v56h-216c2.333-21.583 10.333-40.677 22-60s33.583-46.062 68-78c27.708-25.812 45.729-42.812 52-52 8.458-12.687 12-25.604 12-38-0-13.708-2.636-24.635-10-32s-19.021-10-32-10c-12.833 0-22.417 4.271-30 12s-10.833 20.063-12 38l-62-6c3.646-33.833 14.75-59.271 34-74s43.125-22 72-22z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-gbe2c"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 410,
+ "id": 185,
+ "prevSize": 16,
+ "code": 59760,
+ "name": "it-other-gbe2c"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 112
+ },
+ {
+ "icon": {
+ "paths": [
+ "M888 0h-752c-75.584 0-136 60.416-136 136v752c0 75.648 60.416 136 136 136h752c75.648 0 136-60.352 136-136v-752c0-75.584-60.352-136-136-136zM366.144 654.4h-42.432v-151.168h-166.72v151.104h-42.432v-320.64h42.432v131.712h166.656v-131.712h42.432v320.704zM600.448 630.848c-20.416 19.52-46.272 29.248-77.44 29.248-28.096 0-51.52-8.384-70.144-25.216-18.56-16.768-29.184-38.464-31.808-65.152l39.36-5.248c4.48 22.336 12.16 38.4 23.040 48.256 10.88 9.792 24.128 14.72 39.744 14.72 18.496 0 34.112-6.4 46.848-19.264s19.136-28.736 19.136-47.68c0-18.112-5.888-33.024-17.664-44.736s-26.752-17.536-44.992-17.536c-7.424 0-16.704 1.472-27.776 4.352l4.352-34.56c2.624 0.256 4.736 0.448 6.336 0.448 16.768 0 31.872-4.352 45.312-13.12 13.376-8.768 20.096-22.272 20.096-40.448 0-14.464-4.928-26.432-14.656-35.904s-22.4-14.208-37.824-14.208c-15.36 0-28.096 4.8-38.336 14.464s-16.704 24-19.648 43.264l-39.36-6.976c4.8-26.432 15.744-46.848 32.768-61.376 17.088-14.528 38.336-21.76 63.68-21.76 17.472 0 33.536 3.776 48.32 11.264 14.72 7.488 25.984 17.728 33.792 30.72s11.712 26.752 11.712 41.344c0 13.824-3.712 26.496-11.2 37.824-7.36 11.392-18.432 20.416-32.96 27.136 18.944 4.416 33.664 13.504 44.16 27.264s15.744 30.976 15.744 51.712c0 28.032-10.176 51.776-30.592 71.168zM909.184 632.448c-23.104 18.304-51.392 27.456-84.8 27.456-34.496 0-62.656-6.976-84.288-21.12-21.632-14.080-38.144-34.432-49.408-61.12s-16.96-55.36-16.96-85.952c0-33.408 6.4-62.528 19.136-87.424 12.736-24.832 30.912-43.776 54.528-56.64 23.552-12.928 49.408-19.392 77.76-19.392 32.064 0 59.072 8.128 80.96 24.512s37.12 39.296 45.76 68.928l-41.792 9.856c-7.424-23.36-18.24-40.32-32.384-50.944s-31.936-16-53.376-16c-24.64 0-45.248 5.888-61.824 17.728s-28.16 27.648-34.88 47.616c-6.656 19.904-10.048 40.384-10.048 61.568 0 27.264 4.032 51.072 11.968 71.424 7.936 20.288 20.288 35.52 37.056 45.632 16.768 9.984 34.944 15.040 54.464 15.040 23.808 0 43.968-6.784 60.352-20.544 16.512-13.76 27.712-34.048 33.472-61.056l42.432 10.688c-9.024 34.816-25.024 61.44-48.128 79.744z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-h3c"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 411,
+ "id": 184,
+ "prevSize": 16,
+ "code": 59761,
+ "name": "it-other-h3c"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 113
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM228 134h64v128h128v-128h64v322h-64v-140h-128v140h-64v-322zM550 134h104c39.375 0 66.041 2.792 78 6 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.584-10 50s-16.99 22.344-28 30c-11.011 7.656-20.625 13.521-32 16-15.459 3.063-38.688 4-68 4h-42v122h-66v-322zM616 190v90h36c25.521 0 41.396-0.646 50-4s15.114-8.854 20-16c4.885-7.146 8-16.521 8-26-0-11.666-3.146-20.416-10-28s-15.5-12.104-26-14c-7.729-1.458-24.667-2-48-2h-30zM782 598c-39.962 0-71.478 10.197-96 32s-38 52.592-38 92c0 37.254 13.608 66.52 38 88s54.114 32 92 32c30.62 0 56.084-5.456 76-18s33.436-32.159 42-58l-54-14c-4.801 17.335-12.972 29.925-24 38s-24.69 12-40 12c-20.76 0-37.025-7.295-50-20s-20-32.067-20-62c-0-28.21 6.831-49.402 20-62s30.851-20 52-20c15.31 0 27.296 4.894 38 12s18.626 15.726 22 28l56-10c-6.488-18.95-17.026-33.879-30-44-21.798-17.12-49.098-26-84-26zM128 602v236h96c36.718-0.218 60.399 0.861 70 0 15.31-1.4 27.555-5.917 38-12s17.966-13.825 24-24c6.033-10.175 10-21.233 10-32-0-13.674-4.658-25.879-14-36s-22.614-15.801-40-20c12.326-4.63 22.799-12.74 30-22s10-18.91 10-30c-0-10.229-2.162-19.763-8-28s-13.242-15.047-22-20c-8.758-4.953-18.907-8.439-30-10s-27.424-2-50-2h-114zM416 604v234h202v-40h-144v-194h-58zM184 642h34c27.117 0 42.291-0.538 48 0 9.601 0.97 17.134 3.424 22 8s8 10.679 8 18c-0 7.645-2.356 13.317-8 18s-14.139 9.031-24 10c-5.45 0.538-19.554 0-42 0h-38v-54zM184 736h48c26.209 0 42.15 1.739 50 4s13.848 5.047 18 10c4.152 4.953 6 10.894 6 18-0 8.398-2.616 14.994-8 20s-11.437 8.708-20 10c-5.579 0.97-19.241 0-40 0h-54v-62zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-hpblc"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 412,
+ "id": 183,
+ "prevSize": 16,
+ "code": 59762,
+ "name": "it-other-hpblc"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 114
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM108 352h64v320h-64v-320zM232 352h98l58 218 58-218h96v320h-60v-252l-64 252h-62l-62-252v252h-62v-320zM606 352h98l58 218 58-218h96v320h-60v-252l-64 252h-62l-64-252v252h-60v-320z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-imm"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 413,
+ "id": 182,
+ "prevSize": 16,
+ "code": 59763,
+ "name": "it-other-imm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 115
+ },
+ {
+ "icon": {
+ "paths": [
+ "M887.994 0h-751.988c-75.59 0-136.006 60.416-136.006 136.006v751.988c0 75.543 60.416 136.006 136.006 136.006h751.988c75.543 0 136.006-60.463 136.006-136.006v-751.988c0-75.59-60.463-136.006-136.006-136.006zM405.923 688.454c-12.567 19.363-30.627 34.49-54.179 45.242-23.505 10.799-49.99 16.198-79.453 16.198-37.329 0-68.608-5.399-93.836-16.337-25.228-10.845-45.009-27.183-59.299-49.059-14.383-21.876-21.923-46.545-22.668-74.147l51.433-4.515c2.467 20.62 8.099 37.609 16.989 50.781 8.89 13.219 22.761 23.924 41.519 32.023 18.758 8.192 39.843 12.288 63.302 12.288 20.806 0 39.191-3.072 55.11-9.309 15.919-6.144 27.788-14.615 35.607-25.46 7.773-10.705 11.636-22.528 11.636-35.328 0-12.847-3.77-24.204-11.264-33.885-7.494-9.635-19.875-17.734-37.097-24.297-11.078-4.329-35.561-10.985-73.402-20.154-37.888-9.030-64.419-17.687-79.593-25.693-19.689-10.38-34.397-23.133-44.032-38.447-9.635-15.267-14.476-32.349-14.476-51.293 0-20.806 5.911-40.262 17.687-58.368 11.823-18.060 29.091-31.837 51.759-41.193 22.807-9.309 48.035-14.010 75.776-14.010 30.58 0 57.53 4.934 80.849 14.755 23.366 9.868 41.286 24.343 53.853 43.473s19.316 40.774 20.247 64.977l-52.317 3.956c-2.839-26.065-12.335-45.754-28.579-59.066-16.198-13.359-40.122-20.015-71.82-20.015-33.001 0-57.065 6.051-72.145 18.153s-22.621 26.671-22.621 43.753c0 14.801 5.353 26.996 16.012 36.538 10.519 9.588 37.888 19.409 82.292 29.417 44.311 10.054 74.752 18.851 91.229 26.298 24.017 10.985 41.705 25.088 53.155 41.984 11.45 16.989 17.129 36.538 17.129 58.647 0.047 22.016-6.237 42.636-18.804 62.092zM862.115 688.454c-12.614 19.363-30.627 34.49-54.132 45.242-23.645 10.799-50.129 16.198-79.5 16.198-37.376 0-68.655-5.399-93.789-16.337-25.228-10.845-45.009-27.183-59.345-49.059s-21.876-46.545-22.621-74.147l51.526-4.515c2.374 20.62 8.006 37.609 16.989 50.781 8.844 13.219 22.575 23.924 41.472 32.023 18.618 8.192 39.75 12.288 63.255 12.288 20.713 0 39.145-3.072 55.156-9.309 15.872-6.144 27.741-14.615 35.514-25.46 7.866-10.705 11.729-22.528 11.729-35.328 0-12.847-3.724-24.204-11.217-33.885-7.494-9.635-19.875-17.734-37.143-24.297-11.124-4.329-35.654-10.985-73.356-20.154-37.981-9.030-64.512-17.687-79.639-25.693-19.735-10.38-34.351-23.133-43.985-38.447-9.728-15.267-14.522-32.349-14.522-51.293 0-20.806 5.865-40.262 17.78-58.368 11.729-18.060 28.998-31.837 51.712-41.193 22.621-9.402 47.849-14.057 75.636-14.057 30.487 0 57.484 4.934 80.849 14.755 23.226 9.868 41.239 24.343 53.853 43.473 12.521 19.13 19.27 40.774 20.294 64.977l-52.364 3.956c-2.793-26.065-12.428-45.754-28.532-59.066-16.244-13.312-40.215-19.968-71.866-19.968-33.001 0-57.158 6.051-72.145 18.153-15.081 12.055-22.575 26.671-22.575 43.706 0 14.801 5.213 26.996 16.012 36.538 10.519 9.588 37.841 19.409 82.246 29.417 44.358 10.054 74.752 18.851 91.276 26.298 24.017 10.985 41.705 25.088 53.108 41.984 11.543 16.989 17.268 36.538 17.268 58.647-0.047 22.063-6.423 42.682-18.944 62.138z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(99, 147, 205)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-secsis"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 5
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(99, 147, 205)"
+ }
+ ],
+ "properties": {
+ "order": 414,
+ "id": 181,
+ "prevSize": 16,
+ "code": 59764,
+ "name": "it-other-secsis"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 116
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM714 316c46.577 0 84.911 14.61 114 42 17.315 16.194 31.342 37.681 40 68l-76 20c-4.502-19.638-15.716-36.63-30-48s-31.569-16-52-16c-28.223 0-50.426 9.845-68 30s-26 52.866-26 98c-0 47.891 8.685 81.672 26 102s40.296 30 68 30c20.431 0 37.282-5.080 52-18s25.593-34.265 32-62l74 24c-11.428 41.345-29.422 71.931-56 92s-61.137 30-102 30c-50.56 0-91.448-17.632-124-52s-50-80.395-50-140c-0-63.050 17.275-113.115 50-148s74.67-52 128-52zM156 322h84l96 280 92-280h82l-136 380h-82l-136-380z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-vc"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 415,
+ "id": 180,
+ "prevSize": 16,
+ "code": 59765,
+ "name": "it-other-vc"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 117
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v410h1024v-410c0-75.55-60.45-136-136-136h-752zM122 146h234v50l-176 218h182v54h-260v-60l168-208h-148v-54zM380 146h256v54h-96v268h-64v-268h-96v-54zM678 146h238v54h-174v72h162v54h-162v88h180v54h-244v-322zM78 606v244h56v-92h36c25.125 0 44.75-1.665 58-4 9.75-1.89 18.562-4.162 28-10s17.875-13.771 24-24c6.125-10.229 10-22.99 10-38-0-19.458-5.375-35.714-16-48s-24.25-20.331-40-24c-10.25-2.446-32.25-4-66-4h-90zM308 606l66 244h60l56-182 54 182h58l68-244h-56l-42 170-48-170h-66l-50 168-42-168h-58zM698 606v244h56v-102h10c12.75 0 22.125 2.166 28 4s12.75 5.052 18 10c5.25 4.948 13.75 16.987 28 36l40 52h68l-34-48c-13.25-19.013-24.188-30.55-32-38s-18-15.773-30-22c24.125-3.113 41.875-10.047 54-22s18-27.654 18-46c-0-14.454-4-26.77-12-38s-18.688-19.608-32-24c-13.313-4.392-34.625-6-64-6h-116zM134 648h28c20 0 33.375-1.112 40 0 9 1.446 16.125 6.219 22 12s8 13.105 8 22c-0 7.227-1.813 12.552-6 18s-10.625 9.442-18 12c-7.375 2.557-22.125 4-44 4h-30v-68zM754 648h42c22.5 0.001 37.5-0.557 42 0 9 1.334 15.063 4.941 20 10s8 11.772 8 20c0 7.338-2.25 13.108-6 18s-9.375 7.998-16 10c-6.625 2.001-23.375 4-50 4h-40v-62zM0 886v2c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-2h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-ztepower"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 416,
+ "id": 179,
+ "prevSize": 16,
+ "code": 59766,
+ "name": "it-other-ztepower"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 118
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510.016 0l-510.016 128c38.682 381.043-34.883 833.642 502.078 896h19.845c536.96-62.358 463.396-514.957 502.078-896l-512-128h-1.984zM130.977 332h234.171v50l-174.636 218h180.589v54h-257.984v-60l166.698-208h-148.837v-54zM388.961 332h254.016v54h-95.256v268h-63.504v-268h-95.256v-54zM684.651 332h234.171v54h-170.667v72h158.76v54h-158.76v88h176.62v54h-240.124v-322z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-ztesgs"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 417,
+ "id": 178,
+ "prevSize": 16,
+ "code": 59767,
+ "name": "it-other-ztesgs"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 119
+ },
+ {
+ "icon": {
+ "paths": [
+ "M136 0c-75.55 0-136 60.45-136 136v752c0 75.55 60.45 136 136 136h752c75.55 0 136-60.45 136-136v-752c0-75.55-60.45-136-136-136h-752zM94 262h94l198 334v-334h92v500h-98l-196-326v326h-90v-500zM546 262h384v84h-144v416h-96v-416h-144v-84z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-other-zxsdr-nt"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 418,
+ "id": 177,
+ "prevSize": 16,
+ "code": 59768,
+ "name": "it-other-zxsdr-nt"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 120
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510.994 0c-282.703 0-510.994 228.291-510.994 510.994s228.291 513.006 510.994 513.006c282.703 0 513.006-230.303 513.006-513.006s-230.303-510.994-513.006-510.994zM506.97 110.648l122.719 122.719h-88.519v162.955c0 20.826-7.813 82.483-44.259 82.483h-66.389c33.843-9.545 42.248-60.513 42.248-80.472v-164.967h-88.519l122.719-122.719zM162.955 356.086v88.519h166.978c19.959 0 68.914-8.405 78.46-42.248v66.389c0 36.446-61.657 44.259-82.483 44.259h-162.955v88.519l-122.719-122.719 122.719-122.719zM859.033 356.086l122.719 122.719-122.719 122.719v-88.519h-164.967c-19.959-0-70.926 10.416-80.472 44.259v-66.389c0-36.446 61.657-46.271 82.483-46.271h162.955v-88.519zM430.522 543.183h66.389c36.446 0 44.259 63.669 44.259 84.495v160.943h88.519l-122.719 124.731-122.719-124.731h88.519v-164.967c0-19.959-8.405-70.926-42.248-80.472z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-router"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 419,
+ "id": 176,
+ "prevSize": 16,
+ "code": 59769,
+ "name": "it-router"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 121
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510 0c-282.703 0-510 227.297-510 510s227.297 514 510 514c9.173 0 18.943-1.521 28-2-36.918-3.27-66-32.204-66-70v-74l-88-90h88v-164c0-19.959-8.157-70.455-42-80h66c34.803 0 45.287 56.63 46 80 0.678-0.019 1.317 0 2 0h408c19.995 0 38.952 8.952 52 22 11.787-43.072 20-89.259 20-136 0-282.703-231.297-510-514-510zM506 110l124 124h-88v162c0 20.826-9.554 82-46 82h-66c33.843-9.545 42-60.041 42-80v-164h-88l122-124zM162 356v88h168c19.959 0 68.455-8.157 78-42v66c0 36.446-61.174 46-82 46h-164v88l-122-124 122-122zM860 356l122 122-122 124v-88h-166c-19.959-0-70.455 10.157-80 44v-68c0-36.446 61.174-46 82-46h164v-88zM636 686c-35.745 0-64.066 14.163-86 40s-32 61.302-32 108c-0 44.146 10.182 78.546 32 104s50.112 38 84 38c27.388 0 50.186-7.136 68-22s30.34-37.378 38-68l-50-18c-4.294 20.542-12.136 36.431-22 46s-20.306 14-34 14c-18.569 0-34.395-6.944-46-22s-18-40.53-18-76c-0-33.428 6.22-57.072 18-72s27.083-24 46-24c13.694 0 26.425 5.58 36 14s14.982 19.455 18 34l50-14c-5.803-22.456-14.395-40.006-26-52-19.497-20.287-44.782-30-76-30zM894 686c-35.745 0-64.066 14.163-86 40s-34 61.302-34 108c0 44.146 12.182 78.546 34 104s50.112 38 84 38c27.388 0 50.186-7.136 68-22s30.34-37.378 38-68l-50-18c-4.294 20.542-12.136 36.431-22 46s-22.306 14-36 14c-18.569 0-32.395-6.944-44-22s-18-40.53-18-76c-0-33.428 6.221-57.072 18-72s27.083-24 46-24c13.694 0 24.425 5.58 34 14s16.982 19.455 20 34l50-14c-5.803-22.456-14.395-40.006-26-52-19.497-20.287-44.782-30-76-30z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-router-cisco"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 420,
+ "id": 175,
+ "prevSize": 16,
+ "code": 59770,
+ "name": "it-router-cisco"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 122
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510 0c-282.703 0-510 227.297-510 510s227.297 514 510 514c9.173 0 18.943-1.521 28-2-36.918-3.27-66-32.204-66-70v-74l-88-90h88v-164c0-19.959-8.157-70.455-42-80h66c34.803 0 45.287 56.63 46 80 0.678-0.019 1.317 0 2 0h408c80.239 45.398 67.455-57.196 72-114 0-282.703-231.297-510-514-510zM506 110l124 124h-88v162c0 20.826-9.554 82-46 82h-66c33.843-9.545 42-60.041 42-80v-164h-88l122-124zM162 356v88h168c19.959 0 68.455-8.157 78-42v66c0 36.446-61.174 46-82 46h-164v88l-122-124 122-122zM860 356l122 122-122 124v-88h-166c-19.959-0-70.455 10.157-80 44v-68c0-36.446 61.174-46 82-46h164v-88zM644 666v206c-0 25.958-2.021 43.761-8 52s-15.563 12-30 12c-14.292 0-25-4.479-32-16-4.667-7.583-7.271-21.625-8-40l-62 8c0.146 34.271 8.937 60.281 26 78s40.354 26 72 26c26.979 0 49.521-6.698 66-18s27.729-25.333 34-44c4.667-14.292 8-35.458 8-62v-202h-66zM778 666v320h66v-120h42c29.312 0 50.542-2.938 66-6 11.375-2.479 22.989-6.344 34-14s20.854-18.583 28-32c7.146-13.417 10-30.312 10-50-0-25.521-5.604-45.885-18-62s-27.625-27.187-46-32c-11.959-3.208-38.625-4-78-4h-104zM844 720h30c23.333 0 40.271 0.544 48 2 10.5 1.896 19.146 6.417 26 14s10 18.334 10 30c-0 9.479-3.115 16.854-8 24s-11.396 12.646-20 16c-8.604 3.354-26.479 4-52 4h-34v-90z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-router-juniper"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 421,
+ "id": 174,
+ "prevSize": 16,
+ "code": 59771,
+ "name": "it-router-juniper"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 123
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510 0c-282.703 0-510 227.297-510 510s227.297 514 510 514c9.173 0 18.943-1.521 28-2-36.918-3.27-66-32.204-66-70v-74l-88-90h88v-164c0-19.959-8.157-70.455-42-80h66c34.803 0 45.287 56.63 46 80 0.678-0.019 1.317 0 2 0h408c19.995 0 38.952 8.952 52 22 11.787-43.072 20-89.259 20-136 0-282.703-231.297-510-514-510zM506 110l124 124h-88v162c0 20.826-9.554 82-46 82h-66c33.843-9.545 42-60.041 42-80v-164h-88l122-124zM162 356v88h168c19.959 0 68.455-8.157 78-42v66c0 36.446-61.174 46-82 46h-164v88l-122-124 122-122zM860 356l122 122-122 124v-88h-166c-19.959-0-70.455 10.157-80 44v-68c0-36.446 61.174-46 82-46h164v-88zM518 692v46h90l-100 182v52h156v-48h-110l106-188v-44h-142zM674 692v46h58v234h38v-234h58v-46h-154zM852 692v280h146v-48h-106v-76h96v-48h-96v-62h102v-46h-142z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-router-zte"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 422,
+ "id": 173,
+ "prevSize": 16,
+ "code": 59772,
+ "name": "it-router-zte"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 124
+ },
+ {
+ "icon": {
+ "paths": [
+ "M498 0c-82.519 2.143-165.486 23.825-242 68-244.845 141.361-329.362 455.154-188 700 106.738 184.875 312.557 278.159 512 252-23.098-16.31-36-37.265-36-58 0-22.862 16.376-42.721 44-60h-32c-41.912 0-76-34.088-76-76v-106l-34 20c-24.647-27.731-47.939-55.857-70-88l104-60v-64c0-41.912 34.088-76 76-76h234c-4.577-10.693-8.966-21.469-14-32l118-68c13.86 32.95 24.711 65.817 30 100h66c10.478 0 20.943 2.182 30 6-7.234-69.314-26.904-137.747-64-202-97.186-168.332-276.459-260.715-458-256zM522 98c45.425 1.164 91.517 8.458 134 24l-64 36c-22.81-22.127-46.007-41.704-70-60zM394 114c39.587 25.645 77.222 56.281 114 92l-84 50-72-126c13.742-5.791 27.946-11.802 42-16zM760 178c31.164 23.016 57.718 51.994 82 84l-116 66c-20.412-32.755-40.883-63.378-64-92l88-50c3.203-1.849 7.605-5.435 10-8zM260 182h2l72 126-92 52c-12.71-49.313-19.255-97.188-22-144 12.39-12.178 25.888-23.296 40-34zM578 284c22.939 28.459 45.686 59.403 66 92l-112 64-56-96 102-60zM142 324c3.994 27.9 10.635 55.372 18 84l-58 34c7.124-40.784 21.181-80.964 40-118zM384 396l56 96-118 70c-18.2-33.781-34.67-67.986-48-102l110-64zM192 506c13.396 34.309 27.682 69.999 46 104l-108 62c-15.214-36.17-27.501-72.402-32-110l94-56zM612 506c-49.516 0-90 38.484-90 88v194c0 49.516 40.484 90 90 90h102l-6 34c-51.586 9.811-88 30.549-88 54 0 32.643 68.81 58 154 58s154-25.357 154-58c0-24.169-37.838-46.585-92-56l-6-32h104c49.516 0 90-40.484 90-90v-194c0-49.516-40.484-88-90-88h-322zM584 574h380v236h-380v-236zM292 700c22.147 32.13 47.183 58.271 72 86l-102 60c-30.311-22.695-56.283-52.739-80-84l110-62zM438 864c28.836 24.958 59.885 44.975 90 64-53.295 1.962-108.201-6.157-158-24l68-40z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-sdn-host"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 423,
+ "id": 172,
+ "prevSize": 16,
+ "code": 59773,
+ "name": "it-sdn-host"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 125
+ },
+ {
+ "icon": {
+ "paths": [
+ "M498 0c-82.532 2.144-165.473 23.817-242 68-244.886 141.385-329.386 455.113-188 700 58.255 100.901 146.218 174.257 246 216v-168l-52 30c-30.316-22.699-56.279-52.734-80-84l104-60-14-4-156-8 30-28-16 10c-15.217-36.176-27.5-72.396-32-110l94-56c10.044 25.725 21.614 52.249 34 78l72-72c-8.357-17.441-17.093-34.376-24-52l112-64 10 18 92-92 10 10 82-48c22.943 28.464 43.682 59.397 64 92l-66 36 78 78 40-24 104-60 94-56c7.367 17.515 14.618 36.072 20 54h4l92-14c-11.285-45.819-29.221-91.081-54-134-97.203-168.36-276.429-260.716-458-256zM522 98c45.433 1.164 91.51 8.455 134 24l-64 36c-22.814-22.131-46.003-41.701-70-60zM394 114c39.593 25.649 77.216 56.275 114 92l-84 50-72-126c13.744-5.792 27.944-11.801 42-16zM760 178c31.169 23.019 57.714 49.989 82 82l-116 68c-20.416-32.76-40.879-63.373-64-92l88-52c3.203-1.849 7.605-3.435 10-6zM262 182l72 126-92 52c-12.711-49.321-17.254-97.18-20-144 12.392-12.18 25.886-23.294 40-34zM142 324c3.995 27.904 10.633 55.367 18 84l-58 34c7.125-40.791 21.178-80.958 40-118zM474 436l-208 210h126v286l72 92h94v-378h126l-210-210zM804 436l-72 90v288h-126l208 210 210-210h-126v-378h-94z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-sdn-switch"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 424,
+ "id": 171,
+ "prevSize": 16,
+ "code": 59774,
+ "name": "it-sdn-switch"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 126
+ },
+ {
+ "icon": {
+ "paths": [
+ "M52 0c-28.218 0-52 27.877-52 62v900c0 34.123 23.782 62 52 62h524c28.218 0 50-27.877 50-62v-900c0-34.123-19.782-62-48-62h-526zM674 6c18.999 10.074 32 31.54 32 56v900c0 20.133-9.853 36.659-24 48l262-78c42.237-12.574 80-30.971 80-70v-706c0-39.029-37.766-57.42-80-70l-270-80zM120 140h388c19.009 0 34 19.012 34 42v210c0 22.988-14.991 40-34 40h-388c-19.009 0-36-17.012-36-40v-210c0-22.988 16.991-42 36-42zM136 200c-8.519 0-16 12.757-16 30s7.481 32 16 32h356c8.519 0 14-14.757 14-32s-5.481-30-14-30h-356zM136 312c-8.519 0-16 12.757-16 30s7.481 32 16 32h356c8.519 0 14-14.757 14-32s-5.481-30-14-30h-356zM314 672c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64s28.654-64 64-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 425,
+ "id": 170,
+ "prevSize": 16,
+ "code": 59775,
+ "name": "it-server"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 127
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM512 64c247.424 0 448 200.576 448 448s-200.576 448-448 448c-247.424 0-448-200.576-448-448s200.576-448 448-448zM512 128c-212.077 0-384 171.923-384 384 0 36.156 6.659 70.831 16 104l112-292h68l130 320h-72l-28-72h-128l-26 72h-48c53.837 147.035 194.315 252 360 252s306.163-104.965 360-252h-72l-72-110-72 110h-76l108-166-98-154h76l64 102 62-102h56c-65.661-117.507-191.828-196-336-196zM486 324h64v320h-64v-320zM856 342l-88 138 106 158c13.732-39.506 22-81.817 22-126 0-60.905-14.763-118.84-40-170zM290 398l-44 120h88l-44-120z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-aix"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 426,
+ "id": 169,
+ "prevSize": 16,
+ "code": 59776,
+ "name": "it-server-aix"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 128
+ },
+ {
+ "icon": {
+ "paths": [
+ "M702.196 0c-83.559 0-149.421 75.593-149.421 171.057 0 45.281 15.194 86.372 39.69 117.162-8.686 12.223-17.338 24.876-25.682 37.492-23.194 35.070-43.629 76.976-60.702 89.043-83.523 59.033-121.404 129.992-121.404 248.384 0 16.631 2.556 30.874 4.669 46.865 23.321-11.463 52.84-16.403 84.049-16.403 4.043 0 7.718-0.217 11.673 0-3.685-18.422-7.004-35.25-7.004-53.895 1.251-128.832 55.389-209.786 114.4-292.906 2.648-3.499 6.269-9.105 9.339-14.059 2.452 4.241 6.283 6.793 11.673 9.373l49.029 23.432c23.628 11.307 48.25 10.417 72.376 0l53.698-23.432c0.84-0.363 1.558 0.418 2.335 0 42.272 91.45 99.084 194.293 100.392 278.847 0 23.808-2.958 45.866-7.004 67.954 13.057-2.524 27.684-2.343 42.025-2.343 18.9 0 37.191 0.405 53.698 4.686 0.818-10.044 2.335-17.843 2.335-28.119 0-99.83-26.283-175.644-88.719-236.668-25.549-24.971-56.834-78.168-91.053-126.535 31.389-31.635 51.363-77.388 51.363-128.879 0-95.465-68.196-171.057-151.755-171.057zM641.494 140.595c25.311 0 44.359 22.043 44.359 51.551 0 4.072-1.65 7.893-2.335 11.716-4.628 0.607-9.186 2.398-14.008 4.686 0-22.185-14.217-39.835-30.351-39.835s-28.016 17.65-28.016 39.835c0 13.422 4.319 27.854 11.673 35.149-16.692-8.63-28.016-29.42-28.016-51.551 0-29.509 21.383-51.551 46.694-51.551zM762.898 142.938c25.311 0 46.694 22.043 46.694 51.551 0 22.132-11.324 42.921-28.016 51.551 5.88-7.348 7.004-18.677 7.004-30.462 0-22.185-11.882-42.178-28.016-42.178s-30.351 19.994-30.351 42.178c0 2.428-0.299 4.792 0 7.030-3.068-2.177-6.263-5.265-9.339-7.030-2.536-6.816-4.669-13.366-4.669-21.089 0-29.509 21.383-51.551 46.694-51.551zM699.861 224.952c12.3-0 25.767 3.837 35.020 11.716l46.694 42.178c13.118 11.17 17.678 26.761 11.673 39.835-1.907 1.316-2.389 3.702-4.669 4.686l-53.698 23.432c-24.126 10.417-48.748 11.307-72.376 0l-49.029-23.432c-1.721-0.824-3.302-1.337-4.669-2.343-7.374-13.896-2.206-30.36 11.673-42.178l46.694-42.178c9.253-7.879 20.386-11.716 32.686-11.716zM620.482 285.876c-2.285 2.318-4.669 4.488-4.669 7.030 0 14.123 39.651 25.776 86.384 25.776s81.714-11.653 81.714-25.776c0-2.542-0.049-4.712-2.335-7.030-9.308 11.067-39.863 18.746-79.38 18.746s-72.407-7.679-81.714-18.746zM879.633 710.005c-64.504 7.634-86.384 42.072-86.384 114.819 0 83.14-83.624 189.803 4.669 189.803s224.131-80.887 224.131-164.027c0-83.14-23.773-140.595-112.066-140.595-11.037 0-21.136-1.091-30.351 0zM466.391 719.378c-88.293 0-112.066 57.455-112.066 140.595s135.839 164.027 224.131 164.027c88.293 0 4.669-104.32 4.669-187.46s-28.442-117.162-116.735-117.162zM620.482 888.092l14.008 49.208 14.008 56.238c11.583 1.562 23.045 2.343 35.020 2.343 12.676 0 25.138-0.585 37.355-2.343 5.185-25.46 21.012-89.043 21.012-89.043l7.004-16.403c-19.981 9.799-40.537 16.403-63.037 16.403-23.030 0-44.951-6.259-65.372-16.403z",
+ "M434.89 2.105l-417.088 440.582 190.741 30.089-208.544 371.808 399.285-425.537-139.877-83.818z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-klinux"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 427,
+ "id": 168,
+ "prevSize": 16,
+ "code": 59777,
+ "name": "it-server-klinux"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 129
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510.592 0c-281.856 0-510.592 230.336-510.592 513.472s228.736 510.528 510.592 510.528 513.408-227.52 513.408-510.528c0-283.072-231.552-513.472-513.408-513.472zM464.704 88.896l31.552 8.64 37.312 8.576 31.552-5.696 17.28-2.88 22.912-5.76c0 0 20.992-4.544 31.488-2.88 10.304 1.664 21.888-0.768 31.552 2.88 13.376 5.056 25.984 14.080 37.248 22.912 19.456 15.296 37.248 63.104 37.248 63.104l20.096 54.528 22.848 65.984 5.76 48.768-5.76 60.224 43.136-37.312c33.344 8.128 72.64 28.736 111.808 54.528 0 0 7.168 44.672 5.76 65.984-1.216 18.496-4.8 38.656-14.336 54.528-16.768 27.776-44.608 45.632-71.744 63.104-21.504 13.888-44.032 25.344-68.864 31.488-38.016 9.344-78.4 6.4-117.568 5.76-37.056-0.64-72.576-1.6-108.992-8.64-43.264-8.256-88.064-20.736-128.96-37.248-47.36-19.136-134.784-74.624-134.784-74.624s-76.672-44.16-114.752-80.32c-15.232-14.4-48.832-65.92-48.832-65.92s-8.896-48.32 2.88-57.344c0 0 38.080-28.736 54.528-31.552 39.616-6.784 79.040-8.512 123.328-14.336v2.816l22.912 22.976 63.104 43.008 91.776 34.432 45.952 20.096c0 0 34.816 2.88 45.824 2.88 11.136 0 2.88-22.912 2.88-22.912l-17.216-17.28-5.76-14.336-8.512-22.912-14.336-17.216-94.656-31.552-77.44-28.672-40.192-31.616 8.64-40.128 17.216-37.312 14.336-22.976 22.976-14.336 31.552-8.64 37.248-2.816zM613.888 114.752l-8.64 14.336 25.728 8.64 20.032 5.696-20.032 31.552 60.224-14.336 5.824-28.672-31.488-11.456-51.648-5.76zM410.176 154.944l-14.336 42.944 31.552 31.552 17.216-5.76 43.008-8.576 48.768-14.336 5.76-17.216-37.312-8.576-54.464 8.576-40.192-28.608zM238.080 530.688h17.216l25.792 14.336 37.312 40.128 51.648 5.76 65.984 80.384 286.848 5.76-22.976 106.112-48.768 62.976-28.608 25.856-2.88-2.88 2.88 22.848 31.488-5.76 108.992-80.32v-22.912h114.752l45.888 11.52c-92.032 131.136-244.48 215.104-413.056 215.104-216.192 0-400.128-135.424-470.4-332.672l20.096-5.824 8.576-34.368 8.576-5.76 100.416 5.76 68.864 45.888 25.792-5.696-2.88-28.672-37.312-34.432-14.336-22.912-2.88-28.736 8.64-14.336 14.336-17.152zM527.808 740.032c-10.688 2.368 1.152 9.344-8.576 14.4-19.008 9.664 22.912 28.672 22.912 28.672s22.72 12.032 34.368 11.456c10.624-0.576 28.736-11.456 28.736-11.456 17.728-17.28 9.024-41.344 0-34.496l-22.976 14.464h-22.912c0-0.064-19.712-25.536-31.552-23.040z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-redhat"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 428,
+ "id": 167,
+ "prevSize": 16,
+ "code": 59778,
+ "name": "it-server-redhat"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 130
+ },
+ {
+ "icon": {
+ "paths": [
+ "M468 0l-48 268c16.173-3.297 30.849-4 48-4s33.827 0.703 50 4l-50-268zM140 134l150 208c22.048-23.283 46.359-42.605 76-56l-226-152zM798 134l-226 152c29.641 13.395 53.952 32.717 76 56l150-208zM0 374l222 102c4.34-29.541 14.151-58.816 28-84l-250-18zM938 374l-252 18c13.849 25.184 23.66 54.459 28 84l224-102zM650 526c-359.894 0-650 58.809-650 132s290.106 134 650 134c58.987 0 117.658-3.012 172-6-10.202 0.109-19.67 0-30 0-330.653 0-600-54.037-600-122s269.347-124 600-124c82.663 0 160.373 3.773 232 10-105.684-15.034-235.24-24-374-24z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-solaris"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 429,
+ "id": 166,
+ "prevSize": 16,
+ "code": 59779,
+ "name": "it-server-solaris"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 131
+ },
+ {
+ "icon": {
+ "paths": [
+ "M516 58c-65.675 2.119-123.16 4.56-184 34-72.421 32-145.651 59.003-206 112l-68 84c-69.777 119.589-54.416 232.934 106 290 77.742 5.552 221.478-57.888 130-202-29.523-28.96-55.273-37.398-104-30-41.79 11.271-68.086 46.084-54 102 19.492 27.884 22.688 25.105 42 30l48 4 8-26-6-20-8-6-24 8c-8.312 15.984-60.714-16.58-8-42 9.817-4.489 38.161-14.031 60 6 31.625 31.716 57.773 84.241-28 118-67.019 7.312-100.036-7.173-128-76l-2-44 8-40c25.624-32.030 36.815-49.83 80-54 52.83-2.032 90.154-5.104 136 26l30 40 20 40 14 30 34 22 30 14c0-47.834-13.068-83.628 26-114l28-10c29.176 0.729 53.498-9.082 82 10l20 20 46 52 52 28 44 26 8-6-24-32c-9.354-42.571-25.187-62.438 0-106l26-8c80.668 5.366 185.805 20.894 260-38 5.991-2.681 19.875-27.248-2-38-2.468 7.251-2.487 15.266-20 22-43.274 12.798-69.848 21.603-118-4-31.965-11.776-57.959-15.825-76-46l-6-12 18-6 40 24c25.187 12.253 45.744 28.964 76 30 35.19-2.629 61.074 2.317 92-20l14-16c-13.040-40.569-18.998-80.996-52-110-42.108-21.054-82.178-38.858-130-44l-86-12 6 38-50-22-90-16-110-10zM918 122c33.395 0 60 26.605 60 60s-26.605 60-60 60c-33.395 0-60-26.605-60-60s26.605-60 60-60zM918 142c-21.945 0-40 18.055-40 40s18.055 40 40 40c21.945 0 40-18.055 40-40s-18.055-40-40-40zM922 154c10.165 0 18 7.835 18 18s-7.835 18-18 18c-10.165 0-18-7.835-18-18s7.835-18 18-18zM116 646c-21.527 0-40.779 4.988-56 12s-25.912 16.594-34 30c-8.088 13.407-12 28.6-12 44-0 23.926 8.804 43.362 26 60 12.228 11.825 33.684 21.888 64 30 23.565 6.325 37.376 11.525 44 14 9.68 3.713 16.115 6.981 20 12s6 10.85 6 18c-0 11.138-4.765 21.681-14 30s-21.785 12-40 12c-17.196 0-31.874-4.65-42-14s-16.688-24.062-20-44l-54 6c3.694 33.826 15.021 60.331 34 78s46.589 26 82 26c24.329 0 43.696-4.644 60-12s29.083-18.875 38-34c8.916-15.125 14-30.675 14-48-0-19.113-4.549-35.006-12-48s-16.817-22.506-30-30c-13.184-7.494-34.487-14.987-62-22s-44.867-13.537-52-20c-5.605-5.087-8-12.85-8-20-0-7.837 2.013-13.325 8-18 9.298-7.287 23.568-10 40-10 15.922 0 28.039 3.194 36 10s11.58 18.463 14 34l58-4c-0.892-27.775-10.231-49.362-28-66s-44.844-26-80-26zM616 646c-21.527 0-38.779 4.988-54 12s-27.912 16.594-36 30c-8.088 13.407-12 28.6-12 44-0 23.926 8.804 43.362 26 60 12.228 11.825 33.684 21.888 64 30 23.565 6.325 39.376 11.525 46 14 9.681 3.713 16.115 6.981 20 12s6 10.85 6 18c-0 11.138-4.765 21.681-14 30s-23.785 12-42 12c-17.196 0-29.874-4.65-40-14s-16.689-24.062-20-44l-56 6c3.694 33.826 15.021 60.331 34 78s46.589 26 82 26c24.329 0 43.695-4.644 60-12s29.083-18.875 38-34c8.916-15.125 14-30.675 14-48-0-19.113-4.548-35.006-12-48s-16.817-22.506-30-30c-13.184-7.494-34.487-14.987-62-22s-44.867-13.537-52-20c-5.605-5.087-8-12.85-8-20-0-7.837 4.013-13.325 10-18 9.298-7.287 21.568-10 38-10 15.922 0 28.039 3.194 36 10s13.58 18.462 16 34l56-4c-0.892-27.775-10.231-49.362-28-66s-44.844-26-80-26zM896 650c-33.989 0-63.77 13.115-86 40s-32 64.524-32 112c0 39.744 7.086 71.924 24 98 23.472 24.814 37.445 40.196 80 48 10.305-3.467 69.29 0.256 76-6 9.704-9.048 12.525-32.631 2-44-6.247-6.748-56.534-2.879-72-6-26.387-8.256-41.018-28.763-40-70h170c0.966-58.086-9.932-101.856-32-130s-51.823-42-90-42zM900 708c13.853 0 24.335 4.58 34 16s15.518 28.060 16 50h-102c-0.16-20.681 4.335-35.951 14-48s23.18-18 38-18zM278 736v138c-0 20.625 1.16 36.312 6 48s13.173 21.537 24 28c10.827 6.463 24.371 10 38 10 13.374-0 25.963-3.262 38-10s20.612-16.312 28-28v32h50v-218h-54v92c-0 31.351-1.325 49.956-4 58s-6.74 14.569-14 20c-7.261 5.432-16.829 10-26 10-8.025 0-12.778-1.944-18-6s-10.026-11.056-12-18c-1.974-6.944-2-25.199-2-56v-100h-54z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-suse"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 430,
+ "id": 165,
+ "prevSize": 16,
+ "code": 59780,
+ "name": "it-server-suse"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 132
+ },
+ {
+ "icon": {
+ "paths": [
+ "M398 48c-49.48-0.394-105.040 6.773-168 26l-106 332c130.327-31.196 261.844-49.831 374 28l100-326c-53.73-36.361-117.533-59.343-200-60zM646 136l-102 326c85.969 58.177 202.107 85.272 370 34l104-332c-130.327 31.196-259.844 49.831-372-28zM276 446c-49.48-0.394-105.040 8.773-168 28l-104 330c130.327-31.196 261.844-49.831 374 28l100-324c-53.73-36.361-119.533-61.343-202-62zM532 532l-100 324c85.969 58.177 200.107 87.272 368 36l106-332c-130.327 31.196-261.844 49.831-374-28z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-windows"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 431,
+ "id": 164,
+ "prevSize": 16,
+ "code": 59781,
+ "name": "it-server-windows"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 133
+ },
+ {
+ "icon": {
+ "paths": [
+ "M172 2c-94.922 0-174 77.078-174 172v678c0 94.922 79.078 174 174 174h678c94.922 0 172-79.078 172-174v-678c0-94.922-77.078-172-172-172h-678zM172 66h678c60.656 0 108 47.344 108 108v678c0 60.656-47.344 110-108 110h-678c-60.656 0-110-49.344-110-110v-678c0-60.656 49.344-108 110-108zM648 128c-65.702 0-118 59.253-118 134 0 35.455 12.739 67.892 32 92-6.83 9.571-13.44 18.122-20 28-18.237 27.459-34.576 60.552-48 70-65.673 46.222-96 101.301-96 194 0 13.022 2.338 25.479 4 38 18.337-8.975 41.46-14 66-14 3.179 0 4.89-0.173 8 0-2.898-14.424-4-27.401-4-42 0.984-100.874 43.6-162.918 90-228 2.082-2.74 3.586-8.121 6-12 1.928 3.32 5.762 5.98 10 8l38 18c18.578 8.853 39.030 8.156 58 0l42-18c0.66-0.284 1.389 0.328 2 0 33.238 71.604 76.972 151.795 78 218 0 18.641-2.819 36.706-6 54 10.267-1.976 22.724-2 34-2 14.861 0 29.020 0.648 42 4 0.643-7.865 2-15.954 2-24 0-78.166-20.908-136.219-70-184-20.089-19.552-45.094-62.129-72-100 24.681-24.77 40-59.684 40-100 0-74.747-52.298-134-118-134zM438 130l-328 344 150 24-164 292 314-334-110-66 138-260zM600 238c19.902 0 34 16.895 34 40 0 3.188-1.461 7.006-2 10-3.639 0.476-6.208 2.208-10 4 0-17.37-11.314-32-24-32s-22 14.63-22 32c0 10.509 4.217 20.288 10 26-13.125-6.757-22-22.671-22-40 0-23.105 16.098-40 36-40zM696 240c19.902 0 36 16.895 36 40 0 17.329-8.875 33.243-22 40 4.623-5.753 6-14.772 6-24 0-17.37-9.314-32-22-32s-24 14.63-24 32c0 1.901-0.237 4.248 0 6-2.413-1.705-5.581-4.618-8-6-1.994-5.337-4-9.953-4-16 0-23.105 18.098-40 38-40zM646 304c9.671-0 20.724 3.831 28 10l36 32c10.315 8.746 14.721 21.763 10 32-1.499 1.031-2.207 1.229-4 2l-42 20c-18.97 8.156-39.422 8.853-58 0l-38-20c-1.353-0.645-2.925 0.788-4 0-5.798-10.88-0.914-24.747 10-34l36-32c7.276-6.169 16.329-10 26-10zM584 352c-1.797 1.815-4 4.010-4 6 0 11.058 31.255 20 68 20s64-8.942 64-20c0-1.99-0.205-4.185-2-6-7.318 8.665-30.929 14-62 14s-56.682-5.335-64-14zM788 684c-50.719 5.978-68 33.040-68 90 0 65.098-67.424 148 2 148s178-62.902 178-128c0-65.098-20.576-110-90-110-8.678 0-14.754-0.854-22 0zM462 692c-69.424 0-88 44.902-88 110s106.576 128 176 128c69.424 0 4-82.902 4-148s-22.576-90-92-90zM584 824l10 38 12 44c9.107 1.223 16.584 2 26 2 9.967 0 20.394-0.621 30-2 4.077-19.935 16-70 16-70l6-12c-15.711 7.673-32.308 12-50 12-18.109 0-33.944-4.058-50-12z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-server-zxve"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 432,
+ "id": 163,
+ "prevSize": 16,
+ "code": 59782,
+ "name": "it-server-zxve"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 134
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM184 208h656c30.953 0 56 25.979 56 58v12c0 32.021-25.047 58-56 58h-656c-30.953 0-56-25.979-56-58v-12c0-32.021 25.047-58 56-58zM184 476h656c30.953 0 56 25.979 56 58v12c0 32.021-25.047 58-56 58h-656c-30.953 0-56-25.979-56-58v-12c0-32.021 25.047-58 56-58zM184 744h656c30.953 0 56 25.979 56 58v12c0 32.021-25.047 58-56 58h-656c-30.953 0-56-25.979-56-58v-12c0-32.021 25.047-58 56-58z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 433,
+ "id": 162,
+ "prevSize": 16,
+ "code": 59783,
+ "name": "it-storage"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 135
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM320 586c39.229 0 71.5 10.813 96 34 14.583 13.709 24.708 34.334 32 60l-64 16c-3.792-16.625-11.969-30.375-24-40s-26.792-14-44-14c-23.771 0-43.198 8.938-58 26s-22 43.792-22 82c-0 40.542 7.417 68.792 22 86s34.667 26 58 26c17.208 0 31.604-5.062 44-16s20.604-28.521 26-52l64 20c-9.625 35-25.615 61.010-48 78s-51.584 26-86 26c-42.583 0-76.583-14.906-104-44s-42-69.542-42-120c-0-53.375 14.437-94.468 42-124s63.083-44 108-44zM724 586c39.229 0 71.5 10.813 96 34 14.583 13.709 26.708 34.334 34 60l-64 16c-3.792-16.625-11.969-30.375-24-40s-26.792-14-44-14c-23.771 0-43.198 8.938-58 26s-22 43.792-22 82c-0 40.542 7.417 68.792 22 86s32.667 26 56 26c17.208 0 31.604-5.062 44-16s22.604-28.521 28-52l62 20c-9.625 35-25.615 61.010-48 78s-51.583 26-86 26c-42.583 0-76.583-14.906-104-44s-42-69.542-42-120c-0-53.375 14.437-94.468 42-124s63.083-44 108-44z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-cisco-mds"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 434,
+ "id": 161,
+ "prevSize": 16,
+ "code": 59784,
+ "name": "it-storage-cisco-mds"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 136
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM76 598h94c21.391 0 38.778 3.844 50 8 15.079 5.641 27.246 13.603 38 28s18.389 31.146 24 52c5.611 20.854 8 47.424 8 78-0 26.865-0.74 50.556-6 70-6.429 23.748-16.077 43.306-28 58-9.001 11.132-20.687 17.766-36 24-11.456 4.602-26.83 10-46 10h-98v-328zM356 598h152v56h-88v72h76v54h-76v90h94v56h-158v-328zM568 602h64v268h100v56h-164v-324zM782 604h66v268h100v56h-166v-324zM128 654v216h38c14.495 0 25.571-1.922 32-4 8.416-2.672 14.447-5.617 20-12s10.493-17.38 14-32c3.507-14.62 6-34.767 6-60s-2.493-44.493-6-58c-3.507-13.507-7.688-24.43-14-32s-14.298-13.328-24-16c-7.248-2.077-22.842-2-44-2h-22z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-md3000"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 435,
+ "id": 160,
+ "prevSize": 16,
+ "code": 59785,
+ "name": "it-storage-md3000"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 137
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM84 590h64l132 214v-214h60v320h-66l-128-208v208h-62v-320zM376 590h70l80 236 80-236h68l-116 320h-68l-114-320zM684 590h256v54h-96v266h-64v-266h-96v-54z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-netvault"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 436,
+ "id": 159,
+ "prevSize": 16,
+ "code": 59786,
+ "name": "it-storage-netvault"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 138
+ },
+ {
+ "icon": {
+ "paths": [
+ "M869.981 0h-715.962c-85.039 0-154.019 68.98-154.019 154.019v716.009c0 84.992 68.98 153.972 154.019 153.972h716.009c84.992 0 153.972-68.98 153.972-154.019v-715.962c0-85.039-68.98-154.019-154.019-154.019zM177.99 121.996h672.023c26.717 0 47.988 28.532 47.988 64s-21.271 64-47.988 64h-672.023c-26.764 0-47.988-28.532-47.988-64s21.271-64 47.988-64zM175.988 344.017h672.023c26.717 0 47.988 28.532 47.988 64s-21.271 64-47.988 64h-672.023c-26.764 0-47.988-28.532-47.988-64s21.271-64 47.988-64zM351.418 907.543h-253.533v-39.377l164.305-205.452c11.636-14.569 22.761-27.229 33.233-37.981h-178.921v-37.841h229.702v37.841l-180.038 222.441-19.456 22.528h204.707v37.841zM627.293 624.733h-106.077v282.81h-42.496v-282.81h-105.658v-37.841h254.185v37.841zM910.988 907.543h-239.337v-320.698h231.843v37.841h-189.347v98.211h177.385v37.609h-177.385v109.196h196.841v37.841z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(99, 147, 205)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-sanswitch-zte"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 5
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(99, 147, 205)"
+ }
+ ],
+ "properties": {
+ "order": 437,
+ "id": 158,
+ "prevSize": 16,
+ "code": 59787,
+ "name": "it-storage-sanswitch-zte"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 139
+ },
+ {
+ "icon": {
+ "paths": [
+ "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM188 530h64l118 298h-64l-26-68h-120l-24 68h-64l116-298zM382 530h236v50h-88v248h-60v-248h-88v-50zM220 600l-40 110h80l-40-110z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-switch-at"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 438,
+ "id": 157,
+ "prevSize": 16,
+ "code": 59788,
+ "name": "it-switch-at"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 140
+ },
+ {
+ "icon": {
+ "paths": [
+ "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM204 524c36.427 0 67.25 12.469 90 34 13.541 12.729 23.229 30.167 30 54l-60 14c-3.521-15.437-10.828-27.062-22-36s-24.021-14-40-14c-22.073 0-40.255 8.156-54 24s-20 40.521-20 76c-0 37.646 6.458 66.021 20 82s30.333 24 52 24c15.979 0 30.489-5.844 42-16s18.989-26.198 24-48l58 18c-8.938 32.5-23.214 58.224-44 74s-48.042 22-80 22c-39.542-0-70.542-12.984-96-40s-38-63.146-38-110c-0-49.562 12.406-88.578 38-116s58.292-42 100-42zM506 524c36.427 0 65.25 12.469 88 34 13.541 12.729 23.229 30.167 30 54l-60 14c-3.521-15.437-10.828-27.062-22-36s-24.021-14-40-14c-22.073 0-40.255 8.156-54 24s-20 40.521-20 76c-0 37.646 6.458 66.021 20 82s30.333 24 52 24c15.979 0 30.489-5.844 42-16s18.989-26.198 24-48l60 18c-8.938 32.5-25.214 58.224-46 74s-46.042 22-78 22c-39.542-0-72.542-12.984-98-40s-38-63.146-38-110c-0-49.562 12.406-88.578 38-116s60.292-42 102-42z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-switch-cisco"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 439,
+ "id": 156,
+ "prevSize": 16,
+ "code": 59789,
+ "name": "it-switch-cisco"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 141
+ },
+ {
+ "icon": {
+ "paths": [
+ "M697.809 543.651c32.349-20.573 70.563-32.908 111.756-32.908 47.709 0 91.183 16.477 126.371 43.38l88.064-84.108-234.449-225.978v128h-222.441c60.835 40.96 105.891 101.329 130.7 171.613z",
+ "M348.672 299.985c47.756 0 94.161 9.914 136.285 26.019h186.368v-198.004h-436.876v-128l-234.449 227.98 140.288 134.004c59.764-39.284 131.398-61.999 208.384-61.999z",
+ "M346.671 334.010c-191.069 0-346.671 153.321-346.671 343.971s155.601 346.019 346.671 346.019c128.791 0 240.314-70.703 299.52-175.151-28.346-35.607-45.94-80.151-45.94-129.117 0-61.999 27.555-117.062 70.516-155.369-47.011-134.097-173.196-230.353-324.096-230.353zM334.848 880.035h-42.543v-151.087h-167.005v151.087h-42.496v-320.698h42.543v131.677h166.959v-131.677h42.543v320.698zM569.53 856.529c-20.387 19.456-46.266 29.184-77.545 29.184-28.253 0-51.665-8.378-70.284-25.181-18.665-16.71-29.231-38.493-31.884-65.071l39.377-5.26c4.561 22.295 12.288 38.353 23.18 48.175 10.892 9.914 24.111 14.801 39.75 14.801 18.525 0 34.257-6.47 47.057-19.223 12.753-12.893 19.177-28.765 19.177-47.756 0-18.060-5.865-32.908-17.78-44.684-11.776-11.776-26.857-17.641-45.103-17.641-7.494 0-16.756 1.443-27.881 4.422l4.375-34.583c2.653 0.279 4.748 0.465 6.33 0.465 16.849 0 31.977-4.422 45.428-13.126s20.154-22.295 20.154-40.448c0-14.522-4.887-26.391-14.708-35.887-9.775-9.495-22.435-14.243-37.888-14.243-15.36 0-28.113 4.841-38.4 14.429-10.193 9.635-16.803 24.111-19.689 43.334l-39.517-6.982c4.887-26.345 15.825-46.871 32.861-61.347 17.175-14.522 38.4-21.737 63.814-21.737 17.548 0 33.699 3.77 48.407 11.264 14.755 7.494 26.065 17.734 33.885 30.72 7.866 12.986 11.729 26.764 11.729 41.425 0 13.824-3.677 26.391-11.124 37.841-7.447 11.357-18.479 20.387-33.047 27.089 18.991 4.375 33.699 13.452 44.218 27.276 10.519 13.731 15.779 30.999 15.779 51.665 0.047 27.881-10.147 51.572-30.673 71.075z",
+ "M879.29 828.649c-16.477 13.684-36.631 20.48-60.509 20.48-19.549 0-37.748-4.98-54.551-15.081-16.756-10.054-29.184-25.228-37.143-45.568s-11.962-44.125-11.962-71.447c0-21.132 3.398-41.658 10.1-61.533s18.385-35.793 34.956-47.569 37.283-17.734 61.905-17.734c21.504 0 39.377 5.353 53.481 16.012 14.15 10.612 24.995 27.601 32.442 51.014l41.844-9.868c-8.657-29.649-23.924-52.596-45.801-68.887-21.923-16.384-49.012-24.483-81.082-24.483-28.346 0-54.319 6.47-77.917 19.316-23.645 12.94-41.844 31.837-54.644 56.692s-19.13 53.993-19.13 87.412c0 30.58 5.632 59.206 16.943 86.016 11.357 26.577 27.881 47.057 49.524 61.114 21.737 14.103 49.897 21.132 84.433 21.132 33.559 0 61.812-9.169 84.992-27.508s39.191-44.87 48.081-79.732l-42.496-10.705c-5.772 26.81-16.943 47.151-33.466 60.928z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(99, 147, 205)"
+ },
+ {
+ "fill": "rgb(99, 147, 205)"
+ },
+ {
+ "fill": "rgb(99, 147, 205)"
+ },
+ {
+ "fill": "rgb(99, 147, 205)"
+ }
+ ],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-switch-h3c"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": [
+ 5,
+ 5,
+ 5,
+ 5
+ ]
+ }
+ },
+ "attrs": [
+ {
+ "fill": "rgb(99, 147, 205)"
+ },
+ {
+ "fill": "rgb(99, 147, 205)"
+ },
+ {
+ "fill": "rgb(99, 147, 205)"
+ },
+ {
+ "fill": "rgb(99, 147, 205)"
+ }
+ ],
+ "properties": {
+ "order": 440,
+ "id": 155,
+ "prevSize": 16,
+ "code": 59790,
+ "name": "it-switch-h3c"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 142
+ },
+ {
+ "icon": {
+ "paths": [
+ "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM226 516h64v202c-0 26.542-1.334 47.708-6 62-6.271 18.667-17.521 32.698-34 44s-39.021 18-66 18c-31.646-0-54.938-8.281-72-26s-25.854-43.729-26-78l60-8c0.729 18.375 3.333 32.417 8 40 7 11.521 17.708 16 32 16 14.437 0 24.021-3.76 30-12s10-26.042 10-52v-206zM360 516h104c39.375 0 64.041 0.792 76 4 18.375 4.813 33.604 15.886 46 32s20 36.479 20 62c-0 19.688-4.854 36.583-12 50s-14.99 24.344-26 32c-11.011 7.656-22.625 11.521-34 14-15.459 3.062-38.688 6-68 6h-42v120h-64v-320zM424 570v90h36c25.521 0 41.396-0.646 50-4s17.114-8.854 22-16c4.885-7.146 6-14.521 6-24-0-11.666-3.146-22.416-10-30s-15.5-12.104-26-14c-7.729-1.458-22.667-2-46-2h-32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-switch-juniper"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 441,
+ "id": 154,
+ "prevSize": 16,
+ "code": 59791,
+ "name": "it-switch-juniper"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 143
+ },
+ {
+ "icon": {
+ "paths": [
+ "M234 0l-234 228 140 134c59.702-39.324 131.164-62 208-62 47.699 0 93.962 9.903 136 26h186v-198h-436v-128zM788 244v128h-222c68.34 46.169 118.415 116.099 140 198h82v124l234-224-234-226zM346 334c-190.682 0-346 153.318-346 344s155.318 346 346 346c190.682 0 344-155.318 344-346s-153.318-344-344-344zM98 536h148v44l-112 194h116v48h-164v-52l106-186h-94v-48zM262 536h162v48h-60v238h-42v-238h-60v-48zM450 536h152v48h-110v64h102v48h-102v78h114v48h-156v-286z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-switch-zte"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 442,
+ "id": 153,
+ "prevSize": 16,
+ "code": 59792,
+ "name": "it-switch-zte"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 144
+ },
+ {
+ "icon": {
+ "paths": [
+ "M60 0c-33.495 0-60 26.505-60 60v484c0 33.495 26.505 60 60 60h904c33.495 0 60-26.505 60-60v-484c0-33.495-26.505-60-60-60zM222 170h580c33.495 0 60 26.505 60 60v114c0 33.495-26.505 62-60 62h-580c-33.495 0-60-28.505-60-62v-114c0-33.495 26.505-60 60-60zM740 184c-54.503 0-98 43.497-98 98s43.497 98 98 98c54.503 0 98-43.497 98-98s-43.497-98-98-98zM284 194c-54.503 0-98 43.497-98 98s43.497 100 98 100c54.503 0 98-45.497 98-100s-43.497-98-98-98zM228 640.064v320h64v-140h128v140h64v-320h-64v126h-128v-126zM550 640.064v320h66v-120h42c29.312 0 52.541-2.938 68-6 11.375-2.479 20.989-6.344 32-14s20.854-18.583 28-32c7.146-13.417 10-30.312 10-50-0-25.521-5.604-45.885-18-62s-27.625-27.187-46-32c-11.959-3.208-38.625-4-78-4zM616 694.064h30c23.333 0 40.271 0.544 48 2 10.5 1.896 19.146 6.417 26 14s10 16.334 10 28c-0 9.479-3.115 18.854-8 26s-11.396 12.646-20 16c-8.604 3.354-24.479 4-50 4h-36z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-tapelib-hpmsl"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 443,
+ "id": 152,
+ "prevSize": 16,
+ "code": 59793,
+ "name": "it-tapelib-hpmsl"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 145
+ },
+ {
+ "icon": {
+ "paths": [
+ "M60-2c-33.495 0-60 26.505-60 60v484c0 33.495 26.505 60 60 60h904c33.495 0 60-26.505 60-60v-484c0-33.495-26.505-60-60-60h-904zM222 168h580c33.495 0 60 26.505 60 60v114c0 33.495-26.505 62-60 62h-580c-33.495 0-60-28.505-60-62v-114c0-33.495 26.505-60 60-60zM740 182c-54.503 0-98 43.497-98 98s43.497 98 98 98c54.503 0 98-43.497 98-98s-43.497-98-98-98zM284 192c-54.503 0-98 43.497-98 98s43.497 100 98 100c54.503 0 98-45.497 98-100s-43.497-98-98-98zM642 630c-24.646 0-46.573 4.563-64 12s-30.74 17.782-40 32c-9.26 14.219-14 29.667-14 46-0 25.375 10.312 46.354 30 64 14 12.542 37.292 23.396 72 32 26.979 6.708 44.416 11.375 52 14 11.083 3.938 19.552 8.677 24 14s6 12.417 6 20c-0 11.813-5.427 21.177-16 30s-25.146 14-46 14c-19.688 0-36.406-6.083-48-16s-18.208-24.854-22-46l-64 6c4.229 35.875 18.271 63.26 40 82s51.458 28 92 28c27.854-0 51.333-4.198 70-12s33.791-19.958 44-36c10.208-16.042 16-31.625 16-50-0-20.271-5.469-38.219-14-52s-18.906-24.052-34-32c-15.094-7.948-38.5-16.562-70-24s-51.833-15.146-60-22c-6.417-5.396-10-10.416-10-18-0-8.312 3.146-15.041 10-20 10.646-7.729 25.187-12 44-12 18.229 0 32.885 2.781 42 10s15.229 19.521 18 36l64-2c-1.021-29.458-11.657-54.354-32-72s-49.75-26-90-26zM232 636v54h96v266h64v-266h94v-54h-254z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-tapelib-ibmts"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 444,
+ "id": 151,
+ "prevSize": 16,
+ "code": 59794,
+ "name": "it-tapelib-ibmts"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 146
+ },
+ {
+ "icon": {
+ "paths": [
+ "M60 0c-33.495 0-60 26.505-60 60v484c0 33.495 26.505 60 60 60h904c33.495 0 60-26.505 60-60v-484c0-33.495-26.505-60-60-60zM222 170h580c33.495 0 60 26.505 60 60v114c0 33.495-26.505 62-60 62h-580c-33.495 0-60-28.505-60-62v-114c0-33.495 26.505-60 60-60zM740 184c-54.503 0-98 43.497-98 98s43.497 98 98 98c54.503 0 98-43.497 98-98s-43.497-98-98-98zM284 194c-54.503 0-98 43.497-98 98s43.497 100 98 100c54.503 0 98-45.497 98-100s-43.497-98-98-98zM194 638.718c-24.646 0-46.573 4.563-64 12s-30.74 17.782-40 32c-9.26 14.219-14 29.667-14 46-0 25.375 10.312 46.354 30 64 14 12.542 37.292 23.396 72 32 26.979 6.708 44.416 11.375 52 14 11.083 3.937 19.552 8.677 24 14s6 12.417 6 20c-0 11.813-5.427 21.177-16 30s-25.146 14-46 14c-19.688 0-36.406-6.083-48-16s-18.208-24.854-22-46l-64 6c4.229 35.875 18.271 63.26 40 82s53.458 28 94 28c27.854 0 49.333-4.198 68-12s33.791-19.958 44-36c10.208-16.042 16-33.625 16-52-0-20.271-5.469-36.219-14-50s-18.906-24.052-34-32c-15.094-7.948-38.5-16.562-70-24s-51.833-15.146-60-22c-6.417-5.396-10-10.416-10-18-0-8.312 3.146-15.041 10-20 10.646-7.729 25.187-12 44-12 18.229 0 32.885 2.781 42 10s15.229 19.521 18 36l64-2c-1.021-29.458-11.657-54.354-32-72s-49.75-26-90-26zM380 644.718v170c0 35.875 1.771 63.625 6 82 2.917 12.396 8.812 24.698 18 36s22.177 20.927 38 28c15.823 7.073 39.375 10 70 10 25.375 0 46.25-3.51 62-10s28.593-15.062 38-26c9.406-10.937 14.5-24.104 18-40s6-43.5 6-82v-168h-66v178c-0 25.375-0.104 43.063-2 54s-6.667 20.49-16 28c-9.334 7.511-23.625 10-42 10-18.083 0-33.573-4.052-44-12s-15.229-18.875-18-32c-1.604-8.167-4-24.437-4-52v-174zM704 644.718v320h60v-208l130 208h66v-320h-60v214l-132-214z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-tapelib-sunts"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 445,
+ "id": 150,
+ "prevSize": 16,
+ "code": 59795,
+ "name": "it-tapelib-sunts"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 147
+ },
+ {
+ "icon": {
+ "paths": [
+ "M511.975 3.246l211.157 211.187-211.232 211.202-211.157-211.187 211.232-211.202z",
+ "M-0.023 507.944l211.202-211.202 211.202 211.202-211.202 211.202-211.202-211.202z",
+ "M601.514 507.838l211.232-211.172 211.218 211.277-211.232 211.172-211.218-211.277z",
+ "M511.954 1023.998l-211.202-211.202 211.157-211.157 211.202 211.202-211.157 211.157z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-Virtual network"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 446,
+ "id": 149,
+ "prevSize": 16,
+ "code": 59796,
+ "name": "it-Virtualnetwork"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 148
+ },
+ {
+ "icon": {
+ "paths": [
+ "M496 0c-88.366 0-160 71.634-160 160 0 24.616 6.069 47.168 16 68-2.717-0.137-5.249 0-8 0-88.366 0-160 71.634-160 160 0 27.456 5.815 53.421 18 76-66.58 19.363-116 79.172-116 152 0 35.129 12.807 67.609 32 94-67.806 18.571-118 80.301-118 154 0 88.366 71.634 160 160 160 46.834 0 88.74-19.93 118-52 29.284 32.474 72.829 52 120 52 45.179 0 84.906-17.887 114-48 29.094 30.113 70.821 48 116 48 47.171 0 88.716-19.526 118-52 29.26 32.070 71.166 52 118 52 88.366 0 160-71.634 160-160 0-75.074-52.257-136.747-122-154 18.745-26.206 30-59.324 30-94 0-80.039-59.259-144.213-136-156 8.096-19.142 12-41.909 12-64 0-88.366-71.634-160-160-160-4.843 0-9.266 1.579-14 2 12.979-23.123 22-49.597 22-78 0-88.366-71.634-160-160-160zM486 320c3.384 0.214 6.562 0 10 0 4.814 0 9.294 0.416 14 0-4.875 8.722-10.808 16.369-14 26-2.494-9.021-6.040-17.694-10-26zM494 438c1.789 6.866 3.354 13.525 6 20-4.77 0.246-9.349 1.346-14 2 3.459-6.858 5.543-14.62 8-22z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "networkTree"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 447,
+ "id": 148,
+ "prevSize": 16,
+ "code": 59797,
+ "name": "networkTree"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 149
+ },
+ {
+ "icon": {
+ "paths": [
+ "M192 0c-105.522 0-190 84.478-190 190v644c0 105.522 84.478 190 190 190h644c105.522 0 190-84.478 190-190v-644c0-105.522-84.478-190-190-190h-644zM800 96c52.598 0 96 43.403 96 96s-43.402 96-96 96c-52.598 0-94-43.403-94-96s41.402-96 94-96zM156 108h446v176h-446v-176zM804 418c52.598 0 96 43.403 96 96s-43.402 96-96 96c-52.598 0-94-43.403-94-96s41.402-96 94-96zM150 424h444v176h-444v-176zM156 740h446v176h-446v-176zM808 740c52.598 0 94 43.402 94 96s-41.402 96-94 96c-52.598 0-96-43.402-96-96s43.402-96 96-96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "resourceType"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 448,
+ "id": 147,
+ "prevSize": 16,
+ "code": 59798,
+ "name": "resourceType"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 150
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 0h256v256h-56.617v128h312.617v384h128v256h-384v-256h128v-256h-512v256h128v256h-384v-256h128v-384h322.873v-128h-66.873v-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "tree-icon"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 449,
+ "id": 146,
+ "prevSize": 16,
+ "code": 59799,
+ "name": "tree-icon"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 151
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 256v192h96v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h96v-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-topo-group20x20"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 450,
+ "id": 145,
+ "prevSize": 16,
+ "code": 59800,
+ "name": "uep-topo-group20x20"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 152
+ },
+ {
+ "icon": {
+ "paths": [
+ "M86 0c-47.477 0-86 38.523-86 86v532c0 47.477 38.523 86 86 86h350l-44 172c108.143 38.808 178.516 26.928 240 0l-34-172h340c47.477 0 86-38.523 86-86v-532c0-47.477-38.523-86-86-86h-852zM110 112h804v468h-804v-468z",
+ "M304 840c-37.227 19.359-60 45.155-60 72 0 62.25 120.094 112 268 112s268-49.75 268-112c0-26.845-22.773-52.641-60-72-22.376 63.518-106.109 112-208 112s-185.624-48.482-208-112z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-topo-root"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 451,
+ "id": 144,
+ "prevSize": 16,
+ "code": 59801,
+ "name": "uep-topo-root"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 153
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 515.003h192v508.997h-192v-508.997z",
+ "M623.819 0v384l136-122v762h128v-746l136 122v-384l-192 172-208-188z",
+ "M298.857 515.003h192v508.997h-192v-508.997z",
+ "M597.714 515.003h192v508.997h-192v-508.997z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-topo-virtual20x20"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 452,
+ "id": 143,
+ "prevSize": 16,
+ "code": 59802,
+ "name": "uep-topo-virtual20x20"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 154
+ },
+ {
+ "icon": {
+ "paths": [
+ "M814-0.002c-115.833 0-208 94.371-208 210 0 115.623 92.167 208 208 208s210-92.377 210-208c0-115.629-94.167-210-210-210zM152 93.998c-84.432 0-152 67.717-152 152v626c0 84.277 67.568 152 152 152h628c84.432 0 150-67.723 150-152v-392c-35.867 16.242-74.050 26-116 26-157.445 0-286-126.827-286-284 0-45.721 10.802-89.719 30-128h-406zM704 105.998h70v206h-70v-206zM856 105.998h70v206h-70v-206zM110 291.998h84l176 228v-228h80v260c-15.173-4.433-31.583-6-48-6-32.083 0-61.605 10.229-88 26l-124-160v222h-80v-342zM414 597.998c34.617 0 62.38 9.577 84 30 12.869 12.071 23.565 27.389 30 50l-56 14c-3.346-14.642-9.383-25.522-20-34-10.617-8.487-24.815-12-40-12-20.976 0-38.938 6.966-52 22-13.062 15.024-18 40.34-18 74-0 35.718 5.131 60.85 18 76 12.869 15.155 31.41 22 52 22 15.185 0 27.061-4.383 38-14 10.938-9.635 17.238-25.321 22-46l56 18c-8.494 30.833-22.246 53.032-42 68-19.754 14.959-43.63 24-74 24-37.577 0-69.807-14.37-94-40s-36-59.552-36-104c0-47.014 11.678-83.987 36-110s56.364-38 96-38zM578 603.998h106c23.55 0 41.646-1.406 54 2 16.601 4.862 30.16 15.533 42 28 11.839 12.453 19.823 25.952 26 44s10 41.535 10 68c-0 23.25-4.21 43.175-10 60-7.078 20.553-16.874 37.271-30 50-9.909 9.631-23.142 16.606-40 22-12.612 3.966-28.895 6-50 6h-108v-280zM636 649.998v186h42c15.957 0 28.922-0.275 36-2 9.265-2.333 15.887-6.48 22-12 6.113-5.524 12.139-15.346 16-28s4-30.163 4-52c0-21.841-0.141-38.312-4-50-3.861-11.698-11.051-19.449-18-26s-15.319-11.681-26-14c-7.979-2.053-22.707-2-46-2h-26z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "common_ncd_stop"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 453,
+ "id": 142,
+ "prevSize": 16,
+ "code": 59803,
+ "name": "common_ncd_stop"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 155
+ },
+ {
+ "icon": {
+ "paths": [
+ "M132-4c-70.912 0-128 57.088-128 128v768c0 70.912 57.088 128 128 128h418l478-480v-416c0-70.912-57.088-128-128-128h-768zM114 78h112l234 380v-380h106v570h-116l-230-372v372h-106v-570zM1028 640l-380 380h252c70.912 0 128-57.088 128-128v-252z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-app-netnumen"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 454,
+ "id": 141,
+ "prevSize": 16,
+ "code": 59804,
+ "name": "it-app-netnumen"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 156
+ },
+ {
+ "icon": {
+ "paths": [
+ "M498 0c-82.532 2.144-165.473 23.817-242 68-244.886 141.385-329.386 455.113-188 700 110.457 191.318 326.328 283.858 532 248-67.447-15.471-126.088-49.392-172-98-19.648-4.043-39.322-7.308-58-14l32-18c-20.773-27.959-38.401-58.436-50-92l-90 52c-30.316-22.699-56.279-52.734-80-84l110-64c16.047 23.28 34.225 43.553 52 64-6.339-26.139-12-51.912-12-80 0-51.261 11.931-100.275 32-144l-42 24c-18.203-33.787-34.668-67.98-48-102l112-64 34 58c23.494-26.609 49.379-49.664 80-68l-24-42 104-60c14.891 18.474 28.283 37.666 42 58 18.097-2.934 35.074-6 54-6 60.481 0 118.588 16.641 168 44l50-30c11.932 28.367 20.080 58.668 26 88 0.673 0.673 1.332 1.322 2 2 45.731 46.49 78.423 105.65 92 172 23.66-117.806 6.802-243.76-58-356-97.203-168.36-276.429-260.716-458-256zM522 98c45.433 1.164 91.51 8.455 134 24l-64 36c-22.814-22.131-46.003-41.701-70-60zM394 114c39.593 25.649 77.216 56.275 114 92l-84 50-72-126c13.744-5.792 27.944-11.801 42-16zM760 178c31.169 23.019 57.714 49.989 82 82l-116 68c-20.416-32.76-40.879-63.373-64-92l88-52c3.203-1.849 7.605-3.435 10-6zM262 182l72 126-92 52c-12.711-49.321-17.254-97.18-20-144 12.392-12.18 25.886-23.294 40-34zM142 324c3.995 27.904 10.633 55.367 18 84l-58 34c7.125-40.791 21.178-80.958 40-118zM674 396c-158.574 0-286 129.426-286 288s127.426 286 286 286c158.574 0 288-127.426 288-286s-129.426-288-288-288zM192 506c13.398 34.314 27.679 69.994 46 104l-108 62c-15.217-36.176-27.5-72.396-32-110l94-56zM654 512c19.614 0 36 16.386 36 36 0 1.039 0.083 0.988 0 2l126 66c8.663-7.366 19.441-12 32-12 27.46 0 50 21.325 50 48s-22.54 48-50 48c-12.559 0-23.337-4.305-32-12l-76 50c0 1.051 0.147 0.989 0 2l92 62c4.905-3.888 8.99-6 16-6 16.568 0 32 11.905 32 28s-15.432 30-32 30c-16.568 0-28-13.905-28-30l-94-66c-2.938 1.163-6.665 2-10 2-13.338 0-26-9.043-26-22s12.662-24 26-24c4.798 0 8.156 1.697 12 4l76-48c-2.479-5.875-4-11.331-4-18 0-5.095 0.518-11.414 2-16l-122-64c-6.254 6.254-16.193 10-26 10-4.385 0-8.176-2.601-12-4l-90 114c8.642 9.928 12 23.723 12 38 0 31.383-24.617 56-56 56s-56-24.617-56-56c0-31.383 24.617-56 56-56 8.553 0 16.75 2.641 24 6l94-116c-3.186-5.279-6-9.223-6-16 0-19.614 14.386-36 34-36z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-sdn-vnet"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 455,
+ "id": 140,
+ "prevSize": 16,
+ "code": 59805,
+ "name": "it-sdn-vnet"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 157
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.040 0-154 68.96-154 154v716c0 85.040 68.96 154 154 154h716c85.040 0 154-68.96 154-154v-716c0-85.040-68.96-154-154-154h-716zM178 122h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM176 344h672c26.747 0 48 28.544 48 64s-21.253 64-48 64h-672c-26.747 0-48-28.544-48-64s21.253-64 48-64zM180 588h64v126h128v-126h64v320h-64v-140h-128v140h-64v-320zM598 588h104c39.375 0 66.041 0.792 78 4 18.375 4.813 33.604 15.886 46 32s18 36.479 18 62c-0 19.688-2.854 36.584-10 50s-16.99 24.344-28 32c-11.011 7.656-22.625 11.521-34 14-15.458 3.062-36.688 6-66 6h-44v120h-64v-320zM662 642v90h36c25.521 0 43.396-0.646 52-4s15.114-8.854 20-16c4.885-7.146 8-14.521 8-24-0-11.666-5.146-22.416-12-30s-15.5-12.104-26-14c-7.729-1.458-22.667-1.999-46-2h-32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-storage-sanswitch-hp"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 456,
+ "id": 139,
+ "prevSize": 16,
+ "code": 59806,
+ "name": "it-storage-sanswitch-hp"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 158
+ },
+ {
+ "icon": {
+ "paths": [
+ "M526 0c-4.17-0.122-9.077-0.191-14-0.191-282.77 0-512 229.23-512 512 0 0.067 0 0.135 0 0.202-0 282.759 229.23 511.99 512 511.99s512-229.23 512-512c0-0.057 0-0.124 0-0.191 0-277.847-221.318-504.002-497.281-511.792zM294 112v78h562v96h-562v78l-126-126 126-126zM728 386l128 128-128 126v-78h-560v-96h560v-80zM294 658v80h562v96h-562v78l-126-126 126-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "it-switch"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 457,
+ "id": 138,
+ "prevSize": 16,
+ "code": 59807,
+ "name": "it-switch"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 159
+ },
+ {
+ "icon": {
+ "paths": [
+ "M120 205.183l-58 124h894l-30-64h-424l-16-60zM0 430l64 594h898l62-594z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-moc-root"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 458,
+ "id": 137,
+ "prevSize": 16,
+ "code": 59808,
+ "name": "uep-moc-root"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 160
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 256v192h96v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h320v320h-96v256h256v-256h-96v-320h96v-192zM64 832h128v128h-128zM448 832h128v128h-128zM832 832h128v128h-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "uep-topo-undefinedgroup20x20"
+ ],
+ "colorPermutations": {
+ "100148206110015523011231311471124133150124491091961401931991472051": []
+ }
+ },
+ "attrs": [],
+ "properties": {
+ "order": 459,
+ "id": 136,
+ "prevSize": 16,
+ "code": 59809,
+ "name": "uep-topo-undefinedgroup20x20"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 161
+ },
+ {
+ "icon": {
+ "paths": [
+ "M288.414 402.18c0 0.009 0 0.020 0 0.030 0 79.643-64.564 144.207-144.207 144.207s-144.207-64.564-144.207-144.207c0-0.011 0-0.021 0-0.032-0-0.007-0-0.018-0-0.029 0-79.643 64.564-144.207 144.207-144.207s144.207 64.564 144.207 144.207c0 0.011-0 0.021-0 0.032z",
+ "M287.26 811.728c0 0.007 0 0.016 0 0.025 0 64.352-52.167 116.519-116.519 116.519s-116.519-52.167-116.519-116.519c0-0.009 0-0.017 0-0.026-0-0.006-0-0.015-0-0.023 0-64.352 52.167-116.519 116.519-116.519s116.519 52.167 116.519 116.519c0 0.009-0 0.017-0 0.026z",
+ "M716.419 898.252c0 0.008 0 0.017 0 0.026 0 69.449-56.299 125.748-125.748 125.748s-125.748-56.299-125.748-125.748c0-0.009 0-0.019 0-0.028-0-0.006-0-0.016-0-0.025 0-69.449 56.299-125.748 125.748-125.748s125.748 56.299 125.748 125.748c0 0.009-0 0.019-0 0.028z",
+ "M748.721 227.979c0 0.014 0 0.031 0 0.047 0 124.243-100.719 224.963-224.963 224.963s-224.963-100.719-224.963-224.963c0-0.017 0-0.033 0-0.050-0-0.011-0-0.028-0-0.045 0-124.243 100.719-224.963 224.963-224.963s224.963 100.719 224.963 224.963c0 0.017-0 0.033-0 0.050z",
+ "M1025.598 541.773c0 0.011 0 0.024 0 0.037 0 97.483-79.026 176.509-176.509 176.509s-176.509-79.026-176.509-176.509c0-0.013 0-0.026 0-0.039-0-0.009-0-0.022-0-0.035 0-97.483 79.026-176.509 176.509-176.509s176.509 79.026 176.509 176.509c0 0.013-0 0.026-0 0.039z",
+ "M526.066 635.219c0 0.006 0 0.013 0 0.020 0 51.609-41.837 93.446-93.446 93.446s-93.446-41.837-93.446-93.446c0-0.007 0-0.014 0-0.021-0-0.005-0-0.012-0-0.019 0-51.609 41.837-93.446 93.446-93.446s93.446 41.837 93.446 93.446c0 0.007-0 0.014-0 0.021z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "analysis"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 460,
+ "id": 135,
+ "prevSize": 16,
+ "code": 59810,
+ "name": "analysis"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 162
+ },
+ {
+ "icon": {
+ "paths": [
+ "M316-2c-95.089 0-172 76.911-172 172 0 92.48 72.524 167.929 164 172-90.194 5.431-162 78.44-162 170 0 86.687 64.634 158.002 148 170-84.072 11.37-148 82.811-148 170 0 95.089 76.911 172 172 172s172-76.911 172-172c0-87.422-65.601-158.925-150-170 84.346-11.124 150-82.616 150-170 0-92.33-72.732-167.706-164-172 90.194-5.431 162-78.44 162-170 0-95.089-76.911-172-172-172zM750 206c-95.089 0-172 76.911-172 172s76.911 172 172 172c-94.127 1.118-170 77.608-170 172 0 95.089 76.911 172 172 172s174-76.911 174-172c0-95.089-78.911-172-174-172 94.18-1.057 170-77.569 170-172 0-95.089-76.911-172-172-172z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "bindingRelationship"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 461,
+ "id": 134,
+ "prevSize": 16,
+ "code": 59811,
+ "name": "bindingRelationship"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 163
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h1024v-1024h-1024zM64 232h896v744h-896v-744zM154 380v64h386v-64h-386zM154 586v64h738v-64h-738zM154 798v64h738v-64h-738z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "browsePolicy"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 462,
+ "id": 133,
+ "prevSize": 16,
+ "code": 59812,
+ "name": "browsePolicy"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 164
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h1024v-1024h-1024zM122 120h780v584h-198v198h-384v-198h-198v-584zM234 234v64h556v-64h-556zM234 446v64h556v-64h-556z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "businessManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 463,
+ "id": 132,
+ "prevSize": 16,
+ "code": 59813,
+ "name": "businessManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 165
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 205.472v818.528h1024v-818.528zM66 269.472h896v108.902h-896zM66 544.378h896v415.622h-896zM726 699.098v192h192v-192zM108 827.098v64h156v-64zM314 827.098v64h64v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "cardData"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 464,
+ "id": 131,
+ "prevSize": 16,
+ "code": 59814,
+ "name": "cardData"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 166
+ },
+ {
+ "icon": {
+ "paths": [
+ "M340-4l-34 6-286 48 12 34 22 76h-54v862h1024v-585.229l-295.229-276.771h-262.771l-14-120-64 6 12 114h-46l-10-128zM282 72l8 88h-78l-22-50-44 18 12 32h-34l-20-58zM64 224h118l84 216 10 22 24-4 48-6 30-6-2-30-16-192h368.771v212.771h231.229v521.229h-896zM240 224h56l12 150zM142 578v64h762v-64zM142 764v64h762v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "dailyManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 465,
+ "id": 130,
+ "prevSize": 16,
+ "code": 59815,
+ "name": "dailyManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 167
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0l-512 322h1024l-512-322zM512 114c26.51 0 48 21.49 48 48s-21.49 48-48 48c-26.51 0-48-21.49-48-48s21.49-48 48-48z",
+ "M55.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174zM301.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174zM547.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174zM793.344 389.331l4 30.336v391.379l-4 31.853h174l-4-31.853v-391.379l4-30.336h-174z",
+ "M33.331 897.344h957.338l33.331 126.656h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "enterpriseCustomer"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 466,
+ "id": 129,
+ "prevSize": 16,
+ "code": 59816,
+ "name": "enterpriseCustomer"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 168
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96 0v1024h832v-554c-16.551 23.661-38.104 28.804-64 42v448h-704v-896h422c23.693-31.685 58.349-54.324 98-64h-584zM816 26c-114.539 0-206 93.461-206 208s91.461 208 206 208c114.54 0 208-93.461 208-208s-93.46-208-208-208zM220 120v64h248v-64h-248zM710 196h214v76h-214v-76zM220 222v206h248v-206h-248zM220 464v98h248v-98h-248zM218 646v64h578v-64h-578zM224 798v64h580v-64h-580z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "equipmentBlacklist"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 467,
+ "id": 128,
+ "prevSize": 16,
+ "code": 59817,
+ "name": "equipmentBlacklist"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 169
+ },
+ {
+ "icon": {
+ "paths": [
+ "M962.030 47.968c-8.838 62.893-26.692 87.763-47.41 100.083-20.708 12.307-50.544 12.506-82.517 12.282-31.978 0-67.463-2.432-98.328 22.835-15.428 12.595-26.625 30.035-29.849 52.672-0.25 1.728 0.198 3.52 0.011 5.248-51.048-20.41-232.3-46.931-275.527-8.051-1.923 1.792-5.16 1.664-7.021 3.52l-421.389 419.59 367.856 367.853 421.389-419.635c1.8-1.792 3.59-3.392 5.265-5.312 47.548-52.435 13.878-252.998-27.359-308.89-2.946-19.462-4.849-36.262-3.511-45.651 1.751-12.32 4.106-15.181 7.021-17.562 5.823-4.736 28.684-7.251 61.453-7.027 32.769 0.006 75.936 1.664 114.126-21.062 38.191-22.714 65.175-68.762 75.499-142.221l-59.699-8.781zM623.738 344.115c31.034 0 56.189 25.158 56.185 56.192 0.001 31.027-25.154 56.179-56.183 56.179s-56.184-25.152-56.185-56.179c-0.001-31.034 25.154-56.192 56.183-56.192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "equipmentModel"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 468,
+ "id": 127,
+ "prevSize": 16,
+ "code": 59818,
+ "name": "equipmentModel"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 170
+ },
+ {
+ "icon": {
+ "paths": [
+ "M160 8c-25.903 30.044-41.331 62.192-48 94h-106v924h670c10.497 1.078 21.219 2 32 2 8.767 0 17.417-1.283 26-2h40v-6c140.119-31.085 246-156.583 246-306s-105.881-273.317-246-304v-308h-158c5.279-16.405 16.044-33.491 32-52l-48-42c-25.903 30.044-41.331 62.192-48 94h-80c5.311-16.271 14.187-33.658 30-52l-48-42c-25.903 30.044-41.331 62.192-48 94h-82c5.819-16.405 16.044-33.491 32-52l-50-42c-25.903 30.044-41.331 62.192-48 94h-82c5.279-16.405 16.044-33.491 32-52l-48-42zM86 182h28c8.23 31.167 24.037 60.201 44 88l52-36c-13.274-18.483-23.611-34.856-30-52h82c8.815 31.148 24.048 60.216 44 88l52-36c-13.245-18.443-23.056-34.89-30-52h80c8.23 31.167 24.037 60.201 44 88l52-36c-13.274-18.483-23.611-34.856-30-52h80c8.23 31.167 24.037 60.201 44 88l52-36c-13.274-18.483-23.611-34.856-30-52h76v220c-166.907 6.305-300 143.532-300 312 0 91.892 40.922 174.406 104 232h-414v-764zM888 582l46 44-226 230-28 26-22-30-128-180 52-38 106 150 200-202z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "examine"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 469,
+ "id": 126,
+ "prevSize": 16,
+ "code": 59819,
+ "name": "examine"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 171
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h818v-106l-64 8v34h-690v-896h690v106l64 8v-178h-818zM730 228c-163.35 0-296 130.65-296 294s132.65 296 296 296c163.35 0 294-132.65 294-296s-130.65-294-294-294zM132 246v64h306v-64h-306zM704 324h48c17.845 0 35.574 14.224 34 32l-18 200c-1.574 17.776-14.155 32-32 32h-10c-17.845 0-30.060-14.261-32-32l-22-200c-1.94-17.739 14.155-32 32-32zM132 434v64h226v-64h-226zM132 622v64h226v-64h-226zM728 624c27.036 0 50 20.964 50 48s-22.964 50-50 50c-27.036 0-48-22.964-48-50s20.964-48 48-48zM132 812v64h354v-64h-354z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "failureList"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 470,
+ "id": 125,
+ "prevSize": 16,
+ "code": 59820,
+ "name": "failureList"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 172
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448-0.001c-99.149 0-184 84.858-184 184s84.851 178 184 178c99.149 0 174-78.858 174-178s-74.851-184-174-184zM286 373.999c-129.705 57.273-217.877 186.935-226 336l-60 250c284.445-318.778 236-372.086 236 66h276.671v-270.561c3.512-99.722 66.764-160.188 121.919-172.125-17.49-54.214-25.625-122.175 3.41-167.313-5.942-21.014-17.153-35.182-36-42-1.835-1.639-2.149 0-4 0-40.421 38.476-89.792 64-150 64s-117.579-25.524-158-64c-1.347-1.639-2.68 1.639-4 0zM786 397.999c-60.168 0-112 51.224-112 112s51.832 110 112 110c60.168 0 106-49.224 106-110s-45.832-112-106-112zM1014 409.999c-65.69 147.654-105.651 269.621-246 250-36.537 0-71.471-14.414-96-38-0.818-1.005-1.199 1.005-2 0-74.281 35.109-67.145 38.621-110 130l4.464 254 63.536-178h10v192h254v-192h12c97.602-38.567 100.046-313.036 110-418z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "familyCustomer"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 471,
+ "id": 124,
+ "prevSize": 16,
+ "code": 59821,
+ "name": "familyCustomer"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 173
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 22v150h64v-54h398v54h64v-150h-526zM8 242v294h132v-64h96v64h600v-64h96v64h100v-294h-1024zM0 596v428h1024v-428h-92v64h-96v-64h-600v64h-96v-64h-140zM404 658l224 152-224 152v-304z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "fileTool"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 472,
+ "id": 123,
+ "prevSize": 16,
+ "code": 59822,
+ "name": "fileTool"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 174
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h1024v-1024h-1024zM448 64h128v896h-128v-896zM120 112h208v210h-208v-210zM696 112h208v210h-208v-210zM120 414h208v210h-208v-210zM696 414h208v210h-208v-210zM120 716h208v210h-208v-210zM696 716h208v210h-208v-210z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "groupManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 473,
+ "id": 122,
+ "prevSize": 16,
+ "code": 59823,
+ "name": "groupManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 175
+ },
+ {
+ "icon": {
+ "paths": [
+ "M830 4.002c-3.954 0-6.163 1.654-10 2-21.087 1.899-42.52 9.182-60 20-150.563 49.266-299.814 132.472-452 140v310l470 160c6.045 2.682 13.576 4.251 20 6 2.196 0.595 3.76 1.518 6 2 8.682 1.868 16.664 2 26 2 62.639 0 110.185-44.115 142-102s50-131.924 50-216c0-84.083-18.185-164.115-50-222-31.815-57.892-79.361-102-142-102zM830 64.002c25.474 0 58.072 20.828 84 68 25.928 47.179 42 119.755 42 196 0 76.238-16.072 142.828-42 190-25.928 47.179-58.526 68-84 68s-56.072-20.821-82-68c-25.928-47.172-44-113.762-44-190 0-76.245 18.072-148.821 44-196 25.928-47.172 56.526-68 82-68zM72 166.002c-33.614 0-60 26.386-60 60v190c0 33.614 26.386 60 60 60h172v-310h-172zM830 226.002c-17.38 0-30 49.537-30 110s12.62 108 30 108c17.38 0 32-47.537 32-108s-14.62-110-32-110zM330 570.002c-6.68-0.112-12.981 0.409-20 2-9.358 2.121-19.412 5.042-28 10l-58 34c-34.354 19.839-42.526 54.103-34 84 32.971 115.619 74.038 226.209 176 302 25.476 18.866 55.648 31.828 90 12l56-32c34.353-19.834 64.686-68.57 36-84-110.803-59.587-141.877-183.942-176-304-4.781-16.821-21.959-23.665-42-24z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "notice"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 474,
+ "id": 121,
+ "prevSize": 16,
+ "code": 59824,
+ "name": "notice"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 176
+ },
+ {
+ "icon": {
+ "paths": [
+ "M516 0l-182 362h362l-180-362zM270 490l-104 206h696l-102-206h-490zM100 824l-100 200h1024l-100-200h-824z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "policy"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 475,
+ "id": 120,
+ "prevSize": 16,
+ "code": 59825,
+ "name": "policy"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 177
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h1024v-1024h-1024zM74 74h876v132h-876v-132zM126 104v64h64v-64h-64zM258 104v64h64v-64h-64zM390 104v64h64v-64h-64zM74 270h876v680h-876v-680zM510 326l-284 194h572l-288-194zM272 558v320h478v-320h-478zM448 738h126v138h-126v-138z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "portal"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 476,
+ "id": 119,
+ "prevSize": 16,
+ "code": 59826,
+ "name": "portal"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 178
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h818v-98h-64v34h-690v-896h690v114h64v-178h-818zM572 180c-147.574 0-268 123.722-268 276s120.426 276 268 276c50.852 0 97.535-16.556 138-42 2.376 5.114 5.882 11.751 10 16l188 194c19.466 20.086 50.534 20.086 70 0l24-24c19.466-20.086 19.466-51.914 0-72l-188-196c-4.077-4.207-9.099-7.555-14-10 24.048-41.386 38-90.234 38-142 0-152.278-118.426-276-266-276zM572 254c107.326 0 194 91.253 194 202s-86.674 200-194 200c-107.326 0-196-89.253-196-200s88.674-202 196-202zM134 466v64h82c-5.078-20.817-9.052-41.784-10-64h-72zM138 654v64h204c-24.807-17.419-47.038-40.025-66-64h-138zM138 824v64h452v-64h-452z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "recordQuery"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 477,
+ "id": 118,
+ "prevSize": 16,
+ "code": 59827,
+ "name": "recordQuery"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 179
+ },
+ {
+ "icon": {
+ "paths": [
+ "M116 30l-114 528h-2l2 6-2 6h2l102 454h840l78-454h2l-2-6 2-6h-2l-114-528h-792zM162 84h700l84 398h-868l84-398zM328 140v48h370v-48h-370zM236 250v58h554v-58h-554zM190 362v64h646v-64h-646zM378 750h268v60h-268v-60z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "resourceManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 478,
+ "id": 117,
+ "prevSize": 16,
+ "code": 59828,
+ "name": "resourceManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 180
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 768h1024v256h-1024v-256z",
+ "M155.869 132.442h192v535.838h-192v-535.838z",
+ "M880.115 476.282v192h-427.888v-192h427.888z",
+ "M871.413 132.442v192h-427.888v-192h427.888z",
+ "M0 0v1024h1024v-1024h-1024zM60 60h904v901.997h-904v-901.997z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "ruleManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 479,
+ "id": 116,
+ "prevSize": 16,
+ "code": 59829,
+ "name": "ruleManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 181
+ },
+ {
+ "icon": {
+ "paths": [
+ "M908 4l-440 1016h82l438-1016h-80zM586 56c-28.986 0-55.758 11.758-76 32s-34 50.999-34 88c0 37.001 13.758 67.758 34 88s47.014 32 76 32c28.986 0 55.758-11.758 76-32s34-50.999 34-88c0-37.001-13.758-67.758-34-88s-47.014-32-76-32zM586 104c24.033 0 45.497 11.497 60 26s22 29.982 22 46c0 16.018-7.497 33.497-22 48s-35.967 24-60 24c-24.033 0-45.497-9.497-60-24s-22-31.982-22-48c0-16.018 7.497-31.497 22-46s35.967-26 60-26zM462 342l-208 428-124-200-132 84 208 204 22 26 28-22 380-448-174-72zM872 740c-28.986 0-55.758 11.758-76 32s-36 50.999-36 88c0 37.001 15.758 67.758 36 88s47.014 32 76 32c28.986 0 53.758-11.758 74-32s36-50.999 36-88c0-37.001-15.758-67.758-36-88s-45.014-32-74-32zM872 788c24.033 0 45.497 11.497 60 26s20 29.982 20 46c0 16.018-5.497 33.497-20 48s-35.967 24-60 24c-24.033 0-45.497-9.497-60-24s-22-31.982-22-48c0-16.018 7.497-31.497 22-46s35.967-26 60-26z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "sucessRate"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 480,
+ "id": 115,
+ "prevSize": 16,
+ "code": 59830,
+ "name": "sucessRate"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 182
+ },
+ {
+ "icon": {
+ "paths": [
+ "M340 0c-188.394 0-340 151.606-340 340v344c0 188.394 151.606 340 340 340h344c188.394 0 340-151.606 340-340v-344c0-188.394-151.606-340-340-340h-344zM340 60h344c156.193 0 280 123.807 280 280v344c0 156.193-123.807 280-280 280h-344c-156.193 0-280-123.807-280-280v-344c0-156.193 123.807-280 280-280zM294 152l-118 98 140 172-148 204 116 86 224-284-214-276zM526 616v96h96v-96h-96zM758 616v96h96v-96h-96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "terminalManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 481,
+ "id": 114,
+ "prevSize": 16,
+ "code": 59831,
+ "name": "terminalManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 183
+ },
+ {
+ "icon": {
+ "paths": [
+ "M232 10c-61.702 26.098-104 88.791-104 160 0 63.406 36.891 118.173 88 148v142h-28c-102.784 0-188 79.286-188 174v216c0 94.714 85.216 174 188 174h648c102.784 0 188-79.286 188-174v-216c0-94.714-85.216-174-188-174h-90v-272.744l32.242 10.697h75.758c9.891-1.512 13.281-2.842 20-18 16.523-50.182 124.738-56.639 146-37.954 3.52-58.704-84.581-96.842-148-94-38.653-1.549-114 0-114 0-12.518 0.026-23.19 12.302-28 28h-56v-8c0-29.134-22.866-54-52-54h-20c-29.134 0-54 24.866-54 54v108c0 29.134 24.866 54 54 54h20c10.645 0 19.738-4.604 28-10v240h-270v-138c55.309-28.606 92-85.473 92-152 0-71.885-45.362-134.327-108-160 0.91 2.929 4 6.714 4 10v176c0 15.687-14.009 28-28 28h-80c-13.991 0-28-12.313-28-28v-176c0-3.286 3.090-7.071 4-10-0.589 0.241-3.414-0.248-4 0zM188 560h648c45.538 0 82 32.037 82 74v16h-812v-16c0-41.963 36.462-74 82-74zM106 714h812v136c0 41.963-36.462 76-82 76h-648c-45.538 0-82-34.037-82-76z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "tools"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 482,
+ "id": 113,
+ "prevSize": 16,
+ "code": 59832,
+ "name": "tools"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 184
+ },
+ {
+ "icon": {
+ "paths": [
+ "M386.288 150.611c-64.504 2.92-124.19 43.881-109.558 141.846 15.955 106.825 15.406 172.256 93.327 158.057 87.588-15.961 108.823-82.844 103.471-164.136-5.847-88.81-26.616-138.511-87.24-135.767zM670.326 166.822c-46.129 2.217-72.376 54.29-93.327 119.556-33.015 102.851-30.356 144.937 48.692 149.951 88.855 5.637 118.134-31.147 131.875-111.45 13.208-77.193-5.994-141.384-64.923-156.030-7.366-1.831-15.727-2.343-22.317-2.026zM112.394 359.327c-60.726 0-106.386 63.689-111.586 141.846-7.171 107.77 33.666 156.045 111.586 141.846 87.588-15.961 115.64-60.605 109.558-141.846-5.847-78.094-48.831-141.846-109.558-141.846zM923.931 373.512c-43.702 4.545-86.594 41.033-113.615 93.213-49.679 95.935-32.478 154.168 44.635 172.241 86.68 20.316 129.302-8.204 156.221-85.107 25.876-73.924 13.064-150.038-42.606-174.268-13.918-6.057-30.067-7.594-44.635-6.079zM493.817 497.12c-80.695 0-167.197 57.335-200.855 176.294-89.884 44.495-159.755 129.365-137.961 214.795 35.956 140.948 185.98 135.767 338.817 135.767s326.644 1.514 326.644-143.872c0-145.386-173.807-382.983-326.644-382.983z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "track"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 483,
+ "id": 112,
+ "prevSize": 16,
+ "code": 59833,
+ "name": "track"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 185
+ },
+ {
+ "icon": {
+ "paths": [
+ "M325.771 135.155c-83.461 0-153.836 70.365-153.836 153.834 0 83.463 70.375 150.816 153.836 150.816s147.803-67.353 147.803-150.816c0-83.469-64.342-153.834-147.803-153.834zM190.033 448.859c-109.183 48.214-183.195 158.051-190.033 283.537h404.954l113.039-250.144c-12.772-8.111-48.521-27.215-62.517-33.393-1.545-1.312-1.458 0-3.017 0l-126.689 189.911-132.721-189.911c-1.134-1.312-1.905 1.312-3.016 0z",
+ "M703.355 355.176c-83.461 0-153.836 70.365-153.836 153.834 0 83.463 70.375 150.816 153.836 150.816s147.804-67.354 147.804-150.816c0-83.469-64.342-153.834-147.804-153.834zM567.617 668.88c-109.183 48.214-183.195 158.051-190.033 283.537h645.509c-6.838-125.486-80.85-235.323-190.033-283.537-1.546-1.312-1.459 0-3.017 0-71.621 110.94-177.699 111.193-259.41 0-1.134-1.312-1.905 1.312-3.016 0z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "userManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 484,
+ "id": 111,
+ "prevSize": 16,
+ "code": 59834,
+ "name": "userManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 186
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 0.25v481.997h-128l112 540.806h802l110-540.806h-128v-481.997zM192 64.25h640v417.997h-640zM244 192.25v64h270v-64zM242 322.246v64h520v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "versionManagment"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 485,
+ "id": 110,
+ "prevSize": 16,
+ "code": 59835,
+ "name": "versionManagment"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 187
+ },
+ {
+ "icon": {
+ "paths": [
+ "M116 0v1024h792v-722h2l-282-300v-2h-512zM176 60h390v302h282v600h-672v-902zM628 96l192 206h-192v-206zM374 98v106h-114v84h114v112l140-154-140-148zM650 452v106h-114v84h114v112l140-154-140-148zM374 616v106h-114v84h114v112l140-154-140-148z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "workOrder"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 486,
+ "id": 109,
+ "prevSize": 16,
+ "code": 59836,
+ "name": "workOrder"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 188
+ },
+ {
+ "icon": {
+ "paths": [
+ "M888.686 0h-753.371c-74.606 0-135.314 62.171-135.314 138.606v746.862c0 76.361 60.709 138.533 135.314 138.533h753.371c74.606 0 135.314-62.171 135.314-138.606v-746.789c0-76.434-60.709-138.606-135.314-138.606zM888.686 950.857h-49.445v-59.831c0-77.531-64-140.581-142.702-140.581h-15.287c-13.239-22.601-37.010-38.473-65.463-38.473-42.35 0-76.8 33.646-76.8 75.118 0 41.399 34.45 75.191 76.8 75.191 28.526 0 52.517-16.091 65.609-38.766h15.141c38.327 0 69.559 30.208 69.559 67.438v59.904h-571.611v-59.831c0-37.23 31.232-67.438 69.559-67.438h51.785c13.239 22.747 37.157 38.766 65.682 38.766 42.35 0 76.727-33.792 76.727-75.191 0-41.472-34.377-75.118-76.727-75.118-28.453 0-52.297 15.872-65.536 38.4h-51.931c-78.702 0-142.702 63.049-142.702 140.581v56.832c-27.355-6.802-48.201-31.598-48.201-62.464v-263.68h109.568c10.679 13.605 26.697 22.894 45.568 22.894 32.329 0 58.441-25.6 58.441-57.198 0-31.671-26.039-57.344-58.441-57.344-21.65 0-39.863 12.069-49.957 29.33h-105.179v-91.429h111.835c10.752 11.776 25.893 19.602 43.301 19.602 32.329 0 58.441-25.673 58.441-57.271 0-31.671-26.039-57.344-58.441-57.344-23.186 0-42.789 13.531-52.224 32.695h-102.912v-267.045c0-36.133 27.867-65.463 62.171-65.463h266.459v108.032c-19.602 9.216-33.353 28.526-33.353 51.2 0 31.744 26.185 57.344 58.587 57.344 32.183 0 58.441-25.6 58.441-57.344 0-17.042-7.973-31.89-19.968-42.423v-116.809h93.33v110.226c-17.774 9.947-30.062 27.721-30.062 49.006 0 31.744 26.185 57.344 58.514 57.344 32.183 0 58.441-25.6 58.441-57.344 0-18.505-9.509-34.231-23.406-44.617v-114.615h266.459c34.231 0 62.098 29.33 62.098 65.463v267.045h-102.546c-9.435-19.163-28.965-32.695-52.224-32.695-32.329 0-58.441 25.673-58.441 57.344 0 31.598 26.039 57.271 58.441 57.271 17.408 0 32.475-7.826 43.301-19.602h111.47v91.429h-104.887c-10.094-17.262-28.306-29.33-49.957-29.33-32.329 0-58.441 25.673-58.441 57.344s26.039 57.198 58.441 57.198c18.871 0 34.962-9.362 45.568-22.894h109.275v263.68c0 36.133-27.867 65.463-62.171 65.463z",
+ "M356.206 377.637h294.985v275.529h-294.985v-275.529z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "cpu"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 487,
+ "id": 108,
+ "prevSize": 16,
+ "code": 59837,
+ "name": "cpu"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 189
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1023.854 653.751l-97.938-566.491h-794.99l-130.706 566.491h-0.219v284.306h1024v-284.306h-0.146zM183.296 160.402h686.885l72.923 421.010h-856.942l97.134-421.010zM955.685 864.841h-887.369v-137.947h887.442v137.947z",
+ "M131.95 750.738h73.143v99.109h-73.143v-99.109z",
+ "M247.003 750.738h73.143v99.109h-73.143v-99.109z",
+ "M890.368 802.231c0 17.693-14.343 32.037-32.037 32.037s-32.037-14.343-32.037-32.037c0-17.693 14.343-32.037 32.037-32.037s32.037 14.343 32.037 32.037z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "memory"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 488,
+ "id": 107,
+ "prevSize": 16,
+ "code": 59838,
+ "name": "memory"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 190
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.331 0-512 229.742-512 512s229.669 512 512 512c282.258 0 512-229.742 512-512s-229.742-512-512-512zM512 950.857c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857 438.857 196.827 438.857 438.857-196.827 438.857-438.857 438.857z",
+ "M757.906 631.296c-56.174-56.174-80.018-165.961-77.605-227.474 2.853-61.44-14.409-118.638-58.661-152.357-39.79-30.208-80.53-24.064-80.53-24.064l-2.414-21.431c0 0-8.923-6.949-26.77-6.949-16.823 0-26.697 6.949-26.697 6.949l-2.706 21.431c0 0-40.667-6.071-80.165 24.064-44.471 33.719-61.586 90.99-58.88 152.357 2.706 61.513-21.358 171.301-77.605 227.401-56.101 56.174-64.073 58.953-61.44 88.283 2.779 29.33 26.917 43.813 26.917 43.813h196.462c0 34.158 37.742 61.733 84.187 61.733 46.592 0 84.187-27.575 84.187-61.733h196.535c0 0 24.21-14.409 26.843-43.813s-5.266-32.11-61.659-88.21z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "currentAlarm"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 489,
+ "id": 106,
+ "prevSize": 16,
+ "code": 59839,
+ "name": "currentAlarm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 191
+ },
+ {
+ "icon": {
+ "paths": [
+ "M518.656 2.341c-282.331 0-512 229.669-512 512 0 282.258 229.669 512 512 512s512.073-229.742 512.073-512c0-282.331-229.742-512-512.073-512zM518.656 953.125c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857c242.103 0 438.93 196.827 438.93 438.857s-196.901 438.857-438.93 438.857z",
+ "M818.907 432.494c-1.755 0-3.365 1.243-5.339 1.463v-192.951c0 0-27.209-12.142-51.273 0-50.834 25.307-118.711 109.495-190.245 123.173-71.314 13.531-264.265-0.512-350.939 7.607-23.918 2.121-63.927 15.067-67.511 67.584-3.877 52.443 0 107.154 0 107.154s19.602 45.202 45.056 45.202c25.381 0 81.627 0 81.627 0s-2.121 107.447 0 143.287c3.145 50.176 18.871 62.318 38.107 88.137 11.045 15.141 73.655 49.737 112.347 25.966 21.504-13.385 39.643-36.425 31.89-65.536-9.509-35.182-44.105-1.39-54.711-44.105-10.679-42.496-7.607-127.561-7.607-127.561s18.286-25.893 42.642-31.963c5.413-1.463 74.459 4.608 74.459 4.608s190.464 66.779 235.52 129.097c31.963 44.032 60.635 13.531 60.635 13.531v-190.61c1.902 0.219 3.584 1.463 5.266 1.463 20.626 0 37.376-23.479 37.376-52.809 0.073-29.111-16.603-52.736-37.303-52.736zM781.824 668.087h-13.824c0 0 0 0-39.424-35.035-39.424-34.889-127.122-69.925-180.809-86.674-15.433-4.754-65.024-8.338-65.024-8.338v-112.347c6.437-0.146 17.262-4.389 37.815-3.73 107.886 2.999 249.198-129.243 249.198-129.243h12.142v375.369z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "noticeAlarm"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 490,
+ "id": 105,
+ "prevSize": 16,
+ "code": 59840,
+ "name": "noticeAlarm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 192
+ },
+ {
+ "icon": {
+ "paths": [
+ "M672.329 351.305l-117.906 100.571c-10.679-6.217-22.528-10.679-35.767-10.679-8.997 0-17.335 2.121-25.234 5.12l-182.491-182.491c-13.458-13.458-35.84-12.727-50.103 1.609-14.263 14.263-14.994 36.645-1.609 50.103l188.416 188.416c-0.512 3.511-2.121 6.656-2.121 10.386 0 40.375 32.768 73.143 73.143 73.143 39.643 0 71.534-31.671 72.704-71.022l128.439-109.568c15.36-13.093 17.189-36.133 4.169-51.493-13.166-15.433-36.279-17.262-51.639-4.096z",
+ "M518.656 206.848c20.187 0 36.571-16.384 36.571-36.571v-51.2c0-20.187-16.384-36.571-36.571-36.571s-36.571 16.384-36.571 36.571v51.2c0 20.187 16.311 36.571 36.571 36.571z",
+ "M518.656 820.736c-20.187 0-36.571 16.457-36.571 36.571v51.273c0 20.114 16.384 36.571 36.571 36.571s36.571-16.457 36.571-36.571v-51.273c0-20.187-16.384-36.571-36.571-36.571z",
+ "M910.336 477.769h-51.127c-20.187 0-36.571 16.384-36.571 36.571s16.384 36.571 36.571 36.571h51.127c20.261 0 36.571-16.384 36.571-36.571s-16.238-36.571-36.571-36.571z",
+ "M172.105 477.769h-51.2c-20.114 0-36.571 16.384-36.571 36.571s16.457 36.571 36.571 36.571h51.2c20.187 0 36.571-16.384 36.571-36.571s-16.384-36.571-36.571-36.571z",
+ "M518.656 2.341c-282.331 0-512 229.669-512 512 0 282.258 229.669 512 512 512s512.073-229.742 512.073-512c0-282.331-229.742-512-512.073-512zM518.656 953.125c-242.030 0-438.857-196.827-438.857-438.857s196.827-438.857 438.857-438.857c242.103 0 438.93 196.827 438.93 438.857s-196.901 438.857-438.93 438.857z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "historyAlarm"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 491,
+ "id": 104,
+ "prevSize": 16,
+ "code": 59841,
+ "name": "historyAlarm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 193
+ },
+ {
+ "icon": {
+ "paths": [
+ "M868.791 755.785l-251.026-245.102 245.175-250.88-107.154-104.521-245.029 250.88-251.026-245.029-104.521 107.008 251.026 245.102-245.175 251.026 107.081 104.448 245.102-250.953 251.026 245.175z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "close"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 492,
+ "id": 103,
+ "prevSize": 16,
+ "code": 59842,
+ "name": "close"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 194
+ },
+ {
+ "icon": {
+ "paths": [
+ "M36.571 73.143v950.857h950.857v-950.857h-950.857zM919.113 146.286v113.225h-814.226v-113.225h814.226zM688.567 332.654v165.23h-136.338v-165.23h136.338zM479.086 497.957h-144.018v-165.303h144.018v165.303zM261.925 497.957h-157.038v-165.303h157.038v165.303zM261.925 571.099v142.482h-157.038v-142.482h157.038zM335.067 571.099h144.018v142.482h-144.018v-142.482zM552.229 571.099h136.338v142.482h-136.338v-142.482zM761.71 571.099h157.403v142.482h-157.403v-142.482zM761.71 497.957v-165.303h157.403v165.23h-157.403zM104.887 950.93v-164.206h157.038v164.206h-157.038zM335.067 950.93v-164.206h144.018v164.206h-144.018zM552.229 950.93v-164.206h136.338v164.206h-136.338zM761.71 950.93v-164.206h157.403v164.206h-157.403z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "table"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 493,
+ "id": 102,
+ "prevSize": 16,
+ "code": 59843,
+ "name": "table"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 195
+ },
+ {
+ "icon": {
+ "paths": [
+ "M215.040 36.571l501.102 481.646v-481.573h146.286v950.784h-146.286v-463.506l-501.102 463.506z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "next"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 494,
+ "id": 101,
+ "prevSize": 16,
+ "code": 59844,
+ "name": "next"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 196
+ },
+ {
+ "icon": {
+ "paths": [
+ "M862.427 36.571l-501.102 481.646v-481.573h-146.286v950.784h146.286v-463.506l501.102 463.506z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "pre"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 495,
+ "id": 100,
+ "prevSize": 16,
+ "code": 59845,
+ "name": "pre"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 197
+ },
+ {
+ "icon": {
+ "paths": [
+ "M942.528 574.848c0 0-39.872-43.904-77.632-68.096-37.888-24.32-102.656-36.992-102.656-36.992l-3.392-31.104 6.848-4.608c0 0 27.776-56.64 32.384-69.312 4.544-12.736 12.8-12.736 18.56-19.648s12.032-51.84 8.128-58.88c-2.88-5.184-9.344-7.040-9.344-7.040l1.28-9.152c0 0 10.368-57.728 6.848-75.072s-11.648-45.12-21.888-58.88c-10.496-13.888-27.648-20.8-41.6-18.56-13.888 2.368-20.864-6.912-20.864-6.912s-26.368-23.104-51.84-24.256-98.304 17.344-113.28 85.504c-14.976 68.16 0 110.848 0 110.848l-6.976 2.304c0 0-3.456 28.864 3.52 49.664 6.848 20.736 24.256 33.408 24.256 33.408l3.456 6.976c0 0 4.032 9.344 9.28 20.672 53.44 35.776 90.176 104.704 90.176 184.96 0 46.080-12.224 88.384-32.576 123.072 11.2 0.704 22.464 1.344 33.6 1.088 134.208-3.648 236.672-42.24 243.712-61.888 6.848-19.52 0-68.096 0-68.096z",
+ "M355.136 580.736c0-78.912 35.52-146.88 87.552-183.168 6.528-13.76 12.864-27.456 14.848-32.896 4.48-12.672 12.736-12.672 18.496-19.584s12.032-51.84 8.128-58.88c-2.88-5.184-9.344-7.040-9.344-7.040l1.28-9.152c0 0 10.368-57.728 6.848-75.072s-11.648-45.12-21.888-58.88c-10.56-13.888-27.712-20.864-41.664-18.56-13.888 2.368-20.864-6.912-20.864-6.912s-26.368-23.104-51.84-24.256c-25.472-1.152-98.304 17.344-113.28 85.504s0 110.848 0 110.848l-6.912 2.304c0 0-3.456 28.864 3.456 49.664 6.912 20.736 24.256 33.408 24.256 33.408l3.456 6.976c0 0 22.016 51.968 31.168 60.032 9.28 8.128 2.304 28.928 2.304 28.928l-12.672 9.216c0 0-161.664 50.88-166.336 97.088s-6.464 55.808-3.264 69.888c2.176 9.344 129.664 68.096 249.28 64.768 10.048-0.256 19.392-1.152 29.056-1.728-20.032-34.688-32.064-76.736-32.064-122.496z",
+ "M568.832 429.504c0 0-26.368-23.104-51.84-24.256s-98.304 17.344-113.28 85.504c-14.976 68.16 0 110.848 0 110.848l-6.912 2.368c0 0-3.456 28.864 3.456 49.664 6.912 20.736 24.256 33.408 24.256 33.408l3.456 6.976c0 0 22.016 51.968 31.168 60.032 9.28 8.064 2.304 28.864 2.304 28.864l-12.672 9.216c0 0-161.664 50.88-166.336 97.088s-6.464 55.808-3.264 69.888c2.176 9.408 129.664 68.16 249.28 64.832 134.208-3.712 236.736-42.304 243.712-61.888 6.848-19.648 0-68.16 0-68.16s-39.872-43.904-77.632-68.096c-37.888-24.32-102.656-36.992-102.656-36.992l-3.392-31.104 6.848-4.608c0 0 27.776-56.64 32.384-69.312 4.48-12.672 12.736-12.672 18.496-19.648s12.032-51.84 8.128-58.88c-2.88-5.184-9.344-7.040-9.344-7.040l1.28-9.152c0 0 10.368-57.728 6.848-75.072s-11.648-45.12-21.888-58.88c-10.432-14.016-27.52-20.928-41.536-18.688-13.888 2.368-20.864-6.912-20.864-6.912z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "roleset"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 496,
+ "id": 99,
+ "prevSize": 16,
+ "code": 59846,
+ "name": "roleset"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 198
+ },
+ {
+ "icon": {
+ "paths": [
+ "M509.504 670.656c0 0 9.344-27.904-3.072-38.656-12.288-10.816-41.792-80.448-41.792-80.448l-4.608-9.344c0 0-23.232-16.96-32.512-44.864-0.64-1.856-0.768-3.968-1.28-5.888-17.152-4.544-28.928-6.848-28.928-6.848l-4.352-39.36 8.64-5.888c0 0 12.16-24.832 23.424-48.512-2.88-25.856-3.456-64 7.104-111.68 6.208-28.096 20.096-49.344 36.864-65.984 3.584-23.104 8.576-61.056 5.504-75.904-4.16-21.888-14.528-56.96-27.712-74.432-13.12-17.536-34.944-26.304-52.48-23.36s-26.24-8.768-26.24-8.768-33.472-29.248-65.6-30.656c-32.128-1.472-124.16 21.888-143.168 107.968-18.944 86.080 0 140.032 0 140.032l-8.64 3.008c0 0-4.416 36.544 4.288 62.72 8.768 26.304 30.656 42.368 30.656 42.368l4.352 8.768c0 0 27.84 65.664 39.424 75.904 11.648 10.112 2.88 36.48 2.88 36.48l-15.936 11.584c0 0-204.288 64.192-210.176 122.688-5.824 58.304-8.192 70.528-4.096 88.256 2.624 11.072 144.704 77.184 287.104 81.728 54.144-51.456 203.456-98.496 203.456-98.496l16.896-12.416z",
+ "M1019.84 849.536c0 0-53.376-58.816-104-91.328-50.752-32.576-137.344-49.472-137.344-49.472l-4.608-41.728 9.28-6.272c0 0 37.12-75.84 43.392-92.864 6.144-17.024 17.024-17.024 24.768-26.304s16-69.376 10.752-78.976c-3.776-6.912-12.224-9.344-12.224-9.344l1.344-12.224c0 0 13.888-77.376 9.28-100.608s-15.488-60.352-29.376-78.912c-14.016-18.624-37.12-27.904-55.744-24.832-18.624 3.136-27.904-9.28-27.904-9.28s-35.52-30.912-69.504-32.448c-34.112-1.536-131.648 23.168-151.744 114.56-20.096 91.264 0 148.48 0 148.48l-9.28 3.136c0 0-4.672 38.72 4.608 66.56 9.28 27.904 32.512 44.928 32.512 44.928l4.608 9.344c0 0 29.504 69.632 41.728 80.448 12.352 10.752 3.136 38.656 3.136 38.656l-17.024 12.288c0 0-216.64 68.096-222.848 130.048s-8.704 74.752-4.352 93.632c2.88 12.544 173.76 91.264 334.016 86.784 179.904-4.928 317.248-56.704 326.528-82.944 9.344-26.304 0-91.328 0-91.328z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "role"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 497,
+ "id": 98,
+ "prevSize": 16,
+ "code": 59847,
+ "name": "role"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 199
+ },
+ {
+ "icon": {
+ "paths": [
+ "M593.664 100.928c0 0-41.216-35.84-80.64-37.632-39.488-1.792-152.512 26.88-175.808 132.736-23.296 105.792 0 172.096 0 172.096l-10.688 3.648c0 0-5.376 44.864 5.312 77.184 10.752 32.256 37.696 51.968 37.696 51.968l5.376 10.816c0 0 34.112 80.704 48.384 93.184 14.4 12.48 3.584 44.8 3.584 44.8l-19.712 14.336c0 0-251.072 78.912-258.24 150.656s-10.048 86.656-5.056 108.48c3.328 14.592 201.344 105.728 386.944 100.608 208.512-5.76 367.68-65.664 378.432-96.128 10.752-30.528 0-105.792 0-105.792s-61.952-68.16-120.64-105.792c-58.752-37.76-159.104-57.344-159.104-57.344l-5.248-48.448 10.624-7.232c0 0 43.136-87.872 50.304-107.584 7.104-19.712 19.712-19.712 28.672-30.464s18.56-80.384 12.48-91.52c-4.352-8-14.336-10.88-14.336-10.88l1.792-14.208c0 0 16.064-89.664 10.688-116.544-5.312-26.88-17.92-69.952-34.048-91.456s-42.944-32.256-64.512-28.736c-21.568 3.648-32.256-10.752-32.256-10.752z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "user"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 498,
+ "id": 97,
+ "prevSize": 16,
+ "code": 59848,
+ "name": "user"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 200
+ },
+ {
+ "icon": {
+ "paths": [
+ "M490.639 255.969l-457.452 128.548 31.401 141.455-2.253-0.481v3.779l-45.338 141.681 402.376 96.333 77.45-145.454 1.884-3.779-411.1-87.199 434.191-129.428z",
+ "M62.336 701.619v205.455l436.372 115.231v-359.347l-66.514 126.766z",
+ "M531.937 619.74l1.889 3.779 77.445 145.459 402.381-96.338-45.348-141.681v-3.779l-1.367 0.287 33.623-151.404-447.601-120.095-31.16 145.454 442.87 126.525z",
+ "M531.937 664.648v359.352l436.367-115.236v-205.455l-369.848 88.1z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "empty"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 499,
+ "id": 96,
+ "prevSize": 16,
+ "code": 59849,
+ "name": "empty"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 201
+ },
+ {
+ "icon": {
+ "paths": [
+ "M544.427 403.183l179.849 222.788v295.424l119.74 102.605v-397.414l179.985-223.403h-479.573zM809.882 614.946v333.346l-51.473-39.458v-295.492l-138.923-176.503h333.858l-143.462 178.108z",
+ "M393.865 425.472c-35.601 8.499-61.269 42.598-62.362 44.032l-3.14 4.267-0.205 5.291c-0.137 4.164-3.686 103.185 9.899 155.136 9.83 37.717 35.635 40.482 51.029 42.052 12.834 1.399 14.336 1.843 16.691 10.138 8.431 30.071-19.422 50.381-31.676 57.617-37.717 21.914-106.701-12.937-116.873-26.317-3.618-4.676-7.134-8.943-10.513-13.073-18.091-21.982-30.071-36.42-32.939-81.203-2.628-40.994 0-165.751 0.034-167.049l0.375-17.442h-118.374c-13.141 0-30.413-23.279-39.014-40.585-0.853-13.483-3.823-68.164 0.205-120.286 3.789-50.62 44.237-61.679 68.028-63.795 47.002-4.198 98.202-3.243 147.763-2.321 63.556 1.126 123.563 2.287 174.046-6.861 59.187-10.786 114.449-54.511 163.226-93.082 27.785-21.948 54.033-42.735 76.015-53.146 13.756-6.554 29.286-4.949 39.287-2.765v234.598l19.831-3.277 3.721-1.502c15.735 0 29.047 20.651 29.047 45.056 0 7.817-1.468 15.462-4.403 22.767l31.744 12.629c4.506-11.366 6.793-23.279 6.793-35.43 0-39.868-22.357-72.021-52.599-78.131v-220.604l-10.513-4.403c-1.604-0.717-41.267-16.964-77.551 0.307-25.463 12.083-53.248 33.997-82.534 57.207-45.67 36.079-97.382 77.005-148.173 86.255-47.138 8.499-105.54 7.441-167.322 6.315-50.449-0.956-102.571-1.877-151.415 2.458-57.89 5.12-94.925 40.721-99.021 95.198-4.813 62.259-0.205 125.952 0 128.649l1.502 5.837c2.97 6.451 30.174 63.181 71.339 63.181h83.524c-0.614 36.352-1.775 119.159 0.375 152.508 3.618 55.774 20.753 76.595 40.653 100.727 3.209 3.891 6.519 7.885 9.83 12.151 13.107 17.135 65.092 46.558 114.142 46.558 16.555 0 32.802-3.379 47.070-11.708 39.834-23.586 57.481-59.597 47.206-96.324-8.738-30.857-32.017-33.348-45.943-34.816-13.585-1.399-17.681-1.809-21.572-16.759-10.581-40.516-9.489-118.101-8.977-139.605 7.543-8.67 22.938-23.313 38.059-26.999 6.588-0.478 50.039 2.458 86.699 5.564l8.533-33.143-4.198-0.887c-87.996-7.134-94.481-5.666-97.348-4.983z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "noticeFilter"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 500,
+ "id": 95,
+ "prevSize": 16,
+ "code": 59850,
+ "name": "noticeFilter"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 202
+ },
+ {
+ "icon": {
+ "paths": [
+ "M260.949 393.216c14.711-9.284 56.491-30.891 129.877-33.485 93.15-3.174 275.9 29.491 277.675 29.798l52.156 9.353-36.864-38.059c-5.905-6.076-145.681-148.651-287.369-158.618-68.574-4.881-119.159 4.233-146.33 11.196l-5.803-149.094-233.745 271.189 250.402 235.042v-177.323zM226.816 376.491v115.2l-169.097-158.72 155.819-180.736 4.267 108.51 22.323-8.704c0.512-0.171 58.914-22.391 153.873-15.77 85.026 6.007 172.954 68.301 223.198 110.217-63.181-9.694-164.215-22.972-227.601-20.855-106.325 3.755-154.795 44.032-156.809 45.739l-5.973 5.12z",
+ "M936.073 719.838l-27.477-27.136c-72.841-72.738-102.332-217.771-99.396-292.796 4.471-95.881-25.907-173.705-85.538-219.17-40.073-30.447-80.828-36.079-103.356-36.489l-2.253-20.105-5.7-4.437c-1.707-1.331-17.476-12.971-46.49-12.971-27.238 0-43.895 11.23-45.705 12.493l-6.144 4.335-2.628 20.719c-14.131 0.273-35.567 2.594-59.358 11.878l12.356 31.812c32.529-12.629 59.255-9.148 59.46-9.114l17.237 2.56 4.71-37.069c9.148-3.413 31.846-3.243 40.141-0.239l4.301 37.239 17.374-2.458c1.98-0.205 48.777-6.383 95.403 29.047 50.415 38.434 76.049 106.086 72.090 190.566-3.311 83.558 28.467 237.568 109.397 318.43l27.648 27.307c51.132 50.21 52.531 52.395 50.278 77.653-2.15 23.484-17.51 37.888-24.474 43.315h-275.831v17.067c0 36.318-43.145 65.911-96.119 65.911s-96.085-29.559-96.085-65.911v-17.067h-275.763c-6.929-5.461-22.391-20.070-24.576-43.315-2.253-25.259-0.853-27.443 49.971-77.517l27.75-27.511c68.13-68.062 100.489-187.631 107.52-269.346l-33.997-2.935c-6.519 75.981-36.045 186.539-97.655 248.149l-27.58 27.307c-51.541 50.756-63.795 62.839-60.006 104.96 4.471 47.514 42.769 70.895 44.407 71.851l4.028 2.423h253.645c10.581 47.070 64.102 82.978 128.341 82.978 64.273 0 117.794-35.908 128.375-82.978h253.679l4.028-2.389c1.638-0.956 40.073-24.405 44.373-71.953 3.721-42.121-8.602-54.238-60.382-105.097z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "alarmTurn"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 501,
+ "id": 94,
+ "prevSize": 16,
+ "code": 59851,
+ "name": "alarmTurn"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 203
+ },
+ {
+ "icon": {
+ "paths": [
+ "M846.814 118.818c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.42 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-56.661c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-56.661c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-56.695c2.526-10.513 5.939-17.169 6.997-18.193v-34.133c-20.617 0-36.454 21.060-41.847 52.326h-114.005v705.434h927.778v-705.434h-138.172zM950.852 790.118h-859.511v-637.167h78.302c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.799-1.707-8.738-13.073-10.615-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.799-1.707-8.772-13.073-10.615-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.806-13.039-10.684-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.806-13.039-10.684-31.607h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h57.139c2.731 38.4 20.036 65.399 43.383 65.399l1.638-33.792c-2.833-1.673-8.772-13.005-10.65-31.573h106.052v637.030z",
+ "M197.086 333.79h176.469v34.133h-176.469v-34.133z",
+ "M195.584 454.929h684.919v34.133h-684.919v-34.133z",
+ "M195.584 596.992h684.919v34.133h-684.919v-34.133z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "advice"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 502,
+ "id": 93,
+ "prevSize": 16,
+ "code": 59852,
+ "name": "advice"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 204
+ },
+ {
+ "icon": {
+ "paths": [
+ "M857.463 514.287c0-28.228-22.46-51.2-50.074-51.2h-224.939v-379.529c0-36.284-30.481-65.775-67.891-65.775-37.478 0-67.925 29.491-67.925 65.775v379.529h-222.72c-27.648 0-50.108 22.972-50.108 51.2v87.825l2.492 12.015 0.853 5.393 4.028 17.545c4.608 48.23 6.793 213.299-31.232 292.25l-4.096 9.045 5.052 7.987c6.076 9.523 17.033 10.001 35.874 10.001 114.483 0 632.866-48.435 654.848-50.483l15.565-1.468v-276.378h0.239v-113.732zM480.768 83.558c0-17.442 15.155-31.642 33.792-31.642s33.758 14.199 33.758 31.642v379.529h-67.55v-379.529zM207.94 514.287c0-9.421 7.168-17.067 15.974-17.067h583.475c8.806 0 15.94 7.646 15.94 17.067v79.565h-615.39v-79.565zM822.886 873.301c-88.337 8.158-525.21 48.094-632.9 48.913 31.437-87.927 30.071-228.727 25.19-285.15h607.71v236.237z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "clearAlarm"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 503,
+ "id": 92,
+ "prevSize": 16,
+ "code": 59853,
+ "name": "clearAlarm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 205
+ },
+ {
+ "icon": {
+ "paths": [
+ "M914.193 536.303h-814.182c-33.826 0-61.338-27.511-61.338-61.338v-186.948c0-33.826 27.511-61.338 61.338-61.338h814.182c33.826 0 61.338 27.511 61.338 61.338v186.948c-0 33.826-27.511 61.338-61.338 61.338zM100.011 260.813c-14.985 0-27.204 12.22-27.204 27.204v186.948c0 14.985 12.186 27.204 27.204 27.204h814.182c14.985 0 27.204-12.22 27.204-27.204v-186.948c0-14.985-12.186-27.204-27.204-27.204h-814.182z",
+ "M914.193 903.817h-814.182c-33.826 0-61.338-27.511-61.338-61.338v-186.948c0-33.826 27.511-61.338 61.338-61.338h814.182c33.826 0 61.338 27.511 61.338 61.338v186.948c-0 33.86-27.511 61.338-61.338 61.338zM100.011 628.361c-14.985 0-27.204 12.186-27.204 27.204v186.948c0 14.985 12.186 27.204 27.204 27.204h814.182c14.985 0 27.204-12.186 27.204-27.204v-186.948c0-14.985-12.186-27.204-27.204-27.204h-814.182z",
+ "M668.433 371.644c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z",
+ "M848.282 371.644c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z",
+ "M247.569 756.258c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z",
+ "M452.369 756.258c0 25.977-21.059 47.036-47.036 47.036s-47.036-21.059-47.036-47.036c0-25.977 21.059-47.036 47.036-47.036s47.036 21.059 47.036 47.036z",
+ "M670.003 756.258c0 25.996-21.074 47.070-47.070 47.070s-47.070-21.074-47.070-47.070c0-25.996 21.074-47.070 47.070-47.070s47.070 21.074 47.070 47.070z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "alarmBox"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 504,
+ "id": 91,
+ "prevSize": 16,
+ "code": 59854,
+ "name": "alarmBox"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 206
+ },
+ {
+ "icon": {
+ "paths": [
+ "M487.083 899.618l-26.658-308.838 307.507 177.527-280.849 131.311zM500.053 653.073l16.828 194.97 177.254-82.91-194.082-112.060zM770.15 733.013l-280.337-161.792 260.233-450.697c21.163-36.693 69.666-49.835 106.496-28.57l145.306 83.9c37.786 21.845 50.347 68.608 28.57 106.462l-15.394 26.522 0.034 0.034-244.907 424.141zM536.474 558.729l221.218 127.659 210.773-365.056-221.218-127.727-210.773 365.124zM780.834 135.578l221.116 127.693c10.923-21.163 3.823-45.739-17.135-57.856l-145.306-83.9c-20.173-11.708-46.251-5.257-58.675 14.063z",
+ "M0 363.383h331.332v34.133h-331.332v-34.133z",
+ "M0 540.672h331.332v34.133h-331.332v-34.133z",
+ "M0 717.961h331.332v34.133h-331.332v-34.133z",
+ "M0 895.249h720.657v34.133h-720.657v-34.133z",
+ "M777.683 266.068l29.282 17.61-172.845 287.404-29.282-17.61 172.845-287.404z",
+ "M865.434 323.273l29.282 17.61-172.845 287.404-29.282-17.61 172.845-287.404z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "afreshDef"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 505,
+ "id": 90,
+ "prevSize": 16,
+ "code": 59855,
+ "name": "afreshDef"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 207
+ },
+ {
+ "icon": {
+ "paths": [
+ "M843.981 1024l-119.706-102.605v-295.424l-179.849-222.788h479.573l-180.019 223.437v397.38zM758.409 908.8l51.439 39.458v-333.346l143.497-178.108h-333.892l138.957 176.503v295.492z",
+ "M493.261 697.105c0 32.631-39.014 59.153-86.972 59.153-47.104 0-86.938-27.102-86.938-59.153v-17.067h-254.396c-6.417-5.086-19.729-17.954-21.641-38.571-2.048-22.562-0.751-24.542 45.466-70.076l25.6-25.327c75.127-75.059 104.175-216.951 100.796-293.751-3.413-77.278 20.002-139.059 66.014-173.943 40.516-30.891 84.48-26.658 86.255-26.419l17.271 2.56 4.369-34.679c8.090-2.901 26.931-2.731 34.304-0.239l4.062 34.782 17.34-2.423c2.15-0.307 45.807-4.608 86.665 26.419 45.978 35.089 69.359 96.836 65.741 174.012-0.717 17.203-1.809 28.262-0.683 43.418h34.406c-1.297-14.848-0.273-25.6 0.375-41.95 4.13-88.576-23.962-160.563-79.155-202.65-36.454-27.716-73.591-33.246-94.583-33.792l-2.048-17.886-5.666-4.403c-1.673-1.229-16.521-12.186-43.657-12.186-25.429 0-41.062 10.513-42.769 11.708l-6.144 4.335-2.321 18.466c-21.026 0.546-58.163 6.076-94.481 33.758-55.125 41.847-83.354 113.801-79.428 202.615 3.004 68.506-23.757 201.114-90.829 268.117l-25.395 25.156c-47.718 46.967-59.051 58.129-55.501 97.485 4.164 44.373 39.936 66.219 41.472 67.14l4.028 2.423h232.414c10.445 43.349 59.836 76.22 119.023 76.22 59.221 0 108.646-32.905 119.091-76.22h107.554v-34.133h-139.639v17.101z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "alarmFilter"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 506,
+ "id": 89,
+ "prevSize": 16,
+ "code": 59856,
+ "name": "alarmFilter"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 208
+ },
+ {
+ "icon": {
+ "paths": [
+ "M608.037 386.853c7.314 9.143 15.141 17.627 23.698 25.381l-16.823 35.986c-9.216 19.602 0.293 43.739 21.065 53.614l25.966 12.507c20.846 10.021 45.202 2.048 54.272-17.554l16.75-35.986c10.386 1.609 20.699 3.145 31.598 3.145 10.679 0 21.211-1.536 31.598-3.145l16.75 35.986c9.143 19.675 33.426 27.575 54.272 17.627l25.893-12.507c20.919-9.874 30.354-34.011 21.211-53.614l-16.75-36.133c8.558-7.68 16.457-16.238 23.698-25.381l36.279 15.287c19.822 8.411 43.154-2.414 51.858-23.991l10.971-26.917c8.997-21.65 0-45.861-19.822-54.199l-36.571-15.287c0.878-7.387 2.194-14.629 2.194-22.309 0-7.607-1.39-14.775-2.194-22.162l36.718-15.36c19.822-8.411 28.818-32.622 19.822-54.199l-10.898-26.99c-8.704-21.577-32.11-32.329-51.858-23.991l-36.425 15.287c-7.241-9.143-14.994-17.627-23.698-25.307l16.75-36.279c9.143-19.602-0.293-43.666-21.138-53.614l-26.039-12.434c-20.699-9.947-44.983-2.048-54.126 17.554l-16.75 36.059c-10.386-1.682-20.699-3.218-31.598-3.218s-21.211 1.536-31.598 3.218l-16.75-36.059c-9.143-19.602-33.499-27.502-54.199-17.554l-25.966 12.434c-20.919 10.021-30.427 34.011-21.211 53.614l16.75 36.206c-8.558 7.753-16.53 16.165-23.698 25.381l-36.425-15.36c-19.822-8.411-43.081 2.341-51.858 23.991l-11.045 26.99c-8.777 21.577 0.146 45.861 19.968 54.199l36.571 15.287c-0.878 7.461-2.267 14.629-2.267 22.235 0 7.68 1.536 14.921 2.267 22.382l-36.571 15.287c-19.749 8.411-28.745 32.549-19.968 54.199l11.045 26.917c8.777 21.504 32.037 32.329 51.785 23.991l36.498-15.214zM764.635 132.827c68.608 0 124.489 56.613 124.489 126.537 0 69.778-55.735 126.464-124.489 126.464s-124.562-56.686-124.562-126.464c0-69.925 55.808-126.537 124.562-126.537z",
+ "M2.926 1034.021h463.141v-386.56h-463.141v386.56zM392.923 960.878h-121.856v-240.274h121.856v240.274zM76.069 720.603h121.856v240.274h-121.856v-240.274z",
+ "M317.147 364.544l-133.559 8.119c14.19-31.378 35.84-58.953 65.463-79.872 106.13-74.679 191.269-42.789 191.269-42.789-76.946-54.491-160.11-59.099-227.182-12.507-49.957 34.523-86.235 81.774-102.839 136.997l-110.299 4.389 160.11 149.358 157.038-163.694z",
+ "M915.822 624.786l-198.729 109.275 129.755 32.183c-22.894 25.673-51.858 45.422-86.382 56.466-123.611 39.57-195.291-16.53-195.291-16.53 57.125 75.045 135.168 104.375 213.138 80.018 58.002-17.92 106.715-52.297 139.045-99.913l106.642 28.965-108.178-190.464z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "manAnalysis"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 507,
+ "id": 88,
+ "prevSize": 16,
+ "code": 59857,
+ "name": "manAnalysis"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 209
+ },
+ {
+ "icon": {
+ "paths": [
+ "M296.96 296.887c0 82.003-66.477 148.48-148.48 148.48s-148.48-66.477-148.48-148.48c0-82.003 66.477-148.48 148.48-148.48s148.48 66.477 148.48 148.48z",
+ "M551.936 807.79c0 82.003-66.477 148.48-148.48 148.48s-148.48-66.477-148.48-148.48c0-82.003 66.477-148.48 148.48-148.48s148.48 66.477 148.48 148.48z",
+ "M930.158 311.808c0 91.496-74.172 165.669-165.669 165.669s-165.669-74.172-165.669-165.669c0-91.496 74.172-165.669 165.669-165.669s165.669 74.172 165.669 165.669z",
+ "M1024 784.018c0 73.803-59.829 133.632-133.632 133.632s-133.632-59.829-133.632-133.632c0-73.803 59.829-133.632 133.632-133.632s133.632 59.829 133.632 133.632z",
+ "M732.286 362.027l55.324-19.275 166.956 479.199-55.324 19.275-166.956-479.199z",
+ "M812.421 225.214l46.39 35.785-460.695 597.214-46.39-35.785 460.695-597.214z",
+ "M112.914 300.476l52.061-26.868 293.504 568.704-52.061 26.868-293.504-568.704z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "drill"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 508,
+ "id": 87,
+ "prevSize": 16,
+ "code": 59858,
+ "name": "drill"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 210
+ },
+ {
+ "icon": {
+ "paths": [
+ "M977.774 586.313l-72.192-30.281c1.609-14.629 4.462-28.965 4.462-44.032s-2.779-29.257-4.462-43.886l72.338-30.427c39.058-16.457 56.759-64.293 39.278-106.862l-21.723-53.248c-17.335-42.715-63.195-63.854-102.254-47.397l-72.046 30.354c-14.263-18.066-29.696-34.743-46.738-50.030l33.134-71.534c17.993-38.766-0.658-86.235-41.765-105.911l-51.419-24.503c-41.106-19.675-89.015-4.096-107.081 34.67l-33.061 71.168c-20.407-3.291-40.96-6.363-62.318-6.363-21.285 0-41.838 3.072-62.245 6.363l-33.061-71.168c-18.066-38.766-66.048-54.345-107.081-34.67l-51.419 24.576c-41.106 19.675-59.831 67.145-41.765 105.838l33.134 71.461c-17.042 15.287-32.475 31.963-46.738 50.030l-71.973-30.281c-39.058-16.457-84.919 4.681-102.254 47.397l-21.797 53.248c-17.408 42.569 0.219 90.478 39.351 106.862l72.192 30.354c-1.536 14.702-4.315 28.891-4.315 43.959 0 15.141 2.779 29.403 4.389 44.105l-72.192 30.281c-39.131 16.603-56.832 64.219-39.497 106.935l21.87 53.175c17.335 42.569 63.269 63.781 102.327 47.397l71.899-30.208c14.263 17.993 29.696 34.743 46.665 50.030l-33.134 71.314c-18.066 38.693 0.658 86.309 41.765 105.838l51.419 24.722c41.106 19.675 89.088 4.023 107.081-34.816l32.987-71.095c20.407 3.291 40.96 6.363 62.245 6.363 21.358 0 41.911-3.072 62.391-6.363l32.987 71.095c17.993 38.766 65.975 54.418 107.081 34.816l51.419-24.722c41.179-19.602 59.758-67.145 41.765-105.838l-33.134-71.461c16.969-15.287 32.402-31.963 46.738-49.957l71.899 30.281c39.058 16.384 84.992-4.827 102.327-47.47l21.797-53.175c17.627-42.715-0.219-90.405-39.278-106.935zM512 761.71c-135.899 0-246.053-111.909-246.053-249.637 0-138.094 110.153-249.71 246.053-249.71 135.753 0 245.906 111.616 245.906 249.71 0 137.728-110.153 249.637-245.906 249.637z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "gear"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 509,
+ "id": 86,
+ "prevSize": 16,
+ "code": 59859,
+ "name": "gear"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 211
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.317 0-512 229.683-512 512 0 282.33 229.683 512 512 512 282.33 0 512-229.67 512-512 0-282.317-229.67-512-512-512zM512 1011.379c-275.341 0-499.354-224.026-499.354-499.379 0-275.341 224.013-499.354 499.354-499.354 275.354 0 499.379 224.013 499.379 499.354-0 275.354-224.026 499.379-499.379 499.379z",
+ "M873.011 546.624c-15.206 0-29.312 4.71-40.973 12.723l-144.064-175.002c10.803-12.659 17.344-29.043 17.344-46.976 0-40-32.422-72.435-72.422-72.435s-72.448 32.435-72.448 72.435c0 22.144 9.971 41.946 25.638 55.219l-147.52 214.63c-12.48-10.202-28.416-16.32-45.786-16.32-19.917 0-37.952 8.051-51.059 21.069l-126.118-104.038c6.003-10.56 9.485-22.733 9.485-35.75 0-40-32.435-72.435-72.435-72.435s-72.435 32.435-72.435 72.435c0 40.013 32.435 72.435 72.435 72.435 22.374 0 42.368-10.15 55.654-26.099l125.184 103.27c-8.269 11.763-13.158 26.074-13.158 41.549 0 40.013 32.435 72.435 72.435 72.435s72.435-32.422 72.435-72.435c0-17.933-6.566-34.342-17.37-46.989l148.723-216.384c10.688 6.221 23.078 9.843 36.339 9.843 17.421 0 33.421-6.157 45.914-16.422l143.347 174.131c-13.312 13.133-21.594 31.373-21.594 51.558 0 40.013 32.435 72.435 72.435 72.435s72.422-32.422 72.422-72.435c0.013-40.013-32.41-72.448-72.41-72.448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "process"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 510,
+ "id": 85,
+ "prevSize": 16,
+ "code": 59860,
+ "name": "process"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 212
+ },
+ {
+ "icon": {
+ "paths": [
+ "M950.857 950.857h-877.714v-877.714h482.011v-73.143h-555.154v1024h1024v-458.679h-73.143z",
+ "M526.19 277.285c-98.231 91.721-224.475 317.001-224.475 317.001s193.17-118.272 280.576-162.816c77.824-39.643 192.658-28.818 218.478-26.697l-0.658 184.466 223.89-308.297-224.402-280.942 0.585 183.077c-30.647 1.902-187.831 13.897-273.993 94.208z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "unacknownledge"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 511,
+ "id": 84,
+ "prevSize": 16,
+ "code": 59861,
+ "name": "unacknownledge"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 213
+ },
+ {
+ "icon": {
+ "paths": [
+ "M950.857 950.857h-877.714v-877.714h482.011v-73.143h-555.154v1024h1024v-458.679h-73.143z",
+ "M240.933 482.889l335.433 327.826 447.634-640-119.881-83.822-348.818 498.688-212.187-207.36z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "acknownledge"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 512,
+ "id": 83,
+ "prevSize": 16,
+ "code": 59862,
+ "name": "acknownledge"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 214
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512.064 0c-282.304 0-512.064 229.696-512.064 512 0 282.368 229.76 512 512.064 512s511.936-229.632 511.936-512-229.632-512-511.936-512zM512.064 960c-246.976 0-448.064-201.024-448.064-448 0-247.040 201.088-448 448.064-448 247.040 0 447.936 201.024 447.936 448 0 246.912-200.896 448-447.936 448z",
+ "M615.872 427.072l-73.408-41.792 80.64-142.016c-72.576-19.648-152.192 10.624-191.168 79.232-36.224 63.744-26.048 140.608 18.944 193.28l-141.632 249.216c-15.616 27.52-6.016 62.528 21.504 78.144s62.528 6.016 78.144-21.504l141.568-249.28c68.352 11.776 139.712-18.88 175.872-82.56 38.976-68.544 24.384-152.384-29.76-204.864l-80.704 142.144z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Operation"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 513,
+ "id": 82,
+ "prevSize": 16,
+ "code": 59863,
+ "name": "Operation"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 215
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.317 0-512 229.683-512 512 0 282.33 229.683 512 512 512 282.33 0 512-229.67 512-512 0-282.317-229.67-512-512-512zM512 1011.366c-275.341 0-499.354-224.026-499.354-499.366s224.013-499.354 499.354-499.354 499.366 224.013 499.366 499.354-224.026 499.366-499.366 499.366z",
+ "M910.118 562.355c0-77.478-60.083-140.314-134.208-140.314-4.851 0-9.626 0.307-14.349 0.819-18.867-28.506-47.552-49.28-80.96-57.101-31.194-75.405-102.912-128.205-186.496-128.205-85.978 0-159.334 55.923-188.992 134.81-8.32-1.357-16.794-2.291-25.485-2.291-89.907 0-162.79 76.211-162.79 170.163 0 38.464 12.339 73.805 32.909 102.298-5.99 9.050-9.523 19.878-9.523 31.526 0 31.578 25.587 57.165 57.165 57.165h631.386c31.59 0 57.165-25.587 57.165-57.165 0-8.576-2.022-16.614-5.414-23.923 18.458-24.038 29.594-54.541 29.594-87.782z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "cloud"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 514,
+ "id": 81,
+ "prevSize": 16,
+ "code": 59864,
+ "name": "cloud"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 216
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.317 0-512 229.683-512 512 0 282.33 229.683 512 512 512 282.33 0 512-229.67 512-512 0-282.317-229.67-512-512-512zM512 1011.366c-275.341 0-499.354-224.013-499.354-499.366 0-275.341 224.013-499.354 499.354-499.354 275.354 0 499.366 224.013 499.366 499.354 0 275.354-224.013 499.366-499.366 499.366z",
+ "M559.629 403.942h-364.096c-12.57 0-22.758 9.37-22.758 20.928v219.827c0 11.546 10.189 20.928 22.758 20.928h364.096c12.57 0 22.746-9.37 22.746-20.928v-219.827c0-11.558-10.176-20.928-22.746-20.928zM552.32 621.043c0 9.062-8.704 16.41-19.405 16.41h-310.682c-10.714 0-19.418-7.347-19.418-16.41v-172.506c0-9.062 8.704-16.422 19.418-16.422h310.682c10.701 0 19.405 7.36 19.405 16.422v172.506z",
+ "M377.587 675.584c-35.341 0-64 28.646-64 64h128c0-35.341-28.659-64-64-64z",
+ "M831.603 288h-182.4c-7.078 0-12.8 5.734-12.8 12.8v80h208v-80c0-7.066-5.734-12.8-12.8-12.8z",
+ "M636.403 393.6h208v67.2h-208v-67.2z",
+ "M636.403 726.4c0 7.078 5.722 12.8 12.8 12.8h182.4c7.078 0 12.8-5.722 12.8-12.8v-252.8h-208v252.8zM740.403 630.4c10.598 0 19.2 8.602 19.2 19.2s-8.602 19.2-19.2 19.2-19.2-8.602-19.2-19.2 8.602-19.2 19.2-19.2z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "computer"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 515,
+ "id": 80,
+ "prevSize": 16,
+ "code": 59865,
+ "name": "computer"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 217
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 64c-247.424 0-448 200.576-448 448 0 247.36 200.576 448 448 448 247.488 0 448-200.64 448-448 0-247.424-200.512-448-448-448zM444.032 908.032l41.6-365.696-253.632-6.336 300.032-432-33.344 321.472 222.4 20.864-277.056 461.696z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "alarm"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 516,
+ "id": 79,
+ "prevSize": 16,
+ "code": 59866,
+ "name": "alarm"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 218
+ },
+ {
+ "icon": {
+ "paths": [
+ "M225.984 578.688l290.688 293.312 297.344-293.312-188.992-0.064c-1.728-31.616 9.28-106.688-41.024-253.632-53.312-155.648-242.688-310.336-242.688-310.336s66.688 154.688 90.688 322.112c15.552 108.48 5.312 205.312-17.472 242.88l-188.544-0.96z",
+ "M771.84 62.016v64h178.176v819.968h-876.032v-819.968h138.56v-64h-202.56v947.968h1004.032v-947.968z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "import"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 517,
+ "id": 78,
+ "prevSize": 16,
+ "code": 59867,
+ "name": "import"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 219
+ },
+ {
+ "icon": {
+ "paths": [
+ "M432 549.952c-24 167.36-90.688 322.048-90.688 322.048s189.312-154.688 242.688-310.336c50.304-146.88 39.296-222.016 41.024-253.632h188.992l-297.344-293.376-290.688 293.376 188.48-0.96c22.848 37.568 33.088 134.4 17.536 242.88z",
+ "M771.84 62.016v64h178.176v819.968h-876.032v-819.968h138.56v-64h-202.56v947.968h1004.032v-947.968z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "export"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 518,
+ "id": 77,
+ "prevSize": 16,
+ "code": 59868,
+ "name": "export"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 220
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512-0.064c-282.304 0-512 229.696-512 512s229.696 512 512 512 512-229.696 512-512-229.696-512-512-512zM512 959.936c-247.040 0-448-201.024-448-448 0-247.040 200.96-448 448-448 246.976 0 448 200.96 448 448 0 246.976-201.024 448-448 448z",
+ "M786.816 451.648c0 61.312-56.96 111.040-127.040 111.040-70.208 0-127.168-49.728-127.168-111.040 0-6.656 0.96-12.992 2.24-19.328h-43.584c1.28 6.4 2.24 12.736 2.24 19.328 0 61.312-56.96 111.040-127.040 111.040-70.208 0-127.104-49.728-127.104-111.040 0-6.656 0.96-12.992 2.24-19.328h-42.56l67.84 310.656c0 0 101.952-29.76 248.384-29.76 130.368 0 248.64 29.76 248.64 29.76l67.648-310.656h-47.040c1.216 6.336 2.304 12.736 2.304 19.328z",
+ "M581.76 364.928c0 37.22-30.172 67.392-67.392 67.392s-67.392-30.172-67.392-67.392c0-37.22 30.172-67.392 67.392-67.392s67.392 30.172 67.392 67.392z",
+ "M273.92 375.872c0 31.175-25.273 56.448-56.448 56.448s-56.448-25.273-56.448-56.448c0-31.175 25.273-56.448 56.448-56.448s56.448 25.273 56.448 56.448z",
+ "M863.040 375.872c0 31.175-25.273 56.448-56.448 56.448s-56.448-25.273-56.448-56.448c0-31.175 25.273-56.448 56.448-56.448s56.448 25.273 56.448 56.448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Admin"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 519,
+ "id": 76,
+ "prevSize": 16,
+ "code": 59869,
+ "name": "Admin"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 221
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.229-512 512s229.23 512 512 512c282.77 0 512-229.229 512-512s-229.23-512-512-512zM770 302l94 92-378 368-320-202 136-102 146 142 322-298z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "allSelected"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 520,
+ "id": 75,
+ "prevSize": 16,
+ "code": 59870,
+ "name": "allSelected"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 222
+ },
+ {
+ "icon": {
+ "paths": [
+ "M311.382 213.893l512 314.202-512 325.798z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "angleRight"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 521,
+ "id": 74,
+ "prevSize": 16,
+ "code": 59871,
+ "name": "angleRight"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 223
+ },
+ {
+ "icon": {
+ "paths": [
+ "M480-0l-480 512 480 512v-342.551h488c30.527 0 56-28.108 56-61.793v-218.354c0-33.685-25.473-61.793-56-61.793h-488z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "arrowLeft"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 522,
+ "id": 73,
+ "prevSize": 16,
+ "code": 59872,
+ "name": "arrowLeft"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 224
+ },
+ {
+ "icon": {
+ "paths": [
+ "M297.119 0l-297.119 317.333 79.585 85.333 376.705-402.667h-159.171zM567.71 5.333l-474.86 509.333 474.86 509.333v-341.333h400.58c30.278 0 55.71-27.75 55.71-61.333v-216c0-33.526-25.432-61.333-55.71-61.333h-400.58v-338.667zM652.601 146.667v109.333h363.44v-48c0-33.526-25.432-61.333-55.71-61.333h-307.731z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "arrowLeftAll"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 523,
+ "id": 72,
+ "prevSize": 16,
+ "code": 59873,
+ "name": "arrowLeftAll"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 225
+ },
+ {
+ "icon": {
+ "paths": [
+ "M544-0l480 512-480 512v-342.551h-488c-30.527 0-56-28.108-56-61.793v-218.354c0-33.685 25.473-61.793 56-61.793h488z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "arrowRight"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 524,
+ "id": 71,
+ "prevSize": 16,
+ "code": 59874,
+ "name": "arrowRight"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 226
+ },
+ {
+ "icon": {
+ "paths": [
+ "M726.881 0l297.119 317.333-79.585 85.333-376.705-402.667h159.171zM456.29 5.333l474.86 509.333-474.86 509.333v-341.333h-400.58c-30.278 0-55.71-27.75-55.71-61.333v-216c0-33.526 25.432-61.333 55.71-61.333h400.58v-338.667zM371.399 146.667v109.333h-363.44v-48c0-33.526 25.432-61.333 55.71-61.333h307.731z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "arrowRightAll"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 525,
+ "id": 70,
+ "prevSize": 16,
+ "code": 59875,
+ "name": "arrowRightAll"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 227
+ },
+ {
+ "icon": {
+ "paths": [
+ "M508 0c-31.119 0-58 24.881-58 56v46c-69.831 10.816-133.646 38.889-188 78l-42-40c-11.002-11.002-25.641-18-40-18s-26.998 6.998-38 18l-18 16c-22.005 22.005-22.005 57.995 0 80l42 40c-34.941 48.538-61.038 103.432-72 164h-36c-31.119 0-58 24.881-58 56v22c0 31.119 26.881 58 58 58h36c12.292 76.335 44.912 147.337 94 204l-34 36c-22.005 22.005-22.005 55.995 0 78l16 18c22.005 22.005 57.995 22.005 80 0l44-46c47.099 28.042 99.181 47.199 156 56v46c0 31.119 26.881 56 58 56h22c31.119 0 56-24.881 56-56v-46c27.753-4.228 54.286-11.152 80-20l-104-106c-14.44 2.229-28.936 4-44 4-159.058 0-288-128.942-288-288s128.942-288 288-288c159.058 0 288 128.942 288 288 0 47.853-13.349 92.29-34 132l104 98c33.635-49.218 58.247-105.432 68-166h22c31.119 0 56-26.881 56-58v-22c0-31.119-24.881-56-56-56h-22c-10.615-58.652-34.805-112.539-68-160l36-36c22.005-22.005 22.005-57.995 0-80l-16-16c-11.002-11.002-25.641-16-40-16s-28.998 4.998-40 16l-36 36c-55.735-41.399-121.471-70.951-194-82v-46c0-31.119-24.881-56-56-56h-22zM520 292c-126.678 0-230 103.322-230 230s103.322 228 230 228c29.501 0 58.095-5.855 84-16l210 210c22.005 22.005 55.995 22.005 78 0l10-10c22.005-22.005 22.005-55.995 0-78l-198-198c28.25-38.126 46-84.904 46-136 0-126.678-103.322-230-230-230zM520 400c67.275 0 122 54.725 122 122s-54.725 122-122 122c-67.275 0-122-54.725-122-122s54.725-122 122-122z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "autoFind"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 526,
+ "id": 69,
+ "prevSize": 16,
+ "code": 59876,
+ "name": "autoFind"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 228
+ },
+ {
+ "icon": {
+ "paths": [
+ "M674.24 1010.112l-481.28-481.344 485.696-485.824 45.312 45.248-440.512 440.576 436.032 436.096z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "back"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 527,
+ "id": 68,
+ "prevSize": 16,
+ "code": 59877,
+ "name": "back"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 229
+ },
+ {
+ "icon": {
+ "paths": [
+ "M366 0v364h-180v300h184v-52h52v52h40v-300h92v300h40v-52h54v52h184v-300h-174v-364h-292zM0 658v366h366v-152h-132v-92h-90v-122h-144zM880 658v122h-90v92h-132v152h366v-366h-144zM432 872v152h160v-152h-160z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "ball"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 528,
+ "id": 67,
+ "prevSize": 16,
+ "code": 59878,
+ "name": "ball"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 230
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448.031 21.984v110.003c-111.249 27.552-192 127.68-192 248v93.997c-14.104 170.784-120.996 270.701-224 378.003 4.723 0 9.21-1.984 14-1.984h282c-1.498 8.525-1.997 17.030-1.997 25.997 0 82.726 65.275 148 148 148h34c82.725 0 150-65.274 150-148 0-8.986-2.49-17.459-4-25.997h320c4.787 0 9.277 1.728 14 1.984-103.004-107.302-209.896-207.219-224-378.003v-93.997c0-120.32-80.751-220.448-192-248v-110.003h-124zM396.031 849.984h32c-11.965 12.403-20 28.371-20 46.003 0 40.346 37.391 73.997 84 73.997-10.154 4.16-20.329 8-32 8-46.609 0-84-34.176-84-77.997 0-19.418 7.773-36.070 20-50.003z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "bell"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 529,
+ "id": 66,
+ "prevSize": 16,
+ "code": 59879,
+ "name": "bell"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 231
+ },
+ {
+ "icon": {
+ "paths": [
+ "M509.091 1.707c-134.448 0-242.544 108.704-242.544 244s108.096 246 242.544 246c134.448 0 242.544-110.704 242.544-246s-108.096-244-242.544-244zM769.528 447.707c-140.541 0-254.472 114.618-254.472 256s113.931 256 254.472 256c140.541 0 254.472-114.618 254.472-256s-113.931-256-254.472-256zM306.308 503.707c-346.855 195.91-302.524 531.61-306.162 520h685.883l-1.988-6c-135.113-23.090-238.568-141.499-238.568-284 0-50.008 13.499-97.017 35.785-138-72.082-7.589-136.306-42.513-174.95-92zM610.482 633.707h318.091v128h-318.091v-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "blackList"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 530,
+ "id": 65,
+ "prevSize": 16,
+ "code": 59880,
+ "name": "blackList"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 232
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM530 128l22 124-72 6-22-122 72-8zM276 170c70.131 0 128 57.239 128 130 0 15.422-1.298 30.22-6 44l86 90-66 70-86-86c-16.468 8.112-36.565 12-56 12-70.131 0-122-57.267-122-130 0-72.761 51.869-130 122-130zM760 210l54 82-162 116-54-86 162-112zM888 442l8 74-118 22-8-74 118-22zM246 482l8 74-118 20-8-72 118-22zM598 534l62 64c16.654-8.376 32.276-16 52-16 70.131 0 130 63.253 130 136 0 72.752-59.869 130-130 130s-124-57.248-124-130c0-15.163 5.459-32.45 10-46l-68-66 68-72zM372 612l54 90-166 108-50-82 162-116zM540 770l18 118-72 8-18-124 72-2z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "breakLink"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 531,
+ "id": 64,
+ "prevSize": 16,
+ "code": 59881,
+ "name": "breakLink"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 233
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.229-512 512s229.23 512 512 512c282.77 0 512-229.229 512-512s-229.23-512-512-512zM128 314.003l180 104c61.902-49.734 140.551-80 226-80 198.617 0 360 163.379 360 361.997 0 2.944 0.070 5.056 0 8l-90 1.984c0.134-3.456 0-6.528 0-10.003 0-148.96-121.038-272-270-272-51.469 0-98.972 14.771-140 40l184 106.003-356 93.997-94-353.978z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "cancle"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 532,
+ "id": 63,
+ "prevSize": 16,
+ "code": 59882,
+ "name": "cancle"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 234
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 512.002c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512s512 229.23 512 512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "circle"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 533,
+ "id": 62,
+ "prevSize": 16,
+ "code": 59883,
+ "name": "circle"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 235
+ },
+ {
+ "icon": {
+ "paths": [
+ "M-0 5.333v341.333h122.667v445.333h362.667c17.783 132.745 129.128 234.667 266.667 234.667 149.839 0 272-122.278 272-272s-122.161-269.333-272-269.333c-133.011 0-240.954 95.465-264 221.333h-280v-360h133.333v-341.333h-341.333zM712 586.667h85.333v128h128v85.333h-128v128h-85.333v-128h-128v-85.333h128v-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "closeTree"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 534,
+ "id": 61,
+ "prevSize": 16,
+ "code": 59884,
+ "name": "closeTree"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 236
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h400l-6-238 158-260-146-188-278 392v-602h768v120l128 74v-322h-1024zM796 290l-266 462 166 96 266-460-166-98zM1024 426l-8 16-290 534-58 48h356v-598zM486 828l14 166 152-70-166-96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "configmap"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 535,
+ "id": 60,
+ "prevSize": 16,
+ "code": 59885,
+ "name": "configmap"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 237
+ },
+ {
+ "icon": {
+ "paths": [
+ "M135.461 125.513h789.211v73.143h-789.211v-73.143z",
+ "M430.373 61.147v107.666h199.387v-107.666h-199.387z",
+ "M286.281 463.36h99.035v395.045h-99.035v-395.045z",
+ "M480.549 463.36h99.035v395.045h-99.035v-395.045z",
+ "M674.816 463.36h99.035v395.045h-99.035v-395.045z",
+ "M922.697 999.863h-785.335v-714.606h785.335v714.606zM210.505 926.72h639.049v-568.32h-639.049v568.32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "delete"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 536,
+ "id": 59,
+ "prevSize": 16,
+ "code": 59886,
+ "name": "delete"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 238
+ },
+ {
+ "icon": {
+ "paths": [
+ "M211.587 32l-205.602 224h429.166l-223.564-224zM0 304v720h1024v-496h-596.833v-224h-427.167zM77.845 406.003h95.813v96h-95.813v-96zM255.502 406.003h95.813v96h-95.813v-96zM77.845 614.003h95.813v96h-95.813v-96zM255.502 614.003h95.813v96h-95.813v-96zM680.67 614.003h95.813v96h-95.813v-96zM858.326 614.003h95.813v96h-95.813v-96zM501.020 620.019h63.875v296h-63.875v-296zM75.852 820.019h95.813v96h-95.813v-96zM253.502 820.019h95.813v96h-95.813v-96zM680.67 820.019h95.813v96h-95.813v-96zM858.326 820.019h95.813v96h-95.813v-96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "department"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 537,
+ "id": 58,
+ "prevSize": 16,
+ "code": 59887,
+ "name": "department"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 239
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 45.333v170.667h1024v-170.667h-1024zM0 301.333v170.667h1024v-170.667h-1024zM0 557.333v170.667h1024v-170.667h-1024zM0 813.333v170.667h768v-170.667h-768z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "detail"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 538,
+ "id": 57,
+ "prevSize": 16,
+ "code": 59888,
+ "name": "detail"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 240
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h862.766v-292h160l-192-192-190 192h158v228h-366.766v-896h366.503v204h-158l190 192 192-192h-160v-268h-560.503zM72 214h290v64h-290zM72 474h290v64h-290zM72 726h290v64h-290z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "displaySwitch"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 539,
+ "id": 56,
+ "prevSize": 16,
+ "code": 59889,
+ "name": "displaySwitch"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 241
+ },
+ {
+ "icon": {
+ "paths": [
+ "M120 0v1024h812l20-822-160-202h-672zM216 96h516l124 164-14 668h-626v-832zM298 178v140h146v-140h-146zM524 234v64h252v-64h-252zM298 386v64h478v-64h-478zM298 562v64h478v-64h-478zM298 738v64h478v-64h-478z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "file"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 540,
+ "id": 55,
+ "prevSize": 16,
+ "code": 59890,
+ "name": "file"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 242
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0.006 0l0.497 77.36 415.5 392.907v329.797l192 223.936v-551.698l416.664-388.835-0.668-83.467h-1024zM254.006 101.789h514v44.787l-256 242.258-256-246.33-1.997-40.716z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "filter"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 541,
+ "id": 54,
+ "prevSize": 16,
+ "code": 59891,
+ "name": "filter"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 243
+ },
+ {
+ "icon": {
+ "paths": [
+ "M278-4c-16.425 0-30 13.575-30 30v132c0 16.425 13.575 30 30 30h132c16.425 0 30-13.575 30-30v-132c0-16.425-13.575-30-30-30h-132zM598-2c-16.425 0-30 13.575-30 30v132c0 16.425 13.575 30 30 30h132c16.425 0 30-13.575 30-30v-132c0-16.425-13.575-30-30-30h-132zM440 250l-270 2-114 274v368h208l30-30v-272l126-2c12.464-1.292 21.634-18.792 20-40v-300zM568 252v300c-1.634 21.208 7.536 38.708 20 40l126 2v272l30 30h208v-368l-114-274-270-2zM56 960v64h238v-64h-238zM714 962v64h238v-64h-238z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "find"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 542,
+ "id": 53,
+ "prevSize": 16,
+ "code": 59892,
+ "name": "find"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 244
+ },
+ {
+ "icon": {
+ "paths": [
+ "M96.8 136.576h200.277c43.173-0.136 53.665 12.675 68.962 42.158 0 0 38.028 112.952 79.827 152.074 13.079 12.242 22.734 21.78 49.133 21.78h432.201c53.627 0 96.8 43.571 96.8 97.694v486.13c0 54.122-43.173 97.694-96.8 97.694h-830.399c-53.627 0-96.8-43.571-96.8-97.694v-702.143c0-54.122 43.173-97.694 96.8-97.694z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "folder"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 543,
+ "id": 52,
+ "prevSize": 16,
+ "code": 59893,
+ "name": "folder"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 245
+ },
+ {
+ "icon": {
+ "paths": [
+ "M707.2 952.256h-675.52v-870.912h675.52v64h-611.52v742.912h611.52z",
+ "M737.92 798.272l-45.248-45.248 235.84-235.776-236.544-236.608 45.248-45.248 281.792 281.856z",
+ "M226.24 484.8h713.664v64h-713.664v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "forceOut"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 544,
+ "id": 51,
+ "prevSize": 16,
+ "code": 59894,
+ "name": "forceOut"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 246
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0l-224 256h448l-224-256zM256 288l-256 224 256 224v-448zM768 288v448l256-224-256-224zM288 768l224 256 224-256h-448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "fullScreen"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 545,
+ "id": 50,
+ "prevSize": 16,
+ "code": 59895,
+ "name": "fullScreen"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 247
+ },
+ {
+ "icon": {
+ "paths": [
+ "M823.104 510.912c0 89.472-37.376 169.6-96.576 226.688l132.096 132.096c92.096-91.072 149.44-218.112 149.44-358.784v-0.064l-184.96 0.064z",
+ "M795.392 385.216h195.136c-49.024-191.36-205.312-338.56-400.896-368.896v191.936c92.736 23.616 167.808 89.984 205.76 176.96z",
+ "M611.392 806.656c-30.464 10.688-62.656 17.344-96.768 17.344-170.304 0-308.352-140.096-308.352-313.152 0-154.752 110.848-282.56 256.256-307.776v-190.272c-248.064 26.432-441.408 239.36-441.408 498.112 0 276.608 220.992 500.864 493.504 500.864 86.72 0 167.424-23.744 238.208-63.68l-141.44-141.44z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Graphical"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 546,
+ "id": 49,
+ "prevSize": 16,
+ "code": 59896,
+ "name": "Graphical"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 248
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM508 154c46.383-1.856 85.454 3.072 114 14 28.545 10.93 51.941 26.114 74 44 22.058 17.888 38.725 39.581 48 64 9.273 24.42 13.365 47.981 12 74-1.804 25.729-7.361 51.469-18 76-10.64 24.532-25.936 48.956-46 72-20.065 23.044-44.056 45.493-72 68l-48 38v96h-140v-144c24.721-18.659 47.471-36.070 68-52s40.81-33.788 60-52c19.19-18.211 34.589-37.048 44-58s12.13-42.057 10-60c-3.115-23.536-12.211-39.974-28-52-15.789-12.025-34.516-20.198-56-22-21.485-1.8-39.222 3.978-54 14-13.986 9.106-22.307 19.262-24 30l-6 26-8 4-134 6c1.366-25.281 5.356-50.331 10-72 4.644-21.667 16.939-41.396 38-60 21.061-18.602 46.109-32.135 74-40 27.89-7.863 54.246-12.545 82-14zM428 800h148v94h-148v-94z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "helpTip"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 547,
+ "id": 48,
+ "prevSize": 16,
+ "code": 59897,
+ "name": "helpTip"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 249
+ },
+ {
+ "icon": {
+ "paths": [
+ "M368 0v596h-234l364 360h-498v70h1024v-70h-522l388-360h-234v-596h-288z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "hide"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 548,
+ "id": 47,
+ "prevSize": 16,
+ "code": 59898,
+ "name": "hide"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 250
+ },
+ {
+ "icon": {
+ "paths": [
+ "M167.615 186.842v487.328l34 73.35h572.385l38-75.226v-33.856h26c104.401 0 188-78.618 188-176.794 0-98.182-83.599-176.8-188-176.8h-26v-98.003zM812 346.912h14c66.898 0 122 51.821 122 114.733 0 62.906-55.102 112.845-122 112.845h-14zM0 843.443l108 180.557h834l82-180.557z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "history"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 549,
+ "id": 46,
+ "prevSize": 16,
+ "code": 59899,
+ "name": "history"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 251
+ },
+ {
+ "icon": {
+ "paths": [
+ "M212 6c-86.27 49.558-144 133.862-144 230 0 97.724 59.409 182.82 148 232l24-52c-65.834-40.067-108-105.085-108-180s42.166-141.933 108-182l-28-48zM848 6l-28 48c65.834 40.067 108 107.085 108 182s-42.166 139.933-108 180l24 52c88.591-49.18 148-134.276 148-232 0-96.138-57.73-180.442-144-230zM318 70c-57.742 35.475-98 97.182-98 166 0 69.953 40.705 130.796 100 166l16-38c-44.064-28.681-72-74.374-72-128s27.936-101.319 72-130l-18-36zM742 70l-18 36c44.064 28.681 72 76.374 72 130s-27.936 99.319-72 128l16 38c59.295-35.204 100-96.047 100-166 0-68.818-40.258-130.525-98-166zM406 140c-33.569 20.623-56 55.993-56 96 0 40.667 23.529 75.534 58 96l10-22c-25.617-16.673-42-42.824-42-74s16.383-59.327 42-76l-12-20zM654 140l-12 20c25.617 16.673 42 44.824 42 76s-16.383 57.327-42 74l10 22c34.471-20.466 58-55.333 58-96 0-40.007-22.431-75.377-56-96zM480 194l-28 830h156l-28-830h-100z",
+ "M218.989 560.393h121.908v463.389h-121.908v-463.389z",
+ "M88 655.783v368h152v-368h-152zM114 671.783h26v346h-26v-346z",
+ "M-4.535 844.191h99.537v179.809h-99.537v-179.809z",
+ "M592.5 803.154h82.665v223.6h-82.665v-223.6z",
+ "M662.092 580.19h78.332v446.564h-78.332v-446.564z",
+ "M738 706v318h94v-318h-94zM758 734h20v262h-20v-262z",
+ "M808 816v208h174v-208h-174zM864 860h82v146h-82v-146z",
+ "M967.595 914.101h68.362v109.899h-68.362v-109.899z",
+ "M331.201 818.275v208h143.859v-208h-143.859zM377.501 862.275h67.796v146h-67.796v-146z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "launchingTower"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 550,
+ "id": 45,
+ "prevSize": 16,
+ "code": 59900,
+ "name": "launchingTower"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 252
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v160h64v864h896v-864h64v-160h-1024zM192 258h640v640h-640v-640zM400 330l-172 174 172 174v-114h112v-124h-112v-110zM624 516v110h-112v124h112v114l172-174-172-174z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "layout"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 551,
+ "id": 44,
+ "prevSize": 16,
+ "code": 59901,
+ "name": "layout"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 253
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 0v1024h-736.508v-1024zM168.136 0v1024h-168.136v-1024zM635.932 330l-182 182 182 182v-122h232v-120h-232z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "legendhide"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 552,
+ "id": 43,
+ "prevSize": 16,
+ "code": 59902,
+ "name": "legendhide"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 254
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h602v-1024h-602zM704 0v1024h320v-1024h-320zM778 136h172v86h-172v-86zM336 330l182 182-182 182v-122h-232v-120h232v-122zM778 376h172v86h-172v-86zM778 616h172v86h-172v-86zM778 854h172v88h-172v-88z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "legendshow"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 553,
+ "id": 42,
+ "prevSize": 16,
+ "code": 59903,
+ "name": "legendshow"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 255
+ },
+ {
+ "icon": {
+ "paths": [
+ "M174 0c-95.761 0-174 78.239-174 174s78.239 172 174 172c30.236 0 57.252-6.394 82-20l442 442c-13.606 24.748-20 51.764-20 82 0 95.761 76.239 174 172 174s174-78.239 174-174c0-95.761-78.239-172-174-172-30.57 0-59.061 6.113-84 20l-442-438c14.951-25.628 22-54.19 22-86 0-95.761-76.239-174-172-174zM174 86c47.881 0 86 40.119 86 88s-38.119 86-86 86c-47.881 0-88-38.119-88-86s40.119-88 88-88zM850 764c47.881 0 88 38.119 88 86s-40.119 88-88 88c-47.881 0-86-40.119-86-88s38.119-86 86-86z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "link"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 554,
+ "id": 41,
+ "prevSize": 16,
+ "code": 59904,
+ "name": "link"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 256
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510 8c-203.422 0-367.735 153.347-370 344h92c2.507-130.677 125.564-236 278-236s277.452 105.323 280 236h92c-2.292-190.653-168.578-344-372-344zM156 416c-56.19 0-102 43.81-102 100v406c0 56.19 45.81 102 102 102h710c56.19 0 102-45.81 102-102v-406c0-56.19-45.81-100-102-100h-710zM510 586c37.842 0 68 30.158 68 68 0 20.924-9.216 41.432-24 54v170h-90v-170c-14.784-12.568-24-33.076-24-54 0-37.842 32.158-68 70-68z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "lock"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 555,
+ "id": 40,
+ "prevSize": 16,
+ "code": 59905,
+ "name": "lock"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 257
+ },
+ {
+ "icon": {
+ "paths": [
+ "M839.68 794.944l-469.12-469.12 325.824-325.824h-696.384v696.384l325.312-325.312 469.12 469.12z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "ltArrow"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 556,
+ "id": 39,
+ "prevSize": 16,
+ "code": 59906,
+ "name": "ltArrow"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 258
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 0c-211.661 0-384 172.339-384 384s172.339 382 384 382c72.935 0 139.963-20.633 198-56 3.407 7.108 8.094 14.094 14 20l270 272c27.919 27.919 74.081 27.919 102 0l34-36c27.919-27.919 27.919-72.081 0-100l-272-272c-5.848-5.848-10.97-10.602-18-14 34.492-57.525 54-124.046 54-196 0-211.661-170.339-384-382-384zM384 104c153.936 0 278 126.064 278 280s-124.064 278-278 278c-153.936 0-280-124.064-280-278s126.064-280 280-280z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Magnifier"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 557,
+ "id": 38,
+ "prevSize": 16,
+ "code": 59907,
+ "name": "Magnifier"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 259
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512.064 0c-282.368 0-512.064 229.632-512.064 512 0 282.432 229.696 512 512.064 512 282.304 0 511.936-229.632 511.936-512s-229.632-512-511.936-512zM512.064 960c-247.040 0-448.064-201.024-448.064-448 0-247.040 201.024-448 448.064-448 246.976 0 447.936 200.96 447.936 448 0 246.976-200.96 448-447.936 448z",
+ "M734.976 372.224l20.672-55.808-49.408-32.896-3.84-59.392-58.56-9.856-27.52-52.672-57.728 14.72-46.592-36.864-46.656 36.864-57.6-14.72-27.52 52.672-58.688 9.92-3.712 59.392-49.536 32.832 20.672 55.808-31.808 50.24 41.536 42.496-8.64 58.816 55.296 21.824 13.952 49.92-88.64 237.504 91.648-25.152 46.656 76.736 97.92-262.272 5.12-2.56 3.264 1.6 95.488 255.872 46.656-76.608 91.648 25.152-84.992-227.776 14.656-52.416 55.296-21.824-8.704-58.816 41.6-42.496-31.936-50.24zM626.176 538.88l-105.024 39.104c-3.072 0.256-6.016 1.024-9.152 1.024-19.968 0-38.784-4.032-56.768-9.728l-21.44-8.064c-63.552-29.568-107.904-93.568-107.904-168.32 0-102.848 83.328-186.176 186.112-186.176 102.848 0 186.112 83.328 186.112 186.176 0 59.52-28.416 111.936-71.936 145.984z",
+ "M669.12 392.832c0 86.775-70.345 157.12-157.12 157.12s-157.12-70.345-157.12-157.12c0-86.775 70.345-157.12 157.12-157.12s157.12 70.345 157.12 157.12z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Maintain"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 558,
+ "id": 37,
+ "prevSize": 16,
+ "code": 59908,
+ "name": "Maintain"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 260
+ },
+ {
+ "icon": {
+ "paths": [
+ "M177.898 320v704h704v-704zM273.457 599.763h512.883v326.237h-512.883z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "maximize"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 559,
+ "id": 36,
+ "prevSize": 16,
+ "code": 59909,
+ "name": "maximize"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 261
+ },
+ {
+ "icon": {
+ "paths": [
+ "M634.117 13.088c-39.104-22.577-87.176-9.696-109.753 29.408l-9.772 16.925 330.977 191.089 9.772-16.925c22.577-39.104 9.696-87.176-29.408-109.752l-191.816-110.745zM492.879 97.032l-300.749 520.912 330.977 191.089 300.749-520.912-330.976-191.089zM519.824 215.392l60.178 34.744-210.633 364.826-60.178-34.744 210.633-364.826zM647.702 289.222l60.178 34.744-210.633 364.826-60.178-34.743 210.633-364.826zM148.7 693.166l28.686 332.494 302.291-141.404-330.977-191.089z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "modify"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 560,
+ "id": 35,
+ "prevSize": 16,
+ "code": 59910,
+ "name": "modify"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 262
+ },
+ {
+ "icon": {
+ "paths": [
+ "M508.608 9.6c-282.368 0-512.064 229.696-512.064 512 0 282.432 229.696 512 512.064 512 282.304 0 511.936-229.632 512-512 0-282.368-229.632-512-512-512zM508.608 969.6c-247.040 0-448.064-201.024-448.064-448s201.024-448 448.064-448 447.936 201.024 448 448c0 246.976-200.96 448-448 448z",
+ "M610.048 709.504h-203.008v33.856h-168.96v64h540.928v-64h-168.96z",
+ "M206.080 666.624h604.928v-429.312h-604.928v429.312zM749.056 617.024h-68.032v-28.032h68.032v28.032zM270.080 301.312h476.928v250.688h-476.928v-250.688z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Monitor"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 561,
+ "id": 34,
+ "prevSize": 16,
+ "code": 59911,
+ "name": "Monitor"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 263
+ },
+ {
+ "icon": {
+ "paths": [
+ "M497.019 10c-30.138 0-54 30.398-54 69.728v354.615l-62 15.938h-6v-241.058c0-39.33-23.862-71.72-54-71.72s-54 32.39-54 71.72v316.763l-44 63.751-10 13.946-100-99.611c-27.919-27.811-70.929-28.958-96-3.984s-21.919 67.816 6 95.626l212 209.183c31.677 130.522 169.028 229.105 332 229.105 175.44 0 317.928-115.646 334-260.981 2.746-8.499 4-16.066 4-25.899v-414.381c0-39.33-23.862-71.72-54-71.72s-56 32.39-56 71.72v153.401l-34-9.961-32-17.93v-318.755c0-39.33-25.862-71.72-56-71.72s-54 32.39-54 71.72v288.872l-44-1.992-24-3.984v-342.661c0-39.33-23.862-69.728-54-69.728z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "move"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 562,
+ "id": 33,
+ "prevSize": 16,
+ "code": 59912,
+ "name": "move"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 264
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM488 174h48c31.119 0 56 24.881 56 56v202h204c31.119 0 56 24.881 56 56v48c0 31.119-24.881 56-56 56h-204v204c0 31.119-24.881 56-56 56h-48c-31.119 0-56-24.881-56-56v-204h-204c-31.119 0-56-24.881-56-56v-48c0-31.119 24.881-56 56-56h204v-202c0-31.119 24.881-56 56-56z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "new"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 563,
+ "id": 32,
+ "prevSize": 16,
+ "code": 59913,
+ "name": "new"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 265
+ },
+ {
+ "icon": {
+ "paths": [
+ "M370 0v100h132v322h-132v98h-170v504h800v-810l-194-214h-436zM150 56v132h-132v128h132v132h128v-132h132v-128h-132v-132h-128zM704 504l204 204-198 198-2-132h-244v-156h242l-2-114zM352 616h40v158h-40v-158z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "newShortcut"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 564,
+ "id": 31,
+ "prevSize": 16,
+ "code": 59914,
+ "name": "newShortcut"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 266
+ },
+ {
+ "icon": {
+ "paths": [
+ "M800 0v82l-284 6h-32v390h-342v-88h120v-262h-262v262h78v154h406v384h316v96h224v-224h-224v64h-252v-320h252v80h224v-224h-224v78h-252v-326l252-6v78h224v-224h-224zM880 80h64v64h-64v-64zM880 480h64v64h-64v-64zM880 880h64v64h-64v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "openTree"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 565,
+ "id": 30,
+ "prevSize": 16,
+ "code": 59915,
+ "name": "openTree"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 267
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 0v320h576v-320h-576zM0 448v576h1024v-576h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "poNode"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 566,
+ "id": 29,
+ "prevSize": 16,
+ "code": 59916,
+ "name": "poNode"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 268
+ },
+ {
+ "icon": {
+ "paths": [
+ "M272 0v200h480v-200h-480zM98 112c-54.122 0-98 43.878-98 98v358c0 54.122 43.878 98 98 98h828c54.122 0 98-43.878 98-98v-358c0-54.122-43.878-98-98-98h-110v168h-608v-168h-110zM284 724v300h484v-300h-484zM330 786h364v52h-364v-52zM332 894h264v50h-264v-50z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "print"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 567,
+ "id": 28,
+ "prevSize": 16,
+ "code": 59917,
+ "name": "print"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 269
+ },
+ {
+ "icon": {
+ "paths": [
+ "M186.869 0v1024h640v-1024h-640zM304.869 134.003h404v133.997h-404v-133.997zM304.869 502.003h186v64h-186v-64zM304.869 732h186v64h-186v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "product"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 568,
+ "id": 27,
+ "prevSize": 16,
+ "code": 59918,
+ "name": "product"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 270
+ },
+ {
+ "icon": {
+ "paths": [
+ "M184.32 229.056l469.12 469.12-325.824 325.824h696.384v-696.384l-325.312 325.312-469.12-469.12z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "rbArrow"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 569,
+ "id": 26,
+ "prevSize": 16,
+ "code": 59919,
+ "name": "rbArrow"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 271
+ },
+ {
+ "icon": {
+ "paths": [
+ "M169.25 320v456h203.925v248h500.075v-456h-203.925v-248zM239.752 500h362.35v68h-228.928v110h-133.422zM443.677 746h360.71v178h-360.71z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "reduction"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 570,
+ "id": 25,
+ "prevSize": 16,
+ "code": 59920,
+ "name": "reduction"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 272
+ },
+ {
+ "icon": {
+ "paths": [
+ "M514 54c-101.166 0-194.73 36.006-268 98l-158-94 88 354 368-86-194-110c48.27-30.912 103.639-52 164-52 157.484 0 288.023 121.916 314 280l102-32c-38.978-204.361-210.106-358-416-358zM188 584l-100 32c38.978 204.361 208.106 358 414 358 101.166 0 194.73-36.006 268-98l160 94-88-354-368 84 194 112c-48.27 30.911-105.639 52-166 52-157.484 0-288.023-121.916-314-280z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "refresh"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 571,
+ "id": 24,
+ "prevSize": 16,
+ "code": 59921,
+ "name": "refresh"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 273
+ },
+ {
+ "icon": {
+ "paths": [
+ "M56 0c-31.119 0-56 24.881-56 56v618c0 31.119 24.881 56 56 56 0 0 226.78 4.516 260.648 0v-176c0-34.183 27.817-62 62-62h87.352l-36-92h-164l-34 94h-88l160-418h88l166 416h52.899c34.183 0 62 27.817 62 62v72h57.101v-570c0-31.119-24.881-56-56-56zM348 172l-56 156h112zM414 556v322.99h412v143.343l202-209.343-202-224.847v144.847h-266v-176.99z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "rename"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 572,
+ "id": 23,
+ "prevSize": 16,
+ "code": 59922,
+ "name": "rename"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 274
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v1024h1024v-856l-154-168h-870zM158 150h414v138h192v-138h102v240h-708v-240zM158 502h708v406h-708v-406zM254 596v76h516v-76h-516zM254 762v76h516v-76h-516z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "save"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 573,
+ "id": 22,
+ "prevSize": 16,
+ "code": 59923,
+ "name": "save"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 275
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0l486 1024 96-396 442-142-1024-486zM156 168l666 304-308 82-60 234-298-620z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "select"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 574,
+ "id": 21,
+ "prevSize": 16,
+ "code": 59924,
+ "name": "select"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 276
+ },
+ {
+ "icon": {
+ "paths": [
+ "M68 0c-38.145 0-68 31.069-68 70v52c0 38.931 29.855 70 68 70h888c38.145 0 68-31.069 68-70v-52c0-38.931-29.855-70-68-70h-888zM68 268c-38.145 0-68 29.855-68 68v620c0 38.145 29.855 68 68 68h888c38.145 0 68-29.855 68-68v-620c0-38.145-29.855-68-68-68h-888zM810 388l124 10-460 528-320-264 144-124 154 222 358-372z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "selectAll"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 575,
+ "id": 20,
+ "prevSize": 16,
+ "code": 59925,
+ "name": "selectAll"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 277
+ },
+ {
+ "icon": {
+ "paths": [
+ "M354 2l-352 264 352 266v-140h434v278h-234v-64h-204v204h204v-76h104v188h-454v-98h-204v204h204v-42h518v-252h130v-342h172v-252h-670v-138z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "selectLeft"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 576,
+ "id": 19,
+ "prevSize": 16,
+ "code": 59926,
+ "name": "selectLeft"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 278
+ },
+ {
+ "icon": {
+ "paths": [
+ "M670 2l352 264-352 266v-140h-434v278h234v-64h204v204h-204v-76h-104v188h454v-98h204v204h-204v-42h-518v-252h-130v-342h-172v-252h670v-138z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "selectRight"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 577,
+ "id": 18,
+ "prevSize": 16,
+ "code": 59927,
+ "name": "selectRight"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 279
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v356h486l-352 348h234v250h-368v70h1024v-70h-368v-250h234l-374-348h508v-356h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "show"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 578,
+ "id": 17,
+ "prevSize": 16,
+ "code": 59928,
+ "name": "show"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 280
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 237.682l-512 786.318h1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "shrink"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 579,
+ "id": 16,
+ "prevSize": 16,
+ "code": 59929,
+ "name": "shrink"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 281
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.352 0-154 68.648-154 154v716c0 85.352 68.648 154 154 154h716c85.352 0 154-68.648 154-154v-716c0-85.352-68.648-154-154-154h-716zM190 128h644c34.183 0 62 27.817 62 62v644c0 34.183-27.817 62-62 62h-644c-34.183 0-62-27.817-62-62v-644c0-34.183 27.817-62 62-62zM272 202v620l518-310-518-310z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "start"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 580,
+ "id": 15,
+ "prevSize": 16,
+ "code": 59930,
+ "name": "start"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 282
+ },
+ {
+ "icon": {
+ "paths": [
+ "M154 0c-85.352 0-154 68.648-154 154v716c0 85.352 68.648 154 154 154h716c85.352 0 154-68.648 154-154v-716c0-85.352-68.648-154-154-154h-716zM190 128h644c34.183 0 62 27.817 62 62v644c0 34.183-27.817 62-62 62h-644c-34.183 0-62-27.817-62-62v-644c0-34.183 27.817-62 62-62zM296 296v432h432v-432h-432z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "stop"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 581,
+ "id": 14,
+ "prevSize": 16,
+ "code": 59931,
+ "name": "stop"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 283
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 1024l-512-786.318h1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "stretch"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 582,
+ "id": 13,
+ "prevSize": 16,
+ "code": 59932,
+ "name": "stretch"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 284
+ },
+ {
+ "icon": {
+ "paths": [
+ "M194 0c-107.068 0-194 82.412-194 184v656c0 101.588 86.932 184 194 184h636c107.068 0 194-82.412 194-184v-656c0-101.588-86.932-184-194-184h-636zM256 166l254 254 254-254 92 90-256 254 258 258-90 90-258-258-258 258-90-90 258-258-254-254 90-90z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "strikeOut"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 583,
+ "id": 12,
+ "prevSize": 16,
+ "code": 59933,
+ "name": "strikeOut"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 285
+ },
+ {
+ "icon": {
+ "paths": [
+ "M494.591 0.25c-104.514 3.264-208.762 40.365-296.56 108.41 54.963 14.432 104.846 45.722 142.015 91.731 26.183 32.416 43.293 69.434 52.211 108.41 7.471-4.416 15.182-6.931 22.973-10.419 92.228-41.331 202.903-21.402 273.587 58.374 2.3 2.624 4.099 5.696 6.266 8.339 38.539-10.528 75.134-28.589 106.511-56.294 44.602-39.379 72.015-90.355 83.538-145.939-104.684-110.842-248.067-167.085-390.54-162.611zM129.112 171.2c-154.656 173.299-171.74 430.515-43.857 623.366 14.934-42.534 37.92-81.523 73.096-112.576 40.821-36.064 90.261-55.533 142.015-62.547-39.251-78.547-32.851-174.438 18.796-246.010-8.527-40.979-24.855-80.813-52.211-114.669-35.942-44.499-84.853-73.018-137.838-87.565zM945.696 242.086c-12.714 52.192-39.333 100.41-81.45 137.6-37.012 32.678-81.354 51.789-127.396 60.461 26.015 79.027 6.736 167.418-52.211 231.411 19.428 31.75 44.529 59.674 77.273 81.312 53.569 35.405 115.945 48.032 177.518 41.696 109.728-165.357 113.583-382.061 6.266-552.48zM356.753 690.33c-49.599 7.29-96.216 27.635-135.749 62.541-37.037 32.698-60.956 73.747-75.184 118.835 189.751 193.376 500.447 204.333 705.897 22.938 7.2-6.336 14.128-12.109 20.885-18.771-56.711 3.136-113.526-11.149-162.899-43.776-41.445-27.398-71.715-65.645-91.892-108.41-84.866 42.72-188.114 30.099-261.056-33.357z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "Synchronous"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 584,
+ "id": 11,
+ "prevSize": 16,
+ "code": 59934,
+ "name": "Synchronous"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 286
+ },
+ {
+ "icon": {
+ "paths": [
+ "M517.312 51.648c-261.504 0-474.24 212.736-474.24 474.24s212.736 474.24 474.24 474.24c261.44 0 474.176-212.736 474.176-474.24s-212.736-474.24-474.176-474.24zM517.312 936.128c-226.24 0-410.24-184.064-410.24-410.24 0-226.24 184-410.24 410.24-410.24 226.176 0 410.176 184 410.176 410.24 0 226.176-184 410.24-410.176 410.24z",
+ "M498.624 196.288l-45.312 45.248 245.632 245.632h-445.184v64h457.536l-244.16 244.224 45.248 45.248 315.264-315.328z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "toRight"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 585,
+ "id": 10,
+ "prevSize": 16,
+ "code": 59935,
+ "name": "toRight"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 287
+ },
+ {
+ "icon": {
+ "paths": [
+ "M172 0c-95.48 0-172 76.52-172 172v680c0 95.48 76.52 172 172 172h680c95.48 0 172-76.52 172-172v-680c0-95.48-76.52-172-172-172h-680zM244 178h432l104 132v536h-536v-668zM326 306v78h200v-78h-200zM328 478v76h374v-76h-374zM320 648v78h384v-78h-384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "treefile"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 586,
+ "id": 9,
+ "prevSize": 16,
+ "code": 59936,
+ "name": "treefile"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 288
+ },
+ {
+ "icon": {
+ "paths": [
+ "M172 0c-95.48 0-172 76.52-172 172v680c0 95.48 76.52 172 172 172h680c95.48 0 172-76.52 172-172v-680c0-95.48-76.52-172-172-172zM238.712 241.729h206.949c27.848 0 50.787 21.897 50 48v144h316c28.751 0 52 23.249 52 52v266.237c0 28.751-23.249 52-52 52h-568.949c-28.751 0-51.098-23.263-52-52v-462.237c0-26.115 20.152-48 48-48z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "treeFolder"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 587,
+ "id": 8,
+ "prevSize": 16,
+ "code": 59937,
+ "name": "treeFolder"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 289
+ },
+ {
+ "icon": {
+ "paths": [
+ "M510 8c-202.717 0-366.626 152.266-370 342-0.012 0.659 0.008 1.34 0 2v66c-48.364 7.619-86 47.443-86 98v406c0 56.19 45.81 102 102 102h710c56.19 0 102-45.81 102-102v-406c0-56.19-45.81-100-102-100h-634v-66c3.722-129.746 126.346-234 278-234 125.236 0 230.961 71.332 266.403 169.184 9.788 9.965 18.88 19.916 30.894 22.829 12.716 3.084 41.895 4.16 53.558-6.145 7.663-6.77 13.476-15.71 11.628-22.481-37.206-155.677-185.523-271.387-362.482-271.387zM510 586c37.842 0 68 30.158 68 68 0 20.924-9.216 41.432-24 54v170h-90v-170c-14.784-12.568-24-33.076-24-54 0-37.842 32.158-68 70-68z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "unlock"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 588,
+ "id": 7,
+ "prevSize": 16,
+ "code": 59938,
+ "name": "unlock"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 290
+ },
+ {
+ "icon": {
+ "paths": [
+ "M430.051 1.837c-113.748 0-204 92.25-204 206.003 0 113.747 90.252 205.997 204 205.997s206-92.25 206-205.997c0-113.754-92.252-206.003-206-206.003zM260.051 423.84c-293.451 164.71-256.921 447.763-260 437.997h378c24.631-42.662 62.629-86.432 126-121.997l12-38.003v-1.984c-0.602-0.704-1.411-1.28-2-1.984-16.909-20.928-28.629-51.814-30-97.997 0-62.336 42.539-115.219 100-130.003l4-1.984v-1.984l14-41.997c-37.012 47.104-100.907 80-172 80s-132.988-32.896-170-80zM688.051 467.84c-73.692 0-134 58.304-134 132 0 73.69 60.308 133.997 134 133.997s132-60.307 132-133.997c0-73.696-58.308-132-132-132zM576.051 739.84c-190.112 106.707-166.005 290.323-168 284h558c-1.994 6.336 22.112-177.293-168-284-23.978 30.515-63.943 52-110 52s-88.022-21.485-112-52z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "userCompare"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 589,
+ "id": 6,
+ "prevSize": 16,
+ "code": 59939,
+ "name": "userCompare"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 291
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-135.256 0-243.927 108.883-243.927 244.403 0 135.526 108.671 246.413 243.927 246.413s243.927-110.886 243.927-246.413c0-135.52-108.671-244.403-243.927-244.403zM308.061 502.842c-348.938 196.237-304.247 532.493-307.907 520.864h1023.692c-3.66 11.629 41.030-324.627-307.907-520.864-44.011 56.115-119.403 94.15-203.939 94.15-50.341 0-96.799-15.302-135.959-38.061 100.275 77.171 212.359 110.496 331.9 118.195l3.999-152.256 235.929 208.346-213.936 242.406-11.996-138.234c-166.671-50.202-400.945-148.48-413.876-334.547z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "userDispatch"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 590,
+ "id": 5,
+ "prevSize": 16,
+ "code": 59940,
+ "name": "userDispatch"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 292
+ },
+ {
+ "icon": {
+ "paths": [
+ "M130 0c-71.877 0-130 58.123-130 130v764c0 71.877 58.123 130 130 130h764c71.877 0 130-58.123 130-130v-506l-388-388h-506zM772 0l252 252v-122c0-71.877-58.123-130-130-130h-122zM56 352h76l64 102 62-102h76l-100 156 110 164h-78l-72-110-70 110h-78l110-168-100-152zM376 352h98l58 218 58-218h96v320h-60v-252l-64 252h-62l-64-252v252h-60v-320zM752 354h66v264h160v54h-226v-318z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "xml"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 591,
+ "id": 4,
+ "prevSize": 16,
+ "code": 59941,
+ "name": "xml"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 293
+ },
+ {
+ "icon": {
+ "paths": [
+ "M638 2c-211.661 0-382 172.339-382 384 0 71.954 19.508 138.475 54 196-7.030 3.398-12.152 8.152-18 14l-272 272c-27.919 27.919-27.919 72.081 0 100l34 36c27.919 27.919 74.081 27.919 102 0l270-272c5.906-5.906 10.593-12.892 14-20 58.037 35.367 125.065 56 198 56 211.661 0 384-170.339 384-382s-172.339-384-384-384zM638 106c153.936 0 280 126.064 280 280s-126.064 278-280 278c-153.936 0-278-124.064-278-278s124.064-280 278-280zM620 194c-25.053 0-46 20.947-46 46v84h-84c-25.053 0-44 18.947-44 44v38c0 25.053 18.947 46 44 46h84v84c0 25.053 20.947 44 46 44h38c25.053 0 44-18.947 44-44v-84h84c25.053 0 46-20.947 46-46v-38c0-25.053-20.947-44-46-44h-84v-84c0-25.053-18.947-46-44-46h-38z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "zoomIn"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 592,
+ "id": 3,
+ "prevSize": 16,
+ "code": 59942,
+ "name": "zoomIn"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 294
+ },
+ {
+ "icon": {
+ "paths": [
+ "M638.939 1.061c211.661 0 384 172.339 384 384s-172.339 382-384 382c-72.935 0-139.963-20.633-198-56-3.407 7.108-8.094 14.094-14 20l-270 272c-27.919 27.919-74.081 27.919-102 0l-34-36c-27.919-27.919-27.919-72.081 0-100l272-272c5.848-5.848 10.97-10.602 18-14-34.492-57.525-54-124.046-54-196 0-211.661 170.339-384 382-384zM638.939 105.061c-153.936 0-278 126.064-278 280s124.064 278 278 278c153.936 0 280-124.064 280-278s-126.064-280-280-280z",
+ "M490.9 323.499h295.725c24.975 0 45.222 20.247 45.222 45.222v37.556c0 24.975-20.247 45.222-45.222 45.222h-295.725c-24.975 0-45.222-20.247-45.222-45.222v-37.556c0-24.975 20.247-45.222 45.222-45.222z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "zoomOut"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 593,
+ "id": 2,
+ "prevSize": 16,
+ "code": 59943,
+ "name": "zoomOut"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 295
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 0v172l172-172h-172zM852 0l172 172v-172h-172zM128 128v768h768v-768h-768zM234 254h556v272l-42-56-72 86-66-194-114 230-104-122-158 162v-378zM0 852v172h172l-172-172zM1024 852l-172 172h172v-172z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "zoomOverView"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 594,
+ "id": 1,
+ "prevSize": 16,
+ "code": 59944,
+ "name": "zoomOverView"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 296
+ },
+ {
+ "icon": {
+ "paths": [
+ "M388 0l114 128 114-128h-228zM502 128h-374v768h768v-768h-394zM896 470l128 114v-228l-128 114zM512 896l-114 128h226l-112-128zM128 472l-128-112v226l128-114zM234 254h556v272l-42-56-72 86-66-194-114 230-104-122-158 162v-378z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 0,
+ "tags": [
+ "zoomReset"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 595,
+ "id": 0,
+ "prevSize": 16,
+ "code": 59945,
+ "name": "zoomReset"
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 297
+ }
+ ],
+ "height": 1024,
+ "metadata": {
+ "name": "ZteIctIcons"
+ },
+ "preferences": {
+ "showGlyphs": true,
+ "showQuickUse": true,
+ "showQuickUse2": true,
+ "showSVGs": true,
+ "fontPref": {
+ "prefix": "ict-",
+ "metadata": {
+ "fontFamily": "ZteIctIcons",
+ "majorVersion": 1,
+ "minorVersion": 0
+ },
+ "metrics": {
+ "emSize": 1024,
+ "baseline": 6.25,
+ "whitespace": 50
+ },
+ "embed": false
+ },
+ "imagePref": {
+ "prefix": "icon-",
+ "png": true,
+ "useClassSelector": true,
+ "color": 4473924,
+ "bgColor": 16777215,
+ "classSelector": ".icon"
+ },
+ "historySize": 100,
+ "showCodes": true,
+ "gridSize": 16,
+ "showLiga": false
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/style.css b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/style.css
new file mode 100644
index 00000000..e014cbe1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/css/ZteIctIcons/style.css
@@ -0,0 +1,921 @@
+@font-face {
+ font-family: 'ZteIctIcons';
+ src: url('fonts/ZteIctIcons.eot?whxm2m');
+ src: url('fonts/ZteIctIcons.eot?whxm2m#iefix') format('embedded-opentype'),
+ url('fonts/ZteIctIcons.ttf?whxm2m') format('truetype'),
+ url('fonts/ZteIctIcons.woff?whxm2m') format('woff'),
+ url('fonts/ZteIctIcons.svg?whxm2m#ZteIctIcons') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+[class^="ict-"], [class*=" ict-"] {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: 'ZteIctIcons' !important;
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.ict-it-other-lenovo:before {
+ content: "\e900";
+}
+.ict-it-router-alu7750:before {
+ content: "\e901";
+}
+.ict-it-other-nds:before {
+ content: "\e902";
+}
+.ict-it-other-php:before {
+ content: "\e903";
+}
+.ict-it-app-glassfish:before {
+ content: "\e904";
+}
+.ict-it-other-telnet:before {
+ content: "\e905";
+}
+.ict-it-other-dns:before {
+ content: "\e906";
+}
+.ict-it-other-url:before {
+ content: "\e907";
+}
+.ict-it-database-mysql:before {
+ content: "\e908";
+}
+.ict-it-other-ping:before {
+ content: "\e909";
+}
+.ict-it-other-ftp:before {
+ content: "\e90a";
+}
+.ict-it-other-rest:before {
+ content: "\e90b";
+}
+.ict-it-other-soap:before {
+ content: "\e90c";
+}
+.ict-it-server-macos:before {
+ content: "\e90d";
+}
+.ict-it-server-openbsd:before {
+ content: "\e90e";
+}
+.ict-it-server-debian:before {
+ content: "\e90f";
+}
+.ict-it-app-iis:before {
+ content: "\e910";
+}
+.ict-it-app-mailserver:before {
+ content: "\e911";
+}
+.ict-it-app-websphere:before {
+ content: "\e912";
+}
+.ict-it-app-apache:before {
+ content: "\e913";
+}
+.ict-it-app-jboss:before {
+ content: "\e914";
+}
+.ict-it-other-a10bala:before {
+ content: "\e915";
+}
+.ict-NFV:before {
+ content: "\e916";
+}
+.ict-VNFM:before {
+ content: "\e917";
+}
+.ict-VNF:before {
+ content: "\e918";
+}
+.ict-VNFC:before {
+ content: "\e919";
+}
+.ict-VIM:before {
+ content: "\e91a";
+}
+.ict-VDU:before {
+ content: "\e91b";
+}
+.ict-host:before {
+ content: "\e91c";
+}
+.ict-NS:before {
+ content: "\e91d";
+}
+.ict-it-cluster-vcs:before {
+ content: "\e91e";
+}
+.ict-it-diskraid-hpeva:before {
+ content: "\e91f";
+}
+.ict-it-diskraid-zte:before {
+ content: "\e920";
+}
+.ict-it-firewall-h3c:before {
+ content: "\e921";
+}
+.ict-it-other-ibm-blade:before {
+ content: "\e922";
+}
+.ict-it-other-secfox:before {
+ content: "\e923";
+}
+.ict-it-other-segw:before {
+ content: "\e924";
+}
+.ict-it-other-zteatca:before {
+ content: "\e925";
+}
+.ict-it-other-zteips:before {
+ content: "\e926";
+}
+.ict-it-sdn-controller:before {
+ content: "\e927";
+}
+.ict-it-server-hpux:before {
+ content: "\e928";
+}
+.ict-it-storage-ops:before {
+ content: "\e929";
+}
+.ict-it-storage-sanswitch-brocade:before {
+ content: "\e92a";
+}
+.ict-uep-moc-uca-public:before {
+ content: "\e92b";
+}
+.ict-uep-topo-commongroup20x20:before {
+ content: "\e92c";
+}
+.ict-vapel_chgpile:before {
+ content: "\e92d";
+}
+.ict-car:before {
+ content: "\e92e";
+}
+.ict-chgpile:before {
+ content: "\e92f";
+}
+.ict-chgposition:before {
+ content: "\e930";
+}
+.ict-chgstation:before {
+ content: "\e931";
+}
+.ict-common_dc:before {
+ content: "\e932";
+}
+.ict-common_ncd:before {
+ content: "\e933";
+}
+.ict-common_ncd_break:before {
+ content: "\e934";
+}
+.ict-common_sc:before {
+ content: "\e935";
+}
+.ict-it:before {
+ content: "\e936";
+}
+.ict-it-app:before {
+ content: "\e937";
+}
+.ict-it-app-bind:before {
+ content: "\e938";
+}
+.ict-it-app-dns:before {
+ content: "\e939";
+}
+.ict-it-app-ems:before {
+ content: "\e93a";
+}
+.ict-it-app-mediator:before {
+ content: "\e93b";
+}
+.ict-it-app-ntp:before {
+ content: "\e93c";
+}
+.ict-it-app-ota:before {
+ content: "\e93d";
+}
+.ict-it-app-tomcat:before {
+ content: "\e93e";
+}
+.ict-it-app-trend:before {
+ content: "\e93f";
+}
+.ict-it-app-tsm:before {
+ content: "\e940";
+}
+.ict-it-app-weblogic:before {
+ content: "\e941";
+}
+.ict-it-cluster:before {
+ content: "\e942";
+}
+.ict-it-cluster-hacmp:before {
+ content: "\e943";
+}
+.ict-it-cluster-nec:before {
+ content: "\e944";
+}
+.ict-it-cluster-ns:before {
+ content: "\e945";
+}
+.ict-it-cluster-sg:before {
+ content: "\e946";
+}
+.ict-it-database:before {
+ content: "\e947";
+}
+.ict-it-database-mssql:before {
+ content: "\e948";
+}
+.ict-it-database-oracle:before {
+ content: "\e949";
+}
+.ict-it-database-sybase:before {
+ content: "\e94a";
+}
+.ict-it-database-sybaseiq:before {
+ content: "\e94b";
+}
+.ict-it-diskraid-dellmd:before {
+ content: "\e94c";
+}
+.ict-it-diskraid-emc:before {
+ content: "\e94d";
+}
+.ict-it-diskraid-eternus:before {
+ content: "\e94e";
+}
+.ict-it-diskraid-fujitsu:before {
+ content: "\e94f";
+}
+.ict-it-diskraid-hds:before {
+ content: "\e950";
+}
+.ict-it-diskraid-hpaio:before {
+ content: "\e951";
+}
+.ict-it-diskraid-hpmsa:before {
+ content: "\e952";
+}
+.ict-it-diskraid-ibm:before {
+ content: "\e953";
+}
+.ict-it-diskraid-ibmsm:before {
+ content: "\e954";
+}
+.ict-it-diskraid-macrosan:before {
+ content: "\e955";
+}
+.ict-it-diskraid-netapp:before {
+ content: "\e956";
+}
+.ict-it-diskraid-sun:before {
+ content: "\e957";
+}
+.ict-it-firewall:before {
+ content: "\e958";
+}
+.ict-it-firewall-checkpoint:before {
+ content: "\e959";
+}
+.ict-it-firewall-cisco:before {
+ content: "\e95a";
+}
+.ict-it-firewall-cisco2:before {
+ content: "\e95b";
+}
+.ict-it-firewall-juniper:before {
+ content: "\e95c";
+}
+.ict-it-firewall-neteye:before {
+ content: "\e95d";
+}
+.ict-it-firewall-zte:before {
+ content: "\e95e";
+}
+.ict-it-firewall-ztemf:before {
+ content: "\e95f";
+}
+.ict-it-firewall-zteutm:before {
+ content: "\e960";
+}
+.ict-it-gather:before {
+ content: "\e961";
+}
+.ict-it-ibp:before {
+ content: "\e962";
+}
+.ict-it-ibp-ibp2000:before {
+ content: "\e963";
+}
+.ict-it-net:before {
+ content: "\e964";
+}
+.ict-it-other:before {
+ content: "\e965";
+}
+.ict-it-other-alteon:before {
+ content: "\e966";
+}
+.ict-it-other-appdirector:before {
+ content: "\e967";
+}
+.ict-it-other-atca-lb10:before {
+ content: "\e968";
+}
+.ict-it-other-cisco-ucs:before {
+ content: "\e969";
+}
+.ict-it-other-dcs:before {
+ content: "\e96a";
+}
+.ict-it-other-delta:before {
+ content: "\e96b";
+}
+.ict-it-other-dp:before {
+ content: "\e96c";
+}
+.ict-it-other-e9000:before {
+ content: "\e96d";
+}
+.ict-it-other-f5bigip:before {
+ content: "\e96e";
+}
+.ict-it-other-f5bigip2:before {
+ content: "\e96f";
+}
+.ict-it-other-gbe2c:before {
+ content: "\e970";
+}
+.ict-it-other-h3c:before {
+ content: "\e971";
+}
+.ict-it-other-hpblc:before {
+ content: "\e972";
+}
+.ict-it-other-imm:before {
+ content: "\e973";
+}
+.ict-it-other-secsis:before {
+ content: "\e974";
+}
+.ict-it-other-vc:before {
+ content: "\e975";
+}
+.ict-it-other-ztepower:before {
+ content: "\e976";
+}
+.ict-it-other-ztesgs:before {
+ content: "\e977";
+}
+.ict-it-other-zxsdr-nt:before {
+ content: "\e978";
+}
+.ict-it-router:before {
+ content: "\e979";
+}
+.ict-it-router-cisco:before {
+ content: "\e97a";
+}
+.ict-it-router-juniper:before {
+ content: "\e97b";
+}
+.ict-it-router-zte:before {
+ content: "\e97c";
+}
+.ict-it-sdn-host:before {
+ content: "\e97d";
+}
+.ict-it-sdn-switch:before {
+ content: "\e97e";
+}
+.ict-it-server:before {
+ content: "\e97f";
+}
+.ict-it-server-aix:before {
+ content: "\e980";
+}
+.ict-it-server-klinux:before {
+ content: "\e981";
+}
+.ict-it-server-redhat:before {
+ content: "\e982";
+}
+.ict-it-server-solaris:before {
+ content: "\e983";
+}
+.ict-it-server-suse:before {
+ content: "\e984";
+}
+.ict-it-server-windows:before {
+ content: "\e985";
+}
+.ict-it-server-zxve:before {
+ content: "\e986";
+}
+.ict-it-storage:before {
+ content: "\e987";
+}
+.ict-it-storage-cisco-mds:before {
+ content: "\e988";
+}
+.ict-it-storage-md3000:before {
+ content: "\e989";
+}
+.ict-it-storage-netvault:before {
+ content: "\e98a";
+}
+.ict-it-storage-sanswitch-zte:before {
+ content: "\e98b";
+}
+.ict-it-switch-at:before {
+ content: "\e98c";
+}
+.ict-it-switch-cisco:before {
+ content: "\e98d";
+}
+.ict-it-switch-h3c:before {
+ content: "\e98e";
+}
+.ict-it-switch-juniper:before {
+ content: "\e98f";
+}
+.ict-it-switch-zte:before {
+ content: "\e990";
+}
+.ict-it-tapelib-hpmsl:before {
+ content: "\e991";
+}
+.ict-it-tapelib-ibmts:before {
+ content: "\e992";
+}
+.ict-it-tapelib-sunts:before {
+ content: "\e993";
+}
+.ict-it-Virtualnetwork:before {
+ content: "\e994";
+}
+.ict-networkTree:before {
+ content: "\e995";
+}
+.ict-resourceType:before {
+ content: "\e996";
+}
+.ict-tree-icon:before {
+ content: "\e997";
+}
+.ict-uep-topo-group20x20:before {
+ content: "\e998";
+}
+.ict-uep-topo-root:before {
+ content: "\e999";
+}
+.ict-uep-topo-virtual20x20:before {
+ content: "\e99a";
+}
+.ict-common_ncd_stop:before {
+ content: "\e99b";
+}
+.ict-it-app-netnumen:before {
+ content: "\e99c";
+}
+.ict-it-sdn-vnet:before {
+ content: "\e99d";
+}
+.ict-it-storage-sanswitch-hp:before {
+ content: "\e99e";
+}
+.ict-it-switch:before {
+ content: "\e99f";
+}
+.ict-uep-moc-root:before {
+ content: "\e9a0";
+}
+.ict-uep-topo-undefinedgroup20x20:before {
+ content: "\e9a1";
+}
+.ict-analysis:before {
+ content: "\e9a2";
+}
+.ict-bindingRelationship:before {
+ content: "\e9a3";
+}
+.ict-browsePolicy:before {
+ content: "\e9a4";
+}
+.ict-businessManagment:before {
+ content: "\e9a5";
+}
+.ict-cardData:before {
+ content: "\e9a6";
+}
+.ict-dailyManagment:before {
+ content: "\e9a7";
+}
+.ict-enterpriseCustomer:before {
+ content: "\e9a8";
+}
+.ict-equipmentBlacklist:before {
+ content: "\e9a9";
+}
+.ict-equipmentModel:before {
+ content: "\e9aa";
+}
+.ict-examine:before {
+ content: "\e9ab";
+}
+.ict-failureList:before {
+ content: "\e9ac";
+}
+.ict-familyCustomer:before {
+ content: "\e9ad";
+}
+.ict-fileTool:before {
+ content: "\e9ae";
+}
+.ict-groupManagment:before {
+ content: "\e9af";
+}
+.ict-notice:before {
+ content: "\e9b0";
+}
+.ict-policy:before {
+ content: "\e9b1";
+}
+.ict-portal:before {
+ content: "\e9b2";
+}
+.ict-recordQuery:before {
+ content: "\e9b3";
+}
+.ict-resourceManagment:before {
+ content: "\e9b4";
+}
+.ict-ruleManagment:before {
+ content: "\e9b5";
+}
+.ict-sucessRate:before {
+ content: "\e9b6";
+}
+.ict-terminalManagment:before {
+ content: "\e9b7";
+}
+.ict-tools:before {
+ content: "\e9b8";
+}
+.ict-track:before {
+ content: "\e9b9";
+}
+.ict-userManagment:before {
+ content: "\e9ba";
+}
+.ict-versionManagment:before {
+ content: "\e9bb";
+}
+.ict-workOrder:before {
+ content: "\e9bc";
+}
+.ict-cpu:before {
+ content: "\e9bd";
+}
+.ict-memory:before {
+ content: "\e9be";
+}
+.ict-currentAlarm:before {
+ content: "\e9bf";
+}
+.ict-noticeAlarm:before {
+ content: "\e9c0";
+}
+.ict-historyAlarm:before {
+ content: "\e9c1";
+}
+.ict-close:before {
+ content: "\e9c2";
+}
+.ict-table:before {
+ content: "\e9c3";
+}
+.ict-next:before {
+ content: "\e9c4";
+}
+.ict-pre:before {
+ content: "\e9c5";
+}
+.ict-roleset:before {
+ content: "\e9c6";
+}
+.ict-role:before {
+ content: "\e9c7";
+}
+.ict-user:before {
+ content: "\e9c8";
+}
+.ict-empty:before {
+ content: "\e9c9";
+}
+.ict-noticeFilter:before {
+ content: "\e9ca";
+}
+.ict-alarmTurn:before {
+ content: "\e9cb";
+}
+.ict-advice:before {
+ content: "\e9cc";
+}
+.ict-clearAlarm:before {
+ content: "\e9cd";
+}
+.ict-alarmBox:before {
+ content: "\e9ce";
+}
+.ict-afreshDef:before {
+ content: "\e9cf";
+}
+.ict-alarmFilter:before {
+ content: "\e9d0";
+}
+.ict-manAnalysis:before {
+ content: "\e9d1";
+}
+.ict-drill:before {
+ content: "\e9d2";
+}
+.ict-gear:before {
+ content: "\e9d3";
+}
+.ict-process:before {
+ content: "\e9d4";
+}
+.ict-unacknownledge:before {
+ content: "\e9d5";
+}
+.ict-acknownledge:before {
+ content: "\e9d6";
+}
+.ict-Operation:before {
+ content: "\e9d7";
+}
+.ict-cloud:before {
+ content: "\e9d8";
+}
+.ict-computer:before {
+ content: "\e9d9";
+}
+.ict-alarm:before {
+ content: "\e9da";
+}
+.ict-import:before {
+ content: "\e9db";
+}
+.ict-export:before {
+ content: "\e9dc";
+}
+.ict-Admin:before {
+ content: "\e9dd";
+}
+.ict-allSelected:before {
+ content: "\e9de";
+}
+.ict-angleRight:before {
+ content: "\e9df";
+}
+.ict-arrowLeft:before {
+ content: "\e9e0";
+}
+.ict-arrowLeftAll:before {
+ content: "\e9e1";
+}
+.ict-arrowRight:before {
+ content: "\e9e2";
+}
+.ict-arrowRightAll:before {
+ content: "\e9e3";
+}
+.ict-autoFind:before {
+ content: "\e9e4";
+}
+.ict-back:before {
+ content: "\e9e5";
+}
+.ict-ball:before {
+ content: "\e9e6";
+}
+.ict-bell:before {
+ content: "\e9e7";
+}
+.ict-blackList:before {
+ content: "\e9e8";
+}
+.ict-breakLink:before {
+ content: "\e9e9";
+}
+.ict-cancle:before {
+ content: "\e9ea";
+}
+.ict-circle:before {
+ content: "\e9eb";
+}
+.ict-closeTree:before {
+ content: "\e9ec";
+}
+.ict-configmap:before {
+ content: "\e9ed";
+}
+.ict-delete:before {
+ content: "\e9ee";
+}
+.ict-department:before {
+ content: "\e9ef";
+}
+.ict-detail:before {
+ content: "\e9f0";
+}
+.ict-displaySwitch:before {
+ content: "\e9f1";
+}
+.ict-file:before {
+ content: "\e9f2";
+}
+.ict-filter:before {
+ content: "\e9f3";
+}
+.ict-find:before {
+ content: "\e9f4";
+}
+.ict-folder:before {
+ content: "\e9f5";
+}
+.ict-forceOut:before {
+ content: "\e9f6";
+}
+.ict-fullScreen:before {
+ content: "\e9f7";
+}
+.ict-Graphical:before {
+ content: "\e9f8";
+}
+.ict-helpTip:before {
+ content: "\e9f9";
+}
+.ict-hide:before {
+ content: "\e9fa";
+}
+.ict-history:before {
+ content: "\e9fb";
+}
+.ict-launchingTower:before {
+ content: "\e9fc";
+}
+.ict-layout:before {
+ content: "\e9fd";
+}
+.ict-legendhide:before {
+ content: "\e9fe";
+}
+.ict-legendshow:before {
+ content: "\e9ff";
+}
+.ict-link:before {
+ content: "\ea00";
+}
+.ict-lock:before {
+ content: "\ea01";
+}
+.ict-ltArrow:before {
+ content: "\ea02";
+}
+.ict-Magnifier:before {
+ content: "\ea03";
+}
+.ict-Maintain:before {
+ content: "\ea04";
+}
+.ict-maximize:before {
+ content: "\ea05";
+}
+.ict-modify:before {
+ content: "\ea06";
+}
+.ict-Monitor:before {
+ content: "\ea07";
+}
+.ict-move:before {
+ content: "\ea08";
+}
+.ict-new:before {
+ content: "\ea09";
+}
+.ict-newShortcut:before {
+ content: "\ea0a";
+}
+.ict-openTree:before {
+ content: "\ea0b";
+}
+.ict-poNode:before {
+ content: "\ea0c";
+}
+.ict-print:before {
+ content: "\ea0d";
+}
+.ict-product:before {
+ content: "\ea0e";
+}
+.ict-rbArrow:before {
+ content: "\ea0f";
+}
+.ict-reduction:before {
+ content: "\ea10";
+}
+.ict-refresh:before {
+ content: "\ea11";
+}
+.ict-rename:before {
+ content: "\ea12";
+}
+.ict-save:before {
+ content: "\ea13";
+}
+.ict-select:before {
+ content: "\ea14";
+}
+.ict-selectAll:before {
+ content: "\ea15";
+}
+.ict-selectLeft:before {
+ content: "\ea16";
+}
+.ict-selectRight:before {
+ content: "\ea17";
+}
+.ict-show:before {
+ content: "\ea18";
+}
+.ict-shrink:before {
+ content: "\ea19";
+}
+.ict-start:before {
+ content: "\ea1a";
+}
+.ict-stop:before {
+ content: "\ea1b";
+}
+.ict-stretch:before {
+ content: "\ea1c";
+}
+.ict-strikeOut:before {
+ content: "\ea1d";
+}
+.ict-Synchronous:before {
+ content: "\ea1e";
+}
+.ict-toRight:before {
+ content: "\ea1f";
+}
+.ict-treefile:before {
+ content: "\ea20";
+}
+.ict-treeFolder:before {
+ content: "\ea21";
+}
+.ict-unlock:before {
+ content: "\ea22";
+}
+.ict-userCompare:before {
+ content: "\ea23";
+}
+.ict-userDispatch:before {
+ content: "\ea24";
+}
+.ict-xml:before {
+ content: "\ea25";
+}
+.ict-zoomIn:before {
+ content: "\ea26";
+}
+.ict-zoomOut:before {
+ content: "\ea27";
+}
+.ict-zoomOverView:before {
+ content: "\ea28";
+}
+.ict-zoomReset:before {
+ content: "\ea29";
+}
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/default.html b/openo-portal/portal-common/src/main/webapp/common/default.html
index ac598c58..1ea020eb 100644
--- a/openo-portal/portal-common/src/main/webapp/common/default.html
+++ b/openo-portal/portal-common/src/main/webapp/common/default.html
@@ -35,6 +35,7 @@
<link href="css/plugins.css" rel="stylesheet" type="text/css"/>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<link href="css/more-operation.css" rel="stylesheet" type="text/css" />
+ <link href="css/ZteIctIcons/style.css" rel="stylesheet" type="text/css"/>
<link href="" rel="stylesheet" type="text/css" id="style_color"/>
<script type="text/javascript" src="js/core/const.js"></script>
<script type="text/javascript" src="js/core/hk.min.js"></script>
@@ -60,6 +61,7 @@
<script type="text/javascript" src="js/core/openoFrameWork.js"></script>
<script type="text/javascript" src="js/fm_light.js"></script>
<script type="text/javascript" src="js/mainpage/about.js"></script>
+ <script type="text/javascript" src="js/core/load_menuList.js"></script>
</head>
<body class="page-header-fixed page-sidebar-fixed">
<div id="pageLoading" class="fakeloader"></div>
@@ -72,10 +74,6 @@
<img id="com_zte_ums_ict_framework_img_netnumenLogo" src="image/integration/netnumenLogo.png" name_img="com_zte_ums_ict_framework_img" alt="logo"/>
<span id="com_zte_ums_ict_framework_ui_main_title" name_i18n="openo_frame_page_i18n" class="zte-brand-text"/>
</a>
- <div class="hor-menu hidden-sm hidden-xs">
- <ul class="nav navbar-nav hormenu" id="main_hormenu" menuSrc="main_blank.html"></ul>
- <ul class="nav navbar-nav hormenu" id="f_hormenu" menuSrc="main_Fmegabar.html"></ul>
- </div>
<ul class="nav navbar-nav pull-right">
<div class="zte-theme-panel">
<div class="toggler"></div>
@@ -89,12 +87,6 @@
<li class="color-ztebluelight2" data-style="ztebluelight2"></li>
</ul>
</div>
- <div class="theme-option">
- <span id="com_zte_ums_ict_framework_ui_language" name_i18n="openo_frame_page_i18n"></span>
- <select class="language-option form-control input-small">
- <option id="com_zte_ums_ict_framework_ui_language_en" name_i18n="openo_frame_page_i18n" value="en-US"></option>
- </select>
- </div>
</div>
</div>
@@ -189,8 +181,7 @@
</div>
<div class="page-container">
<div class="page-sidebar navbar-collapse collapse" style="z-index: 9999;">
- <ul class="page-sidebar-menu" id="page-sidebar-menu" data-auto-scroll="true" data-slide-speed="200" menuSrc="main_blank.html"></ul>
- <ul class="page-sidebar-menu" id="page-f-sidebar-menu" data-auto-scroll="true" data-slide-speed="200" menuSrc="main_Fsiderbar.html"></ul>
+ <ul class="page-sidebar-menu" id="page-f-sidebar-menu" data-auto-scroll="true" data-slide-speed="200"></ul>
</div>
<div class="page-content-wrapper">
<div class="page-content">
@@ -231,7 +222,6 @@
<script>
var panel = $('.zte-theme-panel');
loadi18n_WebFramework('web-framework-i18n', 'i18n/', 'openo_frame_page_i18n');
- iniHorMenu();
iniFMenu();
</script>
<script>
diff --git a/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-menu-i18n-en-US.properties b/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-menu-i18n-en-US.properties
index 7e4dd453..bb94f539 100644
--- a/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-menu-i18n-en-US.properties
+++ b/openo-portal/portal-common/src/main/webapp/common/i18n/web-framework-menu-i18n-en-US.properties
@@ -14,10 +14,7 @@
# limitations under the License.
#
openo_menu_service=Service
-openo_menu_resource=Resource
-openo_menu_monitor=Monitor
-openo_menu_service_list=Service List
-openo_menu_service_list_overview=Overview
+openo_menu_service_service_management=Service Management
openo_menu_orchestrator=Orchestrator
openo_menu_orchestrator_model_design=Model Design
openo_menu_orchestrator_node_type=Node Type
@@ -25,13 +22,11 @@ openo_menu_orchestrator_package=Package
openo_menu_orchestrator_service_template=Service Template
openo_menu_orchestrator_host_image=Host Image
openo_menu_orchestrator_lifecycle=Lifecycle
-openo_menu_manage_view=Manage View
-openo_menu_manage_view_vim_manage=VIM Manage
-openo_menu_manage_view_vnfm=VNFM
-openo_menu_resource_view=Resource View
-openo_menu_resource_view_overview=Overview
-openo_menu_setting=Setting
-openo_menu_setting_monitor_para_setting=Monitor Para Setting
+openo_menu_resource_mgr=Resource Mgr
+openo_menu_resource_mgr_sdno=Resource Mgr sdno
+openo_menu_resource_mgr_nfvo=Resource Mgr Nfvo
+openo_menu_user=User
+openo_menu_user_user_management=User Management
openo_menu_topology=Topology
openo_menu_topology_physical_topology=Physical Topology
openo_menu_topology_service_topology=Service Topology
@@ -39,3 +34,7 @@ openo_menu_alarm=Alarm
openo_menu_alarm_alarm_query=Alarm Query
openo_menu_performance=Performance
openo_menu_performance_performance_query=Performance Query
+openo_menu_manage_view=Manage View
+openo_menu_manage_view_vim_manage=VIM Manage
+openo_menu_manage_view_vnfm=VNFM
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js b/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js
new file mode 100644
index 00000000..c56952e5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/js/core/load_menuList.js
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2016, CMCC Technologies Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var initLeftMenu = function() {
+ var i18nName = "openo_frame_left_menu_i18n";
+ var parentMenus;
+ var childMenus;
+
+ $.ajax({
+ async : false,
+ "type" : "GET",
+ url : "json/menu_list.json",
+ dataType : "json",
+ "success" : function (res, textStatus, jqXHR) {
+ parentMenus = res.parentMenus;
+ childMenus = res.childMenus;
+ },
+ error : function () {
+ }
+ });
+
+ var templateParent = "<a href='javascript:'>" +
+ "<i class='{iconClass}'></i>" +
+ "<span id='{id}' name_i18n='{i18nName}' class='title'></span>" +
+ "<span class='selected'></span>" +
+ "<span class='arrow'></span>" +
+ "</a>";
+
+ var templateChild = "<li>" +
+ "<a href='{url}' class='iframe'>" +
+ "<i class='{iconClass}'></i>" +
+ "<span id='{id}' name_i18n='{i18nName}'></span>" +
+ "</a>" +
+ "</li>";
+
+ var menuContent = "";
+ for (var i = 0; i < parentMenus.length; i++) {
+ var parentMenuContent = templateParent.replace("{id}", parentMenus[i].id)
+ .replace("{iconClass}", parentMenus[i].iconClass)
+ .replace("{i18nName}", i18nName);
+
+ var childMenuContent = "";
+ for (var j = 0; j < childMenus.length; j++) {
+ if (childMenus[j].parentId == parentMenus[i].id) {
+ childMenuContent = childMenuContent + templateChild.replace("{id}", childMenus[j].id)
+ .replace("{url}", childMenus[j].url)
+ .replace("{iconClass}", childMenus[j].iconClass)
+ .replace("{i18nName}", i18nName);
+ }
+ }
+ childMenuContent = "<ul class='sub-menu'>" + childMenuContent + "</ul>";
+
+ menuContent = menuContent + "<li>" + parentMenuContent + childMenuContent + "</li>";
+ }
+
+ return menuContent;
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js b/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js
index 6792084c..267b7219 100644
--- a/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js
+++ b/openo-portal/portal-common/src/main/webapp/common/js/core/openoFrameWork.js
@@ -3172,39 +3172,37 @@ var openoFrameWork = function () {
}();
-var currentRunningScriptSrcPath = {};
//抽å–html片段中任æ„ä½ç½®çš„script标签(包括代ç æ˜¯å†…嵌的情况)é€ä¸ªè¿è¡Œï¼ˆä¸ä¼šåœ¨å•ä¸ªscript加载ä¸åˆ°çš„时候åœä¸‹æ¥ï¼‰
function runHtmlScripts(s) {
var div = document.createElement('div');
div.innerHTML = s;
- var scripts = div.getElementsByTagName('script');
- $(scripts).each(function(){
+ var scripts = div.getElementsByTagName('script');
+
+ var currentRunningScriptSrcPath = {};
+ $(scripts).each(function() {
var src = this.src;
- src=openoFrameWork.handlBaseURL(src);
- if(src){
- //存储当å‰Script标签的ç»å¯¹è·¯å¾„以适应该js被其他系统跨域引用的情况
- currentRunningScriptSrcPath[src.substring(src.lastIndexOf("/") + 1)] = src.substring(0, src.lastIndexOf("/")+1);
- $.getScript(src);
- }else{
+ src = openoFrameWork.handlBaseURL(src);
+ if (src) {
+ currentRunningScriptSrcPath[src.substring(src.lastIndexOf("/") + 1)] = src.substring(0, src.lastIndexOf("/") + 1);
+ $.getScript(src);
+ } else {
$.globalEval(this.text || this.textContent || this.innerHTML || '');
}
});
-}
-function stripHtmlScripts(s) {
- var div = document.createElement('div');
- div.innerHTML = s;
- var scripts = div.getElementsByTagName('script');
- $(scripts).each(function(){
- /* if(this.src){
- $.getScript(this.src);
- }else{
- $.globalEval(this.text || this.textContent || this.innerHTML || '');
- } */
- this.src=openoFrameWork.handlBaseURL(this.src);
+};
+
+function stripHtmlScripts(htmlContent) {
+ var divContent = document.createElement('div');
+ divContent.innerHTML = htmlContent;
+ var scripts = divContent.getElementsByTagName('script');
+
+ $(scripts).each(function() {
+ this.src = openoFrameWork.handlBaseURL(this.src);
this.parentNode.removeChild(this);
});
- return div.innerHTML;
-}
+ return divContent.innerHTML;
+};
+
function getsiderBarMenu(url){
if (url.length<2){
return;
@@ -3280,223 +3278,25 @@ var setLayoutValueByCookie = function () {
// } else {
// $('.nav-pos-direction', panel).attr("disabled", true);
// }
-}
-function getHorMenu(url){
- setLayoutValueByCookie();
- if (url.length<2){
- return;
- }
- url=openoFrameWork.handlBaseURL(url);
- openoFrameWork.startPageLoading();//èœå•åŠ è½½ä¸­è¯·ç¨å€™....
- var pagehorbar=$('#main_hormenu')
- pagehorbar.empty();
- $.ajax({
- type: "GET",
- async : false,
- cache: false,
- url: url,
- dataType: "html",
- success: function (res) {
- //去除script标签以åŽæ·»åŠ åˆ°ä¸»æ¡†æž¶ä»¥é˜²æ­¢append方法因为加载script标签失败导致åŽé¢çš„代ç æ— æ³•è¿è¡Œ
- //res = stripHtmlScripts(res);
- var resScriptsSriped = stripHtmlScripts(res);
- $('#main_hormenu').append(resScriptsSriped);
- runHtmlScripts(res);
- // 增加mysql判断,如果数æ®åº“为mysql,去掉基础数æ®å¤‡ä»½åŠŸèƒ½èœå•é¡¹
- var dbType = openoFrameWork_conf.dbType;
- if (dbType == "mysql") {
- var item=$(".hor-menu a[id='uep-ict-backup-baseDataBack']");
- item.parent().remove();
- }
- horMenuAuthentication('main_hormenu');
- openoFrameWork.stopPageLoading();
- if($('.nav-pos-direction', panel).val() === "horizontal"){
- setTimeout(function () {
- //goToHomePage();//注æ„这里由于水平和左边æ èœå•éƒ½åœ¨ä¸€ä¸ªé¡µé¢ä¸­å‡ºçŽ°ï¼Œæ‰€ä»¥è¿™é‡Œåªè°ƒç”¨ä¸€æ¬¡
- }, 150);
- }
- },
- error: function (xhr, ajaxOptions, thrownError) {
- //$('#main_hormenu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统èœå•å¤±è´¥!
- var pcontent = $("[class='page-content']");
- //pcontent.css("marginLeft",225);
- $('.nav-pos-direction', panel).attr("disabled", true);
- }
- });
};
-//加载横èœå•çš„å­èœå•ï¼ŒåŠ åˆ°å·¦è¾¹çš„siderbar里é¢
-function getMegaFMenu( url ){
- if (url.length<2){
- return;
- }
- url=openoFrameWork.handlBaseURL(url);
- openoFrameWork.startPageLoading();//èœå•åŠ è½½ä¸­è¯·ç¨å€™....
- var siderDiv =$( '#' + megaSiderDivId );
- siderDiv.empty();
- siderDiv.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");
- $.ajax({
- type: "GET",
- async : false,
- cache: false,
- url: url,
- dataType: "html",
- success: function (res) {
- //去除script标签以åŽæ·»åŠ åˆ°ä¸»æ¡†æž¶ä»¥é˜²æ­¢append方法因为加载script标签失败导致åŽé¢çš„代ç æ— æ³•è¿è¡Œ
- var resScriptsSriped = stripHtmlScripts(res);
- siderDiv.append(resScriptsSriped);
- runHtmlScripts(res);
- FMenuAuthentication( megaDivId ,megaSiderDivId );
- rebuildHorMenu();
- ajustFMenu( megaDivId ,megaSiderDivId );
- openoFrameWork.stopPageLoading();
- },
- error: function (xhr, ajaxOptions, thrownError) {
- //siderDiv.append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统èœå•å¤±è´¥!
- //var pcontent = $("[class='page-content']");
- //pcontent.css("marginLeft",225);
- }
- });
-}
-function iniHorMenu(){
- var hormenu=$('#main_hormenu');
- if(!hormenu) return;
- var url=hormenu.attr("menuSrc");
- if(url&&url.length>0){
- getHorMenu(url);
- }
- //
- var megaFMenu = $('#'+megaSiderDivId);
- if(!megaFMenu) return;
- var url = megaFMenu.attr("menuSrc");
- if(url&&url.length>0){
- getMegaFMenu(url);
- }
-};
-function iniFMenu(){
- var fhormenu=$('#f_hormenu');
- var fsidemenu=$('#page-f-sidebar-menu');
- if(!fhormenu || !fsidemenu) return;
- var urlmega=fhormenu.attr("menuSrc");
- var urlsider=fsidemenu.attr("menuSrc");
- if(urlmega&&urlmega.length>0 && urlsider && urlsider.length > 0){
- getFMenu(urlmega , urlsider);
- }
-};
-function getFMenu( urlMega , urlSider ){
- if (urlMega.length<2 || urlSider.length<2){
- return;
- }
- urlMega=openoFrameWork.handlBaseURL(urlMega);
- urlSider=openoFrameWork.handlBaseURL(urlSider);
- openoFrameWork.startPageLoading();//èœå•åŠ è½½ä¸­è¯·ç¨å€™....
- var fhorbar=$('#f_hormenu');
- fhorbar.empty();
- var fSideBar= $("#page-f-sidebar-menu");
- fSideBar.empty();
- $.ajax({
- type: "GET",
- async : false,
- cache: false,
- url: urlMega,
- dataType: "html",
- success: function (res) {
- var resScriptsSriped = stripHtmlScripts(res);
- $('#f_hormenu').append(resScriptsSriped);
- horMenuAuthentication('f_hormenu');
- runHtmlScripts(res);
- dealMysqlBackupMenu();
- openoFrameWork.stopPageLoading();
- },
- error: function (xhr, ajaxOptions, thrownError) {
- $('#f_hormenu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统èœå•å¤±è´¥!
- var pcontent = $("[class='page-content']");
- $('.nav-pos-direction', panel).attr("disabled", true);
- }
- });
- var fpagesidebar=$('#' + fMenuSiderDivId);
- fpagesidebar.empty();
- fpagesidebar.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");
- $.ajax({
- type: "GET",
- cache: false,
- url: urlSider,
- dataType: "html",
- success: function (res) {
- var resScriptsSriped = stripHtmlScripts(res);
- fpagesidebar.append(resScriptsSriped);
- //先全部éšè—,åŽé¢æ ¹æ®ä¸Žhash的匹é…情况æ¥æ˜¾ç¤º
- //fpagesidebar.children().css('display','none');
- runHtmlScripts(res);
- dealMysqlBackupMenu();
- FMenuAuthentication( fMenuMegaDivId ,fMenuSiderDivId );
- ajustFMenu( fMenuMegaDivId ,fMenuSiderDivId );
- openoFrameWork.stopPageLoading();
- //loadi18n_WebFramework_sideMenu();
- },
- error: function (xhr, ajaxOptions, thrownError) {
- $('.page-f-sidebar-menu').append('<h4 class="nav-load-error">'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统èœå•å¤±è´¥!;//加载系统èœå•å¤±è´¥!
- }
- });
-};
-function iniSidebarMenu(){
- var sidermenu=$('#page-sidebar-menu');
- if(!sidermenu) return;
- var url=sidermenu.attr("menuSrc");
- if(url&&url.length>0){
- getsiderBarMenu(url);
- }
-};
-function getChangePWDDlg(url){
- if (url.length<2){
- return;
- }
- openoFrameWork.startPageLoading();//加载中....
- var pageChangepasswd=$('.modal-dialog .Changepasswd');
- pageChangepasswd.empty();
- $.ajax({
- type: "GET",
- cache: false,
- url: url,
- dataType: "html",
- success: function (res) {
- $('.modal-dialog .Changepasswd').append(res);
- ChangePWD.init();
- openoFrameWork.stopPageLoading();
- },
- error: function (xhr, ajaxOptions, thrownError) {
- $('.modal-dialog .Changepasswd').append('<h4>'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadchgpwdpageError')+'</h4>');//加载修改密ç é¡µé¢å¤±è´¥!
- }
- });
-};
-function iniChangePWDDlg(){
- var url=$('.modal-dialog .Changepasswd').attr("dlgsrc");
- if(url&&url.length>0){
- getChangePWDDlg(url);
- }
-};
-function getHeaderMenu(url){
- if (url.length<2){
- return;
- }
- openoFrameWork.startPageLoading();//加载中请ç¨å€™....
- var headerMenu=$('#headerMenu');
- headerMenu.empty();
- $.ajax({
- type: "GET",
- cache: false,
- async: false,
- url: url,
- dataType: "html",
- success: function (res) {
- $('#headerMenu').append(res);
- openoFrameWork.stopPageLoading();
- },
- error: function (xhr, ajaxOptions, thrownError) {
- //$('#headerMenu').append('<h4>'+$.i18n.prop('com_zte_ums_ict_framework_ui_loadmenuerror')+'</h4>');//加载系统èœå•å¤±è´¥!
- }
- });
+
+function iniFMenu() {
+ var fsidemenu = $('#' + fMenuSiderDivId);
+
+ if (fsidemenu) {
+ openoFrameWork.startPageLoading();
+
+ var menuContent = initLeftMenu();
+ fsidemenu.empty();
+ fsidemenu.append("<li class='sidebar-toggler-wrapper'><div class='sidebar-toggler hidden-xs hidden-sm'></div></li>");
+ fsidemenu.append(menuContent);
+ loadi18n_WebFramework('web-framework-menu-i18n', 'i18n/', 'openo_frame_left_menu_i18n');
+
+ openoFrameWork.stopPageLoading();
+ }
};
+
function goToHomePage(){
locationhash = openoFrameWork.getLocationHash();
if(!!locationhash&&locationhash.length>0){//有锚点,直接触å‘
@@ -3724,90 +3524,7 @@ function horMenuAuthentication( horMenuId ) {
});
rebuildHorMenu();
};
-//æ ¹æ®Fèœå•çš„ç«–èœå•æ¥è°ƒæ•´æ¨ªèœå•ã€‚获å–hparentid相åŒçš„ç«–èœå•ä¸­çš„第一个,æ¥æ›´æ–°æ¨ªèœå•ä¸Šå¯¹åº”父亲èœå•çš„hrefã€catchnum等信æ¯
-function ajustFMenu(megaBarDivId , siderbarDivId){
- var hparentIds = {};
- $('a[hparentid]', $('#'+ siderbarDivId)).each(function () {
- var hparentId = $(this).attr("hparentId");
- var parentMenu = $('a[id = ' + hparentId + ']', $('#' + megaBarDivId));
- var oldAHref = parentMenu.attr("href");
- if (oldAHref == null || oldAHref.trim() == "#" || oldAHref == "javascript") {
- var hrefMenu = $(this);
- //ç«–èœå•çš„第一级有å¯èƒ½æ˜¯è™šèœå•ï¼Œåˆ™æ‰¾è¿™ä¸ªè™šèŠ‚点下é¢çš„第一个有hrefçš„èœå•
- if( $(this).attr('href') == null || $(this).attr('href') == "#" || $(this).attr('href') == "javascript:;"){
- $('a[href]', $(this).parent().children('ul')).each(function () {
- hrefMenu = $(this);
- if (hrefMenu != null && hrefMenu != "#" && hrefMenu != "javascript") {
- return false; //跳出循环
- }
- })
- }
- parentMenu.attr("href", hrefMenu.attr("href"));
- parentMenu.attr("shiftjs", hrefMenu.attr("shiftjs"));
- parentMenu.attr("cachenum", hrefMenu.attr("cachenum"));
- parentMenu.attr("iframeName", hrefMenu.attr("iframeName"));
- parentMenu.attr("xdomain", hrefMenu.attr("xdomain"));
- parentMenu.attr("cssSrc", hrefMenu.attr("cssSrc"));
- parentMenu.attr("category", hrefMenu.attr("category"));
- parentMenu.attr("breadcrumgroupbuttonsrc", hrefMenu.attr("breadcrumgroupbuttonsrc"));
- parentMenu.attr("operation", hrefMenu.attr("operation"));
- parentMenu.attr("iframeautoscroll", hrefMenu.attr("iframeautoscroll"));
- }
- });
-}
-function FMenuAuthentication(megaBarDivId , siderbarDivId){
- var beforeHparentId = {};
- $('a[hparentid]', $('#'+ siderbarDivId)).each(function(){
- var parentid = $(this).attr("hparentid");
- beforeHparentId[parentid] = 1;
- });
- checkFmenuRightByAttr('licenseid' , megaBarDivId , siderbarDivId , getLcsRight);
- checkFmenuRightByAttr('operation' , megaBarDivId , siderbarDivId, getAllOperCodeRights);
- rebuildSiderBarMenu();
- var afterHparentId={};
- $('a[hparentid]', $('#'+ siderbarDivId)).each(function(){
- var parentid = $(this).attr("hparentid");
- afterHparentId[parentid] = 1;
- });
- //比较鉴æƒå‰åŽçš„父èœå•å·®å¼‚,如果这个父èœå•è‡ªå·±æ²¡æœ‰href属性,且鉴æƒåŽï¼Œæ‰€æœ‰çš„å­èœå•éƒ½æ²¡æœ‰æƒé™ï¼Œé‚£ä¹ˆè¿™ä¸ªçˆ¶èœå•éœ€è¦ä»Žç•Œé¢ä¸ŠåŽ»æŽ‰
- for( var parentid in beforeHparentId ){
- if( afterHparentId[parentid] == null ){
- var parent = $('#'+ parentid , $('#'+ megaBarDivId));
- if(parent.attr('href') == null || parent.attr('href') == "javascript:;" || parent.attr('href') == "#"){
- parent.parent().remove();
- }
- }
- }
-}
-function checkFmenuRightByAttr( attrName, megaBarDivId , siderbarDivId ,callback ){
- // license 鉴æƒ
- var menuids = new Array();
- var parentMenuId = new Array();
- var operations = new Array();
- //从页é¢DOMå–å¾—èœå•license项。
- $('a['+ attrName+']', $('#'+ siderbarDivId)).each(function () {
- var attrValue = $(this).attr(attrName);
- if (attrValue) {
- operations.push(attrValue);
- var id = $(this).attr("id");
- menuids.push({'id':id });
- }
- });
- var rights = callback(operations);// å–å¾—licenseæ•°æ®ã€‚
- if (rights && (rights.length == menuids.length)) {
- // æ ¹æ®åŽå°license值判断所在èœå•é¡¹æ˜¯å¦æ˜¾ç¤º
- for (var i = 0; i < menuids.length; i++) {
- var id = menuids[i].id;
- var hparentId =menuids[i].hParentId;
- var key = operations[i];
- var item = rights[i];
- // èœå•é¡¹å¦‚æžœé…了licenseid, 并且ä¸æ˜¯true字符串, 则移除èœå•é¡¹
- if (item.value != "True") {
- $('#'+id, $('#'+ siderbarDivId)).parent().remove();
- }
- }
- }
-}
+
// “更多æ“作â€åˆ†ç»„按钮鉴æƒ
function groupButtonAuthentication() {
// license 鉴æƒ
diff --git a/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js
index 2c63adff..e34794e3 100644
--- a/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js
+++ b/openo-portal/portal-common/src/main/webapp/common/js/international/loadi18n.js
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-var lang = getLanguage();
+var lang = 'en-US';
function loadProperties(propertiesFileName, propertiesFilePath , name_i18n) {
jQuery.i18n.properties({
@@ -50,29 +50,3 @@ function loadi18n_WebFramework(propertiesFileName, propertiesFilePath, name_i18n
loadProperties(propertiesFileName, propertiesFilePath, name_i18n);
}
-function loadPropertiesSideMenu(lang, propertiesFileNamePrefix, propertiesFilePath, name_I18n) {
- if(!name_I18n) name_I18n='openo_main_page_i18n';
- jQuery.i18n.properties({
- language:lang,
- name:propertiesFileNamePrefix,
- path:propertiesFilePath,
- mode:'map',
- callback: function() {
- var i18nItems = $('[name_i18n='+ name_I18n + ']');
- for (var i = 0; i < i18nItems.length; i++) {
- var $item = $(i18nItems.eq(i));
- var itemId = $item.attr('id');
- if (typeof($item.attr("placeholder")) == "undefined") {
- $item.text($.i18n.prop(itemId));
- } else {
- $item.attr("placeholder", $.i18n.prop(itemId));
- }
- }
- }
- });
-}
-
-function loadi18n_WebFramework_sideMenu() {
- var srcpath ="i18n/";
- loadPropertiesSideMenu(lang , 'web-framework-i18n', srcpath);
-}
diff --git a/openo-portal/portal-common/src/main/webapp/common/js/mainpage/load_mainPage.js b/openo-portal/portal-common/src/main/webapp/common/js/mainpage/load_mainPage.js
index a51d9ca9..3ba0f7ba 100644
--- a/openo-portal/portal-common/src/main/webapp/common/js/mainpage/load_mainPage.js
+++ b/openo-portal/portal-common/src/main/webapp/common/js/mainpage/load_mainPage.js
@@ -15,18 +15,17 @@
*/
var initMainPage = function() {
var modules;
- var resConfig;
- var propertiesFileName = "";
+ var propertiesFilePath = "i18n/";
+ var propertiesFileName = "web-framework-mainPage-i18n";
+ var i18nName = "openo_main_page_i18n";
$.ajax({
async : false,
"type" : "GET",
- url : "json/main-page.json",
+ url : "json/main_page.json",
dataType : "json",
"success" : function (res, textStatus, jqXHR) {
- resConfig = res;
modules = res.modules;
- propertiesFileName = res.propertiesFileNamePrefix;
},
error : function () {
}
@@ -91,6 +90,6 @@ var initMainPage = function() {
}
});
- loadi18n_WebFramework(propertiesFileName, 'i18n/', 'openo_main_page_i18n');
+ loadi18n_WebFramework(propertiesFileName, propertiesFilePath, i18nName);
});
} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/json/main_page.json b/openo-portal/portal-common/src/main/webapp/common/json/main_page.json
new file mode 100644
index 00000000..39cd7b70
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/json/main_page.json
@@ -0,0 +1,96 @@
+{
+ "modules":[
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_service",
+ "background":"skyBlue-mainpage",
+ "toolsImage":"toolsImageBrokenLine",
+ "url":"",
+ "linkId":"openo-nsoc-template",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_cloud",
+ "background":"golden-mainpage",
+ "toolsImage":"toolsImageHierachy",
+ "url":"",
+ "linkId":"openo-roc-vim",
+ "contentTip":""
+ },
+ {
+ "cover":"",
+ "background":"manLieONCloud-image",
+ "toolsImage":"",
+ "url":"",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_orchestrator",
+ "background":"orange-mainpage",
+ "toolsImage":"toolsImageGear",
+ "url":"",
+ "linkId":"openo-nsoc-vApp",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_monitor",
+ "background":"pinkishRed-mainpage",
+ "toolsImage":"toolsImagePresent",
+ "url":"",
+ "linkId":"openo-umc-monitor-setting",
+ "contentTip":""
+ },
+ {
+ "cover":"",
+ "background":"magicCube-image",
+ "toolsImage":"",
+ "url":"",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_resource",
+ "background":"grassGreen-mainpage",
+ "toolsImage":"toolsImageFile",
+ "url":"",
+ "linkId":"openo-roc-rs-view-overview",
+ "contentTip":""
+ },
+ {
+ "cover":"",
+ "background":"meeting-image",
+ "toolsImage":"",
+ "url":"",
+ "contentTip":""
+ },
+ {
+ "cover":"",
+ "background":"earth-image",
+ "toolsImage":"",
+ "url":"",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_design",
+ "background":"orange-mainpage",
+ "toolsImage":"toolsImageGear",
+ "url":"",
+ "linkId":"openo-nsoc-model-design",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_alarm",
+ "background":"skyBlue-mainpage",
+ "toolsImage":"toolsImageBriefcase",
+ "url":"",
+ "linkId":"openo-umc-monitor-alarm-currentAlarm",
+ "contentTip":""
+ },
+ {
+ "cover":"org_openo_orchestrator_framework_main_page_performance",
+ "background":"pinkishRed-mainpage",
+ "toolsImage":"toolsImagePresent",
+ "url":"",
+ "linkId":"openo-umc-monitor-pm-historyQuery",
+ "contentTip":""
+ }
+ ]
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/json/menu_list.json b/openo-portal/portal-common/src/main/webapp/common/json/menu_list.json
new file mode 100644
index 00000000..148b4bab
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/json/menu_list.json
@@ -0,0 +1,102 @@
+{
+ "parentMenus":[
+ {
+ "id":"openo_menu_service",
+ "url":"",
+ "iconClass":"fa fa-comments"
+ },
+ {
+ "id":"openo_menu_resource_mgr",
+ "url":"",
+ "iconClass":"fa fa-folder-open-o"
+ },
+ {
+ "id":"openo_menu_user",
+ "url":"",
+ "iconClass":"fa fa-puzzle-piece"
+ },
+ {
+ "id":"openo_menu_orchestrator",
+ "url":"",
+ "iconClass":"fa fa-folder-open-o"
+ },
+ {
+ "id":"openo_menu_manage_view",
+ "url":"",
+ "iconClass":"fa fa-coffee"
+ },
+ {
+ "id":"openo_menu_performance",
+ "url":"",
+ "iconClass":"fa fa-bar-chart"
+ }
+ ],
+ "childMenus":[
+ {
+ "parentId":"openo_menu_service",
+ "id":"openo_menu_service_service_management",
+ "url":"../lifecyclemgr/gsolcmmain.html",
+ "iconClass":"fa fa-comments"
+ },
+ {
+ "parentId":"openo_menu_resource_mgr",
+ "id":"openo_menu_resource_mgr_sdno",
+ "url":"../resmgr-sdn/resource.html",
+ "iconClass":"fa fa-folder-open-o"
+ },
+ {
+ "parentId":"openo_menu_resource_mgr",
+ "id":"openo_menu_resource_mgr_nfvo",
+ "url":"../resmgr-nfv/resource.html",
+ "iconClass":"fa fa-folder-open-o"
+ },
+ {
+ "parentId":"openo_menu_user",
+ "id":"openo_menu_user_user_management",
+ "url":"../user/user.html",
+ "iconClass":"fa fa-puzzle-piece"
+ },
+ {
+ "parentId":"openo_menu_orchestrator",
+ "id":"openo_menu_orchestrator_model_design",
+ "url":"/winery/servicetemplates.html",
+ "iconClass":"fa fa-folder-open-o"
+ },
+ {
+ "parentId":"openo_menu_orchestrator",
+ "id":"openo_menu_orchestrator_package",
+ "url":"../catalog/csarPackage.html",
+ "iconClass":"fa fa-folder-open-o"
+ },
+ {
+ "parentId":"openo_menu_orchestrator",
+ "id":"openo_menu_orchestrator_service_template",
+ "url":"../catalog/template.html",
+ "iconClass":"fa fa-list-alt"
+ },
+ {
+ "parentId":"openo_menu_manage_view",
+ "id":"openo_menu_manage_view_vim_manage",
+ "url":"../extsys/vim/vimView.html",
+ "iconClass":"fa fa-coffee"
+ },
+ {
+ "parentId":"openo_menu_manage_view",
+ "id":"openo_menu_manage_view_vnfm",
+ "url":"../extsys/vnfm/vnfmView.html",
+ "iconClass":"fa fa-coffee"
+ },
+ {
+ "parentId":"openo_menu_performance",
+ "id":"openo_menu_performance_performance_query",
+ "url":"../performance/performance_view.html",
+ "iconClass":"fa fa-bar-chart"
+ },
+ {
+ "parentId":"openo_menu_performance",
+ "id":"openo_menu_alarm_alarm_query",
+ "url":"../performance/alarm_view.html",
+ "iconClass":"fa fa-bell"
+ }
+ ]
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/avalon/avalon.modern.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/avalon/avalon.modern.js
index e2f6fad2..048b4241 100644
--- a/openo-portal/portal-common/src/main/webapp/common/thirdparty/avalon/avalon.modern.js
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/avalon/avalon.modern.js
@@ -1,15 +1,14 @@
/*==================================================
- Copyright (c) 2013-2014 å¸å¾’正美 and other contributors
+ Copyright (c) 2013-2015 å¸å¾’正美 and other contributors
http://www.cnblogs.com/rubylouvre/
https://github.com/RubyLouvre
http://weibo.com/jslouvre/
-
+
Released under the MIT license
- avalon.modern.js 1.39 build in 2015.1.15
-______________________________
- support IE6+ and other browsers
+ avalon.modern.js 1.43 built in 2015.5.21
+ support IE10+ and other browsers
==================================================*/
-(function(global, factory) {
+(function (global, factory) {
if (typeof module === "object" && typeof module.exports === "object") {
// For CommonJS and CommonJS-like environments where a proper `window`
@@ -18,7 +17,7 @@ ______________________________
// (such as Node.js), expose a factory as module.exports.
// This accentuates the need for the creation of a real `window`.
// e.g. var avalon = require("avalon")(window);
- module.exports = global.document ? factory(global, true) : function(w) {
+ module.exports = global.document ? factory(global, true) : function (w) {
if (!w.document) {
throw new Error("Avalon requires a window with a document")
}
@@ -29,897 +28,1014 @@ ______________________________
}
// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function(window, noGlobal){
+}(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
-/*********************************************************************
- * 全局å˜é‡åŠæ–¹æ³• *
- **********************************************************************/
-var expose = Date.now()
+ /*********************************************************************
+ * 全局å˜é‡åŠæ–¹æ³• *
+ **********************************************************************/
+ var expose = Date.now()
//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function
-var DOC = window.document
-var head = DOC.head //HEAD元素
-head.insertAdjacentHTML("afterBegin", '<avalon ms-skip><style id="avalonStyle">.avalonHide{ display: none!important }</style></avalon>')
-var ifGroup = head.firstChild
+ var DOC = window.document
+ var head = DOC.head //HEAD元素
+ head.insertAdjacentHTML("afterBegin", '<avalon ms-skip class="avalonHide"><style id="avalonStyle">.avalonHide{ display: none!important }</style></avalon>')
+ var ifGroup = head.firstChild
-function log() {
- if (avalon.config.debug) {
+ function log() {
+ if (avalon.config.debug) {
// http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log
- console.log.apply(console, arguments)
- }
-}
-
-var subscribers = "$" + expose
-var otherRequire = window.require
-var otherDefine = window.define
-var stopRepeatAssign = false
-var rword = /[^, ]+/g //切割字符串为一个个å°å—,以空格或豆å·åˆ†å¼€å®ƒä»¬ï¼Œç»“åˆreplace实现字符串的forEach
-var rcomplexType = /^(?:object|array)$/
-var rsvg = /^\[object SVG\w*Element\]$/
-var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/
-var oproto = Object.prototype
-var ohasOwn = oproto.hasOwnProperty
-var serialize = oproto.toString
-var ap = Array.prototype
-var aslice = ap.slice
-var Registry = {} //将函数æ›å…‰åˆ°æ­¤å¯¹è±¡ä¸Šï¼Œæ–¹ä¾¿è®¿é—®å™¨æ”¶é›†ä¾èµ–
-var W3C = window.dispatchEvent
-var root = DOC.documentElement
-var hyperspace = DOC.createDocumentFragment()
-var cinerator = DOC.createElement("div")
-var class2type = {}
-"Boolean Number String Function Array Date RegExp Object Error".replace(rword, function(name) {
- class2type["[object " + name + "]"] = name.toLowerCase()
-})
-
-
-function noop() {
-}
-
-
-function oneObject(array, val) {
- if (typeof array === "string") {
- array = array.match(rword) || []
- }
- var result = {},
- value = val !== void 0 ? val : 1
- for (var i = 0, n = array.length; i < n; i++) {
- result[array[i]] = value
+ console.log.apply(console, arguments)
+ }
+ }
+
+ /**
+ * Creates a new object without a prototype. This object is useful for lookup without having to
+ * guard against prototypically inherited properties via hasOwnProperty.
+ *
+ * Related micro-benchmarks:
+ * - http://jsperf.com/object-create2
+ * - http://jsperf.com/proto-map-lookup/2
+ * - http://jsperf.com/for-in-vs-object-keys2
+ */
+ function createMap() {
+ return Object.create(null)
+ }
+
+ var subscribers = "$" + expose
+ var otherRequire = window.require
+ var otherDefine = window.define
+ var innerRequire
+ var stopRepeatAssign = false
+ var rword = /[^, ]+/g //切割字符串为一个个å°å—,以空格或豆å·åˆ†å¼€å®ƒä»¬ï¼Œç»“åˆreplace实现字符串的forEach
+ var rcomplexType = /^(?:object|array)$/
+ var rsvg = /^\[object SVG\w*Element\]$/
+ var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/
+ var oproto = Object.prototype
+ var ohasOwn = oproto.hasOwnProperty
+ var serialize = oproto.toString
+ var ap = Array.prototype
+ var aslice = ap.slice
+ var Registry = {} //将函数æ›å…‰åˆ°æ­¤å¯¹è±¡ä¸Šï¼Œæ–¹ä¾¿è®¿é—®å™¨æ”¶é›†ä¾èµ–
+ var W3C = window.dispatchEvent
+ var root = DOC.documentElement
+ var hyperspace = DOC.createDocumentFragment()
+ var cinerator = DOC.createElement("div")
+ var class2type = {}
+ "Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) {
+ class2type["[object " + name + "]"] = name.toLowerCase()
+ })
+
+
+ function noop() {
}
- return result
-}
-function createCache(maxLength) {
- var keys = []
- function cache(key, value) {
- if (keys.push(key) > maxLength) {
- delete cache[keys.shift()]
+
+ function oneObject(array, val) {
+ if (typeof array === "string") {
+ array = array.match(rword) || []
}
- return cache[key] = value;
+ var result = {},
+ value = val !== void 0 ? val : 1
+ for (var i = 0, n = array.length; i < n; i++) {
+ result[array[i]] = value
+ }
+ return result
}
- return cache;
-}
+
//生æˆUUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript
-var generateID = function(prefix) {
- prefix = prefix || "avalon"
- return (prefix + Math.random() + Math.random()).replace(/0\./g, "")
-}
-function IE() {
- if (window.VBArray) {
- var mode = document.documentMode
- return mode ? mode : window.XMLHttpRequest ? 7 : 6
- } else {
- return 0
- }
-}
-var IEVersion = IE()
-/*********************************************************************
- * avalonçš„é™æ€æ–¹æ³•å®šä¹‰åŒº *
- **********************************************************************/
-avalon = function(el) { //创建jQueryå¼çš„æ— new 实例化结构
- return new avalon.init(el)
-}
-
-avalon.init = function(el) {
- this[0] = this.element = el
-}
-avalon.fn = avalon.prototype = avalon.init.prototype
-
-avalon.type = function(obj) { //å–得目标的类型
- if (obj == null) {
- return String(obj)
- }
- // 早期的webkit内核æµè§ˆå™¨å®žçŽ°äº†å·²åºŸå¼ƒçš„ecma262v4标准,å¯ä»¥å°†æ­£åˆ™å­—é¢é‡å½“作函数使用,因此typeof在判定正则时会返回function
- return typeof obj === "object" || typeof obj === "function" ?
- class2type[serialize.call(obj)] || "object" :
+ var generateID = function (prefix) {
+ prefix = prefix || "avalon"
+ return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix)
+ }
+
+ function IE() {
+ if (window.VBArray) {
+ var mode = document.documentMode
+ return mode ? mode : window.XMLHttpRequest ? 7 : 6
+ } else {
+ return 0
+ }
+ }
+
+ var IEVersion = IE()
+
+ avalon = function (el) { //创建jQueryå¼çš„æ— new 实例化结构
+ return new avalon.init(el)
+ }
+
+ /*视æµè§ˆå™¨æƒ…况采用最快的异步回调*/
+ avalon.nextTick = new function () {// jshint ignore:line
+ var tickImmediate = window.setImmediate
+ var tickObserver = window.MutationObserver
+ var tickPost = W3C && window.postMessage
+ if (tickImmediate) {
+ return tickImmediate.bind(window)
+ }
+
+ var queue = []
+
+ function callback() {
+ var n = queue.length
+ for (var i = 0; i < n; i++) {
+ queue[i]()
+ }
+ queue = queue.slice(n)
+ }
+
+ if (tickObserver) {
+ var node = document.createTextNode("avalon")
+ new tickObserver(callback).observe(node, {characterData: true})// jshint ignore:line
+ return function (fn) {
+ queue.push(fn)
+ node.data = Math.random()
+ }
+ }
+
+ if (tickPost) {
+ window.addEventListener("message", function (e) {
+ var source = e.source
+ if ((source === window || source === null) && e.data === "process-tick") {
+ e.stopPropagation()
+ callback()
+ }
+ })
+
+ return function (fn) {
+ queue.push(fn)
+ window.postMessage('process-tick', '*')
+ }
+ }
+
+ return function (fn) {
+ setTimeout(fn, 0)
+ }
+ }// jshint ignore:line
+ /*********************************************************************
+ * avalonçš„é™æ€æ–¹æ³•å®šä¹‰åŒº *
+ **********************************************************************/
+ avalon.init = function (el) {
+ this[0] = this.element = el
+ }
+ avalon.fn = avalon.prototype = avalon.init.prototype
+
+ avalon.type = function (obj) { //å–得目标的类型
+ if (obj == null) {
+ return String(obj)
+ }
+ // 早期的webkit内核æµè§ˆå™¨å®žçŽ°äº†å·²åºŸå¼ƒçš„ecma262v4标准,å¯ä»¥å°†æ­£åˆ™å­—é¢é‡å½“作函数使用,因此typeof在判定正则时会返回function
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[serialize.call(obj)] || "object" :
typeof obj
-}
+ }
-var isFunction = function(fn) {
- return serialize.call(fn) == "[object Function]"
-}
+ var isFunction = function (fn) {
+ return serialize.call(fn) === "[object Function]"
+ }
-avalon.isFunction = isFunction
+ avalon.isFunction = isFunction
-avalon.isWindow = function(obj) {
- return rwindow.test(serialize.call(obj))
-}
+ avalon.isWindow = function (obj) {
+ return rwindow.test(serialize.call(obj))
+ }
-/*判定是å¦æ˜¯ä¸€ä¸ªæœ´ç´ çš„javascript对象(Object),ä¸æ˜¯DOM对象,ä¸æ˜¯BOM对象,ä¸æ˜¯è‡ªå®šä¹‰ç±»çš„实例*/
+ /*判定是å¦æ˜¯ä¸€ä¸ªæœ´ç´ çš„javascript对象(Object),ä¸æ˜¯DOM对象,ä¸æ˜¯BOM对象,ä¸æ˜¯è‡ªå®šä¹‰ç±»çš„实例*/
-avalon.isPlainObject = function(obj) {
- // 简å•çš„ typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通ä¸è¿‡
- return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto
-}
+ avalon.isPlainObject = function (obj) {
+ // 简å•çš„ typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通ä¸è¿‡
+ return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto
+ }
//与jQuery.extend方法,å¯ç”¨äºŽæµ…æ‹·è´ï¼Œæ·±æ‹·è´
-avalon.mix = avalon.fn.mix = function() {
- var options, name, src, copy, copyIsArray, clone,
+ avalon.mix = avalon.fn.mix = function () {
+ var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false
- // 如果第一个å‚数为布尔,判定是å¦æ·±æ‹·è´
- if (typeof target === "boolean") {
- deep = target
- target = arguments[1] || {}
- i++
- }
+ // 如果第一个å‚数为布尔,判定是å¦æ·±æ‹·è´
+ if (typeof target === "boolean") {
+ deep = target
+ target = arguments[1] || {}
+ i++
+ }
- //ç¡®ä¿æŽ¥å—方为一个å¤æ‚çš„æ•°æ®ç±»åž‹
- if (typeof target !== "object" && !isFunction(target)) {
- target = {}
- }
+ //ç¡®ä¿æŽ¥å—方为一个å¤æ‚çš„æ•°æ®ç±»åž‹
+ if (typeof target !== "object" && !isFunction(target)) {
+ target = {}
+ }
- //如果åªæœ‰ä¸€ä¸ªå‚数,那么新æˆå‘˜æ·»åŠ äºŽmix所在的对象上
- if (i === length) {
- target = this
- i--
- }
+ //如果åªæœ‰ä¸€ä¸ªå‚数,那么新æˆå‘˜æ·»åŠ äºŽmix所在的对象上
+ if (i === length) {
+ target = this
+ i--
+ }
- for (; i < length; i++) {
- //åªå¤„ç†éžç©ºå‚æ•°
- if ((options = arguments[i]) != null) {
- for (name in options) {
- src = target[name]
- copy = options[name]
- // 防止环引用
- if (target === copy) {
- continue
- }
- if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
+ for (; i < length; i++) {
+ //åªå¤„ç†éžç©ºå‚æ•°
+ if ((options = arguments[i]) != null) {
+ for (name in options) {
+ src = target[name]
+ copy = options[name]
+ // 防止环引用
+ if (target === copy) {
+ continue
+ }
+ if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
- if (copyIsArray) {
- copyIsArray = false
- clone = src && Array.isArray(src) ? src : []
+ if (copyIsArray) {
+ copyIsArray = false
+ clone = src && Array.isArray(src) ? src : []
- } else {
- clone = src && avalon.isPlainObject(src) ? src : {}
- }
+ } else {
+ clone = src && avalon.isPlainObject(src) ? src : {}
+ }
- target[name] = avalon.mix(deep, clone, copy)
- } else if (copy !== void 0) {
- target[name] = copy
+ target[name] = avalon.mix(deep, clone, copy)
+ } else if (copy !== void 0) {
+ target[name] = copy
+ }
}
}
}
+ return target
}
- return target
-}
-
-function _number(a, len) { //用于模拟slice, splice的效果
- a = Math.floor(a) || 0
- return a < 0 ? Math.max(len + a, 0) : Math.min(a, len);
-}
-avalon.mix({
- rword: rword,
- subscribers: subscribers,
- version: 1.39,
- ui: {},
- log: log,
- slice: function(nodes, start, end) {
- return aslice.call(nodes, start, end)
- },
- noop: noop,
- /*如果ä¸ç”¨Error对象å°è£…一下,str在控制å°ä¸‹å¯èƒ½ä¼šä¹±ç */
- error: function(str, e) {
- throw new (e || Error)(str)
- },
- /*将一个以空格或逗å·éš”开的字符串或数组,转æ¢æˆä¸€ä¸ªé”®å€¼éƒ½ä¸º1的对象*/
- oneObject: oneObject,
- /* avalon.range(10)
- => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- avalon.range(1, 11)
- => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- avalon.range(0, 30, 5)
- => [0, 5, 10, 15, 20, 25]
- avalon.range(0, -10, -1)
- => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
- avalon.range(0)
- => []*/
- range: function(start, end, step) { // 用于生æˆæ•´æ•°æ•°ç»„
- step || (step = 1)
- if (end == null) {
- end = start || 0
- start = 0
- }
- var index = -1,
- length = Math.max(0, Math.ceil((end - start) / step)),
- result = Array(length)
- while (++index < length) {
- result[index] = start
- start += step
- }
- return result
- },
- eventHooks: {},
- /*绑定事件*/
- bind: function(el, type, fn, phase) {
- var hooks = avalon.eventHooks
- var hook = hooks[type]
- if (typeof hook === "object") {
- type = hook.type
- if (hook.deel) {
- fn = hook.deel(el, fn)
- }
- }
- el.addEventListener(type, fn, !!phase)
- return fn
- },
- /*å¸è½½äº‹ä»¶*/
- unbind: function(el, type, fn, phase) {
- var hooks = avalon.eventHooks
- var hook = hooks[type]
- var callback = fn || noop
- if (typeof hook === "object") {
- type = hook.type
- }
- el.removeEventListener(type, callback, !!phase)
- },
- /*读写删除元素节点的样å¼*/
- css: function(node, name, value) {
- if (node instanceof avalon) {
- node = node[0]
- }
- var prop = /[_-]/.test(name) ? camelize(name) : name
- name = avalon.cssName(prop) || prop
- if (value === void 0 || typeof value === "boolean") { //获å–æ ·å¼
- var fn = cssHooks[prop + ":get"] || cssHooks["@:get"]
- if (name === "background") {
- name = "backgroundColor"
- }
- var val = fn(node, name)
- return value === true ? parseFloat(val) || 0 : val
- } else if (value === "") { //请除样å¼
- node.style[name] = ""
- } else { //设置样å¼
- if (value == null || value !== value) {
- return
+
+ function _number(a, len) { //用于模拟slice, splice的效果
+ a = Math.floor(a) || 0
+ return a < 0 ? Math.max(len + a, 0) : Math.min(a, len);
+ }
+
+ avalon.mix({
+ rword: rword,
+ subscribers: subscribers,
+ version: 1.43,
+ ui: {},
+ log: log,
+ slice: function (nodes, start, end) {
+ return aslice.call(nodes, start, end)
+ },
+ noop: noop,
+ /*如果ä¸ç”¨Error对象å°è£…一下,str在控制å°ä¸‹å¯èƒ½ä¼šä¹±ç */
+ error: function (str, e) {
+ throw new (e || Error)(str)// jshint ignore:line
+ },
+ /*将一个以空格或逗å·éš”开的字符串或数组,转æ¢æˆä¸€ä¸ªé”®å€¼éƒ½ä¸º1的对象*/
+ oneObject: oneObject,
+ /* avalon.range(10)
+ => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+ avalon.range(1, 11)
+ => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ avalon.range(0, 30, 5)
+ => [0, 5, 10, 15, 20, 25]
+ avalon.range(0, -10, -1)
+ => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
+ avalon.range(0)
+ => []*/
+ range: function (start, end, step) { // 用于生æˆæ•´æ•°æ•°ç»„
+ step || (step = 1)
+ if (end == null) {
+ end = start || 0
+ start = 0
}
- if (isFinite(value) && !avalon.cssNumber[prop]) {
- value += "px"
+ var index = -1,
+ length = Math.max(0, Math.ceil((end - start) / step)),
+ result = new Array(length)
+ while (++index < length) {
+ result[index] = start
+ start += step
}
- fn = cssHooks[prop + ":set"] || cssHooks["@:set"]
- fn(node, name, value)
- }
- },
- /*é历数组与对象,回调的第一个å‚数为索引或键å,第二个或元素或键值*/
- each: function(obj, fn) {
- if (obj) { //排除null, undefined
- var i = 0
- if (isArrayLike(obj)) {
- for (var n = obj.length; i < n; i++) {
- fn(i, obj[i])
+ return result
+ },
+ eventHooks: {},
+ /*绑定事件*/
+ bind: function (el, type, fn, phase) {
+ var hooks = avalon.eventHooks
+ var hook = hooks[type]
+ if (typeof hook === "object") {
+ type = hook.type
+ if (hook.deel) {
+ fn = hook.deel(el, type, fn, phase)
}
- } else {
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- fn(i, obj[i])
- }
+ }
+ if (!fn.unbind)
+ el.addEventListener(type, fn, !!phase)
+ return fn
+ },
+ /*å¸è½½äº‹ä»¶*/
+ unbind: function (el, type, fn, phase) {
+ var hooks = avalon.eventHooks
+ var hook = hooks[type]
+ var callback = fn || noop
+ if (typeof hook === "object") {
+ type = hook.type
+ if (hook.deel) {
+ fn = hook.deel(el, type, fn, false)
}
}
- }
- },
- //收集元素的data-{{prefix}}-*属性,并转æ¢ä¸ºå¯¹è±¡
- getWidgetData: function(elem, prefix) {
- var raw = avalon(elem).data()
- var result = {}
- for (var i in raw) {
- if (i.indexOf(prefix) === 0) {
- result[i.replace(prefix, "").replace(/\w/, function(a) {
- return a.toLowerCase()
- })] = raw[i]
+ el.removeEventListener(type, callback, !!phase)
+ },
+ /*读写删除元素节点的样å¼*/
+ css: function (node, name, value) {
+ if (node instanceof avalon) {
+ node = node[0]
}
- }
- return result
- },
- Array: {
- /*åªæœ‰å½“å‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ—¶åªæ·»åŠ å®ƒ*/
- ensure: function(target, item) {
- if (target.indexOf(item) === -1) {
- return target.push(item)
+ var prop = /[_-]/.test(name) ? camelize(name) : name, fn
+ name = avalon.cssName(prop) || prop
+ if (value === void 0 || typeof value === "boolean") { //获å–æ ·å¼
+ fn = cssHooks[prop + ":get"] || cssHooks["@:get"]
+ if (name === "background") {
+ name = "backgroundColor"
+ }
+ var val = fn(node, name)
+ return value === true ? parseFloat(val) || 0 : val
+ } else if (value === "") { //请除样å¼
+ node.style[name] = ""
+ } else { //设置样å¼
+ if (value == null || value !== value) {
+ return
+ }
+ if (isFinite(value) && !avalon.cssNumber[prop]) {
+ value += "px"
+ }
+ fn = cssHooks[prop + ":set"] || cssHooks["@:set"]
+ fn(node, name, value)
+ }
+ },
+ /*é历数组与对象,回调的第一个å‚数为索引或键å,第二个或元素或键值*/
+ each: function (obj, fn) {
+ if (obj) { //排除null, undefined
+ var i = 0
+ if (isArrayLike(obj)) {
+ for (var n = obj.length; i < n; i++) {
+ if (fn(i, obj[i]) === false)
+ break
+ }
+ } else {
+ for (i in obj) {
+ if (obj.hasOwnProperty(i) && fn(i, obj[i]) === false) {
+ break
+ }
+ }
+ }
}
},
- /*移除数组中指定ä½ç½®çš„元素,返回布尔表示æˆåŠŸä¸Žå¦*/
- removeAt: function(target, index) {
- return !!target.splice(index, 1).length
+ //收集元素的data-{{prefix}}-*属性,并转æ¢ä¸ºå¯¹è±¡
+ getWidgetData: function (elem, prefix) {
+ var raw = avalon(elem).data()
+ var result = {}
+ for (var i in raw) {
+ if (i.indexOf(prefix) === 0) {
+ result[i.replace(prefix, "").replace(/\w/, function (a) {
+ return a.toLowerCase()
+ })] = raw[i]
+ }
+ }
+ return result
},
- /*移除数组中第一个匹é…ä¼ å‚的那个元素,返回布尔表示æˆåŠŸä¸Žå¦*/
- remove: function(target, item) {
- var index = target.indexOf(item)
- if (~index)
- return avalon.Array.removeAt(target, index)
- return false
+ Array: {
+ /*åªæœ‰å½“å‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ—¶åªæ·»åŠ å®ƒ*/
+ ensure: function (target, item) {
+ if (target.indexOf(item) === -1) {
+ return target.push(item)
+ }
+ },
+ /*移除数组中指定ä½ç½®çš„元素,返回布尔表示æˆåŠŸä¸Žå¦*/
+ removeAt: function (target, index) {
+ return !!target.splice(index, 1).length
+ },
+ /*移除数组中第一个匹é…ä¼ å‚的那个元素,返回布尔表示æˆåŠŸä¸Žå¦*/
+ remove: function (target, item) {
+ var index = target.indexOf(item)
+ if (~index)
+ return avalon.Array.removeAt(target, index)
+ return false
+ }
}
- }
-})
+ })
-var bindingHandlers = avalon.bindingHandlers = {}
-var bindingExecutors = avalon.bindingExecutors = {}
+ var bindingHandlers = avalon.bindingHandlers = {}
+ var bindingExecutors = avalon.bindingExecutors = {}
-/*判定是å¦ç±»æ•°ç»„,如节点集åˆï¼Œçº¯æ•°ç»„,arguments与拥有éžè´Ÿæ•´æ•°çš„length属性的纯JS对象*/
-function isArrayLike(obj) {
- if (obj && typeof obj === "object") {
- var n = obj.length,
+ /*判定是å¦ç±»æ•°ç»„,如节点集åˆï¼Œçº¯æ•°ç»„,arguments与拥有éžè´Ÿæ•´æ•°çš„length属性的纯JS对象*/
+ function isArrayLike(obj) {
+ if (obj && typeof obj === "object") {
+ var n = obj.length,
str = serialize.call(obj)
- if (/(Array|List|Collection|Map|Arguments)\]$/.test(str)) {
- return true
- } else if (str === "[object Object]" && n === (n >>> 0)) {
- return true //由于ecma262v5能修改对象属性的enumerable,因此ä¸èƒ½ç”¨propertyIsEnumerableæ¥åˆ¤å®šäº†
- }
- }
- return false
-}
-/*视æµè§ˆå™¨æƒ…况采用最快的异步回调(在avalon.ready里,还有一个分支,用于处ç†IE6-9)*/
-avalon.nextTick = window.setImmediate ? setImmediate.bind(window) : function(callback) {
- setTimeout(callback, 0) //IE10-11 or W3C
-}
-
-/*********************************************************************
- * DOM åº•å±‚è¡¥ä¸ *
- **********************************************************************/
-if (!root.contains) { //safari5+是把contains方法放在Element.prototype上而ä¸æ˜¯Node.prototype
- Node.prototype.contains = function(arg) {
- return !!(this.compareDocumentPosition(arg) & 16)
- }
-}
-avalon.contains = function(root, el) {
- try {
- while ((el = el.parentNode))
- if (el === root)
- return true;
- return false
- } catch (e) {
+ if (/(Array|List|Collection|Map|Arguments)\]$/.test(str)) {
+ return true
+ } else if (str === "[object Object]" && n === (n >>> 0)) {
+ return true //由于ecma262v5能修改对象属性的enumerable,因此ä¸èƒ½ç”¨propertyIsEnumerableæ¥åˆ¤å®šäº†
+ }
+ }
return false
}
-}
-if (window.SVGElement) {
- var svgns = "http://www.w3.org/2000/svg"
- var svg = DOC.createElementNS(svgns, "svg")
- svg.innerHTML = '<circle cx="50" cy="50" r="40" fill="red" />'
- if (!rsvg.test(svg.firstChild)) {// #409
-
- function enumerateNode(node, targetNode) {
- if (node && node.childNodes) {
- var nodes = node.childNodes
- for (var i = 0, el; el = nodes[i++]; ) {
- if (el.tagName) {
- var svg = DOC.createElementNS(svgns,
+
+
+// https://github.com/rsms/js-lru
+ var Cache = new function () {// jshint ignore:line
+ function LRU(maxLength) {
+ this.size = 0
+ this.limit = maxLength
+ this.head = this.tail = void 0
+ this._keymap = {}
+ }
+
+ var p = LRU.prototype
+
+ p.put = function (key, value) {
+ var entry = {
+ key: key,
+ value: value
+ }
+ this._keymap[key] = entry
+ if (this.tail) {
+ this.tail.newer = entry
+ entry.older = this.tail
+ } else {
+ this.head = entry
+ }
+ this.tail = entry
+ if (this.size === this.limit) {
+ this.shift()
+ } else {
+ this.size++
+ }
+ return value
+ }
+
+ p.shift = function () {
+ var entry = this.head
+ if (entry) {
+ this.head = this.head.newer
+ this.head.older =
+ entry.newer =
+ entry.older =
+ this._keymap[entry.key] = void 0
+ }
+ }
+ p.get = function (key) {
+ var entry = this._keymap[key]
+ if (entry === void 0)
+ return
+ if (entry === this.tail) {
+ return entry.value
+ }
+ // HEAD--------------TAIL
+ // <.older .newer>
+ // <--- add direction --
+ // A B C <D> E
+ if (entry.newer) {
+ if (entry === this.head) {
+ this.head = entry.newer
+ }
+ entry.newer.older = entry.older // C <-- E.
+ }
+ if (entry.older) {
+ entry.older.newer = entry.newer // C. --> E
+ }
+ entry.newer = void 0 // D --x
+ entry.older = this.tail // D. --> E
+ if (this.tail) {
+ this.tail.newer = entry // E. <-- D
+ }
+ this.tail = entry
+ return entry.value
+ }
+ return LRU
+ }// jshint ignore:line
+
+ /*********************************************************************
+ * DOM åº•å±‚è¡¥ä¸ *
+ **********************************************************************/
+//safari5+是把contains方法放在Element.prototype上而ä¸æ˜¯Node.prototype
+ if (!DOC.contains) {
+ Node.prototype.contains = function (arg) {
+ return !!(this.compareDocumentPosition(arg) & 16)
+ }
+ }
+ avalon.contains = function (root, el) {
+ try {
+ while ((el = el.parentNode))
+ if (el === root)
+ return true
+ return false
+ } catch (e) {
+ return false
+ }
+ }
+
+ if (window.SVGElement) {
+ var svgns = "http://www.w3.org/2000/svg"
+ var svg = DOC.createElementNS(svgns, "svg")
+ svg.innerHTML = '<circle cx="50" cy="50" r="40" fill="red" />'
+ if (!rsvg.test(svg.firstChild)) {// #409
+ /* jshint ignore:start */
+ function enumerateNode(node, targetNode) {
+ if (node && node.childNodes) {
+ var nodes = node.childNodes
+ for (var i = 0, el; el = nodes[i++];) {
+ if (el.tagName) {
+ var svg = DOC.createElementNS(svgns,
el.tagName.toLowerCase())
- // copy attrs
- ap.forEach.call(el.attributes, function(attr) {
- svg.setAttribute(attr.name, attr.value)
- })
- // 递归处ç†å­èŠ‚点
- enumerateNode(el, svg)
- targetNode.appendChild(svg)
+ // copy attrs
+ ap.forEach.call(el.attributes, function (attr) {
+ svg.setAttribute(attr.name, attr.value)
+ })
+ // 递归处ç†å­èŠ‚点
+ enumerateNode(el, svg)
+ targetNode.appendChild(svg)
+ }
}
}
}
- }
- Object.defineProperties(SVGElement.prototype, {
- "outerHTML": {//IE9-11,firefoxä¸æ”¯æŒSVG元素的innerHTML,outerHTML属性
- enumerable: true,
- configurable: true,
- get: function() {
- return new XMLSerializer().serializeToString(this)
- },
- set: function(html) {
- var tagName = this.tagName.toLowerCase(),
+
+ /* jshint ignore:end */
+ Object.defineProperties(SVGElement.prototype, {
+ "outerHTML": {//IE9-11,firefoxä¸æ”¯æŒSVG元素的innerHTML,outerHTML属性
+ enumerable: true,
+ configurable: true,
+ get: function () {
+ return new XMLSerializer().serializeToString(this)
+ },
+ set: function (html) {
+ var tagName = this.tagName.toLowerCase(),
par = this.parentNode,
frag = avalon.parseHTML(html)
- // æ“作的svg,直接æ’å…¥
- if (tagName === "svg") {
- par.insertBefore(frag, this)
- // svg节点的å­èŠ‚点类似
- } else {
- var newFrag = DOC.createDocumentFragment()
- enumerateNode(frag, newFrag)
- par.insertBefore(newFrag, this)
+ // æ“作的svg,直接æ’å…¥
+ if (tagName === "svg") {
+ par.insertBefore(frag, this)
+ // svg节点的å­èŠ‚点类似
+ } else {
+ var newFrag = DOC.createDocumentFragment()
+ enumerateNode(frag, newFrag)
+ par.insertBefore(newFrag, this)
+ }
+ par.removeChild(this)
}
- par.removeChild(this)
- }
- },
- "innerHTML": {
- enumerable: true,
- configurable: true,
- get: function() {
- var s = this.outerHTML
- var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i")
- var rclose = new RegExp("<\/" + this.nodeName + ">$", "i")
- return s.replace(ropen, "").replace(rclose, "")
},
- set: function(html) {
- if (avalon.clearHTML) {
- avalon.clearHTML(this)
- var frag = avalon.parseHTML(html)
- enumerateNode(frag, this)
+ "innerHTML": {
+ enumerable: true,
+ configurable: true,
+ get: function () {
+ var s = this.outerHTML
+ var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i")
+ var rclose = new RegExp("<\/" + this.nodeName + ">$", "i")
+ return s.replace(ropen, "").replace(rclose, "")
+ },
+ set: function (html) {
+ if (avalon.clearHTML) {
+ avalon.clearHTML(this)
+ var frag = avalon.parseHTML(html)
+ enumerateNode(frag, this)
+ }
}
}
- }
- })
+ })
+ }
}
-}
//========================= event binding ====================
-var eventHooks = avalon.eventHooks
+ var eventHooks = avalon.eventHooks
//针对firefox, chrome修正mouseenter, mouseleave(chrome30+)
-if (!("onmouseenter" in root)) {
- avalon.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
- }, function(origType, fixType) {
- eventHooks[origType] = {
- type: fixType,
- deel: function(elem, fn) {
- return function(e) {
- var t = e.relatedTarget
- if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) {
- delete e.type
- e.type = origType
- return fn.call(elem, e)
+ if (!("onmouseenter" in root)) {
+ avalon.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+ }, function (origType, fixType) {
+ eventHooks[origType] = {
+ type: fixType,
+ deel: function (elem, _, fn) {
+ return function (e) {
+ var t = e.relatedTarget
+ if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) {
+ delete e.type
+ e.type = origType
+ return fn.call(elem, e)
+ }
}
}
}
+ })
+ }
+//针对IE9+, w3c修正animationend
+ avalon.each({
+ AnimationEvent: "animationend",
+ WebKitAnimationEvent: "webkitAnimationEnd"
+ }, function (construct, fixType) {
+ if (window[construct] && !eventHooks.animationend) {
+ eventHooks.animationend = {
+ type: fixType
+ }
}
})
-}
-//针对IE9+, w3c修正animationend
-avalon.each({
- AnimationEvent: "animationend",
- WebKitAnimationEvent: "webkitAnimationEnd"
-}, function(construct, fixType) {
- if (window[construct] && !eventHooks.animationend) {
- eventHooks.animationend = {
- type: fixType
- }
- }
-})
-
-if (DOC.onmousewheel === void 0) {
- /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120
- firefox DOMMouseScroll detail 下3 上-3
- firefox wheel detlaY 下3 上-3
- IE9-11 wheel deltaY 下40 上-40
- chrome wheel deltaY 下100 上-100 */
- eventHooks.mousewheel = {
- type: "wheel",
- deel: function(elem, fn) {
- return function(e) {
- e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120
- e.wheelDeltaX = 0
- Object.defineProperty(e, "type", {
- value: "mousewheel"
- })
- fn.call(elem, e)
+
+ if (DOC.onmousewheel === void 0) {
+ /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120
+ firefox DOMMouseScroll detail 下3 上-3
+ firefox wheel detlaY 下3 上-3
+ IE9-11 wheel deltaY 下40 上-40
+ chrome wheel deltaY 下100 上-100 */
+ eventHooks.mousewheel = {
+ type: "wheel",
+ deel: function (elem, _, fn) {
+ return function (e) {
+ e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120
+ e.wheelDeltaX = 0
+ Object.defineProperty(e, "type", {
+ value: "mousewheel"
+ })
+ fn.call(elem, e)
+ }
}
}
}
-}
-/*********************************************************************
- * é…置系统 *
- **********************************************************************/
+ /*********************************************************************
+ * é…置系统 *
+ **********************************************************************/
-function kernel(settings) {
- for (var p in settings) {
- if (!ohasOwn.call(settings, p))
- continue
- var val = settings[p]
- if (typeof kernel.plugins[p] === "function") {
- kernel.plugins[p](val)
- } else if (typeof kernel[p] === "object") {
- avalon.mix(kernel[p], val)
- } else {
- kernel[p] = val
- }
- }
- return this
-}
-var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g
-
-function escapeRegExp(target) {
- //http://stevenlevithan.com/regex/xregexp/
- //将字符串安全格å¼åŒ–为正则表达å¼çš„æºç 
- return (target + "").replace(rregexp, "\\$&")
-}
-var innerRequire = noop
-var plugins = {
- loader: function(builtin) {
- window.define = builtin ? innerRequire.define : otherDefine
- window.require = builtin ? innerRequire : otherRequire
- },
- interpolate: function(array) {
- openTag = array[0]
- closeTag = array[1]
- if (openTag === closeTag) {
- throw new SyntaxError("openTag!==closeTag")
- } else if (array + "" === "<!--,-->") {
- kernel.commentInterpolate = true
- } else {
- var test = openTag + "test" + closeTag
- cinerator.innerHTML = test
- if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("&lt;") > -1) {
- throw new SyntaxError("此定界符ä¸åˆæ³•")
- }
- cinerator.innerHTML = ""
- }
- var o = escapeRegExp(openTag),
- c = escapeRegExp(closeTag)
- rexpr = new RegExp(o + "(.*?)" + c)
- rexprg = new RegExp(o + "(.*?)" + c, "g")
- rbind = new RegExp(o + ".*?" + c + "|\\sms-")
- }
-}
-
-kernel.debug = true
-kernel.plugins = plugins
-kernel.plugins['interpolate'](["{{", "}}"])
-kernel.paths = {}
-kernel.shim = {}
-kernel.maxRepeatSize = 100
-avalon.config = kernel
-/*********************************************************************
- * 事件总线 *
- **********************************************************************/
-var EventBus = {
- $watch: function(type, callback) {
- if (typeof callback === "function") {
- var callbacks = this.$events[type]
- if (callbacks) {
- callbacks.push(callback)
+ function kernel(settings) {
+ for (var p in settings) {
+ if (!ohasOwn.call(settings, p))
+ continue
+ var val = settings[p]
+ if (typeof kernel.plugins[p] === "function") {
+ kernel.plugins[p](val)
+ } else if (typeof kernel[p] === "object") {
+ avalon.mix(kernel[p], val)
} else {
- this.$events[type] = [callback]
+ kernel[p] = val
}
- } else { //é‡æ–°å¼€å§‹ç›‘å¬æ­¤VM的第一é‡ç®€å•å±žæ€§çš„å˜åŠ¨
- this.$events = this.$watch.backup
}
return this
- },
- $unwatch: function(type, callback) {
- var n = arguments.length
- if (n === 0) { //让此VM的所有$watch回调无效化
- this.$watch.backup = this.$events
- this.$events = {}
- } else if (n === 1) {
- this.$events[type] = []
- } else {
- var callbacks = this.$events[type] || []
- var i = callbacks.length
- while (~--i < 0) {
- if (callbacks[i] === callback) {
- return callbacks.splice(i, 1)
+ }
+
+ var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g
+
+ function escapeRegExp(target) {
+ //http://stevenlevithan.com/regex/xregexp/
+ //将字符串安全格å¼åŒ–为正则表达å¼çš„æºç 
+ return (target + "").replace(rregexp, "\\$&")
+ }
+
+ var plugins = {
+ loader: function (builtin) {
+ var flag = innerRequire && builtin
+ window.require = flag ? innerRequire : otherRequire
+ window.define = flag ? innerRequire.define : otherDefine
+ },
+ interpolate: function (array) {
+ openTag = array[0]
+ closeTag = array[1]
+ if (openTag === closeTag) {
+ throw new SyntaxError("openTag!==closeTag")
+ } else if (array + "" === "<!--,-->") {
+ kernel.commentInterpolate = true
+ } else {
+ var test = openTag + "test" + closeTag
+ cinerator.innerHTML = test
+ if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("&lt;") > -1) {
+ throw new SyntaxError("此定界符ä¸åˆæ³•")
}
+ cinerator.innerHTML = ""
}
- }
- return this
- },
- $fire: function(type) {
- var special
- if (/^(\w+)!(\S+)$/.test(type)) {
- special = RegExp.$1
- type = RegExp.$2
- }
- var events = this.$events
- var args = aslice.call(arguments, 1)
- var detail = [type].concat(args)
- if (special === "all") {
- for (var i in avalon.vmodels) {
- var v = avalon.vmodels[i]
- if (v !== this) {
- v.$fire.apply(v, detail)
+ var o = escapeRegExp(openTag),
+ c = escapeRegExp(closeTag)
+ rexpr = new RegExp(o + "(.*?)" + c)
+ rexprg = new RegExp(o + "(.*?)" + c, "g")
+ rbind = new RegExp(o + ".*?" + c + "|\\sms-")
+ }
+ }
+
+ kernel.debug = true
+ kernel.plugins = plugins
+ kernel.plugins['interpolate'](["{{", "}}"])
+ kernel.paths = {}
+ kernel.shim = {}
+ kernel.maxRepeatSize = 100
+ avalon.config = kernel
+ var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/
+ var findNodes = function (str) {
+ return DOC.querySelectorAll(str)
+ }
+ /*********************************************************************
+ * 事件总线 *
+ **********************************************************************/
+ var EventBus = {
+ $watch: function (type, callback) {
+ if (typeof callback === "function") {
+ var callbacks = this.$events[type]
+ if (callbacks) {
+ callbacks.push(callback)
+ } else {
+ this.$events[type] = [callback]
}
+ } else { //é‡æ–°å¼€å§‹ç›‘å¬æ­¤VM的第一é‡ç®€å•å±žæ€§çš„å˜åŠ¨
+ this.$events = this.$watch.backup
}
- } else if (special === "up" || special === "down") {
- var elements = events.expr ? findNodes(events.expr) : []
- if (elements.length === 0)
+ return this
+ },
+ $unwatch: function (type, callback) {
+ var n = arguments.length
+ if (n === 0) { //让此VM的所有$watch回调无效化
+ this.$watch.backup = this.$events
+ this.$events = {}
+ } else if (n === 1) {
+ this.$events[type] = []
+ } else {
+ var callbacks = this.$events[type] || []
+ var i = callbacks.length
+ while (~--i < 0) {
+ if (callbacks[i] === callback) {
+ return callbacks.splice(i, 1)
+ }
+ }
+ }
+ return this
+ },
+ $fire: function (type) {
+ var special, i, v, callback
+ if (/^(\w+)!(\S+)$/.test(type)) {
+ special = RegExp.$1
+ type = RegExp.$2
+ }
+ var events = this.$events
+ if (!events)
return
- for (var i in avalon.vmodels) {
- var v = avalon.vmodels[i]
- if (v !== this) {
- if (v.$events.expr) {
- var eventNodes = findNodes(v.$events.expr)
- if (eventNodes.length === 0) {
- continue
- }
- //循环两个vmodel中的节点,查找匹é…(å‘上匹é…或者å‘下匹é…)的节点并设置标识
- Array.prototype.forEach.call(eventNodes, function(node) {
- Array.prototype.forEach.call(elements, function(element) {
- var ok = special === "down" ? element.contains(node) : //å‘下æ•èŽ·
+ var args = aslice.call(arguments, 1)
+ var detail = [type].concat(args)
+ if (special === "all") {
+ for (i in avalon.vmodels) {
+ v = avalon.vmodels[i]
+ if (v !== this) {
+ v.$fire.apply(v, detail)
+ }
+ }
+ } else if (special === "up" || special === "down") {
+ var elements = events.expr ? findNodes(events.expr) : []
+ if (elements.length === 0)
+ return
+ for (i in avalon.vmodels) {
+ v = avalon.vmodels[i]
+ if (v !== this) {
+ if (v.$events.expr) {
+ var eventNodes = findNodes(v.$events.expr)
+ if (eventNodes.length === 0) {
+ continue
+ }
+ //循环两个vmodel中的节点,查找匹é…(å‘上匹é…或者å‘下匹é…)的节点并设置标识
+ /* jshint ignore:start */
+ Array.prototype.forEach.call(eventNodes, function (node) {
+ Array.prototype.forEach.call(elements, function (element) {
+ var ok = special === "down" ? element.contains(node) : //å‘下æ•èŽ·
node.contains(element) //å‘上冒泡
-
- if (ok) {
- node._avalon = v //符åˆæ¡ä»¶çš„加一个标识
- }
- });
- })
+ if (ok) {
+ node._avalon = v //符åˆæ¡ä»¶çš„加一个标识
+ }
+ });
+ })
+ /* jshint ignore:end */
+ }
}
}
- }
- var nodes = DOC.getElementsByTagName("*") //实现节点排åº
- var alls = []
- Array.prototype.forEach.call(nodes, function(el) {
- if (el._avalon) {
- alls.push(el._avalon)
- el._avalon = ""
- el.removeAttribute("_avalon")
+ var nodes = DOC.getElementsByTagName("*") //实现节点排åº
+ var alls = []
+ Array.prototype.forEach.call(nodes, function (el) {
+ if (el._avalon) {
+ alls.push(el._avalon)
+ el._avalon = ""
+ el.removeAttribute("_avalon")
+ }
+ })
+ if (special === "up") {
+ alls.reverse()
}
- })
- if (special === "up") {
- alls.reverse()
- }
- for (var i = 0, el; el = alls[i++]; ) {
- if (el.$fire.apply(el, detail) === false) {
- break
+ for (i = 0; callback = alls[i++];) {
+ if (callback.$fire.apply(callback, detail) === false) {
+ break
+ }
+ }
+ } else {
+ var callbacks = events[type] || []
+ var all = events.$all || []
+ for (i = 0; callback = callbacks[i++];) {
+ if (isFunction(callback))
+ callback.apply(this, args)
+ }
+ for (i = 0; callback = all[i++];) {
+ if (isFunction(callback))
+ callback.apply(this, arguments)
}
- }
- } else {
- var callbacks = events[type] || []
- var all = events.$all || []
- for (var i = 0, callback; callback = callbacks[i++]; ) {
- if (isFunction(callback))
- callback.apply(this, args)
- }
- for (var i = 0, callback; callback = all[i++]; ) {
- if (isFunction(callback))
- callback.apply(this, arguments)
}
}
}
-}
-var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/
-var findNodes = function(str) {
- //pc safari v5.1: typeof DOC.querySelectorAll(str) === 'function'
- //https://gist.github.com/DavidBruant/1016007
- return DOC.querySelectorAll(str)
-}
-/*********************************************************************
- * modelFactory *
- **********************************************************************/
+ /*********************************************************************
+ * modelFactory *
+ **********************************************************************/
//avalon最核心的方法的两个方法之一(å¦ä¸€ä¸ªæ˜¯avalon.scan),返回一个ViewModel(VM)
-var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里
-avalon.define = function(id, factory) {
- var $id = id.$id || id
- if (!$id) {
- log("warning: vm必须指定$id")
- }
- if (VMODELS[$id]) {
- log("warning: " + $id + " å·²ç»å­˜åœ¨äºŽavalon.vmodels中")
- }
- if (typeof id === "object") {
- var model = modelFactory(id)
- } else {
- var scope = {
- $watch: noop
+ var VMODELS = avalon.vmodels = createMap() //所有vmodel都储存在这里
+ avalon.define = function (id, factory) {
+ var $id = id.$id || id
+ if (!$id) {
+ log("warning: vm必须指定$id")
+ }
+ if (VMODELS[$id]) {
+ log("warning: " + $id + " å·²ç»å­˜åœ¨äºŽavalon.vmodels中")
}
- factory(scope) //得到所有定义
- model = modelFactory(scope) //å·å¤©æ¢æ—¥ï¼Œå°†scopeæ¢ä¸ºmodel
- stopRepeatAssign = true
- factory(model)
- stopRepeatAssign = false
+ if (typeof id === "object") {
+ var model = modelFactory(id)
+ } else {
+ var scope = {
+ $watch: noop
+ }
+ factory(scope) //得到所有定义
+ model = modelFactory(scope) //å·å¤©æ¢æ—¥ï¼Œå°†scopeæ¢ä¸ºmodel
+ stopRepeatAssign = true
+ factory(model)
+ stopRepeatAssign = false
+ }
+ model.$id = $id
+ return VMODELS[$id] = model
}
- model.$id = $id
- return VMODELS[$id] = model
-}
//一些ä¸éœ€è¦è¢«ç›‘å¬çš„属性
-var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray").match(rword)
+ var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray").match(rword)
-function isObservable(name, value, $skipArray) {
- if (isFunction(value) || value && value.nodeType) {
- return false
- }
- if ($skipArray.indexOf(name) !== -1) {
- return false
- }
- if ($$skipArray.indexOf(name) !== -1) {
- return false
- }
- var $special = $skipArray.$special
- if (name && name.charAt(0) === "$" && !$special[name]) {
- return false
- }
- return true
-}
-//ms-with,ms-each, ms-repeat绑定生æˆçš„代ç†å¯¹è±¡å‚¨å­˜æ± 
-var midway = {}
-function getNewValue(accessor, name, value, $vmodel) {
- switch (accessor.type) {
- case 0://计算属性
- var getter = accessor.get
- var setter = accessor.set
- if (isFunction(setter)) {
- var $events = $vmodel.$events
- var lock = $events[name]
- $events[name] = [] //清空回调,防止内部冒泡而触å‘多次$fire
- setter.call($vmodel, value)
- $events[name] = lock
- }
- return getter.call($vmodel) //åŒæ­¥$model
- case 1://监控属性
- return value
- case 2://对象属性(包括数组与哈希)
- if (value !== $vmodel.$model[name]) {
- var svmodel = accessor.svmodel = objectFactory($vmodel, name, value, accessor.valueType)
- value = svmodel.$model //åŒæ­¥$model
- var fn = midway[svmodel.$id]
- fn && fn() //åŒæ­¥è§†å›¾
- }
- return value
+ function isObservable(name, value, $skipArray) {
+ if (isFunction(value) || value && value.nodeType) {
+ return false
+ }
+ if ($skipArray.indexOf(name) !== -1) {
+ return false
+ }
+ if ($$skipArray.indexOf(name) !== -1) {
+ return false
+ }
+ var $special = $skipArray.$special
+ if (name && name.charAt(0) === "$" && !$special[name]) {
+ return false
+ }
+ return true
}
-}
-var defineProperty = Object.defineProperty
-var canHideOwn = true
-//如果æµè§ˆå™¨ä¸æ”¯æŒecma262v5çš„Object.defineProperties或者存在BUG,比如IE8
-//标准æµè§ˆå™¨ä½¿ç”¨__defineGetter__, __defineSetter__实现
-try {
- defineProperty({}, "_", {
- value: "x"
- })
- var defineProperties = Object.defineProperties
-} catch (e) {
- canHideOwn = false
-}
-function modelFactory(source, $special, $model) {
- if (Array.isArray(source)) {
- var arr = source.concat()
- source.length = 0
- var collection = Collection(source)
- collection.pushArray(arr)
- return collection
- }
- if (typeof source.nodeType === "number") {
- return source
- }
- if (source.$id && source.$events) { //fix IE6-8 createWithProxy $val: val引å‘çš„BUG
- return source
- }
- if (!Array.isArray(source.$skipArray)) {
- source.$skipArray = []
- }
- source.$skipArray.$special = $special || {} //强制è¦ç›‘å¬çš„属性
- var $vmodel = {} //è¦è¿”回的对象, 它在IE6-8下å¯èƒ½è¢«å·é¾™è½¬å‡¤
- $model = $model || {} //vmodels.$model属性
- var $events = {} //vmodel.$events属性
- var watchedProperties = {} //监控属性
- var initCallbacks = [] //åˆå§‹åŒ–æ‰æ‰§è¡Œçš„函数
- for (var i in source) {
- (function(name, val) {
- $model[name] = val
- if (!isObservable(name, val, source.$skipArray)) {
- return //过滤所有éžç›‘控属性
- }
- //总共产生三ç§accessor
- $events[name] = []
- var valueType = avalon.type(val)
- var accessor = function(newValue) {
- var name = accessor._name
- var $vmodel = this
- var $model = $vmodel.$model
- var oldValue = $model[name]
- var $events = $vmodel.$events
-
- if (arguments.length) {
- if (stopRepeatAssign) {
- return
- }
- //计算属性与对象属性需è¦é‡æ–°è®¡ç®—newValue
- if (accessor.type !== 1) {
- newValue = getNewValue(accessor, name, newValue, $vmodel)
- }
- if (!isEqual(oldValue, newValue)) {
- $model[name] = newValue
- if ($events.$digest) {
- if(accessor.pedding)
+//ms-with,ms-each, ms-repeat绑定生æˆçš„代ç†å¯¹è±¡å‚¨å­˜æ± 
+ var midway = createMap()
+
+ function getNewValue(accessor, name, value, $vmodel) {
+ switch (accessor.type) {
+ case 0://计算属性
+ var getter = accessor.get
+ var setter = accessor.set
+ if (isFunction(setter)) {
+ var $events = $vmodel.$events
+ var lock = $events[name]
+ $events[name] = [] //清空回调,防止内部冒泡而触å‘多次$fire
+ setter.call($vmodel, value)
+ $events[name] = lock
+ }
+ return getter.call($vmodel) //åŒæ­¥$model
+ case 1://监控属性
+ return value
+ case 2://对象属性(包括数组与哈希)
+ if (value !== $vmodel.$model[name]) {
+ var svmodel = accessor.svmodel = objectFactory($vmodel, name, value, accessor.valueType)
+ value = svmodel.$model //åŒæ­¥$model
+ var fn = midway[svmodel.$id]
+ fn && fn() //åŒæ­¥è§†å›¾
+ }
+ return value
+ }
+ }
+
+ function modelFactory(source, $special, $model) {
+ if (Array.isArray(source)) {
+ var arr = source.concat()
+ source.length = 0
+ var collection = Collection(source)// jshint ignore:line
+ collection.pushArray(arr)
+ return collection
+ }
+ //0 null undefined || Node || VModel
+ if (!source || source.nodeType > 0 || (source.$id && source.$events)) {
+ return source
+ }
+ if (!Array.isArray(source.$skipArray)) {
+ source.$skipArray = []
+ }
+ source.$skipArray.$special = $special || createMap() //强制è¦ç›‘å¬çš„属性
+ var $vmodel = {} //è¦è¿”回的对象, 它在IE6-8下å¯èƒ½è¢«å·é¾™è½¬å‡¤
+ $model = $model || {} //vmodels.$model属性
+ var $events = createMap() //vmodel.$events属性
+ var watchedProperties = createMap() //监控属性
+ var initCallbacks = [] //åˆå§‹åŒ–æ‰æ‰§è¡Œçš„函数
+ for (var i in source) {
+ (function (name, val) {
+ $model[name] = val
+ if (!isObservable(name, val, source.$skipArray)) {
+ return //过滤所有éžç›‘控属性
+ }
+ //总共产生三ç§accessor
+ $events[name] = []
+ var valueType = avalon.type(val)
+ var accessor = function (newValue) {
+ var name = accessor._name
+ var $vmodel = this
+ var $model = $vmodel.$model
+ var oldValue = $model[name]
+ var $events = $vmodel.$events
+
+ if (arguments.length) {
+ if (stopRepeatAssign) {
+ return
+ }
+ //计算属性与对象属性需è¦é‡æ–°è®¡ç®—newValue
+ if (accessor.type !== 1) {
+ newValue = getNewValue(accessor, name, newValue, $vmodel)
+ if (!accessor.type)
return
- accessor.pedding = true
- setTimeout(function() {
- notifySubscribers($events[name]) //åŒæ­¥è§†å›¾
- safeFire($vmodel, name, $model[name], oldValue) //触å‘$watch回调
- accessor.pedding = false
- })
- } else {
+ }
+ if (!isEqual(oldValue, newValue)) {
+ $model[name] = newValue
notifySubscribers($events[name]) //åŒæ­¥è§†å›¾
safeFire($vmodel, name, newValue, oldValue) //触å‘$watch回调
}
- }
- } else {
- if (accessor.type === 0) { //type 0 计算属性 1 监控属性 2 对象属性
- //计算属性ä¸éœ€è¦æ”¶é›†è§†å›¾åˆ·æ–°å‡½æ•°,都是由其他监控属性代劳
- return $model[name] = accessor.get.call($vmodel)
} else {
- collectSubscribers($events[name]) //收集视图函数
- return accessor.svmodel || oldValue
+ if (accessor.type === 0) { //type 0 计算属性 1 监控属性 2 对象属性
+ //计算属性ä¸éœ€è¦æ”¶é›†è§†å›¾åˆ·æ–°å‡½æ•°,都是由其他监控属性代劳
+ newValue = accessor.get.call($vmodel)
+ if (oldValue !== newValue) {
+ $model[name] = newValue
+ //这里ä¸ç”¨åŒæ­¥è§†å›¾
+ safeFire($vmodel, name, newValue, oldValue) //触å‘$watch回调
+ }
+ return newValue
+ } else {
+ collectSubscribers($events[name]) //收集视图函数
+ return accessor.svmodel || oldValue
+ }
}
}
- }
- //总共产生三ç§accessor
- if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) {
- //第1ç§ä¸ºè®¡ç®—属性, å› å˜é‡ï¼Œé€šè¿‡å…¶ä»–监控属性触å‘其改å˜
- accessor.set = val.set
- accessor.get = val.get
- accessor.type = 0
- initCallbacks.push(function() {
- var data = {
- evaluator: function() {
- data.element = null
- data.type = new Date - 0
- $model[name] = accessor.get.call($vmodel)
- },
- element: head,
- type: new Date - 0,
- handler: noop,
- args: []
- }
- Registry[expose] = data
- accessor.call($vmodel)
- delete Registry[expose]
- })
- } else if (rcomplexType.test(valueType)) {
- //第2ç§ä¸ºå¯¹è±¡å±žæ€§ï¼Œäº§ç”Ÿå­VM与监控数组
- accessor.type = 2
- accessor.valueType = val.valueType
- initCallbacks.push(function() {
- var svmodel = modelFactory(val, 0, $model[name])
- accessor.svmodel = svmodel
- svmodel.$events[subscribers] = $events[name]
- })
- } else {
- accessor.type = 1
- //第3ç§ä¸ºç›‘控属性,对应简å•çš„æ•°æ®ç±»åž‹ï¼Œè‡ªå˜é‡
- }
- accessor._name = name
- watchedProperties[name] = accessor
- })(i, source[i])
- }
+ //总共产生三ç§accessor
+ if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) {
+ //第1ç§ä¸ºè®¡ç®—属性, å› å˜é‡ï¼Œé€šè¿‡å…¶ä»–监控属性触å‘其改å˜
+ accessor.set = val.set
+ accessor.get = val.get
+ accessor.type = 0
+ initCallbacks.push(function () {
+ var data = {
+ evaluator: function () {
+ data.type = Math.random(),
+ data.element = null
+ $model[name] = accessor.get.call($vmodel)
+ },
+ element: head,
+ type: Math.random(),
+ handler: noop,
+ args: []
+ }
+ Registry[expose] = data
+ accessor.call($vmodel)
+ delete Registry[expose]
+ })
+ } else if (rcomplexType.test(valueType)) {
+ //第2ç§ä¸ºå¯¹è±¡å±žæ€§ï¼Œäº§ç”Ÿå­VM与监控数组
+ accessor.type = 2
+ accessor.valueType = valueType
+ initCallbacks.push(function () {
+ var svmodel = modelFactory(val, 0, $model[name])
+ accessor.svmodel = svmodel
+ svmodel.$events[subscribers] = $events[name]
+ })
+ } else {
+ accessor.type = 1
+ //第3ç§ä¸ºç›‘控属性,对应简å•çš„æ•°æ®ç±»åž‹ï¼Œè‡ªå˜é‡
+ }
+ accessor._name = name
+ watchedProperties[name] = accessor
+ })(i, source[i])// jshint ignore:line
+ }
- $$skipArray.forEach(function(name) {
- delete source[name]
- delete $model[name] //这些特殊属性ä¸åº”该在$model中出现
- })
+ $$skipArray.forEach(function (name) {
+ delete source[name]
+ delete $model[name] //这些特殊属性ä¸åº”该在$model中出现
+ })
- $vmodel = defineProperties($vmodel, descriptorFactory(watchedProperties), source) //生æˆä¸€ä¸ªç©ºçš„ViewModel
- for (var name in source) {
- if (!watchedProperties[name]) {
- $vmodel[name] = source[name]
+ $vmodel = Object.defineProperties($vmodel, descriptorFactory(watchedProperties), source) //生æˆä¸€ä¸ªç©ºçš„ViewModel
+ for (var name in source) {
+ if (!watchedProperties[name]) {
+ $vmodel[name] = source[name]
+ }
}
- }
- //添加$id, $model, $events, $watch, $unwatch, $fire
- $vmodel.$id = generateID()
- $vmodel.$model = $model
- $vmodel.$events = $events
- for (var i in EventBus) {
- var fn = EventBus[i]
- if (!W3C) { //在IE6-8下,VB对象的方法里的this并ä¸æŒ‡å‘自身,需è¦ç”¨bind处ç†ä¸€ä¸‹
- fn = fn.bind($vmodel)
+ //添加$id, $model, $events, $watch, $unwatch, $fire
+ $vmodel.$id = generateID()
+ $vmodel.$model = $model
+ $vmodel.$events = $events
+ for (i in EventBus) {
+ $vmodel[i] = EventBus[i]
}
- $vmodel[i] = fn
- }
- if (canHideOwn) {
Object.defineProperty($vmodel, "hasOwnProperty", {
- value: function(name) {
+ value: function (name) {
return name in this.$model
},
writable: false,
@@ -927,3483 +1043,3857 @@ function modelFactory(source, $special, $model) {
configurable: true
})
- } else {
- $vmodel.hasOwnProperty = function(name) {
- return name in $vmodel.$model
- }
+ initCallbacks.forEach(function (cb) { //收集ä¾èµ–
+ cb()
+ })
+ return $vmodel
}
- initCallbacks.forEach(function(cb) { //收集ä¾èµ–
- cb()
- })
- return $vmodel
-}
//比较两个值是å¦ç›¸ç­‰
-var isEqual = Object.is || function(v1, v2) {
- if (v1 === 0 && v2 === 0) {
- return 1 / v1 === 1 / v2
- } else if (v1 !== v1) {
- return v2 !== v2
- } else {
- return v1 === v2
- }
-}
+ var isEqual = Object.is || function (v1, v2) {
+ if (v1 === 0 && v2 === 0) {
+ return 1 / v1 === 1 / v2
+ } else if (v1 !== v1) {
+ return v2 !== v2
+ } else {
+ return v1 === v2
+ }
+ }
-function safeFire(a, b, c, d) {
- if (a.$events) {
- EventBus.$fire.call(a, b, c, d)
+ function safeFire(a, b, c, d) {
+ if (a.$events) {
+ EventBus.$fire.call(a, b, c, d)
+ }
}
-}
-var descriptorFactory = W3C ? function(obj) {
- var descriptors = {}
- for (var i in obj) {
- descriptors[i] = {
- get: obj[i],
- set: obj[i],
- enumerable: true,
- configurable: true
+ var descriptorFactory = function (obj) {
+ var descriptors = createMap()
+ for (var i in obj) {
+ descriptors[i] = {
+ get: obj[i],
+ set: obj[i],
+ enumerable: true,
+ configurable: true
+ }
}
+ return descriptors
}
- return descriptors
-} : function(a) {
- return a
-}
+//应用于第2ç§accessor
+ function objectFactory(parent, name, value, valueType) {
+ //a为原æ¥çš„VM, b为新数组或新对象
+ var son = parent[name]
+ if (valueType === "array") {
+ if (!Array.isArray(value) || son === value) {
+ return son //fix https://github.com/RubyLouvre/avalon/issues/261
+ }
+ son._.$unwatch()
+ son.clear()
+ son._.$watch()
+ son.pushArray(value.concat())
+ return son
+ } else {
+ var iterators = parent.$events[name]
+ var ret = modelFactory(value)
+ ret.$events[subscribers] = iterators
+ midway[ret.$id] = function (data) {
+ while (data = iterators.shift()) {
+ (function (el) {
+ avalon.nextTick(function () {
+ var type = el.type
+ if (type && bindingHandlers[type]) { //#753
+ el.rollback && el.rollback() //还原 ms-with ms-on
+ bindingHandlers[type](el, el.vmodels)
+ }
+ })
+ })(data)// jshint ignore:line
+ }
+ delete midway[ret.$id]
+ }
+ return ret
+ }
+ }
+ /*********************************************************************
+ * 监控数组(与ms-each, ms-repeaté…åˆä½¿ç”¨ï¼‰ *
+ **********************************************************************/
-//应用于第2ç§accessor
-function objectFactory(parent, name, value, valueType) {
- //a为原æ¥çš„VM, b为新数组或新对象
- var son = parent[name]
- if (valueType === "array") {
- if (!Array.isArray(value) || son === value) {
- return son //fix https://github.com/RubyLouvre/avalon/issues/261
- }
- son.clear()
- son.pushArray(value.concat())
- return son
- } else {
- var iterators = parent.$events[name]
- var pool = son.$events.$withProxyPool
- if (pool) {
- recycleProxies(pool, "with")
- son.$events.$withProxyPool = null
- }
- var ret = modelFactory(value)
- ret.$events[subscribers] = iterators
- midway[ret.$id] = function(data) {
- while (data = iterators.shift()) {
- (function(el) {
- avalon.nextTick(function() {
- if (el.type) { //é‡æ–°ç»‘定
- el.rollback && el.rollback() //还原 ms-with ms-on
- bindingHandlers[el.type](el, el.vmodels)
+ function Collection(model) {
+ var array = []
+ array.$id = generateID()
+ array.$model = model //æ•°æ®æ¨¡åž‹
+ array.$events = {}
+ array.$events[subscribers] = []
+ array._ = modelFactory({
+ length: model.length
+ })
+ array._.$watch("length", function (a, b) {
+ array.$fire("length", a, b)
+ })
+ for (var i in EventBus) {
+ array[i] = EventBus[i]
+ }
+ array.$map = {
+ el: 1
+ }
+ array.$proxy = []
+ avalon.mix(array, CollectionPrototype)
+ return array
+ }
+
+ function mutateArray(method, pos, n, index, method2, pos2, n2) {
+ var oldLen = this.length, loop = 2
+ while (--loop) {
+ switch (method) {
+ case "add":
+ /* jshint ignore:start */
+ var m = pos + n
+ var array = this.$model.slice(pos, m).map(function (el) {
+ if (rcomplexType.test(avalon.type(el))) {//转æ¢ä¸ºVM
+ return el.$id ? el : modelFactory(el, 0, el)
+ } else {
+ return el
}
})
- })(data)
+ /* jshint ignore:end */
+ for (var i = pos; i < m; i++) {//生æˆä»£ç†VM
+ var proxy = eachProxyAgent(i, this)
+ this.$proxy.splice(i, 0, proxy)
+ }
+ _splice.apply(this, [pos, 0].concat(array))
+ this._fire("add", pos, n)
+ break
+ case "del":
+ var ret = this._splice(pos, n)
+ var removed = this.$proxy.splice(pos, n) //回收代ç†VM
+ recycleProxies(removed, "each")
+ this._fire("del", pos, n)
+ break
+ }
+ if (method2) {
+ method = method2
+ pos = pos2
+ n = n2
+ loop = 2
+ method2 = 0
}
- delete midway[ret.$id]
+ }
+ resetIndex(this.$proxy, index)
+ if (this.length !== oldLen) {
+ this._.length = this.length
}
return ret
}
-}
-/*********************************************************************
- * 监控数组(与ms-each, ms-repeaté…åˆä½¿ç”¨ï¼‰ *
- **********************************************************************/
-
-function Collection(model) {
- var array = []
- array.$id = generateID()
- array.$model = model //æ•°æ®æ¨¡åž‹
- array.$events = {}
- array.$events[subscribers] = []
- array._ = modelFactory({
- length: model.length
- })
- array._.$watch("length", function(a, b) {
- array.$fire("length", a, b)
- })
- for (var i in EventBus) {
- array[i] = EventBus[i]
- }
- avalon.mix(array, CollectionPrototype)
- return array
-}
-
-function mutateArray(method, pos, n, index, method2, pos2, n2) {
- var oldLen = this.length, loop = 2
- while (--loop) {
- switch (method) {
- case "add":
- var array = this.$model.slice(pos, pos + n).map(function(el) {
- if (rcomplexType.test(avalon.type(el))) {
- return el.$id ? el : modelFactory(el, 0, el)
- } else {
- return el
- }
- })
- _splice.apply(this, [pos, 0].concat(array))
- this._fire("add", pos, n)
- break
- case "del":
- var ret = this._splice(pos, n)
- this._fire("del", pos, n)
- break
- }
- if (method2) {
- method = method2
- pos = pos2
- n = n2
- loop = 2
- method2 = 0
- }
- }
- this._fire("index", index)
- if (this.length !== oldLen) {
- this._.length = this.length
- }
- return ret
-}
-
-var _splice = ap.splice
-var CollectionPrototype = {
- _splice: _splice,
- _fire: function(method, a, b) {
- var list = this.$events[subscribers]
- for (var i = 0, fn; fn = list[i++]; ) {
- if (fn.$repeat) {
- fn.handler.call(fn, method, a, b) //处ç†ç›‘控数组的方法
- }
- }
- },
- size: function() { //å–得数组长度,这个函数å¯ä»¥åŒæ­¥è§†å›¾ï¼Œlengthä¸èƒ½
- return this._.length
- },
- pushArray: function(array) {
- var m = array.length, n = this.length
- if (m) {
- ap.push.apply(this.$model, array)
- mutateArray.call(this, "add", n, m, n)
- }
- return m + n
- },
- push: function() {
- //http://jsperf.com/closure-with-arguments
- var array = []
- var i, n = arguments.length
- for (i = 0; i < n; i++) {
- array[i] = arguments[i]
- }
- return this.pushArray(arguments)
- },
- unshift: function() {
- var m = arguments.length, n = this.length
- if (m) {
- ap.unshift.apply(this.$model, arguments)
- mutateArray.call(this, "add", 0, m, 0)
- }
- return m + n //IE67çš„unshiftä¸ä¼šè¿”回长度
- },
- shift: function() {
- if (this.length) {
- var el = this.$model.shift()
- mutateArray.call(this, "del", 0, 1, 0)
- return el //返回被移除的元素
- }
- },
- pop: function() {
- var m = this.length
- if (m) {
- var el = this.$model.pop()
- mutateArray.call(this, "del", m - 1, 1, Math.max(0, m - 2))
- return el //返回被移除的元素
- }
- },
- splice: function(start) {
- var m = arguments.length, args = [], change
- var removed = _splice.apply(this.$model, arguments)
- if (removed.length) { //如果用户删掉了元素
- args.push("del", start, removed.length, 0)
- change = true
- }
- if (m > 2) { //如果用户添加了元素
- args.splice(3, 1, 0, "add", start, m - 2)
- change = true
- }
- if (change) { //返回被移除的元素
- return mutateArray.apply(this, args)
- } else {
+
+ var _splice = ap.splice
+ var CollectionPrototype = {
+ _splice: _splice,
+ _fire: function (method, a, b) {
+ notifySubscribers(this.$events[subscribers], method, a, b)
+ },
+ size: function () { //å–得数组长度,这个函数å¯ä»¥åŒæ­¥è§†å›¾ï¼Œlengthä¸èƒ½
+ return this._.length
+ },
+ pushArray: function (array) {
+ var m = array.length, n = this.length
+ if (m) {
+ ap.push.apply(this.$model, array)
+ mutateArray.call(this, "add", n, m, Math.max(0, n - 1))
+ }
+ return m + n
+ },
+ push: function () {
+ //http://jsperf.com/closure-with-arguments
+ var array = []
+ var i, n = arguments.length
+ for (i = 0; i < n; i++) {
+ array[i] = arguments[i]
+ }
+ return this.pushArray(array)
+ },
+ unshift: function () {
+ var m = arguments.length, n = this.length
+ if (m) {
+ ap.unshift.apply(this.$model, arguments)
+ mutateArray.call(this, "add", 0, m, 0)
+ }
+ return m + n //IE67çš„unshiftä¸ä¼šè¿”回长度
+ },
+ shift: function () {
+ if (this.length) {
+ var el = this.$model.shift()
+ mutateArray.call(this, "del", 0, 1, 0)
+ return el //返回被移除的元素
+ }
+ },
+ pop: function () {
+ var n = this.length
+ if (n) {
+ var el = this.$model.pop()
+ mutateArray.call(this, "del", n - 1, 1, Math.max(0, n - 2))
+ return el //返回被移除的元素
+ }
+ },
+ splice: function (start) {
+ var m = arguments.length, args = [], change
+ var removed = _splice.apply(this.$model, arguments)
+ if (removed.length) { //如果用户删掉了元素
+ args.push("del", start, removed.length, 0)
+ change = true
+ }
+ if (m > 2) { //如果用户添加了元素
+ if (change) {
+ args.splice(3, 1, 0, "add", start, m - 2)
+ } else {
+ args.push("add", start, m - 2, 0)
+ }
+ change = true
+ }
+ if (change) { //返回被移除的元素
+ return mutateArray.apply(this, args)
+ } else {
+ return []
+ }
+ },
+ contains: function (el) { //判定是å¦åŒ…å«
+ return this.indexOf(el) !== -1
+ },
+ remove: function (el) { //移除第一个等于给定值的元素
+ return this.removeAt(this.indexOf(el))
+ },
+ removeAt: function (index) { //移除指定索引上的元素
+ if (index >= 0) {
+ this.$model.splice(index, 1)
+ return mutateArray.call(this, "del", index, 1, 0)
+ }
return []
- }
- },
- contains: function(el) { //判定是å¦åŒ…å«
- return this.indexOf(el) !== -1
- },
- remove: function(el) { //移除第一个等于给定值的元素
- return this.removeAt(this.indexOf(el))
- },
- removeAt: function(index) { //移除指定索引上的元素
- if (index >= 0) {
- this.$model.splice(index, 1)
- return mutateArray.call(this, "del", index, 1, 0)
- }
- return []
- },
- clear: function() {
- this.$model.length = this.length = this._.length = 0 //清空数组
- this._fire("clear", 0)
- return this
- },
- removeAll: function(all) { //移除N个元素
- if (Array.isArray(all)) {
- all.forEach(function(el) {
- this.remove(el)
- }, this)
- } else if (typeof all === "function") {
- for (var i = this.length - 1; i >= 0; i--) {
- var el = this[i]
- if (all(el, i)) {
- this.removeAt(i)
+ },
+ clear: function () {
+ recycleProxies(this.$proxy, "each")
+ this.$model.length = this.$proxy.length = this.length = this._.length = 0 //清空数组
+ this._fire("clear", 0)
+ return this
+ },
+ removeAll: function (all) { //移除N个元素
+ if (Array.isArray(all)) {
+ all.forEach(function (el) {
+ this.remove(el)
+ }, this)
+ } else if (typeof all === "function") {
+ for (var i = this.length - 1; i >= 0; i--) {
+ var el = this[i]
+ if (all(el, i)) {
+ this.removeAt(i)
+ }
}
+ } else {
+ this.clear()
}
- } else {
- this.clear()
- }
- },
- ensure: function(el) {
- if (!this.contains(el)) { //åªæœ‰ä¸å­˜åœ¨æ‰push
- this.push(el)
- }
- return this
- },
- set: function(index, val) {
- if (index >= 0) {
- var valueType = avalon.type(val)
- if (val && val.$model) {
- val = val.$model
- }
- var target = this[index]
- if (valueType === "object") {
- for (var i in val) {
- if (target.hasOwnProperty(i)) {
- target[i] = val[i]
+ },
+ ensure: function (el) {
+ if (!this.contains(el)) { //åªæœ‰ä¸å­˜åœ¨æ‰push
+ this.push(el)
+ }
+ return this
+ },
+ set: function (index, val) {
+ if (index >= 0) {
+ var valueType = avalon.type(val)
+ if (val && val.$model) {
+ val = val.$model
+ }
+ var target = this[index]
+ if (valueType === "object") {
+ for (var i in val) {
+ if (target.hasOwnProperty(i)) {
+ target[i] = val[i]
+ }
}
+ } else if (valueType === "array") {
+ target.clear().push.apply(target, val)
+ } else if (target !== val) {
+ this[index] = val
+ this.$model[index] = val
+ var proxy = this.$proxy[index]
+ if (proxy) {
+ notifySubscribers(proxy.$events.el)
+ }
+ // this._fire("set", index, val)
}
- } else if (valueType === "array") {
- target.clear().push.apply(target, val)
- } else if (target !== val) {
- this[index] = val
- this.$model[index] = val
- this._fire("set", index, val)
}
+ return this
+ }
+ }
+//相当于原æ¥bindingExecutors.repeat çš„index分支
+ function resetIndex(array, pos) {
+ var last = array.length - 1
+ for (var el; el = array[pos]; pos++) {
+ el.$index = pos
+ el.$first = pos === 0
+ el.$last = pos === last
}
- return this
}
-}
-function sortByIndex(array, indexes) {
- var map = {};
- for (var i = 0, n = indexes.length; i < n; i++) {
- map[i] = array[i] // preserve
- var j = indexes[i]
- if (j in map) {
- array[i] = map[j]
- delete map[j]
- } else {
- array[i] = array[j]
- }
- }
-}
-
-"sort,reverse".replace(rword, function(method) {
- CollectionPrototype[method] = function() {
- var newArray = this.$model//这是è¦æŽ’åºçš„新数组
- var oldArray = newArray.concat() //ä¿æŒåŽŸæ¥çŠ¶æ€çš„旧数组
- var mask = Math.random()
- var indexes = []
- var hasSort
- ap[method].apply(newArray, arguments) //排åº
- for (var i = 0, n = oldArray.length; i < n; i++) {
- var neo = newArray[i]
- var old = oldArray[i]
- if (isEqual(neo, old)) {
- indexes.push(i)
+ function sortByIndex(array, indexes) {
+ var map = {};
+ for (var i = 0, n = indexes.length; i < n; i++) {
+ map[i] = array[i] // preserve
+ var j = indexes[i]
+ if (j in map) {
+ array[i] = map[j]
+ delete map[j]
} else {
- var index = oldArray.indexOf(neo)
- indexes.push(index)//得到新数组的æ¯ä¸ªå…ƒç´ åœ¨æ—§æ•°ç»„对应的ä½ç½®
- oldArray[index] = mask //å±è”½å·²ç»æ‰¾è¿‡çš„元素
- hasSort = true
+ array[i] = array[j]
}
}
- if (hasSort) {
- sortByIndex(this, indexes)
- this._fire("move", indexes)
- this._fire("index", 0)
- }
- return this
}
-})
-
-/*********************************************************************
- * ä¾èµ–调度系统 *
- **********************************************************************/
-var ronduplex = /^(duplex|on)$/
-function registerSubscriber(data) {
- Registry[expose] = data //暴光此函数,方便collectSubscribers收集
- avalon.openComputedCollect = true
- var fn = data.evaluator
- if (fn) { //如果是求值函数
- try {
- var c = ronduplex.test(data.type) ? data : fn.apply(0, data.args)
- data.handler(c, data.element, data)
- } catch (e) {
- //log("warning:exception throwed in [registerSubscriber] " + e)
- delete data.evaluator
- var node = data.element
- if (node.nodeType === 3) {
- var parent = node.parentNode
- if (kernel.commentInterpolate) {
- parent.replaceChild(DOC.createComment(data.value), node)
+ "sort,reverse".replace(rword, function (method) {
+ CollectionPrototype[method] = function () {
+ var newArray = this.$model//这是è¦æŽ’åºçš„新数组
+ var oldArray = newArray.concat() //ä¿æŒåŽŸæ¥çŠ¶æ€çš„旧数组
+ var mask = Math.random()
+ var indexes = []
+ var hasSort
+ ap[method].apply(newArray, arguments) //排åº
+ for (var i = 0, n = oldArray.length; i < n; i++) {
+ var neo = newArray[i]
+ var old = oldArray[i]
+ if (isEqual(neo, old)) {
+ indexes.push(i)
} else {
- node.data = openTag + data.value + closeTag
+ var index = oldArray.indexOf(neo)
+ indexes.push(index)//得到新数组的æ¯ä¸ªå…ƒç´ åœ¨æ—§æ•°ç»„对应的ä½ç½®
+ oldArray[index] = mask //å±è”½å·²ç»æ‰¾è¿‡çš„元素
+ hasSort = true
}
}
+ if (hasSort) {
+ sortByIndex(this, indexes)
+ sortByIndex(this.$proxy, indexes)
+ this._fire("move", indexes)
+ resetIndex(this.$proxy, 0)
+ }
+ return this
}
+ })
+
+ /*********************************************************************
+ * ä¾èµ–调度系统 *
+ **********************************************************************/
+ var ronduplex = /^(duplex|on)$/
+
+ avalon.injectBinding = function (data) {
+ Registry[expose] = data //暴光此函数,方便collectSubscribers收集
+ avalon.openComputedCollect = true
+ var fn = data.evaluator
+ if (fn) { //如果是求值函数
+ try {
+ var c = ronduplex.test(data.type) ? data : fn.apply(0, data.args)
+ if (!data.noRefresh)
+ data.handler(c, data.element, data)
+ } catch (e) {
+ //log("warning:exception throwed in [avalon.injectBinding] " + e)
+ delete data.evaluator
+ var node = data.element
+ if (node.nodeType === 3) {
+ var parent = node.parentNode
+ if (kernel.commentInterpolate) {
+ parent.replaceChild(DOC.createComment(data.value), node)
+ } else {
+ node.data = openTag + data.value + closeTag
+ }
+ }
+ }
+ }
+ avalon.openComputedCollect = false
+ delete Registry[expose]
}
- avalon.openComputedCollect = false
- delete Registry[expose]
-}
-function collectSubscribers(list) { //收集ä¾èµ–于这个访问器的订阅者
- var data = Registry[expose]
- if (list && data && avalon.Array.ensure(list, data) && data.element) { //åªæœ‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ‰push进去
- addSubscribers(data, list)
+ function collectSubscribers(list) { //收集ä¾èµ–于这个访问器的订阅者
+ var data = Registry[expose]
+ if (list && data && avalon.Array.ensure(list, data) && data.element) { //åªæœ‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ‰push进去
+ addSubscribers(data, list)
+ }
}
-}
-function addSubscribers(data, list) {
- data.$uuid = data.$uuid || generateID()
- list.$uuid = list.$uuid || generateID()
- var obj = {
- data: data,
- list: list,
- $$uuid: data.$uuid + list.$uuid
- }
- if (!$$subscribers[obj.$$uuid]) {
- $$subscribers[obj.$$uuid] = 1
- $$subscribers.push(obj)
+ function addSubscribers(data, list) {
+ data.$uuid = data.$uuid || generateID()
+ list.$uuid = list.$uuid || generateID()
+ var obj = {
+ data: data,
+ list: list,
+ $$uuid: data.$uuid + list.$uuid
+ }
+ if (!$$subscribers[obj.$$uuid]) {
+ $$subscribers[obj.$$uuid] = 1
+ $$subscribers.push(obj)
+ }
}
-}
-function disposeData(data) {
- data.element = null
- data.rollback && data.rollback()
- for (var key in data) {
- data[key] = null
+ function disposeData(data) {
+ data.element = null
+ data.rollback && data.rollback()
+ for (var key in data) {
+ data[key] = null
+ }
}
-}
-function isRemove(el) {
- try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错
- if (!el.parentNode) {
+ function isRemove(el) {
+ try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错
+ if (!el.parentNode) {
+ return true
+ }
+ } catch (e) {
return true
}
- } catch (e) {
- return true
- }
- return el.msRetain ? 0 : (el.nodeType === 1 ? typeof el.sourceIndex === "number" ?
- el.sourceIndex === 0 : !root.contains(el) : !avalon.contains(root, el))
-}
-var $$subscribers = avalon.$$subscribers = []
-var beginTime = new Date()
-var oldInfo = {}
-function removeSubscribers() {
- var i = $$subscribers.length
- var n = i
- var k = 0
- var obj
- var types = []
- var newInfo = {}
- var needTest = {}
- while (obj = $$subscribers[--i]) {
- var data = obj.data
- var type = data.type
- if (newInfo[type]) {
- newInfo[type]++
- } else {
- newInfo[type] = 1
- types.push(type)
- }
+ return el.msRetain ? 0 : (el.nodeType === 1 ? typeof el.sourceIndex === "number" ?
+ el.sourceIndex === 0 : !root.contains(el) : !avalon.contains(root, el))
}
- var diff = false
- types.forEach(function(type) {
- if (oldInfo[type] !== newInfo[type]) {
- needTest[type] = 1
- diff = true
- }
- })
- i = n
- //avalon.log("需è¦æ£€æµ‹çš„个数 " + i)
- if (diff) {
- //avalon.log("有需è¦ç§»é™¤çš„元素")
+
+ var $$subscribers = avalon.$$subscribers = []
+ var beginTime = new Date()
+ var oldInfo = {}
+
+ function removeSubscribers() {
+ var i = $$subscribers.length
+ var n = i
+ var k = 0
+ var obj
+ var types = []
+ var newInfo = {}
+ var needTest = {}
while (obj = $$subscribers[--i]) {
var data = obj.data
- if (data.element === void 0)
- continue
- if (needTest[data.type] && isRemove(data.element)) { //如果它没有在DOM树
- k++
- $$subscribers.splice(i, 1)
- delete $$subscribers[obj.$$uuid]
- avalon.Array.remove(obj.list, data)
- //log("debug: remove " + data.type)
- disposeData(data)
- obj.data = obj.list = null
- }
- }
- }
- oldInfo = newInfo
- // avalon.log("å·²ç»ç§»é™¤çš„个数 " + k)
- beginTime = new Date()
-}
-
-function notifySubscribers(list) { //通知ä¾èµ–于这个访问器的订阅者更新自身
- if (list && list.length) {
- if (new Date() - beginTime > 444 && typeof list[0] === "object") {
- removeSubscribers()
- }
- var args = aslice.call(arguments, 1)
- for (var i = list.length, fn; fn = list[--i]; ) {
- var el = fn.element
- if (el && el.parentNode) {
- if (fn.$repeat) {
- fn.handler.apply(fn, args) //处ç†ç›‘控数组的方法
- } else if (fn.type !== "on") { //事件绑定åªèƒ½ç”±ç”¨æˆ·è§¦å‘,ä¸èƒ½ç”±ç¨‹åºè§¦å‘
- var fun = fn.evaluator || noop
- fn.handler(fun.apply(0, fn.args || []), el, fn)
+ var type = data.type
+ if (newInfo[type]) {
+ newInfo[type]++
+ } else {
+ newInfo[type] = 1
+ types.push(type)
+ }
+ }
+ var diff = false
+ types.forEach(function (type) {
+ if (oldInfo[type] !== newInfo[type]) {
+ needTest[type] = 1
+ diff = true
+ }
+ })
+ i = n
+ //avalon.log("需è¦æ£€æµ‹çš„个数 " + i)
+ if (diff) {
+ //avalon.log("有需è¦ç§»é™¤çš„元素")
+ while (obj = $$subscribers[--i]) {
+ data = obj.data
+ if (data.element === void 0)
+ continue
+ if (needTest[data.type] && isRemove(data.element)) { //如果它没有在DOM树
+ k++
+ $$subscribers.splice(i, 1)
+ delete $$subscribers[obj.$$uuid]
+ avalon.Array.remove(obj.list, data)
+ //log("debug: remove " + data.type)
+ disposeData(data)
+ obj.data = obj.list = null
}
}
}
+ oldInfo = newInfo
+ // avalon.log("å·²ç»ç§»é™¤çš„个数 " + k)
+ beginTime = new Date()
}
-}
-/************************************************************************
- * HTML处ç†(parseHTML, innerHTML, clearHTML) *
- **************************************************************************/
+ function notifySubscribers(list) { //通知ä¾èµ–于这个访问器的订阅者更新自身
+ if (list && list.length) {
+ if (new Date() - beginTime > 444 && typeof list[0] === "object") {
+ removeSubscribers()
+ }
+ var args = aslice.call(arguments, 1)
+ for (var i = list.length, fn; fn = list[--i];) {
+ var el = fn.element
+ if (el && el.parentNode) {
+ if (fn.$repeat) {
+ fn.handler.apply(fn, args) //处ç†ç›‘控数组的方法
+ } else if (fn.type !== "on") { //事件绑定åªèƒ½ç”±ç”¨æˆ·è§¦å‘,ä¸èƒ½ç”±ç¨‹åºè§¦å‘
+ var fun = fn.evaluator || noop
+ fn.handler(fun.apply(0, fn.args || []), el, fn)
+ }
+ }
+ }
+ }
+ }
+
+ /************************************************************************
+ * HTML处ç†(parseHTML, innerHTML, clearHTML) *
+ **************************************************************************/
//parseHTML的辅助å˜é‡
-var tagHooks = new function() {
- avalon.mix(this, {
- option: DOC.createElement("select"),
- thead: DOC.createElement("table"),
- td: DOC.createElement("tr"),
- area: DOC.createElement("map"),
- tr: DOC.createElement("tbody"),
- col: DOC.createElement("colgroup"),
- legend: DOC.createElement("fieldset"),
- _default: DOC.createElement("div"),
- "g": DOC.createElementNS("http://www.w3.org/2000/svg", "svg")
+ var tagHooks = new function () {// jshint ignore:line
+ avalon.mix(this, {
+ option: DOC.createElement("select"),
+ thead: DOC.createElement("table"),
+ td: DOC.createElement("tr"),
+ area: DOC.createElement("map"),
+ tr: DOC.createElement("tbody"),
+ col: DOC.createElement("colgroup"),
+ legend: DOC.createElement("fieldset"),
+ _default: DOC.createElement("div"),
+ "g": DOC.createElementNS("http://www.w3.org/2000/svg", "svg")
+ })
+ this.optgroup = this.option
+ this.tbody = this.tfoot = this.colgroup = this.caption = this.thead
+ this.th = this.td
+ }// jshint ignore:line
+
+ String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function (tag) {
+ tagHooks[tag] = tagHooks.g //处ç†SVG
})
- this.optgroup = this.option
- this.tbody = this.tfoot = this.colgroup = this.caption = this.thead
- this.th = this.td
-}
-
-tagHooks.optgroup = tagHooks.option
-tagHooks.tbody = tagHooks.tfoot = tagHooks.colgroup = tagHooks.caption = tagHooks.thead
-tagHooks.th = tagHooks.td
-
-String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function(tag) {
- tagHooks[tag] = tagHooks.g //处ç†SVG
-})
-var rtagName = /<([\w:]+)/
-var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig
-var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"])
-var script = DOC.createElement("script")
-
-avalon.parseHTML = function(html) {
- if (typeof html !== "string") {
- html = html + ""
- }
- html = html.replace(rxhtml, "<$1></$2>").trim()
- var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(),
- //å–得其标签å
+ var rtagName = /<([\w:]+)/
+ var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig
+ var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"])
+ var script = DOC.createElement("script")
+ var rhtml = /<|&#?\w+;/
+ avalon.parseHTML = function (html) {
+ var fragment = hyperspace.cloneNode(false)
+ if (typeof html !== "string") {
+ return fragment
+ }
+ if (!rhtml.test(html)) {
+ fragment.appendChild(DOC.createTextNode(html))
+ return fragment
+ }
+ html = html.replace(rxhtml, "<$1></$2>").trim()
+ var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(),
+ //å–得其标签å
wrapper = tagHooks[tag] || tagHooks._default,
- fragment = hyperspace.cloneNode(false),
firstChild
- wrapper.innerHTML = html
- var els = wrapper.getElementsByTagName("script")
- if (els.length) { //使用innerHTML生æˆçš„script节点ä¸ä¼šå‘出请求与执行text属性
- for (var i = 0, el; el = els[i++]; ) {
- if (scriptTypes[el.type]) {
- var neo = script.cloneNode(false) //FFä¸èƒ½çœç•¥å‚æ•°
- ap.forEach.call(el.attributes, function(attr) {
- neo.setAttribute(attr.name, attr.value)
- })
- neo.text = el.text
- el.parentNode.replaceChild(neo, el)
+ wrapper.innerHTML = html
+ var els = wrapper.getElementsByTagName("script")
+ if (els.length) { //使用innerHTML生æˆçš„script节点ä¸ä¼šå‘出请求与执行text属性
+ for (var i = 0, el; el = els[i++];) {
+ if (scriptTypes[el.type]) {
+ var neo = script.cloneNode(false) //FFä¸èƒ½çœç•¥å‚æ•°
+ ap.forEach.call(el.attributes, function (attr) {
+ neo.setAttribute(attr.name, attr.value)
+ })// jshint ignore:line
+ neo.text = el.text
+ el.parentNode.replaceChild(neo, el)
+ }
}
}
- }
- while (firstChild = wrapper.firstChild) { // å°†wrapper上的节点转移到文档碎片上ï¼
- fragment.appendChild(firstChild)
+ while (firstChild = wrapper.firstChild) { // å°†wrapper上的节点转移到文档碎片上ï¼
+ fragment.appendChild(firstChild)
+ }
+ return fragment
}
- return fragment
-}
-avalon.innerHTML = function(node, html) {
- var a = this.parseHTML(html)
- this.clearHTML(node).appendChild(a)
-}
+ avalon.innerHTML = function (node, html) {
+ var a = this.parseHTML(html)
+ this.clearHTML(node).appendChild(a)
+ }
-avalon.clearHTML = function(node) {
- node.textContent = ""
- while (node.firstChild) {
- node.removeChild(node.firstChild)
+ avalon.clearHTML = function (node) {
+ node.textContent = ""
+ while (node.firstChild) {
+ node.removeChild(node.firstChild)
+ }
+ return node
}
- return node
-}
-/*********************************************************************
- * 扫æ系统 *
- **********************************************************************/
-avalon.scan = function(elem, vmodel, group) {
- elem = elem || root
- var vmodels = vmodel ? [].concat(vmodel) : []
- scanTag(elem, vmodels)
-}
+ /*********************************************************************
+ * 扫æ系统 *
+ **********************************************************************/
+
+ avalon.scan = function (elem, vmodel) {
+ elem = elem || root
+ var vmodels = vmodel ? [].concat(vmodel) : []
+ scanTag(elem, vmodels)
+ }
//http://www.w3.org/TR/html5/syntax.html#void-elements
-var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase())
-
-function checkScan(elem, callback, innerHTML) {
- var id = setTimeout(function() {
- var currHTML = elem.innerHTML
- clearTimeout(id)
- if (currHTML === innerHTML) {
- callback()
- } else {
- checkScan(elem, callback, currHTML)
- }
- })
-}
+ var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase())
+
+ function checkScan(elem, callback, innerHTML) {
+ var id = setTimeout(function () {
+ var currHTML = elem.innerHTML
+ clearTimeout(id)
+ if (currHTML === innerHTML) {
+ callback()
+ } else {
+ checkScan(elem, callback, currHTML)
+ }
+ })
+ }
-function createSignalTower(elem, vmodel) {
- var id = elem.getAttribute("avalonctrl") || vmodel.$id
- elem.setAttribute("avalonctrl", id)
- vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]'
-}
+ function createSignalTower(elem, vmodel) {
+ var id = elem.getAttribute("avalonctrl") || vmodel.$id
+ elem.setAttribute("avalonctrl", id)
+ vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]'
+ }
-var getBindingCallback = function(elem, name, vmodels) {
- var callback = elem.getAttribute(name)
- if (callback) {
- for (var i = 0, vm; vm = vmodels[i++]; ) {
- if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") {
- return vm[callback]
+ var getBindingCallback = function (elem, name, vmodels) {
+ var callback = elem.getAttribute(name)
+ if (callback) {
+ for (var i = 0, vm; vm = vmodels[i++];) {
+ if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") {
+ return vm[callback]
+ }
}
}
}
-}
-function executeBindings(bindings, vmodels) {
- for (var i = 0, data; data = bindings[i++]; ) {
- data.vmodels = vmodels
- bindingHandlers[data.type](data, vmodels)
- if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数æ®ç»‘定,防止被二次解æž
- //chrome使用removeAttributeNode移除ä¸å­˜åœ¨çš„特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99
- data.element.removeAttribute(data.name)
+ function executeBindings(bindings, vmodels) {
+ for (var i = 0, data; data = bindings[i++];) {
+ data.vmodels = vmodels
+ bindingHandlers[data.type](data, vmodels)
+ if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数æ®ç»‘定,防止被二次解æž
+ //chrome使用removeAttributeNode移除ä¸å­˜åœ¨çš„特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99
+ data.element.removeAttribute(data.name)
+ }
}
+ bindings.length = 0
}
- bindings.length = 0
-}
//https://github.com/RubyLouvre/avalon/issues/636
-var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) {
- var node = elem.firstChild, text
- while (node) {
- var aaa = node.nextSibling
- if (node.nodeType === 3) {
- if (text) {
- text.nodeValue += node.nodeValue
- elem.removeChild(node)
+ var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) {
+ var node = elem.firstChild, text
+ while (node) {
+ var aaa = node.nextSibling
+ if (node.nodeType === 3) {
+ if (text) {
+ text.nodeValue += node.nodeValue
+ elem.removeChild(node)
+ } else {
+ text = node
+ }
} else {
- text = node
+ text = null
}
- } else {
- text = null
- }
- node = aaa
- }
-} : 0
-
-var rmsAttr = /ms-(\w+)-?(.*)/
-var priorityMap = {
- "if": 10,
- "repeat": 90,
- "data": 100,
- "widget": 110,
- "each": 1400,
- "with": 1500,
- "duplex": 2000,
- "on": 3000
-}
-
-var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit")
-var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled")
-function bindingSorter(a, b) {
- return a.priority - b.priority
-}
-
-function scanTag(elem, vmodels, node) {
- //扫æé¡ºåº ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100)
- //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)åž«åŽ
- var a = elem.getAttribute("ms-skip")
- var b = elem.getAttributeNode("ms-important")
- var c = elem.getAttributeNode("ms-controller")
- if (typeof a === "string") {
- return
- } else if (node = b || c) {
- var newVmodel = avalon.vmodels[node.value]
- if (!newVmodel) {
- return
+ node = aaa
}
- //ms-importantä¸åŒ…å«çˆ¶VM,ms-controller相å
- vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels)
- elem.removeAttribute(node.name) //removeAttributeNodeä¸ä¼šåˆ·æ–°[ms-controller]æ ·å¼è§„则
- elem.classList.remove(node.name)
- createSignalTower(elem, newVmodel)
- }
- scanAttr(elem, vmodels) //扫æ特性节点
-}
-function scanNodeList(parent, vmodels) {
- var node = parent.firstChild
- while (node) {
- var nextNode = node.nextSibling
- scanNode(node, node.nodeType, vmodels)
- node = nextNode
- }
-}
-
-function scanNodeArray(nodes, vmodels) {
- for (var i = 0, node; node = nodes[i++]; ) {
- scanNode(node, node.nodeType, vmodels)
- }
-}
-function scanNode(node, nodeType, vmodels) {
- if (nodeType === 1) {
- scanTag(node, vmodels) //扫æ元素节点
- } else if (nodeType === 3 && rexpr.test(node.data)){
- scanText(node, vmodels) //扫æ文本节点
- } else if (kernel.commentInterpolate && nodeType === 8 && !rexpr.test(node.nodeValue)) {
- scanText(node, vmodels) //扫æ注释节点
- }
-}
-function scanAttr(elem, vmodels) {
- //防止setAttribute, removeAttributeæ—¶ attributes自动被åŒæ­¥,导致for循环出错
- var attributes = elem.hasAttributes() ? avalon.slice(elem.attributes) : []
- var bindings = [],
- msData = {},
+ } : 0
+
+ var rmsAttr = /ms-(\w+)-?(.*)/
+ var priorityMap = {
+ "if": 10,
+ "repeat": 90,
+ "data": 100,
+ "widget": 110,
+ "each": 1400,
+ "with": 1500,
+ "duplex": 2000,
+ "on": 3000
+ }
+
+ var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit")
+ var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled")
+
+ function bindingSorter(a, b) {
+ return a.priority - b.priority
+ }
+
+ function scanAttr(elem, vmodels) {
+ //防止setAttribute, removeAttributeæ—¶ attributes自动被åŒæ­¥,导致for循环出错
+ var attributes = elem.hasAttributes() ? avalon.slice(elem.attributes) : []
+ var bindings = [],
+ msData = createMap(),
match
- for (var i = 0, attr; attr = attributes[i++]; ) {
- if (attr.specified) {
- if (match = attr.name.match(rmsAttr)) {
- //如果是以指定å‰ç¼€å‘½åçš„
- var type = match[1]
- var param = match[2] || ""
- var value = attr.value
- var name = attr.name
- msData[name] = value
- if (events[type]) {
- param = type
- type = "on"
- } else if (obsoleteAttrs[type]) {
- log("ms-" + type + "å·²ç»è¢«åºŸå¼ƒ,请使用ms-attr-*代替")
- if (type === "enabled") {//åƒæŽ‰ms-enabled绑定,用ms-disabled代替
- type = "disabled"
- value = "!(" + value + ")"
- }
- param = type
- type = "attr"
- elem.removeAttribute(name)
- name = "ms-attr-" + param
- elem.setAttribute(name, value)
- match = [name]
+ for (var i = 0, attr; attr = attributes[i++];) {
+ if (attr.specified) {
+ if (match = attr.name.match(rmsAttr)) {
+ //如果是以指定å‰ç¼€å‘½åçš„
+ var type = match[1]
+ var param = match[2] || ""
+ var value = attr.value
+ var name = attr.name
msData[name] = value
- }
- if (typeof bindingHandlers[type] === "function") {
- var binding = {
- type: type,
- param: param,
- element: elem,
- name: match[0],
- value: value,
- priority: type in priorityMap ? priorityMap[type] : type.charCodeAt(0) * 10 + (Number(param) || 0)
- }
- if (type === "html" || type === "text") {
- var token = getToken(value)
- avalon.mix(binding, token)
- binding.filters = binding.filters.replace(rhasHtml, function() {
- binding.type = "html"
- binding.group = 1
- return ""
- })
- }
- if (name === "ms-if-loop") {
- binding.priority += 100
+ if (events[type]) {
+ param = type
+ type = "on"
+ } else if (obsoleteAttrs[type]) {
+ log("warning!请改用ms-attr-" + type + "代替ms-" + type + "ï¼")
+ if (type === "enabled") {//åƒæŽ‰ms-enabled绑定,用ms-disabled代替
+ log("warning!ms-enabled或ms-attr-enabledå·²ç»è¢«åºŸå¼ƒ")
+ type = "disabled"
+ value = "!(" + value + ")"
+ }
+ param = type
+ type = "attr"
+ elem.removeAttribute(name)
+ name = "ms-attr-" + param
+ elem.setAttribute(name, value)
+ match = [name]
+ msData[name] = value
}
- if (vmodels.length) {
- bindings.push(binding)
- if (type === "widget") {
- elem.msData = elem.msData || msData
+ if (typeof bindingHandlers[type] === "function") {
+ var binding = {
+ type: type,
+ param: param,
+ element: elem,
+ name: match[0],
+ value: value,
+ priority: type in priorityMap ? priorityMap[type] : type.charCodeAt(0) * 10 + (Number(param) || 0)
+ }
+ if (type === "html" || type === "text") {
+ var token = getToken(value)
+ avalon.mix(binding, token)
+ binding.filters = binding.filters.replace(rhasHtml, function () {
+ binding.type = "html"
+ binding.group = 1
+ return ""
+ })// jshint ignore:line
+ }
+ if (name === "ms-if-loop") {
+ binding.priority += 100
+ }
+ if (vmodels.length) {
+ bindings.push(binding)
+ if (type === "widget") {
+ elem.msData = elem.msData || msData
+ }
}
}
}
}
}
+ var control = elem.type
+ if (control && msData["ms-duplex"]) {
+ if (msData["ms-attr-checked"] && /radio|checkbox/.test(control)) {
+ log("warning!" + control + "控件ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-checked与ms-duplex")
+ }
+ if (msData["ms-attr-value"] && /text|password/.test(control)) {
+ log("warning!" + control + "控件ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-value与ms-duplex")
+ }
+ }
+ bindings.sort(bindingSorter)
+ var scanNode = true
+ for (i = 0; binding = bindings[i]; i++) {
+ type = binding.type
+ if (rnoscanAttrBinding.test(type)) {
+ return executeBindings(bindings.slice(0, i + 1), vmodels)
+ } else if (scanNode) {
+ scanNode = !rnoscanNodeBinding.test(type)
+ }
+ }
+ executeBindings(bindings, vmodels)
+ if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML + elem.textContent)) {
+ mergeTextNodes && mergeTextNodes(elem)
+ scanNodeList(elem, vmodels) //扫æå­å­™å…ƒç´ 
+ }
}
- if (msData["ms-attr-checked"] && msData["ms-duplex"]) {
- log("warning!一个元素上ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-checked与ms-duplex")
+
+ var rnoscanAttrBinding = /^if|widget|repeat$/
+ var rnoscanNodeBinding = /^each|with|html|include$/
+
+ function scanNodeList(parent, vmodels) {
+ var node = parent.firstChild
+ while (node) {
+ var nextNode = node.nextSibling
+ scanNode(node, node.nodeType, vmodels)
+ node = nextNode
+ }
}
- bindings.sort(bindingSorter)
- var scanNode = true
- for (var i = 0, binding; binding = bindings[i]; i++) {
- var type = binding.type
- if (rnoscanAttrBinding.test(type)) {
- return executeBindings(bindings.slice(0, i + 1), vmodels)
- } else if (scanNode) {
- scanNode = !rnoscanNodeBinding.test(type)
+
+ function scanNodeArray(nodes, vmodels) {
+ for (var i = 0, node; node = nodes[i++];) {
+ scanNode(node, node.nodeType, vmodels)
}
}
- executeBindings(bindings, vmodels)
- if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML + elem.textContent)) {
- mergeTextNodes && mergeTextNodes(elem)
- scanNodeList(elem, vmodels) //扫æå­å­™å…ƒç´ 
+
+ function scanNode(node, nodeType, vmodels) {
+ if (nodeType === 1) {
+ scanTag(node, vmodels) //扫æ元素节点
+ if (node.msCallback) {
+ node.msCallback()
+ node.msCallback = void 0
+ }
+ } else if (nodeType === 3 && rexpr.test(node.data)) {
+ scanText(node, vmodels) //扫æ文本节点
+ } else if (kernel.commentInterpolate && nodeType === 8 && !rexpr.test(node.nodeValue)) {
+ scanText(node, vmodels) //扫æ注释节点
+ }
}
-}
-var rnoscanAttrBinding = /^if|widget|repeat$/
-var rnoscanNodeBinding = /^each|with|html|include$/
-var rhasHtml = /\|\s*html\s*/,
+ function scanTag(elem, vmodels, node) {
+ //扫æé¡ºåº ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100)
+ //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)åž«åŽ
+ var a = elem.getAttribute("ms-skip")
+ var b = elem.getAttributeNode("ms-important")
+ var c = elem.getAttributeNode("ms-controller")
+ if (typeof a === "string") {
+ return
+ } else if (node = b || c) {
+ var newVmodel = avalon.vmodels[node.value]
+ if (!newVmodel) {
+ return
+ }
+ //ms-importantä¸åŒ…å«çˆ¶VM,ms-controller相å
+ vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels)
+ elem.removeAttribute(node.name) //removeAttributeNodeä¸ä¼šåˆ·æ–°[ms-controller]æ ·å¼è§„则
+ elem.classList.remove(node.name)
+ createSignalTower(elem, newVmodel)
+ }
+ scanAttr(elem, vmodels) //扫æ特性节点
+ }
+
+ var rhasHtml = /\|\s*html\s*/,
r11a = /\|\|/g,
rlt = /&lt;/g,
- rgt = /&gt;/g
+ rgt = /&gt;/g,
+ rstringLiteral = /(['"])(\\\1|.)+?\1/g
-function getToken(value) {
- if (value.indexOf("|") > 0) {
- var index = value.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或
- if (index > -1) {
- return {
- filters: value.slice(index),
- value: value.slice(0, index),
- expr: true
+ function getToken(value) {
+ if (value.indexOf("|") > 0) {
+ var scapegoat = value.replace(rstringLiteral, function (_) {
+ return Array(_.length + 1).join("1")// jshint ignore:line
+ })
+ var index = scapegoat.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或
+ if (index > -1) {
+ return {
+ filters: value.slice(index),
+ value: value.slice(0, index),
+ expr: true
+ }
}
}
+ return {
+ value: value,
+ filters: "",
+ expr: true
+ }
}
- return {
- value: value,
- filters: "",
- expr: true
- }
-}
-function scanExpr(str) {
- var tokens = [],
+ function scanExpr(str) {
+ var tokens = [],
value, start = 0,
stop
- do {
- stop = str.indexOf(openTag, start)
- if (stop === -1) {
- break
- }
- value = str.slice(start, stop)
- if (value) { // {{ 左边的文本
+ do {
+ stop = str.indexOf(openTag, start)
+ if (stop === -1) {
+ break
+ }
+ value = str.slice(start, stop)
+ if (value) { // {{ 左边的文本
+ tokens.push({
+ value: value,
+ filters: "",
+ expr: false
+ })
+ }
+ start = stop + openTag.length
+ stop = str.indexOf(closeTag, start)
+ if (stop === -1) {
+ break
+ }
+ value = str.slice(start, stop)
+ if (value) { //处ç†{{ }}æ’值表达å¼
+ tokens.push(getToken(value))
+ }
+ start = stop + closeTag.length
+ } while (1)
+ value = str.slice(start)
+ if (value) { //}} å³è¾¹çš„文本
tokens.push({
value: value,
- filters: "",
- expr: false
+ expr: false,
+ filters: ""
})
}
- start = stop + openTag.length
- stop = str.indexOf(closeTag, start)
- if (stop === -1) {
- break
- }
- value = str.slice(start, stop)
- if (value) { //处ç†{{ }}æ’值表达å¼
- tokens.push(getToken(value))
- }
- start = stop + closeTag.length
- } while (1)
- value = str.slice(start)
- if (value) { //}} å³è¾¹çš„文本
- tokens.push({
- value: value,
- expr: false,
- filters: ""
- })
+ return tokens
}
- return tokens
-}
-function scanText(textNode, vmodels) {
- var bindings = []
- if (textNode.nodeType === 8) {
- var token = getToken(textNode.nodeValue)
- var tokens = [token]
- } else {
- tokens = scanExpr(textNode.data)
- }
- if (tokens.length) {
- for (var i = 0, token; token = tokens[i++]; ) {
- var node = DOC.createTextNode(token.value) //将文本转æ¢ä¸ºæ–‡æœ¬èŠ‚点,并替æ¢åŽŸæ¥çš„文本节点
- if (token.expr) {
- token.type = "text"
- token.element = node
- token.filters = token.filters.replace(rhasHtml, function() {
- token.type = "html"
- token.group = 1
- return ""
- })
- bindings.push(token) //收集带有æ’值表达å¼çš„文本
+ function scanText(textNode, vmodels) {
+ var bindings = []
+ if (textNode.nodeType === 8) {
+ var token = getToken(textNode.nodeValue)
+ var tokens = [token]
+ } else {
+ tokens = scanExpr(textNode.data)
+ }
+ if (tokens.length) {
+ for (var i = 0; token = tokens[i++];) {
+ var node = DOC.createTextNode(token.value) //将文本转æ¢ä¸ºæ–‡æœ¬èŠ‚点,并替æ¢åŽŸæ¥çš„文本节点
+ if (token.expr) {
+ token.type = "text"
+ token.element = node
+ token.filters = token.filters.replace(rhasHtml, function () {
+ token.type = "html"
+ token.group = 1
+ return ""
+ })// jshint ignore:line
+ bindings.push(token) //收集带有æ’值表达å¼çš„文本
+ }
+ hyperspace.appendChild(node)
}
- hyperspace.appendChild(node)
+ textNode.parentNode.replaceChild(hyperspace, textNode)
+ if (bindings.length)
+ executeBindings(bindings, vmodels)
}
- textNode.parentNode.replaceChild(hyperspace, textNode)
- if (bindings.length)
- executeBindings(bindings, vmodels)
}
-}
+ /*********************************************************************
+ * avalon的原型方法定义区 *
+ **********************************************************************/
-/*********************************************************************
- * avalon的原型方法定义区 *
- **********************************************************************/
-function hyphen(target) {
- //转æ¢ä¸ºè¿žå­—符线风格
- return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase()
-}
-function camelize(target) {
- //转æ¢ä¸ºé©¼å³°é£Žæ ¼
- if (target.indexOf("-") < 0 && target.indexOf("_") < 0) {
- return target //æå‰åˆ¤æ–­ï¼Œæ高getStyle等的效率
+ function hyphen(target) {
+ //转æ¢ä¸ºè¿žå­—符线风格
+ return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase()
}
- return target.replace(/[-_][^-_]/g, function(match) {
- return match.charAt(1).toUpperCase()
- })
-}
-
-"add,remove".replace(rword, function(method) {
- avalon.fn[method + "Class"] = function(cls) {
- var el = this[0]
- //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26
- if (cls && typeof cls === "string" && el && el.nodeType === 1) {
- cls.replace(/\S+/g, function(c) {
- el.classList[method](c)
- })
+
+ function camelize(target) {
+ //转æ¢ä¸ºé©¼å³°é£Žæ ¼
+ if (target.indexOf("-") < 0 && target.indexOf("_") < 0) {
+ return target //æå‰åˆ¤æ–­ï¼Œæ高getStyle等的效率
}
- return this
+ return target.replace(/[-_][^-_]/g, function (match) {
+ return match.charAt(1).toUpperCase()
+ })
}
-})
-
-avalon.fn.mix({
- hasClass: function(cls) {
- var el = this[0] || {} //IE10+, chrome8+, firefox3.6+, safari5.1+,opera11.5+支æŒclassList,chrome24+,firefox26+支æŒclassList2.0
- return el.nodeType === 1 && el.classList.contains(cls)
- },
- toggleClass: function(value, stateVal) {
- var className, i = 0
- var classNames = value.split(/\s+/)
- var isBool = typeof stateVal === "boolean"
- while ((className = classNames[i++])) {
- var state = isBool ? stateVal : !this.hasClass(className)
- this[state ? "addClass" : "removeClass"](className)
+
+ "add,remove".replace(rword, function (method) {
+ avalon.fn[method + "Class"] = function (cls) {
+ var el = this[0]
+ //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26
+ if (cls && typeof cls === "string" && el && el.nodeType === 1) {
+ cls.replace(/\S+/g, function (c) {
+ el.classList[method](c)
+ })
+ }
+ return this
}
- return this
- },
- attr: function(name, value) {
- if (arguments.length === 2) {
- this[0].setAttribute(name, value)
+ })
+
+ avalon.fn.mix({
+ hasClass: function (cls) {
+ var el = this[0] || {} //IE10+, chrome8+, firefox3.6+, safari5.1+,opera11.5+支æŒclassList,chrome24+,firefox26+支æŒclassList2.0
+ return el.nodeType === 1 && el.classList.contains(cls)
+ },
+ toggleClass: function (value, stateVal) {
+ var className, i = 0
+ var classNames = String(value).split(/\s+/)
+ var isBool = typeof stateVal === "boolean"
+ while ((className = classNames[i++])) {
+ var state = isBool ? stateVal : !this.hasClass(className)
+ this[state ? "addClass" : "removeClass"](className)
+ }
return this
- } else {
- return this[0].getAttribute(name)
- }
- },
- data: function(name, value) {
- name = "data-" + hyphen(name || "")
- switch (arguments.length) {
- case 2:
- this.attr(name, value)
+ },
+ attr: function (name, value) {
+ if (arguments.length === 2) {
+ this[0].setAttribute(name, value)
return this
- case 1:
- var val = this.attr(name)
- return parseData(val)
- case 0:
- var ret = {}
- ap.forEach.call(this[0].attributes, function(attr) {
- if (attr) {
- name = attr.name
- if (!name.indexOf("data-")) {
- name = camelize(name.slice(5))
- ret[name] = parseData(attr.value)
+ } else {
+ return this[0].getAttribute(name)
+ }
+ },
+ data: function (name, value) {
+ name = "data-" + hyphen(name || "")
+ switch (arguments.length) {
+ case 2:
+ this.attr(name, value)
+ return this
+ case 1:
+ var val = this.attr(name)
+ return parseData(val)
+ case 0:
+ var ret = {}
+ ap.forEach.call(this[0].attributes, function (attr) {
+ if (attr) {
+ name = attr.name
+ if (!name.indexOf("data-")) {
+ name = camelize(name.slice(5))
+ ret[name] = parseData(attr.value)
+ }
}
- }
- })
- return ret
- }
- },
- removeData: function(name) {
- name = "data-" + hyphen(name)
- this[0].removeAttribute(name)
- return this
- },
- css: function(name, value) {
- if (avalon.isPlainObject(name)) {
- for (var i in name) {
- avalon.css(this, i, name[i])
+ })
+ return ret
}
- } else {
- var ret = avalon.css(this, name, value)
- }
- return ret !== void 0 ? ret : this
- },
- position: function() {
- var offsetParent, offset,
+ },
+ removeData: function (name) {
+ name = "data-" + hyphen(name)
+ this[0].removeAttribute(name)
+ return this
+ },
+ css: function (name, value) {
+ if (avalon.isPlainObject(name)) {
+ for (var i in name) {
+ avalon.css(this, i, name[i])
+ }
+ } else {
+ var ret = avalon.css(this, name, value)
+ }
+ return ret !== void 0 ? ret : this
+ },
+ position: function () {
+ var offsetParent, offset,
elem = this[0],
parentOffset = {
top: 0,
left: 0
};
- if (!elem) {
- return
+ if (!elem) {
+ return
+ }
+ if (this.css("position") === "fixed") {
+ offset = elem.getBoundingClientRect()
+ } else {
+ offsetParent = this.offsetParent() //得到真正的offsetParent
+ offset = this.offset() // 得到正确的offsetParent
+ if (offsetParent[0].tagName !== "HTML") {
+ parentOffset = offsetParent.offset()
+ }
+ parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true)
+ parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true)
+ // Subtract offsetParent scroll positions
+ parentOffset.top -= offsetParent.scrollTop()
+ parentOffset.left -= offsetParent.scrollLeft()
+ }
+ return {
+ top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true),
+ left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true)
+ }
+ },
+ offsetParent: function () {
+ var offsetParent = this[0].offsetParent
+ while (offsetParent && avalon.css(offsetParent, "position") === "static") {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return avalon(offsetParent || root)
+ },
+ bind: function (type, fn, phase) {
+ if (this[0]) { //此方法ä¸ä¼šé“¾
+ return avalon.bind(this[0], type, fn, phase)
+ }
+ },
+ unbind: function (type, fn, phase) {
+ if (this[0]) {
+ avalon.unbind(this[0], type, fn, phase)
+ }
+ return this
+ },
+ val: function (value) {
+ var node = this[0]
+ if (node && node.nodeType === 1) {
+ var get = arguments.length === 0
+ var access = get ? ":get" : ":set"
+ var fn = valHooks[getValType(node) + access]
+ if (fn) {
+ var val = fn(node, value)
+ } else if (get) {
+ return (node.value || "").replace(/\r/g, "")
+ } else {
+ node.value = value
+ }
+ }
+ return get ? val : this
}
- if (this.css("position") === "fixed") {
- offset = elem.getBoundingClientRect()
- } else {
- offsetParent = this.offsetParent() //得到真正的offsetParent
- offset = this.offset() // 得到正确的offsetParent
- if (offsetParent[0].tagName !== "HTML") {
- parentOffset = offsetParent.offset()
+ })
+
+ if (root.dataset) {
+ avalon.fn.data = function (name, val) {
+ name = name && camelize(name)
+ var dataset = this[0].dataset
+ switch (arguments.length) {
+ case 2:
+ dataset[name] = val
+ return this
+ case 1:
+ val = dataset[name]
+ return parseData(val)
+ case 0:
+ var ret = createMap()
+ for (name in dataset) {
+ ret[name] = parseData(dataset[name])
+ }
+ return ret
}
- parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true)
- parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true)
}
- return {
- top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true),
- left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true)
- }
- },
- offsetParent: function() {
- var offsetParent = this[0].offsetParent
- while (offsetParent && avalon.css(offsetParent, "position") === "static") {
- offsetParent = offsetParent.offsetParent;
- }
- return avalon(offsetParent)
- },
- bind: function(type, fn, phase) {
- if (this[0]) { //此方法ä¸ä¼šé“¾
- return avalon.bind(this[0], type, fn, phase)
- }
- },
- unbind: function(type, fn, phase) {
- if (this[0]) {
- avalon.unbind(this[0], type, fn, phase)
+ }
+ var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/
+ avalon.parseJSON = JSON.parse
+
+ function parseData(data) {
+ try {
+ if (typeof data === "object")
+ return data
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data
+ } catch (e) {
}
- return this
- },
- val: function(value) {
- var node = this[0]
- if (node && node.nodeType === 1) {
- var get = arguments.length === 0
- var access = get ? ":get" : ":set"
- var fn = valHooks[getValType(node) + access]
- if (fn) {
- var val = fn(node, value)
- } else if (get) {
- return (node.value || "").replace(/\r/g, "")
+ return data
+ }
+
+ avalon.each({
+ scrollLeft: "pageXOffset",
+ scrollTop: "pageYOffset"
+ }, function (method, prop) {
+ avalon.fn[method] = function (val) {
+ var node = this[0] || {}, win = getWindow(node),
+ top = method === "scrollTop"
+ if (!arguments.length) {
+ return win ? win[prop] : node[method]
} else {
- node.value = value
+ if (win) {
+ win.scrollTo(!top ? val : win[prop], top ? val : win[prop])
+ } else {
+ node[method] = val
+ }
}
}
- return get ? val : this
+ })
+
+ function getWindow(node) {
+ return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView : false
}
-})
-if (root.dataset) {
- avalon.fn.data = function(name, val) {
- var dataset = this[0].dataset
- switch (arguments.length) {
- case 2:
- dataset[name] = val
- return this
- case 1:
- val = dataset[name]
- return parseData(val)
- case 0:
- var ret = {}
- for (var name in dataset) {
- ret[name] = parseData(dataset[name])
- }
- return ret
+//=============================css相关==================================
+ var cssHooks = avalon.cssHooks = createMap()
+ var prefixes = ["", "-webkit-", "-moz-", "-ms-"] //去掉opera-15的支æŒ
+ var cssMap = {
+ "float": "cssFloat"
+ }
+ avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom")
+
+ avalon.cssName = function (name, host, camelCase) {
+ if (cssMap[name]) {
+ return cssMap[name]
+ }
+ host = host || root.style
+ for (var i = 0, n = prefixes.length; i < n; i++) {
+ camelCase = camelize(prefixes[i] + name)
+ if (camelCase in host) {
+ return (cssMap[name] = camelCase)
+ }
}
+ return null
+ }
+ cssHooks["@:set"] = function (node, name, value) {
+ node.style[name] = value
}
-}
-var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/
-avalon.parseJSON = JSON.parse
-function parseData(data) {
- try {
- if (typeof data === "object")
- return data
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data
- } catch (e) {
- }
- return data
-}
-avalon.each({
- scrollLeft: "pageXOffset",
- scrollTop: "pageYOffset"
-}, function(method, prop) {
- avalon.fn[method] = function(val) {
- var node = this[0] || {}, win = getWindow(node),
- top = method === "scrollTop"
- if (!arguments.length) {
- return win ? win[prop] : node[method]
- } else {
- if (win) {
- win.scrollTo(!top ? val : avalon(win).scrollLeft(), top ? val : avalon(win).scrollTop())
- } else {
- node[method] = val
+ cssHooks["@:get"] = function (node, name) {
+ if (!node || !node.style) {
+ throw new Error("getComputedStyleè¦æ±‚传入一个节点 " + node)
+ }
+ var ret, computed = getComputedStyle(node)
+ if (computed) {
+ ret = name === "filter" ? computed.getPropertyValue(name) : computed[name]
+ if (ret === "") {
+ ret = node.style[name] //其他æµè§ˆå™¨éœ€è¦æˆ‘们手动å–内è”æ ·å¼
}
}
+ return ret
+ }
+ cssHooks["opacity:get"] = function (node) {
+ var ret = cssHooks["@:get"](node, "opacity")
+ return ret === "" ? "1" : ret
}
-})
-function getWindow(node) {
- return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView : false
-}
+ "top,left".replace(rword, function (name) {
+ cssHooks[name + ":get"] = function (node) {
+ var computed = cssHooks["@:get"](node, name)
+ return /px$/.test(computed) ? computed :
+ avalon(node).position()[name] + "px"
+ }
+ })
+ var cssShow = {
+ position: "absolute",
+ visibility: "hidden",
+ display: "block"
+ }
+ var rdisplayswap = /^(none|table(?!-c[ea]).+)/
+
+ function showHidden(node, array) {
+ //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html
+ if (node.offsetWidth <= 0) { //opera.offsetWidthå¯èƒ½å°äºŽ0
+ var styles = getComputedStyle(node, null)
+ if (rdisplayswap.test(styles["display"])) {
+ var obj = {
+ node: node
+ }
+ for (var name in cssShow) {
+ obj[name] = styles[name]
+ node.style[name] = cssShow[name]
+ }
+ array.push(obj)
+ }
+ var parent = node.parentNode
+ if (parent && parent.nodeType === 1) {
+ showHidden(parent, array)
+ }
+ }
+ }
-//=============================css相关==================================
-var cssHooks = avalon.cssHooks = {}
-var prefixes = ["", "-webkit-", "-moz-", "-ms-"]//去掉opera-15的支æŒ
-var cssMap = {
- "float": "cssFloat"
-}
-avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom")
-
-avalon.cssName = function(name, host, camelCase) {
- if (cssMap[name]) {
- return cssMap[name]
- }
- host = host || root.style
- for (var i = 0, n = prefixes.length; i < n; i++) {
- camelCase = camelize(prefixes[i] + name)
- if (camelCase in host) {
- return (cssMap[name] = camelCase)
- }
- }
- return null
-}
-cssHooks["@:set"] = function(node, name, value) {
- node.style[name] = value
-}
-
-cssHooks["@:get"] = function(node, name) {
- if (!node || !node.style) {
- throw new Error("getComputedStyleè¦æ±‚传入一个节点 " + node)
- }
- var ret, computed = getComputedStyle(node, null)
- if (computed) {
- ret = name === "filter" ? computed.getPropertyValue(name) : computed[name]
- if (ret === "") {
- ret = node.style[name] //其他æµè§ˆå™¨éœ€è¦æˆ‘们手动å–内è”æ ·å¼
- }
- }
- return ret
-}
-cssHooks["opacity:get"] = function(node) {
- var ret = cssHooks["@:get"](node, "opacity")
- return ret === "" ? "1" : ret
-}
-
-"top,left".replace(rword, function(name) {
- cssHooks[name + ":get"] = function(node) {
- var computed = cssHooks["@:get"](node, name)
- return /px$/.test(computed) ? computed :
- avalon(node).position()[name] + "px"
- }
-})
-var cssShow = {
- position: "absolute",
- visibility: "hidden",
- display: "block"
-}
-var rdisplayswap = /^(none|table(?!-c[ea]).+)/
-
-function showHidden(node, array) {
- //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html
- if (node.offsetWidth <= 0) { //opera.offsetWidthå¯èƒ½å°äºŽ0
- var styles = getComputedStyle(node, null)
- if (rdisplayswap.test(styles["display"])) {
- var obj = {
- node: node
- }
- for (var name in cssShow) {
- obj[name] = styles[name]
- node.style[name] = cssShow[name]
- }
- array.push(obj)
- }
- var parent = node.parentNode
- if (parent && parent.nodeType === 1) {
- showHidden(parent, array)
- }
- }
-}
-
-"Width,Height".replace(rword, function(name) {//fix 481
- var method = name.toLowerCase(),
+ "Width,Height".replace(rword, function (name) { //fix 481
+ var method = name.toLowerCase(),
clientProp = "client" + name,
scrollProp = "scroll" + name,
offsetProp = "offset" + name
- cssHooks[method + ":get"] = function(node, which, override) {
- var boxSizing = -4
- if (typeof override === "number") {
- boxSizing = override
- }
- which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"]
- var ret = node[offsetProp] // border-box 0
- if (boxSizing === 2) { // margin-box 2
+ cssHooks[method + ":get"] = function (node, which, override) {
+ var boxSizing = -4
+ if (typeof override === "number") {
+ boxSizing = override
+ }
+ which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"]
+ var ret = node[offsetProp] // border-box 0
+ if (boxSizing === 2) { // margin-box 2
+ return ret + avalon.css(node, "margin" + which[0], true) + avalon.css(node, "margin" + which[1], true)
+ }
+ if (boxSizing < 0) { // padding-box -2
+ ret = ret - avalon.css(node, "border" + which[0] + "Width", true) - avalon.css(node, "border" + which[1] + "Width", true)
+ }
+ if (boxSizing === -4) { // content-box -4
+ ret = ret - avalon.css(node, "padding" + which[0], true) - avalon.css(node, "padding" + which[1], true)
+ }
return ret
- + avalon.css(node, "margin" + which[0], true)
- + avalon.css(node, "margin" + which[1], true)
- }
- if (boxSizing < 0) { // padding-box -2
- ret = ret
- - avalon.css(node, "border" + which[0] + "Width", true)
- - avalon.css(node, "border" + which[1] + "Width", true)
}
- if (boxSizing === -4) { // content-box -4
- ret = ret
- - avalon.css(node, "padding" + which[0], true)
- - avalon.css(node, "padding" + which[1], true)
+ cssHooks[method + "&get"] = function (node) {
+ var hidden = [];
+ showHidden(node, hidden);
+ var val = cssHooks[method + ":get"](node)
+ for (var i = 0, obj; obj = hidden[i++];) {
+ node = obj.node
+ for (var n in obj) {
+ if (typeof obj[n] === "string") {
+ node.style[n] = obj[n]
+ }
+ }
+ }
+ return val;
}
- return ret
- }
- cssHooks[method + "&get"] = function(node) {
- var hidden = [];
- showHidden(node, hidden);
- var val = cssHooks[method + ":get"](node)
- for (var i = 0, obj; obj = hidden[i++]; ) {
- node = obj.node
- for (var n in obj) {
- if (typeof obj[n] === "string") {
- node.style[n] = obj[n]
+ avalon.fn[method] = function (value) { //会忽视其display
+ var node = this[0]
+ if (arguments.length === 0) {
+ if (node.setTimeout) { //å–得窗å£å°ºå¯¸,IE9åŽå¯ä»¥ç”¨node.innerWidth /innerHeight代替
+ return node["inner" + name]
}
+ if (node.nodeType === 9) { //å–得页é¢å°ºå¯¸
+ var doc = node.documentElement
+ //FF chrome html.scrollHeight< body.scrollHeight
+ //IE æ ‡å‡†æ¨¡å¼ : html.scrollHeight> body.scrollHeight
+ //IE æ€ªå¼‚æ¨¡å¼ : html.scrollHeight 最大等于å¯è§†çª—å£å¤šä¸€ç‚¹ï¼Ÿ
+ return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp])
+ }
+ return cssHooks[method + "&get"](node)
+ } else {
+ return this.css(method, value)
}
}
- return val;
- }
- avalon.fn[method] = function(value) { //会忽视其display
+ avalon.fn["inner" + name] = function () {
+ return cssHooks[method + ":get"](this[0], void 0, -2)
+ }
+ avalon.fn["outer" + name] = function (includeMargin) {
+ return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0)
+ }
+ })
+ avalon.fn.offset = function () { //å–å¾—è·ç¦»é¡µé¢å·¦å³è§’çš„åæ ‡
var node = this[0]
- if (arguments.length === 0) {
- if (node.setTimeout) { //å–得窗å£å°ºå¯¸,IE9åŽå¯ä»¥ç”¨node.innerWidth /innerHeight代替
- return node["inner" + name] || node.document.documentElement[clientProp]
- }
- if (node.nodeType === 9) { //å–得页é¢å°ºå¯¸
- var doc = node.documentElement
- //FF chrome html.scrollHeight< body.scrollHeight
- //IE æ ‡å‡†æ¨¡å¼ : html.scrollHeight> body.scrollHeight
- //IE æ€ªå¼‚æ¨¡å¼ : html.scrollHeight 最大等于å¯è§†çª—å£å¤šä¸€ç‚¹ï¼Ÿ
- return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp])
- }
- return cssHooks[method + "&get"](node)
- } else {
- return this.css(method, value)
+ try {
+ var rect = node.getBoundingClientRect()
+ // Make sure element is not hidden (display: none) or disconnected
+ // https://github.com/jquery/jquery/pull/2043/files#r23981494
+ if (rect.width || rect.height || node.getClientRects().length) {
+ var doc = node.ownerDocument
+ var root = doc.documentElement
+ var win = doc.defaultView
+ return {
+ top: rect.top + win.pageYOffset - root.clientTop,
+ left: rect.left + win.pageXOffset - root.clientLeft
+ }
+ }
+ } catch (e) {
+ return {
+ left: 0,
+ top: 0
+ }
}
}
- avalon.fn["inner" + name] = function() {
- return cssHooks[method + ":get"](this[0], void 0, -2)
- }
- avalon.fn["outer" + name] = function(includeMargin) {
- return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0)
- }
-})
-avalon.fn.offset = function() { //å–å¾—è·ç¦»é¡µé¢å·¦å³è§’çš„åæ ‡
- var node = this[0], box = {
- left: 0,
- top: 0
- }
- if (!node || !node.tagName || !node.ownerDocument) {
- return box
- }
- var doc = node.ownerDocument,
- root = doc.documentElement,
- win = doc.defaultView
- if (!root.contains(node)) {
- return box
- }
- if (node.getBoundingClientRect !== void 0) {
- box = node.getBoundingClientRect()
- }
- return {
- top: box.top + win.pageYOffset - root.clientTop,
- left: box.left + win.pageXOffset - root.clientLeft
+ //=============================val相关=======================
+
+ function getValType(elem) {
+ var ret = elem.tagName.toLowerCase()
+ return ret === "input" && /checkbox|radio/.test(elem.type) ? "checked" : ret
}
-}
-//=============================val相关=======================
-function getValType(el) {
- var ret = el.tagName.toLowerCase()
- return ret === "input" && /checkbox|radio/.test(el.type) ? "checked" : ret
-}
-var valHooks = {
- "select:get": function(node, value) {
- var option, options = node.options,
+ var valHooks = {
+ "select:get": function (node, value) {
+ var option, options = node.options,
index = node.selectedIndex,
one = node.type === "select-one" || index < 0,
values = one ? null : [],
max = one ? index + 1 : options.length,
i = index < 0 ? max : one ? index : 0
- for (; i < max; i++) {
- option = options[i]
- //æ—§å¼IE在resetåŽä¸ä¼šæ”¹å˜selected,需è¦æ”¹ç”¨i === index判定
- //我们过滤所有disabledçš„option元素,但在safari5下,如果设置select为disable,那么其所有孩å­éƒ½disable
- //因此当一个元素为disable,需è¦æ£€æµ‹å…¶æ˜¯å¦æ˜¾å¼è®¾ç½®äº†disableåŠå…¶çˆ¶èŠ‚点的disable情况
- if ((option.selected || i === index) && !option.disabled) {
- value = option.value
- if (one) {
- return value
+ for (; i < max; i++) {
+ option = options[i]
+ //æ—§å¼IE在resetåŽä¸ä¼šæ”¹å˜selected,需è¦æ”¹ç”¨i === index判定
+ //我们过滤所有disabledçš„option元素,但在safari5下,如果设置select为disable,那么其所有孩å­éƒ½disable
+ //因此当一个元素为disable,需è¦æ£€æµ‹å…¶æ˜¯å¦æ˜¾å¼è®¾ç½®äº†disableåŠå…¶çˆ¶èŠ‚点的disable情况
+ if ((option.selected || i === index) && !option.disabled) {
+ value = option.value
+ if (one) {
+ return value
+ }
+ //收集所有selected值组æˆæ•°ç»„返回
+ values.push(value)
}
- //收集所有selected值组æˆæ•°ç»„返回
- values.push(value)
- }
- }
- return values
- },
- "select:set": function(node, values, optionSet) {
- values = [].concat(values) //强制转æ¢ä¸ºæ•°ç»„
- for (var i = 0, el; el = node.options[i++]; ) {
- if ((el.selected = values.indexOf(el.value) > -1)) {
- optionSet = true
- }
- }
- if (!optionSet) {
- node.selectedIndex = -1
- }
- }
-}
-
-/*********************************************************************
- * 编译系统 *
- **********************************************************************/
-var quote = JSON.stringify
-
-var keywords =
- // 关键字
- "break,case,catch,continue,debugger,default,delete,do,else,false" +
- ",finally,for,function,if,in,instanceof,new,null,return,switch,this" +
- ",throw,true,try,typeof,var,void,while,with"
- // ä¿ç•™å­—
- + ",abstract,boolean,byte,char,class,const,double,enum,export,extends" +
- ",final,float,goto,implements,import,int,interface,long,native" +
- ",package,private,protected,public,short,static,super,synchronized" +
- ",throws,transient,volatile"
- // ECMA 5 - use strict
- + ",arguments,let,yield" + ",undefined"
-var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g
-var rsplit = /[^\w$]+/g
-var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g')
-var rnumber = /\b\d[^,]*/g
-var rcomma = /^,+|,+$/g
-var cacheVars = createCache(512)
-var getVariables = function(code) {
- var key = "," + code.trim()
- if (cacheVars[key]) {
- return cacheVars[key]
- }
- var match = code
+ }
+ return values
+ },
+ "select:set": function (node, values, optionSet) {
+ values = [].concat(values) //强制转æ¢ä¸ºæ•°ç»„
+ for (var i = 0, el; el = node.options[i++];) {
+ if ((el.selected = values.indexOf(el.value) > -1)) {
+ optionSet = true
+ }
+ }
+ if (!optionSet) {
+ node.selectedIndex = -1
+ }
+ }
+ }
+ /*********************************************************************
+ * 编译系统 *
+ **********************************************************************/
+ var quote = JSON.stringify
+
+ var keywords = [
+ "break,case,catch,continue,debugger,default,delete,do,else,false",
+ "finally,for,function,if,in,instanceof,new,null,return,switch,this",
+ "throw,true,try,typeof,var,void,while,with", /* 关键字*/
+ "abstract,boolean,byte,char,class,const,double,enum,export,extends",
+ "final,float,goto,implements,import,int,interface,long,native",
+ "package,private,protected,public,short,static,super,synchronized",
+ "throws,transient,volatile", /*ä¿ç•™å­—*/
+ "arguments,let,yield,undefined" /* ECMA 5 - use strict*/].join(",")
+ var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g
+ var rsplit = /[^\w$]+/g
+ var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g')
+ var rnumber = /\b\d[^,]*/g
+ var rcomma = /^,+|,+$/g
+ var cacheVars = new Cache(512)
+ var getVariables = function (code) {
+ var key = "," + code.trim()
+ var ret = cacheVars.get(key)
+ if (ret) {
+ return ret
+ }
+ var match = code
.replace(rrexpstr, "")
.replace(rsplit, ",")
.replace(rkeywords, "")
.replace(rnumber, "")
.replace(rcomma, "")
.split(/^$|,+/)
- return cacheVars(key, uniqSet(match))
-}
-/*添加赋值语å¥*/
+ return cacheVars.put(key, uniqSet(match))
+ }
+ /*添加赋值语å¥*/
-function addAssign(vars, scope, name, data) {
- var ret = [],
+ function addAssign(vars, scope, name, data) {
+ var ret = [],
prefix = " = " + name + "."
- for (var i = vars.length, prop; prop = vars[--i]; ) {
- if (scope.hasOwnProperty(prop)) {
- ret.push(prop + prefix + prop)
- data.vars.push(prop)
- if (data.type === "duplex") {
- vars.get = name + "." + prop
+ var isProxy = /\$proxy\$each/.test(scope.$id)
+ for (var i = vars.length, prop; prop = vars[--i];) {
+ var el = isProxy && scope.$map[prop] ? "el" : prop
+ if (scope.hasOwnProperty(el)) {
+ ret.push(prop + prefix + el)
+ data.vars.push(prop)
+ if (data.type === "duplex") {
+ vars.get = name + "." + el
+ }
+ vars.splice(i, 1)
}
- vars.splice(i, 1)
}
+ return ret
}
- return ret
-}
-function uniqSet(array) {
- var ret = [],
+ function uniqSet(array) {
+ var ret = [],
unique = {}
- for (var i = 0; i < array.length; i++) {
- var el = array[i]
- var id = el && typeof el.$id === "string" ? el.$id : el
- if (!unique[id]) {
- unique[id] = ret.push(el)
+ for (var i = 0; i < array.length; i++) {
+ var el = array[i]
+ var id = el && typeof el.$id === "string" ? el.$id : el
+ if (!unique[id]) {
+ unique[id] = ret.push(el)
+ }
}
+ return ret
}
- return ret
-}
+
//缓存求值函数,以便多次利用
-var cacheExprs = createCache(128)
+ var cacheExprs = new Cache(128)
//å–得求值函数åŠå…¶ä¼ å‚
-var rduplex = /\w\[.*\]|\w\.\w/
-var rproxy = /(\$proxy\$[a-z]+)\d+$/
-var rthimRightParentheses = /\)\s*$/
-var rthimOtherParentheses = /\)\s*\|/g
-var rquoteFilterName = /\|\s*([$\w]+)/g
-var rpatchBracket = /"\s*\["/g
-var rthimLeftParentheses = /"\s*\(/g
-function parseFilter(val, filters) {
- filters = filters
+ var rduplex = /\w\[.*\]|\w\.\w/
+ var rproxy = /(\$proxy\$[a-z]+)\d+$/
+ var rthimRightParentheses = /\)\s*$/
+ var rthimOtherParentheses = /\)\s*\|/g
+ var rquoteFilterName = /\|\s*([$\w]+)/g
+ var rpatchBracket = /"\s*\["/g
+ var rthimLeftParentheses = /"\s*\(/g
+
+ function parseFilter(val, filters) {
+ filters = filters
.replace(rthimRightParentheses, "")//处ç†æœ€åŽçš„å°æ‹¬å·
- .replace(rthimOtherParentheses, function() {//处ç†å…¶ä»–å°æ‹¬å·
+ .replace(rthimOtherParentheses, function () {//处ç†å…¶ä»–å°æ‹¬å·
return "],|"
})
- .replace(rquoteFilterName, function(a, b) { //处ç†|åŠå®ƒåŽé¢çš„过滤器的åå­—
+ .replace(rquoteFilterName, function (a, b) { //处ç†|åŠå®ƒåŽé¢çš„过滤器的åå­—
return "[" + quote(b)
})
- .replace(rpatchBracket, function() {
+ .replace(rpatchBracket, function () {
return '"],["'
})
- .replace(rthimLeftParentheses, function() {
+ .replace(rthimLeftParentheses, function () {
return '",'
}) + "]"
- return "return avalon.filters.$filter(" + val + ", " + filters + ")"
-}
-
-function parseExpr(code, scopes, data) {
- var dataType = data.type
- var filters = data.filters || ""
- var exprId = scopes.map(function(el) {
- return String(el.$id).replace(rproxy, "$1")
- }) + code + dataType + filters
- var vars = getVariables(code).concat(),
+ return "return avalon.filters.$filter(" + val + ", " + filters + ")"
+ }
+
+ function parseExpr(code, scopes, data) {
+ var dataType = data.type
+ var filters = data.filters || ""
+ var exprId = scopes.map(function (el) {
+ return String(el.$id).replace(rproxy, "$1")
+ }) + code + dataType + filters
+ var vars = getVariables(code).concat(),
assigns = [],
names = [],
args = [],
prefix = ""
- //args 是一个对象数组, names 是将è¦ç”Ÿæˆçš„求值函数的å‚æ•°
- scopes = uniqSet(scopes)
- data.vars = []
- for (var i = 0, sn = scopes.length; i < sn; i++) {
- if (vars.length) {
- var name = "vm" + expose + "_" + i
- names.push(name)
- args.push(scopes[i])
- assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data))
- }
- }
- if (!assigns.length && dataType === "duplex") {
- return
- }
- if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) {
- //https://github.com/RubyLouvre/avalon/issues/583
- data.vars.forEach(function(v) {
- var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig")
- code = code.replace(reg, function(_) {
- var c = _.charAt(v.length)
- var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext
- var method = /^\s*\(/.test(r)
- if (c === "." || c === "[" || method) {//比如v为aa,我们åªåŒ¹é…aa.bb,aa[cc],ä¸åŒ¹é…aaa.xxx
- var name = "var" + String(Math.random()).replace(/^0\./, "")
- if (method) {//array.size()
- var array = _.split(".")
- if (array.length > 2) {
- var last = array.pop()
- assigns.push(name + " = " + array.join("."))
- return name + "." + last
- } else {
- return _
+ //args 是一个对象数组, names 是将è¦ç”Ÿæˆçš„求值函数的å‚æ•°
+ scopes = uniqSet(scopes)
+ data.vars = []
+ for (var i = 0, sn = scopes.length; i < sn; i++) {
+ if (vars.length) {
+ var name = "vm" + expose + "_" + i
+ names.push(name)
+ args.push(scopes[i])
+ assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data))
+ }
+ }
+ if (!assigns.length && dataType === "duplex") {
+ return
+ }
+ if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) {
+ //https://github.com/RubyLouvre/avalon/issues/583
+ data.vars.forEach(function (v) {
+ var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig")
+ code = code.replace(reg, function (_) {
+ var c = _.charAt(v.length)
+ var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext
+ var method = /^\s*\(/.test(r)
+ if (c === "." || c === "[" || method) {//比如v为aa,我们åªåŒ¹é…aa.bb,aa[cc],ä¸åŒ¹é…aaa.xxx
+ var name = "var" + String(Math.random()).replace(/^0\./, "")
+ if (method) {//array.size()
+ var array = _.split(".")
+ if (array.length > 2) {
+ var last = array.pop()
+ assigns.push(name + " = " + array.join("."))
+ return name + "." + last
+ } else {
+ return _
+ }
}
+ assigns.push(name + " = " + _)
+ return name
+ } else {
+ return _
}
- assigns.push(name + " = " + _)
- return name
- } else {
- return _
- }
+ })
})
- })
- }
- //---------------args----------------
- data.args = args
- //---------------cache----------------
- var fn = cacheExprs[exprId] //直接从缓存,å…å¾—é‡å¤ç”Ÿæˆ
- if (fn) {
- data.evaluator = fn
- return
- }
- var prefix = assigns.join(", ")
- if (prefix) {
- prefix = "var " + prefix
- }
- if (/\S/.test(filters)) { //文本绑定,åŒå·¥ç»‘定æ‰æœ‰è¿‡æ»¤å™¨
- if (!/text|html/.test(data.type)) {
- throw Error("ms-" + data.type + "ä¸æ”¯æŒè¿‡æ»¤å™¨")
- }
- code = "\nvar ret" + expose + " = " + code + ";\r\n"
- code += parseFilter("ret" + expose, filters)
- } else if (dataType === "duplex") { //åŒå·¥ç»‘定
- var _body = "'use strict';\nreturn function(vvv){\n\t" +
+ }
+ //---------------args----------------
+ data.args = args
+ //---------------cache----------------
+ var fn = cacheExprs.get(exprId) //直接从缓存,å…å¾—é‡å¤ç”Ÿæˆ
+ if (fn) {
+ data.evaluator = fn
+ return
+ }
+ prefix = assigns.join(", ")
+ if (prefix) {
+ prefix = "var " + prefix
+ }
+ if (/\S/.test(filters)) { //文本绑定,åŒå·¥ç»‘定æ‰æœ‰è¿‡æ»¤å™¨
+ if (!/text|html/.test(data.type)) {
+ throw Error("ms-" + data.type + "ä¸æ”¯æŒè¿‡æ»¤å™¨")
+ }
+ code = "\nvar ret" + expose + " = " + code + ";\r\n"
+ code += parseFilter("ret" + expose, filters)
+ } else if (dataType === "duplex") { //åŒå·¥ç»‘定
+ var _body = "'use strict';\nreturn function(vvv){\n\t" +
prefix +
";\n\tif(!arguments.length){\n\t\treturn " +
code +
"\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) +
"= vvv;\n} "
+ try {
+ fn = Function.apply(noop, names.concat(_body))
+ data.evaluator = cacheExprs.put(exprId, fn)
+ } catch (e) {
+ log("debug: parse error," + e.message)
+ }
+ return
+ } else if (dataType === "on") { //事件绑定
+ if (code.indexOf("(") === -1) {
+ code += ".call(this, $event)"
+ } else {
+ code = code.replace("(", ".call(this,")
+ }
+ names.push("$event")
+ code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;")
+ var lastIndex = code.lastIndexOf("\nreturn")
+ var header = code.slice(0, lastIndex)
+ var footer = code.slice(lastIndex)
+ code = header + "\n" + footer
+ } else { //其他绑定
+ code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;")
+ }
try {
- fn = Function.apply(noop, names.concat(_body))
- data.evaluator = cacheExprs(exprId, fn)
+ fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code))
+ data.evaluator = cacheExprs.put(exprId, fn)
} catch (e) {
log("debug: parse error," + e.message)
+ } finally {
+ vars = assigns = names = null //释放内存
}
- return
- } else if (dataType === "on") { //事件绑定
- if (code.indexOf("(") === -1) {
- code += ".call(this, $event)"
- } else {
- code = code.replace("(", ".call(this,")
- }
- names.push("$event")
- code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;")
- var lastIndex = code.lastIndexOf("\nreturn")
- var header = code.slice(0, lastIndex)
- var footer = code.slice(lastIndex)
- code = header + "\n" + footer
- } else { //其他绑定
- code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;")
- }
- try {
- fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code))
- data.evaluator = cacheExprs(exprId, fn)
- } catch (e) {
- log("debug: parse error," + e.message)
- } finally {
- vars = textBuffer = names = null //释放内存
}
-}
//parseExpr的智能引用代ç†
-function parseExprProxy(code, scopes, data, tokens, noregister) {
- if (Array.isArray(tokens)) {
- code = tokens.map(function(el) {
- return el.expr ? "(" + el.value + ")" : quote(el.value)
- }).join(" + ")
- }
- parseExpr(code, scopes, data)
- if (data.evaluator && !noregister) {
- data.handler = bindingExecutors[data.handlerName || data.type]
- //方便调试
- //这里éžå¸¸é‡è¦,我们通过判定视图刷新函数的element是å¦åœ¨DOM树决定
- //将它移出订阅者列表
- registerSubscriber(data)
- }
-}
-avalon.parseExprProxy = parseExprProxy
-/*********************************************************************
- * å„ç§æŒ‡ä»¤ *
- **********************************************************************/
-//ms-skip绑定已ç»åœ¨scanTag 方法中实现
-//ms-controller绑定已ç»åœ¨scanTag 方法中实现
-//ms-important绑定已ç»åœ¨scanTag 方法中实现
-var bools = "autofocus,autoplay,async,allowTransparency,checked,controls,declare,disabled,defer,defaultChecked,defaultSelected" +
- "contentEditable,isMap,loop,multiple,noHref,noResize,noShade,open,readOnly,selected"
-var boolMap = {}
-bools.replace(rword, function(name) {
- boolMap[name.toLowerCase()] = name
-})
-
-var propMap = {//属性å映射
- "accept-charset": "acceptCharset",
- "char": "ch",
- "charoff": "chOff",
- "class": "className",
- "for": "htmlFor",
- "http-equiv": "httpEquiv"
-}
-
-var anomaly = "accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan," + "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight," + "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign"
-anomaly.replace(rword, function(name) {
- propMap[name.toLowerCase()] = name
-})
-
-var rnoscripts = /<noscript.*?>(?:[\s\S]+?)<\/noscript>/img
-var rnoscriptText = /<noscript.*?>([\s\S]+?)<\/noscript>/im
-
-var getXHR = function() {
- return new (window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP")
-}
-
-var cacheTmpls = avalon.templateCache = {}
-
-bindingHandlers.attr = function(data, vmodels) {
- var text = data.value.trim(),
- simple = true
- if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) {
- simple = false
- if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") {
+ function parseExprProxy(code, scopes, data, tokens, noRegister) {
+ if (Array.isArray(tokens)) {
+ code = tokens.map(function (el) {
+ return el.expr ? "(" + el.value + ")" : quote(el.value)
+ }).join(" + ")
+ }
+ parseExpr(code, scopes, data)
+ if (data.evaluator && !noRegister) {
+ data.handler = bindingExecutors[data.handlerName || data.type]
+ //方便调试
+ //这里éžå¸¸é‡è¦,我们通过判定视图刷新函数的element是å¦åœ¨DOM树决定
+ //将它移出订阅者列表
+ avalon.injectBinding(data)
+ }
+ }
+
+ avalon.parseExprProxy = parseExprProxy
+ var bools = ["autofocus,autoplay,async,allowTransparency,checked,controls",
+ "declare,disabled,defer,defaultChecked,defaultSelected",
+ "contentEditable,isMap,loop,multiple,noHref,noResize,noShade",
+ "open,readOnly,selected"
+ ].join(",")
+ var boolMap = {}
+ bools.replace(rword, function (name) {
+ boolMap[name.toLowerCase()] = name
+ })
+
+ var propMap = { //属性å映射
+ "accept-charset": "acceptCharset",
+ "char": "ch",
+ "charoff": "chOff",
+ "class": "className",
+ "for": "htmlFor",
+ "http-equiv": "httpEquiv"
+ }
+
+ var anomaly = ["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan",
+ "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight",
+ "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign"
+ ].join(",")
+ anomaly.replace(rword, function (name) {
+ propMap[name.toLowerCase()] = name
+ })
+
+ var rnoscripts = /<noscript.*?>(?:[\s\S]+?)<\/noscript>/img
+ var rnoscriptText = /<noscript.*?>([\s\S]+?)<\/noscript>/im
+
+ var getXHR = function () {
+ return new (window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") // jshint ignore:line
+ }
+
+ var cacheTmpls = avalon.templateCache = {}
+
+ bindingHandlers.attr = function (data, vmodels) {
+ var text = data.value.trim(),
simple = true
- text = RegExp.$1
+ if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) {
+ simple = false
+ if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") {
+ simple = true
+ text = RegExp.$1
+ }
}
- }
- if (data.type === "include") {
- var elem = data.element
- data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels)
- data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels)
- var outer = data.includeReplaced = !!avalon(elem).data("includeReplace")
- data.startInclude = DOC.createComment("ms-include")
- data.endInclude = DOC.createComment("ms-include-end")
- if (outer) {
- data.element = data.startInclude
- elem.parentNode.insertBefore(data.startInclude, elem)
- elem.parentNode.insertBefore(data.endInclude, elem.nextSibling)
- } else {
- elem.insertBefore(data.startInclude, elem.firstChild)
- elem.appendChild(data.endInclude)
+ if (data.type === "include") {
+ var elem = data.element
+ data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels)
+ data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels)
+ var outer = data.includeReplace = !!avalon(elem).data("includeReplace")
+ if (avalon(elem).data("includeCache")) {
+ data.templateCache = {}
+ }
+ data.startInclude = DOC.createComment("ms-include")
+ data.endInclude = DOC.createComment("ms-include-end")
+ if (outer) {
+ data.element = data.startInclude
+ elem.parentNode.insertBefore(data.startInclude, elem)
+ elem.parentNode.insertBefore(data.endInclude, elem.nextSibling)
+ } else {
+ elem.insertBefore(data.startInclude, elem.firstChild)
+ elem.appendChild(data.endInclude)
+ }
}
+ data.handlerName = "attr" //handleName用于处ç†å¤šç§ç»‘定共用åŒä¸€ç§bindingExecutor的情况
+ parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value)))
}
- data.handlerName = "attr" //handleName用于处ç†å¤šç§ç»‘定共用åŒä¸€ç§bindingExecutor的情况
- parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value)))
-}
-bindingExecutors.attr = function(val, elem, data) {
- var method = data.type,
+ bindingExecutors.attr = function (val, elem, data) {
+ var method = data.type,
attrName = data.param
- if (method === "css") {
- avalon(elem).css(attrName, val)
- } else if (method === "attr") {
- // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc
- // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类å
- // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性
- if (boolMap[attrName]) {
+ if (method === "css") {
+ avalon(elem).css(attrName, val)
+ } else if (method === "attr") {
+ // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc
+ // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类å
+ // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性
+ var toRemove = (val === false) || (val === null) || (val === void 0)
+
+ if (!W3C && propMap[attrName]) { //æ—§å¼IE下需è¦è¿›è¡Œå字映射
+ attrName = propMap[attrName]
+ }
var bool = boolMap[attrName]
if (typeof elem[bool] === "boolean") {
- // IE6-11ä¸æ”¯æŒåŠ¨æ€è®¾ç½®fieldsetçš„disabled属性,IE11下样å¼æ˜¯ç”Ÿæ•ˆäº†ï¼Œä½†æ— æ³•é˜»æ­¢ç”¨æˆ·å¯¹å…¶åº•ä¸‹çš„input元素进行设值……
- return elem[bool] = !!val
- }
- }
- var toRemove = (val === false) || (val === null) || (val === void 0)
-
- if (!W3C && propMap[attrName]) { //æ—§å¼IE下需è¦è¿›è¡Œå字映射
- attrName = propMap[attrName]
- }
- if (toRemove) {
- return elem.removeAttribute(attrName)
- }
- //SVGåªèƒ½ä½¿ç”¨setAttribute(xxx, yyy), VMLåªèƒ½ä½¿ç”¨elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy
- var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false)
- if (isInnate) {
- elem[attrName] = val
- } else {
- elem.setAttribute(attrName, val)
- }
- } else if (method === "include" && val) {
- var vmodels = data.vmodels
- var rendered = data.includeRendered
- var loaded = data.includeLoaded
- var replace = data.includeReplaced
- var target = replace ? elem.parentNode : elem
- function scanTemplate(text) {
- if (loaded) {
- text = loaded.apply(target, [text].concat(vmodels))
- }
- if (rendered) {
- checkScan(target, function() {
- rendered.call(target)
- }, NaN)
- }
- while (true) {
- var node = data.startInclude.nextSibling
- if (node && node !== data.endInclude) {
- target.removeChild(node)
- } else {
- break
+ elem[bool] = !!val //布尔属性必须使用el.xxx = true|falseæ–¹å¼è®¾å€¼
+ if (!val) { //如果为false, IE全系列下相当于setAttribute(xxx,''),会影å“到样å¼,需è¦è¿›ä¸€æ­¥å¤„ç†
+ toRemove = true
}
}
- var dom = avalon.parseHTML(text)
- var nodes = avalon.slice(dom.childNodes)
- target.insertBefore(dom, data.endInclude)
- scanNodeArray(nodes, vmodels)
- }
- if (data.param === "src") {
- if (cacheTmpls[val]) {
- avalon.nextTick(function() {
- scanTemplate(cacheTmpls[val])
- })
+ if (toRemove) {
+ return elem.removeAttribute(attrName)
+ }
+
+ //SVGåªèƒ½ä½¿ç”¨setAttribute(xxx, yyy), VMLåªèƒ½ä½¿ç”¨elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy
+ var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false)
+ if (isInnate) {
+ elem[attrName] = val
} else {
- var xhr = getXHR()
- xhr.onreadystatechange = function() {
- if (xhr.readyState === 4) {
- var s = xhr.status
- if (s >= 200 && s < 300 || s === 304 || s === 1223) {
- scanTemplate(cacheTmpls[val] = xhr.responseText)
- }
+ elem.setAttribute(attrName, val)
+ }
+ } else if (method === "include" && val) {
+ var vmodels = data.vmodels
+ var rendered = data.includeRendered
+ var loaded = data.includeLoaded
+ var replace = data.includeReplace
+ var target = replace ? elem.parentNode : elem
+ var scanTemplate = function (text) {
+ if (loaded) {
+ var newText = loaded.apply(target, [text].concat(vmodels))
+ if (typeof newText === "string")
+ text = newText
+ }
+ if (rendered) {
+ checkScan(target, function () {
+ rendered.call(target)
+ }, NaN)
+ }
+ var lastID = data.includeLastID
+ if (data.templateCache && lastID && lastID !== val) {
+ var lastTemplate = data.templateCache[lastID]
+ if (!lastTemplate) {
+ lastTemplate = data.templateCache[lastID] = DOC.createElement("div")
+ ifGroup.appendChild(lastTemplate)
}
}
- xhr.open("GET", val, true)
- if ("withCredentials" in xhr) {
- xhr.withCredentials = true
+ data.includeLastID = val
+ while (true) {
+ var node = data.startInclude.nextSibling
+ if (node && node !== data.endInclude) {
+ target.removeChild(node)
+ if (lastTemplate)
+ lastTemplate.appendChild(node)
+ } else {
+ break
+ }
}
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
- xhr.send(null)
+ var dom = getTemplateNodes(data, val, text)
+ var nodes = avalon.slice(dom.childNodes)
+ target.insertBefore(dom, data.endInclude)
+ scanNodeArray(nodes, vmodels)
}
- } else {
- //IE系列与够新的标准æµè§ˆå™¨æ”¯æŒé€šè¿‡IDå–得元素(firefox14+)
- //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/
- var el = val && val.nodeType === 1 ? val : DOC.getElementById(val)
- if (el) {
- if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法å–得其内容,IE6能å–å¾—å…¶innerHTML
- var xhr = getXHR() //IE9-11与chromeçš„innerHTML会得到转义的内容,它们的innerTextå¯ä»¥
- xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构
+
+ if (data.param === "src") {
+ if (typeof cacheTmpls[val] === "string") {
+ avalon.nextTick(function () {
+ scanTemplate(cacheTmpls[val])
+ })
+ } else if (Array.isArray(cacheTmpls[val])) { //#805 防止在循环绑定中å‘出许多相åŒçš„请求
+ cacheTmpls[val].push(scanTemplate)
+ } else {
+ var xhr = getXHR()
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState === 4) {
+ var s = xhr.status
+ if (s >= 200 && s < 300 || s === 304 || s === 1223) {
+ var text = xhr.responseText
+ for (var f = 0, fn; fn = cacheTmpls[val][f++];) {
+ fn(text)
+ }
+ cacheTmpls[val] = text
+ }
+ }
+ }
+ cacheTmpls[val] = [scanTemplate]
+ xhr.open("GET", val, true)
+ if ("withCredentials" in xhr) {
+ xhr.withCredentials = true
+ }
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
xhr.send(null)
- //http://bbs.csdn.net/topics/390349046?page=1#post-393492653
- var noscripts = DOC.getElementsByTagName("noscript")
- var array = (xhr.responseText || "").match(rnoscripts) || []
- var n = array.length
- for (var i = 0; i < n; i++) {
- var tag = noscripts[i]
- if (tag) { //IE6-8中noscript标签的innerHTML,innerText是åªè¯»çš„
- tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug
- tag.fixIE78 = (array[i].match(rnoscriptText) || ["", "&nbsp;"])[1]
+ }
+ } else {
+ //IE系列与够新的标准æµè§ˆå™¨æ”¯æŒé€šè¿‡IDå–得元素(firefox14+)
+ //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/
+ var el = val && val.nodeType === 1 ? val : DOC.getElementById(val)
+ if (el) {
+ if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法å–得其内容,IE6能å–å¾—å…¶innerHTML
+ xhr = getXHR() //IE9-11与chromeçš„innerHTML会得到转义的内容,它们的innerTextå¯ä»¥
+ xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构
+ xhr.send(null)
+ //http://bbs.csdn.net/topics/390349046?page=1#post-393492653
+ var noscripts = DOC.getElementsByTagName("noscript")
+ var array = (xhr.responseText || "").match(rnoscripts) || []
+ var n = array.length
+ for (var i = 0; i < n; i++) {
+ var tag = noscripts[i]
+ if (tag) { //IE6-8中noscript标签的innerHTML,innerText是åªè¯»çš„
+ tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug
+ tag.fixIE78 = (array[i].match(rnoscriptText) || ["", "&nbsp;"])[1]
+ }
}
}
+ avalon.nextTick(function () {
+ scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML)
+ })
}
- avalon.nextTick(function() {
- scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML)
- })
+ }
+ } else {
+ if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) {
+ val = val.replace(/&amp;/g, "&") //处ç†IE67自动转义的问题
+ }
+ elem[method] = val
+ if (window.chrome && elem.tagName === "EMBED") {
+ var parent = elem.parentNode //#525 chrome1-37下embed标签动æ€è®¾ç½®srcä¸èƒ½å‘生请求
+ var comment = document.createComment("ms-src")
+ parent.replaceChild(comment, elem)
+ parent.replaceChild(elem, comment)
}
}
- } else {
- if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) {
- val = val.replace(/&amp;/g, "&") //处ç†IE67自动转义的问题
- }
- elem[method] = val
- if (window.chrome && elem.tagName === "EMBED") {
- var parent = elem.parentNode //#525 chrome1-37下embed标签动æ€è®¾ç½®srcä¸èƒ½å‘生请求
- var comment = document.createComment("ms-src")
- parent.replaceChild(comment, elem)
- parent.replaceChild(elem, comment)
+ }
+
+ function getTemplateNodes(data, id, text) {
+ var div = data.templateCache && data.templateCache[id]
+ if (div) {
+ var dom = DOC.createDocumentFragment(),
+ firstChild
+ while (firstChild = div.firstChild) {
+ dom.appendChild(firstChild)
+ }
+ return dom
}
+ return avalon.parseHTML(text)
}
-}
//这几个指令都å¯ä»¥ä½¿ç”¨æ’值表达å¼ï¼Œå¦‚ms-src="aaa/{{b}}/{{c}}.html"
-"title,alt,src,value,css,include,href".replace(rword, function(name) {
- bindingHandlers[name] = bindingHandlers.attr
-})
-//ms-include绑定已由ms-attr绑定实现
-
+ "title,alt,src,value,css,include,href".replace(rword, function (name) {
+ bindingHandlers[name] = bindingHandlers.attr
+ })
//æ ¹æ®VM的属性值或表达å¼çš„值切æ¢ç±»å,ms-class="xxx yyy zzz:flag"
//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html
-bindingHandlers["class"] = function(data, vmodels) {
- var oldStyle = data.param,
+ bindingHandlers["class"] = function (data, vmodels) {
+ var oldStyle = data.param,
text = data.value,
rightExpr
- data.handlerName = "class"
- if (!oldStyle || isFinite(oldStyle)) {
- data.param = "" //去掉数字
- var noExpr = text.replace(rexprg, function(a) {
- return a.replace(/./g, "0")
- //return Math.pow(10, a.length - 1) //å°†æ’值表达å¼æ’å…¥10çš„N-1次方æ¥å ä½
- })
- var colonIndex = noExpr.indexOf(":") //å–得第一个冒å·çš„ä½ç½®
- if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况
- var className = text
- } else { // 比如 ms-class-1="ui-state-active:checked" 的情况
- className = text.slice(0, colonIndex)
- rightExpr = text.slice(colonIndex + 1)
- parseExpr(rightExpr, vmodels, data) //决定是添加还是删除
- if (!data.evaluator) {
- log("debug: ms-class '" + (rightExpr || "").trim() + "' ä¸å­˜åœ¨äºŽVM中")
- return false
- } else {
- data._evaluator = data.evaluator
- data._args = data.args
+ data.handlerName = "class"
+ if (!oldStyle || isFinite(oldStyle)) {
+ data.param = "" //去掉数字
+ var noExpr = text.replace(rexprg, function (a) {
+ return a.replace(/./g, "0")
+ //return Math.pow(10, a.length - 1) //å°†æ’值表达å¼æ’å…¥10çš„N-1次方æ¥å ä½
+ })
+ var colonIndex = noExpr.indexOf(":") //å–得第一个冒å·çš„ä½ç½®
+ if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况
+ var className = text
+ } else { // 比如 ms-class-1="ui-state-active:checked" 的情况
+ className = text.slice(0, colonIndex)
+ rightExpr = text.slice(colonIndex + 1)
+ parseExpr(rightExpr, vmodels, data) //决定是添加还是删除
+ if (!data.evaluator) {
+ log("debug: ms-class '" + (rightExpr || "").trim() + "' ä¸å­˜åœ¨äºŽVM中")
+ return false
+ } else {
+ data._evaluator = data.evaluator
+ data._args = data.args
+ }
}
+ var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况
+ if (!hasExpr) {
+ data.immobileClass = className
+ }
+ parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0))
+ } else {
+ data.immobileClass = data.oldStyle = data.param
+ parseExprProxy(text, vmodels, data)
}
- var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况
- if (!hasExpr) {
- data.immobileClass = className
- }
- parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0))
- } else {
- data.immobileClass = data.oldStyle = data.param
- parseExprProxy(text, vmodels, data)
}
-}
-bindingExecutors ["class"] = function(val, elem, data) {
- var $elem = avalon(elem),
+ bindingExecutors["class"] = function (val, elem, data) {
+ var $elem = avalon(elem),
method = data.type
- if (method === "class" && data.oldStyle) { //如果是旧风格
- $elem.toggleClass(data.oldStyle, !!val)
- } else {
- //如果存在冒å·å°±æœ‰æ±‚值函数
- data.toggleClass = data._evaluator ? !!data._evaluator.apply(elem, data._args) : true
- data.newClass = data.immobileClass || val
- if (data.oldClass && data.newClass !== data.oldClass) {
- $elem.removeClass(data.oldClass)
- }
- data.oldClass = data.newClass
- switch (method) {
- case "class":
- $elem.toggleClass(data.newClass, data.toggleClass)
- break
- case "hover":
- case "active":
- if (!data.hasBindEvent) { //ç¡®ä¿åªç»‘定一次
- var activate = "mouseenter" //在移出移入时切æ¢ç±»å
- var abandon = "mouseleave"
- if (method === "active") { //在èšç„¦å¤±ç„¦ä¸­åˆ‡æ¢ç±»å
- elem.tabIndex = elem.tabIndex || -1
- activate = "mousedown"
- abandon = "mouseup"
- var fn0 = $elem.bind("mouseleave", function() {
+ if (method === "class" && data.oldStyle) { //如果是旧风格
+ $elem.toggleClass(data.oldStyle, !!val)
+ } else {
+ //如果存在冒å·å°±æœ‰æ±‚值函数
+ data.toggleClass = data._evaluator ? !!data._evaluator.apply(elem, data._args) : true
+ data.newClass = data.immobileClass || val
+ if (data.oldClass && data.newClass !== data.oldClass) {
+ $elem.removeClass(data.oldClass)
+ }
+ data.oldClass = data.newClass
+ switch (method) {
+ case "class":
+ $elem.toggleClass(data.newClass, data.toggleClass)
+ break
+ case "hover":
+ case "active":
+ if (!data.hasBindEvent) { //ç¡®ä¿åªç»‘定一次
+ var activate = "mouseenter" //在移出移入时切æ¢ç±»å
+ var abandon = "mouseleave"
+ if (method === "active") { //在èšç„¦å¤±ç„¦ä¸­åˆ‡æ¢ç±»å
+ elem.tabIndex = elem.tabIndex || -1
+ activate = "mousedown"
+ abandon = "mouseup"
+ var fn0 = $elem.bind("mouseleave", function () {
+ data.toggleClass && $elem.removeClass(data.newClass)
+ })
+ }
+ var fn1 = $elem.bind(activate, function () {
+ data.toggleClass && $elem.addClass(data.newClass)
+ })
+ var fn2 = $elem.bind(abandon, function () {
data.toggleClass && $elem.removeClass(data.newClass)
})
+ data.rollback = function () {
+ $elem.unbind("mouseleave", fn0)
+ $elem.unbind(activate, fn1)
+ $elem.unbind(abandon, fn2)
+ }
+ data.hasBindEvent = true
}
- var fn1 = $elem.bind(activate, function() {
- data.toggleClass && $elem.addClass(data.newClass)
- })
- var fn2 = $elem.bind(abandon, function() {
- data.toggleClass && $elem.removeClass(data.newClass)
- })
- data.rollback = function() {
- $elem.unbind("mouseleave", fn0)
- $elem.unbind(activate, fn1)
- $elem.unbind(abandon, fn2)
- }
- data.hasBindEvent = true
- }
- break;
+ break;
+ }
}
}
-}
-"hover,active".replace(rword, function(method) {
- bindingHandlers[method] = bindingHandlers["class"]
-})
+ "hover,active".replace(rword, function (method) {
+ bindingHandlers[method] = bindingHandlers["class"]
+ })
+//ms-controller绑定已ç»åœ¨scanTag 方法中实现
+//ms-css绑定已由ms-attr绑定实现
+
+
// bindingHandlers.data 定义在if.js
-bindingExecutors.data = function(val, elem, data) {
- var key = "data-" + data.param
- if (val && typeof val === "object") {
- elem[key] = val
- } else {
- elem.setAttribute(key, String(val))
+ bindingExecutors.data = function (val, elem, data) {
+ var key = "data-" + data.param
+ if (val && typeof val === "object") {
+ elem[key] = val
+ } else {
+ elem.setAttribute(key, String(val))
+ }
}
-}
-
-// bindingHandlers.text 定义在if.js
-bindingExecutors.text = function(val, elem) {
- val = val == null ? "" : val //ä¸åœ¨é¡µé¢ä¸Šæ˜¾ç¤ºundefined null
- if (elem.nodeType === 3) { //绑定在文本节点上
- try { //IE对游离于DOM树外的节点赋值会报错
- elem.data = val
- } catch (e) {
+//åŒå·¥ç»‘定
+ var duplexBinding = bindingHandlers.duplex = function (data, vmodels) {
+ var elem = data.element,
+ hasCast
+ parseExprProxy(data.value, vmodels, data, 0, 1)
+
+ data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop
+ if (data.evaluator && data.args) {
+ var params = []
+ var casting = oneObject("string,number,boolean,checked")
+ if (elem.type === "radio" && data.param === "") {
+ data.param = "checked"
+ }
+ if (elem.msData) {
+ elem.msData["ms-duplex"] = data.value
+ }
+ data.param.replace(/\w+/g, function (name) {
+ if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) {
+ if (name === "radio")
+ log("ms-duplex-radioå·²ç»æ›´å为ms-duplex-checked")
+ name = "checked"
+ data.isChecked = true
+ }
+ if (name === "bool") {
+ name = "boolean"
+ log("ms-duplex-boolå·²ç»æ›´å为ms-duplex-boolean")
+ } else if (name === "text") {
+ name = "string"
+ log("ms-duplex-textå·²ç»æ›´å为ms-duplex-string")
+ }
+ if (casting[name]) {
+ hasCast = true
+ }
+ avalon.Array.ensure(params, name)
+ })
+ if (!hasCast) {
+ params.push("string")
+ }
+ data.param = params.join("-")
+ data.bound = function (type, callback) {
+ if (elem.addEventListener) {
+ elem.addEventListener(type, callback, false)
+ } else {
+ elem.attachEvent("on" + type, callback)
+ }
+ var old = data.rollback
+ data.rollback = function () {
+ elem.avalonSetter = null
+ avalon.unbind(elem, type, callback)
+ old && old()
+ }
+ }
+ for (var i in avalon.vmodels) {
+ var v = avalon.vmodels[i]
+ v.$fire("avalon-ms-duplex-init", data)
+ }
+ var cpipe = data.pipe || (data.pipe = pipe)
+ cpipe(null, data, "init")
+ var tagName = elem.tagName
+ duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data)
}
- } else { //绑定在特性节点上
- elem.textContent = val
}
-}
+//ä¸å­˜åœ¨ bindingExecutors.duplex
+
+ function fixNull(val) {
+ return val == null ? "" : val
+ }
-// bindingHandlers.html 定义在if.js
-bindingExecutors.html = function(val, elem, data) {
- val = val == null ? "" : val
- var isHtmlFilter = "group" in data
- var parent = isHtmlFilter ? elem.parentNode : elem
- if (!parent)
- return
- if (val.nodeType === 11) { //å°†val转æ¢ä¸ºæ–‡æ¡£ç¢Žç‰‡
- var fragment = val
- } else if (val.nodeType === 1 || val.item) {
- var nodes = val.nodeType === 1 ? val.childNodes : val.item ? val : []
- fragment = hyperspace.cloneNode(true)
- while (nodes[0]) {
- fragment.appendChild(nodes[0])
+ avalon.duplexHooks = {
+ checked: {
+ get: function (val, data) {
+ return !data.element.oldValue
+ }
+ },
+ string: {
+ get: function (val) { //åŒæ­¥åˆ°VM
+ return val
+ },
+ set: fixNull
+ },
+ "boolean": {
+ get: function (val) {
+ return val === "true"
+ },
+ set: fixNull
+ },
+ number: {
+ get: function (val, data) {
+ var number = parseFloat(val)
+ if (-val === -number) {
+ return number
+ }
+ var arr = /strong|medium|weak/.exec(data.element.getAttribute("data-duplex-number")) || ["medium"]
+ switch (arr[0]) {
+ case "strong":
+ return 0
+ case "medium":
+ return val === "" ? "" : 0
+ case "weak":
+ return val
+ }
+ },
+ set: fixNull
}
- } else {
- fragment = avalon.parseHTML(val)
- }
- //æ’å…¥å ä½ç¬¦, 如果是过滤器,需è¦æœ‰èŠ‚制地移除指定的数é‡,如果是html指令,直接清空
- var comment = DOC.createComment("ms-html")
- if (isHtmlFilter) {
- parent.insertBefore(comment, elem)
- var n = data.group, i = 1
- while (i < n) {
- var node = elem.nextSibling
- if (node) {
- parent.removeChild(node)
- i++
- }
- }
- parent.removeChild(elem)
- data.element = comment //防止被CG
- } else {
- avalon.clearHTML(parent).appendChild(comment)
}
- if (isHtmlFilter) {
- data.group = fragment.childNodes.length || 1
+
+ function pipe(val, data, action, e) {
+ data.param.replace(/\w+/g, function (name) {
+ var hook = avalon.duplexHooks[name]
+ if (hook && typeof hook[action] === "function") {
+ val = hook[action](val, data)
+ }
+ })
+ return val
}
- var nodes = avalon.slice(fragment.childNodes)
- if (nodes[0]) {
- if (comment.parentNode)
- comment.parentNode.replaceChild(fragment, comment)
- if (isHtmlFilter) {
- data.element = nodes[0]
+
+ var TimerID, ribbon = []
+
+ avalon.tick = function (fn) {
+ if (ribbon.push(fn) === 1) {
+ TimerID = setInterval(ticker, 60)
}
}
- scanNodeArray(nodes, data.vmodels)
-}
-bindingHandlers["if"] =
- bindingHandlers.data =
- bindingHandlers.text =
- bindingHandlers.html =
- function(data, vmodels) {
- parseExprProxy(data.value, vmodels, data)
- }
-
-bindingExecutors["if"] = function(val, elem, data) {
- if (val) { //æ’回DOMæ ‘
- if (elem.nodeType === 8) {
- elem.parentNode.replaceChild(data.template, elem)
- elem = data.element = data.template //这时å¯èƒ½ä¸ºnull
- }
- if (elem.getAttribute(data.name)) {
- elem.removeAttribute(data.name)
- scanAttr(elem, data.vmodels)
- }
- data.rollback = null
- } else { //移出DOM树,并用注释节点å æ®åŽŸä½ç½®
- if (elem.nodeType === 1) {
- var node = data.element = DOC.createComment("ms-if")
- elem.parentNode.replaceChild(node, elem)
- data.template = elem //元素节点
- ifGroup.appendChild(elem)
- data.rollback = function() {
- if (elem.parentNode === ifGroup) {
- ifGroup.removeChild(elem)
- }
+ function ticker() {
+ for (var n = ribbon.length - 1; n >= 0; n--) {
+ var el = ribbon[n]
+ if (el() === false) {
+ ribbon.splice(n, 1)
}
}
+ if (!ribbon.length) {
+ clearInterval(TimerID)
+ }
}
-}
+ var watchValueInTimer = noop
+ var rmsinput = /text|password|hidden/
+ new function () { // jshint ignore:line
+ try { //#272 IE9-IE11, firefox
+ var setters = {}
+ var aproto = HTMLInputElement.prototype
+ var bproto = HTMLTextAreaElement.prototype
-function parseDisplay(nodeName, val) {
- //用于å–得此类标签的默认display值
- var key = "_" + nodeName
- if (!parseDisplay[key]) {
- var node = DOC.createElement(nodeName)
- root.appendChild(node)
- if (W3C) {
- val = getComputedStyle(node, null).display
- } else {
- val = node.currentStyle.display
- }
- root.removeChild(node)
- parseDisplay[key] = val
- }
- return parseDisplay[key]
-}
-
-avalon.parseDisplay = parseDisplay
-
-bindingHandlers.visible = function(data, vmodels) {
- var elem = avalon(data.element)
- var display = elem.css("display")
- if (display === "none") {
- var style = elem[0].style
- var has = /visibility/i.test(style.cssText)
- var visible = elem.css("visibility")
- style.display = ""
- style.visibility = "hidden"
- display = elem.css("display")
- if (display === "none") {
- display = parseDisplay(elem[0].nodeName)
+ function newSetter(value) { // jshint ignore:line
+ if (avalon.contains(root, this)) {
+ setters[this.tagName].call(this, value)
+ if (!rmsinput.test(this.type))
+ return
+ if (!this.msFocus && this.avalonSetter) {
+ this.avalonSetter()
+ }
+ }
+ }
+
+ var inputProto = HTMLInputElement.prototype
+ Object.getOwnPropertyNames(inputProto) //æ•…æ„引å‘IE6-8ç­‰æµè§ˆå™¨æŠ¥é”™
+ setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set
+ Object.defineProperty(aproto, "value", {
+ set: newSetter
+ })
+ setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set
+ Object.defineProperty(bproto, "value", {
+ set: newSetter
+ })
+ } catch (e) {
+ //在chrome 43中 ms-duplex终于ä¸éœ€è¦ä½¿ç”¨å®šæ—¶å™¨å®žçŽ°åŒå‘绑定了
+ // http://updates.html5rocks.com/2015/04/DOM-attributes-now-on-the-prototype
+ // https://docs.google.com/document/d/1jwA8mtClwxI-QJuHT7872Z0pxpZz8PBkf2bGAbsUtqs/edit?pli=1
+ watchValueInTimer = avalon.tick
}
- style.visibility = has ? visible : ""
- }
- data.display = display
- parseExprProxy(data.value, vmodels, data)
-}
+ } // jshint ignore:line
+//处ç†radio, checkbox, text, textarea, password
+ duplexBinding.INPUT = function (element, evaluator, data) {
+ var $type = element.type,
+ bound = data.bound,
+ $elem = avalon(element),
+ composing = false
-bindingExecutors.visible = function(val, elem, data) {
- elem.style.display = val ? data.display : "none"
-}
+ function callback(value) {
+ data.changed.call(this, value, data)
+ }
-var rdash = /\(([^)]*)\)/
-bindingHandlers.on = function(data, vmodels) {
- var value = data.value
- var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10
- if (typeof bindingHandlers.on[eventType + "Hook"] === "function") {
- bindingHandlers.on[eventType + "Hook"](data)
- }
- if (value.indexOf("(") > 0 && value.indexOf(")") > -1) {
- var matched = (value.match(rdash) || ["", ""])[1].trim()
- if (matched === "" || matched === "$event") { // aaa() aaa($event)当æˆaaa处ç†
- value = value.replace(rdash, "")
+ function compositionStart() {
+ composing = true
}
- }
- parseExprProxy(value, vmodels, data)
-}
-bindingExecutors.on = function(callback, elem, data) {
- data.type = "on"
- callback = function(e) {
- var fn = data.evaluator || noop
- return fn.apply(this, data.args.concat(e))
- }
- var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10
- if (eventType === "scan") {
- callback.call(elem, {
- type: eventType
- })
- } else if (typeof data.specialBind === "function") {
- data.specialBind(elem, callback)
- } else {
- var removeFn = avalon.bind(elem, eventType, callback)
- }
- data.rollback = function() {
- if (typeof data.specialUnbind === "function") {
- data.specialUnbind()
- } else {
- avalon.unbind(elem, eventType, removeFn)
+ function compositionEnd() {
+ composing = false
}
- }
-}
+ //当valueå˜åŒ–时改å˜model的值
-bindingHandlers.widget = function(data, vmodels) {
- var args = data.value.match(rword)
- var elem = data.element
- var widget = args[0]
- var id = args[1]
- if (!id || id === "$") {//没有定义或为$时,å–组件å+éšæœºæ•°
- id = generateID(widget)
- }
- var optName = args[2] || widget//没有定义,å–组件å
- var constructor = avalon.ui[widget]
- if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname"
- vmodels = elem.vmodels || vmodels
- for (var i = 0, v; v = vmodels[i++]; ) {
- if (v.hasOwnProperty(optName) && typeof v[optName] === "object") {
- var vmOptions = v[optName]
- vmOptions = vmOptions.$model || vmOptions
- break
+ var updateVModel = function () {
+ if (composing) //处ç†ä¸­æ–‡è¾“入法在minlengh下引å‘çš„BUG
+ return
+ var val = element.oldValue = element.value //防止递归调用形æˆæ­»å¾ªçŽ¯
+ var lastValue = data.pipe(val, data, "get")
+ if ($elem.data("duplexObserve") !== false) {
+ evaluator(lastValue)
+ callback.call(element, lastValue)
+ if ($elem.data("duplex-focus")) {
+ avalon.nextTick(function () {
+ element.focus()
+ })
+ }
}
}
- if (vmOptions) {
- var wid = vmOptions[widget + "Id"]
- if (typeof wid === "string") {
- id = wid
- }
- }
- //抽å–data-tooltip-textã€data-tooltip-attr属性,组æˆä¸€ä¸ªé…置对象
- var widgetData = avalon.getWidgetData(elem, widget)
- data.value = [widget, id, optName].join(",")
- data[widget + "Id"] = id
- data.evaluator = noop
- elem.msData["ms-widget-id"] = id
- var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData)
- elem.removeAttribute("ms-widget")
- var vmodel = constructor(elem, data, vmodels) || {} //防止组件ä¸è¿”回VM
- if (vmodel.$id) {
- avalon.vmodels[id] = vmodel
- createSignalTower(elem, vmodel)
- if (vmodel.hasOwnProperty("$init")) {
- vmodel.$init(function() {
- avalon.scan(elem, [vmodel].concat(vmodels))
- if (typeof options.onInit === "function") {
- options.onInit.call(elem, vmodel, options, vmodels)
- }
- })
+ //当modelå˜åŒ–æ—¶,它就会改å˜value的值
+ data.handler = function () {
+ var val = data.pipe(evaluator(), data, "set") + ""
+ if (val !== element.oldValue) {
+ element.value = val
}
- data.rollback = function() {
- try {
- vmodel.widgetElement = null
- vmodel.$remove()
- } catch (e) {
+ }
+ if (data.isChecked || $type === "radio") {
+ updateVModel = function () {
+ if ($elem.data("duplexObserve") !== false) {
+ var lastValue = data.pipe(element.value, data, "get")
+ evaluator(lastValue)
+ callback.call(element, lastValue)
}
- elem.msData = {}
- delete avalon.vmodels[vmodel.$id]
}
- addSubscribers(data, widgetList)
- if (window.chrome) {
- elem.addEventListener("DOMNodeRemovedFromDocument", function() {
- setTimeout(removeSubscribers)
- })
+ data.handler = function () {
+ var val = evaluator()
+ var checked = data.isChecked ? !!val : val + "" === element.value
+ element.checked = element.oldValue = checked
+ }
+ bound("click", updateVModel)
+ } else if ($type === "checkbox") {
+ updateVModel = function () {
+ if ($elem.data("duplexObserve") !== false) {
+ var method = element.checked ? "ensure" : "remove"
+ var array = evaluator()
+ if (!Array.isArray(array)) {
+ log("ms-duplex应用于checkbox上è¦å¯¹åº”一个数组")
+ array = [array]
+ }
+ avalon.Array[method](array, data.pipe(element.value, data, "get"))
+ callback.call(element, array)
+ }
+ }
+ data.handler = function () {
+ var array = [].concat(evaluator()) //强制转æ¢ä¸ºæ•°ç»„
+ element.checked = array.indexOf(data.pipe(element.value, data, "get")) > -1
}
+ bound("change", updateVModel)
} else {
- avalon.scan(elem, vmodels)
- }
- } else if (vmodels.length) { //如果该组件还没有加载,那么ä¿å­˜å½“å‰çš„vmodels
- elem.vmodels = vmodels
- }
-}
-var widgetList = []
-//ä¸å­˜åœ¨ bindingExecutors.widget
-//åŒå·¥ç»‘定
-var duplexBinding = bindingHandlers.duplex = function(data, vmodels) {
- var elem = data.element,
- hasCast
- parseExprProxy(data.value, vmodels, data, 0, 1)
-
- data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop
- if (data.evaluator && data.args) {
- var params = []
- var casting = oneObject("string,number,boolean,checked")
- if (elem.type === "radio" && data.param === "") {
- data.param = "checked"
- }
- if (elem.msData) {
- elem.msData["ms-duplex"] = data.value
- }
- data.param.replace(/\w+/g, function(name) {
- if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) {
- if (name === "radio")
- log("ms-duplex-radioå·²ç»æ›´å为ms-duplex-checked")
- name = "checked"
- data.isChecked = true
- }
- if (name === "bool") {
- name = "boolean"
- log("ms-duplex-boolå·²ç»æ›´å为ms-duplex-boolean")
- } else if (name === "text") {
- name = "string"
- log("ms-duplex-textå·²ç»æ›´å为ms-duplex-string")
- }
- if (casting[name]) {
- hasCast = true
- }
- avalon.Array.ensure(params, name)
- })
- if (!hasCast) {
- params.push("string")
- }
- data.param = params.join("-")
- data.bound = function(type, callback) {
- if (elem.addEventListener) {
- elem.addEventListener(type, callback, false)
- } else {
- elem.attachEvent("on" + type, callback)
+ var events = element.getAttribute("data-duplex-event") || "input"
+ if (element.attributes["data-event"]) {
+ log("data-event指令已ç»åºŸå¼ƒï¼Œè¯·æ”¹ç”¨data-duplex-event")
}
- var old = data.rollback
- data.rollback = function() {
- elem.avalonSetter = null
- avalon.unbind(elem, type, callback)
- old && old()
+ events.replace(rword, function (name) {
+ switch (name) {
+ case "input":
+ bound("input", updateVModel)
+ bound("DOMAutoComplete", updateVModel)
+ if (!IEVersion) {
+ bound("compositionstart", compositionStart)
+ bound("compositionend", compositionEnd)
+ }
+ break
+ default:
+ bound(name, updateVModel)
+ break
+ }
+ })
+ bound("focus", function () {
+ element.msFocus = true
+ })
+ bound("blur", function () {
+ element.msFocus = false
+ })
+ if (rmsinput.test($type)) {
+ watchValueInTimer(function () {
+ if (root.contains(element)) {
+ if (!element.msFocus && element.oldValue !== element.value) {
+ updateVModel()
+ }
+ } else if (!element.msRetain) {
+ return false
+ }
+ })
}
+
+ element.avalonSetter = updateVModel
}
- for (var i in avalon.vmodels) {
- var v = avalon.vmodels[i]
- v.$fire("avalon-ms-duplex-init", data)
- }
- var cpipe = data.pipe || (data.pipe = pipe)
- cpipe(null, data, "init")
- var tagName = elem.tagName
- duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data)
- }
-}
-//ä¸å­˜åœ¨ bindingExecutors.duplex
-function fixNull(val) {
- return val == null ? "" : val
-}
-avalon.duplexHooks = {
- checked: {
- get: function(val, data) {
- return !data.element.oldValue
- }
- },
- string: {
- get: function(val) { //åŒæ­¥åˆ°VM
- return val
- },
- set: fixNull
- },
- "boolean": {
- get: function(val) {
- return val === "true"
- },
- set: fixNull
- },
- number: {
- get: function(val) {
- return isFinite(val) ? parseFloat(val) || 0 : val
- },
- set: fixNull
+
+ element.oldValue = element.value
+ avalon.injectBinding(data)
+ callback.call(element, element.value)
}
-}
+ duplexBinding.TEXTAREA = duplexBinding.INPUT
+ duplexBinding.SELECT = function (element, evaluator, data) {
+ var $elem = avalon(element)
-function pipe(val, data, action, e) {
- data.param.replace(/\w+/g, function(name) {
- var hook = avalon.duplexHooks[name]
- if (hook && typeof hook[action] === "function") {
- val = hook[action](val, data)
- }
- })
- return val
-}
-
-var TimerID, ribbon = []
-function W3CFire(el, name, detail) {
- var event = DOC.createEvent("Events")
- event.initEvent(name, true, true)
- event.fireByAvalon = true//ç­¾å,标记事件是由avalon触å‘
- //event.isTrusted = false 设置这个opera会报错
- if (detail)
- event.detail = detail
- el.dispatchEvent(event)
-}
-
-
-avalon.tick = function(fn) {
- if (ribbon.push(fn) === 1) {
- TimerID = setInterval(ticker, 60)
- }
-}
-
-function ticker() {
- for (var n = ribbon.length - 1; n >= 0; n--) {
- var el = ribbon[n]
- if (el() === false) {
- ribbon.splice(n, 1)
- }
- }
- if (!ribbon.length) {
- clearInterval(TimerID)
- }
-}
-
-var watchValueInTimer = noop
-new function() {
- try {//#272 IE9-IE11, firefox
- var setters = {}
- var aproto = HTMLInputElement.prototype
- var bproto = HTMLTextAreaElement.prototype
- function newSetter(value) {
- if (avalon.contains(root, this)) {
- setters[this.tagName].call(this, value)
- if (this.avalonSetter) {
- this.avalonSetter()
+ function updateVModel() {
+ if ($elem.data("duplexObserve") !== false) {
+ var val = $elem.val() //字符串或字符串数组
+ if (Array.isArray(val)) {
+ val = val.map(function (v) {
+ return data.pipe(v, data, "get")
+ })
+ } else {
+ val = data.pipe(val, data, "get")
}
+ if (val + "" !== element.oldValue) {
+ evaluator(val)
+ }
+ data.changed.call(element, val, data)
}
}
- var inputProto = HTMLInputElement.prototype
- Object.getOwnPropertyNames(inputProto) //æ•…æ„引å‘IE6-8ç­‰æµè§ˆå™¨æŠ¥é”™
- setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set
- Object.defineProperty(aproto, "value", {
- set: newSetter
- })
- setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set
- Object.defineProperty(bproto, "value", {
- set: newSetter
- })
- } catch (e) {
- watchValueInTimer = avalon.tick
- }
-}
-
-//处ç†radio, checkbox, text, textarea, password
-duplexBinding.INPUT = function(element, evaluator, data) {
- var type = element.type,
- bound = data.bound,
- $elem = avalon(element),
- composing = false
- function callback(value) {
- data.changed.call(this, value, data)
- }
- function compositionStart() {
- composing = true
- }
- function compositionEnd() {
- composing = false
- }
- //当valueå˜åŒ–时改å˜model的值
- function updateVModel() {
- if (composing)//处ç†ä¸­æ–‡è¾“入法在minlengh下引å‘çš„BUG
- return
- var val = element.oldValue = element.value //防止递归调用形æˆæ­»å¾ªçŽ¯
- var lastValue = data.pipe(val, data, "get")
- if ($elem.data("duplex-observe") !== false) {
- evaluator(lastValue)
- callback.call(element, lastValue)
- if ($elem.data("duplex-focus")) {
- avalon.nextTick(function() {
- element.focus()
- })
+ data.handler = function () {
+ var val = evaluator()
+ val = val && val.$model || val
+ if (Array.isArray(val)) {
+ if (!element.multiple) {
+ log("ms-duplex在<select multiple=true>上è¦æ±‚对应一个数组")
+ }
+ } else {
+ if (element.multiple) {
+ log("ms-duplex在<select multiple=false>ä¸èƒ½å¯¹åº”一个数组")
+ }
+ }
+ //å¿…é¡»å˜æˆå­—符串åŽæ‰èƒ½æ¯”较
+ val = Array.isArray(val) ? val.map(String) : val + ""
+ if (val + "" !== element.oldValue) {
+ $elem.val(val)
+ element.oldValue = val + ""
}
}
- }
- //当modelå˜åŒ–æ—¶,它就会改å˜value的值
- data.handler = function() {
- var val = data.pipe(evaluator(), data, "set")
- if (val !== element.oldValue) {
- element.value = val
+ data.bound("change", updateVModel)
+ element.msCallback = function () {
+ avalon.injectBinding(data)
+ data.changed.call(element, evaluator(), data)
}
}
- if (data.isChecked || element.type === "radio") {
- updateVModel = function() {
- if ($elem.data("duplex-observe") !== false) {
- var lastValue = data.pipe(element.value, data, "get")
- evaluator(lastValue)
- callback.call(element, lastValue)
+// bindingHandlers.html 定义在if.js
+ bindingExecutors.html = function (val, elem, data) {
+ val = val == null ? "" : val
+ var isHtmlFilter = "group" in data
+ var parent = isHtmlFilter ? elem.parentNode : elem
+ if (!parent)
+ return
+ if (typeof val === "string") {
+ var fragment = avalon.parseHTML(val)
+ } else if (val.nodeType === 11) { //å°†val转æ¢ä¸ºæ–‡æ¡£ç¢Žç‰‡
+ fragment = val
+ } else if (val.nodeType === 1 || val.item) {
+ var nodes = val.nodeType === 1 ? val.childNodes : val.item
+ fragment = hyperspace.cloneNode(true)
+ while (nodes[0]) {
+ fragment.appendChild(nodes[0])
}
}
- data.handler = function() {
- var val = evaluator()
- var checked = data.isChecked ? !!val : val + "" === element.value
- element.checked = element.oldValue = checked
- }
- bound("click", updateVModel)
- } else if (type === "checkbox") {
- updateVModel = function() {
- if ($elem.data("duplex-observe") !== false) {
- var method = element.checked ? "ensure" : "remove"
- var array = evaluator()
- if (!Array.isArray(array)) {
- log("ms-duplex应用于checkbox上è¦å¯¹åº”一个数组")
- array = [array]
+ if (!fragment.firstChild) {
+ fragment.appendChild(DOC.createComment("ms-html"))
+ }
+ nodes = avalon.slice(fragment.childNodes)
+ //æ’å…¥å ä½ç¬¦, 如果是过滤器,需è¦æœ‰èŠ‚制地移除指定的数é‡,如果是html指令,直接清空
+ if (isHtmlFilter) {
+ var n = data.group,
+ i = 1
+
+ data.group = nodes.length
+ data.element = nodes[0]
+
+ while (i < n) {
+ var node = elem.nextSibling
+ if (node) {
+ parent.removeChild(node)
+ i++
}
- avalon.Array[method](array, data.pipe(element.value, data, "get"))
- callback.call(element, array)
}
+ parent.replaceChild(fragment, elem)
+ } else {
+ avalon.clearHTML(parent).appendChild(fragment)
}
- data.handler = function() {
- var array = [].concat(evaluator()) //强制转æ¢ä¸ºæ•°ç»„
- element.checked = array.indexOf(data.pipe(element.value, data, "get")) > -1
- }
- bound("change", updateVModel)
- } else {
- var events = element.getAttribute("data-duplex-event") || element.getAttribute("data-event") || "input"
- if (element.attributes["data-event"]) {
- log("data-event指令已ç»åºŸå¼ƒï¼Œè¯·æ”¹ç”¨data-duplex-event")
- }
- events.replace(rword, function(name) {
- switch (name) {
- case "input":
- bound("input", updateVModel)
- bound("DOMAutoComplete", updateVModel)
- if (!IEVersion) {
- bound("compositionstart", compositionStart)
- bound("compositionend", compositionEnd)
+ scanNodeArray(nodes, data.vmodels)
+ }
+ bindingHandlers["if"] =
+ bindingHandlers.data =
+ bindingHandlers.text =
+ bindingHandlers.html =
+ function (data, vmodels) {
+ parseExprProxy(data.value, vmodels, data)
}
- break
- default:
- bound(name, updateVModel)
- break
+
+ bindingExecutors["if"] = function (val, elem, data) {
+ if (val) { //æ’回DOMæ ‘
+ if (elem.nodeType === 8) {
+ elem.parentNode.replaceChild(data.template, elem)
+ elem = data.element = data.template //这时å¯èƒ½ä¸ºnull
}
- })
+ if (elem.getAttribute(data.name)) {
+ elem.removeAttribute(data.name)
+ scanAttr(elem, data.vmodels)
+ }
+ data.rollback = null
+ } else { //移出DOM树,并用注释节点å æ®åŽŸä½ç½®
+ if (elem.nodeType === 1) {
+ var node = data.element = DOC.createComment("ms-if")
+ elem.parentNode.replaceChild(node, elem)
+ data.template = elem //元素节点
+ ifGroup.appendChild(elem)
+ data.rollback = function () {
+ if (elem.parentNode === ifGroup) {
+ ifGroup.removeChild(elem)
+ }
+ }
+ }
+ }
}
+//ms-important绑定已ç»åœ¨scanTag 方法中实现
+//ms-include绑定已由ms-attr绑定实现
- if (/text|password/.test(element.type)) {
- watchValueInTimer(function() {
- if (root.contains(element)) {
- if (element.value !== element.oldValue) {
- updateVModel()
- }
- } else if (!element.msRetain) {
- return false
+ var rdash = /\(([^)]*)\)/
+ bindingHandlers.on = function (data, vmodels) {
+ var value = data.value
+ data.type = "on"
+ var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10
+ if (typeof bindingHandlers.on[eventType + "Hook"] === "function") {
+ bindingHandlers.on[eventType + "Hook"](data)
+ }
+ if (value.indexOf("(") > 0 && value.indexOf(")") > -1) {
+ var matched = (value.match(rdash) || ["", ""])[1].trim()
+ if (matched === "" || matched === "$event") { // aaa() aaa($event)当æˆaaa处ç†
+ value = value.replace(rdash, "")
}
- })
+ }
+ parseExprProxy(value, vmodels, data)
}
-
- element.avalonSetter = updateVModel
- element.oldValue = element.value
- registerSubscriber(data)
- callback.call(element, element.value)
-}
-duplexBinding.TEXTAREA = duplexBinding.INPUT
-duplexBinding.SELECT = function(element, evaluator, data) {
- var $elem = avalon(element)
- function updateVModel() {
- if ($elem.data("duplex-observe") !== false) {
- var val = $elem.val() //字符串或字符串数组
- if (Array.isArray(val)) {
- val = val.map(function(v) {
- return data.pipe(v, data, "get")
- })
+
+ bindingExecutors.on = function (callback, elem, data) {
+ callback = function (e) {
+ var fn = data.evaluator || noop
+ return fn.apply(this, data.args.concat(e))
+ }
+ var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10
+ if (eventType === "scan") {
+ callback.call(elem, {
+ type: eventType
+ })
+ } else if (typeof data.specialBind === "function") {
+ data.specialBind(elem, callback)
+ } else {
+ var removeFn = avalon.bind(elem, eventType, callback)
+ }
+ data.rollback = function () {
+ if (typeof data.specialUnbind === "function") {
+ data.specialUnbind()
} else {
- val = data.pipe(val, data, "get")
- }
- if (val + "" !== element.oldValue) {
- evaluator(val)
+ avalon.unbind(elem, eventType, removeFn)
}
- data.changed.call(element, val, data)
}
}
- data.handler = function() {
- var val = evaluator()
- val = val && val.$model || val
- if (Array.isArray(val)) {
- if (!element.multiple) {
- log("ms-duplex在<select multiple=true>上è¦æ±‚对应一个数组")
+ bindingHandlers.repeat = function (data, vmodels) {
+ var type = data.type
+ parseExprProxy(data.value, vmodels, data, 0, 1)
+ var freturn = false
+ try {
+ var $repeat = data.$repeat = data.evaluator.apply(0, data.args || [])
+ var xtype = avalon.type($repeat)
+ if (xtype !== "object" && xtype !== "array") {
+ freturn = true
+ avalon.log("warning:" + data.value + "åªèƒ½æ˜¯å¯¹è±¡æˆ–数组")
}
- } else {
- if (element.multiple) {
- log("ms-duplex在<select multiple=false>ä¸èƒ½å¯¹åº”一个数组")
- }
- }
- //å¿…é¡»å˜æˆå­—符串åŽæ‰èƒ½æ¯”较
- val = Array.isArray(val) ? val.map(String) : val + ""
- if (val + "" !== element.oldValue) {
- $elem.val(val)
- element.oldValue = val + ""
- }
- }
- data.bound("change", updateVModel)
- checkScan(element, function() {
- registerSubscriber(data)
- data.changed.call(element, evaluator(), data)
- }, NaN)
-}
-
-
-bindingHandlers.repeat = function(data, vmodels) {
- var type = data.type
- parseExprProxy(data.value, vmodels, data, 0, 1)
- data.proxies = []
- var freturn = false
- try {
- var $repeat = data.$repeat = data.evaluator.apply(0, data.args || [])
- var xtype = avalon.type($repeat)
- if (xtype !== "object" && xtype !== "array") {
+ } catch (e) {
freturn = true
- avalon.log("warning:" + data.value + "对应类型ä¸æ­£ç¡®")
- }
- } catch (e) {
- freturn = true
- avalon.log("warning:" + data.value + "编译出错")
- }
-
- var arr = data.value.split(".") || []
- if (arr.length > 1) {
- arr.pop()
- var n = arr[0]
- for (var i = 0, v; v = vmodels[i++]; ) {
- if (v && v.hasOwnProperty(n)) {
- var events = v[n].$events || {}
- events[subscribers] = events[subscribers] || []
- events[subscribers].push(data)
- break
- }
}
- }
- var elem = data.element
- elem.removeAttribute(data.name)
- data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels)
- data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels)
- var signature = generateID(type)
- var comment = data.element = DOC.createComment(signature + ":end")
- data.clone = DOC.createComment(signature)
- hyperspace.appendChild(comment)
-
- if (type === "each" || type === "with") {
- data.template = elem.innerHTML.trim()
- avalon.clearHTML(elem).appendChild(comment)
- } else {
- data.template = elem.outerHTML.trim()
- elem.parentNode.replaceChild(comment, elem)
- }
- data.template = avalon.parseHTML(data.template)
- data.rollback = function() {
+ var arr = data.value.split(".") || []
+ if (arr.length > 1) {
+ arr.pop()
+ var n = arr[0]
+ for (var i = 0, v; v = vmodels[i++];) {
+ if (v && v.hasOwnProperty(n)) {
+ var events = v[n].$events || {}
+ events[subscribers] = events[subscribers] || []
+ events[subscribers].push(data)
+ break
+ }
+ }
+ }
var elem = data.element
- if (!elem)
+ elem.removeAttribute(data.name)
+
+ data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels)
+ data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels)
+ var signature = generateID(type)
+ var comment = data.element = DOC.createComment(signature + ":end")
+ data.clone = DOC.createComment(signature)
+ hyperspace.appendChild(comment)
+
+ if (type === "each" || type === "with") {
+ data.template = elem.innerHTML.trim()
+ avalon.clearHTML(elem).appendChild(comment)
+ } else {
+ data.template = elem.outerHTML.trim()
+ elem.parentNode.replaceChild(comment, elem)
+ }
+ data.template = avalon.parseHTML(data.template)
+ data.rollback = function () {
+ var elem = data.element
+ if (!elem)
+ return
+ bindingExecutors.repeat.call(data, "clear")
+ var parentNode = elem.parentNode
+ var content = data.template
+ var target = content.firstChild
+ parentNode.replaceChild(content, elem)
+ var start = data.$with
+ start && start.parentNode && start.parentNode.removeChild(start)
+ target = data.element = data.type === "repeat" ? target : parentNode
+ }
+ if (freturn) {
return
- bindingExecutors.repeat.call(data, "clear")
- var parentNode = elem.parentNode
- var content = data.template
- var target = content.firstChild
- parentNode.replaceChild(content, elem)
- var start = data.$stamp
- start && start.parentNode && start.parentNode.removeChild(start)
- target = data.element = data.type === "repeat" ? target : parentNode
- }
- if (freturn) {
- return
- }
- data.handler = bindingExecutors.repeat
- data.$outer = {}
- var check0 = "$key"
- var check1 = "$val"
- if (Array.isArray($repeat)) {
- check0 = "$first"
- check1 = "$last"
- }
- for (var i = 0, p; p = vmodels[i++]; ) {
- if (p.hasOwnProperty(check0) && p.hasOwnProperty(check1)) {
- data.$outer = p
- break
- }
- }
- var $events = $repeat.$events
- var $list = ($events || {})[subscribers]
- if ($list && avalon.Array.ensure($list, data)) {
- addSubscribers(data, $list)
- }
- if (xtype === "object") {
- data.$with = true
- var pool = !$events ? {} : $events.$withProxyPool || ($events.$withProxyPool = {})
- data.handler("append", $repeat, pool)
- } else if ($repeat.length) {
- data.handler("add", 0, $repeat.length)
- }
-}
-
-bindingExecutors.repeat = function(method, pos, el) {
- if (method) {
- var data = this
- var end = data.element
- var parent = end.parentNode
- var proxies = data.proxies
- var transation = hyperspace.cloneNode(false)
- switch (method) {
- case "add": //在posä½ç½®åŽæ·»åŠ el数组(pos为数字,el为数组)
- var n = pos + el
- var array = data.$repeat
- var last = array.length - 1
- var fragments = []
- var start = locateNode(data, pos)
- for (var i = pos; i < n; i++) {
- var proxy = eachProxyAgent(i, data)
- proxies.splice(i, 0, proxy)
- shimController(data, transation, proxy, fragments)
- }
- parent.insertBefore(transation, start)
- for (var i = 0, fragment; fragment = fragments[i++]; ) {
- scanNodeArray(fragment.nodes, fragment.vmodels)
- fragment.nodes = fragment.vmodels = null
- }
- break
- case "del": //å°†posåŽçš„el个元素删掉(pos, el都是数字)
- start = proxies[pos].$stamp
- end = locateNode(data, pos + el)
- sweepNodes(start, end)
- var removed = proxies.splice(pos, el)
- recycleProxies(removed, "each")
- break
- case "clear":
- var check = data.$stamp || proxies[0]
- if (check) {
- start = check.$stamp || check
- sweepNodes(start, end)
- }
- recycleProxies(proxies, "each")
+ }
+ data.handler = bindingExecutors.repeat
+ data.$outer = {}
+ var check0 = "$key"
+ var check1 = "$val"
+ if (Array.isArray($repeat)) {
+ $repeat.$map[data.param || "el"] = 1
+ check0 = "$first"
+ check1 = "$last"
+ }
+ for (i = 0; v = vmodels[i++];) {
+ if (v.hasOwnProperty(check0) && v.hasOwnProperty(check1)) {
+ data.$outer = v
break
- case "move":
- start = proxies[0].$stamp
- var signature = start.nodeValue
- var rooms = []
- var room = [], node
- sweepNodes(start, end, function() {
- room.unshift(this)
- if (this.nodeValue === signature) {
- rooms.unshift(room)
- room = []
+ }
+ }
+ var $events = $repeat.$events
+ var $list = ($events || {})[subscribers]
+ if ($list && avalon.Array.ensure($list, data)) {
+ addSubscribers(data, $list)
+ }
+ if (xtype === "object") {
+ data.$with = true
+ var pool = !$events ? {} : $events.$withProxyPool || ($events.$withProxyPool = {})
+ data.handler("append", $repeat, pool)
+ } else if ($repeat.length) {
+ data.handler("add", 0, $repeat.length)
+ }
+ }
+
+ bindingExecutors.repeat = function (method, pos, el) {
+ if (method) {
+ var data = this, start, fragment
+ var end = data.element
+ var comments = getComments(data)
+ var parent = end.parentNode
+ var transation = hyperspace.cloneNode(false)
+ switch (method) {
+ case "add": //在posä½ç½®åŽæ·»åŠ el数组(pos为æ’å…¥ä½ç½®,el为è¦æ’入的个数)
+ var n = pos + el
+ var fragments = []
+ var array = data.$repeat
+ for (var i = pos; i < n; i++) {
+ var proxy = array.$proxy[i]
+ proxy.$outer = data.$outer
+ shimController(data, transation, proxy, fragments)
}
- })
- sortByIndex(proxies, pos)
- sortByIndex(rooms, pos)
- while (room = rooms.shift()) {
- while (node = room.shift()) {
- transation.appendChild(node)
+ parent.insertBefore(transation, comments[pos] || end)
+ for (i = 0; fragment = fragments[i++];) {
+ scanNodeArray(fragment.nodes, fragment.vmodels)
+ fragment.nodes = fragment.vmodels = null
}
- }
- parent.insertBefore(transation, end)
- break
- case "index": //å°†proxies中的第pos个起的所有元素é‡æ–°ç´¢å¼•
- var last = proxies.length - 1
- for (; el = proxies[pos]; pos++) {
- el.$index = pos
- el.$first = pos === 0
- el.$last = pos === last
- }
- return
- case "set": //å°†proxies中的第pos个元素的VM设置为el(pos为数字,elä»»æ„)
- var proxy = proxies[pos]
- if (proxy) {
- notifySubscribers(proxy.$events.$index)
- }
- return
- case "append": //å°†pos的键值对从el中å–出(pos为一个普通对象,el为预先生æˆå¥½çš„代ç†VM对象池)
- var pool = el
- var keys = []
- var fragments = []
- for (var key in pos) { //得到所有键å
- if (pos.hasOwnProperty(key) && key !== "hasOwnProperty") {
- keys.push(key)
+ break
+ case "del": //å°†posåŽçš„el个元素删掉(pos, el都是数字)
+ sweepNodes(comments[pos], comments[pos + el] || end)
+ break
+ case "clear":
+ start = comments[0]
+ if (start) {
+ sweepNodes(start, end)
}
- }
- if (data.sortedCallback) { //如果有回调,则让它们排åº
- var keys2 = data.sortedCallback.call(parent, keys)
- if (keys2 && Array.isArray(keys2) && keys2.length) {
- keys = keys2
+ break
+ case "move":
+ start = comments[0]
+ if (start) {
+ var signature = start.nodeValue
+ var rooms = []
+ var room = [],
+ node
+ sweepNodes(start, end, function () {
+ room.unshift(this)
+ if (this.nodeValue === signature) {
+ rooms.unshift(room)
+ room = []
+ }
+ })
+ sortByIndex(rooms, pos)
+ while (room = rooms.shift()) {
+ while (node = room.shift()) {
+ transation.appendChild(node)
+ }
+ }
+ parent.insertBefore(transation, end)
}
- }
- for (var i = 0, key; key = keys[i++]; ) {
- if (key !== "hasOwnProperty") {
- if (!pool[key]) {
- pool[key] = withProxyAgent(key, data)
+ break
+ case "append": //å°†pos的键值对从el中å–出(pos为一个普通对象,el为预先生æˆå¥½çš„代ç†VM对象池)
+ var pool = el
+ var keys = []
+ fragments = []
+ for (var key in pos) { //得到所有键å
+ if (pos.hasOwnProperty(key) && key !== "hasOwnProperty") {
+ keys.push(key)
}
- shimController(data, transation, pool[key], fragments)
}
+ if (data.sortedCallback) { //如果有回调,则让它们排åº
+ var keys2 = data.sortedCallback.call(parent, keys)
+ if (keys2 && Array.isArray(keys2) && keys2.length) {
+ keys = keys2
+ }
+ }
+ for (i = 0; key = keys[i++];) {
+ if (key !== "hasOwnProperty") {
+ if (!pool[key]) {
+ pool[key] = withProxyAgent(key, data)
+ }
+ shimController(data, transation, pool[key], fragments)
+ }
+ }
+ var comment = data.$with = data.clone
+ parent.insertBefore(comment, end)
+ parent.insertBefore(transation, end)
+ for (i = 0; fragment = fragments[i++];) {
+ scanNodeArray(fragment.nodes, fragment.vmodels)
+ fragment.nodes = fragment.vmodels = null
+ }
+ break
+ }
+ if (method === "clear")
+ method = "del"
+ var callback = data.renderedCallback || noop,
+ args = arguments
+ checkScan(parent, function () {
+ callback.apply(parent, args)
+ if (parent.oldValue && parent.tagName === "SELECT") { //fix #503
+ avalon(parent).val(parent.oldValue.split(","))
}
- var comment = data.$stamp = data.clone
- parent.insertBefore(comment, end)
- parent.insertBefore(transation, end)
- for (var i = 0, fragment; fragment = fragments[i++]; ) {
- scanNodeArray(fragment.nodes, fragment.vmodels)
- fragment.nodes = fragment.vmodels = null
- }
- break
+ }, NaN)
}
- if (method === "clear")
- method = "del"
- var callback = data.renderedCallback || noop,
- args = arguments
- checkScan(parent, function() {
- callback.apply(parent, args)
- if (parent.oldValue && parent.tagName === "SELECT") { //fix #503
- avalon(parent).val(parent.oldValue.split(","))
- }
- }, NaN)
}
-}
-"with,each".replace(rword, function(name) {
- bindingHandlers[name] = bindingHandlers.repeat
-})
+ "with,each".replace(rword, function (name) {
+ bindingHandlers[name] = bindingHandlers.repeat
+ })
-function shimController(data, transation, proxy, fragments) {
- var content = data.template.cloneNode(true)
- var nodes = avalon.slice(content.childNodes)
- if (proxy.$stamp) {
- content.insertBefore(proxy.$stamp, content.firstChild)
+ function shimController(data, transation, proxy, fragments) {
+ var content = data.template.cloneNode(true)
+ var nodes = avalon.slice(content.childNodes)
+ if (!data.$with) {
+ content.insertBefore(data.clone.cloneNode(false), content.firstChild)
+ }
+ transation.appendChild(content)
+ var nv = [proxy].concat(data.vmodels)
+ var fragment = {
+ nodes: nodes,
+ vmodels: nv
+ }
+ fragments.push(fragment)
}
- transation.appendChild(content)
- var nv = [proxy].concat(data.vmodels)
- var fragment = {
- nodes: nodes,
- vmodels: nv
+
+ function getComments(data) {
+ var end = data.element
+ var signature = end.nodeValue.replace(":end", "")
+ var node = end.previousSibling
+ var array = []
+ while (node) {
+ if (node.nodeValue === signature) {
+ array.unshift(node)
+ }
+ node = node.previousSibling
+ }
+ return array
}
- fragments.push(fragment)
-}
-function locateNode(data, pos) {
- var proxy = data.proxies[pos]
- return proxy ? proxy.$stamp : data.element
-}
-function sweepNodes(start, end, callback) {
- while (true) {
- var node = end.previousSibling
- if (!node)
- break
- node.parentNode.removeChild(node)
- callback && callback.call(node)
- if (node === start) {
- break
+//移除掉start与end之间的节点(ä¿ç•™end)
+ function sweepNodes(start, end, callback) {
+ while (true) {
+ var node = end.previousSibling
+ if (!node)
+ break
+ node.parentNode.removeChild(node)
+ callback && callback.call(node)
+ if (node === start) {
+ break
+ }
}
}
-}
// 为ms-each,ms-with, ms-repeat会创建一个代ç†VM,
// 通过它们ä¿æŒä¸€ä¸ªä¸‹ä¸Šæ–‡ï¼Œè®©ç”¨æˆ·èƒ½è°ƒç”¨$index,$first,$last,$remove,$key,$val,$outer等属性与方法
// 所有代ç†VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现
-var eachProxyPool = []
-var withProxyPool = []
-function eachProxyFactory(name) {
- var source = {
- $host: [],
- $outer: {},
- $stamp: 1,
- $index: 0,
- $first: false,
- $last: false,
- $remove: avalon.noop
- }
- source[name] = {
- get: function() {
- return this.$host[this.$index]
- },
- set: function(val) {
- this.$host.set(this.$index, val)
- }
- }
- var second = {
- $last: 1,
- $first: 1,
- $index: 1
- }
- var proxy = modelFactory(source, second)
- var e = proxy.$events
- e[name] = e.$first = e.$last = e.$index
- proxy.$id = generateID("$proxy$each")
- return proxy
-}
-
-function eachProxyAgent(index, data) {
- var param = data.param || "el", proxy
- for (var i = 0, n = eachProxyPool.length; i < n; i++) {
- var candidate = eachProxyPool[i]
- if (candidate && candidate.hasOwnProperty(param)) {
- proxy = candidate
- eachProxyPool.splice(i, 1)
- }
- }
- if (!proxy) {
- proxy = eachProxyFactory(param)
- }
- var host = data.$repeat
- var last = host.length - 1
- proxy.$index = index
- proxy.$first = index === 0
- proxy.$last = index === last
- proxy.$host = host
- proxy.$outer = data.$outer
- proxy.$stamp = data.clone.cloneNode(false)
- proxy.$remove = function() {
- return host.removeAt(proxy.$index)
- }
- return proxy
-}
-
-function withProxyFactory() {
- var proxy = modelFactory({
- $key: "",
- $outer: {},
- $host: {},
- $val: {
- get: function() {
- return this.$host[this.$key]
- },
- set: function(val) {
- this.$host[this.$key] = val
+ var eachProxyPool = []
+ var withProxyPool = []
+
+ function eachProxyFactory() {
+ var source = {
+ $index: 0,
+ $first: false,
+ $last: false,
+ $map: {},
+ $host: [],
+ $outer: {},
+ $remove: avalon.noop,
+ el: {
+ get: function () {
+ var e = this.$events
+ var array = e.$index
+ e.$index = e.el //#817 通过$index为el收集ä¾èµ–
+ try {
+ return this.$host[this.$index]
+ } finally {
+ e.$index = array
+ }
+ },
+ set: function (val) {
+ this.$host.set(this.$index, val)
+ }
}
}
- }, {
- $val: 1
- })
- proxy.$id = generateID("$proxy$with")
- return proxy
-}
-
-function withProxyAgent(key, data) {
- var proxy = withProxyPool.pop()
- if (!proxy) {
- proxy = withProxyFactory()
- }
- var host = data.$repeat
- proxy.$key = key
- proxy.$host = host
- proxy.$outer = data.$outer
- if (host.$events) {
- proxy.$events.$val = host.$events[key]
- } else {
- proxy.$events = {}
- }
- return proxy
-}
-
-function recycleProxies(proxies, type) {
- var proxyPool = type === "each" ? eachProxyPool : withProxyPool
- avalon.each(proxies, function(key, proxy) {
- if (proxy.$events) {
- for (var i in proxy.$events) {
- if (Array.isArray(proxy.$events[i])) {
- proxy.$events[i].forEach(function(data) {
- if (typeof data === "object")
- disposeData(data)
- })
- proxy.$events[i].length = 0
+
+ var second = {
+ $last: 1,
+ $first: 1,
+ $index: 1
+ }
+ var proxy = modelFactory(source, second)
+ proxy.$id = generateID("$proxy$each")
+ return proxy
+ }
+
+ function eachProxyAgent(index, host) {
+ var proxy = eachProxyPool.shift()
+ if (!proxy) {
+ proxy = eachProxyFactory()
+ }
+ var last = host.length - 1
+ proxy.$index = index
+ proxy.$first = index === 0
+ proxy.$last = index === last
+ proxy.$map = host.$map
+ proxy.$host = host
+ proxy.$remove = function () {
+ return host.removeAt(proxy.$index)
+ }
+ return proxy
+ }
+
+ function withProxyFactory() {
+ var proxy = modelFactory({
+ $key: "",
+ $outer: {},
+ $host: {},
+ $val: {
+ get: function () {
+ return this.$host[this.$key]
+ },
+ set: function (val) {
+ this.$host[this.$key] = val
+ }
+ }
+ }, {
+ $val: 1
+ })
+ proxy.$id = generateID("$proxy$with")
+ return proxy
+ }
+
+ function withProxyAgent(key, data) {
+ var proxy = withProxyPool.pop()
+ if (!proxy) {
+ proxy = withProxyFactory()
+ }
+ var host = data.$repeat
+ proxy.$key = key
+ proxy.$host = host
+ proxy.$outer = data.$outer
+ if (host.$events) {
+ proxy.$events.$val = host.$events[key]
+ } else {
+ proxy.$events = {}
+ }
+ return proxy
+ }
+
+ function recycleProxies(proxies, type) {
+ var proxyPool = type === "each" ? eachProxyPool : withProxyPool
+ avalon.each(proxies, function (key, proxy) {
+ if (proxy.$events) {
+ for (var i in proxy.$events) {
+ if (Array.isArray(proxy.$events[i])) {
+ proxy.$events[i].forEach(function (data) {
+ if (typeof data === "object")
+ disposeData(data)
+ }) // jshint ignore:line
+ proxy.$events[i].length = 0
+ }
+ }
+ proxy.$host = proxy.$outer = {}
+ if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) {
+ proxyPool.pop()
}
}
- proxy.$host = proxy.$outer = {}
- if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) {
- proxyPool.pop()
+ })
+ if (type === "each")
+ proxies.length = 0
+ }
+
+ /*********************************************************************
+ * å„ç§æŒ‡ä»¤ *
+ **********************************************************************/
+//ms-skip绑定已ç»åœ¨scanTag 方法中实现
+// bindingHandlers.text 定义在if.js
+ bindingExecutors.text = function (val, elem) {
+ val = val == null ? "" : val //ä¸åœ¨é¡µé¢ä¸Šæ˜¾ç¤ºundefined null
+ if (elem.nodeType === 3) { //绑定在文本节点上
+ try { //IE对游离于DOM树外的节点赋值会报错
+ elem.data = val
+ } catch (e) {
+ }
+ } else { //绑定在特性节点上
+ elem.textContent = val
+ }
+ }
+ function parseDisplay(nodeName, val) {
+ //用于å–得此类标签的默认display值
+ var key = "_" + nodeName
+ if (!parseDisplay[key]) {
+ var node = DOC.createElement(nodeName)
+ root.appendChild(node)
+ if (W3C) {
+ val = getComputedStyle(node, null).display
+ } else {
+ val = node.currentStyle.display
}
+ root.removeChild(node)
+ parseDisplay[key] = val
}
- })
- if (type === "each")
- proxies.length = 0
-}
-
-
-
-
-/*********************************************************************
- * 自带过滤器 *
- **********************************************************************/
-var rscripts = /<script[^>]*>([\S\s]*?)<\/script\s*>/gim
-var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g
-var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig
-var rsanitize = {
- a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig,
- img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig,
- form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig
-}
-var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
-var rnoalphanumeric = /([^\#-~| |!])/g;
-
-function numberFormat(number, decimals, dec_point, thousands_sep) {
- //form http://phpjs.org/functions/number_format/
- //number 必需,è¦æ ¼å¼åŒ–çš„æ•°å­—
- //decimals å¯é€‰ï¼Œè§„定多少个å°æ•°ä½ã€‚
- //dec_point å¯é€‰ï¼Œè§„定用作å°æ•°ç‚¹çš„字符串(默认为 . )。
- //thousands_sep å¯é€‰ï¼Œè§„定用作åƒä½åˆ†éš”符的字符串(默认为 , ),如果设置了该å‚数,那么所有其他å‚数都是必需的。
- number = (number + '')
+ return parseDisplay[key]
+ }
+
+ avalon.parseDisplay = parseDisplay
+
+ bindingHandlers.visible = function (data, vmodels) {
+ var elem = avalon(data.element)
+ var display = elem.css("display")
+ if (display === "none") {
+ var style = elem[0].style
+ var has = /visibility/i.test(style.cssText)
+ var visible = elem.css("visibility")
+ style.display = ""
+ style.visibility = "hidden"
+ display = elem.css("display")
+ if (display === "none") {
+ display = parseDisplay(elem[0].nodeName)
+ }
+ style.visibility = has ? visible : ""
+ }
+ data.display = display
+ parseExprProxy(data.value, vmodels, data)
+ }
+
+ bindingExecutors.visible = function (val, elem, data) {
+ elem.style.display = val ? data.display : "none"
+ }
+ bindingHandlers.widget = function (data, vmodels) {
+ var args = data.value.match(rword)
+ var elem = data.element
+ var widget = args[0]
+ var id = args[1]
+ if (!id || id === "$") { //没有定义或为$时,å–组件å+éšæœºæ•°
+ id = generateID(widget)
+ }
+ var optName = args[2] || widget //没有定义,å–组件å
+ var constructor = avalon.ui[widget]
+ if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname"
+ vmodels = elem.vmodels || vmodels
+ for (var i = 0, v; v = vmodels[i++];) {
+ if (v.hasOwnProperty(optName) && typeof v[optName] === "object") {
+ var vmOptions = v[optName]
+ vmOptions = vmOptions.$model || vmOptions
+ break
+ }
+ }
+ if (vmOptions) {
+ var wid = vmOptions[widget + "Id"]
+ if (typeof wid === "string") {
+ log("warning!ä¸å†æ”¯æŒ" + widget + "Id")
+ id = wid
+ }
+ }
+ //抽å–data-tooltip-textã€data-tooltip-attr属性,组æˆä¸€ä¸ªé…置对象
+ var widgetData = avalon.getWidgetData(elem, widget)
+ data.value = [widget, id, optName].join(",")
+ data[widget + "Id"] = id
+ data.evaluator = noop
+ elem.msData["ms-widget-id"] = id
+ var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData)
+ elem.removeAttribute("ms-widget")
+ var vmodel = constructor(elem, data, vmodels) || {} //防止组件ä¸è¿”回VM
+ if (vmodel.$id) {
+ avalon.vmodels[id] = vmodel
+ createSignalTower(elem, vmodel)
+ try {
+ vmodel.$init(function () {
+ avalon.scan(elem, [vmodel].concat(vmodels))
+ if (typeof options.onInit === "function") {
+ options.onInit.call(elem, vmodel, options, vmodels)
+ }
+ })
+ } catch (e) {
+ }
+ data.rollback = function () {
+ try {
+ vmodel.widgetElement = null
+ vmodel.$remove()
+ } catch (e) {
+ }
+ elem.msData = {}
+ delete avalon.vmodels[vmodel.$id]
+ }
+ addSubscribers(data, widgetList)
+ if (window.chrome) {
+ elem.addEventListener("DOMNodeRemovedFromDocument", function () {
+ setTimeout(removeSubscribers)
+ })
+ }
+ } else {
+ avalon.scan(elem, vmodels)
+ }
+ } else if (vmodels.length) { //如果该组件还没有加载,那么ä¿å­˜å½“å‰çš„vmodels
+ elem.vmodels = vmodels
+ }
+ }
+ var widgetList = []
+//ä¸å­˜åœ¨ bindingExecutors.widget
+ /*********************************************************************
+ * 自带过滤器 *
+ **********************************************************************/
+ var rscripts = /<script[^>]*>([\S\s]*?)<\/script\s*>/gim
+ var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g
+ var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig
+ var rsanitize = {
+ a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig,
+ img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig,
+ form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig
+ }
+ var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
+ var rnoalphanumeric = /([^\#-~| |!])/g;
+
+ function numberFormat(number, decimals, point, thousands) {
+ //form http://phpjs.org/functions/number_format/
+ //number 必需,è¦æ ¼å¼åŒ–çš„æ•°å­—
+ //decimals å¯é€‰ï¼Œè§„定多少个å°æ•°ä½ã€‚
+ //point å¯é€‰ï¼Œè§„定用作å°æ•°ç‚¹çš„字符串(默认为 . )。
+ //thousands å¯é€‰ï¼Œè§„定用作åƒä½åˆ†éš”符的字符串(默认为 , ),如果设置了该å‚数,那么所有其他å‚数都是必需的。
+ number = (number + '')
.replace(/[^0-9+\-Ee.]/g, '')
- var n = !isFinite(+number) ? 0 : +number,
- prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
- sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
- dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
+ var n = !isFinite(+number) ? 0 : +number,
+ prec = !isFinite(+decimals) ? 3 : Math.abs(decimals),
+ sep = thousands || ",",
+ dec = point || ".",
s = '',
- toFixedFix = function(n, prec) {
+ toFixedFix = function (n, prec) {
var k = Math.pow(10, prec)
return '' + (Math.round(n * k) / k)
.toFixed(prec)
}
- // Fix for IE parseFloat(0.55).toFixed(0) = 0;
- s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
+ // Fix for IE parseFloat(0.55).toFixed(0) = 0;
+ s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
.split('.')
- if (s[0].length > 3) {
- s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
- }
- if ((s[1] || '')
- .length < prec) {
- s[1] = s[1] || ''
- s[1] += new Array(prec - s[1].length + 1)
+ if (s[0].length > 3) {
+ s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
+ }
+ if ((s[1] || '')
+ .length < prec) {
+ s[1] = s[1] || ''
+ s[1] += new Array(prec - s[1].length + 1)
.join('0')
- }
- return s.join(dec)
-}
-
-
-var filters = avalon.filters = {
- uppercase: function(str) {
- return str.toUpperCase()
- },
- lowercase: function(str) {
- return str.toLowerCase()
- },
- truncate: function(str, length, truncation) {
- //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串
- length = length || 30
- truncation = truncation === void(0) ? "..." : truncation
- return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str)
- },
- $filter: function(val) {
- for (var i = 1, n = arguments.length; i < n; i++) {
- var array = arguments[i]
- var fn = avalon.filters[array.shift()]
- if (typeof fn === "function") {
- var arr = [val].concat(array)
- val = fn.apply(null, arr)
- }
}
- return val
- },
- camelize: camelize,
- //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
- // <a href="javasc&NewLine;ript&colon;alert('XSS')">chrome</a>
- // <a href="data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">chrome</a>
- // <a href="jav ascript:alert('XSS');">IE67chrome</a>
- // <a href="jav&#x09;ascript:alert('XSS');">IE67chrome</a>
- // <a href="jav&#x0A;ascript:alert('XSS');">IE67chrome</a>
- sanitize: function(str) {
- return str.replace(rscripts, "").replace(ropen, function(a, b) {
- var match = a.toLowerCase().match(/<(\w+)\s/)
- if (match) { //处ç†a标签的href属性,img标签的src属性,form标签的action属性
- var reg = rsanitize[match[1]]
- if (reg) {
- a = a.replace(reg, function(s, name, value) {
- var quote = value.charAt(0)
- return name + "=" + quote + "javascript:void(0)" + quote
- })
+ return s.join(dec)
+ }
+
+
+ var filters = avalon.filters = {
+ uppercase: function (str) {
+ return str.toUpperCase()
+ },
+ lowercase: function (str) {
+ return str.toLowerCase()
+ },
+ truncate: function (str, length, truncation) {
+ //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串
+ length = length || 30
+ truncation = truncation === void(0) ? "..." : truncation
+ return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str)
+ },
+ $filter: function (val) {
+ for (var i = 1, n = arguments.length; i < n; i++) {
+ var array = arguments[i]
+ var fn = avalon.filters[array.shift()]
+ if (typeof fn === "function") {
+ var arr = [val].concat(array)
+ val = fn.apply(null, arr)
}
}
- return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件
- })
- },
- escape: function(str) {
- //将字符串ç»è¿‡ str 转义得到适åˆåœ¨é¡µé¢ä¸­æ˜¾ç¤ºçš„内容, ä¾‹å¦‚æ›¿æ¢ < 为 &lt
- return String(str).
+ return val
+ },
+ camelize: camelize,
+ //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
+ // <a href="javasc&NewLine;ript&colon;alert('XSS')">chrome</a>
+ // <a href="data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KDEpPg==">chrome</a>
+ // <a href="jav ascript:alert('XSS');">IE67chrome</a>
+ // <a href="jav&#x09;ascript:alert('XSS');">IE67chrome</a>
+ // <a href="jav&#x0A;ascript:alert('XSS');">IE67chrome</a>
+ sanitize: function (str) {
+ return str.replace(rscripts, "").replace(ropen, function (a, b) {
+ var match = a.toLowerCase().match(/<(\w+)\s/)
+ if (match) { //处ç†a标签的href属性,img标签的src属性,form标签的action属性
+ var reg = rsanitize[match[1]]
+ if (reg) {
+ a = a.replace(reg, function (s, name, value) {
+ var quote = value.charAt(0)
+ return name + "=" + quote + "javascript:void(0)" + quote// jshint ignore:line
+ })
+ }
+ }
+ return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件
+ })
+ },
+ escape: function (str) {
+ //将字符串ç»è¿‡ str 转义得到适åˆåœ¨é¡µé¢ä¸­æ˜¾ç¤ºçš„内容, ä¾‹å¦‚æ›¿æ¢ < 为 &lt
+ return String(str).
replace(/&/g, '&amp;').
- replace(rsurrogate, function(value) {
+ replace(rsurrogate, function (value) {
var hi = value.charCodeAt(0)
var low = value.charCodeAt(1)
return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';'
}).
- replace(rnoalphanumeric, function(value) {
+ replace(rnoalphanumeric, function (value) {
return '&#' + value.charCodeAt(0) + ';'
}).
replace(/</g, '&lt;').
replace(/>/g, '&gt;')
- },
- currency: function(amount, symbol, fractionSize) {
- return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize: 2)
- },
- number: function(number, fractionSize) {
- return numberFormat(number, isFinite(fractionSize) ? fractionSize: 3 )
- }
-}
-/*
- 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
- 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
- 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
- 'MMMM': Month in year (January-December)
- 'MMM': Month in year (Jan-Dec)
- 'MM': Month in year, padded (01-12)
- 'M': Month in year (1-12)
- 'dd': Day in month, padded (01-31)
- 'd': Day in month (1-31)
- 'EEEE': Day in Week,(Sunday-Saturday)
- 'EEE': Day in Week, (Sun-Sat)
- 'HH': Hour in day, padded (00-23)
- 'H': Hour in day (0-23)
- 'hh': Hour in am/pm, padded (01-12)
- 'h': Hour in am/pm, (1-12)
- 'mm': Minute in hour, padded (00-59)
- 'm': Minute in hour (0-59)
- 'ss': Second in minute, padded (00-59)
- 's': Second in minute (0-59)
- 'a': am/pm marker
- 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200)
- format string can also be one of the following predefined localizable formats:
-
- 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm)
- 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm)
- 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010)
- 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010
- 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010)
- 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10)
- 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm)
- 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm)
- */
-new function() {
- function toInt(str) {
- return parseInt(str, 10)
- }
-
- function padNumber(num, digits, trim) {
- var neg = ""
- if (num < 0) {
- neg = '-'
- num = -num
- }
- num = "" + num
- while (num.length < digits)
- num = "0" + num
- if (trim)
- num = num.substr(num.length - digits)
- return neg + num
- }
-
- function dateGetter(name, size, offset, trim) {
- return function(date) {
- var value = date["get" + name]()
- if (offset > 0 || value > -offset)
- value += offset
- if (value === 0 && offset === -12) {
- value = 12
- }
- return padNumber(value, size, trim)
- }
- }
-
- function dateStrGetter(name, shortForm) {
- return function(date, formats) {
- var value = date["get" + name]()
- var get = (shortForm ? ("SHORT" + name) : name).toUpperCase()
- return formats[get][value]
- }
- }
-
- function timeZoneGetter(date) {
- var zone = -1 * date.getTimezoneOffset()
- var paddedZone = (zone >= 0) ? "+" : ""
- paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2)
- return paddedZone
- }
- //å–得上åˆä¸‹åˆ
-
- function ampmGetter(date, formats) {
- return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1]
- }
- var DATE_FORMATS = {
- yyyy: dateGetter("FullYear", 4),
- yy: dateGetter("FullYear", 2, 0, true),
- y: dateGetter("FullYear", 1),
- MMMM: dateStrGetter("Month"),
- MMM: dateStrGetter("Month", true),
- MM: dateGetter("Month", 2, 1),
- M: dateGetter("Month", 1, 1),
- dd: dateGetter("Date", 2),
- d: dateGetter("Date", 1),
- HH: dateGetter("Hours", 2),
- H: dateGetter("Hours", 1),
- hh: dateGetter("Hours", 2, -12),
- h: dateGetter("Hours", 1, -12),
- mm: dateGetter("Minutes", 2),
- m: dateGetter("Minutes", 1),
- ss: dateGetter("Seconds", 2),
- s: dateGetter("Seconds", 1),
- sss: dateGetter("Milliseconds", 3),
- EEEE: dateStrGetter("Day"),
- EEE: dateStrGetter("Day", true),
- a: ampmGetter,
- Z: timeZoneGetter
- }
- var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,
- NUMBER_STRING = /^\d+$/
- var riso8601 = /^(\d{4})-?(\d+)-?(\d+)(?:T(\d+)(?::?(\d+)(?::?(\d+)(?:\.(\d+))?)?)?(Z|([+-])(\d+):?(\d+))?)?$/
- // 1 2 3 4 5 6 7 8 9 10 11
-
- function jsonStringToDate(string) {
- var match
- if (match = string.match(riso8601)) {
- var date = new Date(0),
- tzHour = 0,
- tzMin = 0,
- dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear,
- timeSetter = match[8] ? date.setUTCHours : date.setHours
- if (match[9]) {
- tzHour = toInt(match[9] + match[10])
- tzMin = toInt(match[9] + match[11])
- }
- dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3]))
- var h = toInt(match[4] || 0) - tzHour
- var m = toInt(match[5] || 0) - tzMin
- var s = toInt(match[6] || 0)
- var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000)
- timeSetter.call(date, h, m, s, ms)
- return date
- }
- return string
- }
- var rfixYMD = /^(\d+)\D(\d+)\D(\d+)/
- filters.date = function(date, format) {
- var locate = filters.date.locate,
+ },
+ currency: function (amount, symbol, fractionSize) {
+ return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize : 2)
+ },
+ number: numberFormat
+ }
+ /*
+ 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010)
+ 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)
+ 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199)
+ 'MMMM': Month in year (January-December)
+ 'MMM': Month in year (Jan-Dec)
+ 'MM': Month in year, padded (01-12)
+ 'M': Month in year (1-12)
+ 'dd': Day in month, padded (01-31)
+ 'd': Day in month (1-31)
+ 'EEEE': Day in Week,(Sunday-Saturday)
+ 'EEE': Day in Week, (Sun-Sat)
+ 'HH': Hour in day, padded (00-23)
+ 'H': Hour in day (0-23)
+ 'hh': Hour in am/pm, padded (01-12)
+ 'h': Hour in am/pm, (1-12)
+ 'mm': Minute in hour, padded (00-59)
+ 'm': Minute in hour (0-59)
+ 'ss': Second in minute, padded (00-59)
+ 's': Second in minute (0-59)
+ 'a': am/pm marker
+ 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200)
+ format string can also be one of the following predefined localizable formats:
+
+ 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm)
+ 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm)
+ 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010)
+ 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010
+ 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010)
+ 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10)
+ 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm)
+ 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm)
+ */
+ new function () {// jshint ignore:line
+ function toInt(str) {
+ return parseInt(str, 10) || 0
+ }
+
+ function padNumber(num, digits, trim) {
+ var neg = ""
+ if (num < 0) {
+ neg = '-'
+ num = -num
+ }
+ num = "" + num
+ while (num.length < digits)
+ num = "0" + num
+ if (trim)
+ num = num.substr(num.length - digits)
+ return neg + num
+ }
+
+ function dateGetter(name, size, offset, trim) {
+ return function (date) {
+ var value = date["get" + name]()
+ if (offset > 0 || value > -offset)
+ value += offset
+ if (value === 0 && offset === -12) {
+ value = 12
+ }
+ return padNumber(value, size, trim)
+ }
+ }
+
+ function dateStrGetter(name, shortForm) {
+ return function (date, formats) {
+ var value = date["get" + name]()
+ var get = (shortForm ? ("SHORT" + name) : name).toUpperCase()
+ return formats[get][value]
+ }
+ }
+
+ function timeZoneGetter(date) {
+ var zone = -1 * date.getTimezoneOffset()
+ var paddedZone = (zone >= 0) ? "+" : ""
+ paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2)
+ return paddedZone
+ }
+
+ //å–得上åˆä¸‹åˆ
+
+ function ampmGetter(date, formats) {
+ return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1]
+ }
+
+ var DATE_FORMATS = {
+ yyyy: dateGetter("FullYear", 4),
+ yy: dateGetter("FullYear", 2, 0, true),
+ y: dateGetter("FullYear", 1),
+ MMMM: dateStrGetter("Month"),
+ MMM: dateStrGetter("Month", true),
+ MM: dateGetter("Month", 2, 1),
+ M: dateGetter("Month", 1, 1),
+ dd: dateGetter("Date", 2),
+ d: dateGetter("Date", 1),
+ HH: dateGetter("Hours", 2),
+ H: dateGetter("Hours", 1),
+ hh: dateGetter("Hours", 2, -12),
+ h: dateGetter("Hours", 1, -12),
+ mm: dateGetter("Minutes", 2),
+ m: dateGetter("Minutes", 1),
+ ss: dateGetter("Seconds", 2),
+ s: dateGetter("Seconds", 1),
+ sss: dateGetter("Milliseconds", 3),
+ EEEE: dateStrGetter("Day"),
+ EEE: dateStrGetter("Day", true),
+ a: ampmGetter,
+ Z: timeZoneGetter
+ }
+ var rdateFormat = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/
+ var raspnetjson = /^\/Date\((\d+)\)\/$/
+ filters.date = function (date, format) {
+ var locate = filters.date.locate,
text = "",
parts = [],
fn, match
- format = format || "mediumDate"
- format = locate[format] || format
- if (typeof date === "string") {
- if (NUMBER_STRING.test(date)) {
- date = toInt(date)
- } else {
- var trimDate = date.trim()
- date = trimDate.replace(rfixYMD, function(a, b, c, d) {
- var array = d.length === 4 ? [d, b, c] : [b, c, d]
- return array.join("-")
- })
- date = jsonStringToDate(date)
+ format = format || "mediumDate"
+ format = locate[format] || format
+ if (typeof date === "string") {
+ if (/^\d+$/.test(date)) {
+ date = toInt(date)
+ } else if (raspnetjson.test(date)) {
+ date = +RegExp.$1
+ } else {
+ var trimDate = date.trim()
+ var dateArray = [0, 0, 0, 0, 0, 0, 0]
+ var oDate = new Date(0)
+ //å–得年月日
+ trimDate = trimDate.replace(/^(\d+)\D(\d+)\D(\d+)/, function (_, a, b, c) {
+ var array = c.length === 4 ? [c, a, b] : [a, b, c]
+ dateArray[0] = toInt(array[0]) //å¹´
+ dateArray[1] = toInt(array[1]) - 1 //月
+ dateArray[2] = toInt(array[2]) //æ—¥
+ return ""
+ })
+ var dateSetter = oDate.setFullYear
+ var timeSetter = oDate.setHours
+ trimDate = trimDate.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/, function (_, a, b, c, d) {
+ dateArray[3] = toInt(a) //å°æ—¶
+ dateArray[4] = toInt(b) //分钟
+ dateArray[5] = toInt(c) //秒
+ if (d) { //毫秒
+ dateArray[6] = Math.round(parseFloat("0." + d) * 1000)
+ }
+ return ""
+ })
+ var tzHour = 0
+ var tzMin = 0
+ trimDate = trimDate.replace(/Z|([+-])(\d\d):?(\d\d)/, function (z, symbol, c, d) {
+ dateSetter = oDate.setUTCFullYear
+ timeSetter = oDate.setUTCHours
+ if (symbol) {
+ tzHour = toInt(symbol + c)
+ tzMin = toInt(symbol + d)
+ }
+ return ""
+ })
+
+ dateArray[3] -= tzHour
+ dateArray[4] -= tzMin
+ dateSetter.apply(oDate, dateArray.slice(0, 3))
+ timeSetter.apply(oDate, dateArray.slice(3))
+ date = oDate
+ }
}
- date = new Date(date)
- }
- if (typeof date === "number") {
- date = new Date(date)
- }
- if (avalon.type(date) !== "date") {
- return
- }
- while (format) {
- match = DATE_FORMATS_SPLIT.exec(format)
- if (match) {
- parts = parts.concat(match.slice(1))
- format = parts.pop()
- } else {
- parts.push(format)
- format = null
+ if (typeof date === "number") {
+ date = new Date(date)
+ }
+ if (avalon.type(date) !== "date") {
+ return
}
+ while (format) {
+ match = rdateFormat.exec(format)
+ if (match) {
+ parts = parts.concat(match.slice(1))
+ format = parts.pop()
+ } else {
+ parts.push(format)
+ format = null
+ }
+ }
+ parts.forEach(function (value) {
+ fn = DATE_FORMATS[value]
+ text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'")
+ })
+ return text
}
- parts.forEach(function(value) {
- fn = DATE_FORMATS[value]
- text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'")
- })
- return text
- }
- var locate = {
- AMPMS: {
- 0: "上åˆ",
- 1: "下åˆ"
- },
- DAY: {
- 0: "星期日",
- 1: "星期一",
- 2: "星期二",
- 3: "星期三",
- 4: "星期四",
- 5: "星期五",
- 6: "星期六"
- },
- MONTH: {
- 0: "1月",
- 1: "2月",
- 2: "3月",
- 3: "4月",
- 4: "5月",
- 5: "6月",
- 6: "7月",
- 7: "8月",
- 8: "9月",
- 9: "10月",
- 10: "11月",
- 11: "12月"
- },
- SHORTDAY: {
- "0": "周日",
- "1": "周一",
- "2": "周二",
- "3": "周三",
- "4": "周四",
- "5": "周五",
- "6": "周六"
+ var locate = {
+ AMPMS: {
+ 0: "上åˆ",
+ 1: "下åˆ"
+ },
+ DAY: {
+ 0: "星期日",
+ 1: "星期一",
+ 2: "星期二",
+ 3: "星期三",
+ 4: "星期四",
+ 5: "星期五",
+ 6: "星期六"
+ },
+ MONTH: {
+ 0: "1月",
+ 1: "2月",
+ 2: "3月",
+ 3: "4月",
+ 4: "5月",
+ 5: "6月",
+ 6: "7月",
+ 7: "8月",
+ 8: "9月",
+ 9: "10月",
+ 10: "11月",
+ 11: "12月"
+ },
+ SHORTDAY: {
+ "0": "周日",
+ "1": "周一",
+ "2": "周二",
+ "3": "周三",
+ "4": "周四",
+ "5": "周五",
+ "6": "周六"
+ },
+ fullDate: "y年M月d日EEEE",
+ longDate: "y年M月d日",
+ medium: "yyyy-M-d H:mm:ss",
+ mediumDate: "yyyy-M-d",
+ mediumTime: "H:mm:ss",
+ "short": "yy-M-d ah:mm",
+ shortDate: "yy-M-d",
+ shortTime: "ah:mm"
+ }
+ locate.SHORTMONTH = locate.MONTH
+ filters.date.locate = locate
+ }// jshint ignore:line
+ /*********************************************************************
+ * AMD加载器 *
+ **********************************************************************/
+//https://www.devbridge.com/articles/understanding-amd-requirejs/
+//http://maxogden.com/nested-dependencies.html
+ var modules = avalon.modules = {
+ "domReady!": {
+ exports: avalon,
+ state: 3
},
- fullDate: "y年M月d日EEEE",
- longDate: "y年M月d日",
- medium: "yyyy-M-d H:mm:ss",
- mediumDate: "yyyy-M-d",
- mediumTime: "H:mm:ss",
- "short": "yy-M-d ah:mm",
- shortDate: "yy-M-d",
- shortTime: "ah:mm"
- }
- locate.SHORTMONTH = locate.MONTH
- filters.date.locate = locate
-}
-/*********************************************************************
- * AMD加载器 *
- **********************************************************************/
-var modules = avalon.modules = {
- "ready!": {
- exports: avalon
- },
- "avalon": {
- exports: avalon,
- state: 2
- }
-}
-
-new function() {
- var loadings = [] //正在加载中的模å—列表
- var factorys = [] //储存需è¦ç»‘定ID与factory对应关系的模å—(标准æµè§ˆå™¨ä¸‹ï¼Œå…ˆparseçš„script节点会先onload)
- var basepath
-
- function trimHashAndQuery(url) {
- return (url || "").replace(/[?#].*/, "")
- }
-
- var cur = getCurrentScript(true) //求得当å‰avalon.js 所在的JS文件的路径
- if (!cur) { //处ç†window safariçš„Error没有stack的问题
- cur = avalon.slice(DOC.scripts).pop().src
- }
- var url = trimHashAndQuery(cur)
- basepath = kernel.base = url.slice(0, url.lastIndexOf("/") + 1)
-
- function getCurrentScript(base) {
- // å‚考 https://github.com/samyk/jiagra/blob/master/jiagra.js
- var stack
- try {
- a.b.c() //强制报错,以便æ•èŽ·e.stack
- } catch (e) { //safari的错误对象åªæœ‰line,sourceId,sourceURL
- stack = e.stack
- if (!stack && window.opera) {
- //opera 9没有e.stack,但有e.Backtrace,但ä¸èƒ½ç›´æŽ¥å–å¾—,需è¦å¯¹e对象转字符串进行抽å–
- stack = (String(e).match(/of linked script \S+/g) || []).join(" ")
- }
- }
- if (stack) {
- /**e.stack最åŽä¸€è¡Œåœ¨æ‰€æœ‰æ”¯æŒçš„æµè§ˆå™¨å¤§è‡´å¦‚下:
- *chrome23:
- * at http://113.93.50.63/data.js:4:1
- *firefox17:
- *@http://113.93.50.63/query.js:4
- *opera12:http://www.oldapps.com/opera.php?system=Windows_XP
- *@http://113.93.50.63/data.js:4
- *IE10:
- * at Global code (http://113.93.50.63/data.js:4:1)
- * //firefox4+ å¯ä»¥ç”¨document.currentScript
- */
- stack = stack.split(/[@ ]/g).pop() //å–得最åŽä¸€è¡Œ,最åŽä¸€ä¸ªç©ºæ ¼æˆ–@之åŽçš„部分
- stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉æ¢è¡Œç¬¦
- return stack.replace(/(:\d+)?:\d+$/i, "") //去掉行å·ä¸Žæˆ–许存在的出错字符起始ä½ç½®
- }
- var nodes = (base ? DOC : head).getElementsByTagName("script") //åªåœ¨head标签中寻找
- for (var i = nodes.length, node; node = nodes[--i]; ) {
- if ((base || node.className === subscribers) && node.readyState === "interactive") {
- return node.className = node.src
- }
- }
- }
-
- innerRequire = avalon.require = function(array, factory, parent) {
- if (!Array.isArray(array)) {
- avalon.error("require的第一个å‚数必须是ä¾èµ–列数,类型为数组 " + array)
- }
- var args = [] // 放置所有ä¾èµ–项的完整路径
- var deps = {} // argsçš„å¦ä¸€ç§è¡¨çŽ°å½¢å¼ï¼Œä¸ºçš„是方便去é‡
- var dn = 0 //需è¦å®‰è£…的模å—æ•°
- var cn = 0 // 已安装完的模å—æ•°
- var id = parent || "callback" + setTimeout("1")
- parent = parent || basepath
-
- array.forEach(function(el) {
- var url = loadResources(el, parent) //加载资æºï¼Œå¹¶è¿”回能加载资æºçš„完整路径
- if (url) {
- dn++
- if (modules[url] && modules[url].state === 2) {
- cn++
+ "avalon": {
+ exports: avalon,
+ state: 4
+ }
+ }
+//Object(modules[id]).state拥有如下值
+// undefined 没有定义
+// 1(send) å·²ç»å‘出请求
+// 2(loading) å·²ç»è¢«æ‰§è¡Œä½†è¿˜æ²¡æœ‰æ‰§è¡Œå®Œæˆï¼Œåœ¨è¿™ä¸ªé˜¶æ®µdefine方法会被执行
+// 3(loaded) 执行完毕,通过onload/onreadystatechange回调判定,在这个阶段checkDeps方法会执行
+// 4(execute) å…¶ä¾èµ–也执行完毕, 值放到exports对象上,在这个阶段fireFactory方法会执行
+ modules.exports = modules.avalon
+
+ new function () {// jshint ignore:line
+ var loadings = [] //正在加载中的模å—列表
+ var factorys = [] //放置define方法的factory函数
+ var rjsext = /\.js$/i
+
+ function makeRequest(name, config) {
+//1. 去掉资æºå‰ç¼€
+ var res = "js"
+ name = name.replace(/^(\w+)\!/, function (a, b) {
+ res = b
+ return ""
+ })
+ if (res === "ready") {
+ log("debug: ready!å·²ç»è¢«åºŸå¼ƒï¼Œè¯·ä½¿ç”¨domReady!")
+ res = "domReady"
+ }
+//2. 去掉querystring, hash
+ var query = ""
+ name = name.replace(rquery, function (a) {
+ query = a
+ return ""
+ })
+ //3. 去掉扩展å
+ var suffix = "." + res
+ var ext = /js|css/.test(suffix) ? suffix : ""
+ name = name.replace(/\.[a-z0-9]+$/g, function (a) {
+ if (a === suffix) {
+ ext = a
+ return ""
+ } else {
+ return a
+ }
+ })
+ var req = avalon.mix({
+ query: query,
+ ext: ext,
+ res: res,
+ name: name,
+ toUrl: toUrl
+ }, config)
+ req.toUrl(name)
+ return req
+ }
+
+ function fireRequest(req) {
+ var name = req.name
+ var res = req.res
+ //1. 如果该模å—å·²ç»å‘出请求,直接返回
+ var module = modules[name]
+ var urlNoQuery = name && req.urlNoQuery
+ if (module && module.state >= 1) {
+ return name
+ }
+ module = modules[urlNoQuery]
+ if (module && module.state >= 3) {
+ innerRequire(module.deps || [], module.factory, urlNoQuery)
+ return urlNoQuery
+ }
+ if (name && !module) {
+ module = modules[urlNoQuery] = {
+ id: urlNoQuery,
+ state: 1 //send
+ }
+ var wrap = function (obj) {
+ resources[res] = obj
+ obj.load(name, req, function (a) {
+ if (arguments.length && a !== void 0) {
+ module.exports = a
+ }
+ module.state = 4
+ checkDeps()
+ })
}
- if (!deps[url]) {
- args.push(url)
- deps[url] = "å¸å¾’正美" //去é‡
+
+ if (!resources[res]) {
+ innerRequire([res], wrap)
+ } else {
+ wrap(resources[res])
}
}
- })
- modules[id] = {//ä¿å­˜æ­¤æ¨¡å—的相关信æ¯
- id: id,
- factory: factory,
- deps: deps,
- args: args,
- state: 1
- }
- if (dn === cn) { //如果需è¦å®‰è£…的等于已安装好的
- fireFactory(id, args, factory) //安装到框架中
- } else {
- //放到检测列队中,等待checkDeps处ç†
- loadings.unshift(id)
- }
- checkDeps()
- }
+ return name ? urlNoQuery : res + "!"
+ }
+
+//核心API之一 require
+ var requireQueue = []
+ var isUserFirstRequire = false
+ innerRequire = avalon.require = function (array, factory, parentUrl, defineConfig) {
+ if (!isUserFirstRequire) {
+ requireQueue.push(avalon.slice(arguments))
+ if (arguments.length <= 2) {
+ isUserFirstRequire = true
+ var queue = requireQueue.splice(0, requireQueue.length), args
+ while (args = queue.shift()) {
+ innerRequire.apply(null, args)
+ }
+ }
+ return
+ }
- innerRequire.define = function(urlOrId, deps, factory) { //模å—å,ä¾èµ–列表,模å—本身
- var args = aslice.call(arguments)
- if (typeof urlOrId === "string") {
- var id = args.shift()
- }
- if (typeof args[0] === "function") {
- args.unshift([])
- }
- //上线åˆå¹¶åŽèƒ½ç›´æŽ¥å¾—到模å—ID,å¦åˆ™å¯»æ‰¾å½“å‰æ­£åœ¨è§£æžä¸­çš„script节点的src作为模å—ID
- //现在除了safari5,1-外,我们都能直接通过getCurrentScript一步到ä½å¾—到当å‰æ‰§è¡Œçš„script节点,
- //safariå¯é€šè¿‡onload+delay闭包组åˆè§£å†³
- var url = modules[id] && modules[id].state >= 1 ? id : trimHashAndQuery(getCurrentScript())
- if (!modules[url] && id) {
- modules[url] = {
- id: url,
- factory: factory,
- state: 1
+ if (!Array.isArray(array)) {
+ avalon.error("require方法的第一个å‚数应为数组 " + array)
}
- }
- factory = args[1]
- factory.id = id //用于调试
- factory.delay = function(d) {
- args.push(d)
- var isCycle = true
- try {
- isCycle = checkCycle(modules[d].deps, d)
- } catch (e) {
+ var deps = [] // 放置所有ä¾èµ–项的完整路径
+ var uniq = createMap()
+ var id = parentUrl || "callback" + setTimeout("1")// jshint ignore:line
+ defineConfig = defineConfig || createMap()
+ defineConfig.baseUrl = kernel.baseUrl
+ var isBuilt = !!defineConfig.built
+ if (parentUrl) {
+ defineConfig.parentUrl = parentUrl.substr(0, parentUrl.lastIndexOf("/"))
+ defineConfig.mapUrl = parentUrl.replace(rjsext, "")
}
- if (isCycle) {
- avalon.error(d + "模å—与之å‰çš„模å—存在循环ä¾èµ–,请ä¸è¦ç›´æŽ¥ç”¨script标签引入" + d + "模å—")
+ if (isBuilt) {
+ var req = makeRequest(defineConfig.defineName, defineConfig)
+ id = req.urlNoQuery
+ } else {
+ array.forEach(function (name) {
+ var req = makeRequest(name, defineConfig)
+ var url = fireRequest(req) //加载资æºï¼Œå¹¶è¿”回该资æºçš„完整地å€
+ if (url) {
+ if (!uniq[url]) {
+ deps.push(url)
+ uniq[url] = "å¸å¾’正美" //去é‡
+ }
+ }
+ })
}
- delete factory.delay //释放内存
- innerRequire.apply(null, args) //0,1,2 --> 1,2,0
- }
- if (url) {
- factory.delay(url)
- } else { //先进先出
- factorys.push(factory)
- }
- }
- innerRequire.define.amd = modules
- function checkCycle(deps, nick) {
- //检测是å¦å­˜åœ¨å¾ªçŽ¯ä¾èµ–
- for (var id in deps) {
- if (deps[id] === "å¸å¾’正美" && modules[id].state !== 2 && (id === nick || checkCycle(modules[id].deps, nick))) {
- return true
+ var module = modules[id]
+ if (!module || module.state !== 4) {
+ modules[id] = {
+ id: id,
+ deps: isBuilt ? array.concat() : deps,
+ factory: factory || noop,
+ state: 3
+ }
}
+ if (!module) {
+ //如果此模å—是定义在å¦ä¸€ä¸ªJS文件中, 那必须等该文件加载完毕, æ‰èƒ½æ”¾åˆ°æ£€æµ‹åˆ—队中
+ loadings.push(id)
+ }
+ checkDeps()
}
- }
-
- function checkDeps() {
- //检测此JS模å—çš„ä¾èµ–是å¦éƒ½å·²å®‰è£…完毕,是则安装自身
- loop: for (var i = loadings.length, id; id = loadings[--i]; ) {
- var obj = modules[id],
- deps = obj.deps
- for (var key in deps) {
- if (ohasOwn.call(deps, key) && modules[key].state !== 2) {
- continue loop
+//核心API之二 require
+ innerRequire.define = function (name, deps, factory) { //模å—å,ä¾èµ–列表,模å—本身
+ if (typeof name !== "string") {
+ factory = deps
+ deps = name
+ name = "anonymous"
+ }
+ if (!Array.isArray(deps)) {
+ factory = deps
+ deps = []
+ }
+ var config = {
+ built: !isUserFirstRequire, //用r.js打包åŽ,所有define会放到requirejs之å‰
+ defineName: name
+ }
+ var args = [deps, factory, config]
+ factory.require = function (url) {
+ args.splice(2, 0, url)
+ if (modules[url]) {
+ modules[url].state = 3 //loaded
+ var isCycle = false
+ try {
+ isCycle = checkCycle(modules[url].deps, url)
+ } catch (e) {
+ }
+ if (isCycle) {
+ avalon.error(url + "模å—与之å‰çš„模å—存在循环ä¾èµ–,请ä¸è¦ç›´æŽ¥ç”¨script标签引入" + url + "模å—")
+ }
}
+ delete factory.require //释放内存
+ innerRequire.apply(null, args) //0,1,2 --> 1,2,0
}
- //如果deps是空对象或者其ä¾èµ–的模å—的状æ€éƒ½æ˜¯2
- if (obj.state !== 2) {
- loadings.splice(i, 1) //必须先移除å†å®‰è£…,防止在IE下DOM树建完åŽæ‰‹åŠ¨åˆ·æ–°é¡µé¢ï¼Œä¼šå¤šæ¬¡æ‰§è¡Œå®ƒ
- fireFactory(obj.id, obj.args, obj.factory)
- checkDeps() //如果æˆåŠŸ,则å†æ‰§è¡Œä¸€æ¬¡,以防有些模å—就差本模å—没有安装好
+//æ ¹æ®æ ‡å‡†,所有éµå¾ªW3C标准的æµè§ˆå™¨,script标签会按标签的出现顺åºæ‰§è¡Œã€‚
+//è€çš„æµè§ˆå™¨ä¸­ï¼ŒåŠ è½½ä¹Ÿæ˜¯æŒ‰é¡ºåºçš„:一个文件下载完æˆåŽï¼Œæ‰å¼€å§‹ä¸‹è½½ä¸‹ä¸€ä¸ªæ–‡ä»¶ã€‚
+//较新的æµè§ˆå™¨ä¸­ï¼ˆIE8+ ã€FireFox3.5+ ã€Chrome4+ ã€Safari4+),为了å‡å°è¯·æ±‚时间以优化体验,
+//下载å¯ä»¥æ˜¯å¹¶è¡Œçš„,但是执行顺åºè¿˜æ˜¯æŒ‰ç…§æ ‡ç­¾å‡ºçŽ°çš„顺åºã€‚
+//但如果script标签是动æ€æ’入的, 就未必按照先请求先执行的原则了,目测åªæœ‰firefoxéµå®ˆ
+//唯一比较一致的是,IE10+åŠå…¶ä»–标准æµè§ˆå™¨,一旦开始解æžè„šæœ¬, 就会一直堵在那里,直接脚本解æžå®Œæ¯•
+//亦å³ï¼Œå…ˆè¿›å…¥loading阶段的script标签(模å—)必然会先进入loaded阶段
+ var url = config.built ? "unknown" : getCurrentScript()
+ if (url) {
+ var module = modules[url]
+ if (module) {
+ module.state = 2
+ }
+ factory.require(url)
+ } else {//åˆå¹¶å‰åŽçš„safari,åˆå¹¶åŽçš„IE6-9走此分支
+ factorys.push(factory)
}
}
- }
-
- function checkFail(node, onError, fuckIE) {
- var id = trimHashAndQuery(node.src) //检测是å¦æ­»é“¾
- node.onload = node.onreadystatechange = node.onerror = null
- if (onError || (fuckIE && !modules[id].state)) {
- setTimeout(function() {
- head.removeChild(node)
- node = null // 处ç†æ—§å¼IE下的循环引用问题
- })
- log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state))
- } else {
- return true
- }
- }
- var rdeuce = /\/\w+\/\.\./
+//核心API之三 require.config(settings)
+ innerRequire.config = kernel
+ //核心API之四 define.amd 标识其符åˆAMD规范
+ innerRequire.define.amd = modules
+
+ //==========================对用户é…置项进行å†åŠ å·¥==========================
+ var allpaths = kernel["orig.paths"] = createMap()
+ var allmaps = kernel["orig.map"] = createMap()
+ var allpackages = kernel["packages"] = []
+ var allargs = kernel["orig.args"] = createMap()
+ avalon.mix(plugins, {
+ paths: function (hash) {
+ avalon.mix(allpaths, hash)
+ kernel.paths = makeIndexArray(allpaths)
+ },
+ map: function (hash) {
+ avalon.mix(allmaps, hash)
+ var list = makeIndexArray(allmaps, 1, 1)
+ avalon.each(list, function (_, item) {
+ item.val = makeIndexArray(item.val)
+ })
+ kernel.map = list
+ },
+ packages: function (array) {
+ array = array.concat(allpackages)
+ var uniq = createMap()
+ var ret = []
+ for (var i = 0, pkg; pkg = array[i++];) {
+ pkg = typeof pkg === "string" ? {name: pkg} : pkg
+ var name = pkg.name
+ if (!uniq[name]) {
+ var url = joinPath(pkg.location || name, pkg.main || "main")
+ url = url.replace(rjsext, "")
+ ret.push(pkg)
+ uniq[name] = pkg.location = url
+ pkg.reg = makeMatcher(name)
+ }
+ }
+ kernel.packages = ret.sort()
+ },
+ urlArgs: function (hash) {
+ if (typeof hash === "string") {
+ hash = {"*": hash}
+ }
+ avalon.mix(allargs, hash)
+ kernel.urlArgs = makeIndexArray(allargs, 1)
+ },
+ baseUrl: function (url) {
+ if (!isAbsUrl(url)) {
+ var baseElement = head.getElementsByTagName("base")[0]
+ if (baseElement) {
+ head.removeChild(baseElement)
+ }
+ var node = DOC.createElement("a")
+ node.href = url
+ url = node.href
+ if (baseElement) {
+ head.insertBefore(baseElement, head.firstChild)
+ }
+ }
+ if (url.length > 3)
+ kernel.baseUrl = url
+ },
+ shim: function (obj) {
+ for (var i in obj) {
+ var value = obj[i]
+ if (Array.isArray(value)) {
+ value = obj[i] = {
+ deps: value
+ }
+ }
+ if (!value.exportsFn && (value.exports || value.init)) {
+ value.exportsFn = makeExports(value)
+ }
+ }
+ kernel.shim = obj
+ }
- function loadResources(url, parent, ret, shim) {
- //1. 特别处ç†mass|ready标识符
- if (url === "ready!" || (modules[url] && modules[url].state === 2)) {
- return url
- }
- //2. 处ç†text! css! 等资æº
- var plugin
- url = url.replace(/^\w+!/, function(a) {
- plugin = a.slice(0, -1)
- return ""
})
- plugin = plugin || "js"
- plugin = plugins[plugin] || noop
- //3. 转化为完整路径
- if (typeof kernel.shim[url] === "object") {
- shim = kernel.shim[url]
- }
- url = url.split('/');
- //For each module name segment, see if there is a path
- //registered for it. Start with most specific name
- //and work up from it.
- for (var i = url.length, parentModule, parentPath; i > 0; i -= 1) {
- parentModule = url.slice(0, i).join('/');
-
- parentPath = kernel.paths[parentModule];
- if (parentPath) {
- //If an array, it means there are a few choices,
- //Choose the one that is desired
- if (Array.isArray(parentPath)) {
- parentPath = parentPath[0];
+
+
+ //==============================内部方法=================================
+ function checkCycle(deps, nick) {
+ //检测是å¦å­˜åœ¨å¾ªçŽ¯ä¾èµ–
+ for (var i = 0, id; id = deps[i++];) {
+ if (modules[id].state !== 4 &&
+ (id === nick || checkCycle(modules[id].deps, nick))) {
+ return true
}
- url.splice(0, i, parentPath);
- break;
}
}
- //Join the path parts together, then figure out if baseUrl is needed.
- url = url.join('/');
- //4. 补全路径
- if (/^(\w+)(\d)?:.*/.test(url)) {
- ret = url
- } else {
- parent = parent.substr(0, parent.lastIndexOf("/"))
- var tmp = url.charAt(0)
- if (tmp !== "." && tmp !== "/") { //相对于根路径
- ret = basepath + url
- } else if (url.slice(0, 2) === "./") { //相对于兄弟路径
- ret = parent + url.slice(1)
- } else if (url.slice(0, 2) === "..") { //相对于父路径
- ret = parent + "/" + url
- while (rdeuce.test(ret)) {
- ret = ret.replace(rdeuce, "")
- }
- } else if (tmp === "/") {
- ret = url //相对于根路径
+ function checkFail(node, onError) {
+ var id = trimQuery(node.src) //检测是å¦æ­»é“¾
+ node.onload = node.onerror = null
+ if (onError) {
+ setTimeout(function () {
+ head.removeChild(node)
+ node = null // 处ç†æ—§å¼IE下的循环引用问题
+ })
+ log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state))
} else {
- avalon.error("ä¸ç¬¦åˆæ¨¡å—标识规则: " + url)
+ return true
}
}
- //5. 补全扩展å
- url = trimHashAndQuery(ret)
- var ext = plugin.ext
- if (ext) {
- if (url.slice(0 - ext.length) !== ext) {
- ret += ext
+
+ function checkDeps() {
+ //检测此JS模å—çš„ä¾èµ–是å¦éƒ½å·²å®‰è£…完毕,是则安装自身
+ loop: for (var i = loadings.length, id; id = loadings[--i];) {
+ var obj = modules[id],
+ deps = obj.deps
+ if (!deps)
+ continue
+ for (var j = 0, key; key = deps[j]; j++) {
+ if (Object(modules[key]).state !== 4) {
+ continue loop
+ }
+ }
+ //如果deps是空对象或者其ä¾èµ–的模å—的状æ€éƒ½æ˜¯2
+ if (obj.state !== 4) {
+ loadings.splice(i, 1) //必须先移除å†å®‰è£…,防止在IE下DOM树建完åŽæ‰‹åŠ¨åˆ·æ–°é¡µé¢ï¼Œä¼šå¤šæ¬¡æ‰§è¡Œå®ƒ
+ fireFactory(obj.id, obj.deps, obj.factory)
+ checkDeps() //如果æˆåŠŸ,则å†æ‰§è¡Œä¸€æ¬¡,以防有些模å—就差本模å—没有安装好
+ }
}
}
- //6. 缓存处ç†
- if (kernel.nocache) {
- ret += (ret.indexOf("?") === -1 ? "?" : "&") + (new Date - 0)
- }
- return plugin(ret, shim)
- }
- function loadJS(url, id, callback) {
- //通过script节点加载目标模å—
- var node = DOC.createElement("script")
- node.className = subscribers //让getCurrentScriptåªå¤„ç†ç±»å为subscribersçš„script节点
- node[W3C ? "onload" : "onreadystatechange"] = function() {
- if (W3C || /loaded|complete/i.test(node.readyState)) {
- //mass Framework会在_checkFail把它上é¢çš„回调清掉,尽å¯èƒ½é‡Šæ”¾å›žå­˜ï¼Œå°½ç®¡DOM0事件写法在IE6下GC无望
+ function loadJS(url, id, callback) {
+ //通过script节点加载目标模å—
+ var node = DOC.createElement("script")
+ node.className = subscribers //让getCurrentScriptåªå¤„ç†ç±»å为subscribersçš„script节点
+ node.onload = function () {
var factory = factorys.pop()
- factory && factory.delay(id)
+ factory && factory.require(id)
if (callback) {
callback()
}
- if (checkFail(node, false, !W3C)) {
+ log("debug: å·²æˆåŠŸåŠ è½½ " + url)
+ id && loadings.push(id)
+ checkDeps()
+ }
+ node.onerror = function () {
+ checkFail(node, true)
+ }
+
+ head.insertBefore(node, head.firstChild) //chrome下第二个å‚æ•°ä¸èƒ½ä¸ºnull
+ node.src = url //æ’入到head的第一个节点å‰ï¼Œé˜²æ­¢IE6下head标签没闭åˆå‰ä½¿ç”¨appendChild抛错
+ log("debug: 正准备加载 " + url) //æ›´é‡è¦çš„是IE6下å¯ä»¥æ”¶çª„getCurrentScript的寻找范围
+ }
+
+ var resources = innerRequire.plugins = {
+ //三大常用资æºæ’件 js!, css!, text!, ready!
+ ready: {
+ load: noop
+ },
+ js: {
+ load: function (name, req, onLoad) {
+ var url = req.url
+ var id = req.urlNoQuery
+ var shim = kernel.shim[name.replace(rjsext, "")]
+ if (shim) { //shim机制
+ innerRequire(shim.deps || [], function () {
+ var args = avalon.slice(arguments)
+ loadJS(url, id, function () {
+ onLoad(shim.exportsFn ? shim.exportsFn.apply(0, args) : void 0)
+ })
+ })
+ } else {
+ loadJS(url, id)
+ }
+ }
+ },
+ css: {
+ load: function (name, req, onLoad) {
+ var url = req.url
+ head.insertAdjacentHTML("afterBegin", '<link rel="stylesheet" href="' + url + '">')
log("debug: å·²æˆåŠŸåŠ è½½ " + url)
+ onLoad()
+ }
+ },
+ text: {
+ load: function (name, req, onLoad) {
+ var url = req.url
+ var xhr = getXHR()
+ xhr.onload = function () {
+ var status = xhr.status;
+ if (status > 399 && status < 600) {
+ avalon.error(url + " 对应资æºä¸å­˜åœ¨æˆ–æ²¡æœ‰å¼€å¯ CORS")
+ } else {
+ log("debug: å·²æˆåŠŸåŠ è½½ " + url)
+ onLoad(xhr.responseText)
+ }
+ }
+ xhr.open("GET", url, true)
+ if ("withCredentials" in xhr) {//这是处ç†è·¨åŸŸ
+ xhr.withCredentials = true
+ }
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")//告诉åŽç«¯è¿™æ˜¯AJAX请求
+ xhr.send()
+ log("debug: 正准备加载 " + url)
}
}
}
- node.onerror = function() {
- checkFail(node, true)
+ innerRequire.checkDeps = checkDeps
+
+ var rquery = /(\?[^#]*)$/
+
+ function trimQuery(url) {
+ return (url || "").replace(rquery, "")
}
- node.src = url //æ’入到head的第一个节点å‰ï¼Œé˜²æ­¢IE6下head标签没闭åˆå‰ä½¿ç”¨appendChild抛错
- head.insertBefore(node, head.firstChild) //chrome下第二个å‚æ•°ä¸èƒ½ä¸ºnull
- log("debug: 正准备加载 " + url) //æ›´é‡è¦çš„是IE6下å¯ä»¥æ”¶çª„getCurrentScript的寻找范围
- }
- function fireFactory(id, deps, factory) {
- for (var i = 0, array = [], d; d = deps[i++]; ) {
- array.push(modules[d].exports)
+ function isAbsUrl(path) {
+ //http://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative
+ return /^(?:[a-z]+:)?\/\//i.test(String(path))
}
- var module = Object(modules[id]),
- ret = factory.apply(window, array)
- module.state = 2
- if (ret !== void 0) {
- modules[id].exports = ret
+
+
+ function getCurrentScript() {
+ // inspireb by https://github.com/samyk/jiagra/blob/master/jiagra.js
+ var stack
+ try {
+ a.b.c() //强制报错,以便æ•èŽ·e.stack
+ } catch (e) { //safari5çš„sourceURL,firefoxçš„fileName,它们的效果与e.stackä¸ä¸€æ ·
+ stack = e.stack
+ }
+ if (stack) {
+ /**e.stack最åŽä¸€è¡Œåœ¨æ‰€æœ‰æ”¯æŒçš„æµè§ˆå™¨å¤§è‡´å¦‚下:
+ *chrome23:
+ * at http://113.93.50.63/data.js:4:1
+ *firefox17:
+ *@http://113.93.50.63/query.js:4
+ *opera12:http://www.oldapps.com/opera.php?system=Windows_XP
+ *@http://113.93.50.63/data.js:4
+ *IE10:
+ * at Global code (http://113.93.50.63/data.js:4:1)
+ * //firefox4+ å¯ä»¥ç”¨document.currentScript
+ */
+ stack = stack.split(/[@ ]/g).pop() //å–得最åŽä¸€è¡Œ,最åŽä¸€ä¸ªç©ºæ ¼æˆ–@之åŽçš„部分
+ stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉æ¢è¡Œç¬¦
+ return trimQuery(stack.replace(/(:\d+)?:\d+$/i, "")) //去掉行å·ä¸Žæˆ–许存在的出错字符起始ä½ç½®
+ }
+ var nodes = head.getElementsByTagName("script") //åªåœ¨head标签中寻找
+ for (var i = nodes.length, node; node = nodes[--i];) {
+ if (node.className === subscribers && node.readyState === "interactive") {
+ var url = node.src
+ return node.className = trimQuery(url)
+ }
+ }
}
- return ret
- }
- plugins.js = function(url, shim) {
- var id = trimHashAndQuery(url)
- if (!modules[id]) { //如果之å‰æ²¡æœ‰åŠ è½½è¿‡
- modules[id] = {
- id: id,
- exports: {}
- }
- if (shim) { //shim机制
- innerRequire(shim.deps || "", function() {
- loadJS(url, id, function() {
- modules[id].state = 2
- var s = shim.exports
- if (s && modules[id].exports === void 0) {
- modules[id].exports = typeof s === "function" ?
- s() : window[s]
- }
- innerRequire.checkDeps()
+ var rcallback = /^callback\d+$/
+
+ function fireFactory(id, deps, factory) {
+ var module = Object(modules[id])
+ module.state = 4
+ for (var i = 0, array = [], d; d = deps[i++];) {
+ if (d === "exports") {
+ var obj = module.exports || (module.exports = createMap())
+ array.push(obj)
+ } else {
+ array.push(modules[d].exports)
+ }
+ }
+ try {
+ var ret = factory.apply(window, array)
+ } catch (e) {
+ log("执行[" + id + "]模å—çš„factory抛错: " + e)
+ }
+ if (ret !== void 0) {
+ module.exports = ret
+ }
+ if (rcallback.test(id)) {
+ delete modules[id]
+ }
+ delete module.factory
+ return ret
+ }
+
+ function toUrl(id) {
+ if (id.indexOf(this.res + "!") === 0) {
+ id = id.slice(this.res.length + 1) //处ç†define("css!style",[], function(){})的情况
+ }
+ var url = id
+ //1. 是å¦å‘½ä¸­pathsé…置项
+ var usePath = 0
+ var baseUrl = this.baseUrl
+ var rootUrl = this.parentUrl || baseUrl
+ eachIndexArray(id, kernel.paths, function (value, key) {
+ url = url.replace(key, value)
+ usePath = 1
+ })
+ //2. 是å¦å‘½ä¸­packagesé…置项
+ if (!usePath) {
+ eachIndexArray(id, kernel.packages, function (value, key, item) {
+ url = url.replace(item.name, item.location)
+ })
+ }
+ //3. 是å¦å‘½ä¸­mapé…置项
+ if (this.mapUrl) {
+ eachIndexArray(this.mapUrl, kernel.map, function (array) {
+ eachIndexArray(url, array, function (mdValue, mdKey) {
+ url = url.replace(mdKey, mdValue)
+ rootUrl = baseUrl
})
})
- } else {
- loadJS(url, id)
}
+ var ext = this.ext
+ if (ext && usePath && url.slice(-ext.length) === ext) {
+ url = url.slice(0, -ext.length)
+ }
+ //4. 转æ¢ä¸ºç»å¯¹è·¯å¾„
+ if (!isAbsUrl(url)) {
+ rootUrl = this.built || /^\w/.test(url) ? baseUrl : rootUrl
+ url = joinPath(rootUrl, url)
+ }
+ //5. 还原扩展å,query
+ var urlNoQuery = url + ext
+ url = urlNoQuery + this.query
+ //6. 处ç†urlArgs
+ eachIndexArray(id, kernel.urlArgs, function (value) {
+ url += (url.indexOf("?") === -1 ? "?" : "&") + value;
+ })
+ this.url = url
+ return this.urlNoQuery = urlNoQuery
}
- return id
- }
- plugins.css = function(url) {
- var id = trimHashAndQuery(url).replace(/\W/g, "_") ////用于处ç†æŽ‰href中的hash与所有特殊符å·
- if (!DOC.getElementById(id)) {
- var node = DOC.createElement("link")
- node.rel = "stylesheet"
- node.href = url
- node.id = id
- head.insertBefore(node, head.firstChild)
+
+ function makeIndexArray(hash, useStar, part) {
+ //创建一个ç»è¿‡ç‰¹æ®Šç®—法排好åºçš„数组
+ var index = hash2array(hash, useStar, part)
+ index.sort(descSorterByName)
+ return index
}
- }
- plugins.css.ext = ".css"
- plugins.js.ext = ".js"
- plugins.text = function(url) {
- var xhr = getXHR()
- var id = trimHashAndQuery(url)
- modules[id] = {}
- xhr.onreadystatechange = function() {
- if (xhr.readyState === 4) {
- var status = xhr.status;
- if (status > 399 && status < 600) {
- avalon.error(url + " 对应资æºä¸å­˜åœ¨æˆ–æ²¡æœ‰å¼€å¯ CORS")
- } else {
- modules[id].state = 2
- modules[id].exports = xhr.responseText
- innerRequire.checkDeps()
+ function makeMatcher(prefix) {
+ return new RegExp('^' + prefix + '(/|$)')
+ }
+
+ function makeExports(value) {
+ return function () {
+ var ret
+ if (value.init) {
+ ret = value.init.apply(window, arguments)
}
+ return ret || (value.exports && getGlobal(value.exports))
}
}
- xhr.open("GET", url, true)
- if ("withCredentials" in xhr) {
- xhr.withCredentials = true
+
+
+ function hash2array(hash, useStar, part) {
+ var array = [];
+ for (var key in hash) {
+ // if (hash.hasOwnProperty(key)) {//hash是由createMap创建没有hasOwnProperty
+ var item = {
+ name: key,
+ val: hash[key]
+ }
+ array.push(item)
+ item.reg = key === "*" && useStar ? /^/ : makeMatcher(key)
+ if (part && key !== "*") {
+ item.reg = new RegExp('\/' + key.replace(/^\//, "") + '(/|$)')
+ }
+ // }
+ }
+ return array
+ }
+
+ function eachIndexArray(moduleID, array, matcher) {
+ array = array || []
+ for (var i = 0, el; el = array[i++];) {
+ if (el.reg.test(moduleID)) {
+ matcher(el.val, el.name, el)
+ return false
+ }
+ }
+ }
+
+ // æ ¹æ®å…ƒç´ çš„name项进行数组字符数逆åºçš„排åºå‡½æ•°
+ function descSorterByName(a, b) {
+ var aaa = a.name
+ var bbb = b.name
+ if (bbb === "*") {
+ return -1
+ }
+ if (aaa === "*") {
+ return 1
+ }
+ return bbb.length - aaa.length
+ }
+
+ var rdeuce = /\/\w+\/\.\./
+
+ function joinPath(a, b) {
+ if (a.charAt(a.length - 1) !== "/") {
+ a += "/"
+ }
+ if (b.slice(0, 2) === "./") { //相对于兄弟路径
+ return a + b.slice(2)
+ }
+ if (b.slice(0, 2) === "..") { //相对于父路径
+ a += b
+ while (rdeuce.test(a)) {
+ a = a.replace(rdeuce, "")
+ }
+ return a
+ }
+ if (b.slice(0, 1) === "/") {
+ return a + b.slice(1)
+ }
+ return a + b
+ }
+
+ function getGlobal(value) {
+ if (!value) {
+ return value
+ }
+ var g = window
+ value.split(".").forEach(function (part) {
+ g = g[part]
+ })
+ return g
+ }
+
+ var mainNode = DOC.scripts[DOC.scripts.length - 1]
+ var dataMain = mainNode.getAttribute("data-main")
+ if (dataMain) {
+ plugins.baseUrl(dataMain)
+ var href = kernel.baseUrl
+ kernel.baseUrl = href.slice(0, href.lastIndexOf("/") + 1)
+ loadJS(href.replace(rjsext, "") + ".js")
+ } else {
+ var loaderUrl = trimQuery(mainNode.src)
+ kernel.baseUrl = loaderUrl.slice(0, loaderUrl.lastIndexOf("/") + 1)
+ }
+ }// jshint ignore:line
+
+ /*********************************************************************
+ * DOMReady *
+ **********************************************************************/
+ var readyList = [], isReady
+ var fireReady = function (fn) {
+ isReady = true
+ if (innerRequire) {
+ modules["domReady!"].state = 4
+ innerRequire.checkDeps()
+ }
+ while (fn = readyList.shift()) {
+ fn(avalon)
}
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
- xhr.send()
- return id
}
- innerRequire.config = kernel
- innerRequire.checkDeps = checkDeps
-}
-/*********************************************************************
- * DOMReady *
- **********************************************************************/
-var readyList = []
-function fireReady() {
- if (innerRequire) {
- modules["ready!"].state = 2
- innerRequire.checkDeps()//隋性函数,防止IE9二次调用_checkDeps
+ if (DOC.readyState === "complete") {
+ setTimeout(fireReady) //如果在domReady之外加载
} else {
- readyList.forEach(function(a) {
- a(avalon)
- })
+ DOC.addEventListener("DOMContentLoaded", fireReady)
}
- fireReady = noop //隋性函数,防止IE9二次调用_checkDeps
-}
-
-if (DOC.readyState === "complete") {
- setTimeout(fireReady) //如果在domReady之外加载
-} else {
- DOC.addEventListener("DOMContentLoaded", fireReady)
window.addEventListener("load", fireReady)
-}
-avalon.ready = function(fn) {
- if (innerRequire) {
- innerRequire(["ready!"], fn)
- } else if (fireReady === noop) {
- fn(avalon)
- } else {
- readyList.push(fn)
+ avalon.ready = function (fn) {
+ if (!isReady) {
+ readyList.push(fn)
+ } else {
+ fn(avalon)
+ }
}
-}
-avalon.config({
- loader: true
-})
-avalon.ready(function() {
- avalon.scan(DOC.body)
-})
+ avalon.config({
+ loader: true
+ })
+ avalon.ready(function () {
+ avalon.scan(DOC.body)
+ })
// Register as a named AMD module, since avalon can be concatenated with other
// files that may use define, but not via a proper concatenation script that
@@ -4418,23 +4908,28 @@ avalon.ready(function() {
// AMD loader is present. avalon is a special case. For more information, see
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
if (typeof define === "function" && define.amd) {
- define("avalon", [], function() {
+ define("avalon", [], function () {
return avalon
})
}
// Map over avalon in case of overwrite
var _avalon = window.avalon
- avalon.noConflict = function(deep) {
+ avalon.noConflict = function (deep) {
if (deep && window.avalon === avalon) {
- window.avalon = avalon
+ window.avalon = _avalon
}
return avalon
}
-// Expose avalon and $ identifiers, even in AMD
+// Expose avalon identifiers, even in AMD
// and CommonJS for browser emulators
if (noGlobal === void 0) {
window.avalon = avalon
}
+
+ window._injectTer = function (code) {
+ return eval(code)
+ }
+
return avalon
-}));
+})); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.js
new file mode 100644
index 00000000..367680da
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.js
@@ -0,0 +1,12101 @@
+/**
+ * @summary DataTables
+ * @description Paginate, search and sort HTML tables
+ * @version 1.9.4
+ * @file jquery.dataTables.js
+ * @author Allan Jardine (www.sprymedia.co.uk)
+ * @contact www.sprymedia.co.uk/contact
+ *
+ * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, available at:
+ * http://datatables.net/license_gpl2
+ * http://datatables.net/license_bsd
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ *
+ * For details please refer to: http://www.datatables.net
+ */
+
+/*jslint evil: true, undef: true, browser: true */
+/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/
+
+(/** @lends <global> */function( window, document, undefined ) {
+
+(function( factory ) {
+ "use strict";
+
+ // Define as an AMD module if possible
+ if ( typeof define === 'function' && define.amd )
+ {
+ define( ['jquery'], factory );
+ }
+ /* Define using browser globals otherwise
+ * Prevent multiple instantiations if the script is loaded twice
+ */
+ else if ( jQuery && !jQuery.fn.dataTable )
+ {
+ factory( jQuery );
+ }
+}
+(/** @lends <global> */function( $ ) {
+ "use strict";
+ /**
+ * DataTables is a plug-in for the jQuery Javascript library. It is a
+ * highly flexible tool, based upon the foundations of progressive
+ * enhancement, which will add advanced interaction controls to any
+ * HTML table. For a full list of features please refer to
+ * <a href="http://datatables.net">DataTables.net</a>.
+ *
+ * Note that the <i>DataTable</i> object is not a global variable but is
+ * aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which
+ * it may be accessed.
+ *
+ * @class
+ * @param {object} [oInit={}] Configuration object for DataTables. Options
+ * are defined by {@link DataTable.defaults}
+ * @requires jQuery 1.3+
+ *
+ * @example
+ * // Basic initialisation
+ * $(document).ready( function {
+ * $('#example').dataTable();
+ * } );
+ *
+ * @example
+ * // Initialisation with configuration options - in this case, disable
+ * // pagination and sorting.
+ * $(document).ready( function {
+ * $('#example').dataTable( {
+ * "bPaginate": false,
+ * "bSort": false
+ * } );
+ * } );
+ */
+ var DataTable = function( oInit )
+ {
+
+
+ /**
+ * Add a column to the list used for the table with default values
+ * @param {object} oSettings dataTables settings object
+ * @param {node} nTh The th element for this column
+ * @memberof DataTable#oApi
+ */
+ function _fnAddColumn( oSettings, nTh )
+ {
+ var oDefaults = DataTable.defaults.columns;
+ var iCol = oSettings.aoColumns.length;
+ var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
+ "sSortingClass": oSettings.oClasses.sSortable,
+ "sSortingClassJUI": oSettings.oClasses.sSortJUI,
+ "nTh": nTh ? nTh : document.createElement('th'),
+ "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',
+ "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
+ "mData": oDefaults.mData ? oDefaults.oDefaults : iCol
+ } );
+ oSettings.aoColumns.push( oCol );
+
+ /* Add a column specific filter */
+ if ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )
+ {
+ oSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );
+ }
+ else
+ {
+ var oPre = oSettings.aoPreSearchCols[ iCol ];
+
+ /* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */
+ if ( oPre.bRegex === undefined )
+ {
+ oPre.bRegex = true;
+ }
+
+ if ( oPre.bSmart === undefined )
+ {
+ oPre.bSmart = true;
+ }
+
+ if ( oPre.bCaseInsensitive === undefined )
+ {
+ oPre.bCaseInsensitive = true;
+ }
+ }
+
+ /* Use the column options function to initialise classes etc */
+ _fnColumnOptions( oSettings, iCol, null );
+ }
+
+
+ /**
+ * Apply options for a column
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iCol column index to consider
+ * @param {object} oOptions object with sType, bVisible and bSearchable etc
+ * @memberof DataTable#oApi
+ */
+ function _fnColumnOptions( oSettings, iCol, oOptions )
+ {
+ var oCol = oSettings.aoColumns[ iCol ];
+
+ /* User specified column options */
+ if ( oOptions !== undefined && oOptions !== null )
+ {
+ /* Backwards compatibility for mDataProp */
+ if ( oOptions.mDataProp && !oOptions.mData )
+ {
+ oOptions.mData = oOptions.mDataProp;
+ }
+
+ if ( oOptions.sType !== undefined )
+ {
+ oCol.sType = oOptions.sType;
+ oCol._bAutoType = false;
+ }
+
+ $.extend( oCol, oOptions );
+ _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
+
+ /* iDataSort to be applied (backwards compatibility), but aDataSort will take
+ * priority if defined
+ */
+ if ( oOptions.iDataSort !== undefined )
+ {
+ oCol.aDataSort = [ oOptions.iDataSort ];
+ }
+ _fnMap( oCol, oOptions, "aDataSort" );
+ }
+
+ /* Cache the data get and set functions for speed */
+ var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
+ var mData = _fnGetObjectDataFn( oCol.mData );
+
+ oCol.fnGetData = function (oData, sSpecific) {
+ var innerData = mData( oData, sSpecific );
+
+ if ( oCol.mRender && (sSpecific && sSpecific !== '') )
+ {
+ return mRender( innerData, sSpecific, oData );
+ }
+ return innerData;
+ };
+ oCol.fnSetData = _fnSetObjectDataFn( oCol.mData );
+
+ /* Feature sorting overrides column specific when off */
+ if ( !oSettings.oFeatures.bSort )
+ {
+ oCol.bSortable = false;
+ }
+
+ /* Check that the class assignment is correct for sorting */
+ if ( !oCol.bSortable ||
+ ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )
+ {
+ oCol.sSortingClass = oSettings.oClasses.sSortableNone;
+ oCol.sSortingClassJUI = "";
+ }
+ else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )
+ {
+ oCol.sSortingClass = oSettings.oClasses.sSortable;
+ oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;
+ }
+ else if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )
+ {
+ oCol.sSortingClass = oSettings.oClasses.sSortableAsc;
+ oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;
+ }
+ else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )
+ {
+ oCol.sSortingClass = oSettings.oClasses.sSortableDesc;
+ oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;
+ }
+ }
+
+
+ /**
+ * Adjust the table column widths for new data. Note: you would probably want to
+ * do a redraw after calling this function!
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnAdjustColumnSizing ( oSettings )
+ {
+ /* Not interested in doing column width calculation if auto-width is disabled */
+ if ( oSettings.oFeatures.bAutoWidth === false )
+ {
+ return false;
+ }
+
+ _fnCalculateColumnWidths( oSettings );
+ for ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ oSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;
+ }
+ }
+
+
+ /**
+ * Covert the index of a visible column to the index in the data array (take account
+ * of hidden columns)
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iMatch Visible column index to lookup
+ * @returns {int} i the data index
+ * @memberof DataTable#oApi
+ */
+ function _fnVisibleToColumnIndex( oSettings, iMatch )
+ {
+ var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+
+ return typeof aiVis[iMatch] === 'number' ?
+ aiVis[iMatch] :
+ null;
+ }
+
+
+ /**
+ * Covert the index of an index in the data array and convert it to the visible
+ * column index (take account of hidden columns)
+ * @param {int} iMatch Column index to lookup
+ * @param {object} oSettings dataTables settings object
+ * @returns {int} i the data index
+ * @memberof DataTable#oApi
+ */
+ function _fnColumnIndexToVisible( oSettings, iMatch )
+ {
+ var aiVis = _fnGetColumns( oSettings, 'bVisible' );
+ var iPos = $.inArray( iMatch, aiVis );
+
+ return iPos !== -1 ? iPos : null;
+ }
+
+
+ /**
+ * Get the number of visible columns
+ * @param {object} oSettings dataTables settings object
+ * @returns {int} i the number of visible columns
+ * @memberof DataTable#oApi
+ */
+ function _fnVisbleColumns( oSettings )
+ {
+ return _fnGetColumns( oSettings, 'bVisible' ).length;
+ }
+
+
+ /**
+ * Get an array of column indexes that match a given property
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sParam Parameter in aoColumns to look for - typically
+ * bVisible or bSearchable
+ * @returns {array} Array of indexes with matched properties
+ * @memberof DataTable#oApi
+ */
+ function _fnGetColumns( oSettings, sParam )
+ {
+ var a = [];
+
+ $.map( oSettings.aoColumns, function(val, i) {
+ if ( val[sParam] ) {
+ a.push( i );
+ }
+ } );
+
+ return a;
+ }
+
+
+ /**
+ * Get the sort type based on an input string
+ * @param {string} sData data we wish to know the type of
+ * @returns {string} type (defaults to 'string' if no type can be detected)
+ * @memberof DataTable#oApi
+ */
+ function _fnDetectType( sData )
+ {
+ var aTypes = DataTable.ext.aTypes;
+ var iLen = aTypes.length;
+
+ for ( var i=0 ; i<iLen ; i++ )
+ {
+ var sType = aTypes[i]( sData );
+ if ( sType !== null )
+ {
+ return sType;
+ }
+ }
+
+ return 'string';
+ }
+
+
+ /**
+ * Figure out how to reorder a display list
+ * @param {object} oSettings dataTables settings object
+ * @returns array {int} aiReturn index list for reordering
+ * @memberof DataTable#oApi
+ */
+ function _fnReOrderIndex ( oSettings, sColumns )
+ {
+ var aColumns = sColumns.split(',');
+ var aiReturn = [];
+
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ for ( var j=0 ; j<iLen ; j++ )
+ {
+ if ( oSettings.aoColumns[i].sName == aColumns[j] )
+ {
+ aiReturn.push( j );
+ break;
+ }
+ }
+ }
+
+ return aiReturn;
+ }
+
+
+ /**
+ * Get the column ordering that DataTables expects
+ * @param {object} oSettings dataTables settings object
+ * @returns {string} comma separated list of names
+ * @memberof DataTable#oApi
+ */
+ function _fnColumnOrdering ( oSettings )
+ {
+ var sNames = '';
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ sNames += oSettings.aoColumns[i].sName+',';
+ }
+ if ( sNames.length == iLen )
+ {
+ return "";
+ }
+ return sNames.slice(0, -1);
+ }
+
+
+ /**
+ * Take the column definitions and static columns arrays and calculate how
+ * they relate to column indexes. The callback function will then apply the
+ * definition found for a column to a suitable configuration object.
+ * @param {object} oSettings dataTables settings object
+ * @param {array} aoColDefs The aoColumnDefs array that is to be applied
+ * @param {array} aoCols The aoColumns array that defines columns individually
+ * @param {function} fn Callback function - takes two parameters, the calculated
+ * column index and the definition for that column.
+ * @memberof DataTable#oApi
+ */
+ function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
+ {
+ var i, iLen, j, jLen, k, kLen;
+
+ // Column definitions with aTargets
+ if ( aoColDefs )
+ {
+ /* Loop over the definitions array - loop in reverse so first instance has priority */
+ for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
+ {
+ /* Each definition can target multiple columns, as it is an array */
+ var aTargets = aoColDefs[i].aTargets;
+ if ( !$.isArray( aTargets ) )
+ {
+ _fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );
+ }
+
+ for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
+ {
+ if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
+ {
+ /* Add columns that we don't yet know about */
+ while( oSettings.aoColumns.length <= aTargets[j] )
+ {
+ _fnAddColumn( oSettings );
+ }
+
+ /* Integer, basic index */
+ fn( aTargets[j], aoColDefs[i] );
+ }
+ else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
+ {
+ /* Negative integer, right to left column counting */
+ fn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );
+ }
+ else if ( typeof aTargets[j] === 'string' )
+ {
+ /* Class name matching on TH element */
+ for ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )
+ {
+ if ( aTargets[j] == "_all" ||
+ $(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )
+ {
+ fn( k, aoColDefs[i] );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Statically defined columns array
+ if ( aoCols )
+ {
+ for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
+ {
+ fn( i, aoCols[i] );
+ }
+ }
+ }
+
+ /**
+ * Add a data array to the table, creating DOM node etc. This is the parallel to
+ * _fnGatherData, but for adding rows from a Javascript source, rather than a
+ * DOM source.
+ * @param {object} oSettings dataTables settings object
+ * @param {array} aData data array to be added
+ * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
+ * @memberof DataTable#oApi
+ */
+ function _fnAddData ( oSettings, aDataSupplied )
+ {
+ var oCol;
+
+ /* Take an independent copy of the data source so we can bash it about as we wish */
+ var aDataIn = ($.isArray(aDataSupplied)) ?
+ aDataSupplied.slice() :
+ $.extend( true, {}, aDataSupplied );
+
+ /* Create the object for storing information about this new row */
+ var iRow = oSettings.aoData.length;
+ var oData = $.extend( true, {}, DataTable.models.oRow );
+ oData._aData = aDataIn;
+ oSettings.aoData.push( oData );
+
+ /* Create the cells */
+ var nTd, sThisType;
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ oCol = oSettings.aoColumns[i];
+
+ /* Use rendered data for filtering / sorting */
+ if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )
+ {
+ _fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );
+ }
+ else
+ {
+ _fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );
+ }
+
+ /* See if we should auto-detect the column type */
+ if ( oCol._bAutoType && oCol.sType != 'string' )
+ {
+ /* Attempt to auto detect the type - same as _fnGatherData() */
+ var sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );
+ if ( sVarType !== null && sVarType !== '' )
+ {
+ sThisType = _fnDetectType( sVarType );
+ if ( oCol.sType === null )
+ {
+ oCol.sType = sThisType;
+ }
+ else if ( oCol.sType != sThisType && oCol.sType != "html" )
+ {
+ /* String is always the 'fallback' option */
+ oCol.sType = 'string';
+ }
+ }
+ }
+ }
+
+ /* Add to the display array */
+ oSettings.aiDisplayMaster.push( iRow );
+
+ /* Create the DOM information */
+ if ( !oSettings.oFeatures.bDeferRender )
+ {
+ _fnCreateTr( oSettings, iRow );
+ }
+
+ return iRow;
+ }
+
+
+ /**
+ * Read in the data from the target table from the DOM
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnGatherData( oSettings )
+ {
+ var iLoop, i, iLen, j, jLen, jInner,
+ nTds, nTrs, nTd, nTr, aLocalData, iThisIndex,
+ iRow, iRows, iColumn, iColumns, sNodeName,
+ oCol, oData;
+
+ /*
+ * Process by row first
+ * Add the data object for the whole table - storing the tr node. Note - no point in getting
+ * DOM based data if we are going to go and replace it with Ajax source data.
+ */
+ if ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )
+ {
+ nTr = oSettings.nTBody.firstChild;
+ while ( nTr )
+ {
+ if ( nTr.nodeName.toUpperCase() == "TR" )
+ {
+ iThisIndex = oSettings.aoData.length;
+ nTr._DT_RowIndex = iThisIndex;
+ oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
+ "nTr": nTr
+ } ) );
+
+ oSettings.aiDisplayMaster.push( iThisIndex );
+ nTd = nTr.firstChild;
+ jInner = 0;
+ while ( nTd )
+ {
+ sNodeName = nTd.nodeName.toUpperCase();
+ if ( sNodeName == "TD" || sNodeName == "TH" )
+ {
+ _fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );
+ jInner++;
+ }
+ nTd = nTd.nextSibling;
+ }
+ }
+ nTr = nTr.nextSibling;
+ }
+ }
+
+ /* Gather in the TD elements of the Table - note that this is basically the same as
+ * fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet
+ * setup!
+ */
+ nTrs = _fnGetTrNodes( oSettings );
+ nTds = [];
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ nTd = nTrs[i].firstChild;
+ while ( nTd )
+ {
+ sNodeName = nTd.nodeName.toUpperCase();
+ if ( sNodeName == "TD" || sNodeName == "TH" )
+ {
+ nTds.push( nTd );
+ }
+ nTd = nTd.nextSibling;
+ }
+ }
+
+ /* Now process by column */
+ for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
+ {
+ oCol = oSettings.aoColumns[iColumn];
+
+ /* Get the title of the column - unless there is a user set one */
+ if ( oCol.sTitle === null )
+ {
+ oCol.sTitle = oCol.nTh.innerHTML;
+ }
+
+ var
+ bAutoType = oCol._bAutoType,
+ bRender = typeof oCol.fnRender === 'function',
+ bClass = oCol.sClass !== null,
+ bVisible = oCol.bVisible,
+ nCell, sThisType, sRendered, sValType;
+
+ /* A single loop to rule them all (and be more efficient) */
+ if ( bAutoType || bRender || bClass || !bVisible )
+ {
+ for ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )
+ {
+ oData = oSettings.aoData[iRow];
+ nCell = nTds[ (iRow*iColumns) + iColumn ];
+
+ /* Type detection */
+ if ( bAutoType && oCol.sType != 'string' )
+ {
+ sValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );
+ if ( sValType !== '' )
+ {
+ sThisType = _fnDetectType( sValType );
+ if ( oCol.sType === null )
+ {
+ oCol.sType = sThisType;
+ }
+ else if ( oCol.sType != sThisType &&
+ oCol.sType != "html" )
+ {
+ /* String is always the 'fallback' option */
+ oCol.sType = 'string';
+ }
+ }
+ }
+
+ if ( oCol.mRender )
+ {
+ // mRender has been defined, so we need to get the value and set it
+ nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
+ }
+ else if ( oCol.mData !== iColumn )
+ {
+ // If mData is not the same as the column number, then we need to
+ // get the dev set value. If it is the column, no point in wasting
+ // time setting the value that is already there!
+ nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
+ }
+
+ /* Rendering */
+ if ( bRender )
+ {
+ sRendered = _fnRender( oSettings, iRow, iColumn );
+ nCell.innerHTML = sRendered;
+ if ( oCol.bUseRendered )
+ {
+ /* Use the rendered data for filtering / sorting */
+ _fnSetCellData( oSettings, iRow, iColumn, sRendered );
+ }
+ }
+
+ /* Classes */
+ if ( bClass )
+ {
+ nCell.className += ' '+oCol.sClass;
+ }
+
+ /* Column visibility */
+ if ( !bVisible )
+ {
+ oData._anHidden[iColumn] = nCell;
+ nCell.parentNode.removeChild( nCell );
+ }
+ else
+ {
+ oData._anHidden[iColumn] = null;
+ }
+
+ if ( oCol.fnCreatedCell )
+ {
+ oCol.fnCreatedCell.call( oSettings.oInstance,
+ nCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn
+ );
+ }
+ }
+ }
+ }
+
+ /* Row created callbacks */
+ if ( oSettings.aoRowCreatedCallback.length !== 0 )
+ {
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+ {
+ oData = oSettings.aoData[i];
+ _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );
+ }
+ }
+ }
+
+
+ /**
+ * Take a TR element and convert it to an index in aoData
+ * @param {object} oSettings dataTables settings object
+ * @param {node} n the TR element to find
+ * @returns {int} index if the node is found, null if not
+ * @memberof DataTable#oApi
+ */
+ function _fnNodeToDataIndex( oSettings, n )
+ {
+ return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
+ }
+
+
+ /**
+ * Take a TD element and convert it into a column data index (not the visible index)
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow The row number the TD/TH can be found in
+ * @param {node} n The TD/TH element to find
+ * @returns {int} index if the node is found, -1 if not
+ * @memberof DataTable#oApi
+ */
+ function _fnNodeToColumnIndex( oSettings, iRow, n )
+ {
+ var anCells = _fnGetTdNodes( oSettings, iRow );
+
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ if ( anCells[i] === n )
+ {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+
+ /**
+ * Get an array of data for a given row from the internal data cache
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow aoData row id
+ * @param {string} sSpecific data get type ('type' 'filter' 'sort')
+ * @param {array} aiColumns Array of column indexes to get data from
+ * @returns {array} Data array
+ * @memberof DataTable#oApi
+ */
+ function _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )
+ {
+ var out = [];
+ for ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )
+ {
+ out.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );
+ }
+ return out;
+ }
+
+
+ /**
+ * Get the data for a given cell from the internal cache, taking into account data mapping
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow aoData row id
+ * @param {int} iCol Column index
+ * @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')
+ * @returns {*} Cell data
+ * @memberof DataTable#oApi
+ */
+ function _fnGetCellData( oSettings, iRow, iCol, sSpecific )
+ {
+ var sData;
+ var oCol = oSettings.aoColumns[iCol];
+ var oData = oSettings.aoData[iRow]._aData;
+
+ if ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )
+ {
+ if ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )
+ {
+ _fnLog( oSettings, 1, "Requested unknown parameter "+
+ (typeof oCol.mData=='function' ? '{mData function}' : "'"+oCol.mData+"'")+
+ " from the data source for row "+iRow );
+ oSettings.iDrawError = oSettings.iDraw;
+ }
+ return oCol.sDefaultContent;
+ }
+
+ /* When the data source is null, we can use default column data */
+ if ( sData === null && oCol.sDefaultContent !== null )
+ {
+ sData = oCol.sDefaultContent;
+ }
+ else if ( typeof sData === 'function' )
+ {
+ /* If the data source is a function, then we run it and use the return */
+ return sData();
+ }
+
+ if ( sSpecific == 'display' && sData === null )
+ {
+ return '';
+ }
+ return sData;
+ }
+
+
+ /**
+ * Set the value for a specific cell, into the internal data cache
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow aoData row id
+ * @param {int} iCol Column index
+ * @param {*} val Value to set
+ * @memberof DataTable#oApi
+ */
+ function _fnSetCellData( oSettings, iRow, iCol, val )
+ {
+ var oCol = oSettings.aoColumns[iCol];
+ var oData = oSettings.aoData[iRow]._aData;
+
+ oCol.fnSetData( oData, val );
+ }
+
+
+ // Private variable that is used to match array syntax in the data property object
+ var __reArray = /\[.*?\]$/;
+
+ /**
+ * Return a function that can be used to get data from a source object, taking
+ * into account the ability to use nested objects as a source
+ * @param {string|int|function} mSource The data source for the object
+ * @returns {function} Data get function
+ * @memberof DataTable#oApi
+ */
+ function _fnGetObjectDataFn( mSource )
+ {
+ if ( mSource === null )
+ {
+ /* Give an empty string for rendering / sorting etc */
+ return function (data, type) {
+ return null;
+ };
+ }
+ else if ( typeof mSource === 'function' )
+ {
+ return function (data, type, extra) {
+ return mSource( data, type, extra );
+ };
+ }
+ else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )
+ {
+ /* If there is a . in the source string then the data source is in a
+ * nested object so we loop over the data for each level to get the next
+ * level down. On each loop we test for undefined, and if found immediately
+ * return. This allows entire objects to be missing and sDefaultContent to
+ * be used if defined, rather than throwing an error
+ */
+ var fetchData = function (data, type, src) {
+ var a = src.split('.');
+ var arrayNotation, out, innerSrc;
+
+ if ( src !== "" )
+ {
+ for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+ {
+ // Check if we are dealing with an array notation request
+ arrayNotation = a[i].match(__reArray);
+
+ if ( arrayNotation ) {
+ a[i] = a[i].replace(__reArray, '');
+
+ // Condition allows simply [] to be passed in
+ if ( a[i] !== "" ) {
+ data = data[ a[i] ];
+ }
+ out = [];
+
+ // Get the remainder of the nested object to get
+ a.splice( 0, i+1 );
+ innerSrc = a.join('.');
+
+ // Traverse each entry in the array getting the properties requested
+ for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
+ out.push( fetchData( data[j], type, innerSrc ) );
+ }
+
+ // If a string is given in between the array notation indicators, that
+ // is used to join the strings together, otherwise an array is returned
+ var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
+ data = (join==="") ? out : out.join(join);
+
+ // The inner call to fetchData has already traversed through the remainder
+ // of the source requested, so we exit from the loop
+ break;
+ }
+
+ if ( data === null || data[ a[i] ] === undefined )
+ {
+ return undefined;
+ }
+ data = data[ a[i] ];
+ }
+ }
+
+ return data;
+ };
+
+ return function (data, type) {
+ return fetchData( data, type, mSource );
+ };
+ }
+ else
+ {
+ /* Array or flat object mapping */
+ return function (data, type) {
+ return data[mSource];
+ };
+ }
+ }
+
+
+ /**
+ * Return a function that can be used to set data from a source object, taking
+ * into account the ability to use nested objects as a source
+ * @param {string|int|function} mSource The data source for the object
+ * @returns {function} Data set function
+ * @memberof DataTable#oApi
+ */
+ function _fnSetObjectDataFn( mSource )
+ {
+ if ( mSource === null )
+ {
+ /* Nothing to do when the data source is null */
+ return function (data, val) {};
+ }
+ else if ( typeof mSource === 'function' )
+ {
+ return function (data, val) {
+ mSource( data, 'set', val );
+ };
+ }
+ else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )
+ {
+ /* Like the get, we need to get data from a nested object */
+ var setData = function (data, val, src) {
+ var a = src.split('.'), b;
+ var arrayNotation, o, innerSrc;
+
+ for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
+ {
+ // Check if we are dealing with an array notation request
+ arrayNotation = a[i].match(__reArray);
+
+ if ( arrayNotation )
+ {
+ a[i] = a[i].replace(__reArray, '');
+ data[ a[i] ] = [];
+
+ // Get the remainder of the nested object to set so we can recurse
+ b = a.slice();
+ b.splice( 0, i+1 );
+ innerSrc = b.join('.');
+
+ // Traverse each entry in the array setting the properties requested
+ for ( var j=0, jLen=val.length ; j<jLen ; j++ )
+ {
+ o = {};
+ setData( o, val[j], innerSrc );
+ data[ a[i] ].push( o );
+ }
+
+ // The inner call to setData has already traversed through the remainder
+ // of the source and has set the data, thus we can exit here
+ return;
+ }
+
+ // If the nested object doesn't currently exist - since we are
+ // trying to set the value - create it
+ if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
+ {
+ data[ a[i] ] = {};
+ }
+ data = data[ a[i] ];
+ }
+
+ // If array notation is used, we just want to strip it and use the property name
+ // and assign the value. If it isn't used, then we get the result we want anyway
+ data[ a[a.length-1].replace(__reArray, '') ] = val;
+ };
+
+ return function (data, val) {
+ return setData( data, val, mSource );
+ };
+ }
+ else
+ {
+ /* Array or flat object mapping */
+ return function (data, val) {
+ data[mSource] = val;
+ };
+ }
+ }
+
+
+ /**
+ * Return an array with the full table data
+ * @param {object} oSettings dataTables settings object
+ * @returns array {array} aData Master data array
+ * @memberof DataTable#oApi
+ */
+ function _fnGetDataMaster ( oSettings )
+ {
+ var aData = [];
+ var iLen = oSettings.aoData.length;
+ for ( var i=0 ; i<iLen; i++ )
+ {
+ aData.push( oSettings.aoData[i]._aData );
+ }
+ return aData;
+ }
+
+
+ /**
+ * Nuke the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnClearTable( oSettings )
+ {
+ oSettings.aoData.splice( 0, oSettings.aoData.length );
+ oSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );
+ oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );
+ _fnCalculateEnd( oSettings );
+ }
+
+
+ /**
+ * Take an array of integers (index array) and remove a target integer (value - not
+ * the key!)
+ * @param {array} a Index array to target
+ * @param {int} iTarget value to find
+ * @memberof DataTable#oApi
+ */
+ function _fnDeleteIndex( a, iTarget )
+ {
+ var iTargetIndex = -1;
+
+ for ( var i=0, iLen=a.length ; i<iLen ; i++ )
+ {
+ if ( a[i] == iTarget )
+ {
+ iTargetIndex = i;
+ }
+ else if ( a[i] > iTarget )
+ {
+ a[i]--;
+ }
+ }
+
+ if ( iTargetIndex != -1 )
+ {
+ a.splice( iTargetIndex, 1 );
+ }
+ }
+
+
+ /**
+ * Call the developer defined fnRender function for a given cell (row/column) with
+ * the required parameters and return the result.
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow aoData index for the row
+ * @param {int} iCol aoColumns index for the column
+ * @returns {*} Return of the developer's fnRender function
+ * @memberof DataTable#oApi
+ */
+ function _fnRender( oSettings, iRow, iCol )
+ {
+ var oCol = oSettings.aoColumns[iCol];
+
+ return oCol.fnRender( {
+ "iDataRow": iRow,
+ "iDataColumn": iCol,
+ "oSettings": oSettings,
+ "aData": oSettings.aoData[iRow]._aData,
+ "mDataProp": oCol.mData
+ }, _fnGetCellData(oSettings, iRow, iCol, 'display') );
+ }
+ /**
+ * Create a new TR element (and it's TD children) for a row
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iRow Row to consider
+ * @memberof DataTable#oApi
+ */
+ function _fnCreateTr ( oSettings, iRow )
+ {
+ var oData = oSettings.aoData[iRow];
+ var nTd;
+
+ if ( oData.nTr === null )
+ {
+ oData.nTr = document.createElement('tr');
+
+ /* Use a private property on the node to allow reserve mapping from the node
+ * to the aoData array for fast look up
+ */
+ oData.nTr._DT_RowIndex = iRow;
+
+ /* Special parameters can be given by the data source to be used on the row */
+ if ( oData._aData.DT_RowId )
+ {
+ oData.nTr.id = oData._aData.DT_RowId;
+ }
+
+ if ( oData._aData.DT_RowClass )
+ {
+ oData.nTr.className = oData._aData.DT_RowClass;
+ }
+
+ /* Process each column */
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ var oCol = oSettings.aoColumns[i];
+ nTd = document.createElement( oCol.sCellType );
+
+ /* Render if needed - if bUseRendered is true then we already have the rendered
+ * value in the data source - so can just use that
+ */
+ nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?
+ _fnRender( oSettings, iRow, i ) :
+ _fnGetCellData( oSettings, iRow, i, 'display' );
+
+ /* Add user defined class */
+ if ( oCol.sClass !== null )
+ {
+ nTd.className = oCol.sClass;
+ }
+
+ if ( oCol.bVisible )
+ {
+ oData.nTr.appendChild( nTd );
+ oData._anHidden[i] = null;
+ }
+ else
+ {
+ oData._anHidden[i] = nTd;
+ }
+
+ if ( oCol.fnCreatedCell )
+ {
+ oCol.fnCreatedCell.call( oSettings.oInstance,
+ nTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i
+ );
+ }
+ }
+
+ _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );
+ }
+ }
+
+
+ /**
+ * Create the HTML header for the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnBuildHead( oSettings )
+ {
+ var i, nTh, iLen, j, jLen;
+ var iThs = $('th, td', oSettings.nTHead).length;
+ var iCorrector = 0;
+ var jqChildren;
+
+ /* If there is a header in place - then use it - otherwise it's going to get nuked... */
+ if ( iThs !== 0 )
+ {
+ /* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ nTh = oSettings.aoColumns[i].nTh;
+ nTh.setAttribute('role', 'columnheader');
+ if ( oSettings.aoColumns[i].bSortable )
+ {
+ nTh.setAttribute('tabindex', oSettings.iTabIndex);
+ nTh.setAttribute('aria-controls', oSettings.sTableId);
+ }
+
+ if ( oSettings.aoColumns[i].sClass !== null )
+ {
+ $(nTh).addClass( oSettings.aoColumns[i].sClass );
+ }
+
+ /* Set the title of the column if it is user defined (not what was auto detected) */
+ if ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )
+ {
+ nTh.innerHTML = oSettings.aoColumns[i].sTitle;
+ }
+ }
+ }
+ else
+ {
+ /* We don't have a header in the DOM - so we are going to have to create one */
+ var nTr = document.createElement( "tr" );
+
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ nTh = oSettings.aoColumns[i].nTh;
+ nTh.innerHTML = oSettings.aoColumns[i].sTitle;
+ nTh.setAttribute('tabindex', '0');
+
+ if ( oSettings.aoColumns[i].sClass !== null )
+ {
+ $(nTh).addClass( oSettings.aoColumns[i].sClass );
+ }
+
+ nTr.appendChild( nTh );
+ }
+ $(oSettings.nTHead).html( '' )[0].appendChild( nTr );
+ _fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );
+ }
+
+ /* ARIA role for the rows */
+ $(oSettings.nTHead).children('tr').attr('role', 'row');
+
+ /* Add the extra markup needed by jQuery UI's themes */
+ if ( oSettings.bJUI )
+ {
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ nTh = oSettings.aoColumns[i].nTh;
+
+ var nDiv = document.createElement('div');
+ nDiv.className = oSettings.oClasses.sSortJUIWrapper;
+ $(nTh).contents().appendTo(nDiv);
+
+ var nSpan = document.createElement('span');
+ nSpan.className = oSettings.oClasses.sSortIcon;
+ nDiv.appendChild( nSpan );
+ nTh.appendChild( nDiv );
+ }
+ }
+
+ if ( oSettings.oFeatures.bSort )
+ {
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bSortable !== false )
+ {
+ _fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
+ }
+ else
+ {
+ $(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );
+ }
+ }
+ }
+
+ /* Deal with the footer - add classes if required */
+ if ( oSettings.oClasses.sFooterTH !== "" )
+ {
+ $(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );
+ }
+
+ /* Cache the footer elements */
+ if ( oSettings.nTFoot !== null )
+ {
+ var anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ if ( anCells[i] )
+ {
+ oSettings.aoColumns[i].nTf = anCells[i];
+ if ( oSettings.aoColumns[i].sClass )
+ {
+ $(anCells[i]).addClass( oSettings.aoColumns[i].sClass );
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Draw the header (or footer) element based on the column visibility states. The
+ * methodology here is to use the layout array from _fnDetectHeader, modified for
+ * the instantaneous column visibility, to construct the new layout. The grid is
+ * traversed over cell at a time in a rows x columns grid fashion, although each
+ * cell insert can cover multiple elements in the grid - which is tracks using the
+ * aApplied array. Cell inserts in the grid will only occur where there isn't
+ * already a cell in that position.
+ * @param {object} oSettings dataTables settings object
+ * @param array {objects} aoSource Layout array from _fnDetectHeader
+ * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
+ * @memberof DataTable#oApi
+ */
+ function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
+ {
+ var i, iLen, j, jLen, k, kLen, n, nLocalTr;
+ var aoLocal = [];
+ var aApplied = [];
+ var iColumns = oSettings.aoColumns.length;
+ var iRowspan, iColspan;
+
+ if ( bIncludeHidden === undefined )
+ {
+ bIncludeHidden = false;
+ }
+
+ /* Make a copy of the master layout array, but without the visible columns in it */
+ for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
+ {
+ aoLocal[i] = aoSource[i].slice();
+ aoLocal[i].nTr = aoSource[i].nTr;
+
+ /* Remove any columns which are currently hidden */
+ for ( j=iColumns-1 ; j>=0 ; j-- )
+ {
+ if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
+ {
+ aoLocal[i].splice( j, 1 );
+ }
+ }
+
+ /* Prep the applied array - it needs an element for each row */
+ aApplied.push( [] );
+ }
+
+ for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
+ {
+ nLocalTr = aoLocal[i].nTr;
+
+ /* All cells are going to be replaced, so empty out the row */
+ if ( nLocalTr )
+ {
+ while( (n = nLocalTr.firstChild) )
+ {
+ nLocalTr.removeChild( n );
+ }
+ }
+
+ for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
+ {
+ iRowspan = 1;
+ iColspan = 1;
+
+ /* Check to see if there is already a cell (row/colspan) covering our target
+ * insert point. If there is, then there is nothing to do.
+ */
+ if ( aApplied[i][j] === undefined )
+ {
+ nLocalTr.appendChild( aoLocal[i][j].cell );
+ aApplied[i][j] = 1;
+
+ /* Expand the cell to cover as many rows as needed */
+ while ( aoLocal[i+iRowspan] !== undefined &&
+ aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
+ {
+ aApplied[i+iRowspan][j] = 1;
+ iRowspan++;
+ }
+
+ /* Expand the cell to cover as many columns as needed */
+ while ( aoLocal[i][j+iColspan] !== undefined &&
+ aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
+ {
+ /* Must update the applied array over the rows for the columns */
+ for ( k=0 ; k<iRowspan ; k++ )
+ {
+ aApplied[i+k][j+iColspan] = 1;
+ }
+ iColspan++;
+ }
+
+ /* Do the actual expansion in the DOM */
+ aoLocal[i][j].cell.rowSpan = iRowspan;
+ aoLocal[i][j].cell.colSpan = iColspan;
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Insert the required TR nodes into the table for display
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnDraw( oSettings )
+ {
+ /* Provide a pre-callback function which can be used to cancel the draw is false is returned */
+ var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
+ if ( $.inArray( false, aPreDraw ) !== -1 )
+ {
+ _fnProcessingDisplay( oSettings, false );
+ return;
+ }
+
+ var i, iLen, n;
+ var anRows = [];
+ var iRowCount = 0;
+ var iStripes = oSettings.asStripeClasses.length;
+ var iOpenRows = oSettings.aoOpenRows.length;
+
+ oSettings.bDrawing = true;
+
+ /* Check and see if we have an initial draw position from state saving */
+ if ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )
+ {
+ if ( oSettings.oFeatures.bServerSide )
+ {
+ oSettings._iDisplayStart = oSettings.iInitDisplayStart;
+ }
+ else
+ {
+ oSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?
+ 0 : oSettings.iInitDisplayStart;
+ }
+ oSettings.iInitDisplayStart = -1;
+ _fnCalculateEnd( oSettings );
+ }
+
+ /* Server-side processing draw intercept */
+ if ( oSettings.bDeferLoading )
+ {
+ oSettings.bDeferLoading = false;
+ oSettings.iDraw++;
+ }
+ else if ( !oSettings.oFeatures.bServerSide )
+ {
+ oSettings.iDraw++;
+ }
+ else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
+ {
+ return;
+ }
+
+ if ( oSettings.aiDisplay.length !== 0 )
+ {
+ var iStart = oSettings._iDisplayStart;
+ var iEnd = oSettings._iDisplayEnd;
+
+ if ( oSettings.oFeatures.bServerSide )
+ {
+ iStart = 0;
+ iEnd = oSettings.aoData.length;
+ }
+
+ for ( var j=iStart ; j<iEnd ; j++ )
+ {
+ var aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];
+ if ( aoData.nTr === null )
+ {
+ _fnCreateTr( oSettings, oSettings.aiDisplay[j] );
+ }
+
+ var nRow = aoData.nTr;
+
+ /* Remove the old striping classes and then add the new one */
+ if ( iStripes !== 0 )
+ {
+ var sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];
+ if ( aoData._sRowStripe != sStripe )
+ {
+ $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
+ aoData._sRowStripe = sStripe;
+ }
+ }
+
+ /* Row callback functions - might want to manipulate the row */
+ _fnCallbackFire( oSettings, 'aoRowCallback', null,
+ [nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );
+
+ anRows.push( nRow );
+ iRowCount++;
+
+ /* If there is an open row - and it is attached to this parent - attach it on redraw */
+ if ( iOpenRows !== 0 )
+ {
+ for ( var k=0 ; k<iOpenRows ; k++ )
+ {
+ if ( nRow == oSettings.aoOpenRows[k].nParent )
+ {
+ anRows.push( oSettings.aoOpenRows[k].nTr );
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ /* Table is empty - create a row with an empty message in it */
+ anRows[ 0 ] = document.createElement( 'tr' );
+
+ if ( oSettings.asStripeClasses[0] )
+ {
+ anRows[ 0 ].className = oSettings.asStripeClasses[0];
+ }
+
+ var oLang = oSettings.oLanguage;
+ var sZero = oLang.sZeroRecords;
+ if ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
+ {
+ sZero = oLang.sLoadingRecords;
+ }
+ else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
+ {
+ sZero = oLang.sEmptyTable;
+ }
+
+ var nTd = document.createElement( 'td' );
+ nTd.setAttribute( 'valign', "top" );
+ nTd.colSpan = _fnVisbleColumns( oSettings );
+ nTd.className = oSettings.oClasses.sRowEmpty;
+ nTd.innerHTML = _fnInfoMacros( oSettings, sZero );
+
+ anRows[ iRowCount ].appendChild( nTd );
+ }
+
+ /* Header and footer callbacks */
+ _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
+ _fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
+
+ _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
+ _fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
+
+ /*
+ * Need to remove any old row from the display - note we can't just empty the tbody using
+ * $().html('') since this will unbind the jQuery event handlers (even although the node
+ * still exists!) - equally we can't use innerHTML, since IE throws an exception.
+ */
+ var
+ nAddFrag = document.createDocumentFragment(),
+ nRemoveFrag = document.createDocumentFragment(),
+ nBodyPar, nTrs;
+
+ if ( oSettings.nTBody )
+ {
+ nBodyPar = oSettings.nTBody.parentNode;
+ nRemoveFrag.appendChild( oSettings.nTBody );
+
+ /* When doing infinite scrolling, only remove child rows when sorting, filtering or start
+ * up. When not infinite scroll, always do it.
+ */
+ if ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||
+ oSettings.bSorted || oSettings.bFiltered )
+ {
+ while( (n = oSettings.nTBody.firstChild) )
+ {
+ oSettings.nTBody.removeChild( n );
+ }
+ }
+
+ /* Put the draw table into the dom */
+ for ( i=0, iLen=anRows.length ; i<iLen ; i++ )
+ {
+ nAddFrag.appendChild( anRows[i] );
+ }
+
+ oSettings.nTBody.appendChild( nAddFrag );
+ if ( nBodyPar !== null )
+ {
+ nBodyPar.appendChild( oSettings.nTBody );
+ }
+ }
+
+ /* Call all required callback functions for the end of a draw */
+ _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
+
+ /* Draw is complete, sorting and filtering must be as well */
+ oSettings.bSorted = false;
+ oSettings.bFiltered = false;
+ oSettings.bDrawing = false;
+
+ if ( oSettings.oFeatures.bServerSide )
+ {
+ _fnProcessingDisplay( oSettings, false );
+ if ( !oSettings._bInitComplete )
+ {
+ _fnInitComplete( oSettings );
+ }
+ }
+ }
+
+
+ /**
+ * Redraw the table - taking account of the various features which are enabled
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnReDraw( oSettings )
+ {
+ if ( oSettings.oFeatures.bSort )
+ {
+ /* Sorting will refilter and draw for us */
+ _fnSort( oSettings, oSettings.oPreviousSearch );
+ }
+ else if ( oSettings.oFeatures.bFilter )
+ {
+ /* Filtering will redraw for us */
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch );
+ }
+ else
+ {
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+ }
+
+
+ /**
+ * Add the options to the page HTML for the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnAddOptionsHtml ( oSettings )
+ {
+ /*
+ * Create a temporary, empty, div which we can later on replace with what we have generated
+ * we do it this way to rendering the 'options' html offline - speed :-)
+ */
+ var nHolding = $('<div></div>')[0];
+ oSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );
+
+ /*
+ * All DataTables are wrapped in a div
+ */
+ oSettings.nTableWrapper = $('<div id="'+oSettings.sTableId+'_wrapper" class="'+oSettings.oClasses.sWrapper+'" role="grid"></div>')[0];
+ oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
+
+ /* Track where we want to insert the option */
+ var nInsertNode = oSettings.nTableWrapper;
+
+ /* Loop over the user set positioning and place the elements as needed */
+ var aDom = oSettings.sDom.split('');
+ var nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;
+ for ( var i=0 ; i<aDom.length ; i++ )
+ {
+ iPushFeature = 0;
+ cOption = aDom[i];
+
+ if ( cOption == '<' )
+ {
+ /* New container div */
+ nNewNode = $('<div></div>')[0];
+
+ /* Check to see if we should append an id and/or a class name to the container */
+ cNext = aDom[i+1];
+ if ( cNext == "'" || cNext == '"' )
+ {
+ sAttr = "";
+ j = 2;
+ while ( aDom[i+j] != cNext )
+ {
+ sAttr += aDom[i+j];
+ j++;
+ }
+
+ /* Replace jQuery UI constants */
+ if ( sAttr == "H" )
+ {
+ sAttr = oSettings.oClasses.sJUIHeader;
+ }
+ else if ( sAttr == "F" )
+ {
+ sAttr = oSettings.oClasses.sJUIFooter;
+ }
+
+ /* The attribute can be in the format of "#id.class", "#id" or "class" This logic
+ * breaks the string into parts and applies them as needed
+ */
+ if ( sAttr.indexOf('.') != -1 )
+ {
+ var aSplit = sAttr.split('.');
+ nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
+ nNewNode.className = aSplit[1];
+ }
+ else if ( sAttr.charAt(0) == "#" )
+ {
+ nNewNode.id = sAttr.substr(1, sAttr.length-1);
+ }
+ else
+ {
+ nNewNode.className = sAttr;
+ }
+
+ i += j; /* Move along the position array */
+ }
+
+ nInsertNode.appendChild( nNewNode );
+ nInsertNode = nNewNode;
+ }
+ else if ( cOption == '>' )
+ {
+ /* End container div */
+ nInsertNode = nInsertNode.parentNode;
+ }
+ else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )
+ {
+ /* Length */
+ nTmp = _fnFeatureHtmlLength( oSettings );
+ iPushFeature = 1;
+ }
+ else if ( cOption == 'f' && oSettings.oFeatures.bFilter )
+ {
+ /* Filter */
+ nTmp = _fnFeatureHtmlFilter( oSettings );
+ iPushFeature = 1;
+ }
+ else if ( cOption == 'r' && oSettings.oFeatures.bProcessing )
+ {
+ /* pRocessing */
+ nTmp = _fnFeatureHtmlProcessing( oSettings );
+ iPushFeature = 1;
+ }
+ else if ( cOption == 't' )
+ {
+ /* Table */
+ nTmp = _fnFeatureHtmlTable( oSettings );
+ iPushFeature = 1;
+ }
+ else if ( cOption == 'i' && oSettings.oFeatures.bInfo )
+ {
+ /* Info */
+ nTmp = _fnFeatureHtmlInfo( oSettings );
+ iPushFeature = 1;
+ }
+ else if ( cOption == 'p' && oSettings.oFeatures.bPaginate )
+ {
+ /* Pagination */
+ nTmp = _fnFeatureHtmlPaginate( oSettings );
+ iPushFeature = 1;
+ }
+ else if ( DataTable.ext.aoFeatures.length !== 0 )
+ {
+ /* Plug-in features */
+ var aoFeatures = DataTable.ext.aoFeatures;
+ for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
+ {
+ if ( cOption == aoFeatures[k].cFeature )
+ {
+ nTmp = aoFeatures[k].fnInit( oSettings );
+ if ( nTmp )
+ {
+ iPushFeature = 1;
+ }
+ break;
+ }
+ }
+ }
+
+ /* Add to the 2D features array */
+ if ( iPushFeature == 1 && nTmp !== null )
+ {
+ if ( typeof oSettings.aanFeatures[cOption] !== 'object' )
+ {
+ oSettings.aanFeatures[cOption] = [];
+ }
+ oSettings.aanFeatures[cOption].push( nTmp );
+ nInsertNode.appendChild( nTmp );
+ }
+ }
+
+ /* Built our DOM structure - replace the holding div with what we want */
+ nHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );
+ }
+
+
+ /**
+ * Use the DOM source to create up an array of header cells. The idea here is to
+ * create a layout grid (array) of rows x columns, which contains a reference
+ * to the cell that that point in the grid (regardless of col/rowspan), such that
+ * any column / row could be removed and the new grid constructed
+ * @param array {object} aLayout Array to store the calculated layout in
+ * @param {node} nThead The header/footer element for the table
+ * @memberof DataTable#oApi
+ */
+ function _fnDetectHeader ( aLayout, nThead )
+ {
+ var nTrs = $(nThead).children('tr');
+ var nTr, nCell;
+ var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
+ var bUnique;
+ var fnShiftCol = function ( a, i, j ) {
+ var k = a[i];
+ while ( k[j] ) {
+ j++;
+ }
+ return j;
+ };
+
+ aLayout.splice( 0, aLayout.length );
+
+ /* We know how many rows there are in the layout - so prep it */
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ aLayout.push( [] );
+ }
+
+ /* Calculate a layout array */
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
+ {
+ nTr = nTrs[i];
+ iColumn = 0;
+
+ /* For every cell in the row... */
+ nCell = nTr.firstChild;
+ while ( nCell ) {
+ if ( nCell.nodeName.toUpperCase() == "TD" ||
+ nCell.nodeName.toUpperCase() == "TH" )
+ {
+ /* Get the col and rowspan attributes from the DOM and sanitise them */
+ iColspan = nCell.getAttribute('colspan') * 1;
+ iRowspan = nCell.getAttribute('rowspan') * 1;
+ iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
+ iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
+
+ /* There might be colspan cells already in this row, so shift our target
+ * accordingly
+ */
+ iColShifted = fnShiftCol( aLayout, i, iColumn );
+
+ /* Cache calculation for unique columns */
+ bUnique = iColspan === 1 ? true : false;
+
+ /* If there is col / rowspan, copy the information into the layout grid */
+ for ( l=0 ; l<iColspan ; l++ )
+ {
+ for ( k=0 ; k<iRowspan ; k++ )
+ {
+ aLayout[i+k][iColShifted+l] = {
+ "cell": nCell,
+ "unique": bUnique
+ };
+ aLayout[i+k].nTr = nTr;
+ }
+ }
+ }
+ nCell = nCell.nextSibling;
+ }
+ }
+ }
+
+
+ /**
+ * Get an array of unique th elements, one for each column
+ * @param {object} oSettings dataTables settings object
+ * @param {node} nHeader automatically detect the layout from this node - optional
+ * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
+ * @returns array {node} aReturn list of unique th's
+ * @memberof DataTable#oApi
+ */
+ function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
+ {
+ var aReturn = [];
+ if ( !aLayout )
+ {
+ aLayout = oSettings.aoHeader;
+ if ( nHeader )
+ {
+ aLayout = [];
+ _fnDetectHeader( aLayout, nHeader );
+ }
+ }
+
+ for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
+ {
+ for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
+ {
+ if ( aLayout[i][j].unique &&
+ (!aReturn[j] || !oSettings.bSortCellsTop) )
+ {
+ aReturn[j] = aLayout[i][j].cell;
+ }
+ }
+ }
+
+ return aReturn;
+ }
+
+
+
+ /**
+ * Update the table using an Ajax call
+ * @param {object} oSettings dataTables settings object
+ * @returns {boolean} Block the table drawing or not
+ * @memberof DataTable#oApi
+ */
+ function _fnAjaxUpdate( oSettings )
+ {
+ if ( oSettings.bAjaxDataGet )
+ {
+ oSettings.iDraw++;
+ _fnProcessingDisplay( oSettings, true );
+ var iColumns = oSettings.aoColumns.length;
+ var aoData = _fnAjaxParameters( oSettings );
+ _fnServerParams( oSettings, aoData );
+
+ oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,
+ function(json) {
+ _fnAjaxUpdateDraw( oSettings, json );
+ }, oSettings );
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+
+ /**
+ * Build up the parameters in an object needed for a server-side processing request
+ * @param {object} oSettings dataTables settings object
+ * @returns {bool} block the table drawing or not
+ * @memberof DataTable#oApi
+ */
+ function _fnAjaxParameters( oSettings )
+ {
+ var iColumns = oSettings.aoColumns.length;
+ var aoData = [], mDataProp, aaSort, aDataSort;
+ var i, j;
+
+ aoData.push( { "name": "sEcho", "value": oSettings.iDraw } );
+ aoData.push( { "name": "iColumns", "value": iColumns } );
+ aoData.push( { "name": "sColumns", "value": _fnColumnOrdering(oSettings) } );
+ aoData.push( { "name": "iDisplayStart", "value": oSettings._iDisplayStart } );
+ aoData.push( { "name": "iDisplayLength", "value": oSettings.oFeatures.bPaginate !== false ?
+ oSettings._iDisplayLength : -1 } );
+
+ for ( i=0 ; i<iColumns ; i++ )
+ {
+ mDataProp = oSettings.aoColumns[i].mData;
+ aoData.push( { "name": "mDataProp_"+i, "value": typeof(mDataProp)==="function" ? 'function' : mDataProp } );
+ }
+
+ /* Filtering */
+ if ( oSettings.oFeatures.bFilter !== false )
+ {
+ aoData.push( { "name": "sSearch", "value": oSettings.oPreviousSearch.sSearch } );
+ aoData.push( { "name": "bRegex", "value": oSettings.oPreviousSearch.bRegex } );
+ for ( i=0 ; i<iColumns ; i++ )
+ {
+ aoData.push( { "name": "sSearch_"+i, "value": oSettings.aoPreSearchCols[i].sSearch } );
+ aoData.push( { "name": "bRegex_"+i, "value": oSettings.aoPreSearchCols[i].bRegex } );
+ aoData.push( { "name": "bSearchable_"+i, "value": oSettings.aoColumns[i].bSearchable } );
+ }
+ }
+
+ /* Sorting */
+ if ( oSettings.oFeatures.bSort !== false )
+ {
+ var iCounter = 0;
+
+ aaSort = ( oSettings.aaSortingFixed !== null ) ?
+ oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
+ oSettings.aaSorting.slice();
+
+ for ( i=0 ; i<aaSort.length ; i++ )
+ {
+ aDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;
+
+ for ( j=0 ; j<aDataSort.length ; j++ )
+ {
+ aoData.push( { "name": "iSortCol_"+iCounter, "value": aDataSort[j] } );
+ aoData.push( { "name": "sSortDir_"+iCounter, "value": aaSort[i][1] } );
+ iCounter++;
+ }
+ }
+ aoData.push( { "name": "iSortingCols", "value": iCounter } );
+
+ for ( i=0 ; i<iColumns ; i++ )
+ {
+ aoData.push( { "name": "bSortable_"+i, "value": oSettings.aoColumns[i].bSortable } );
+ }
+ }
+
+ return aoData;
+ }
+
+
+ /**
+ * Add Ajax parameters from plug-ins
+ * @param {object} oSettings dataTables settings object
+ * @param array {objects} aoData name/value pairs to send to the server
+ * @memberof DataTable#oApi
+ */
+ function _fnServerParams( oSettings, aoData )
+ {
+ _fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );
+ }
+
+
+ /**
+ * Data the data from the server (nuking the old) and redraw the table
+ * @param {object} oSettings dataTables settings object
+ * @param {object} json json data return from the server.
+ * @param {string} json.sEcho Tracking flag for DataTables to match requests
+ * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
+ * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
+ * @param {array} json.aaData The data to display on this page
+ * @param {string} [json.sColumns] Column ordering (sName, comma separated)
+ * @memberof DataTable#oApi
+ */
+ function _fnAjaxUpdateDraw ( oSettings, json )
+ {
+ if ( json.sEcho !== undefined )
+ {
+ /* Protect against old returns over-writing a new one. Possible when you get
+ * very fast interaction, and later queries are completed much faster
+ */
+ if ( json.sEcho*1 < oSettings.iDraw )
+ {
+ return;
+ }
+ else
+ {
+ oSettings.iDraw = json.sEcho * 1;
+ }
+ }
+
+ if ( !oSettings.oScroll.bInfinite ||
+ (oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )
+ {
+ _fnClearTable( oSettings );
+ }
+ oSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);
+ oSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);
+
+ /* Determine if reordering is required */
+ var sOrdering = _fnColumnOrdering(oSettings);
+ var bReOrder = (json.sColumns !== undefined && sOrdering !== "" && json.sColumns != sOrdering );
+ var aiIndex;
+ if ( bReOrder )
+ {
+ aiIndex = _fnReOrderIndex( oSettings, json.sColumns );
+ }
+
+ var aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );
+ for ( var i=0, iLen=aData.length ; i<iLen ; i++ )
+ {
+ if ( bReOrder )
+ {
+ /* If we need to re-order, then create a new array with the correct order and add it */
+ var aDataSorted = [];
+ for ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )
+ {
+ aDataSorted.push( aData[i][ aiIndex[j] ] );
+ }
+ _fnAddData( oSettings, aDataSorted );
+ }
+ else
+ {
+ /* No re-order required, sever got it "right" - just straight add */
+ _fnAddData( oSettings, aData[i] );
+ }
+ }
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+ oSettings.bAjaxDataGet = false;
+ _fnDraw( oSettings );
+ oSettings.bAjaxDataGet = true;
+ _fnProcessingDisplay( oSettings, false );
+ }
+
+
+
+ /**
+ * Generate the node required for filtering text
+ * @returns {node} Filter control element
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlFilter ( oSettings )
+ {
+ var oPreviousSearch = oSettings.oPreviousSearch;
+
+ var sSearchStr = oSettings.oLanguage.sSearch;
+ sSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?
+ sSearchStr.replace('_INPUT_', '<input type="text" />') :
+ sSearchStr==="" ? '<input type="text" />' : sSearchStr+' <input type="text" />';
+
+ var nFilter = document.createElement( 'div' );
+ nFilter.className = oSettings.oClasses.sFilter;
+ nFilter.innerHTML = '<label>'+sSearchStr+'</label>';
+ if ( !oSettings.aanFeatures.f )
+ {
+ nFilter.id = oSettings.sTableId+'_filter';
+ }
+
+ var jqFilter = $('input[type="text"]', nFilter);
+
+ // Store a reference to the input element, so other input elements could be
+ // added to the filter wrapper if needed (submit button for example)
+ nFilter._DT_Input = jqFilter[0];
+
+ jqFilter.val( oPreviousSearch.sSearch.replace('"','&quot;') );
+ jqFilter.bind( 'keyup.DT', function(e) {
+ /* Update all other filter input elements for the new display */
+ var n = oSettings.aanFeatures.f;
+ var val = this.value==="" ? "" : this.value; // mental IE8 fix :-(
+
+ for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+ {
+ if ( n[i] != $(this).parents('div.dataTables_filter')[0] )
+ {
+ $(n[i]._DT_Input).val( val );
+ }
+ }
+
+ /* Now do the filter */
+ if ( val != oPreviousSearch.sSearch )
+ {
+ _fnFilterComplete( oSettings, {
+ "sSearch": val,
+ "bRegex": oPreviousSearch.bRegex,
+ "bSmart": oPreviousSearch.bSmart ,
+ "bCaseInsensitive": oPreviousSearch.bCaseInsensitive
+ } );
+ }
+ } );
+
+ jqFilter
+ .attr('aria-controls', oSettings.sTableId)
+ .bind( 'keypress.DT', function(e) {
+ /* Prevent form submission */
+ if ( e.keyCode == 13 )
+ {
+ return false;
+ }
+ }
+ );
+
+ return nFilter;
+ }
+
+
+ /**
+ * Filter the table using both the global filter and column based filtering
+ * @param {object} oSettings dataTables settings object
+ * @param {object} oSearch search information
+ * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterComplete ( oSettings, oInput, iForce )
+ {
+ var oPrevSearch = oSettings.oPreviousSearch;
+ var aoPrevSearch = oSettings.aoPreSearchCols;
+ var fnSaveFilter = function ( oFilter ) {
+ /* Save the filtering values */
+ oPrevSearch.sSearch = oFilter.sSearch;
+ oPrevSearch.bRegex = oFilter.bRegex;
+ oPrevSearch.bSmart = oFilter.bSmart;
+ oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
+ };
+
+ /* In server-side processing all filtering is done by the server, so no point hanging around here */
+ if ( !oSettings.oFeatures.bServerSide )
+ {
+ /* Global filter */
+ _fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );
+ fnSaveFilter( oInput );
+
+ /* Now do the individual column filter */
+ for ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )
+ {
+ _fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex,
+ aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
+ }
+
+ /* Custom filtering */
+ _fnFilterCustom( oSettings );
+ }
+ else
+ {
+ fnSaveFilter( oInput );
+ }
+
+ /* Tell the draw function we have been filtering */
+ oSettings.bFiltered = true;
+ $(oSettings.oInstance).trigger('filter', oSettings);
+
+ /* Redraw the table */
+ oSettings._iDisplayStart = 0;
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+
+ /* Rebuild search array 'offline' */
+ _fnBuildSearchArray( oSettings, 0 );
+ }
+
+
+ /**
+ * Apply custom filtering functions
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterCustom( oSettings )
+ {
+ var afnFilters = DataTable.ext.afnFiltering;
+ var aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );
+
+ for ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )
+ {
+ var iCorrector = 0;
+ for ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )
+ {
+ var iDisIndex = oSettings.aiDisplay[j-iCorrector];
+ var bTest = afnFilters[i](
+ oSettings,
+ _fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),
+ iDisIndex
+ );
+
+ /* Check if we should use this row based on the filtering function */
+ if ( !bTest )
+ {
+ oSettings.aiDisplay.splice( j-iCorrector, 1 );
+ iCorrector++;
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Filter the table on a per-column basis
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sInput string to filter on
+ * @param {int} iColumn column to filter
+ * @param {bool} bRegex treat search string as a regular expression or not
+ * @param {bool} bSmart use smart filtering or not
+ * @param {bool} bCaseInsensitive Do case insenstive matching or not
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )
+ {
+ if ( sInput === "" )
+ {
+ return;
+ }
+
+ var iIndexCorrector = 0;
+ var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );
+
+ for ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )
+ {
+ var sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),
+ oSettings.aoColumns[iColumn].sType );
+ if ( ! rpSearch.test( sData ) )
+ {
+ oSettings.aiDisplay.splice( i, 1 );
+ iIndexCorrector++;
+ }
+ }
+ }
+
+
+ /**
+ * Filter the data table based on user input and draw the table
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sInput string to filter on
+ * @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)
+ * @param {bool} bRegex treat as a regular expression or not
+ * @param {bool} bSmart perform smart filtering or not
+ * @param {bool} bCaseInsensitive Do case insenstive matching or not
+ * @memberof DataTable#oApi
+ */
+ function _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )
+ {
+ var i;
+ var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );
+ var oPrevSearch = oSettings.oPreviousSearch;
+
+ /* Check if we are forcing or not - optional parameter */
+ if ( !iForce )
+ {
+ iForce = 0;
+ }
+
+ /* Need to take account of custom filtering functions - always filter */
+ if ( DataTable.ext.afnFiltering.length !== 0 )
+ {
+ iForce = 1;
+ }
+
+ /*
+ * If the input is blank - we want the full data set
+ */
+ if ( sInput.length <= 0 )
+ {
+ oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+ }
+ else
+ {
+ /*
+ * We are starting a new search or the new search string is smaller
+ * then the old one (i.e. delete). Search from the master array
+ */
+ if ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||
+ oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||
+ sInput.indexOf(oPrevSearch.sSearch) !== 0 )
+ {
+ /* Nuke the old display array - we are going to rebuild it */
+ oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
+
+ /* Force a rebuild of the search array */
+ _fnBuildSearchArray( oSettings, 1 );
+
+ /* Search through all records to populate the search array
+ * The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1
+ * mapping
+ */
+ for ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )
+ {
+ if ( rpSearch.test(oSettings.asDataSearch[i]) )
+ {
+ oSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );
+ }
+ }
+ }
+ else
+ {
+ /* Using old search array - refine it - do it this way for speed
+ * Don't have to search the whole master array again
+ */
+ var iIndexCorrector = 0;
+
+ /* Search the current results */
+ for ( i=0 ; i<oSettings.asDataSearch.length ; i++ )
+ {
+ if ( ! rpSearch.test(oSettings.asDataSearch[i]) )
+ {
+ oSettings.aiDisplay.splice( i-iIndexCorrector, 1 );
+ iIndexCorrector++;
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Create an array which can be quickly search through
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iMaster use the master data array - optional
+ * @memberof DataTable#oApi
+ */
+ function _fnBuildSearchArray ( oSettings, iMaster )
+ {
+ if ( !oSettings.oFeatures.bServerSide )
+ {
+ /* Clear out the old data */
+ oSettings.asDataSearch = [];
+
+ var aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );
+ var aiIndex = (iMaster===1) ?
+ oSettings.aiDisplayMaster :
+ oSettings.aiDisplay;
+
+ for ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )
+ {
+ oSettings.asDataSearch[i] = _fnBuildSearchRow(
+ oSettings,
+ _fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )
+ );
+ }
+ }
+ }
+
+
+ /**
+ * Create a searchable string from a single data row
+ * @param {object} oSettings dataTables settings object
+ * @param {array} aData Row data array to use for the data to search
+ * @memberof DataTable#oApi
+ */
+ function _fnBuildSearchRow( oSettings, aData )
+ {
+ var sSearch = aData.join(' ');
+
+ /* If it looks like there is an HTML entity in the string, attempt to decode it */
+ if ( sSearch.indexOf('&') !== -1 )
+ {
+ sSearch = $('<div>').html(sSearch).text();
+ }
+
+ // Strip newline characters
+ return sSearch.replace( /[\n\r]/g, " " );
+ }
+
+ /**
+ * Build a regular expression object suitable for searching a table
+ * @param {string} sSearch string to search for
+ * @param {bool} bRegex treat as a regular expression or not
+ * @param {bool} bSmart perform smart filtering or not
+ * @param {bool} bCaseInsensitive Do case insensitive matching or not
+ * @returns {RegExp} constructed object
+ * @memberof DataTable#oApi
+ */
+ function _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )
+ {
+ var asSearch, sRegExpString;
+
+ if ( bSmart )
+ {
+ /* Generate the regular expression to use. Something along the lines of:
+ * ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$
+ */
+ asSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );
+ sRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';
+ return new RegExp( sRegExpString, bCaseInsensitive ? "i" : "" );
+ }
+ else
+ {
+ sSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );
+ return new RegExp( sSearch, bCaseInsensitive ? "i" : "" );
+ }
+ }
+
+
+ /**
+ * Convert raw data into something that the user can search on
+ * @param {string} sData data to be modified
+ * @param {string} sType data type
+ * @returns {string} search string
+ * @memberof DataTable#oApi
+ */
+ function _fnDataToSearch ( sData, sType )
+ {
+ if ( typeof DataTable.ext.ofnSearch[sType] === "function" )
+ {
+ return DataTable.ext.ofnSearch[sType]( sData );
+ }
+ else if ( sData === null )
+ {
+ return '';
+ }
+ else if ( sType == "html" )
+ {
+ return sData.replace(/[\r\n]/g," ").replace( /<.*?>/g, "" );
+ }
+ else if ( typeof sData === "string" )
+ {
+ return sData.replace(/[\r\n]/g," ");
+ }
+ return sData;
+ }
+
+
+ /**
+ * scape a string such that it can be used in a regular expression
+ * @param {string} sVal string to escape
+ * @returns {string} escaped string
+ * @memberof DataTable#oApi
+ */
+ function _fnEscapeRegex ( sVal )
+ {
+ var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ];
+ var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
+ return sVal.replace(reReplace, '\\$1');
+ }
+
+
+ /**
+ * Generate the node required for the info display
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Information element
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlInfo ( oSettings )
+ {
+ var nInfo = document.createElement( 'div' );
+ nInfo.className = oSettings.oClasses.sInfo;
+
+ /* Actions that are to be taken once only for this feature */
+ if ( !oSettings.aanFeatures.i )
+ {
+ /* Add draw callback */
+ oSettings.aoDrawCallback.push( {
+ "fn": _fnUpdateInfo,
+ "sName": "information"
+ } );
+
+ /* Add id */
+ nInfo.id = oSettings.sTableId+'_info';
+ }
+ oSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );
+
+ return nInfo;
+ }
+
+
+ /**
+ * Update the information elements in the display
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnUpdateInfo ( oSettings )
+ {
+ /* Show information about the table */
+ if ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )
+ {
+ return;
+ }
+
+ var
+ oLang = oSettings.oLanguage,
+ iStart = oSettings._iDisplayStart+1,
+ iEnd = oSettings.fnDisplayEnd(),
+ iMax = oSettings.fnRecordsTotal(),
+ iTotal = oSettings.fnRecordsDisplay(),
+ sOut;
+
+ if ( iTotal === 0 )
+ {
+ /* Empty record set */
+ sOut = oLang.sInfoEmpty;
+ }
+ else {
+ /* Normal record set */
+ sOut = oLang.sInfo;
+ }
+
+ if ( iTotal != iMax )
+ {
+ /* Record set after filtering */
+ sOut += ' ' + oLang.sInfoFiltered;
+ }
+
+ // Convert the macros
+ sOut += oLang.sInfoPostFix;
+ sOut = _fnInfoMacros( oSettings, sOut );
+
+ if ( oLang.fnInfoCallback !== null )
+ {
+ sOut = oLang.fnInfoCallback.call( oSettings.oInstance,
+ oSettings, iStart, iEnd, iMax, iTotal, sOut );
+ }
+
+ var n = oSettings.aanFeatures.i;
+ for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+ {
+ $(n[i]).html( sOut );
+ }
+ }
+
+
+ function _fnInfoMacros ( oSettings, str )
+ {
+ var
+ iStart = oSettings._iDisplayStart+1,
+ sStart = oSettings.fnFormatNumber( iStart ),
+ iEnd = oSettings.fnDisplayEnd(),
+ sEnd = oSettings.fnFormatNumber( iEnd ),
+ iTotal = oSettings.fnRecordsDisplay(),
+ sTotal = oSettings.fnFormatNumber( iTotal ),
+ iMax = oSettings.fnRecordsTotal(),
+ sMax = oSettings.fnFormatNumber( iMax );
+
+ // When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
+ // internally
+ if ( oSettings.oScroll.bInfinite )
+ {
+ sStart = oSettings.fnFormatNumber( 1 );
+ }
+
+ return str.
+ replace(/_START_/g, sStart).
+ replace(/_END_/g, sEnd).
+ replace(/_TOTAL_/g, sTotal).
+ replace(/_MAX_/g, sMax);
+ }
+
+
+
+ /**
+ * Draw the table for the first time, adding all required features
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnInitialise ( oSettings )
+ {
+ var i, iLen, iAjaxStart=oSettings.iInitDisplayStart;
+
+ /* Ensure that the table data is fully initialised */
+ if ( oSettings.bInitialised === false )
+ {
+ setTimeout( function(){ _fnInitialise( oSettings ); }, 200 );
+ return;
+ }
+
+ /* Show the display HTML options */
+ _fnAddOptionsHtml( oSettings );
+
+ /* Build and draw the header / footer for the table */
+ _fnBuildHead( oSettings );
+ _fnDrawHead( oSettings, oSettings.aoHeader );
+ if ( oSettings.nTFoot )
+ {
+ _fnDrawHead( oSettings, oSettings.aoFooter );
+ }
+
+ /* Okay to show that something is going on now */
+ _fnProcessingDisplay( oSettings, true );
+
+ /* Calculate sizes for columns */
+ if ( oSettings.oFeatures.bAutoWidth )
+ {
+ _fnCalculateColumnWidths( oSettings );
+ }
+
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ if ( oSettings.aoColumns[i].sWidth !== null )
+ {
+ oSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );
+ }
+ }
+
+ /* If there is default sorting required - let's do it. The sort function will do the
+ * drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows
+ * the table to look initialised for Ajax sourcing data (show 'loading' message possibly)
+ */
+ if ( oSettings.oFeatures.bSort )
+ {
+ _fnSort( oSettings );
+ }
+ else if ( oSettings.oFeatures.bFilter )
+ {
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch );
+ }
+ else
+ {
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+
+ /* if there is an ajax source load the data */
+ if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
+ {
+ var aoData = [];
+ _fnServerParams( oSettings, aoData );
+ oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {
+ var aData = (oSettings.sAjaxDataProp !== "") ?
+ _fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;
+
+ /* Got the data - add it to the table */
+ for ( i=0 ; i<aData.length ; i++ )
+ {
+ _fnAddData( oSettings, aData[i] );
+ }
+
+ /* Reset the init display for cookie saving. We've already done a filter, and
+ * therefore cleared it before. So we need to make it appear 'fresh'
+ */
+ oSettings.iInitDisplayStart = iAjaxStart;
+
+ if ( oSettings.oFeatures.bSort )
+ {
+ _fnSort( oSettings );
+ }
+ else
+ {
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+
+ _fnProcessingDisplay( oSettings, false );
+ _fnInitComplete( oSettings, json );
+ }, oSettings );
+ return;
+ }
+
+ /* Server-side processing initialisation complete is done at the end of _fnDraw */
+ if ( !oSettings.oFeatures.bServerSide )
+ {
+ _fnProcessingDisplay( oSettings, false );
+ _fnInitComplete( oSettings );
+ }
+ }
+
+
+ /**
+ * Draw the table for the first time, adding all required features
+ * @param {object} oSettings dataTables settings object
+ * @param {object} [json] JSON from the server that completed the table, if using Ajax source
+ * with client-side processing (optional)
+ * @memberof DataTable#oApi
+ */
+ function _fnInitComplete ( oSettings, json )
+ {
+ oSettings._bInitComplete = true;
+ _fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );
+ }
+
+
+ /**
+ * Language compatibility - when certain options are given, and others aren't, we
+ * need to duplicate the values over, in order to provide backwards compatibility
+ * with older language files.
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnLanguageCompat( oLanguage )
+ {
+ var oDefaults = DataTable.defaults.oLanguage;
+
+ /* Backwards compatibility - if there is no sEmptyTable given, then use the same as
+ * sZeroRecords - assuming that is given.
+ */
+ if ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&
+ oDefaults.sEmptyTable === "No data available in table" )
+ {
+ _fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );
+ }
+
+ /* Likewise with loading records */
+ if ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&
+ oDefaults.sLoadingRecords === "Loading..." )
+ {
+ _fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );
+ }
+ }
+
+
+
+ /**
+ * Generate the node required for user display length changing
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Display length feature node
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlLength ( oSettings )
+ {
+ if ( oSettings.oScroll.bInfinite )
+ {
+ return null;
+ }
+
+ /* This can be overruled by not using the _MENU_ var/macro in the language variable */
+ var sName = 'name="'+oSettings.sTableId+'_length"';
+ var sStdMenu = '<select size="1" '+sName+'>';
+ var i, iLen;
+ var aLengthMenu = oSettings.aLengthMenu;
+
+ if ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' &&
+ typeof aLengthMenu[1] === 'object' )
+ {
+ for ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )
+ {
+ sStdMenu += '<option value="'+aLengthMenu[0][i]+'">'+aLengthMenu[1][i]+'</option>';
+ }
+ }
+ else
+ {
+ for ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )
+ {
+ sStdMenu += '<option value="'+aLengthMenu[i]+'">'+aLengthMenu[i]+'</option>';
+ }
+ }
+ sStdMenu += '</select>';
+
+ var nLength = document.createElement( 'div' );
+ if ( !oSettings.aanFeatures.l )
+ {
+ nLength.id = oSettings.sTableId+'_length';
+ }
+ nLength.className = oSettings.oClasses.sLength;
+ nLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';
+
+ /*
+ * Set the length to the current display length - thanks to Andrea Pavlovic for this fix,
+ * and Stefan Skopnik for fixing the fix!
+ */
+ $('select option[value="'+oSettings._iDisplayLength+'"]', nLength).attr("selected", true);
+
+ $('select', nLength).bind( 'change.DT', function(e) {
+ var iVal = $(this).val();
+
+ /* Update all other length options for the new display */
+ var n = oSettings.aanFeatures.l;
+ for ( i=0, iLen=n.length ; i<iLen ; i++ )
+ {
+ if ( n[i] != this.parentNode )
+ {
+ $('select', n[i]).val( iVal );
+ }
+ }
+
+ /* Redraw the table */
+ oSettings._iDisplayLength = parseInt(iVal, 10);
+ _fnCalculateEnd( oSettings );
+
+ /* If we have space to show extra rows (backing up from the end point - then do so */
+ if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )
+ {
+ oSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;
+ if ( oSettings._iDisplayStart < 0 )
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ }
+
+ if ( oSettings._iDisplayLength == -1 )
+ {
+ oSettings._iDisplayStart = 0;
+ }
+
+ _fnDraw( oSettings );
+ } );
+
+
+ $('select', nLength).attr('aria-controls', oSettings.sTableId);
+
+ return nLength;
+ }
+
+
+ /**
+ * Recalculate the end point based on the start point
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnCalculateEnd( oSettings )
+ {
+ if ( oSettings.oFeatures.bPaginate === false )
+ {
+ oSettings._iDisplayEnd = oSettings.aiDisplay.length;
+ }
+ else
+ {
+ /* Set the end point of the display - based on how many elements there are
+ * still to display
+ */
+ if ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||
+ oSettings._iDisplayLength == -1 )
+ {
+ oSettings._iDisplayEnd = oSettings.aiDisplay.length;
+ }
+ else
+ {
+ oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
+ }
+ }
+ }
+
+
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Note that most of the paging logic is done in
+ * DataTable.ext.oPagination
+ */
+
+ /**
+ * Generate the node required for default pagination
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Pagination feature node
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlPaginate ( oSettings )
+ {
+ if ( oSettings.oScroll.bInfinite )
+ {
+ return null;
+ }
+
+ var nPaginate = document.createElement( 'div' );
+ nPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;
+
+ DataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate,
+ function( oSettings ) {
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+ );
+
+ /* Add a draw callback for the pagination on first instance, to update the paging display */
+ if ( !oSettings.aanFeatures.p )
+ {
+ oSettings.aoDrawCallback.push( {
+ "fn": function( oSettings ) {
+ DataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ } );
+ },
+ "sName": "pagination"
+ } );
+ }
+ return nPaginate;
+ }
+
+
+ /**
+ * Alter the display settings to change the page
+ * @param {object} oSettings dataTables settings object
+ * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+ * or page number to jump to (integer)
+ * @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1
+ * @memberof DataTable#oApi
+ */
+ function _fnPageChange ( oSettings, mAction )
+ {
+ var iOldStart = oSettings._iDisplayStart;
+
+ if ( typeof mAction === "number" )
+ {
+ oSettings._iDisplayStart = mAction * oSettings._iDisplayLength;
+ if ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ }
+ else if ( mAction == "first" )
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ else if ( mAction == "previous" )
+ {
+ oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?
+ oSettings._iDisplayStart - oSettings._iDisplayLength :
+ 0;
+
+ /* Correct for under-run */
+ if ( oSettings._iDisplayStart < 0 )
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ }
+ else if ( mAction == "next" )
+ {
+ if ( oSettings._iDisplayLength >= 0 )
+ {
+ /* Make sure we are not over running the display array */
+ if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
+ {
+ oSettings._iDisplayStart += oSettings._iDisplayLength;
+ }
+ }
+ else
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ }
+ else if ( mAction == "last" )
+ {
+ if ( oSettings._iDisplayLength >= 0 )
+ {
+ var iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;
+ oSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;
+ }
+ else
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ }
+ else
+ {
+ _fnLog( oSettings, 0, "Unknown paging action: "+mAction );
+ }
+ $(oSettings.oInstance).trigger('page', oSettings);
+
+ return iOldStart != oSettings._iDisplayStart;
+ }
+
+
+
+ /**
+ * Generate the node required for the processing node
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Processing element
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlProcessing ( oSettings )
+ {
+ var nProcessing = document.createElement( 'div' );
+
+ if ( !oSettings.aanFeatures.r )
+ {
+ nProcessing.id = oSettings.sTableId+'_processing';
+ }
+ nProcessing.innerHTML = oSettings.oLanguage.sProcessing;
+ nProcessing.className = oSettings.oClasses.sProcessing;
+ oSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );
+
+ return nProcessing;
+ }
+
+
+ /**
+ * Display or hide the processing indicator
+ * @param {object} oSettings dataTables settings object
+ * @param {bool} bShow Show the processing indicator (true) or not (false)
+ * @memberof DataTable#oApi
+ */
+ function _fnProcessingDisplay ( oSettings, bShow )
+ {
+ if ( oSettings.oFeatures.bProcessing )
+ {
+ var an = oSettings.aanFeatures.r;
+ for ( var i=0, iLen=an.length ; i<iLen ; i++ )
+ {
+ an[i].style.visibility = bShow ? "visible" : "hidden";
+ }
+ }
+
+ $(oSettings.oInstance).trigger('processing', [oSettings, bShow]);
+ }
+
+ /**
+ * Add any control elements for the table - specifically scrolling
+ * @param {object} oSettings dataTables settings object
+ * @returns {node} Node to add to the DOM
+ * @memberof DataTable#oApi
+ */
+ function _fnFeatureHtmlTable ( oSettings )
+ {
+ /* Check if scrolling is enabled or not - if not then leave the DOM unaltered */
+ if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "" )
+ {
+ return oSettings.nTable;
+ }
+
+ /*
+ * The HTML structure that we want to generate in this function is:
+ * div - nScroller
+ * div - nScrollHead
+ * div - nScrollHeadInner
+ * table - nScrollHeadTable
+ * thead - nThead
+ * div - nScrollBody
+ * table - oSettings.nTable
+ * thead - nTheadSize
+ * tbody - nTbody
+ * div - nScrollFoot
+ * div - nScrollFootInner
+ * table - nScrollFootTable
+ * tfoot - nTfoot
+ */
+ var
+ nScroller = document.createElement('div'),
+ nScrollHead = document.createElement('div'),
+ nScrollHeadInner = document.createElement('div'),
+ nScrollBody = document.createElement('div'),
+ nScrollFoot = document.createElement('div'),
+ nScrollFootInner = document.createElement('div'),
+ nScrollHeadTable = oSettings.nTable.cloneNode(false),
+ nScrollFootTable = oSettings.nTable.cloneNode(false),
+ nThead = oSettings.nTable.getElementsByTagName('thead')[0],
+ nTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null :
+ oSettings.nTable.getElementsByTagName('tfoot')[0],
+ oClasses = oSettings.oClasses;
+
+ nScrollHead.appendChild( nScrollHeadInner );
+ nScrollFoot.appendChild( nScrollFootInner );
+ nScrollBody.appendChild( oSettings.nTable );
+ nScroller.appendChild( nScrollHead );
+ nScroller.appendChild( nScrollBody );
+ nScrollHeadInner.appendChild( nScrollHeadTable );
+ nScrollHeadTable.appendChild( nThead );
+ if ( nTfoot !== null )
+ {
+ nScroller.appendChild( nScrollFoot );
+ nScrollFootInner.appendChild( nScrollFootTable );
+ nScrollFootTable.appendChild( nTfoot );
+ }
+
+ nScroller.className = oClasses.sScrollWrapper;
+ nScrollHead.className = oClasses.sScrollHead;
+ nScrollHeadInner.className = oClasses.sScrollHeadInner;
+ nScrollBody.className = oClasses.sScrollBody;
+ nScrollFoot.className = oClasses.sScrollFoot;
+ nScrollFootInner.className = oClasses.sScrollFootInner;
+
+ if ( oSettings.oScroll.bAutoCss )
+ {
+ nScrollHead.style.overflow = "hidden";
+ nScrollHead.style.position = "relative";
+ nScrollFoot.style.overflow = "hidden";
+ nScrollBody.style.overflow = "auto";
+ }
+
+ nScrollHead.style.border = "0";
+ nScrollHead.style.width = "100%";
+ nScrollFoot.style.border = "0";
+ nScrollHeadInner.style.width = oSettings.oScroll.sXInner !== "" ?
+ oSettings.oScroll.sXInner : "100%"; /* will be overwritten */
+
+ /* Modify attributes to respect the clones */
+ nScrollHeadTable.removeAttribute('id');
+ nScrollHeadTable.style.marginLeft = "0";
+ oSettings.nTable.style.marginLeft = "0";
+ if ( nTfoot !== null )
+ {
+ nScrollFootTable.removeAttribute('id');
+ nScrollFootTable.style.marginLeft = "0";
+ }
+
+ /* Move caption elements from the body to the header, footer or leave where it is
+ * depending on the configuration. Note that the DTD says there can be only one caption */
+ var nCaption = $(oSettings.nTable).children('caption');
+ if ( nCaption.length > 0 )
+ {
+ nCaption = nCaption[0];
+ if ( nCaption._captionSide === "top" )
+ {
+ nScrollHeadTable.appendChild( nCaption );
+ }
+ else if ( nCaption._captionSide === "bottom" && nTfoot )
+ {
+ nScrollFootTable.appendChild( nCaption );
+ }
+ }
+
+ /*
+ * Sizing
+ */
+ /* When x-scrolling add the width and a scroller to move the header with the body */
+ if ( oSettings.oScroll.sX !== "" )
+ {
+ nScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );
+ nScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );
+
+ if ( nTfoot !== null )
+ {
+ nScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );
+ }
+
+ /* When the body is scrolled, then we also want to scroll the headers */
+ $(nScrollBody).scroll( function (e) {
+ nScrollHead.scrollLeft = this.scrollLeft;
+
+ if ( nTfoot !== null )
+ {
+ nScrollFoot.scrollLeft = this.scrollLeft;
+ }
+ } );
+ }
+
+ /* When yscrolling, add the height */
+ if ( oSettings.oScroll.sY !== "" )
+ {
+ nScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );
+ }
+
+ /* Redraw - align columns across the tables */
+ oSettings.aoDrawCallback.push( {
+ "fn": _fnScrollDraw,
+ "sName": "scrolling"
+ } );
+
+ /* Infinite scrolling event handlers */
+ if ( oSettings.oScroll.bInfinite )
+ {
+ $(nScrollBody).scroll( function() {
+ /* Use a blocker to stop scrolling from loading more data while other data is still loading */
+ if ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )
+ {
+ /* Check if we should load the next data set */
+ if ( $(this).scrollTop() + $(this).height() >
+ $(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )
+ {
+ /* Only do the redraw if we have to - we might be at the end of the data */
+ if ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )
+ {
+ _fnPageChange( oSettings, 'next' );
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+ }
+ }
+ } );
+ }
+
+ oSettings.nScrollHead = nScrollHead;
+ oSettings.nScrollFoot = nScrollFoot;
+
+ return nScroller;
+ }
+
+
+ /**
+ * Update the various tables for resizing. It's a bit of a pig this function, but
+ * basically the idea to:
+ * 1. Re-create the table inside the scrolling div
+ * 2. Take live measurements from the DOM
+ * 3. Apply the measurements
+ * 4. Clean up
+ * @param {object} o dataTables settings object
+ * @returns {node} Node to add to the DOM
+ * @memberof DataTable#oApi
+ */
+ function _fnScrollDraw ( o )
+ {
+ var
+ nScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],
+ nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],
+ nScrollBody = o.nTable.parentNode,
+ i, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,
+ nTheadSize, nTfootSize,
+ iWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,
+ nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,
+ nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,
+ ie67 = o.oBrowser.bScrollOversize,
+ zeroOut = function(nSizer) {
+ oStyle = nSizer.style;
+ oStyle.paddingTop = "0";
+ oStyle.paddingBottom = "0";
+ oStyle.borderTopWidth = "0";
+ oStyle.borderBottomWidth = "0";
+ oStyle.height = 0;
+ };
+
+ /*
+ * 1. Re-create the table inside the scrolling div
+ */
+
+ /* Remove the old minimised thead and tfoot elements in the inner table */
+ $(o.nTable).children('thead, tfoot').remove();
+
+ /* Clone the current header and footer elements and then place it into the inner table */
+ nTheadSize = $(o.nTHead).clone()[0];
+ o.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );
+ anHeadToSize = o.nTHead.getElementsByTagName('tr');
+ anHeadSizers = nTheadSize.getElementsByTagName('tr');
+
+ if ( o.nTFoot !== null )
+ {
+ nTfootSize = $(o.nTFoot).clone()[0];
+ o.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );
+ anFootToSize = o.nTFoot.getElementsByTagName('tr');
+ anFootSizers = nTfootSize.getElementsByTagName('tr');
+ }
+
+ /*
+ * 2. Take live measurements from the DOM - do not alter the DOM itself!
+ */
+
+ /* Remove old sizing and apply the calculated column widths
+ * Get the unique column headers in the newly created (cloned) header. We want to apply the
+ * calculated sizes to this header
+ */
+ if ( o.oScroll.sX === "" )
+ {
+ nScrollBody.style.width = '100%';
+ nScrollHeadInner.parentNode.style.width = '100%';
+ }
+
+ var nThs = _fnGetUniqueThs( o, nTheadSize );
+ for ( i=0, iLen=nThs.length ; i<iLen ; i++ )
+ {
+ iVis = _fnVisibleToColumnIndex( o, i );
+ nThs[i].style.width = o.aoColumns[iVis].sWidth;
+ }
+
+ if ( o.nTFoot !== null )
+ {
+ _fnApplyToChildren( function(n) {
+ n.style.width = "";
+ }, anFootSizers );
+ }
+
+ // If scroll collapse is enabled, when we put the headers back into the body for sizing, we
+ // will end up forcing the scrollbar to appear, making our measurements wrong for when we
+ // then hide it (end of this function), so add the header height to the body scroller.
+ if ( o.oScroll.bCollapse && o.oScroll.sY !== "" )
+ {
+ nScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+"px";
+ }
+
+ /* Size the table as a whole */
+ iSanityWidth = $(o.nTable).outerWidth();
+ if ( o.oScroll.sX === "" )
+ {
+ /* No x scrolling */
+ o.nTable.style.width = "100%";
+
+ /* I know this is rubbish - but IE7 will make the width of the table when 100% include
+ * the scrollbar - which is shouldn't. When there is a scrollbar we need to take this
+ * into account.
+ */
+ if ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight ||
+ $(nScrollBody).css('overflow-y') == "scroll") )
+ {
+ o.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);
+ }
+ }
+ else
+ {
+ if ( o.oScroll.sXInner !== "" )
+ {
+ /* x scroll inner has been given - use it */
+ o.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);
+ }
+ else if ( iSanityWidth == $(nScrollBody).width() &&
+ $(nScrollBody).height() < $(o.nTable).height() )
+ {
+ /* There is y-scrolling - try to take account of the y scroll bar */
+ o.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );
+ if ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )
+ {
+ /* Not possible to take account of it */
+ o.nTable.style.width = _fnStringToCss( iSanityWidth );
+ }
+ }
+ else
+ {
+ /* All else fails */
+ o.nTable.style.width = _fnStringToCss( iSanityWidth );
+ }
+ }
+
+ /* Recalculate the sanity width - now that we've applied the required width, before it was
+ * a temporary variable. This is required because the column width calculation is done
+ * before this table DOM is created.
+ */
+ iSanityWidth = $(o.nTable).outerWidth();
+
+ /* We want the hidden header to have zero height, so remove padding and borders. Then
+ * set the width based on the real headers
+ */
+
+ // Apply all styles in one pass. Invalidates layout only once because we don't read any
+ // DOM properties.
+ _fnApplyToChildren( zeroOut, anHeadSizers );
+
+ // Read all widths in next pass. Forces layout only once because we do not change
+ // any DOM properties.
+ _fnApplyToChildren( function(nSizer) {
+ aApplied.push( _fnStringToCss( $(nSizer).width() ) );
+ }, anHeadSizers );
+
+ // Apply all widths in final pass. Invalidates layout only once because we do not
+ // read any DOM properties.
+ _fnApplyToChildren( function(nToSize, i) {
+ nToSize.style.width = aApplied[i];
+ }, anHeadToSize );
+
+ $(anHeadSizers).height(0);
+
+ /* Same again with the footer if we have one */
+ if ( o.nTFoot !== null )
+ {
+ _fnApplyToChildren( zeroOut, anFootSizers );
+
+ _fnApplyToChildren( function(nSizer) {
+ aAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );
+ }, anFootSizers );
+
+ _fnApplyToChildren( function(nToSize, i) {
+ nToSize.style.width = aAppliedFooter[i];
+ }, anFootToSize );
+
+ $(anFootSizers).height(0);
+ }
+
+ /*
+ * 3. Apply the measurements
+ */
+
+ /* "Hide" the header and footer that we used for the sizing. We want to also fix their width
+ * to what they currently are
+ */
+ _fnApplyToChildren( function(nSizer, i) {
+ nSizer.innerHTML = "";
+ nSizer.style.width = aApplied[i];
+ //fix column align
+ nSizer.style.minWidth =nSizer.style.width;
+ }, anHeadSizers );
+
+ if ( o.nTFoot !== null )
+ {
+ _fnApplyToChildren( function(nSizer, i) {
+ nSizer.innerHTML = "";
+ nSizer.style.width = aAppliedFooter[i];
+ }, anFootSizers );
+ }
+
+ /* Sanity check that the table is of a sensible width. If not then we are going to get
+ * misalignment - try to prevent this by not allowing the table to shrink below its min width
+ */
+ if ( $(o.nTable).outerWidth() < iSanityWidth )
+ {
+ /* The min width depends upon if we have a vertical scrollbar visible or not */
+ var iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight ||
+ $(nScrollBody).css('overflow-y') == "scroll")) ?
+ iSanityWidth+o.oScroll.iBarWidth : iSanityWidth;
+
+ /* IE6/7 are a law unto themselves... */
+ if ( ie67 && (nScrollBody.scrollHeight >
+ nScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == "scroll") )
+ {
+ o.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );
+ }
+
+ /* Apply the calculated minimum width to the table wrappers */
+ nScrollBody.style.width = _fnStringToCss( iCorrection );
+ o.nScrollHead.style.width = _fnStringToCss( iCorrection );
+
+ if ( o.nTFoot !== null )
+ {
+ o.nScrollFoot.style.width = _fnStringToCss( iCorrection );
+ }
+
+ /* And give the user a warning that we've stopped the table getting too small */
+ if ( o.oScroll.sX === "" )
+ {
+ _fnLog( o, 1, "The table cannot fit into the current element which will cause column"+
+ " misalignment. The table has been drawn at its minimum possible width." );
+ }
+ else if ( o.oScroll.sXInner !== "" )
+ {
+ _fnLog( o, 1, "The table cannot fit into the current element which will cause column"+
+ " misalignment. Increase the sScrollXInner value or remove it to allow automatic"+
+ " calculation" );
+ }
+ }
+ else
+ {
+ nScrollBody.style.width = _fnStringToCss( '100%' );
+ o.nScrollHead.style.width = _fnStringToCss( '100%' );
+
+ if ( o.nTFoot !== null )
+ {
+ o.nScrollFoot.style.width = _fnStringToCss( '100%' );
+ }
+ }
+
+
+ /*
+ * 4. Clean up
+ */
+ if ( o.oScroll.sY === "" )
+ {
+ /* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
+ * the scrollbar height from the visible display, rather than adding it on. We need to
+ * set the height in order to sort this. Don't want to do it in any other browsers.
+ */
+ if ( ie67 )
+ {
+ nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );
+ }
+ }
+
+ if ( o.oScroll.sY !== "" && o.oScroll.bCollapse )
+ {
+ nScrollBody.style.height = _fnStringToCss( o.oScroll.sY );
+
+ var iExtra = (o.oScroll.sX !== "" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?
+ o.oScroll.iBarWidth : 0;
+ if ( o.nTable.offsetHeight < nScrollBody.offsetHeight )
+ {
+ nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );
+ }
+ }
+
+ /* Finally set the width's of the header and footer tables */
+ var iOuterWidth = $(o.nTable).outerWidth();
+ nScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );
+ nScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );
+
+ // Figure out if there are scrollbar present - if so then we need a the header and footer to
+ // provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
+ var bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == "scroll";
+ nScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px";
+
+ if ( o.nTFoot !== null )
+ {
+ nScrollFootTable.style.width = _fnStringToCss( iOuterWidth );
+ nScrollFootInner.style.width = _fnStringToCss( iOuterWidth );
+ nScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px";
+ }
+
+ /* Adjust the position of the header in case we loose the y-scrollbar */
+ $(nScrollBody).scroll();
+
+ /* If sorting or filtering has occurred, jump the scrolling back to the top */
+ if ( o.bSorted || o.bFiltered )
+ {
+ nScrollBody.scrollTop = 0;
+ }
+ }
+
+
+ /**
+ * Apply a given function to the display child nodes of an element array (typically
+ * TD children of TR rows
+ * @param {function} fn Method to apply to the objects
+ * @param array {nodes} an1 List of elements to look through for display children
+ * @param array {nodes} an2 Another list (identical structure to the first) - optional
+ * @memberof DataTable#oApi
+ */
+ function _fnApplyToChildren( fn, an1, an2 )
+ {
+ var index=0, i=0, iLen=an1.length;
+ var nNode1, nNode2;
+
+ while ( i < iLen )
+ {
+ nNode1 = an1[i].firstChild;
+ nNode2 = an2 ? an2[i].firstChild : null;
+ while ( nNode1 )
+ {
+ if ( nNode1.nodeType === 1 )
+ {
+ if ( an2 )
+ {
+ fn( nNode1, nNode2, index );
+ }
+ else
+ {
+ fn( nNode1, index );
+ }
+ index++;
+ }
+ nNode1 = nNode1.nextSibling;
+ nNode2 = an2 ? nNode2.nextSibling : null;
+ }
+ i++;
+ }
+ }
+
+ /**
+ * Convert a CSS unit width to pixels (e.g. 2em)
+ * @param {string} sWidth width to be converted
+ * @param {node} nParent parent to get the with for (required for relative widths) - optional
+ * @returns {int} iWidth width in pixels
+ * @memberof DataTable#oApi
+ */
+ function _fnConvertToWidth ( sWidth, nParent )
+ {
+ if ( !sWidth || sWidth === null || sWidth === '' )
+ {
+ return 0;
+ }
+
+ if ( !nParent )
+ {
+ nParent = document.body;
+ }
+
+ var iWidth;
+ var nTmp = document.createElement( "div" );
+ nTmp.style.width = _fnStringToCss( sWidth );
+
+ nParent.appendChild( nTmp );
+ iWidth = nTmp.offsetWidth;
+ nParent.removeChild( nTmp );
+
+ return ( iWidth );
+ }
+
+
+ /**
+ * Calculate the width of columns for the table
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnCalculateColumnWidths ( oSettings )
+ {
+ var iTableWidth = oSettings.nTable.offsetWidth;
+ var iUserInputs = 0;
+ var iTmpWidth;
+ var iVisibleColumns = 0;
+ var iColums = oSettings.aoColumns.length;
+ var i, iIndex, iCorrector, iWidth;
+ var oHeaders = $('th', oSettings.nTHead);
+ var widthAttr = oSettings.nTable.getAttribute('width');
+ var nWrapper = oSettings.nTable.parentNode;
+
+ /* Convert any user input sizes into pixel sizes */
+ for ( i=0 ; i<iColums ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bVisible )
+ {
+ iVisibleColumns++;
+
+ if ( oSettings.aoColumns[i].sWidth !== null )
+ {
+ iTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig,
+ nWrapper );
+ if ( iTmpWidth !== null )
+ {
+ oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
+ }
+
+ iUserInputs++;
+ }
+ }
+ }
+
+ /* If the number of columns in the DOM equals the number that we have to process in
+ * DataTables, then we can use the offsets that are created by the web-browser. No custom
+ * sizes can be set in order for this to happen, nor scrolling used
+ */
+ if ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&
+ oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "" )
+ {
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ iTmpWidth = $(oHeaders[i]).width();
+ if ( iTmpWidth !== null )
+ {
+ oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
+ }
+ }
+ }
+ else
+ {
+ /* Otherwise we are going to have to do some calculations to get the width of each column.
+ * Construct a 1 row table with the widest node in the data, and any user defined widths,
+ * then insert it into the DOM and allow the browser to do all the hard work of
+ * calculating table widths.
+ */
+ var
+ nCalcTmp = oSettings.nTable.cloneNode( false ),
+ nTheadClone = oSettings.nTHead.cloneNode(true),
+ nBody = document.createElement( 'tbody' ),
+ nTr = document.createElement( 'tr' ),
+ nDivSizing;
+
+ nCalcTmp.removeAttribute( "id" );
+ nCalcTmp.appendChild( nTheadClone );
+ if ( oSettings.nTFoot !== null )
+ {
+ nCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );
+ _fnApplyToChildren( function(n) {
+ n.style.width = "";
+ }, nCalcTmp.getElementsByTagName('tr') );
+ }
+
+ nCalcTmp.appendChild( nBody );
+ nBody.appendChild( nTr );
+
+ /* Remove any sizing that was previously applied by the styles */
+ var jqColSizing = $('thead th', nCalcTmp);
+ if ( jqColSizing.length === 0 )
+ {
+ jqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);
+ }
+
+ /* Apply custom sizing to the cloned header */
+ var nThs = _fnGetUniqueThs( oSettings, nTheadClone );
+ iCorrector = 0;
+ for ( i=0 ; i<iColums ; i++ )
+ {
+ var oColumn = oSettings.aoColumns[i];
+ if ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== "" )
+ {
+ nThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );
+ }
+ else if ( oColumn.bVisible )
+ {
+ nThs[i-iCorrector].style.width = "";
+ }
+ else
+ {
+ iCorrector++;
+ }
+ }
+
+ /* Find the biggest td for each column and put it into the table */
+ for ( i=0 ; i<iColums ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bVisible )
+ {
+ var nTd = _fnGetWidestNode( oSettings, i );
+ if ( nTd !== null )
+ {
+ nTd = nTd.cloneNode(true);
+ if ( oSettings.aoColumns[i].sContentPadding !== "" )
+ {
+ nTd.innerHTML += oSettings.aoColumns[i].sContentPadding;
+ }
+ nTr.appendChild( nTd );
+ }
+ }
+ }
+
+ /* Build the table and 'display' it */
+ nWrapper.appendChild( nCalcTmp );
+
+ /* When scrolling (X or Y) we want to set the width of the table as appropriate. However,
+ * when not scrolling leave the table width as it is. This results in slightly different,
+ * but I think correct behaviour
+ */
+ if ( oSettings.oScroll.sX !== "" && oSettings.oScroll.sXInner !== "" )
+ {
+ nCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);
+ }
+ else if ( oSettings.oScroll.sX !== "" )
+ {
+ nCalcTmp.style.width = "";
+ if ( $(nCalcTmp).width() < nWrapper.offsetWidth )
+ {
+ nCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );
+ }
+ }
+ else if ( oSettings.oScroll.sY !== "" )
+ {
+ nCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );
+ }
+ else if ( widthAttr )
+ {
+ nCalcTmp.style.width = _fnStringToCss( widthAttr );
+ }
+ nCalcTmp.style.visibility = "hidden";
+
+ /* Scrolling considerations */
+ _fnScrollingWidthAdjust( oSettings, nCalcTmp );
+
+ /* Read the width's calculated by the browser and store them for use by the caller. We
+ * first of all try to use the elements in the body, but it is possible that there are
+ * no elements there, under which circumstances we use the header elements
+ */
+ var oNodes = $("tbody tr:eq(0)", nCalcTmp).children();
+ if ( oNodes.length === 0 )
+ {
+ oNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );
+ }
+
+ /* Browsers need a bit of a hand when a width is assigned to any columns when
+ * x-scrolling as they tend to collapse the table to the min-width, even if
+ * we sent the column widths. So we need to keep track of what the table width
+ * should be by summing the user given values, and the automatic values
+ */
+ if ( oSettings.oScroll.sX !== "" )
+ {
+ var iTotal = 0;
+ iCorrector = 0;
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bVisible )
+ {
+ if ( oSettings.aoColumns[i].sWidthOrig === null )
+ {
+ iTotal += $(oNodes[iCorrector]).outerWidth();
+ }
+ else
+ {
+ iTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +
+ ($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());
+ }
+ iCorrector++;
+ }
+ }
+
+ nCalcTmp.style.width = _fnStringToCss( iTotal );
+ oSettings.nTable.style.width = _fnStringToCss( iTotal );
+ }
+
+ iCorrector = 0;
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bVisible )
+ {
+ iWidth = $(oNodes[iCorrector]).width();
+ if ( iWidth !== null && iWidth > 0 )
+ {
+ oSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );
+ }
+ iCorrector++;
+ }
+ }
+
+ var cssWidth = $(nCalcTmp).css('width');
+ oSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?
+ cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );
+ nCalcTmp.parentNode.removeChild( nCalcTmp );
+ }
+
+ if ( widthAttr )
+ {
+ oSettings.nTable.style.width = _fnStringToCss( widthAttr );
+ }
+ }
+
+
+ /**
+ * Adjust a table's width to take account of scrolling
+ * @param {object} oSettings dataTables settings object
+ * @param {node} n table node
+ * @memberof DataTable#oApi
+ */
+ function _fnScrollingWidthAdjust ( oSettings, n )
+ {
+ if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY !== "" )
+ {
+ /* When y-scrolling only, we want to remove the width of the scroll bar so the table
+ * + scroll bar will fit into the area avaialble.
+ */
+ var iOrigWidth = $(n).width();
+ n.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );
+ }
+ else if ( oSettings.oScroll.sX !== "" )
+ {
+ /* When x-scrolling both ways, fix the table at it's current size, without adjusting */
+ n.style.width = _fnStringToCss( $(n).outerWidth() );
+ }
+ }
+
+
+ /**
+ * Get the widest node
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iCol column of interest
+ * @returns {node} widest table node
+ * @memberof DataTable#oApi
+ */
+ function _fnGetWidestNode( oSettings, iCol )
+ {
+ var iMaxIndex = _fnGetMaxLenString( oSettings, iCol );
+ if ( iMaxIndex < 0 )
+ {
+ return null;
+ }
+
+ if ( oSettings.aoData[iMaxIndex].nTr === null )
+ {
+ var n = document.createElement('td');
+ n.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );
+ return n;
+ }
+ return _fnGetTdNodes(oSettings, iMaxIndex)[iCol];
+ }
+
+
+ /**
+ * Get the maximum strlen for each data column
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iCol column of interest
+ * @returns {string} max string length for each column
+ * @memberof DataTable#oApi
+ */
+ function _fnGetMaxLenString( oSettings, iCol )
+ {
+ var iMax = -1;
+ var iMaxIndex = -1;
+
+ for ( var i=0 ; i<oSettings.aoData.length ; i++ )
+ {
+ var s = _fnGetCellData( oSettings, i, iCol, 'display' )+"";
+ s = s.replace( /<.*?>/g, "" );
+ if ( s.length > iMax )
+ {
+ iMax = s.length;
+ iMaxIndex = i;
+ }
+ }
+
+ return iMaxIndex;
+ }
+
+
+ /**
+ * Append a CSS unit (only if required) to a string
+ * @param {array} aArray1 first array
+ * @param {array} aArray2 second array
+ * @returns {int} 0 if match, 1 if length is different, 2 if no match
+ * @memberof DataTable#oApi
+ */
+ function _fnStringToCss( s )
+ {
+ if ( s === null )
+ {
+ return "0px";
+ }
+
+ if ( typeof s == 'number' )
+ {
+ if ( s < 0 )
+ {
+ return "0px";
+ }
+ return s+"px";
+ }
+
+ /* Check if the last character is not 0-9 */
+ var c = s.charCodeAt( s.length-1 );
+ if (c < 0x30 || c > 0x39)
+ {
+ return s;
+ }
+ return s+"px";
+ }
+
+
+ /**
+ * Get the width of a scroll bar in this browser being used
+ * @returns {int} width in pixels
+ * @memberof DataTable#oApi
+ */
+ function _fnScrollBarWidth ()
+ {
+ var inner = document.createElement('p');
+ var style = inner.style;
+ style.width = "100%";
+ style.height = "200px";
+ style.padding = "0px";
+
+ var outer = document.createElement('div');
+ style = outer.style;
+ style.position = "absolute";
+ style.top = "0px";
+ style.left = "0px";
+ style.visibility = "hidden";
+ style.width = "200px";
+ style.height = "150px";
+ style.padding = "0px";
+ style.overflow = "hidden";
+ outer.appendChild(inner);
+
+ document.body.appendChild(outer);
+ var w1 = inner.offsetWidth;
+ outer.style.overflow = 'scroll';
+ var w2 = inner.offsetWidth;
+ if ( w1 == w2 )
+ {
+ w2 = outer.clientWidth;
+ }
+
+ document.body.removeChild(outer);
+ return (w1 - w2);
+ }
+
+ /**
+ * Change the order of the table
+ * @param {object} oSettings dataTables settings object
+ * @param {bool} bApplyClasses optional - should we apply classes or not
+ * @memberof DataTable#oApi
+ */
+ function _fnSort ( oSettings, bApplyClasses )
+ {
+ var
+ i, iLen, j, jLen, k, kLen,
+ sDataType, nTh,
+ aaSort = [],
+ aiOrig = [],
+ oSort = DataTable.ext.oSort,
+ aoData = oSettings.aoData,
+ aoColumns = oSettings.aoColumns,
+ oAria = oSettings.oLanguage.oAria;
+
+ /* No sorting required if server-side or no sorting array */
+ if ( !oSettings.oFeatures.bServerSide &&
+ (oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )
+ {
+ aaSort = ( oSettings.aaSortingFixed !== null ) ?
+ oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
+ oSettings.aaSorting.slice();
+
+ /* If there is a sorting data type, and a function belonging to it, then we need to
+ * get the data from the developer's function and apply it for this column
+ */
+ for ( i=0 ; i<aaSort.length ; i++ )
+ {
+ var iColumn = aaSort[i][0];
+ var iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );
+ sDataType = oSettings.aoColumns[ iColumn ].sSortDataType;
+ if ( DataTable.ext.afnSortData[sDataType] )
+ {
+ var aData = DataTable.ext.afnSortData[sDataType].call(
+ oSettings.oInstance, oSettings, iColumn, iVisColumn
+ );
+ if ( aData.length === aoData.length )
+ {
+ for ( j=0, jLen=aoData.length ; j<jLen ; j++ )
+ {
+ _fnSetCellData( oSettings, j, iColumn, aData[j] );
+ }
+ }
+ else
+ {
+ _fnLog( oSettings, 0, "Returned data sort array (col "+iColumn+") is the wrong length" );
+ }
+ }
+ }
+
+ /* Create a value - key array of the current row positions such that we can use their
+ * current position during the sort, if values match, in order to perform stable sorting
+ */
+ for ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )
+ {
+ aiOrig[ oSettings.aiDisplayMaster[i] ] = i;
+ }
+
+ /* Build an internal data array which is specific to the sort, so we can get and prep
+ * the data to be sorted only once, rather than needing to do it every time the sorting
+ * function runs. This make the sorting function a very simple comparison
+ */
+ var iSortLen = aaSort.length;
+ var fnSortFormat, aDataSort;
+ for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+ {
+ for ( j=0 ; j<iSortLen ; j++ )
+ {
+ aDataSort = aoColumns[ aaSort[j][0] ].aDataSort;
+
+ for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
+ {
+ sDataType = aoColumns[ aDataSort[k] ].sType;
+ fnSortFormat = oSort[ (sDataType ? sDataType : 'string')+"-pre" ];
+
+ aoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?
+ fnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :
+ _fnGetCellData( oSettings, i, aDataSort[k], 'sort' );
+ }
+ }
+ }
+
+ /* Do the sort - here we want multi-column sorting based on a given data source (column)
+ * and sorting function (from oSort) in a certain direction. It's reasonably complex to
+ * follow on it's own, but this is what we want (example two column sorting):
+ * fnLocalSorting = function(a,b){
+ * var iTest;
+ * iTest = oSort['string-asc']('data11', 'data12');
+ * if (iTest !== 0)
+ * return iTest;
+ * iTest = oSort['numeric-desc']('data21', 'data22');
+ * if (iTest !== 0)
+ * return iTest;
+ * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+ * }
+ * Basically we have a test for each sorting column, if the data in that column is equal,
+ * test the next column. If all columns match, then we use a numeric sort on the row
+ * positions in the original data array to provide a stable sort.
+ */
+ oSettings.aiDisplayMaster.sort( function ( a, b ) {
+ var k, l, lLen, iTest, aDataSort, sDataType;
+ for ( k=0 ; k<iSortLen ; k++ )
+ {
+ aDataSort = aoColumns[ aaSort[k][0] ].aDataSort;
+
+ for ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )
+ {
+ sDataType = aoColumns[ aDataSort[l] ].sType;
+
+ iTest = oSort[ (sDataType ? sDataType : 'string')+"-"+aaSort[k][1] ](
+ aoData[a]._aSortData[ aDataSort[l] ],
+ aoData[b]._aSortData[ aDataSort[l] ]
+ );
+
+ if ( iTest !== 0 )
+ {
+ return iTest;
+ }
+ }
+ }
+
+ return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
+ } );
+ }
+
+ /* Alter the sorting classes to take account of the changes */
+ if ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )
+ {
+ _fnSortingClasses( oSettings );
+ }
+
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ var sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, "" );
+ nTh = aoColumns[i].nTh;
+ nTh.removeAttribute('aria-sort');
+ nTh.removeAttribute('aria-label');
+
+ /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
+ if ( aoColumns[i].bSortable )
+ {
+ if ( aaSort.length > 0 && aaSort[0][0] == i )
+ {
+ nTh.setAttribute('aria-sort', aaSort[0][1]=="asc" ? "ascending" : "descending" );
+
+ var nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ?
+ aoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];
+ nTh.setAttribute('aria-label', sTitle+
+ (nextSort=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
+ }
+ else
+ {
+ nTh.setAttribute('aria-label', sTitle+
+ (aoColumns[i].asSorting[0]=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
+ }
+ }
+ else
+ {
+ nTh.setAttribute('aria-label', sTitle);
+ }
+ }
+
+ /* Tell the draw function that we have sorted the data */
+ oSettings.bSorted = true;
+ $(oSettings.oInstance).trigger('sort', oSettings);
+
+ /* Copy the master data into the draw array and re-draw */
+ if ( oSettings.oFeatures.bFilter )
+ {
+ /* _fnFilter() will redraw the table for us */
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
+ }
+ else
+ {
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+ oSettings._iDisplayStart = 0; /* reset display back to page 0 */
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+ }
+
+
+ /**
+ * Attach a sort handler (click) to a node
+ * @param {object} oSettings dataTables settings object
+ * @param {node} nNode node to attach the handler to
+ * @param {int} iDataIndex column sorting index
+ * @param {function} [fnCallback] callback function
+ * @memberof DataTable#oApi
+ */
+ function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )
+ {
+ _fnBindAction( nNode, {}, function (e) {
+ /* If the column is not sortable - don't to anything */
+ if ( oSettings.aoColumns[iDataIndex].bSortable === false )
+ {
+ return;
+ }
+
+ /*
+ * This is a little bit odd I admit... I declare a temporary function inside the scope of
+ * _fnBuildHead and the click handler in order that the code presented here can be used
+ * twice - once for when bProcessing is enabled, and another time for when it is
+ * disabled, as we need to perform slightly different actions.
+ * Basically the issue here is that the Javascript engine in modern browsers don't
+ * appear to allow the rendering engine to update the display while it is still executing
+ * it's thread (well - it does but only after long intervals). This means that the
+ * 'processing' display doesn't appear for a table sort. To break the js thread up a bit
+ * I force an execution break by using setTimeout - but this breaks the expected
+ * thread continuation for the end-developer's point of view (their code would execute
+ * too early), so we only do it when we absolutely have to.
+ */
+ var fnInnerSorting = function () {
+ var iColumn, iNextSort;
+
+ /* If the shift key is pressed then we are multiple column sorting */
+ if ( e.shiftKey )
+ {
+ /* Are we already doing some kind of sort on this column? */
+ var bFound = false;
+ for ( var i=0 ; i<oSettings.aaSorting.length ; i++ )
+ {
+ if ( oSettings.aaSorting[i][0] == iDataIndex )
+ {
+ bFound = true;
+ iColumn = oSettings.aaSorting[i][0];
+ iNextSort = oSettings.aaSorting[i][2]+1;
+
+ if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
+ {
+ /* Reached the end of the sorting options, remove from multi-col sort */
+ oSettings.aaSorting.splice( i, 1 );
+ }
+ else
+ {
+ /* Move onto next sorting direction */
+ oSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
+ oSettings.aaSorting[i][2] = iNextSort;
+ }
+ break;
+ }
+ }
+
+ /* No sort yet - add it in */
+ if ( bFound === false )
+ {
+ oSettings.aaSorting.push( [ iDataIndex,
+ oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
+ }
+ }
+ else
+ {
+ /* If no shift key then single column sort */
+ if ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )
+ {
+ iColumn = oSettings.aaSorting[0][0];
+ iNextSort = oSettings.aaSorting[0][2]+1;
+ if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
+ {
+ iNextSort = 0;
+ }
+ oSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
+ oSettings.aaSorting[0][2] = iNextSort;
+ }
+ else
+ {
+ oSettings.aaSorting.splice( 0, oSettings.aaSorting.length );
+ oSettings.aaSorting.push( [ iDataIndex,
+ oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
+ }
+ }
+
+ /* Run the sort */
+ _fnSort( oSettings );
+ }; /* /fnInnerSorting */
+
+ if ( !oSettings.oFeatures.bProcessing )
+ {
+ fnInnerSorting();
+ }
+ else
+ {
+ _fnProcessingDisplay( oSettings, true );
+ setTimeout( function() {
+ fnInnerSorting();
+ if ( !oSettings.oFeatures.bServerSide )
+ {
+ _fnProcessingDisplay( oSettings, false );
+ }
+ }, 0 );
+ }
+
+ /* Call the user specified callback function - used for async user interaction */
+ if ( typeof fnCallback == 'function' )
+ {
+ fnCallback( oSettings );
+ }
+ } );
+ }
+
+
+ /**
+ * Set the sorting classes on the header, Note: it is safe to call this function
+ * when bSort and bSortClasses are false
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnSortingClasses( oSettings )
+ {
+ var i, iLen, j, jLen, iFound;
+ var aaSort, sClass;
+ var iColumns = oSettings.aoColumns.length;
+ var oClasses = oSettings.oClasses;
+
+ for ( i=0 ; i<iColumns ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bSortable )
+ {
+ $(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +" "+ oClasses.sSortDesc +
+ " "+ oSettings.aoColumns[i].sSortingClass );
+ }
+ }
+
+ if ( oSettings.aaSortingFixed !== null )
+ {
+ aaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );
+ }
+ else
+ {
+ aaSort = oSettings.aaSorting.slice();
+ }
+
+ /* Apply the required classes to the header */
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bSortable )
+ {
+ sClass = oSettings.aoColumns[i].sSortingClass;
+ iFound = -1;
+ for ( j=0 ; j<aaSort.length ; j++ )
+ {
+ if ( aaSort[j][0] == i )
+ {
+ sClass = ( aaSort[j][1] == "asc" ) ?
+ oClasses.sSortAsc : oClasses.sSortDesc;
+ iFound = j;
+ break;
+ }
+ }
+ $(oSettings.aoColumns[i].nTh).addClass( sClass );
+
+ if ( oSettings.bJUI )
+ {
+ /* jQuery UI uses extra markup */
+ var jqSpan = $("span."+oClasses.sSortIcon, oSettings.aoColumns[i].nTh);
+ jqSpan.removeClass(oClasses.sSortJUIAsc +" "+ oClasses.sSortJUIDesc +" "+
+ oClasses.sSortJUI +" "+ oClasses.sSortJUIAscAllowed +" "+ oClasses.sSortJUIDescAllowed );
+
+ var sSpanClass;
+ if ( iFound == -1 )
+ {
+ sSpanClass = oSettings.aoColumns[i].sSortingClassJUI;
+ }
+ else if ( aaSort[iFound][1] == "asc" )
+ {
+ sSpanClass = oClasses.sSortJUIAsc;
+ }
+ else
+ {
+ sSpanClass = oClasses.sSortJUIDesc;
+ }
+
+ jqSpan.addClass( sSpanClass );
+ }
+ }
+ else
+ {
+ /* No sorting on this column, so add the base class. This will have been assigned by
+ * _fnAddColumn
+ */
+ $(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );
+ }
+ }
+
+ /*
+ * Apply the required classes to the table body
+ * Note that this is given as a feature switch since it can significantly slow down a sort
+ * on large data sets (adding and removing of classes is always slow at the best of times..)
+ * Further to this, note that this code is admittedly fairly ugly. It could be made a lot
+ * simpler using jQuery selectors and add/removeClass, but that is significantly slower
+ * (on the order of 5 times slower) - hence the direct DOM manipulation here.
+ * Note that for deferred drawing we do use jQuery - the reason being that taking the first
+ * row found to see if the whole column needs processed can miss classes since the first
+ * column might be new.
+ */
+ sClass = oClasses.sSortColumn;
+
+ if ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )
+ {
+ var nTds = _fnGetTdNodes( oSettings );
+
+ /* Determine what the sorting class for each column should be */
+ var iClass, iTargetCol;
+ var asClasses = [];
+ for (i = 0; i < iColumns; i++)
+ {
+ asClasses.push("");
+ }
+ for (i = 0, iClass = 1; i < aaSort.length; i++)
+ {
+ iTargetCol = parseInt( aaSort[i][0], 10 );
+ asClasses[iTargetCol] = sClass + iClass;
+
+ if ( iClass < 3 )
+ {
+ iClass++;
+ }
+ }
+
+ /* Make changes to the classes for each cell as needed */
+ var reClass = new RegExp(sClass + "[123]");
+ var sTmpClass, sCurrentClass, sNewClass;
+ for ( i=0, iLen=nTds.length; i<iLen; i++ )
+ {
+ /* Determine which column we're looking at */
+ iTargetCol = i % iColumns;
+
+ /* What is the full list of classes now */
+ sCurrentClass = nTds[i].className;
+ /* What sorting class should be applied? */
+ sNewClass = asClasses[iTargetCol];
+ /* What would the new full list be if we did a replacement? */
+ sTmpClass = sCurrentClass.replace(reClass, sNewClass);
+
+ if ( sTmpClass != sCurrentClass )
+ {
+ /* We changed something */
+ nTds[i].className = $.trim( sTmpClass );
+ }
+ else if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )
+ {
+ /* We need to add a class */
+ nTds[i].className = sCurrentClass + " " + sNewClass;
+ }
+ }
+ }
+ }
+
+
+
+ /**
+ * Save the state of a table in a cookie such that the page can be reloaded
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnSaveState ( oSettings )
+ {
+ if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )
+ {
+ return;
+ }
+
+ /* Store the interesting variables */
+ var i, iLen, bInfinite=oSettings.oScroll.bInfinite;
+ var oState = {
+ "iCreate": new Date().getTime(),
+ "iStart": (bInfinite ? 0 : oSettings._iDisplayStart),
+ "iEnd": (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),
+ "iLength": oSettings._iDisplayLength,
+ "aaSorting": $.extend( true, [], oSettings.aaSorting ),
+ "oSearch": $.extend( true, {}, oSettings.oPreviousSearch ),
+ "aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ),
+ "abVisCols": []
+ };
+
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ oState.abVisCols.push( oSettings.aoColumns[i].bVisible );
+ }
+
+ _fnCallbackFire( oSettings, "aoStateSaveParams", 'stateSaveParams', [oSettings, oState] );
+
+ oSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );
+ }
+
+
+ /**
+ * Attempt to load a saved table state from a cookie
+ * @param {object} oSettings dataTables settings object
+ * @param {object} oInit DataTables init object so we can override settings
+ * @memberof DataTable#oApi
+ */
+ function _fnLoadState ( oSettings, oInit )
+ {
+ if ( !oSettings.oFeatures.bStateSave )
+ {
+ return;
+ }
+
+ var oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );
+ if ( !oData )
+ {
+ return;
+ }
+
+ /* Allow custom and plug-in manipulation functions to alter the saved data set and
+ * cancelling of loading by returning false
+ */
+ var abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );
+ if ( $.inArray( false, abStateLoad ) !== -1 )
+ {
+ return;
+ }
+
+ /* Store the saved state so it might be accessed at any time */
+ oSettings.oLoadedState = $.extend( true, {}, oData );
+
+ /* Restore key features */
+ oSettings._iDisplayStart = oData.iStart;
+ oSettings.iInitDisplayStart = oData.iStart;
+ oSettings._iDisplayEnd = oData.iEnd;
+ oSettings._iDisplayLength = oData.iLength;
+ oSettings.aaSorting = oData.aaSorting.slice();
+ oSettings.saved_aaSorting = oData.aaSorting.slice();
+
+ /* Search filtering */
+ $.extend( oSettings.oPreviousSearch, oData.oSearch );
+ $.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );
+
+ /* Column visibility state
+ * Pass back visibility settings to the init handler, but to do not here override
+ * the init object that the user might have passed in
+ */
+ oInit.saved_aoColumns = [];
+ for ( var i=0 ; i<oData.abVisCols.length ; i++ )
+ {
+ oInit.saved_aoColumns[i] = {};
+ oInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];
+ }
+
+ _fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );
+ }
+
+
+ /**
+ * Create a new cookie with a value to store the state of a table
+ * @param {string} sName name of the cookie to create
+ * @param {string} sValue the value the cookie should take
+ * @param {int} iSecs duration of the cookie
+ * @param {string} sBaseName sName is made up of the base + file name - this is the base
+ * @param {function} fnCallback User definable function to modify the cookie
+ * @memberof DataTable#oApi
+ */
+ function _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )
+ {
+ var date = new Date();
+ date.setTime( date.getTime()+(iSecs*1000) );
+
+ /*
+ * Shocking but true - it would appear IE has major issues with having the path not having
+ * a trailing slash on it. We need the cookie to be available based on the path, so we
+ * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the
+ * patch to use at least some of the path
+ */
+ var aParts = window.location.pathname.split('/');
+ var sNameFile = sName + '_' + aParts.pop().replace(/[\/:]/g,"").toLowerCase();
+ var sFullCookie, oData;
+
+ if ( fnCallback !== null )
+ {
+ oData = (typeof $.parseJSON === 'function') ?
+ $.parseJSON( sValue ) : eval( '('+sValue+')' );
+ sFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),
+ aParts.join('/')+"/" );
+ }
+ else
+ {
+ sFullCookie = sNameFile + "=" + encodeURIComponent(sValue) +
+ "; expires=" + date.toGMTString() +"; path=" + aParts.join('/')+"/";
+ }
+
+ /* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies
+ * belonging to DataTables.
+ */
+ var
+ aCookies =document.cookie.split(';'),
+ iNewCookieLen = sFullCookie.split(';')[0].length,
+ aOldCookies = [];
+
+ if ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */
+ {
+ for ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )
+ {
+ if ( aCookies[i].indexOf( sBaseName ) != -1 )
+ {
+ /* It's a DataTables cookie, so eval it and check the time stamp */
+ var aSplitCookie = aCookies[i].split('=');
+ try {
+ oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );
+
+ if ( oData && oData.iCreate )
+ {
+ aOldCookies.push( {
+ "name": aSplitCookie[0],
+ "time": oData.iCreate
+ } );
+ }
+ }
+ catch( e ) {}
+ }
+ }
+
+ // Make sure we delete the oldest ones first
+ aOldCookies.sort( function (a, b) {
+ return b.time - a.time;
+ } );
+
+ // Eliminate as many old DataTables cookies as we need to
+ while ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {
+ if ( aOldCookies.length === 0 ) {
+ // Deleted all DT cookies and still not enough space. Can't state save
+ return;
+ }
+
+ var old = aOldCookies.pop();
+ document.cookie = old.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+
+ aParts.join('/') + "/";
+ }
+ }
+
+ document.cookie = sFullCookie;
+ }
+
+
+ /**
+ * Read an old cookie to get a cookie with an old table state
+ * @param {string} sName name of the cookie to read
+ * @returns {string} contents of the cookie - or null if no cookie with that name found
+ * @memberof DataTable#oApi
+ */
+ function _fnReadCookie ( sName )
+ {
+ var
+ aParts = window.location.pathname.split('/'),
+ sNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\/:]/g,"").toLowerCase() + '=',
+ sCookieContents = document.cookie.split(';');
+
+ for( var i=0 ; i<sCookieContents.length ; i++ )
+ {
+ var c = sCookieContents[i];
+
+ while (c.charAt(0)==' ')
+ {
+ c = c.substring(1,c.length);
+ }
+
+ if (c.indexOf(sNameEQ) === 0)
+ {
+ return decodeURIComponent( c.substring(sNameEQ.length,c.length) );
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Return the settings object for a particular table
+ * @param {node} nTable table we are using as a dataTable
+ * @returns {object} Settings object - or null if not found
+ * @memberof DataTable#oApi
+ */
+ function _fnSettingsFromNode ( nTable )
+ {
+ for ( var i=0 ; i<DataTable.settings.length ; i++ )
+ {
+ if ( DataTable.settings[i].nTable === nTable )
+ {
+ return DataTable.settings[i];
+ }
+ }
+
+ return null;
+ }
+
+
+ /**
+ * Return an array with the TR nodes for the table
+ * @param {object} oSettings dataTables settings object
+ * @returns {array} TR array
+ * @memberof DataTable#oApi
+ */
+ function _fnGetTrNodes ( oSettings )
+ {
+ var aNodes = [];
+ var aoData = oSettings.aoData;
+ for ( var i=0, iLen=aoData.length ; i<iLen ; i++ )
+ {
+ if ( aoData[i].nTr !== null )
+ {
+ aNodes.push( aoData[i].nTr );
+ }
+ }
+ return aNodes;
+ }
+
+
+ /**
+ * Return an flat array with all TD nodes for the table, or row
+ * @param {object} oSettings dataTables settings object
+ * @param {int} [iIndividualRow] aoData index to get the nodes for - optional
+ * if not given then the return array will contain all nodes for the table
+ * @returns {array} TD array
+ * @memberof DataTable#oApi
+ */
+ function _fnGetTdNodes ( oSettings, iIndividualRow )
+ {
+ var anReturn = [];
+ var iCorrector;
+ var anTds, nTd;
+ var iRow, iRows=oSettings.aoData.length,
+ iColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;
+
+ /* Allow the collection to be limited to just one row */
+ if ( iIndividualRow !== undefined )
+ {
+ iStart = iIndividualRow;
+ iEnd = iIndividualRow+1;
+ }
+
+ for ( iRow=iStart ; iRow<iEnd ; iRow++ )
+ {
+ oData = oSettings.aoData[iRow];
+ if ( oData.nTr !== null )
+ {
+ /* get the TD child nodes - taking into account text etc nodes */
+ anTds = [];
+ nTd = oData.nTr.firstChild;
+ while ( nTd )
+ {
+ sNodeName = nTd.nodeName.toLowerCase();
+ if ( sNodeName == 'td' || sNodeName == 'th' )
+ {
+ anTds.push( nTd );
+ }
+ nTd = nTd.nextSibling;
+ }
+
+ iCorrector = 0;
+ for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
+ {
+ if ( oSettings.aoColumns[iColumn].bVisible )
+ {
+ anReturn.push( anTds[iColumn-iCorrector] );
+ }
+ else
+ {
+ anReturn.push( oData._anHidden[iColumn] );
+ iCorrector++;
+ }
+ }
+ }
+ }
+
+ return anReturn;
+ }
+
+
+ /**
+ * Log an error message
+ * @param {object} oSettings dataTables settings object
+ * @param {int} iLevel log error messages, or display them to the user
+ * @param {string} sMesg error message
+ * @memberof DataTable#oApi
+ */
+ function _fnLog( oSettings, iLevel, sMesg )
+ {
+ var sAlert = (oSettings===null) ?
+ "DataTables warning: "+sMesg :
+ "DataTables warning (table id = '"+oSettings.sTableId+"'): "+sMesg;
+
+ if ( iLevel === 0 )
+ {
+ if ( DataTable.ext.sErrMode == 'alert' )
+ {
+ alert( sAlert );
+ }
+ else
+ {
+ throw new Error(sAlert);
+ }
+ return;
+ }
+ else if ( window.console && console.log )
+ {
+ console.log( sAlert );
+ }
+ }
+
+
+ /**
+ * See if a property is defined on one object, if so assign it to the other object
+ * @param {object} oRet target object
+ * @param {object} oSrc source object
+ * @param {string} sName property
+ * @param {string} [sMappedName] name to map too - optional, sName used if not given
+ * @memberof DataTable#oApi
+ */
+ function _fnMap( oRet, oSrc, sName, sMappedName )
+ {
+ if ( sMappedName === undefined )
+ {
+ sMappedName = sName;
+ }
+ if ( oSrc[sName] !== undefined )
+ {
+ oRet[sMappedName] = oSrc[sName];
+ }
+ }
+
+
+ /**
+ * Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow
+ * copy arrays. The reason we need to do this, is that we don't want to deep copy array
+ * init values (such as aaSorting) since the dev wouldn't be able to override them, but
+ * we do want to deep copy arrays.
+ * @param {object} oOut Object to extend
+ * @param {object} oExtender Object from which the properties will be applied to oOut
+ * @returns {object} oOut Reference, just for convenience - oOut === the return.
+ * @memberof DataTable#oApi
+ * @todo This doesn't take account of arrays inside the deep copied objects.
+ */
+ function _fnExtend( oOut, oExtender )
+ {
+ var val;
+
+ for ( var prop in oExtender )
+ {
+ if ( oExtender.hasOwnProperty(prop) )
+ {
+ val = oExtender[prop];
+
+ if ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )
+ {
+ $.extend( true, oOut[prop], val );
+ }
+ else
+ {
+ oOut[prop] = val;
+ }
+ }
+ }
+
+ return oOut;
+ }
+
+
+ /**
+ * Bind an event handers to allow a click or return key to activate the callback.
+ * This is good for accessibility since a return on the keyboard will have the
+ * same effect as a click, if the element has focus.
+ * @param {element} n Element to bind the action to
+ * @param {object} oData Data object to pass to the triggered function
+ * @param {function} fn Callback function for when the event is triggered
+ * @memberof DataTable#oApi
+ */
+ function _fnBindAction( n, oData, fn )
+ {
+ $(n)
+ .bind( 'click.DT', oData, function (e) {
+ n.blur(); // Remove focus outline for mouse users
+ fn(e);
+ } )
+ .bind( 'keypress.DT', oData, function (e){
+ if ( e.which === 13 ) {
+ fn(e);
+ } } )
+ .bind( 'selectstart.DT', function () {
+ /* Take the brutal approach to cancelling text selection */
+ return false;
+ } );
+ }
+
+
+ /**
+ * Register a callback function. Easily allows a callback function to be added to
+ * an array store of callback functions that can then all be called together.
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sStore Name of the array storage for the callbacks in oSettings
+ * @param {function} fn Function to be called back
+ * @param {string} sName Identifying name for the callback (i.e. a label)
+ * @memberof DataTable#oApi
+ */
+ function _fnCallbackReg( oSettings, sStore, fn, sName )
+ {
+ if ( fn )
+ {
+ oSettings[sStore].push( {
+ "fn": fn,
+ "sName": sName
+ } );
+ }
+ }
+
+
+ /**
+ * Fire callback functions and trigger events. Note that the loop over the callback
+ * array store is done backwards! Further note that you do not want to fire off triggers
+ * in time sensitive applications (for example cell creation) as its slow.
+ * @param {object} oSettings dataTables settings object
+ * @param {string} sStore Name of the array storage for the callbacks in oSettings
+ * @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger
+ * is fired
+ * @param {array} aArgs Array of arguments to pass to the callback function / trigger
+ * @memberof DataTable#oApi
+ */
+ function _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )
+ {
+ var aoStore = oSettings[sStore];
+ var aRet =[];
+
+ for ( var i=aoStore.length-1 ; i>=0 ; i-- )
+ {
+ aRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );
+ }
+
+ if ( sTrigger !== null )
+ {
+ $(oSettings.oInstance).trigger(sTrigger, aArgs);
+ }
+
+ return aRet;
+ }
+
+
+ /**
+ * JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other
+ * library, then we use that as it is fast, safe and accurate. If the function isn't
+ * available then we need to built it ourselves - the inspiration for this function comes
+ * from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is
+ * not perfect and absolutely should not be used as a replacement to json2.js - but it does
+ * do what we need, without requiring a dependency for DataTables.
+ * @param {object} o JSON object to be converted
+ * @returns {string} JSON string
+ * @memberof DataTable#oApi
+ */
+ var _fnJsonString = (window.JSON) ? JSON.stringify : function( o )
+ {
+ /* Not an object or array */
+ var sType = typeof o;
+ if (sType !== "object" || o === null)
+ {
+ // simple data type
+ if (sType === "string")
+ {
+ o = '"'+o+'"';
+ }
+ return o+"";
+ }
+
+ /* If object or array, need to recurse over it */
+ var
+ sProp, mValue,
+ json = [],
+ bArr = $.isArray(o);
+
+ for (sProp in o)
+ {
+ mValue = o[sProp];
+ sType = typeof mValue;
+
+ if (sType === "string")
+ {
+ mValue = '"'+mValue+'"';
+ }
+ else if (sType === "object" && mValue !== null)
+ {
+ mValue = _fnJsonString(mValue);
+ }
+
+ json.push((bArr ? "" : '"'+sProp+'":') + mValue);
+ }
+
+ return (bArr ? "[" : "{") + json + (bArr ? "]" : "}");
+ };
+
+
+ /**
+ * From some browsers (specifically IE6/7) we need special handling to work around browser
+ * bugs - this function is used to detect when these workarounds are needed.
+ * @param {object} oSettings dataTables settings object
+ * @memberof DataTable#oApi
+ */
+ function _fnBrowserDetect( oSettings )
+ {
+ /* IE6/7 will oversize a width 100% element inside a scrolling element, to include the
+ * width of the scrollbar, while other browsers ensure the inner element is contained
+ * without forcing scrolling
+ */
+ var n = $(
+ '<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden">'+
+ '<div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;">'+
+ '<div id="DT_BrowserTest" style="width:100%; height:10px;"></div>'+
+ '</div>'+
+ '</div>')[0];
+
+ document.body.appendChild( n );
+ oSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;
+ document.body.removeChild( n );
+ }
+
+
+ /**
+ * Perform a jQuery selector action on the table's TR elements (from the tbody) and
+ * return the resulting jQuery object.
+ * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+ * @param {object} [oOpts] Optional parameters for modifying the rows to be included
+ * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
+ * criterion ("applied") or all TR elements (i.e. no filter).
+ * @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
+ * Can be either 'current', whereby the current sorting of the table is used, or
+ * 'original' whereby the original order the data was read into the table is used.
+ * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+ * ("current") or not ("all"). If 'current' is given, then order is assumed to be
+ * 'current' and filter is 'applied', regardless of what they might be given as.
+ * @returns {object} jQuery object, filtered by the given selector.
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Highlight every second row
+ * oTable.$('tr:odd').css('backgroundColor', 'blue');
+ * } );
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Filter to rows with 'Webkit' in them, add a background colour and then
+ * // remove the filter, thus highlighting the 'Webkit' rows only.
+ * oTable.fnFilter('Webkit');
+ * oTable.$('tr', {"filter": "applied"}).css('backgroundColor', 'blue');
+ * oTable.fnFilter('');
+ * } );
+ */
+ this.$ = function ( sSelector, oOpts )
+ {
+ var i, iLen, a = [], tr;
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var aoData = oSettings.aoData;
+ var aiDisplay = oSettings.aiDisplay;
+ var aiDisplayMaster = oSettings.aiDisplayMaster;
+
+ if ( !oOpts )
+ {
+ oOpts = {};
+ }
+
+ oOpts = $.extend( {}, {
+ "filter": "none", // applied
+ "order": "current", // "original"
+ "page": "all" // current
+ }, oOpts );
+
+ // Current page implies that order=current and fitler=applied, since it is fairly
+ // senseless otherwise
+ if ( oOpts.page == 'current' )
+ {
+ for ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )
+ {
+ tr = aoData[ aiDisplay[i] ].nTr;
+ if ( tr )
+ {
+ a.push( tr );
+ }
+ }
+ }
+ else if ( oOpts.order == "current" && oOpts.filter == "none" )
+ {
+ for ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )
+ {
+ tr = aoData[ aiDisplayMaster[i] ].nTr;
+ if ( tr )
+ {
+ a.push( tr );
+ }
+ }
+ }
+ else if ( oOpts.order == "current" && oOpts.filter == "applied" )
+ {
+ for ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )
+ {
+ tr = aoData[ aiDisplay[i] ].nTr;
+ if ( tr )
+ {
+ a.push( tr );
+ }
+ }
+ }
+ else if ( oOpts.order == "original" && oOpts.filter == "none" )
+ {
+ for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+ {
+ tr = aoData[ i ].nTr ;
+ if ( tr )
+ {
+ a.push( tr );
+ }
+ }
+ }
+ else if ( oOpts.order == "original" && oOpts.filter == "applied" )
+ {
+ for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+ {
+ tr = aoData[ i ].nTr;
+ if ( $.inArray( i, aiDisplay ) !== -1 && tr )
+ {
+ a.push( tr );
+ }
+ }
+ }
+ else
+ {
+ _fnLog( oSettings, 1, "Unknown selection options" );
+ }
+
+ /* We need to filter on the TR elements and also 'find' in their descendants
+ * to make the selector act like it would in a full table - so we need
+ * to build both results and then combine them together
+ */
+ var jqA = $(a);
+ var jqTRs = jqA.filter( sSelector );
+ var jqDescendants = jqA.find( sSelector );
+
+ return $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );
+ };
+
+
+ /**
+ * Almost identical to $ in operation, but in this case returns the data for the matched
+ * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
+ * rather than any descendants, so the data can be obtained for the row/cell. If matching
+ * rows are found, the data returned is the original data array/object that was used to
+ * create the row (or a generated array if from a DOM source).
+ *
+ * This method is often useful in-combination with $ where both functions are given the
+ * same parameters and the array indexes will match identically.
+ * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
+ * @param {object} [oOpts] Optional parameters for modifying the rows to be included
+ * @param {string} [oOpts.filter=none] Select elements that meet the current filter
+ * criterion ("applied") or all elements (i.e. no filter).
+ * @param {string} [oOpts.order=current] Order of the data in the processed array.
+ * Can be either 'current', whereby the current sorting of the table is used, or
+ * 'original' whereby the original order the data was read into the table is used.
+ * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
+ * ("current") or not ("all"). If 'current' is given, then order is assumed to be
+ * 'current' and filter is 'applied', regardless of what they might be given as.
+ * @returns {array} Data for the matched elements. If any elements, as a result of the
+ * selector, were not TR, TD or TH elements in the DataTable, they will have a null
+ * entry in the array.
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Get the data from the first row in the table
+ * var data = oTable._('tr:first');
+ *
+ * // Do something useful with the data
+ * alert( "First cell is: "+data[0] );
+ * } );
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Filter to 'Webkit' and get all data for
+ * oTable.fnFilter('Webkit');
+ * var data = oTable._('tr', {"filter": "applied"});
+ *
+ * // Do something with the data
+ * alert( data.length+" rows matched the filter" );
+ * } );
+ */
+ this._ = function ( sSelector, oOpts )
+ {
+ var aOut = [];
+ var i, iLen, iIndex;
+ var aTrs = this.$( sSelector, oOpts );
+
+ for ( i=0, iLen=aTrs.length ; i<iLen ; i++ )
+ {
+ aOut.push( this.fnGetData(aTrs[i]) );
+ }
+
+ return aOut;
+ };
+
+
+ /**
+ * Add a single new row or multiple rows of data to the table. Please note
+ * that this is suitable for client-side processing only - if you are using
+ * server-side processing (i.e. "bServerSide": true), then to add data, you
+ * must add it to the data source, i.e. the server-side, through an Ajax call.
+ * @param {array|object} mData The data to be added to the table. This can be:
+ * <ul>
+ * <li>1D array of data - add a single row with the data provided</li>
+ * <li>2D array of arrays - add multiple rows in a single call</li>
+ * <li>object - data object when using <i>mData</i></li>
+ * <li>array of objects - multiple data objects when using <i>mData</i></li>
+ * </ul>
+ * @param {bool} [bRedraw=true] redraw the table or not
+ * @returns {array} An array of integers, representing the list of indexes in
+ * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
+ * the table.
+ * @dtopt API
+ *
+ * @example
+ * // Global var for counter
+ * var giCount = 2;
+ *
+ * $(document).ready(function() {
+ * $('#example').dataTable();
+ * } );
+ *
+ * function fnClickAddRow() {
+ * $('#example').dataTable().fnAddData( [
+ * giCount+".1",
+ * giCount+".2",
+ * giCount+".3",
+ * giCount+".4" ]
+ * );
+ *
+ * giCount++;
+ * }
+ */
+ this.fnAddData = function( mData, bRedraw )
+ {
+ if ( mData.length === 0 )
+ {
+ return [];
+ }
+
+ var aiReturn = [];
+ var iTest;
+
+ /* Find settings from table node */
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+
+ /* Check if we want to add multiple rows or not */
+ if ( typeof mData[0] === "object" && mData[0] !== null )
+ {
+ for ( var i=0 ; i<mData.length ; i++ )
+ {
+ iTest = _fnAddData( oSettings, mData[i] );
+ if ( iTest == -1 )
+ {
+ return aiReturn;
+ }
+ aiReturn.push( iTest );
+ }
+ }
+ else
+ {
+ iTest = _fnAddData( oSettings, mData );
+ if ( iTest == -1 )
+ {
+ return aiReturn;
+ }
+ aiReturn.push( iTest );
+ }
+
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+ if ( bRedraw === undefined || bRedraw )
+ {
+ _fnReDraw( oSettings );
+ }
+ return aiReturn;
+ };
+
+
+ /**
+ * This function will make DataTables recalculate the column sizes, based on the data
+ * contained in the table and the sizes applied to the columns (in the DOM, CSS or
+ * through the sWidth parameter). This can be useful when the width of the table's
+ * parent element changes (for example a window resize).
+ * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable( {
+ * "sScrollY": "200px",
+ * "bPaginate": false
+ * } );
+ *
+ * $(window).bind('resize', function () {
+ * oTable.fnAdjustColumnSizing();
+ * } );
+ * } );
+ */
+ this.fnAdjustColumnSizing = function ( bRedraw )
+ {
+ var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
+ _fnAdjustColumnSizing( oSettings );
+
+ if ( bRedraw === undefined || bRedraw )
+ {
+ this.fnDraw( false );
+ }
+ else if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
+ {
+ /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
+ this.oApi._fnScrollDraw(oSettings);
+ }
+ };
+
+
+ /**
+ * Quickly and simply clear a table
+ * @param {bool} [bRedraw=true] redraw the table or not
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
+ * oTable.fnClearTable();
+ * } );
+ */
+ this.fnClearTable = function( bRedraw )
+ {
+ /* Find settings from table node */
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ _fnClearTable( oSettings );
+
+ if ( bRedraw === undefined || bRedraw )
+ {
+ _fnDraw( oSettings );
+ }
+ };
+
+
+ /**
+ * The exact opposite of 'opening' a row, this function will close any rows which
+ * are currently 'open'.
+ * @param {node} nTr the table row to 'close'
+ * @returns {int} 0 on success, or 1 if failed (can't find the row)
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable;
+ *
+ * // 'open' an information row when a row is clicked on
+ * $('#example tbody tr').click( function () {
+ * if ( oTable.fnIsOpen(this) ) {
+ * oTable.fnClose( this );
+ * } else {
+ * oTable.fnOpen( this, "Temporary row opened", "info_row" );
+ * }
+ * } );
+ *
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnClose = function( nTr )
+ {
+ /* Find settings from table node */
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+
+ for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
+ {
+ if ( oSettings.aoOpenRows[i].nParent == nTr )
+ {
+ var nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;
+ if ( nTrParent )
+ {
+ /* Remove it if it is currently on display */
+ nTrParent.removeChild( oSettings.aoOpenRows[i].nTr );
+ }
+ oSettings.aoOpenRows.splice( i, 1 );
+ return 0;
+ }
+ }
+ return 1;
+ };
+
+
+ /**
+ * Remove a row for the table
+ * @param {mixed} mTarget The index of the row from aoData to be deleted, or
+ * the TR element you want to delete
+ * @param {function|null} [fnCallBack] Callback function
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @returns {array} The row that was deleted
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Immediately remove the first row
+ * oTable.fnDeleteRow( 0 );
+ * } );
+ */
+ this.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )
+ {
+ /* Find settings from table node */
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var i, iLen, iAODataIndex;
+
+ iAODataIndex = (typeof mTarget === 'object') ?
+ _fnNodeToDataIndex(oSettings, mTarget) : mTarget;
+
+ /* Return the data array from this row */
+ var oData = oSettings.aoData.splice( iAODataIndex, 1 );
+
+ /* Update the _DT_RowIndex parameter */
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+ {
+ if ( oSettings.aoData[i].nTr !== null )
+ {
+ oSettings.aoData[i].nTr._DT_RowIndex = i;
+ }
+ }
+
+ /* Remove the target row from the search array */
+ var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
+ oSettings.asDataSearch.splice( iDisplayIndex, 1 );
+
+ /* Delete from the display arrays */
+ _fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );
+ _fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );
+
+ /* If there is a user callback function - call it */
+ if ( typeof fnCallBack === "function" )
+ {
+ fnCallBack.call( this, oSettings, oData );
+ }
+
+ /* Check for an 'overflow' they case for displaying the table */
+ if ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )
+ {
+ oSettings._iDisplayStart -= oSettings._iDisplayLength;
+ if ( oSettings._iDisplayStart < 0 )
+ {
+ oSettings._iDisplayStart = 0;
+ }
+ }
+
+ if ( bRedraw === undefined || bRedraw )
+ {
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+
+ return oData;
+ };
+
+
+ /**
+ * Restore the table to it's original state in the DOM by removing all of DataTables
+ * enhancements, alterations to the DOM structure of the table and event listeners.
+ * @param {boolean} [bRemove=false] Completely remove the table from the DOM
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * // This example is fairly pointless in reality, but shows how fnDestroy can be used
+ * var oTable = $('#example').dataTable();
+ * oTable.fnDestroy();
+ * } );
+ */
+ this.fnDestroy = function ( bRemove )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var nOrig = oSettings.nTableWrapper.parentNode;
+ var nBody = oSettings.nTBody;
+ var i, iLen;
+
+ bRemove = (bRemove===undefined) ? false : bRemove;
+
+ /* Flag to note that the table is currently being destroyed - no action should be taken */
+ oSettings.bDestroying = true;
+
+ /* Fire off the destroy callbacks for plug-ins etc */
+ _fnCallbackFire( oSettings, "aoDestroyCallback", "destroy", [oSettings] );
+
+ /* If the table is not being removed, restore the hidden columns */
+ if ( !bRemove )
+ {
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
+ {
+ if ( oSettings.aoColumns[i].bVisible === false )
+ {
+ this.fnSetColumnVis( i, true );
+ }
+ }
+ }
+
+ /* Blitz all DT events */
+ $(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');
+
+ /* If there is an 'empty' indicator row, remove it */
+ $('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();
+
+ /* When scrolling we had to break the table up - restore it */
+ if ( oSettings.nTable != oSettings.nTHead.parentNode )
+ {
+ $(oSettings.nTable).children('thead').remove();
+ oSettings.nTable.appendChild( oSettings.nTHead );
+ }
+
+ if ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )
+ {
+ $(oSettings.nTable).children('tfoot').remove();
+ oSettings.nTable.appendChild( oSettings.nTFoot );
+ }
+
+ /* Remove the DataTables generated nodes, events and classes */
+ oSettings.nTable.parentNode.removeChild( oSettings.nTable );
+ $(oSettings.nTableWrapper).remove();
+
+ oSettings.aaSorting = [];
+ oSettings.aaSortingFixed = [];
+ _fnSortingClasses( oSettings );
+
+ $(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );
+
+ $('th, td', oSettings.nTHead).removeClass( [
+ oSettings.oClasses.sSortable,
+ oSettings.oClasses.sSortableAsc,
+ oSettings.oClasses.sSortableDesc,
+ oSettings.oClasses.sSortableNone ].join(' ')
+ );
+ if ( oSettings.bJUI )
+ {
+ $('th span.'+oSettings.oClasses.sSortIcon
+ + ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();
+
+ $('th, td', oSettings.nTHead).each( function () {
+ var jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);
+ var kids = jqWrapper.contents();
+ $(this).append( kids );
+ jqWrapper.remove();
+ } );
+ }
+
+ /* Add the TR elements back into the table in their original order */
+ if ( !bRemove && oSettings.nTableReinsertBefore )
+ {
+ nOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );
+ }
+ else if ( !bRemove )
+ {
+ nOrig.appendChild( oSettings.nTable );
+ }
+
+ for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
+ {
+ if ( oSettings.aoData[i].nTr !== null )
+ {
+ nBody.appendChild( oSettings.aoData[i].nTr );
+ }
+ }
+
+ /* Restore the width of the original table */
+ if ( oSettings.oFeatures.bAutoWidth === true )
+ {
+ oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);
+ }
+
+ /* If the were originally stripe classes - then we add them back here. Note
+ * this is not fool proof (for example if not all rows had stripe classes - but
+ * it's a good effort without getting carried away
+ */
+ iLen = oSettings.asDestroyStripes.length;
+ if (iLen)
+ {
+ var anRows = $(nBody).children('tr');
+ for ( i=0 ; i<iLen ; i++ )
+ {
+ anRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );
+ }
+ }
+
+ /* Remove the settings object from the settings array */
+ for ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )
+ {
+ if ( DataTable.settings[i] == oSettings )
+ {
+ DataTable.settings.splice( i, 1 );
+ }
+ }
+
+ /* End it all */
+ oSettings = null;
+ oInit = null;
+ };
+
+
+ /**
+ * Redraw the table
+ * @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
+ * oTable.fnDraw();
+ * } );
+ */
+ this.fnDraw = function( bComplete )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ if ( bComplete === false )
+ {
+ _fnCalculateEnd( oSettings );
+ _fnDraw( oSettings );
+ }
+ else
+ {
+ _fnReDraw( oSettings );
+ }
+ };
+
+
+ /**
+ * Filter the input based on data
+ * @param {string} sInput String to filter the table on
+ * @param {int|null} [iColumn] Column to limit filtering to
+ * @param {bool} [bRegex=false] Treat as regular expression or not
+ * @param {bool} [bSmart=true] Perform smart filtering or not
+ * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
+ * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Sometime later - filter...
+ * oTable.fnFilter( 'test string' );
+ * } );
+ */
+ this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+
+ if ( !oSettings.oFeatures.bFilter )
+ {
+ return;
+ }
+
+ if ( bRegex === undefined || bRegex === null )
+ {
+ bRegex = false;
+ }
+
+ if ( bSmart === undefined || bSmart === null )
+ {
+ bSmart = true;
+ }
+
+ if ( bShowGlobal === undefined || bShowGlobal === null )
+ {
+ bShowGlobal = true;
+ }
+
+ if ( bCaseInsensitive === undefined || bCaseInsensitive === null )
+ {
+ bCaseInsensitive = true;
+ }
+
+ if ( iColumn === undefined || iColumn === null )
+ {
+ /* Global filter */
+ _fnFilterComplete( oSettings, {
+ "sSearch":sInput+"",
+ "bRegex": bRegex,
+ "bSmart": bSmart,
+ "bCaseInsensitive": bCaseInsensitive
+ }, 1 );
+
+ if ( bShowGlobal && oSettings.aanFeatures.f )
+ {
+ var n = oSettings.aanFeatures.f;
+ for ( var i=0, iLen=n.length ; i<iLen ; i++ )
+ {
+ // IE9 throws an 'unknown error' if document.activeElement is used
+ // inside an iframe or frame...
+ try {
+ if ( n[i]._DT_Input != document.activeElement )
+ {
+ $(n[i]._DT_Input).val( sInput );
+ }
+ }
+ catch ( e ) {
+ $(n[i]._DT_Input).val( sInput );
+ }
+ }
+ }
+ }
+ else
+ {
+ /* Single column filter */
+ $.extend( oSettings.aoPreSearchCols[ iColumn ], {
+ "sSearch": sInput+"",
+ "bRegex": bRegex,
+ "bSmart": bSmart,
+ "bCaseInsensitive": bCaseInsensitive
+ } );
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
+ }
+ };
+
+
+ /**
+ * Get the data for the whole table, an individual row or an individual cell based on the
+ * provided parameters.
+ * @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as
+ * a TR node then the data source for the whole row will be returned. If given as a
+ * TD/TH cell node then iCol will be automatically calculated and the data for the
+ * cell returned. If given as an integer, then this is treated as the aoData internal
+ * data index for the row (see fnGetPosition) and the data for that row used.
+ * @param {int} [iCol] Optional column index that you want the data of.
+ * @returns {array|object|string} If mRow is undefined, then the data for all rows is
+ * returned. If mRow is defined, just data for that row, and is iCol is
+ * defined, only data for the designated cell is returned.
+ * @dtopt API
+ *
+ * @example
+ * // Row data
+ * $(document).ready(function() {
+ * oTable = $('#example').dataTable();
+ *
+ * oTable.$('tr').click( function () {
+ * var data = oTable.fnGetData( this );
+ * // ... do something with the array / object of data for the row
+ * } );
+ * } );
+ *
+ * @example
+ * // Individual cell data
+ * $(document).ready(function() {
+ * oTable = $('#example').dataTable();
+ *
+ * oTable.$('td').click( function () {
+ * var sData = oTable.fnGetData( this );
+ * alert( 'The cell clicked on had the value of '+sData );
+ * } );
+ * } );
+ */
+ this.fnGetData = function( mRow, iCol )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+
+ if ( mRow !== undefined )
+ {
+ var iRow = mRow;
+ if ( typeof mRow === 'object' )
+ {
+ var sNode = mRow.nodeName.toLowerCase();
+ if (sNode === "tr" )
+ {
+ iRow = _fnNodeToDataIndex(oSettings, mRow);
+ }
+ else if ( sNode === "td" )
+ {
+ iRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);
+ iCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );
+ }
+ }
+
+ if ( iCol !== undefined )
+ {
+ return _fnGetCellData( oSettings, iRow, iCol, '' );
+ }
+ return (oSettings.aoData[iRow]!==undefined) ?
+ oSettings.aoData[iRow]._aData : null;
+ }
+ return _fnGetDataMaster( oSettings );
+ };
+
+
+ /**
+ * Get an array of the TR nodes that are used in the table's body. Note that you will
+ * typically want to use the '$' API method in preference to this as it is more
+ * flexible.
+ * @param {int} [iRow] Optional row index for the TR element you want
+ * @returns {array|node} If iRow is undefined, returns an array of all TR elements
+ * in the table's body, or iRow is defined, just the TR element requested.
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Get the nodes from the table
+ * var nNodes = oTable.fnGetNodes( );
+ * } );
+ */
+ this.fnGetNodes = function( iRow )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+
+ if ( iRow !== undefined ) {
+ return (oSettings.aoData[iRow]!==undefined) ?
+ oSettings.aoData[iRow].nTr : null;
+ }
+ return _fnGetTrNodes( oSettings );
+ };
+
+
+ /**
+ * Get the array indexes of a particular cell from it's DOM element
+ * and column index including hidden columns
+ * @param {node} nNode this can either be a TR, TD or TH in the table's body
+ * @returns {int} If nNode is given as a TR, then a single index is returned, or
+ * if given as a cell, an array of [row index, column index (visible),
+ * column index (all)] is given.
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * $('#example tbody td').click( function () {
+ * // Get the position of the current data from the node
+ * var aPos = oTable.fnGetPosition( this );
+ *
+ * // Get the data array for this row
+ * var aData = oTable.fnGetData( aPos[0] );
+ *
+ * // Update the data array and return the value
+ * aData[ aPos[1] ] = 'clicked';
+ * this.innerHTML = 'clicked';
+ * } );
+ *
+ * // Init DataTables
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnGetPosition = function( nNode )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var sNodeName = nNode.nodeName.toUpperCase();
+
+ if ( sNodeName == "TR" )
+ {
+ return _fnNodeToDataIndex(oSettings, nNode);
+ }
+ else if ( sNodeName == "TD" || sNodeName == "TH" )
+ {
+ var iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );
+ var iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );
+ return [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];
+ }
+ return null;
+ };
+
+
+ /**
+ * Check to see if a row is 'open' or not.
+ * @param {node} nTr the table row to check
+ * @returns {boolean} true if the row is currently open, false otherwise
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable;
+ *
+ * // 'open' an information row when a row is clicked on
+ * $('#example tbody tr').click( function () {
+ * if ( oTable.fnIsOpen(this) ) {
+ * oTable.fnClose( this );
+ * } else {
+ * oTable.fnOpen( this, "Temporary row opened", "info_row" );
+ * }
+ * } );
+ *
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnIsOpen = function( nTr )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var aoOpenRows = oSettings.aoOpenRows;
+
+ for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
+ {
+ if ( oSettings.aoOpenRows[i].nParent == nTr )
+ {
+ return true;
+ }
+ }
+ return false;
+ };
+
+
+ /**
+ * This function will place a new row directly after a row which is currently
+ * on display on the page, with the HTML contents that is passed into the
+ * function. This can be used, for example, to ask for confirmation that a
+ * particular record should be deleted.
+ * @param {node} nTr The table row to 'open'
+ * @param {string|node|jQuery} mHtml The HTML to put into the row
+ * @param {string} sClass Class to give the new TD cell
+ * @returns {node} The row opened. Note that if the table row passed in as the
+ * first parameter, is not found in the table, this method will silently
+ * return.
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable;
+ *
+ * // 'open' an information row when a row is clicked on
+ * $('#example tbody tr').click( function () {
+ * if ( oTable.fnIsOpen(this) ) {
+ * oTable.fnClose( this );
+ * } else {
+ * oTable.fnOpen( this, "Temporary row opened", "info_row" );
+ * }
+ * } );
+ *
+ * oTable = $('#example').dataTable();
+ * } );
+ */
+ this.fnOpen = function( nTr, mHtml, sClass )
+ {
+ /* Find settings from table node */
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+
+ /* Check that the row given is in the table */
+ var nTableRows = _fnGetTrNodes( oSettings );
+ if ( $.inArray(nTr, nTableRows) === -1 )
+ {
+ return;
+ }
+
+ /* the old open one if there is one */
+ this.fnClose( nTr );
+
+ var nNewRow = document.createElement("tr");
+ var nNewCell = document.createElement("td");
+ nNewRow.appendChild( nNewCell );
+ nNewCell.className = sClass;
+ nNewCell.colSpan = _fnVisbleColumns( oSettings );
+
+ if (typeof mHtml === "string")
+ {
+ nNewCell.innerHTML = mHtml;
+ }
+ else
+ {
+ $(nNewCell).html( mHtml );
+ }
+
+ /* If the nTr isn't on the page at the moment - then we don't insert at the moment */
+ var nTrs = $('tr', oSettings.nTBody);
+ if ( $.inArray(nTr, nTrs) != -1 )
+ {
+ $(nNewRow).insertAfter(nTr);
+ }
+
+ oSettings.aoOpenRows.push( {
+ "nTr": nNewRow,
+ "nParent": nTr
+ } );
+
+ return nNewRow;
+ };
+
+
+ /**
+ * Change the pagination - provides the internal logic for pagination in a simple API
+ * function. With this function you can have a DataTables table go to the next,
+ * previous, first or last pages.
+ * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
+ * or page number to jump to (integer), note that page 0 is the first page.
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * oTable.fnPageChange( 'next' );
+ * } );
+ */
+ this.fnPageChange = function ( mAction, bRedraw )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ _fnPageChange( oSettings, mAction );
+ _fnCalculateEnd( oSettings );
+
+ if ( bRedraw === undefined || bRedraw )
+ {
+ _fnDraw( oSettings );
+ }
+ };
+
+
+ /**
+ * Show a particular column
+ * @param {int} iCol The column whose display should be changed
+ * @param {bool} bShow Show (true) or hide (false) the column
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Hide the second column after initialisation
+ * oTable.fnSetColumnVis( 1, false );
+ * } );
+ */
+ this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var i, iLen;
+ var aoColumns = oSettings.aoColumns;
+ var aoData = oSettings.aoData;
+ var nTd, bAppend, iBefore;
+
+ /* No point in doing anything if we are requesting what is already true */
+ if ( aoColumns[iCol].bVisible == bShow )
+ {
+ return;
+ }
+
+ /* Show the column */
+ if ( bShow )
+ {
+ var iInsert = 0;
+ for ( i=0 ; i<iCol ; i++ )
+ {
+ if ( aoColumns[i].bVisible )
+ {
+ iInsert++;
+ }
+ }
+
+ /* Need to decide if we should use appendChild or insertBefore */
+ bAppend = (iInsert >= _fnVisbleColumns( oSettings ));
+
+ /* Which coloumn should we be inserting before? */
+ if ( !bAppend )
+ {
+ for ( i=iCol ; i<aoColumns.length ; i++ )
+ {
+ if ( aoColumns[i].bVisible )
+ {
+ iBefore = i;
+ break;
+ }
+ }
+ }
+
+ for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+ {
+ if ( aoData[i].nTr !== null )
+ {
+ if ( bAppend )
+ {
+ aoData[i].nTr.appendChild(
+ aoData[i]._anHidden[iCol]
+ );
+ }
+ else
+ {
+ aoData[i].nTr.insertBefore(
+ aoData[i]._anHidden[iCol],
+ _fnGetTdNodes( oSettings, i )[iBefore] );
+ }
+ }
+ }
+ }
+ else
+ {
+ /* Remove a column from display */
+ for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
+ {
+ if ( aoData[i].nTr !== null )
+ {
+ nTd = _fnGetTdNodes( oSettings, i )[iCol];
+ aoData[i]._anHidden[iCol] = nTd;
+ nTd.parentNode.removeChild( nTd );
+ }
+ }
+ }
+
+ /* Clear to set the visible flag */
+ aoColumns[iCol].bVisible = bShow;
+
+ /* Redraw the header and footer based on the new column visibility */
+ _fnDrawHead( oSettings, oSettings.aoHeader );
+ if ( oSettings.nTFoot )
+ {
+ _fnDrawHead( oSettings, oSettings.aoFooter );
+ }
+
+ /* If there are any 'open' rows, then we need to alter the colspan for this col change */
+ for ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )
+ {
+ oSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );
+ }
+
+ /* Do a redraw incase anything depending on the table columns needs it
+ * (built-in: scrolling)
+ */
+ if ( bRedraw === undefined || bRedraw )
+ {
+ _fnAdjustColumnSizing( oSettings );
+ _fnDraw( oSettings );
+ }
+
+ _fnSaveState( oSettings );
+ };
+
+
+ /**
+ * Get the settings for a particular table for external manipulation
+ * @returns {object} DataTables settings object. See
+ * {@link DataTable.models.oSettings}
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * var oSettings = oTable.fnSettings();
+ *
+ * // Show an example parameter from the settings
+ * alert( oSettings._iDisplayStart );
+ * } );
+ */
+ this.fnSettings = function()
+ {
+ return _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ };
+
+
+ /**
+ * Sort the table by a particular column
+ * @param {int} iCol the data index to sort on. Note that this will not match the
+ * 'display index' if you have hidden data entries
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Sort immediately with columns 0 and 1
+ * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
+ * } );
+ */
+ this.fnSort = function( aaSort )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ oSettings.aaSorting = aaSort;
+ _fnSort( oSettings );
+ };
+
+
+ /**
+ * Attach a sort listener to an element for a given column
+ * @param {node} nNode the element to attach the sort listener to
+ * @param {int} iColumn the column that a click on this node will sort on
+ * @param {function} [fnCallback] callback function when sort is run
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ *
+ * // Sort on column 1, when 'sorter' is clicked on
+ * oTable.fnSortListener( document.getElementById('sorter'), 1 );
+ * } );
+ */
+ this.fnSortListener = function( nNode, iColumn, fnCallback )
+ {
+ _fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,
+ fnCallback );
+ };
+
+
+ /**
+ * Update a table cell or row - this method will accept either a single value to
+ * update the cell with, an array of values with one element for each column or
+ * an object in the same format as the original data source. The function is
+ * self-referencing in order to make the multi column updates easier.
+ * @param {object|array|string} mData Data to update the cell/row with
+ * @param {node|int} mRow TR element you want to update or the aoData index
+ * @param {int} [iColumn] The column to update (not used of mData is an array or object)
+ * @param {bool} [bRedraw=true] Redraw the table or not
+ * @param {bool} [bAction=true] Perform pre-draw actions or not
+ * @returns {int} 0 on success, 1 on error
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
+ * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row
+ * } );
+ */
+ this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
+ {
+ var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
+ var i, iLen, sDisplay;
+ var iRow = (typeof mRow === 'object') ?
+ _fnNodeToDataIndex(oSettings, mRow) : mRow;
+
+ if ( $.isArray(mData) && iColumn === undefined )
+ {
+ /* Array update - update the whole row */
+ oSettings.aoData[iRow]._aData = mData.slice();
+
+ /* Flag to the function that we are recursing */
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ this.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );
+ }
+ }
+ else if ( $.isPlainObject(mData) && iColumn === undefined )
+ {
+ /* Object update - update the whole row - assume the developer gets the object right */
+ oSettings.aoData[iRow]._aData = $.extend( true, {}, mData );
+
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
+ {
+ this.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );
+ }
+ }
+ else
+ {
+ /* Individual cell update */
+ _fnSetCellData( oSettings, iRow, iColumn, mData );
+ sDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
+
+ var oCol = oSettings.aoColumns[iColumn];
+ if ( oCol.fnRender !== null )
+ {
+ sDisplay = _fnRender( oSettings, iRow, iColumn );
+ if ( oCol.bUseRendered )
+ {
+ _fnSetCellData( oSettings, iRow, iColumn, sDisplay );
+ }
+ }
+
+ if ( oSettings.aoData[iRow].nTr !== null )
+ {
+ /* Do the actual HTML update */
+ _fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;
+ }
+ }
+
+ /* Modify the search index for this row (strictly this is likely not needed, since fnReDraw
+ * will rebuild the search array - however, the redraw might be disabled by the user)
+ */
+ var iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );
+ oSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(
+ oSettings,
+ _fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )
+ );
+
+ /* Perform pre-draw actions */
+ if ( bAction === undefined || bAction )
+ {
+ _fnAdjustColumnSizing( oSettings );
+ }
+
+ /* Redraw the table */
+ if ( bRedraw === undefined || bRedraw )
+ {
+ _fnReDraw( oSettings );
+ }
+ return 0;
+ };
+
+
+ /**
+ * Provide a common method for plug-ins to check the version of DataTables being used, in order
+ * to ensure compatibility.
+ * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+ * formats "X" and "X.Y" are also acceptable.
+ * @returns {boolean} true if this version of DataTables is greater or equal to the required
+ * version, or false if this version of DataTales is not suitable
+ * @method
+ * @dtopt API
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * alert( oTable.fnVersionCheck( '1.9.0' ) );
+ * } );
+ */
+ this.fnVersionCheck = DataTable.ext.fnVersionCheck;
+
+
+ /*
+ * This is really a good bit rubbish this method of exposing the internal methods
+ * publicly... - To be fixed in 2.0 using methods on the prototype
+ */
+
+
+ /**
+ * Create a wrapper function for exporting an internal functions to an external API.
+ * @param {string} sFunc API function name
+ * @returns {function} wrapped function
+ * @memberof DataTable#oApi
+ */
+ function _fnExternApiFunc (sFunc)
+ {
+ return function() {
+ var aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat(
+ Array.prototype.slice.call(arguments) );
+ return DataTable.ext.oApi[sFunc].apply( this, aArgs );
+ };
+ }
+
+
+ /**
+ * Reference to internal functions for use by plug-in developers. Note that these
+ * methods are references to internal functions and are considered to be private.
+ * If you use these methods, be aware that they are liable to change between versions
+ * (check the upgrade notes).
+ * @namespace
+ */
+ this.oApi = {
+ "_fnExternApiFunc": _fnExternApiFunc,
+ "_fnInitialise": _fnInitialise,
+ "_fnInitComplete": _fnInitComplete,
+ "_fnLanguageCompat": _fnLanguageCompat,
+ "_fnAddColumn": _fnAddColumn,
+ "_fnColumnOptions": _fnColumnOptions,
+ "_fnAddData": _fnAddData,
+ "_fnCreateTr": _fnCreateTr,
+ "_fnGatherData": _fnGatherData,
+ "_fnBuildHead": _fnBuildHead,
+ "_fnDrawHead": _fnDrawHead,
+ "_fnDraw": _fnDraw,
+ "_fnReDraw": _fnReDraw,
+ "_fnAjaxUpdate": _fnAjaxUpdate,
+ "_fnAjaxParameters": _fnAjaxParameters,
+ "_fnAjaxUpdateDraw": _fnAjaxUpdateDraw,
+ "_fnServerParams": _fnServerParams,
+ "_fnAddOptionsHtml": _fnAddOptionsHtml,
+ "_fnFeatureHtmlTable": _fnFeatureHtmlTable,
+ "_fnScrollDraw": _fnScrollDraw,
+ "_fnAdjustColumnSizing": _fnAdjustColumnSizing,
+ "_fnFeatureHtmlFilter": _fnFeatureHtmlFilter,
+ "_fnFilterComplete": _fnFilterComplete,
+ "_fnFilterCustom": _fnFilterCustom,
+ "_fnFilterColumn": _fnFilterColumn,
+ "_fnFilter": _fnFilter,
+ "_fnBuildSearchArray": _fnBuildSearchArray,
+ "_fnBuildSearchRow": _fnBuildSearchRow,
+ "_fnFilterCreateSearch": _fnFilterCreateSearch,
+ "_fnDataToSearch": _fnDataToSearch,
+ "_fnSort": _fnSort,
+ "_fnSortAttachListener": _fnSortAttachListener,
+ "_fnSortingClasses": _fnSortingClasses,
+ "_fnFeatureHtmlPaginate": _fnFeatureHtmlPaginate,
+ "_fnPageChange": _fnPageChange,
+ "_fnFeatureHtmlInfo": _fnFeatureHtmlInfo,
+ "_fnUpdateInfo": _fnUpdateInfo,
+ "_fnFeatureHtmlLength": _fnFeatureHtmlLength,
+ "_fnFeatureHtmlProcessing": _fnFeatureHtmlProcessing,
+ "_fnProcessingDisplay": _fnProcessingDisplay,
+ "_fnVisibleToColumnIndex": _fnVisibleToColumnIndex,
+ "_fnColumnIndexToVisible": _fnColumnIndexToVisible,
+ "_fnNodeToDataIndex": _fnNodeToDataIndex,
+ "_fnVisbleColumns": _fnVisbleColumns,
+ "_fnCalculateEnd": _fnCalculateEnd,
+ "_fnConvertToWidth": _fnConvertToWidth,
+ "_fnCalculateColumnWidths": _fnCalculateColumnWidths,
+ "_fnScrollingWidthAdjust": _fnScrollingWidthAdjust,
+ "_fnGetWidestNode": _fnGetWidestNode,
+ "_fnGetMaxLenString": _fnGetMaxLenString,
+ "_fnStringToCss": _fnStringToCss,
+ "_fnDetectType": _fnDetectType,
+ "_fnSettingsFromNode": _fnSettingsFromNode,
+ "_fnGetDataMaster": _fnGetDataMaster,
+ "_fnGetTrNodes": _fnGetTrNodes,
+ "_fnGetTdNodes": _fnGetTdNodes,
+ "_fnEscapeRegex": _fnEscapeRegex,
+ "_fnDeleteIndex": _fnDeleteIndex,
+ "_fnReOrderIndex": _fnReOrderIndex,
+ "_fnColumnOrdering": _fnColumnOrdering,
+ "_fnLog": _fnLog,
+ "_fnClearTable": _fnClearTable,
+ "_fnSaveState": _fnSaveState,
+ "_fnLoadState": _fnLoadState,
+ "_fnCreateCookie": _fnCreateCookie,
+ "_fnReadCookie": _fnReadCookie,
+ "_fnDetectHeader": _fnDetectHeader,
+ "_fnGetUniqueThs": _fnGetUniqueThs,
+ "_fnScrollBarWidth": _fnScrollBarWidth,
+ "_fnApplyToChildren": _fnApplyToChildren,
+ "_fnMap": _fnMap,
+ "_fnGetRowData": _fnGetRowData,
+ "_fnGetCellData": _fnGetCellData,
+ "_fnSetCellData": _fnSetCellData,
+ "_fnGetObjectDataFn": _fnGetObjectDataFn,
+ "_fnSetObjectDataFn": _fnSetObjectDataFn,
+ "_fnApplyColumnDefs": _fnApplyColumnDefs,
+ "_fnBindAction": _fnBindAction,
+ "_fnExtend": _fnExtend,
+ "_fnCallbackReg": _fnCallbackReg,
+ "_fnCallbackFire": _fnCallbackFire,
+ "_fnJsonString": _fnJsonString,
+ "_fnRender": _fnRender,
+ "_fnNodeToColumnIndex": _fnNodeToColumnIndex,
+ "_fnInfoMacros": _fnInfoMacros,
+ "_fnBrowserDetect": _fnBrowserDetect,
+ "_fnGetColumns": _fnGetColumns
+ };
+
+ $.extend( DataTable.ext.oApi, this.oApi );
+
+ for ( var sFunc in DataTable.ext.oApi )
+ {
+ if ( sFunc )
+ {
+ this[sFunc] = _fnExternApiFunc(sFunc);
+ }
+ }
+
+
+ var _that = this;
+ this.each(function() {
+ var i=0, iLen, j, jLen, k, kLen;
+ var sId = this.getAttribute( 'id' );
+ var bInitHandedOff = false;
+ var bUsePassedData = false;
+
+
+ /* Sanity check */
+ if ( this.nodeName.toLowerCase() != 'table' )
+ {
+ _fnLog( null, 0, "Attempted to initialise DataTables on a node which is not a "+
+ "table: "+this.nodeName );
+ return;
+ }
+
+ /* Check to see if we are re-initialising a table */
+ for ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )
+ {
+ /* Base check on table node */
+ if ( DataTable.settings[i].nTable == this )
+ {
+ if ( oInit === undefined || oInit.bRetrieve )
+ {
+ return DataTable.settings[i].oInstance;
+ }
+ else if ( oInit.bDestroy )
+ {
+ DataTable.settings[i].oInstance.fnDestroy();
+ break;
+ }
+ else
+ {
+ _fnLog( DataTable.settings[i], 0, "Cannot reinitialise DataTable.\n\n"+
+ "To retrieve the DataTables object for this table, pass no arguments or see "+
+ "the docs for bRetrieve and bDestroy" );
+ return;
+ }
+ }
+
+ /* If the element we are initialising has the same ID as a table which was previously
+ * initialised, but the table nodes don't match (from before) then we destroy the old
+ * instance by simply deleting it. This is under the assumption that the table has been
+ * destroyed by other methods. Anyone using non-id selectors will need to do this manually
+ */
+ if ( DataTable.settings[i].sTableId == this.id )
+ {
+ DataTable.settings.splice( i, 1 );
+ break;
+ }
+ }
+
+ /* Ensure the table has an ID - required for accessibility */
+ if ( sId === null || sId === "" )
+ {
+ sId = "DataTables_Table_"+(DataTable.ext._oExternConfig.iNextUnique++);
+ this.id = sId;
+ }
+
+ /* Create the settings object for this table and set some of the default parameters */
+ var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
+ "nTable": this,
+ "oApi": _that.oApi,
+ "oInit": oInit,
+ "sDestroyWidth": $(this).width(),
+ "sInstance": sId,
+ "sTableId": sId
+ } );
+ DataTable.settings.push( oSettings );
+
+ // Need to add the instance after the instance after the settings object has been added
+ // to the settings array, so we can self reference the table instance if more than one
+ oSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();
+
+ /* Setting up the initialisation object */
+ if ( !oInit )
+ {
+ oInit = {};
+ }
+
+ // Backwards compatibility, before we apply all the defaults
+ if ( oInit.oLanguage )
+ {
+ _fnLanguageCompat( oInit.oLanguage );
+ }
+
+ oInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );
+
+ // Map the initialisation options onto the settings object
+ _fnMap( oSettings.oFeatures, oInit, "bPaginate" );
+ _fnMap( oSettings.oFeatures, oInit, "bLengthChange" );
+ _fnMap( oSettings.oFeatures, oInit, "bFilter" );
+ _fnMap( oSettings.oFeatures, oInit, "bSort" );
+ _fnMap( oSettings.oFeatures, oInit, "bInfo" );
+ _fnMap( oSettings.oFeatures, oInit, "bProcessing" );
+ _fnMap( oSettings.oFeatures, oInit, "bAutoWidth" );
+ _fnMap( oSettings.oFeatures, oInit, "bSortClasses" );
+ _fnMap( oSettings.oFeatures, oInit, "bServerSide" );
+ _fnMap( oSettings.oFeatures, oInit, "bDeferRender" );
+ _fnMap( oSettings.oScroll, oInit, "sScrollX", "sX" );
+ _fnMap( oSettings.oScroll, oInit, "sScrollXInner", "sXInner" );
+ _fnMap( oSettings.oScroll, oInit, "sScrollY", "sY" );
+ _fnMap( oSettings.oScroll, oInit, "bScrollCollapse", "bCollapse" );
+ _fnMap( oSettings.oScroll, oInit, "bScrollInfinite", "bInfinite" );
+ _fnMap( oSettings.oScroll, oInit, "iScrollLoadGap", "iLoadGap" );
+ _fnMap( oSettings.oScroll, oInit, "bScrollAutoCss", "bAutoCss" );
+ _fnMap( oSettings, oInit, "asStripeClasses" );
+ _fnMap( oSettings, oInit, "asStripClasses", "asStripeClasses" ); // legacy
+ _fnMap( oSettings, oInit, "fnServerData" );
+ _fnMap( oSettings, oInit, "fnFormatNumber" );
+ _fnMap( oSettings, oInit, "sServerMethod" );
+ _fnMap( oSettings, oInit, "aaSorting" );
+ _fnMap( oSettings, oInit, "aaSortingFixed" );
+ _fnMap( oSettings, oInit, "aLengthMenu" );
+ _fnMap( oSettings, oInit, "sPaginationType" );
+ _fnMap( oSettings, oInit, "sAjaxSource" );
+ _fnMap( oSettings, oInit, "sAjaxDataProp" );
+ _fnMap( oSettings, oInit, "iCookieDuration" );
+ _fnMap( oSettings, oInit, "sCookiePrefix" );
+ _fnMap( oSettings, oInit, "sDom" );
+ _fnMap( oSettings, oInit, "bSortCellsTop" );
+ _fnMap( oSettings, oInit, "iTabIndex" );
+ _fnMap( oSettings, oInit, "oSearch", "oPreviousSearch" );
+ _fnMap( oSettings, oInit, "aoSearchCols", "aoPreSearchCols" );
+ _fnMap( oSettings, oInit, "iDisplayLength", "_iDisplayLength" );
+ _fnMap( oSettings, oInit, "bJQueryUI", "bJUI" );
+ _fnMap( oSettings, oInit, "fnCookieCallback" );
+ _fnMap( oSettings, oInit, "fnStateLoad" );
+ _fnMap( oSettings, oInit, "fnStateSave" );
+ _fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
+
+ /* Callback functions which are array driven */
+ _fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' );
+ _fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' );
+ _fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' );
+ _fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' );
+ _fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' );
+ _fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' );
+ _fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' );
+ _fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' );
+
+ if ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&
+ oSettings.oFeatures.bSortClasses )
+ {
+ /* Enable sort classes for server-side processing. Safe to do it here, since server-side
+ * processing must be enabled by the developer
+ */
+ _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );
+ }
+ else if ( oSettings.oFeatures.bDeferRender )
+ {
+ _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );
+ }
+
+ if ( oInit.bJQueryUI )
+ {
+ /* Use the JUI classes object for display. You could clone the oStdClasses object if
+ * you want to have multiple tables with multiple independent classes
+ */
+ $.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );
+
+ if ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === "lfrtip" )
+ {
+ /* Set the DOM to use a layout suitable for jQuery UI's theming */
+ oSettings.sDom = '<"H"lfr>t<"F"ip>';
+ }
+ }
+ else
+ {
+ $.extend( oSettings.oClasses, DataTable.ext.oStdClasses );
+ }
+ $(this).addClass( oSettings.oClasses.sTable );
+
+ /* Calculate the scroll bar width and cache it for use later on */
+ if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
+ {
+ oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
+ }
+
+ if ( oSettings.iInitDisplayStart === undefined )
+ {
+ /* Display start point, taking into account the save saving */
+ oSettings.iInitDisplayStart = oInit.iDisplayStart;
+ oSettings._iDisplayStart = oInit.iDisplayStart;
+ }
+
+ /* Must be done after everything which can be overridden by a cookie! */
+ if ( oInit.bStateSave )
+ {
+ oSettings.oFeatures.bStateSave = true;
+ _fnLoadState( oSettings, oInit );
+ _fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
+ }
+
+ if ( oInit.iDeferLoading !== null )
+ {
+ oSettings.bDeferLoading = true;
+ var tmp = $.isArray( oInit.iDeferLoading );
+ oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
+ oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
+ }
+
+ if ( oInit.aaData !== null )
+ {
+ bUsePassedData = true;
+ }
+
+ /* Language definitions */
+ if ( oInit.oLanguage.sUrl !== "" )
+ {
+ /* Get the language definitions from a file - because this Ajax call makes the language
+ * get async to the remainder of this function we use bInitHandedOff to indicate that
+ * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
+ */
+ oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
+ $.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {
+ _fnLanguageCompat( json );
+ $.extend( true, oSettings.oLanguage, oInit.oLanguage, json );
+ _fnInitialise( oSettings );
+ } );
+ bInitHandedOff = true;
+ }
+ else
+ {
+ $.extend( true, oSettings.oLanguage, oInit.oLanguage );
+ }
+
+
+ /*
+ * Stripes
+ */
+ if ( oInit.asStripeClasses === null )
+ {
+ oSettings.asStripeClasses =[
+ oSettings.oClasses.sStripeOdd,
+ oSettings.oClasses.sStripeEven
+ ];
+ }
+
+ /* Remove row stripe classes if they are already on the table row */
+ iLen=oSettings.asStripeClasses.length;
+ oSettings.asDestroyStripes = [];
+ if (iLen)
+ {
+ var bStripeRemove = false;
+ var anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');
+ for ( i=0 ; i<iLen ; i++ )
+ {
+ if ( anRows.hasClass( oSettings.asStripeClasses[i] ) )
+ {
+ bStripeRemove = true;
+
+ /* Store the classes which we are about to remove so they can be re-added on destroy */
+ oSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );
+ }
+ }
+
+ if ( bStripeRemove )
+ {
+ anRows.removeClass( oSettings.asStripeClasses.join(' ') );
+ }
+ }
+
+ /*
+ * Columns
+ * See if we should load columns automatically or use defined ones
+ */
+ var anThs = [];
+ var aoColumnsInit;
+ var nThead = this.getElementsByTagName('thead');
+ if ( nThead.length !== 0 )
+ {
+ _fnDetectHeader( oSettings.aoHeader, nThead[0] );
+ anThs = _fnGetUniqueThs( oSettings );
+ }
+
+ /* If not given a column array, generate one with nulls */
+ if ( oInit.aoColumns === null )
+ {
+ aoColumnsInit = [];
+ for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
+ {
+ aoColumnsInit.push( null );
+ }
+ }
+ else
+ {
+ aoColumnsInit = oInit.aoColumns;
+ }
+
+ /* Add the columns */
+ for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
+ {
+ /* Short cut - use the loop to check if we have column visibility state to restore */
+ if ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )
+ {
+ if ( aoColumnsInit[i] === null )
+ {
+ aoColumnsInit[i] = {};
+ }
+ aoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;
+ }
+
+ _fnAddColumn( oSettings, anThs ? anThs[i] : null );
+ }
+
+ /* Apply the column definitions */
+ _fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
+ _fnColumnOptions( oSettings, iCol, oDef );
+ } );
+
+
+ /*
+ * Sorting
+ * Check the aaSorting array
+ */
+ for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
+ {
+ if ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )
+ {
+ oSettings.aaSorting[i][0] = 0;
+ }
+ var oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];
+
+ /* Add a default sorting index */
+ if ( oSettings.aaSorting[i][2] === undefined )
+ {
+ oSettings.aaSorting[i][2] = 0;
+ }
+
+ /* If aaSorting is not defined, then we use the first indicator in asSorting */
+ if ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )
+ {
+ oSettings.aaSorting[i][1] = oColumn.asSorting[0];
+ }
+
+ /* Set the current sorting index based on aoColumns.asSorting */
+ for ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )
+ {
+ if ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )
+ {
+ oSettings.aaSorting[i][2] = j;
+ break;
+ }
+ }
+ }
+
+ /* Do a first pass on the sorting classes (allows any size changes to be taken into
+ * account, and also will apply sorting disabled classes if disabled
+ */
+ _fnSortingClasses( oSettings );
+
+
+ /*
+ * Final init
+ * Cache the header, body and footer as required, creating them if needed
+ */
+
+ /* Browser support detection */
+ _fnBrowserDetect( oSettings );
+
+ // Work around for Webkit bug 83867 - store the caption-side before removing from doc
+ var captions = $(this).children('caption').each( function () {
+ this._captionSide = $(this).css('caption-side');
+ } );
+
+ var thead = $(this).children('thead');
+ if ( thead.length === 0 )
+ {
+ thead = [ document.createElement( 'thead' ) ];
+ this.appendChild( thead[0] );
+ }
+ oSettings.nTHead = thead[0];
+
+ var tbody = $(this).children('tbody');
+ if ( tbody.length === 0 )
+ {
+ tbody = [ document.createElement( 'tbody' ) ];
+ this.appendChild( tbody[0] );
+ }
+ oSettings.nTBody = tbody[0];
+ oSettings.nTBody.setAttribute( "role", "alert" );
+ oSettings.nTBody.setAttribute( "aria-live", "polite" );
+ oSettings.nTBody.setAttribute( "aria-relevant", "all" );
+
+ var tfoot = $(this).children('tfoot');
+ if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
+ {
+ // If we are a scrolling table, and no footer has been given, then we need to create
+ // a tfoot element for the caption element to be appended to
+ tfoot = [ document.createElement( 'tfoot' ) ];
+ this.appendChild( tfoot[0] );
+ }
+
+ if ( tfoot.length > 0 )
+ {
+ oSettings.nTFoot = tfoot[0];
+ _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
+ }
+
+ /* Check if there is data passing into the constructor */
+ if ( bUsePassedData )
+ {
+ for ( i=0 ; i<oInit.aaData.length ; i++ )
+ {
+ _fnAddData( oSettings, oInit.aaData[ i ] );
+ }
+ }
+ else
+ {
+ /* Grab the data from the page */
+ _fnGatherData( oSettings );
+ }
+
+ /* Copy the data index array */
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
+
+ /* Initialisation complete - table can be drawn */
+ oSettings.bInitialised = true;
+
+ /* Check if we need to initialise the table (it might not have been handed off to the
+ * language processor)
+ */
+ if ( bInitHandedOff === false )
+ {
+ _fnInitialise( oSettings );
+ }
+ } );
+ _that = null;
+ return this;
+ };
+
+
+
+ /**
+ * Provide a common method for plug-ins to check the version of DataTables being used, in order
+ * to ensure compatibility.
+ * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
+ * formats "X" and "X.Y" are also acceptable.
+ * @returns {boolean} true if this version of DataTables is greater or equal to the required
+ * version, or false if this version of DataTales is not suitable
+ * @static
+ * @dtopt API-Static
+ *
+ * @example
+ * alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );
+ */
+ DataTable.fnVersionCheck = function( sVersion )
+ {
+ /* This is cheap, but effective */
+ var fnZPad = function (Zpad, count)
+ {
+ while(Zpad.length < count) {
+ Zpad += '0';
+ }
+ return Zpad;
+ };
+ var aThis = DataTable.ext.sVersion.split('.');
+ var aThat = sVersion.split('.');
+ var sThis = '', sThat = '';
+
+ for ( var i=0, iLen=aThat.length ; i<iLen ; i++ )
+ {
+ sThis += fnZPad( aThis[i], 3 );
+ sThat += fnZPad( aThat[i], 3 );
+ }
+
+ return parseInt(sThis, 10) >= parseInt(sThat, 10);
+ };
+
+
+ /**
+ * Check if a TABLE node is a DataTable table already or not.
+ * @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other
+ * node types can be passed in, but will always return false).
+ * @returns {boolean} true the table given is a DataTable, or false otherwise
+ * @static
+ * @dtopt API-Static
+ *
+ * @example
+ * var ex = document.getElementById('example');
+ * if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
+ * $(ex).dataTable();
+ * }
+ */
+ DataTable.fnIsDataTable = function ( nTable )
+ {
+ var o = DataTable.settings;
+
+ for ( var i=0 ; i<o.length ; i++ )
+ {
+ if ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )
+ {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+
+ /**
+ * Get all DataTable tables that have been initialised - optionally you can select to
+ * get only currently visible tables.
+ * @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or
+ * visible tables only.
+ * @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables
+ * @static
+ * @dtopt API-Static
+ *
+ * @example
+ * var table = $.fn.dataTable.fnTables(true);
+ * if ( table.length > 0 ) {
+ * $(table).dataTable().fnAdjustColumnSizing();
+ * }
+ */
+ DataTable.fnTables = function ( bVisible )
+ {
+ var out = [];
+
+ jQuery.each( DataTable.settings, function (i, o) {
+ if ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )
+ {
+ out.push( o.nTable );
+ }
+ } );
+
+ return out;
+ };
+
+
+ /**
+ * Version string for plug-ins to check compatibility. Allowed format is
+ * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
+ * e are optional
+ * @member
+ * @type string
+ * @default Version number
+ */
+ DataTable.version = "1.9.4";
+
+ /**
+ * Private data store, containing all of the settings objects that are created for the
+ * tables on a given page.
+ *
+ * Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i>
+ * through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.
+ * @member
+ * @type array
+ * @default []
+ * @private
+ */
+ DataTable.settings = [];
+
+ /**
+ * Object models container, for the various models that DataTables has available
+ * to it. These models define the objects that are used to hold the active state
+ * and configuration of the table.
+ * @namespace
+ */
+ DataTable.models = {};
+
+
+ /**
+ * DataTables extension options and plug-ins. This namespace acts as a collection "area"
+ * for plug-ins that can be used to extend the default DataTables behaviour - indeed many
+ * of the build in methods use this method to provide their own capabilities (sorting methods
+ * for example).
+ *
+ * Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed
+ * and modified by plug-ins.
+ * @namespace
+ */
+ DataTable.models.ext = {
+ /**
+ * Plug-in filtering functions - this method of filtering is complimentary to the default
+ * type based filtering, and a lot more comprehensive as it allows you complete control
+ * over the filtering logic. Each element in this array is a function (parameters
+ * described below) that is called for every row in the table, and your logic decides if
+ * it should be included in the filtered data set or not.
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+ * <li>{array|object} Data for the row to be processed (same as the original format
+ * that was passed in as the data source, or an array from a DOM data source</li>
+ * <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can
+ * be useful to retrieve the TR element if you need DOM interaction.</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>
+ * </ul>
+ * </il>
+ * </ul>
+ * @type array
+ * @default []
+ *
+ * @example
+ * // The following example shows custom filtering being applied to the fourth column (i.e.
+ * // the aData[3] index) based on two input values from the end-user, matching the data in
+ * // a certain range.
+ * $.fn.dataTableExt.afnFiltering.push(
+ * function( oSettings, aData, iDataIndex ) {
+ * var iMin = document.getElementById('min').value * 1;
+ * var iMax = document.getElementById('max').value * 1;
+ * var iVersion = aData[3] == "-" ? 0 : aData[3]*1;
+ * if ( iMin == "" && iMax == "" ) {
+ * return true;
+ * }
+ * else if ( iMin == "" && iVersion < iMax ) {
+ * return true;
+ * }
+ * else if ( iMin < iVersion && "" == iMax ) {
+ * return true;
+ * }
+ * else if ( iMin < iVersion && iVersion < iMax ) {
+ * return true;
+ * }
+ * return false;
+ * }
+ * );
+ */
+ "afnFiltering": [],
+
+
+ /**
+ * Plug-in sorting functions - this method of sorting is complimentary to the default type
+ * based sorting that DataTables does automatically, allowing much greater control over the
+ * the data that is being used to sort a column. This is useful if you want to do sorting
+ * based on live data (for example the contents of an 'input' element) rather than just the
+ * static string that DataTables knows of. The way these plug-ins work is that you create
+ * an array of the values you wish to be sorted for the column in question and then return
+ * that array. Which pre-sorting function is run here depends on the sSortDataType parameter
+ * that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort
+ * data.
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+ * <li>{int} Target column index</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>{array} Data for the column to be sorted upon</li>
+ * </ul>
+ * </il>
+ * </ul>
+ *
+ * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
+ * the different uses that DataTables can put the data to. Specifically <i>mData</i> when
+ * used as a function will give you a 'type' (sorting, filtering etc) that you can use to
+ * prepare the data as required for the different types. As such, this method is deprecated.
+ * @type array
+ * @default []
+ * @deprecated
+ *
+ * @example
+ * // Updating the cached sorting information with user entered values in HTML input elements
+ * jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )
+ * {
+ * var aData = [];
+ * $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
+ * aData.push( this.value );
+ * } );
+ * return aData;
+ * }
+ */
+ "afnSortData": [],
+
+
+ /**
+ * Feature plug-ins - This is an array of objects which describe the feature plug-ins that are
+ * available to DataTables. These feature plug-ins are accessible through the sDom initialisation
+ * option. As such, each feature plug-in must describe a function that is used to initialise
+ * itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name
+ * of the feature (sFeature). Thus the objects attached to this method must provide:
+ * <ul>
+ * <li>{function} fnInit Initialisation of the plug-in
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>{node|null} The element which contains your feature. Note that the return
+ * may also be void if your plug-in does not require to inject any DOM elements
+ * into DataTables control (sDom) - for example this might be useful when
+ * developing a plug-in which allows table control via keyboard entry.</li>
+ * </ul>
+ * </il>
+ * </ul>
+ * </li>
+ * <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>
+ * <li>{string} sFeature Feature name</li>
+ * </ul>
+ * @type array
+ * @default []
+ *
+ * @example
+ * // How TableTools initialises itself.
+ * $.fn.dataTableExt.aoFeatures.push( {
+ * "fnInit": function( oSettings ) {
+ * return new TableTools( { "oDTSettings": oSettings } );
+ * },
+ * "cFeature": "T",
+ * "sFeature": "TableTools"
+ * } );
+ */
+ "aoFeatures": [],
+
+
+ /**
+ * Type detection plug-in functions - DataTables utilises types to define how sorting and
+ * filtering behave, and types can be either be defined by the developer (sType for the
+ * column) or they can be automatically detected by the methods in this array. The functions
+ * defined in the array are quite simple, taking a single parameter (the data to analyse)
+ * and returning the type if it is a known type, or null otherwise.
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{*} Data from the column cell to be analysed</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>{string|null} Data type detected, or null if unknown (and thus pass it
+ * on to the other type detection functions.</li>
+ * </ul>
+ * </il>
+ * </ul>
+ * @type array
+ * @default []
+ *
+ * @example
+ * // Currency type detection plug-in:
+ * jQuery.fn.dataTableExt.aTypes.push(
+ * function ( sData ) {
+ * var sValidChars = "0123456789.-";
+ * var Char;
+ *
+ * // Check the numeric part
+ * for ( i=1 ; i<sData.length ; i++ ) {
+ * Char = sData.charAt(i);
+ * if (sValidChars.indexOf(Char) == -1) {
+ * return null;
+ * }
+ * }
+ *
+ * // Check prefixed by currency
+ * if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {
+ * return 'currency';
+ * }
+ * return null;
+ * }
+ * );
+ */
+ "aTypes": [],
+
+
+ /**
+ * Provide a common method for plug-ins to check the version of DataTables being used,
+ * in order to ensure compatibility.
+ * @type function
+ * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note
+ * that the formats "X" and "X.Y" are also acceptable.
+ * @returns {boolean} true if this version of DataTables is greater or equal to the
+ * required version, or false if this version of DataTales is not suitable
+ *
+ * @example
+ * $(document).ready(function() {
+ * var oTable = $('#example').dataTable();
+ * alert( oTable.fnVersionCheck( '1.9.0' ) );
+ * } );
+ */
+ "fnVersionCheck": DataTable.fnVersionCheck,
+
+
+ /**
+ * Index for what 'this' index API functions should use
+ * @type int
+ * @default 0
+ */
+ "iApiIndex": 0,
+
+
+ /**
+ * Pre-processing of filtering data plug-ins - When you assign the sType for a column
+ * (or have it automatically detected for you by DataTables or a type detection plug-in),
+ * you will typically be using this for custom sorting, but it can also be used to provide
+ * custom filtering by allowing you to pre-processing the data and returning the data in
+ * the format that should be filtered upon. This is done by adding functions this object
+ * with a parameter name which matches the sType for that target column. This is the
+ * corollary of <i>afnSortData</i> for filtering data.
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{*} Data from the column cell to be prepared for filtering</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>{string|null} Formatted string that will be used for the filtering.</li>
+ * </ul>
+ * </il>
+ * </ul>
+ *
+ * Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
+ * the different uses that DataTables can put the data to. Specifically <i>mData</i> when
+ * used as a function will give you a 'type' (sorting, filtering etc) that you can use to
+ * prepare the data as required for the different types. As such, this method is deprecated.
+ * @type object
+ * @default {}
+ * @deprecated
+ *
+ * @example
+ * $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {
+ * return sData.replace(/\n/g," ").replace( /<.*?>/g, "" );
+ * }
+ */
+ "ofnSearch": {},
+
+
+ /**
+ * Container for all private functions in DataTables so they can be exposed externally
+ * @type object
+ * @default {}
+ */
+ "oApi": {},
+
+
+ /**
+ * Storage for the various classes that DataTables uses
+ * @type object
+ * @default {}
+ */
+ "oStdClasses": {},
+
+
+ /**
+ * Storage for the various classes that DataTables uses - jQuery UI suitable
+ * @type object
+ * @default {}
+ */
+ "oJUIClasses": {},
+
+
+ /**
+ * Pagination plug-in methods - The style and controls of the pagination can significantly
+ * impact on how the end user interacts with the data in your table, and DataTables allows
+ * the addition of pagination controls by extending this object, which can then be enabled
+ * through the <i>sPaginationType</i> initialisation parameter. Each pagination type that
+ * is added is an object (the property name of which is what <i>sPaginationType</i> refers
+ * to) that has two properties, both methods that are used by DataTables to update the
+ * control's state.
+ * <ul>
+ * <li>
+ * fnInit - Initialisation of the paging controls. Called only during initialisation
+ * of the table. It is expected that this function will add the required DOM elements
+ * to the page for the paging controls to work. The element pointer
+ * 'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging
+ * controls (note that this is a 2D array to allow for multiple instances of each
+ * DataTables DOM element). It is suggested that you add the controls to this element
+ * as children
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+ * <li>{node} Container into which the pagination controls must be inserted</li>
+ * <li>{function} Draw callback function - whenever the controls cause a page
+ * change, this method must be called to redraw the table.</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>No return required</li>
+ * </ul>
+ * </il>
+ * </ul>
+ * </il>
+ * <li>
+ * fnInit - This function is called whenever the paging status of the table changes and is
+ * typically used to update classes and/or text of the paging controls to reflex the new
+ * status.
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
+ * <li>{function} Draw callback function - in case you need to redraw the table again
+ * or attach new event listeners</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>No return required</li>
+ * </ul>
+ * </il>
+ * </ul>
+ * </il>
+ * </ul>
+ * @type object
+ * @default {}
+ *
+ * @example
+ * $.fn.dataTableExt.oPagination.four_button = {
+ * "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) {
+ * nFirst = document.createElement( 'span' );
+ * nPrevious = document.createElement( 'span' );
+ * nNext = document.createElement( 'span' );
+ * nLast = document.createElement( 'span' );
+ *
+ * nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );
+ * nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
+ * nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
+ * nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );
+ *
+ * nFirst.className = "paginate_button first";
+ * nPrevious.className = "paginate_button previous";
+ * nNext.className="paginate_button next";
+ * nLast.className = "paginate_button last";
+ *
+ * nPaging.appendChild( nFirst );
+ * nPaging.appendChild( nPrevious );
+ * nPaging.appendChild( nNext );
+ * nPaging.appendChild( nLast );
+ *
+ * $(nFirst).click( function () {
+ * oSettings.oApi._fnPageChange( oSettings, "first" );
+ * fnCallbackDraw( oSettings );
+ * } );
+ *
+ * $(nPrevious).click( function() {
+ * oSettings.oApi._fnPageChange( oSettings, "previous" );
+ * fnCallbackDraw( oSettings );
+ * } );
+ *
+ * $(nNext).click( function() {
+ * oSettings.oApi._fnPageChange( oSettings, "next" );
+ * fnCallbackDraw( oSettings );
+ * } );
+ *
+ * $(nLast).click( function() {
+ * oSettings.oApi._fnPageChange( oSettings, "last" );
+ * fnCallbackDraw( oSettings );
+ * } );
+ *
+ * $(nFirst).bind( 'selectstart', function () { return false; } );
+ * $(nPrevious).bind( 'selectstart', function () { return false; } );
+ * $(nNext).bind( 'selectstart', function () { return false; } );
+ * $(nLast).bind( 'selectstart', function () { return false; } );
+ * },
+ *
+ * "fnUpdate": function ( oSettings, fnCallbackDraw ) {
+ * if ( !oSettings.aanFeatures.p ) {
+ * return;
+ * }
+ *
+ * // Loop over each instance of the pager
+ * var an = oSettings.aanFeatures.p;
+ * for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {
+ * var buttons = an[i].getElementsByTagName('span');
+ * if ( oSettings._iDisplayStart === 0 ) {
+ * buttons[0].className = "paginate_disabled_previous";
+ * buttons[1].className = "paginate_disabled_previous";
+ * }
+ * else {
+ * buttons[0].className = "paginate_enabled_previous";
+ * buttons[1].className = "paginate_enabled_previous";
+ * }
+ *
+ * if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {
+ * buttons[2].className = "paginate_disabled_next";
+ * buttons[3].className = "paginate_disabled_next";
+ * }
+ * else {
+ * buttons[2].className = "paginate_enabled_next";
+ * buttons[3].className = "paginate_enabled_next";
+ * }
+ * }
+ * }
+ * };
+ */
+ "oPagination": {},
+
+
+ /**
+ * Sorting plug-in methods - Sorting in DataTables is based on the detected type of the
+ * data column (you can add your own type detection functions, or override automatic
+ * detection using sType). With this specific type given to the column, DataTables will
+ * apply the required sort from the functions in the object. Each sort type must provide
+ * two mandatory methods, one each for ascending and descending sorting, and can optionally
+ * provide a pre-formatting method that will help speed up sorting by allowing DataTables
+ * to pre-format the sort data only once (rather than every time the actual sort functions
+ * are run). The two sorting functions are typical Javascript sort methods:
+ * <ul>
+ * <li>
+ * Function input parameters:
+ * <ul>
+ * <li>{*} Data to compare to the second parameter</li>
+ * <li>{*} Data to compare to the first parameter</li>
+ * </ul>
+ * </li>
+ * <li>
+ * Function return:
+ * <ul>
+ * <li>{int} Sorting match: <0 if first parameter should be sorted lower than
+ * the second parameter, ===0 if the two parameters are equal and >0 if
+ * the first parameter should be sorted height than the second parameter.</li>
+ * </ul>
+ * </il>
+ * </ul>
+ * @type object
+ * @default {}
+ *
+ * @example
+ * // Case-sensitive string sorting, with no pre-formatting method
+ * $.extend( $.fn.dataTableExt.oSort, {
+ * "string-case-asc": function(x,y) {
+ * return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ * },
+ * "string-case-desc": function(x,y) {
+ * return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+ * }
+ * } );
+ *
+ * @example
+ * // Case-insensitive string sorting, with pre-formatting
+ * $.extend( $.fn.dataTableExt.oSort, {
+ * "string-pre": function(x) {
+ * return x.toLowerCase();
+ * },
+ * "string-asc": function(x,y) {
+ * return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ * },
+ * "string-desc": function(x,y) {
+ * return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+ * }
+ * } );
+ */
+ "oSort": {},
+
+
+ /**
+ * Version string for plug-ins to check compatibility. Allowed format is
+ * a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
+ * e are optional
+ * @type string
+ * @default Version number
+ */
+ "sVersion": DataTable.version,
+
+
+ /**
+ * How should DataTables report an error. Can take the value 'alert' or 'throw'
+ * @type string
+ * @default alert
+ */
+ "sErrMode": "alert",
+
+
+ /**
+ * Store information for DataTables to access globally about other instances
+ * @namespace
+ * @private
+ */
+ "_oExternConfig": {
+ /* int:iNextUnique - next unique number for an instance */
+ "iNextUnique": 0
+ }
+ };
+
+
+
+
+ /**
+ * Template object for the way in which DataTables holds information about
+ * search information for the global filter and individual column filters.
+ * @namespace
+ */
+ DataTable.models.oSearch = {
+ /**
+ * Flag to indicate if the filtering should be case insensitive or not
+ * @type boolean
+ * @default true
+ */
+ "bCaseInsensitive": true,
+
+ /**
+ * Applied search term
+ * @type string
+ * @default <i>Empty string</i>
+ */
+ "sSearch": "",
+
+ /**
+ * Flag to indicate if the search term should be interpreted as a
+ * regular expression (true) or not (false) and therefore and special
+ * regex characters escaped.
+ * @type boolean
+ * @default false
+ */
+ "bRegex": false,
+
+ /**
+ * Flag to indicate if DataTables is to use its smart filtering or not.
+ * @type boolean
+ * @default true
+ */
+ "bSmart": true
+ };
+
+
+
+
+ /**
+ * Template object for the way in which DataTables holds information about
+ * each individual row. This is the object format used for the settings
+ * aoData array.
+ * @namespace
+ */
+ DataTable.models.oRow = {
+ /**
+ * TR element for the row
+ * @type node
+ * @default null
+ */
+ "nTr": null,
+
+ /**
+ * Data object from the original data source for the row. This is either
+ * an array if using the traditional form of DataTables, or an object if
+ * using mData options. The exact type will depend on the passed in
+ * data from the data source, or will be an array if using DOM a data
+ * source.
+ * @type array|object
+ * @default []
+ */
+ "_aData": [],
+
+ /**
+ * Sorting data cache - this array is ostensibly the same length as the
+ * number of columns (although each index is generated only as it is
+ * needed), and holds the data that is used for sorting each column in the
+ * row. We do this cache generation at the start of the sort in order that
+ * the formatting of the sort data need be done only once for each cell
+ * per sort. This array should not be read from or written to by anything
+ * other than the master sorting methods.
+ * @type array
+ * @default []
+ * @private
+ */
+ "_aSortData": [],
+
+ /**
+ * Array of TD elements that are cached for hidden rows, so they can be
+ * reinserted into the table if a column is made visible again (or to act
+ * as a store if a column is made hidden). Only hidden columns have a
+ * reference in the array. For non-hidden columns the value is either
+ * undefined or null.
+ * @type array nodes
+ * @default []
+ * @private
+ */
+ "_anHidden": [],
+
+ /**
+ * Cache of the class name that DataTables has applied to the row, so we
+ * can quickly look at this variable rather than needing to do a DOM check
+ * on className for the nTr property.
+ * @type string
+ * @default <i>Empty string</i>
+ * @private
+ */
+ "_sRowStripe": ""
+ };
+
+
+
+ /**
+ * Template object for the column information object in DataTables. This object
+ * is held in the settings aoColumns array and contains all the information that
+ * DataTables needs about each individual column.
+ *
+ * Note that this object is related to {@link DataTable.defaults.columns}
+ * but this one is the internal data store for DataTables's cache of columns.
+ * It should NOT be manipulated outside of DataTables. Any configuration should
+ * be done through the initialisation options.
+ * @namespace
+ */
+ DataTable.models.oColumn = {
+ /**
+ * A list of the columns that sorting should occur on when this column
+ * is sorted. That this property is an array allows multi-column sorting
+ * to be defined for a column (for example first name / last name columns
+ * would benefit from this). The values are integers pointing to the
+ * columns to be sorted on (typically it will be a single integer pointing
+ * at itself, but that doesn't need to be the case).
+ * @type array
+ */
+ "aDataSort": null,
+
+ /**
+ * Define the sorting directions that are applied to the column, in sequence
+ * as the column is repeatedly sorted upon - i.e. the first value is used
+ * as the sorting direction when the column if first sorted (clicked on).
+ * Sort it again (click again) and it will move on to the next index.
+ * Repeat until loop.
+ * @type array
+ */
+ "asSorting": null,
+
+ /**
+ * Flag to indicate if the column is searchable, and thus should be included
+ * in the filtering or not.
+ * @type boolean
+ */
+ "bSearchable": null,
+
+ /**
+ * Flag to indicate if the column is sortable or not.
+ * @type boolean
+ */
+ "bSortable": null,
+
+ /**
+ * <code>Deprecated</code> When using fnRender, you have two options for what
+ * to do with the data, and this property serves as the switch. Firstly, you
+ * can have the sorting and filtering use the rendered value (true - default),
+ * or you can have the sorting and filtering us the original value (false).
+ *
+ * Please note that this option has now been deprecated and will be removed
+ * in the next version of DataTables. Please use mRender / mData rather than
+ * fnRender.
+ * @type boolean
+ * @deprecated
+ */
+ "bUseRendered": null,
+
+ /**
+ * Flag to indicate if the column is currently visible in the table or not
+ * @type boolean
+ */
+ "bVisible": null,
+
+ /**
+ * Flag to indicate to the type detection method if the automatic type
+ * detection should be used, or if a column type (sType) has been specified
+ * @type boolean
+ * @default true
+ * @private
+ */
+ "_bAutoType": true,
+
+ /**
+ * Developer definable function that is called whenever a cell is created (Ajax source,
+ * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+ * allowing you to modify the DOM element (add background colour for example) when the
+ * element is available.
+ * @type function
+ * @param {element} nTd The TD node that has been created
+ * @param {*} sData The Data for the cell
+ * @param {array|object} oData The data for the whole row
+ * @param {int} iRow The row index for the aoData data store
+ * @default null
+ */
+ "fnCreatedCell": null,
+
+ /**
+ * Function to get data from a cell in a column. You should <b>never</b>
+ * access data directly through _aData internally in DataTables - always use
+ * the method attached to this property. It allows mData to function as
+ * required. This function is automatically assigned by the column
+ * initialisation method
+ * @type function
+ * @param {array|object} oData The data array/object for the array
+ * (i.e. aoData[]._aData)
+ * @param {string} sSpecific The specific data type you want to get -
+ * 'display', 'type' 'filter' 'sort'
+ * @returns {*} The data for the cell from the given row's data
+ * @default null
+ */
+ "fnGetData": null,
+
+ /**
+ * <code>Deprecated</code> Custom display function that will be called for the
+ * display of each cell in this column.
+ *
+ * Please note that this option has now been deprecated and will be removed
+ * in the next version of DataTables. Please use mRender / mData rather than
+ * fnRender.
+ * @type function
+ * @param {object} o Object with the following parameters:
+ * @param {int} o.iDataRow The row in aoData
+ * @param {int} o.iDataColumn The column in question
+ * @param {array} o.aData The data for the row in question
+ * @param {object} o.oSettings The settings object for this DataTables instance
+ * @returns {string} The string you which to use in the display
+ * @default null
+ * @deprecated
+ */
+ "fnRender": null,
+
+ /**
+ * Function to set data for a cell in the column. You should <b>never</b>
+ * set the data directly to _aData internally in DataTables - always use
+ * this method. It allows mData to function as required. This function
+ * is automatically assigned by the column initialisation method
+ * @type function
+ * @param {array|object} oData The data array/object for the array
+ * (i.e. aoData[]._aData)
+ * @param {*} sValue Value to set
+ * @default null
+ */
+ "fnSetData": null,
+
+ /**
+ * Property to read the value for the cells in the column from the data
+ * source array / object. If null, then the default content is used, if a
+ * function is given then the return from the function is used.
+ * @type function|int|string|null
+ * @default null
+ */
+ "mData": null,
+
+ /**
+ * Partner property to mData which is used (only when defined) to get
+ * the data - i.e. it is basically the same as mData, but without the
+ * 'set' option, and also the data fed to it is the result from mData.
+ * This is the rendering method to match the data method of mData.
+ * @type function|int|string|null
+ * @default null
+ */
+ "mRender": null,
+
+ /**
+ * Unique header TH/TD element for this column - this is what the sorting
+ * listener is attached to (if sorting is enabled.)
+ * @type node
+ * @default null
+ */
+ "nTh": null,
+
+ /**
+ * Unique footer TH/TD element for this column (if there is one). Not used
+ * in DataTables as such, but can be used for plug-ins to reference the
+ * footer for each column.
+ * @type node
+ * @default null
+ */
+ "nTf": null,
+
+ /**
+ * The class to apply to all TD elements in the table's TBODY for the column
+ * @type string
+ * @default null
+ */
+ "sClass": null,
+
+ /**
+ * When DataTables calculates the column widths to assign to each column,
+ * it finds the longest string in each column and then constructs a
+ * temporary table and reads the widths from that. The problem with this
+ * is that "mmm" is much wider then "iiii", but the latter is a longer
+ * string - thus the calculation can go wrong (doing it properly and putting
+ * it into an DOM object and measuring that is horribly(!) slow). Thus as
+ * a "work around" we provide this option. It will append its value to the
+ * text that is found to be the longest string for the column - i.e. padding.
+ * @type string
+ */
+ "sContentPadding": null,
+
+ /**
+ * Allows a default value to be given for a column's data, and will be used
+ * whenever a null data source is encountered (this can be because mData
+ * is set to null, or because the data source itself is null).
+ * @type string
+ * @default null
+ */
+ "sDefaultContent": null,
+
+ /**
+ * Name for the column, allowing reference to the column by name as well as
+ * by index (needs a lookup to work by name).
+ * @type string
+ */
+ "sName": null,
+
+ /**
+ * Custom sorting data type - defines which of the available plug-ins in
+ * afnSortData the custom sorting will use - if any is defined.
+ * @type string
+ * @default std
+ */
+ "sSortDataType": 'std',
+
+ /**
+ * Class to be applied to the header element when sorting on this column
+ * @type string
+ * @default null
+ */
+ "sSortingClass": null,
+
+ /**
+ * Class to be applied to the header element when sorting on this column -
+ * when jQuery UI theming is used.
+ * @type string
+ * @default null
+ */
+ "sSortingClassJUI": null,
+
+ /**
+ * Title of the column - what is seen in the TH element (nTh).
+ * @type string
+ */
+ "sTitle": null,
+
+ /**
+ * Column sorting and filtering type
+ * @type string
+ * @default null
+ */
+ "sType": null,
+
+ /**
+ * Width of the column
+ * @type string
+ * @default null
+ */
+ "sWidth": null,
+
+ /**
+ * Width of the column when it was first "encountered"
+ * @type string
+ * @default null
+ */
+ "sWidthOrig": null
+ };
+
+
+
+ /**
+ * Initialisation options that can be given to DataTables at initialisation
+ * time.
+ * @namespace
+ */
+ DataTable.defaults = {
+ /**
+ * An array of data to use for the table, passed in at initialisation which
+ * will be used in preference to any data which is already in the DOM. This is
+ * particularly useful for constructing tables purely in Javascript, for
+ * example with a custom Ajax call.
+ * @type array
+ * @default null
+ * @dtopt Option
+ *
+ * @example
+ * // Using a 2D array data source
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "aaData": [
+ * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
+ * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
+ * ],
+ * "aoColumns": [
+ * { "sTitle": "Engine" },
+ * { "sTitle": "Browser" },
+ * { "sTitle": "Platform" },
+ * { "sTitle": "Version" },
+ * { "sTitle": "Grade" }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using an array of objects as a data source (mData)
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "aaData": [
+ * {
+ * "engine": "Trident",
+ * "browser": "Internet Explorer 4.0",
+ * "platform": "Win 95+",
+ * "version": 4,
+ * "grade": "X"
+ * },
+ * {
+ * "engine": "Trident",
+ * "browser": "Internet Explorer 5.0",
+ * "platform": "Win 95+",
+ * "version": 5,
+ * "grade": "C"
+ * }
+ * ],
+ * "aoColumns": [
+ * { "sTitle": "Engine", "mData": "engine" },
+ * { "sTitle": "Browser", "mData": "browser" },
+ * { "sTitle": "Platform", "mData": "platform" },
+ * { "sTitle": "Version", "mData": "version" },
+ * { "sTitle": "Grade", "mData": "grade" }
+ * ]
+ * } );
+ * } );
+ */
+ "aaData": null,
+
+
+ /**
+ * If sorting is enabled, then DataTables will perform a first pass sort on
+ * initialisation. You can define which column(s) the sort is performed upon,
+ * and the sorting direction, with this variable. The aaSorting array should
+ * contain an array for each column to be sorted initially containing the
+ * column's index and a direction string ('asc' or 'desc').
+ * @type array
+ * @default [[0,'asc']]
+ * @dtopt Option
+ *
+ * @example
+ * // Sort by 3rd column first, and then 4th column
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aaSorting": [[2,'asc'], [3,'desc']]
+ * } );
+ * } );
+ *
+ * // No initial sorting
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aaSorting": []
+ * } );
+ * } );
+ */
+ "aaSorting": [[0,'asc']],
+
+
+ /**
+ * This parameter is basically identical to the aaSorting parameter, but
+ * cannot be overridden by user interaction with the table. What this means
+ * is that you could have a column (visible or hidden) which the sorting will
+ * always be forced on first - any sorting after that (from the user) will
+ * then be performed as required. This can be useful for grouping rows
+ * together.
+ * @type array
+ * @default null
+ * @dtopt Option
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aaSortingFixed": [[0,'asc']]
+ * } );
+ * } )
+ */
+ "aaSortingFixed": null,
+
+
+ /**
+ * This parameter allows you to readily specify the entries in the length drop
+ * down menu that DataTables shows when pagination is enabled. It can be
+ * either a 1D array of options which will be used for both the displayed
+ * option and the value, or a 2D array which will use the array in the first
+ * position as the value, and the array in the second position as the
+ * displayed options (useful for language strings such as 'All').
+ * @type array
+ * @default [ 10, 25, 50, 100 ]
+ * @dtopt Option
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
+ * } );
+ * } );
+ *
+ * @example
+ * // Setting the default display length as well as length menu
+ * // This is likely to be wanted if you remove the '10' option which
+ * // is the iDisplayLength default.
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "iDisplayLength": 25,
+ * "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]]
+ * } );
+ * } );
+ */
+ "aLengthMenu": [ 10, 25, 50, 100 ],
+
+
+ /**
+ * The aoColumns option in the initialisation parameter allows you to define
+ * details about the way individual columns behave. For a full list of
+ * column options that can be set, please see
+ * {@link DataTable.defaults.columns}. Note that if you use aoColumns to
+ * define your columns, you must have an entry in the array for every single
+ * column that you have in your table (these can be null if you don't which
+ * to specify any options).
+ * @member
+ */
+ "aoColumns": null,
+
+ /**
+ * Very similar to aoColumns, aoColumnDefs allows you to target a specific
+ * column, multiple columns, or all columns, using the aTargets property of
+ * each object in the array. This allows great flexibility when creating
+ * tables, as the aoColumnDefs arrays can be of any length, targeting the
+ * columns you specifically want. aoColumnDefs may use any of the column
+ * options available: {@link DataTable.defaults.columns}, but it _must_
+ * have aTargets defined in each object in the array. Values in the aTargets
+ * array may be:
+ * <ul>
+ * <li>a string - class name will be matched on the TH for the column</li>
+ * <li>0 or a positive integer - column index counting from the left</li>
+ * <li>a negative integer - column index counting from the right</li>
+ * <li>the string "_all" - all columns (i.e. assign a default)</li>
+ * </ul>
+ * @member
+ */
+ "aoColumnDefs": null,
+
+
+ /**
+ * Basically the same as oSearch, this parameter defines the individual column
+ * filtering state at initialisation time. The array must be of the same size
+ * as the number of columns, and each element be an object with the parameters
+ * "sSearch" and "bEscapeRegex" (the latter is optional). 'null' is also
+ * accepted and the default will be used.
+ * @type array
+ * @default []
+ * @dtopt Option
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoSearchCols": [
+ * null,
+ * { "sSearch": "My filter" },
+ * null,
+ * { "sSearch": "^[0-9]", "bEscapeRegex": false }
+ * ]
+ * } );
+ * } )
+ */
+ "aoSearchCols": [],
+
+
+ /**
+ * An array of CSS classes that should be applied to displayed rows. This
+ * array may be of any length, and DataTables will apply each class
+ * sequentially, looping when required.
+ * @type array
+ * @default null <i>Will take the values determined by the oClasses.sStripe*
+ * options</i>
+ * @dtopt Option
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "asStripeClasses": [ 'strip1', 'strip2', 'strip3' ]
+ * } );
+ * } )
+ */
+ "asStripeClasses": null,
+
+
+ /**
+ * Enable or disable automatic column width calculation. This can be disabled
+ * as an optimisation (it takes some time to calculate the widths) if the
+ * tables widths are passed in using aoColumns.
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bAutoWidth": false
+ * } );
+ * } );
+ */
+ "bAutoWidth": true,
+
+
+ /**
+ * Deferred rendering can provide DataTables with a huge speed boost when you
+ * are using an Ajax or JS data source for the table. This option, when set to
+ * true, will cause DataTables to defer the creation of the table elements for
+ * each row until they are needed for a draw - saving a significant amount of
+ * time.
+ * @type boolean
+ * @default false
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "sAjaxSource": "sources/arrays.txt",
+ * "bDeferRender": true
+ * } );
+ * } );
+ */
+ "bDeferRender": false,
+
+
+ /**
+ * Replace a DataTable which matches the given selector and replace it with
+ * one which has the properties of the new initialisation object passed. If no
+ * table matches the selector, then the new DataTable will be constructed as
+ * per normal.
+ * @type boolean
+ * @default false
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sScrollY": "200px",
+ * "bPaginate": false
+ * } );
+ *
+ * // Some time later....
+ * $('#example').dataTable( {
+ * "bFilter": false,
+ * "bDestroy": true
+ * } );
+ * } );
+ */
+ "bDestroy": false,
+
+
+ /**
+ * Enable or disable filtering of data. Filtering in DataTables is "smart" in
+ * that it allows the end user to input multiple words (space separated) and
+ * will match a row containing those words, even if not in the order that was
+ * specified (this allow matching across multiple columns). Note that if you
+ * wish to use filtering in DataTables this must remain 'true' - to remove the
+ * default filtering input box and retain filtering abilities, please use
+ * {@link DataTable.defaults.sDom}.
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bFilter": false
+ * } );
+ * } );
+ */
+ "bFilter": true,
+
+
+ /**
+ * Enable or disable the table information display. This shows information
+ * about the data that is currently visible on the page, including information
+ * about filtered data if that action is being performed.
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bInfo": false
+ * } );
+ * } );
+ */
+ "bInfo": true,
+
+
+ /**
+ * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some
+ * slightly different and additional mark-up from what DataTables has
+ * traditionally used).
+ * @type boolean
+ * @default false
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bJQueryUI": true
+ * } );
+ * } );
+ */
+ "bJQueryUI": false,
+
+
+ /**
+ * Allows the end user to select the size of a formatted page from a select
+ * menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bLengthChange": false
+ * } );
+ * } );
+ */
+ "bLengthChange": true,
+
+
+ /**
+ * Enable or disable pagination.
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bPaginate": false
+ * } );
+ * } );
+ */
+ "bPaginate": true,
+
+
+ /**
+ * Enable or disable the display of a 'processing' indicator when the table is
+ * being processed (e.g. a sort). This is particularly useful for tables with
+ * large amounts of data where it can take a noticeable amount of time to sort
+ * the entries.
+ * @type boolean
+ * @default false
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bProcessing": true
+ * } );
+ * } );
+ */
+ "bProcessing": false,
+
+
+ /**
+ * Retrieve the DataTables object for the given selector. Note that if the
+ * table has already been initialised, this parameter will cause DataTables
+ * to simply return the object that has already been set up - it will not take
+ * account of any changes you might have made to the initialisation object
+ * passed to DataTables (setting this parameter to true is an acknowledgement
+ * that you understand this). bDestroy can be used to reinitialise a table if
+ * you need.
+ * @type boolean
+ * @default false
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * initTable();
+ * tableActions();
+ * } );
+ *
+ * function initTable ()
+ * {
+ * return $('#example').dataTable( {
+ * "sScrollY": "200px",
+ * "bPaginate": false,
+ * "bRetrieve": true
+ * } );
+ * }
+ *
+ * function tableActions ()
+ * {
+ * var oTable = initTable();
+ * // perform API operations with oTable
+ * }
+ */
+ "bRetrieve": false,
+
+
+ /**
+ * Indicate if DataTables should be allowed to set the padding / margin
+ * etc for the scrolling header elements or not. Typically you will want
+ * this.
+ * @type boolean
+ * @default true
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bScrollAutoCss": false,
+ * "sScrollY": "200px"
+ * } );
+ * } );
+ */
+ "bScrollAutoCss": true,
+
+
+ /**
+ * When vertical (y) scrolling is enabled, DataTables will force the height of
+ * the table's viewport to the given height at all times (useful for layout).
+ * However, this can look odd when filtering data down to a small data set,
+ * and the footer is left "floating" further down. This parameter (when
+ * enabled) will cause DataTables to collapse the table's viewport down when
+ * the result set will fit within the given Y height.
+ * @type boolean
+ * @default false
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sScrollY": "200",
+ * "bScrollCollapse": true
+ * } );
+ * } );
+ */
+ "bScrollCollapse": false,
+
+
+ /**
+ * Enable infinite scrolling for DataTables (to be used in combination with
+ * sScrollY). Infinite scrolling means that DataTables will continually load
+ * data as a user scrolls through a table, which is very useful for large
+ * dataset. This cannot be used with pagination, which is automatically
+ * disabled. Note - the Scroller extra for DataTables is recommended in
+ * in preference to this option.
+ * @type boolean
+ * @default false
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bScrollInfinite": true,
+ * "bScrollCollapse": true,
+ * "sScrollY": "200px"
+ * } );
+ * } );
+ */
+ "bScrollInfinite": false,
+
+
+ /**
+ * Configure DataTables to use server-side processing. Note that the
+ * sAjaxSource parameter must also be given in order to give DataTables a
+ * source to obtain the required data for each draw.
+ * @type boolean
+ * @default false
+ * @dtopt Features
+ * @dtopt Server-side
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bServerSide": true,
+ * "sAjaxSource": "xhr.php"
+ * } );
+ * } );
+ */
+ "bServerSide": false,
+
+
+ /**
+ * Enable or disable sorting of columns. Sorting of individual columns can be
+ * disabled by the "bSortable" option for each column.
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bSort": false
+ * } );
+ * } );
+ */
+ "bSort": true,
+
+
+ /**
+ * Allows control over whether DataTables should use the top (true) unique
+ * cell that is found for a single column, or the bottom (false - default).
+ * This is useful when using complex headers.
+ * @type boolean
+ * @default false
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bSortCellsTop": true
+ * } );
+ * } );
+ */
+ "bSortCellsTop": false,
+
+
+ /**
+ * Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and
+ * 'sorting_3' to the columns which are currently being sorted on. This is
+ * presented as a feature switch as it can increase processing time (while
+ * classes are removed and added) so for large data sets you might want to
+ * turn this off.
+ * @type boolean
+ * @default true
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bSortClasses": false
+ * } );
+ * } );
+ */
+ "bSortClasses": true,
+
+
+ /**
+ * Enable or disable state saving. When enabled a cookie will be used to save
+ * table display information such as pagination information, display length,
+ * filtering and sorting. As such when the end user reloads the page the
+ * display display will match what thy had previously set up.
+ * @type boolean
+ * @default false
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "bStateSave": true
+ * } );
+ * } );
+ */
+ "bStateSave": false,
+
+
+ /**
+ * Customise the cookie and / or the parameters being stored when using
+ * DataTables with state saving enabled. This function is called whenever
+ * the cookie is modified, and it expects a fully formed cookie string to be
+ * returned. Note that the data object passed in is a Javascript object which
+ * must be converted to a string (JSON.stringify for example).
+ * @type function
+ * @param {string} sName Name of the cookie defined by DataTables
+ * @param {object} oData Data to be stored in the cookie
+ * @param {string} sExpires Cookie expires string
+ * @param {string} sPath Path of the cookie to set
+ * @returns {string} Cookie formatted string (which should be encoded by
+ * using encodeURIComponent())
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function () {
+ * $('#example').dataTable( {
+ * "fnCookieCallback": function (sName, oData, sExpires, sPath) {
+ * // Customise oData or sName or whatever else here
+ * return sName + "="+JSON.stringify(oData)+"; expires=" + sExpires +"; path=" + sPath;
+ * }
+ * } );
+ * } );
+ */
+ "fnCookieCallback": null,
+
+
+ /**
+ * This function is called when a TR element is created (and all TD child
+ * elements have been inserted), or registered if using a DOM source, allowing
+ * manipulation of the TR element (adding classes etc).
+ * @type function
+ * @param {node} nRow "TR" element for the current row
+ * @param {array} aData Raw data array for this row
+ * @param {int} iDataIndex The index of this row in aoData
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnCreatedRow": function( nRow, aData, iDataIndex ) {
+ * // Bold the grade for all 'A' grade browsers
+ * if ( aData[4] == "A" )
+ * {
+ * $('td:eq(4)', nRow).html( '<b>A</b>' );
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "fnCreatedRow": null,
+
+
+ /**
+ * This function is called on every 'draw' event, and allows you to
+ * dynamically modify any aspect you want about the created DOM.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnDrawCallback": function( oSettings ) {
+ * alert( 'DataTables has redrawn the table' );
+ * }
+ * } );
+ * } );
+ */
+ "fnDrawCallback": null,
+
+
+ /**
+ * Identical to fnHeaderCallback() but for the table footer this function
+ * allows you to modify the table footer on every 'draw' even.
+ * @type function
+ * @param {node} nFoot "TR" element for the footer
+ * @param {array} aData Full table data (as derived from the original HTML)
+ * @param {int} iStart Index for the current display starting point in the
+ * display array
+ * @param {int} iEnd Index for the current display ending point in the
+ * display array
+ * @param {array int} aiDisplay Index array to translate the visual position
+ * to the full data array
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnFooterCallback": function( nFoot, aData, iStart, iEnd, aiDisplay ) {
+ * nFoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+iStart;
+ * }
+ * } );
+ * } )
+ */
+ "fnFooterCallback": null,
+
+
+ /**
+ * When rendering large numbers in the information element for the table
+ * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
+ * to have a comma separator for the 'thousands' units (e.g. 1 million is
+ * rendered as "1,000,000") to help readability for the end user. This
+ * function will override the default method DataTables uses.
+ * @type function
+ * @member
+ * @param {int} iIn number to be formatted
+ * @returns {string} formatted string for DataTables to show the number
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnFormatNumber": function ( iIn ) {
+ * if ( iIn &lt; 1000 ) {
+ * return iIn;
+ * } else {
+ * var
+ * s=(iIn+""),
+ * a=s.split(""), out="",
+ * iLen=s.length;
+ *
+ * for ( var i=0 ; i&lt;iLen ; i++ ) {
+ * if ( i%3 === 0 &amp;&amp; i !== 0 ) {
+ * out = "'"+out;
+ * }
+ * out = a[iLen-i-1]+out;
+ * }
+ * }
+ * return out;
+ * };
+ * } );
+ * } );
+ */
+ "fnFormatNumber": function ( iIn ) {
+ if ( iIn < 1000 )
+ {
+ // A small optimisation for what is likely to be the majority of use cases
+ return iIn;
+ }
+
+ var s=(iIn+""), a=s.split(""), out="", iLen=s.length;
+
+ for ( var i=0 ; i<iLen ; i++ )
+ {
+ if ( i%3 === 0 && i !== 0 )
+ {
+ out = this.oLanguage.sInfoThousands+out;
+ }
+ out = a[iLen-i-1]+out;
+ }
+ return out;
+ },
+
+
+ /**
+ * This function is called on every 'draw' event, and allows you to
+ * dynamically modify the header row. This can be used to calculate and
+ * display useful information about the table.
+ * @type function
+ * @param {node} nHead "TR" element for the header
+ * @param {array} aData Full table data (as derived from the original HTML)
+ * @param {int} iStart Index for the current display starting point in the
+ * display array
+ * @param {int} iEnd Index for the current display ending point in the
+ * display array
+ * @param {array int} aiDisplay Index array to translate the visual position
+ * to the full data array
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnHeaderCallback": function( nHead, aData, iStart, iEnd, aiDisplay ) {
+ * nHead.getElementsByTagName('th')[0].innerHTML = "Displaying "+(iEnd-iStart)+" records";
+ * }
+ * } );
+ * } )
+ */
+ "fnHeaderCallback": null,
+
+
+ /**
+ * The information element can be used to convey information about the current
+ * state of the table. Although the internationalisation options presented by
+ * DataTables are quite capable of dealing with most customisations, there may
+ * be times where you wish to customise the string further. This callback
+ * allows you to do exactly that.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @param {int} iStart Starting position in data for the draw
+ * @param {int} iEnd End position in data for the draw
+ * @param {int} iMax Total number of rows in the table (regardless of
+ * filtering)
+ * @param {int} iTotal Total number of rows in the data set, after filtering
+ * @param {string} sPre The string that DataTables has formatted using it's
+ * own rules
+ * @returns {string} The string to be displayed in the information element.
+ * @dtopt Callbacks
+ *
+ * @example
+ * $('#example').dataTable( {
+ * "fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
+ * return iStart +" to "+ iEnd;
+ * }
+ * } );
+ */
+ "fnInfoCallback": null,
+
+
+ /**
+ * Called when the table has been initialised. Normally DataTables will
+ * initialise sequentially and there will be no need for this function,
+ * however, this does not hold true when using external language information
+ * since that is obtained using an async XHR call.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The JSON object request from the server - only
+ * present if client-side Ajax sourced data is used
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnInitComplete": function(oSettings, json) {
+ * alert( 'DataTables has finished its initialisation.' );
+ * }
+ * } );
+ * } )
+ */
+ "fnInitComplete": null,
+
+
+ /**
+ * Called at the very start of each table draw and can be used to cancel the
+ * draw by returning false, any other return (including undefined) results in
+ * the full draw occurring).
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @returns {boolean} False will cancel the draw, anything else (including no
+ * return) will allow it to complete.
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnPreDrawCallback": function( oSettings ) {
+ * if ( $('#test').val() == 1 ) {
+ * return false;
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "fnPreDrawCallback": null,
+
+
+ /**
+ * This function allows you to 'post process' each row after it have been
+ * generated for each table draw, but before it is rendered on screen. This
+ * function might be used for setting the row class name etc.
+ * @type function
+ * @param {node} nRow "TR" element for the current row
+ * @param {array} aData Raw data array for this row
+ * @param {int} iDisplayIndex The display index for the current table draw
+ * @param {int} iDisplayIndexFull The index of the data in the full list of
+ * rows (after filtering)
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
+ * // Bold the grade for all 'A' grade browsers
+ * if ( aData[4] == "A" )
+ * {
+ * $('td:eq(4)', nRow).html( '<b>A</b>' );
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "fnRowCallback": null,
+
+
+ /**
+ * This parameter allows you to override the default function which obtains
+ * the data from the server ($.getJSON) so something more suitable for your
+ * application. For example you could use POST data, or pull information from
+ * a Gears or AIR database.
+ * @type function
+ * @member
+ * @param {string} sSource HTTP source to obtain the data from (sAjaxSource)
+ * @param {array} aoData A key/value pair object containing the data to send
+ * to the server
+ * @param {function} fnCallback to be called on completion of the data get
+ * process that will draw the data on the page.
+ * @param {object} oSettings DataTables settings object
+ * @dtopt Callbacks
+ * @dtopt Server-side
+ *
+ * @example
+ * // POST data to server
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bProcessing": true,
+ * "bServerSide": true,
+ * "sAjaxSource": "xhr.php",
+ * "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
+ * oSettings.jqXHR = $.ajax( {
+ * "dataType": 'json',
+ * "type": "POST",
+ * "url": sSource,
+ * "data": aoData,
+ * "success": fnCallback
+ * } );
+ * }
+ * } );
+ * } );
+ */
+ "fnServerData": function ( sUrl, aoData, fnCallback, oSettings ) {
+ oSettings.jqXHR = $.ajax( {
+ "url": sUrl,
+ "data": aoData,
+ "success": function (json) {
+ if ( json.sError ) {
+ oSettings.oApi._fnLog( oSettings, 0, json.sError );
+ }
+
+ $(oSettings.oInstance).trigger('xhr', [oSettings, json]);
+ fnCallback( json );
+ },
+ "dataType": "json",
+ "cache": false,
+ "type": oSettings.sServerMethod,
+ "error": function (xhr, error, thrown) {
+ if ( error == "parsererror" ) {
+ oSettings.oApi._fnLog( oSettings, 0, "DataTables warning: JSON data from "+
+ "server could not be parsed. This is caused by a JSON formatting error." );
+ }
+ }
+ } );
+ },
+
+
+ /**
+ * It is often useful to send extra data to the server when making an Ajax
+ * request - for example custom filtering information, and this callback
+ * function makes it trivial to send extra information to the server. The
+ * passed in parameter is the data set that has been constructed by
+ * DataTables, and you can add to this or modify it as you require.
+ * @type function
+ * @param {array} aoData Data array (array of objects which are name/value
+ * pairs) that has been constructed by DataTables and will be sent to the
+ * server. In the case of Ajax sourced data with server-side processing
+ * this will be an empty array, for server-side processing there will be a
+ * significant number of parameters!
+ * @returns {undefined} Ensure that you modify the aoData array passed in,
+ * as this is passed by reference.
+ * @dtopt Callbacks
+ * @dtopt Server-side
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bProcessing": true,
+ * "bServerSide": true,
+ * "sAjaxSource": "scripts/server_processing.php",
+ * "fnServerParams": function ( aoData ) {
+ * aoData.push( { "name": "more_data", "value": "my_value" } );
+ * }
+ * } );
+ * } );
+ */
+ "fnServerParams": null,
+
+
+ /**
+ * Load the table state. With this function you can define from where, and how, the
+ * state of a table is loaded. By default DataTables will load from its state saving
+ * cookie, but you might wish to use local storage (HTML5) or a server-side database.
+ * @type function
+ * @member
+ * @param {object} oSettings DataTables settings object
+ * @return {object} The DataTables state object to be loaded
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bStateSave": true,
+ * "fnStateLoad": function (oSettings) {
+ * var o;
+ *
+ * // Send an Ajax request to the server to get the data. Note that
+ * // this is a synchronous request.
+ * $.ajax( {
+ * "url": "/state_load",
+ * "async": false,
+ * "dataType": "json",
+ * "success": function (json) {
+ * o = json;
+ * }
+ * } );
+ *
+ * return o;
+ * }
+ * } );
+ * } );
+ */
+ "fnStateLoad": function ( oSettings ) {
+ var sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );
+ var oData;
+
+ try {
+ oData = (typeof $.parseJSON === 'function') ?
+ $.parseJSON(sData) : eval( '('+sData+')' );
+ } catch (e) {
+ oData = null;
+ }
+
+ return oData;
+ },
+
+
+ /**
+ * Callback which allows modification of the saved state prior to loading that state.
+ * This callback is called when the table is loading state from the stored data, but
+ * prior to the settings object being modified by the saved state. Note that for
+ * plug-in authors, you should use the 'stateLoadParams' event to load parameters for
+ * a plug-in.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @param {object} oData The state object that is to be loaded
+ * @dtopt Callbacks
+ *
+ * @example
+ * // Remove a saved filter, so filtering is never loaded
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bStateSave": true,
+ * "fnStateLoadParams": function (oSettings, oData) {
+ * oData.oSearch.sSearch = "";
+ * }
+ * } );
+ * } );
+ *
+ * @example
+ * // Disallow state loading by returning false
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bStateSave": true,
+ * "fnStateLoadParams": function (oSettings, oData) {
+ * return false;
+ * }
+ * } );
+ * } );
+ */
+ "fnStateLoadParams": null,
+
+
+ /**
+ * Callback that is called when the state has been loaded from the state saving method
+ * and the DataTables settings object has been modified as a result of the loaded state.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @param {object} oData The state object that was loaded
+ * @dtopt Callbacks
+ *
+ * @example
+ * // Show an alert with the filtering value that was saved
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bStateSave": true,
+ * "fnStateLoaded": function (oSettings, oData) {
+ * alert( 'Saved filter was: '+oData.oSearch.sSearch );
+ * }
+ * } );
+ * } );
+ */
+ "fnStateLoaded": null,
+
+
+ /**
+ * Save the table state. This function allows you to define where and how the state
+ * information for the table is stored - by default it will use a cookie, but you
+ * might want to use local storage (HTML5) or a server-side database.
+ * @type function
+ * @member
+ * @param {object} oSettings DataTables settings object
+ * @param {object} oData The state object to be saved
+ * @dtopt Callbacks
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bStateSave": true,
+ * "fnStateSave": function (oSettings, oData) {
+ * // Send an Ajax request to the server with the state object
+ * $.ajax( {
+ * "url": "/state_save",
+ * "data": oData,
+ * "dataType": "json",
+ * "method": "POST"
+ * "success": function () {}
+ * } );
+ * }
+ * } );
+ * } );
+ */
+ "fnStateSave": function ( oSettings, oData ) {
+ this.oApi._fnCreateCookie(
+ oSettings.sCookiePrefix+oSettings.sInstance,
+ this.oApi._fnJsonString(oData),
+ oSettings.iCookieDuration,
+ oSettings.sCookiePrefix,
+ oSettings.fnCookieCallback
+ );
+ },
+
+
+ /**
+ * Callback which allows modification of the state to be saved. Called when the table
+ * has changed state a new state save is required. This method allows modification of
+ * the state saving object prior to actually doing the save, including addition or
+ * other state properties or modification. Note that for plug-in authors, you should
+ * use the 'stateSaveParams' event to save parameters for a plug-in.
+ * @type function
+ * @param {object} oSettings DataTables settings object
+ * @param {object} oData The state object to be saved
+ * @dtopt Callbacks
+ *
+ * @example
+ * // Remove a saved filter, so filtering is never saved
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bStateSave": true,
+ * "fnStateSaveParams": function (oSettings, oData) {
+ * oData.oSearch.sSearch = "";
+ * }
+ * } );
+ * } );
+ */
+ "fnStateSaveParams": null,
+
+
+ /**
+ * Duration of the cookie which is used for storing session information. This
+ * value is given in seconds.
+ * @type int
+ * @default 7200 <i>(2 hours)</i>
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "iCookieDuration": 60*60*24; // 1 day
+ * } );
+ * } )
+ */
+ "iCookieDuration": 7200,
+
+
+ /**
+ * When enabled DataTables will not make a request to the server for the first
+ * page draw - rather it will use the data already on the page (no sorting etc
+ * will be applied to it), thus saving on an XHR at load time. iDeferLoading
+ * is used to indicate that deferred loading is required, but it is also used
+ * to tell DataTables how many records there are in the full table (allowing
+ * the information element and pagination to be displayed correctly). In the case
+ * where a filtering is applied to the table on initial load, this can be
+ * indicated by giving the parameter as an array, where the first element is
+ * the number of records available after filtering and the second element is the
+ * number of records without filtering (allowing the table information element
+ * to be shown correctly).
+ * @type int | array
+ * @default null
+ * @dtopt Options
+ *
+ * @example
+ * // 57 records available in the table, no filtering applied
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bServerSide": true,
+ * "sAjaxSource": "scripts/server_processing.php",
+ * "iDeferLoading": 57
+ * } );
+ * } );
+ *
+ * @example
+ * // 57 records after filtering, 100 without filtering (an initial filter applied)
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bServerSide": true,
+ * "sAjaxSource": "scripts/server_processing.php",
+ * "iDeferLoading": [ 57, 100 ],
+ * "oSearch": {
+ * "sSearch": "my_filter"
+ * }
+ * } );
+ * } );
+ */
+ "iDeferLoading": null,
+
+
+ /**
+ * Number of rows to display on a single page when using pagination. If
+ * feature enabled (bLengthChange) then the end user will be able to override
+ * this to a custom setting using a pop-up menu.
+ * @type int
+ * @default 10
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "iDisplayLength": 50
+ * } );
+ * } )
+ */
+ "iDisplayLength": 10,
+
+
+ /**
+ * Define the starting point for data display when using DataTables with
+ * pagination. Note that this parameter is the number of records, rather than
+ * the page number, so if you have 10 records per page and want to start on
+ * the third page, it should be "20".
+ * @type int
+ * @default 0
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "iDisplayStart": 20
+ * } );
+ * } )
+ */
+ "iDisplayStart": 0,
+
+
+ /**
+ * The scroll gap is the amount of scrolling that is left to go before
+ * DataTables will load the next 'page' of data automatically. You typically
+ * want a gap which is big enough that the scrolling will be smooth for the
+ * user, while not so large that it will load more data than need.
+ * @type int
+ * @default 100
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bScrollInfinite": true,
+ * "bScrollCollapse": true,
+ * "sScrollY": "200px",
+ * "iScrollLoadGap": 50
+ * } );
+ * } );
+ */
+ "iScrollLoadGap": 100,
+
+
+ /**
+ * By default DataTables allows keyboard navigation of the table (sorting, paging,
+ * and filtering) by adding a tabindex attribute to the required elements. This
+ * allows you to tab through the controls and press the enter key to activate them.
+ * The tabindex is default 0, meaning that the tab follows the flow of the document.
+ * You can overrule this using this parameter if you wish. Use a value of -1 to
+ * disable built-in keyboard navigation.
+ * @type int
+ * @default 0
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "iTabIndex": 1
+ * } );
+ * } );
+ */
+ "iTabIndex": 0,
+
+
+ /**
+ * All strings that DataTables uses in the user interface that it creates
+ * are defined in this object, allowing you to modified them individually or
+ * completely replace them all as required.
+ * @namespace
+ */
+ "oLanguage": {
+ /**
+ * Strings that are used for WAI-ARIA labels and controls only (these are not
+ * actually visible on the page, but will be read by screenreaders, and thus
+ * must be internationalised as well).
+ * @namespace
+ */
+ "oAria": {
+ /**
+ * ARIA label that is added to the table headers when the column may be
+ * sorted ascending by activing the column (click or return when focused).
+ * Note that the column header is prefixed to this string.
+ * @type string
+ * @default : activate to sort column ascending
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "oAria": {
+ * "sSortAscending": " - click/return to sort ascending"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sSortAscending": ": activate to sort column ascending",
+
+ /**
+ * ARIA label that is added to the table headers when the column may be
+ * sorted descending by activing the column (click or return when focused).
+ * Note that the column header is prefixed to this string.
+ * @type string
+ * @default : activate to sort column ascending
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "oAria": {
+ * "sSortDescending": " - click/return to sort descending"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sSortDescending": ": activate to sort column descending"
+ },
+
+ /**
+ * Pagination string used by DataTables for the two built-in pagination
+ * control types ("two_button" and "full_numbers")
+ * @namespace
+ */
+ "oPaginate": {
+ /**
+ * Text to use when using the 'full_numbers' type of pagination for the
+ * button to take the user to the first page.
+ * @type string
+ * @default First
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "oPaginate": {
+ * "sFirst": "First page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sFirst": "First",
+
+
+ /**
+ * Text to use when using the 'full_numbers' type of pagination for the
+ * button to take the user to the last page.
+ * @type string
+ * @default Last
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "oPaginate": {
+ * "sLast": "Last page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sLast": "Last",
+
+
+ /**
+ * Text to use for the 'next' pagination button (to take the user to the
+ * next page).
+ * @type string
+ * @default Next
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "oPaginate": {
+ * "sNext": "Next page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sNext": "Next",
+
+
+ /**
+ * Text to use for the 'previous' pagination button (to take the user to
+ * the previous page).
+ * @type string
+ * @default Previous
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "oPaginate": {
+ * "sPrevious": "Previous page"
+ * }
+ * }
+ * } );
+ * } );
+ */
+ "sPrevious": "Previous"
+ },
+
+ /**
+ * This string is shown in preference to sZeroRecords when the table is
+ * empty of data (regardless of filtering). Note that this is an optional
+ * parameter - if it is not given, the value of sZeroRecords will be used
+ * instead (either the default or given value).
+ * @type string
+ * @default No data available in table
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sEmptyTable": "No data available in table"
+ * }
+ * } );
+ * } );
+ */
+ "sEmptyTable": "No data available in table",
+
+
+ /**
+ * This string gives information to the end user about the information that
+ * is current on display on the page. The _START_, _END_ and _TOTAL_
+ * variables are all dynamically replaced as the table display updates, and
+ * can be freely moved or removed as the language requirements change.
+ * @type string
+ * @default Showing _START_ to _END_ of _TOTAL_ entries
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sInfo": "Got a total of _TOTAL_ entries to show (_START_ to _END_)"
+ * }
+ * } );
+ * } );
+ */
+ "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
+
+
+ /**
+ * Display information string for when the table is empty. Typically the
+ * format of this string should match sInfo.
+ * @type string
+ * @default Showing 0 to 0 of 0 entries
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sInfoEmpty": "No entries to show"
+ * }
+ * } );
+ * } );
+ */
+ "sInfoEmpty": "Showing 0 to 0 of 0 entries",
+
+
+ /**
+ * When a user filters the information in a table, this string is appended
+ * to the information (sInfo) to give an idea of how strong the filtering
+ * is. The variable _MAX_ is dynamically updated.
+ * @type string
+ * @default (filtered from _MAX_ total entries)
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sInfoFiltered": " - filtering from _MAX_ records"
+ * }
+ * } );
+ * } );
+ */
+ "sInfoFiltered": "(filtered from _MAX_ total entries)",
+
+
+ /**
+ * If can be useful to append extra information to the info string at times,
+ * and this variable does exactly that. This information will be appended to
+ * the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are
+ * being used) at all times.
+ * @type string
+ * @default <i>Empty string</i>
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sInfoPostFix": "All records shown are derived from real information."
+ * }
+ * } );
+ * } );
+ */
+ "sInfoPostFix": "",
+
+
+ /**
+ * DataTables has a build in number formatter (fnFormatNumber) which is used
+ * to format large numbers that are used in the table information. By
+ * default a comma is used, but this can be trivially changed to any
+ * character you wish with this parameter.
+ * @type string
+ * @default ,
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sInfoThousands": "'"
+ * }
+ * } );
+ * } );
+ */
+ "sInfoThousands": ",",
+
+
+ /**
+ * Detail the action that will be taken when the drop down menu for the
+ * pagination length option is changed. The '_MENU_' variable is replaced
+ * with a default select list of 10, 25, 50 and 100, and can be replaced
+ * with a custom select box if required.
+ * @type string
+ * @default Show _MENU_ entries
+ * @dtopt Language
+ *
+ * @example
+ * // Language change only
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sLengthMenu": "Display _MENU_ records"
+ * }
+ * } );
+ * } );
+ *
+ * @example
+ * // Language and options change
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sLengthMenu": 'Display <select>'+
+ * '<option value="10">10</option>'+
+ * '<option value="20">20</option>'+
+ * '<option value="30">30</option>'+
+ * '<option value="40">40</option>'+
+ * '<option value="50">50</option>'+
+ * '<option value="-1">All</option>'+
+ * '</select> records'
+ * }
+ * } );
+ * } );
+ */
+ "sLengthMenu": "Show _MENU_ entries",
+
+
+ /**
+ * When using Ajax sourced data and during the first draw when DataTables is
+ * gathering the data, this message is shown in an empty row in the table to
+ * indicate to the end user the the data is being loaded. Note that this
+ * parameter is not used when loading data by server-side processing, just
+ * Ajax sourced data with client-side processing.
+ * @type string
+ * @default Loading...
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sLoadingRecords": "Please wait - loading..."
+ * }
+ * } );
+ * } );
+ */
+ "sLoadingRecords": "Loading...",
+
+
+ /**
+ * Text which is displayed when the table is processing a user action
+ * (usually a sort command or similar).
+ * @type string
+ * @default Processing...
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sProcessing": "DataTables is currently busy"
+ * }
+ * } );
+ * } );
+ */
+ "sProcessing": "Processing...",
+
+
+ /**
+ * Details the actions that will be taken when the user types into the
+ * filtering input text box. The variable "_INPUT_", if used in the string,
+ * is replaced with the HTML text box for the filtering input allowing
+ * control over where it appears in the string. If "_INPUT_" is not given
+ * then the input box is appended to the string automatically.
+ * @type string
+ * @default Search:
+ * @dtopt Language
+ *
+ * @example
+ * // Input text box will be appended at the end automatically
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sSearch": "Filter records:"
+ * }
+ * } );
+ * } );
+ *
+ * @example
+ * // Specify where the filter should appear
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sSearch": "Apply filter _INPUT_ to table"
+ * }
+ * } );
+ * } );
+ */
+ "sSearch": "Search:",
+
+
+ /**
+ * All of the language information can be stored in a file on the
+ * server-side, which DataTables will look up if this parameter is passed.
+ * It must store the URL of the language file, which is in a JSON format,
+ * and the object has the same properties as the oLanguage object in the
+ * initialiser object (i.e. the above parameters). Please refer to one of
+ * the example language files to see how this works in action.
+ * @type string
+ * @default <i>Empty string - i.e. disabled</i>
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sUrl": "http://www.sprymedia.co.uk/dataTables/lang.txt"
+ * }
+ * } );
+ * } );
+ */
+ "sUrl": "",
+
+
+ /**
+ * Text shown inside the table records when the is no information to be
+ * displayed after filtering. sEmptyTable is shown when there is simply no
+ * information in the table at all (regardless of filtering).
+ * @type string
+ * @default No matching records found
+ * @dtopt Language
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oLanguage": {
+ * "sZeroRecords": "No records to display"
+ * }
+ * } );
+ * } );
+ */
+ "sZeroRecords": "No matching records found"
+ },
+
+
+ /**
+ * This parameter allows you to have define the global filtering state at
+ * initialisation time. As an object the "sSearch" parameter must be
+ * defined, but all other parameters are optional. When "bRegex" is true,
+ * the search string will be treated as a regular expression, when false
+ * (default) it will be treated as a straight string. When "bSmart"
+ * DataTables will use it's smart filtering methods (to word match at
+ * any point in the data), when false this will not be done.
+ * @namespace
+ * @extends DataTable.models.oSearch
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "oSearch": {"sSearch": "Initial search"}
+ * } );
+ * } )
+ */
+ "oSearch": $.extend( {}, DataTable.models.oSearch ),
+
+
+ /**
+ * By default DataTables will look for the property 'aaData' when obtaining
+ * data from an Ajax source or for server-side processing - this parameter
+ * allows that property to be changed. You can use Javascript dotted object
+ * notation to get a data source for multiple levels of nesting.
+ * @type string
+ * @default aaData
+ * @dtopt Options
+ * @dtopt Server-side
+ *
+ * @example
+ * // Get data from { "data": [...] }
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "sAjaxSource": "sources/data.txt",
+ * "sAjaxDataProp": "data"
+ * } );
+ * } );
+ *
+ * @example
+ * // Get data from { "data": { "inner": [...] } }
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "sAjaxSource": "sources/data.txt",
+ * "sAjaxDataProp": "data.inner"
+ * } );
+ * } );
+ */
+ "sAjaxDataProp": "aaData",
+
+
+ /**
+ * You can instruct DataTables to load data from an external source using this
+ * parameter (use aData if you want to pass data in you already have). Simply
+ * provide a url a JSON object can be obtained from. This object must include
+ * the parameter 'aaData' which is the data source for the table.
+ * @type string
+ * @default null
+ * @dtopt Options
+ * @dtopt Server-side
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sAjaxSource": "http://www.sprymedia.co.uk/dataTables/json.php"
+ * } );
+ * } )
+ */
+ "sAjaxSource": null,
+
+
+ /**
+ * This parameter can be used to override the default prefix that DataTables
+ * assigns to a cookie when state saving is enabled.
+ * @type string
+ * @default SpryMedia_DataTables_
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sCookiePrefix": "my_datatable_",
+ * } );
+ * } );
+ */
+ "sCookiePrefix": "SpryMedia_DataTables_",
+
+
+ /**
+ * This initialisation variable allows you to specify exactly where in the
+ * DOM you want DataTables to inject the various controls it adds to the page
+ * (for example you might want the pagination controls at the top of the
+ * table). DIV elements (with or without a custom class) can also be added to
+ * aid styling. The follow syntax is used:
+ * <ul>
+ * <li>The following options are allowed:
+ * <ul>
+ * <li>'l' - Length changing</li
+ * <li>'f' - Filtering input</li>
+ * <li>'t' - The table!</li>
+ * <li>'i' - Information</li>
+ * <li>'p' - Pagination</li>
+ * <li>'r' - pRocessing</li>
+ * </ul>
+ * </li>
+ * <li>The following constants are allowed:
+ * <ul>
+ * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
+ * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
+ * </ul>
+ * </li>
+ * <li>The following syntax is expected:
+ * <ul>
+ * <li>'&lt;' and '&gt;' - div elements</li>
+ * <li>'&lt;"class" and '&gt;' - div with a class</li>
+ * <li>'&lt;"#id" and '&gt;' - div with an ID</li>
+ * </ul>
+ * </li>
+ * <li>Examples:
+ * <ul>
+ * <li>'&lt;"wrapper"flipt&gt;'</li>
+ * <li>'&lt;lf&lt;t&gt;ip&gt;'</li>
+ * </ul>
+ * </li>
+ * </ul>
+ * @type string
+ * @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b>
+ * <"H"lfr>t<"F"ip> <i>(when bJQueryUI is true)</i>
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sDom": '&lt;"top"i&gt;rt&lt;"bottom"flp&gt;&lt;"clear"&gt;'
+ * } );
+ * } );
+ */
+ "sDom": "lfrtip",
+
+
+ /**
+ * DataTables features two different built-in pagination interaction methods
+ * ('two_button' or 'full_numbers') which present different page controls to
+ * the end user. Further methods can be added using the API (see below).
+ * @type string
+ * @default two_button
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sPaginationType": "full_numbers"
+ * } );
+ * } )
+ */
+ "sPaginationType": "two_button",
+
+
+ /**
+ * Enable horizontal scrolling. When a table is too wide to fit into a certain
+ * layout, or you have a large number of columns in the table, you can enable
+ * x-scrolling to show the table in a viewport, which can be scrolled. This
+ * property can be any CSS unit, or a number (in which case it will be treated
+ * as a pixel measurement).
+ * @type string
+ * @default <i>blank string - i.e. disabled</i>
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sScrollX": "100%",
+ * "bScrollCollapse": true
+ * } );
+ * } );
+ */
+ "sScrollX": "",
+
+
+ /**
+ * This property can be used to force a DataTable to use more width than it
+ * might otherwise do when x-scrolling is enabled. For example if you have a
+ * table which requires to be well spaced, this parameter is useful for
+ * "over-sizing" the table, and thus forcing scrolling. This property can by
+ * any CSS unit, or a number (in which case it will be treated as a pixel
+ * measurement).
+ * @type string
+ * @default <i>blank string - i.e. disabled</i>
+ * @dtopt Options
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sScrollX": "100%",
+ * "sScrollXInner": "110%"
+ * } );
+ * } );
+ */
+ "sScrollXInner": "",
+
+
+ /**
+ * Enable vertical scrolling. Vertical scrolling will constrain the DataTable
+ * to the given height, and enable scrolling for any data which overflows the
+ * current viewport. This can be used as an alternative to paging to display
+ * a lot of data in a small area (although paging and scrolling can both be
+ * enabled at the same time). This property can be any CSS unit, or a number
+ * (in which case it will be treated as a pixel measurement).
+ * @type string
+ * @default <i>blank string - i.e. disabled</i>
+ * @dtopt Features
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "sScrollY": "200px",
+ * "bPaginate": false
+ * } );
+ * } );
+ */
+ "sScrollY": "",
+
+
+ /**
+ * Set the HTTP method that is used to make the Ajax call for server-side
+ * processing or Ajax sourced data.
+ * @type string
+ * @default GET
+ * @dtopt Options
+ * @dtopt Server-side
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "bServerSide": true,
+ * "sAjaxSource": "scripts/post.php",
+ * "sServerMethod": "POST"
+ * } );
+ * } );
+ */
+ "sServerMethod": "GET"
+ };
+
+
+
+ /**
+ * Column options that can be given to DataTables at initialisation time.
+ * @namespace
+ */
+ DataTable.defaults.columns = {
+ /**
+ * Allows a column's sorting to take multiple columns into account when
+ * doing a sort. For example first name / last name columns make sense to
+ * do a multi-column sort over the two columns.
+ * @type array
+ * @default null <i>Takes the value of the column index automatically</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "aDataSort": [ 0, 1 ], "aTargets": [ 0 ] },
+ * { "aDataSort": [ 1, 0 ], "aTargets": [ 1 ] },
+ * { "aDataSort": [ 2, 3, 4 ], "aTargets": [ 2 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "aDataSort": [ 0, 1 ] },
+ * { "aDataSort": [ 1, 0 ] },
+ * { "aDataSort": [ 2, 3, 4 ] },
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "aDataSort": null,
+
+
+ /**
+ * You can control the default sorting direction, and even alter the behaviour
+ * of the sort handler (i.e. only allow ascending sorting etc) using this
+ * parameter.
+ * @type array
+ * @default [ 'asc', 'desc' ]
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "asSorting": [ "asc" ], "aTargets": [ 1 ] },
+ * { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 2 ] },
+ * { "asSorting": [ "desc" ], "aTargets": [ 3 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * null,
+ * { "asSorting": [ "asc" ] },
+ * { "asSorting": [ "desc", "asc", "asc" ] },
+ * { "asSorting": [ "desc" ] },
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "asSorting": [ 'asc', 'desc' ],
+
+
+ /**
+ * Enable or disable filtering on the data in this column.
+ * @type boolean
+ * @default true
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "bSearchable": false, "aTargets": [ 0 ] }
+ * ] } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "bSearchable": false },
+ * null,
+ * null,
+ * null,
+ * null
+ * ] } );
+ * } );
+ */
+ "bSearchable": true,
+
+
+ /**
+ * Enable or disable sorting on this column.
+ * @type boolean
+ * @default true
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "bSortable": false, "aTargets": [ 0 ] }
+ * ] } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "bSortable": false },
+ * null,
+ * null,
+ * null,
+ * null
+ * ] } );
+ * } );
+ */
+ "bSortable": true,
+
+
+ /**
+ * <code>Deprecated</code> When using fnRender() for a column, you may wish
+ * to use the original data (before rendering) for sorting and filtering
+ * (the default is to used the rendered data that the user can see). This
+ * may be useful for dates etc.
+ *
+ * Please note that this option has now been deprecated and will be removed
+ * in the next version of DataTables. Please use mRender / mData rather than
+ * fnRender.
+ * @type boolean
+ * @default true
+ * @dtopt Columns
+ * @deprecated
+ */
+ "bUseRendered": true,
+
+
+ /**
+ * Enable or disable the display of this column.
+ * @type boolean
+ * @default true
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "bVisible": false, "aTargets": [ 0 ] }
+ * ] } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "bVisible": false },
+ * null,
+ * null,
+ * null,
+ * null
+ * ] } );
+ * } );
+ */
+ "bVisible": true,
+
+
+ /**
+ * Developer definable function that is called whenever a cell is created (Ajax source,
+ * etc) or processed for input (DOM source). This can be used as a compliment to mRender
+ * allowing you to modify the DOM element (add background colour for example) when the
+ * element is available.
+ * @type function
+ * @param {element} nTd The TD node that has been created
+ * @param {*} sData The Data for the cell
+ * @param {array|object} oData The data for the whole row
+ * @param {int} iRow The row index for the aoData data store
+ * @param {int} iCol The column index for aoColumns
+ * @dtopt Columns
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [ {
+ * "aTargets": [3],
+ * "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
+ * if ( sData == "1.7" ) {
+ * $(nTd).css('color', 'blue')
+ * }
+ * }
+ * } ]
+ * });
+ * } );
+ */
+ "fnCreatedCell": null,
+
+
+ /**
+ * <code>Deprecated</code> Custom display function that will be called for the
+ * display of each cell in this column.
+ *
+ * Please note that this option has now been deprecated and will be removed
+ * in the next version of DataTables. Please use mRender / mData rather than
+ * fnRender.
+ * @type function
+ * @param {object} o Object with the following parameters:
+ * @param {int} o.iDataRow The row in aoData
+ * @param {int} o.iDataColumn The column in question
+ * @param {array} o.aData The data for the row in question
+ * @param {object} o.oSettings The settings object for this DataTables instance
+ * @param {object} o.mDataProp The data property used for this column
+ * @param {*} val The current cell value
+ * @returns {string} The string you which to use in the display
+ * @dtopt Columns
+ * @deprecated
+ */
+ "fnRender": null,
+
+
+ /**
+ * The column index (starting from 0!) that you wish a sort to be performed
+ * upon when this column is selected for sorting. This can be used for sorting
+ * on hidden columns for example.
+ * @type int
+ * @default -1 <i>Use automatically calculated column index</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "iDataSort": 1, "aTargets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "iDataSort": 1 },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "iDataSort": -1,
+
+
+ /**
+ * This parameter has been replaced by mData in DataTables to ensure naming
+ * consistency. mDataProp can still be used, as there is backwards compatibility
+ * in DataTables for this option, but it is strongly recommended that you use
+ * mData in preference to mDataProp.
+ * @name DataTable.defaults.columns.mDataProp
+ */
+
+
+ /**
+ * This property can be used to read data from any JSON data source property,
+ * including deeply nested objects / properties. mData can be given in a
+ * number of different ways which effect its behaviour:
+ * <ul>
+ * <li>integer - treated as an array index for the data source. This is the
+ * default that DataTables uses (incrementally increased for each column).</li>
+ * <li>string - read an object property from the data source. Note that you can
+ * use Javascript dotted notation to read deep properties / arrays from the
+ * data source.</li>
+ * <li>null - the sDefaultContent option will be used for the cell (null
+ * by default, so you will need to specify the default content you want -
+ * typically an empty string). This can be useful on generated columns such
+ * as edit / delete action columns.</li>
+ * <li>function - the function given will be executed whenever DataTables
+ * needs to set or get the data for a cell in the column. The function
+ * takes three parameters:
+ * <ul>
+ * <li>{array|object} The data source for the row</li>
+ * <li>{string} The type call data requested - this will be 'set' when
+ * setting data or 'filter', 'display', 'type', 'sort' or undefined when
+ * gathering data. Note that when <i>undefined</i> is given for the type
+ * DataTables expects to get the raw data for the object back</li>
+ * <li>{*} Data to set when the second parameter is 'set'.</li>
+ * </ul>
+ * The return value from the function is not required when 'set' is the type
+ * of call, but otherwise the return is what will be used for the data
+ * requested.</li>
+ * </ul>
+ *
+ * Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change
+ * reflects the flexibility of this property and is consistent with the naming of
+ * mRender. If 'mDataProp' is given, then it will still be used by DataTables, as
+ * it automatically maps the old name to the new if required.
+ * @type string|int|function|null
+ * @default null <i>Use automatically calculated column index</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Read table data from objects
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "sAjaxSource": "sources/deep.txt",
+ * "aoColumns": [
+ * { "mData": "engine" },
+ * { "mData": "browser" },
+ * { "mData": "platform.inner" },
+ * { "mData": "platform.details.0" },
+ * { "mData": "platform.details.1" }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using mData as a function to provide different information for
+ * // sorting, filtering and display. In this case, currency (price)
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "aoColumnDefs": [ {
+ * "aTargets": [ 0 ],
+ * "mData": function ( source, type, val ) {
+ * if (type === 'set') {
+ * source.price = val;
+ * // Store the computed dislay and filter values for efficiency
+ * source.price_display = val=="" ? "" : "$"+numberFormat(val);
+ * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val;
+ * return;
+ * }
+ * else if (type === 'display') {
+ * return source.price_display;
+ * }
+ * else if (type === 'filter') {
+ * return source.price_filter;
+ * }
+ * // 'sort', 'type' and undefined all just use the integer
+ * return source.price;
+ * }
+ * } ]
+ * } );
+ * } );
+ */
+ "mData": null,
+
+
+ /**
+ * This property is the rendering partner to mData and it is suggested that
+ * when you want to manipulate data for display (including filtering, sorting etc)
+ * but not altering the underlying data for the table, use this property. mData
+ * can actually do everything this property can and more, but this parameter is
+ * easier to use since there is no 'set' option. Like mData is can be given
+ * in a number of different ways to effect its behaviour, with the addition of
+ * supporting array syntax for easy outputting of arrays (including arrays of
+ * objects):
+ * <ul>
+ * <li>integer - treated as an array index for the data source. This is the
+ * default that DataTables uses (incrementally increased for each column).</li>
+ * <li>string - read an object property from the data source. Note that you can
+ * use Javascript dotted notation to read deep properties / arrays from the
+ * data source and also array brackets to indicate that the data reader should
+ * loop over the data source array. When characters are given between the array
+ * brackets, these characters are used to join the data source array together.
+ * For example: "accounts[, ].name" would result in a comma separated list with
+ * the 'name' value from the 'accounts' array of objects.</li>
+ * <li>function - the function given will be executed whenever DataTables
+ * needs to set or get the data for a cell in the column. The function
+ * takes three parameters:
+ * <ul>
+ * <li>{array|object} The data source for the row (based on mData)</li>
+ * <li>{string} The type call data requested - this will be 'filter', 'display',
+ * 'type' or 'sort'.</li>
+ * <li>{array|object} The full data source for the row (not based on mData)</li>
+ * </ul>
+ * The return value from the function is what will be used for the data
+ * requested.</li>
+ * </ul>
+ * @type string|int|function|null
+ * @default null <i>Use mData</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Create a comma separated list from an array of objects
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "sAjaxSource": "sources/deep.txt",
+ * "aoColumns": [
+ * { "mData": "engine" },
+ * { "mData": "browser" },
+ * {
+ * "mData": "platform",
+ * "mRender": "[, ].name"
+ * }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Use as a function to create a link from the data source
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * {
+ * "aTargets": [ 0 ],
+ * "mData": "download_link",
+ * "mRender": function ( data, type, full ) {
+ * return '<a href="'+data+'">Download</a>';
+ * }
+ * ]
+ * } );
+ * } );
+ */
+ "mRender": null,
+
+
+ /**
+ * Change the cell type created for the column - either TD cells or TH cells. This
+ * can be useful as TH cells have semantic meaning in the table body, allowing them
+ * to act as a header for a row (you may wish to add scope='row' to the TH elements).
+ * @type string
+ * @default td
+ * @dtopt Columns
+ *
+ * @example
+ * // Make the first column use TH cells
+ * $(document).ready( function() {
+ * var oTable = $('#example').dataTable( {
+ * "aoColumnDefs": [ {
+ * "aTargets": [ 0 ],
+ * "sCellType": "th"
+ * } ]
+ * } );
+ * } );
+ */
+ "sCellType": "td",
+
+
+ /**
+ * Class to give to each cell in this column.
+ * @type string
+ * @default <i>Empty string</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "sClass": "my_class", "aTargets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "sClass": "my_class" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sClass": "",
+
+ /**
+ * When DataTables calculates the column widths to assign to each column,
+ * it finds the longest string in each column and then constructs a
+ * temporary table and reads the widths from that. The problem with this
+ * is that "mmm" is much wider then "iiii", but the latter is a longer
+ * string - thus the calculation can go wrong (doing it properly and putting
+ * it into an DOM object and measuring that is horribly(!) slow). Thus as
+ * a "work around" we provide this option. It will append its value to the
+ * text that is found to be the longest string for the column - i.e. padding.
+ * Generally you shouldn't need this, and it is not documented on the
+ * general DataTables.net documentation
+ * @type string
+ * @default <i>Empty string<i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * null,
+ * null,
+ * null,
+ * {
+ * "sContentPadding": "mmm"
+ * }
+ * ]
+ * } );
+ * } );
+ */
+ "sContentPadding": "",
+
+
+ /**
+ * Allows a default value to be given for a column's data, and will be used
+ * whenever a null data source is encountered (this can be because mData
+ * is set to null, or because the data source itself is null).
+ * @type string
+ * @default null
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * {
+ * "mData": null,
+ * "sDefaultContent": "Edit",
+ * "aTargets": [ -1 ]
+ * }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * null,
+ * null,
+ * null,
+ * {
+ * "mData": null,
+ * "sDefaultContent": "Edit"
+ * }
+ * ]
+ * } );
+ * } );
+ */
+ "sDefaultContent": null,
+
+
+ /**
+ * This parameter is only used in DataTables' server-side processing. It can
+ * be exceptionally useful to know what columns are being displayed on the
+ * client side, and to map these to database fields. When defined, the names
+ * also allow DataTables to reorder information from the server if it comes
+ * back in an unexpected order (i.e. if you switch your columns around on the
+ * client-side, your server-side code does not also need updating).
+ * @type string
+ * @default <i>Empty string</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "sName": "engine", "aTargets": [ 0 ] },
+ * { "sName": "browser", "aTargets": [ 1 ] },
+ * { "sName": "platform", "aTargets": [ 2 ] },
+ * { "sName": "version", "aTargets": [ 3 ] },
+ * { "sName": "grade", "aTargets": [ 4 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "sName": "engine" },
+ * { "sName": "browser" },
+ * { "sName": "platform" },
+ * { "sName": "version" },
+ * { "sName": "grade" }
+ * ]
+ * } );
+ * } );
+ */
+ "sName": "",
+
+
+ /**
+ * Defines a data source type for the sorting which can be used to read
+ * real-time information from the table (updating the internally cached
+ * version) prior to sorting. This allows sorting to occur on user editable
+ * elements such as form inputs.
+ * @type string
+ * @default std
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "sSortDataType": "dom-text", "aTargets": [ 2, 3 ] },
+ * { "sType": "numeric", "aTargets": [ 3 ] },
+ * { "sSortDataType": "dom-select", "aTargets": [ 4 ] },
+ * { "sSortDataType": "dom-checkbox", "aTargets": [ 5 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * null,
+ * null,
+ * { "sSortDataType": "dom-text" },
+ * { "sSortDataType": "dom-text", "sType": "numeric" },
+ * { "sSortDataType": "dom-select" },
+ * { "sSortDataType": "dom-checkbox" }
+ * ]
+ * } );
+ * } );
+ */
+ "sSortDataType": "std",
+
+
+ /**
+ * The title of this column.
+ * @type string
+ * @default null <i>Derived from the 'TH' value for this column in the
+ * original HTML table.</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "sTitle": "My column title", "aTargets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "sTitle": "My column title" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sTitle": null,
+
+
+ /**
+ * The type allows you to specify how the data for this column will be sorted.
+ * Four types (string, numeric, date and html (which will strip HTML tags
+ * before sorting)) are currently available. Note that only date formats
+ * understood by Javascript's Date() object will be accepted as type date. For
+ * example: "Mar 26, 2008 5:03 PM". May take the values: 'string', 'numeric',
+ * 'date' or 'html' (by default). Further types can be adding through
+ * plug-ins.
+ * @type string
+ * @default null <i>Auto-detected from raw data</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "sType": "html", "aTargets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "sType": "html" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sType": null,
+
+
+ /**
+ * Defining the width of the column, this parameter may take any CSS value
+ * (3em, 20px etc). DataTables apples 'smart' widths to columns which have not
+ * been given a specific width through this interface ensuring that the table
+ * remains readable.
+ * @type string
+ * @default null <i>Automatic</i>
+ * @dtopt Columns
+ *
+ * @example
+ * // Using aoColumnDefs
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumnDefs": [
+ * { "sWidth": "20%", "aTargets": [ 0 ] }
+ * ]
+ * } );
+ * } );
+ *
+ * @example
+ * // Using aoColumns
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "aoColumns": [
+ * { "sWidth": "20%" },
+ * null,
+ * null,
+ * null,
+ * null
+ * ]
+ * } );
+ * } );
+ */
+ "sWidth": null
+ };
+
+
+
+ /**
+ * DataTables settings object - this holds all the information needed for a
+ * given table, including configuration, data and current application of the
+ * table options. DataTables does not have a single instance for each DataTable
+ * with the settings attached to that instance, but rather instances of the
+ * DataTable "class" are created on-the-fly as needed (typically by a
+ * $().dataTable() call) and the settings object is then applied to that
+ * instance.
+ *
+ * Note that this object is related to {@link DataTable.defaults} but this
+ * one is the internal data store for DataTables's cache of columns. It should
+ * NOT be manipulated outside of DataTables. Any configuration should be done
+ * through the initialisation options.
+ * @namespace
+ * @todo Really should attach the settings object to individual instances so we
+ * don't need to create new instances on each $().dataTable() call (if the
+ * table already exists). It would also save passing oSettings around and
+ * into every single function. However, this is a very significant
+ * architecture change for DataTables and will almost certainly break
+ * backwards compatibility with older installations. This is something that
+ * will be done in 2.0.
+ */
+ DataTable.models.oSettings = {
+ /**
+ * Primary features of DataTables and their enablement state.
+ * @namespace
+ */
+ "oFeatures": {
+
+ /**
+ * Flag to say if DataTables should automatically try to calculate the
+ * optimum table and columns widths (true) or not (false).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bAutoWidth": null,
+
+ /**
+ * Delay the creation of TR and TD elements until they are actually
+ * needed by a driven page draw. This can give a significant speed
+ * increase for Ajax source and Javascript source data, but makes no
+ * difference at all fro DOM and server-side processing tables.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bDeferRender": null,
+
+ /**
+ * Enable filtering on the table or not. Note that if this is disabled
+ * then there is no filtering at all on the table, including fnFilter.
+ * To just remove the filtering input use sDom and remove the 'f' option.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bFilter": null,
+
+ /**
+ * Table information element (the 'Showing x of y records' div) enable
+ * flag.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bInfo": null,
+
+ /**
+ * Present a user control allowing the end user to change the page size
+ * when pagination is enabled.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bLengthChange": null,
+
+ /**
+ * Pagination enabled or not. Note that if this is disabled then length
+ * changing must also be disabled.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bPaginate": null,
+
+ /**
+ * Processing indicator enable flag whenever DataTables is enacting a
+ * user request - typically an Ajax request for server-side processing.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bProcessing": null,
+
+ /**
+ * Server-side processing enabled flag - when enabled DataTables will
+ * get all data from the server for every draw - there is no filtering,
+ * sorting or paging done on the client-side.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bServerSide": null,
+
+ /**
+ * Sorting enablement flag.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSort": null,
+
+ /**
+ * Apply a class to the columns which are being sorted to provide a
+ * visual highlight or not. This can slow things down when enabled since
+ * there is a lot of DOM interaction.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSortClasses": null,
+
+ /**
+ * State saving enablement flag.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bStateSave": null
+ },
+
+
+ /**
+ * Scrolling settings for a table.
+ * @namespace
+ */
+ "oScroll": {
+ /**
+ * Indicate if DataTables should be allowed to set the padding / margin
+ * etc for the scrolling header elements or not. Typically you will want
+ * this.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bAutoCss": null,
+
+ /**
+ * When the table is shorter in height than sScrollY, collapse the
+ * table container down to the height of the table (when true).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bCollapse": null,
+
+ /**
+ * Infinite scrolling enablement flag. Now deprecated in favour of
+ * using the Scroller plug-in.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bInfinite": null,
+
+ /**
+ * Width of the scrollbar for the web-browser's platform. Calculated
+ * during table initialisation.
+ * @type int
+ * @default 0
+ */
+ "iBarWidth": 0,
+
+ /**
+ * Space (in pixels) between the bottom of the scrolling container and
+ * the bottom of the scrolling viewport before the next page is loaded
+ * when using infinite scrolling.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type int
+ */
+ "iLoadGap": null,
+
+ /**
+ * Viewport width for horizontal scrolling. Horizontal scrolling is
+ * disabled if an empty string.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sX": null,
+
+ /**
+ * Width to expand the table to when using x-scrolling. Typically you
+ * should not need to use this.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @deprecated
+ */
+ "sXInner": null,
+
+ /**
+ * Viewport height for vertical scrolling. Vertical scrolling is disabled
+ * if an empty string.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sY": null
+ },
+
+ /**
+ * Language information for the table.
+ * @namespace
+ * @extends DataTable.defaults.oLanguage
+ */
+ "oLanguage": {
+ /**
+ * Information callback function. See
+ * {@link DataTable.defaults.fnInfoCallback}
+ * @type function
+ * @default null
+ */
+ "fnInfoCallback": null
+ },
+
+ /**
+ * Browser support parameters
+ * @namespace
+ */
+ "oBrowser": {
+ /**
+ * Indicate if the browser incorrectly calculates width:100% inside a
+ * scrolling element (IE6/7)
+ * @type boolean
+ * @default false
+ */
+ "bScrollOversize": false
+ },
+
+ /**
+ * Array referencing the nodes which are used for the features. The
+ * parameters of this object match what is allowed by sDom - i.e.
+ * <ul>
+ * <li>'l' - Length changing</li>
+ * <li>'f' - Filtering input</li>
+ * <li>'t' - The table!</li>
+ * <li>'i' - Information</li>
+ * <li>'p' - Pagination</li>
+ * <li>'r' - pRocessing</li>
+ * </ul>
+ * @type array
+ * @default []
+ */
+ "aanFeatures": [],
+
+ /**
+ * Store data information - see {@link DataTable.models.oRow} for detailed
+ * information.
+ * @type array
+ * @default []
+ */
+ "aoData": [],
+
+ /**
+ * Array of indexes which are in the current display (after filtering etc)
+ * @type array
+ * @default []
+ */
+ "aiDisplay": [],
+
+ /**
+ * Array of indexes for display - no filtering
+ * @type array
+ * @default []
+ */
+ "aiDisplayMaster": [],
+
+ /**
+ * Store information about each column that is in use
+ * @type array
+ * @default []
+ */
+ "aoColumns": [],
+
+ /**
+ * Store information about the table's header
+ * @type array
+ * @default []
+ */
+ "aoHeader": [],
+
+ /**
+ * Store information about the table's footer
+ * @type array
+ * @default []
+ */
+ "aoFooter": [],
+
+ /**
+ * Search data array for regular expression searching
+ * @type array
+ * @default []
+ */
+ "asDataSearch": [],
+
+ /**
+ * Store the applied global search information in case we want to force a
+ * research or compare the old search to a new one.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @namespace
+ * @extends DataTable.models.oSearch
+ */
+ "oPreviousSearch": {},
+
+ /**
+ * Store the applied search for each column - see
+ * {@link DataTable.models.oSearch} for the format that is used for the
+ * filtering information for each column.
+ * @type array
+ * @default []
+ */
+ "aoPreSearchCols": [],
+
+ /**
+ * Sorting that is applied to the table. Note that the inner arrays are
+ * used in the following manner:
+ * <ul>
+ * <li>Index 0 - column number</li>
+ * <li>Index 1 - current sorting direction</li>
+ * <li>Index 2 - index of asSorting for this column</li>
+ * </ul>
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @todo These inner arrays should really be objects
+ */
+ "aaSorting": null,
+
+ /**
+ * Sorting that is always applied to the table (i.e. prefixed in front of
+ * aaSorting).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array|null
+ * @default null
+ */
+ "aaSortingFixed": null,
+
+ /**
+ * Classes to use for the striping of a table.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @default []
+ */
+ "asStripeClasses": null,
+
+ /**
+ * If restoring a table - we should restore its striping classes as well
+ * @type array
+ * @default []
+ */
+ "asDestroyStripes": [],
+
+ /**
+ * If restoring a table - we should restore its width
+ * @type int
+ * @default 0
+ */
+ "sDestroyWidth": 0,
+
+ /**
+ * Callback functions array for every time a row is inserted (i.e. on a draw).
+ * @type array
+ * @default []
+ */
+ "aoRowCallback": [],
+
+ /**
+ * Callback functions for the header on each draw.
+ * @type array
+ * @default []
+ */
+ "aoHeaderCallback": [],
+
+ /**
+ * Callback function for the footer on each draw.
+ * @type array
+ * @default []
+ */
+ "aoFooterCallback": [],
+
+ /**
+ * Array of callback functions for draw callback functions
+ * @type array
+ * @default []
+ */
+ "aoDrawCallback": [],
+
+ /**
+ * Array of callback functions for row created function
+ * @type array
+ * @default []
+ */
+ "aoRowCreatedCallback": [],
+
+ /**
+ * Callback functions for just before the table is redrawn. A return of
+ * false will be used to cancel the draw.
+ * @type array
+ * @default []
+ */
+ "aoPreDrawCallback": [],
+
+ /**
+ * Callback functions for when the table has been initialised.
+ * @type array
+ * @default []
+ */
+ "aoInitComplete": [],
+
+
+ /**
+ * Callbacks for modifying the settings to be stored for state saving, prior to
+ * saving state.
+ * @type array
+ * @default []
+ */
+ "aoStateSaveParams": [],
+
+ /**
+ * Callbacks for modifying the settings that have been stored for state saving
+ * prior to using the stored values to restore the state.
+ * @type array
+ * @default []
+ */
+ "aoStateLoadParams": [],
+
+ /**
+ * Callbacks for operating on the settings object once the saved state has been
+ * loaded
+ * @type array
+ * @default []
+ */
+ "aoStateLoaded": [],
+
+ /**
+ * Cache the table ID for quick access
+ * @type string
+ * @default <i>Empty string</i>
+ */
+ "sTableId": "",
+
+ /**
+ * The TABLE node for the main table
+ * @type node
+ * @default null
+ */
+ "nTable": null,
+
+ /**
+ * Permanent ref to the thead element
+ * @type node
+ * @default null
+ */
+ "nTHead": null,
+
+ /**
+ * Permanent ref to the tfoot element - if it exists
+ * @type node
+ * @default null
+ */
+ "nTFoot": null,
+
+ /**
+ * Permanent ref to the tbody element
+ * @type node
+ * @default null
+ */
+ "nTBody": null,
+
+ /**
+ * Cache the wrapper node (contains all DataTables controlled elements)
+ * @type node
+ * @default null
+ */
+ "nTableWrapper": null,
+
+ /**
+ * Indicate if when using server-side processing the loading of data
+ * should be deferred until the second draw.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ * @default false
+ */
+ "bDeferLoading": false,
+
+ /**
+ * Indicate if all required information has been read in
+ * @type boolean
+ * @default false
+ */
+ "bInitialised": false,
+
+ /**
+ * Information about open rows. Each object in the array has the parameters
+ * 'nTr' and 'nParent'
+ * @type array
+ * @default []
+ */
+ "aoOpenRows": [],
+
+ /**
+ * Dictate the positioning of DataTables' control elements - see
+ * {@link DataTable.model.oInit.sDom}.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default null
+ */
+ "sDom": null,
+
+ /**
+ * Which type of pagination should be used.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default two_button
+ */
+ "sPaginationType": "two_button",
+
+ /**
+ * The cookie duration (for bStateSave) in seconds.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type int
+ * @default 0
+ */
+ "iCookieDuration": 0,
+
+ /**
+ * The cookie name prefix.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default <i>Empty string</i>
+ */
+ "sCookiePrefix": "",
+
+ /**
+ * Callback function for cookie creation.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type function
+ * @default null
+ */
+ "fnCookieCallback": null,
+
+ /**
+ * Array of callback functions for state saving. Each array element is an
+ * object with the following parameters:
+ * <ul>
+ * <li>function:fn - function to call. Takes two parameters, oSettings
+ * and the JSON string to save that has been thus far created. Returns
+ * a JSON string to be inserted into a json object
+ * (i.e. '"param": [ 0, 1, 2]')</li>
+ * <li>string:sName - name of callback</li>
+ * </ul>
+ * @type array
+ * @default []
+ */
+ "aoStateSave": [],
+
+ /**
+ * Array of callback functions for state loading. Each array element is an
+ * object with the following parameters:
+ * <ul>
+ * <li>function:fn - function to call. Takes two parameters, oSettings
+ * and the object stored. May return false to cancel state loading</li>
+ * <li>string:sName - name of callback</li>
+ * </ul>
+ * @type array
+ * @default []
+ */
+ "aoStateLoad": [],
+
+ /**
+ * State that was loaded from the cookie. Useful for back reference
+ * @type object
+ * @default null
+ */
+ "oLoadedState": null,
+
+ /**
+ * Source url for AJAX data for the table.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ * @default null
+ */
+ "sAjaxSource": null,
+
+ /**
+ * Property from a given object from which to read the table data from. This
+ * can be an empty string (when not server-side processing), in which case
+ * it is assumed an an array is given directly.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sAjaxDataProp": null,
+
+ /**
+ * Note if draw should be blocked while getting data
+ * @type boolean
+ * @default true
+ */
+ "bAjaxDataGet": true,
+
+ /**
+ * The last jQuery XHR object that was used for server-side data gathering.
+ * This can be used for working with the XHR information in one of the
+ * callbacks
+ * @type object
+ * @default null
+ */
+ "jqXHR": null,
+
+ /**
+ * Function to get the server-side data.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type function
+ */
+ "fnServerData": null,
+
+ /**
+ * Functions which are called prior to sending an Ajax request so extra
+ * parameters can easily be sent to the server
+ * @type array
+ * @default []
+ */
+ "aoServerParams": [],
+
+ /**
+ * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
+ * required).
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type string
+ */
+ "sServerMethod": null,
+
+ /**
+ * Format numbers for display.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type function
+ */
+ "fnFormatNumber": null,
+
+ /**
+ * List of options that can be used for the user selectable length menu.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type array
+ * @default []
+ */
+ "aLengthMenu": null,
+
+ /**
+ * Counter for the draws that the table does. Also used as a tracker for
+ * server-side processing
+ * @type int
+ * @default 0
+ */
+ "iDraw": 0,
+
+ /**
+ * Indicate if a redraw is being done - useful for Ajax
+ * @type boolean
+ * @default false
+ */
+ "bDrawing": false,
+
+ /**
+ * Draw index (iDraw) of the last error when parsing the returned data
+ * @type int
+ * @default -1
+ */
+ "iDrawError": -1,
+
+ /**
+ * Paging display length
+ * @type int
+ * @default 10
+ */
+ "_iDisplayLength": 10,
+
+ /**
+ * Paging start point - aiDisplay index
+ * @type int
+ * @default 0
+ */
+ "_iDisplayStart": 0,
+
+ /**
+ * Paging end point - aiDisplay index. Use fnDisplayEnd rather than
+ * this property to get the end point
+ * @type int
+ * @default 10
+ * @private
+ */
+ "_iDisplayEnd": 10,
+
+ /**
+ * Server-side processing - number of records in the result set
+ * (i.e. before filtering), Use fnRecordsTotal rather than
+ * this property to get the value of the number of records, regardless of
+ * the server-side processing setting.
+ * @type int
+ * @default 0
+ * @private
+ */
+ "_iRecordsTotal": 0,
+
+ /**
+ * Server-side processing - number of records in the current display set
+ * (i.e. after filtering). Use fnRecordsDisplay rather than
+ * this property to get the value of the number of records, regardless of
+ * the server-side processing setting.
+ * @type boolean
+ * @default 0
+ * @private
+ */
+ "_iRecordsDisplay": 0,
+
+ /**
+ * Flag to indicate if jQuery UI marking and classes should be used.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bJUI": null,
+
+ /**
+ * The classes to use for the table
+ * @type object
+ * @default {}
+ */
+ "oClasses": {},
+
+ /**
+ * Flag attached to the settings object so you can check in the draw
+ * callback if filtering has been done in the draw. Deprecated in favour of
+ * events.
+ * @type boolean
+ * @default false
+ * @deprecated
+ */
+ "bFiltered": false,
+
+ /**
+ * Flag attached to the settings object so you can check in the draw
+ * callback if sorting has been done in the draw. Deprecated in favour of
+ * events.
+ * @type boolean
+ * @default false
+ * @deprecated
+ */
+ "bSorted": false,
+
+ /**
+ * Indicate that if multiple rows are in the header and there is more than
+ * one unique cell per column, if the top one (true) or bottom one (false)
+ * should be used for sorting / title by DataTables.
+ * Note that this parameter will be set by the initialisation routine. To
+ * set a default use {@link DataTable.defaults}.
+ * @type boolean
+ */
+ "bSortCellsTop": null,
+
+ /**
+ * Initialisation object that is used for the table
+ * @type object
+ * @default null
+ */
+ "oInit": null,
+
+ /**
+ * Destroy callback functions - for plug-ins to attach themselves to the
+ * destroy so they can clean up markup and events.
+ * @type array
+ * @default []
+ */
+ "aoDestroyCallback": [],
+
+
+ /**
+ * Get the number of records in the current record set, before filtering
+ * @type function
+ */
+ "fnRecordsTotal": function ()
+ {
+ if ( this.oFeatures.bServerSide ) {
+ return parseInt(this._iRecordsTotal, 10);
+ } else {
+ return this.aiDisplayMaster.length;
+ }
+ },
+
+ /**
+ * Get the number of records in the current record set, after filtering
+ * @type function
+ */
+ "fnRecordsDisplay": function ()
+ {
+ if ( this.oFeatures.bServerSide ) {
+ return parseInt(this._iRecordsDisplay, 10);
+ } else {
+ return this.aiDisplay.length;
+ }
+ },
+
+ /**
+ * Set the display end point - aiDisplay index
+ * @type function
+ * @todo Should do away with _iDisplayEnd and calculate it on-the-fly here
+ */
+ "fnDisplayEnd": function ()
+ {
+ if ( this.oFeatures.bServerSide ) {
+ if ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {
+ return this._iDisplayStart+this.aiDisplay.length;
+ } else {
+ return Math.min( this._iDisplayStart+this._iDisplayLength,
+ this._iRecordsDisplay );
+ }
+ } else {
+ return this._iDisplayEnd;
+ }
+ },
+
+ /**
+ * The DataTables object for this table
+ * @type object
+ * @default null
+ */
+ "oInstance": null,
+
+ /**
+ * Unique identifier for each instance of the DataTables object. If there
+ * is an ID on the table node, then it takes that value, otherwise an
+ * incrementing internal counter is used.
+ * @type string
+ * @default null
+ */
+ "sInstance": null,
+
+ /**
+ * tabindex attribute value that is added to DataTables control elements, allowing
+ * keyboard navigation of the table and its controls.
+ */
+ "iTabIndex": 0,
+
+ /**
+ * DIV container for the footer scrolling table if scrolling
+ */
+ "nScrollHead": null,
+
+ /**
+ * DIV container for the footer scrolling table if scrolling
+ */
+ "nScrollFoot": null
+ };
+
+ /**
+ * Extension object for DataTables that is used to provide all extension options.
+ *
+ * Note that the <i>DataTable.ext</i> object is available through
+ * <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is
+ * also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.
+ * @namespace
+ * @extends DataTable.models.ext
+ */
+ DataTable.ext = $.extend( true, {}, DataTable.models.ext );
+
+ $.extend( DataTable.ext.oStdClasses, {
+ "sTable": "dataTable",
+
+ /* Two buttons buttons */
+ "sPagePrevEnabled": "paginate_enabled_previous",
+ "sPagePrevDisabled": "paginate_disabled_previous",
+ "sPageNextEnabled": "paginate_enabled_next",
+ "sPageNextDisabled": "paginate_disabled_next",
+ "sPageJUINext": "",
+ "sPageJUIPrev": "",
+
+ /* Full numbers paging buttons */
+ "sPageButton": "paginate_button",
+ "sPageButtonActive": "paginate_active",
+ "sPageButtonStaticDisabled": "paginate_button paginate_button_disabled",
+ "sPageFirst": "first",
+ "sPagePrevious": "previous",
+ "sPageNext": "next",
+ "sPageLast": "last",
+
+ /* Striping classes */
+ "sStripeOdd": "odd",
+ "sStripeEven": "even",
+
+ /* Empty row */
+ "sRowEmpty": "dataTables_empty",
+
+ /* Features */
+ "sWrapper": "dataTables_wrapper",
+ "sFilter": "dataTables_filter",
+ "sInfo": "dataTables_info",
+ "sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
+ "sLength": "dataTables_length",
+ "sProcessing": "dataTables_processing",
+
+ /* Sorting */
+ "sSortAsc": "sorting_asc",
+ "sSortDesc": "sorting_desc",
+ "sSortable": "sorting", /* Sortable in both directions */
+ "sSortableAsc": "sorting_asc_disabled",
+ "sSortableDesc": "sorting_desc_disabled",
+ "sSortableNone": "sorting_disabled",
+ "sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
+ "sSortJUIAsc": "",
+ "sSortJUIDesc": "",
+ "sSortJUI": "",
+ "sSortJUIAscAllowed": "",
+ "sSortJUIDescAllowed": "",
+ "sSortJUIWrapper": "",
+ "sSortIcon": "",
+
+ /* Scrolling */
+ "sScrollWrapper": "dataTables_scroll",
+ "sScrollHead": "dataTables_scrollHead",
+ "sScrollHeadInner": "dataTables_scrollHeadInner",
+ "sScrollBody": "dataTables_scrollBody",
+ "sScrollFoot": "dataTables_scrollFoot",
+ "sScrollFootInner": "dataTables_scrollFootInner",
+
+ /* Misc */
+ "sFooterTH": "",
+ "sJUIHeader": "",
+ "sJUIFooter": ""
+ } );
+
+
+ $.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {
+ /* Two buttons buttons */
+ "sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left",
+ "sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",
+ "sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right",
+ "sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",
+ "sPageJUINext": "ui-icon ui-icon-circle-arrow-e",
+ "sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w",
+
+ /* Full numbers paging buttons */
+ "sPageButton": "fg-button ui-button ui-state-default",
+ "sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled",
+ "sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled",
+ "sPageFirst": "first ui-corner-tl ui-corner-bl",
+ "sPageLast": "last ui-corner-tr ui-corner-br",
+
+ /* Features */
+ "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
+ "ui-buttonset-multi paging_", /* Note that the type is postfixed */
+
+ /* Sorting */
+ "sSortAsc": "ui-state-default",
+ "sSortDesc": "ui-state-default",
+ "sSortable": "ui-state-default",
+ "sSortableAsc": "ui-state-default",
+ "sSortableDesc": "ui-state-default",
+ "sSortableNone": "ui-state-default",
+ "sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n",
+ "sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s",
+ "sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s",
+ "sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n",
+ "sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s",
+ "sSortJUIWrapper": "DataTables_sort_wrapper",
+ "sSortIcon": "DataTables_sort_icon",
+
+ /* Scrolling */
+ "sScrollHead": "dataTables_scrollHead ui-state-default",
+ "sScrollFoot": "dataTables_scrollFoot ui-state-default",
+
+ /* Misc */
+ "sFooterTH": "ui-state-default",
+ "sJUIHeader": "fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",
+ "sJUIFooter": "fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"
+ } );
+
+ /*
+ * Variable: oPagination
+ * Purpose:
+ * Scope: jQuery.fn.dataTableExt
+ */
+ $.extend( DataTable.ext.oPagination, {
+ /*
+ * Variable: two_button
+ * Purpose: Standard two button (forward/back) pagination
+ * Scope: jQuery.fn.dataTableExt.oPagination
+ */
+ "two_button": {
+ /*
+ * Function: oPagination.two_button.fnInit
+ * Purpose: Initialise dom elements required for pagination with forward/back buttons only
+ * Returns: -
+ * Inputs: object:oSettings - dataTables settings object
+ * node:nPaging - the DIV which contains this pagination control
+ * function:fnCallbackDraw - draw function which must be called on update
+ */
+ "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
+ {
+ var oLang = oSettings.oLanguage.oPaginate;
+ var oClasses = oSettings.oClasses;
+ var fnClickHandler = function ( e ) {
+ if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
+ {
+ fnCallbackDraw( oSettings );
+ }
+ };
+
+ var sAppend = (!oSettings.bJUI) ?
+ '<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sPrevious+'</a>'+
+ '<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'</a>'
+ :
+ '<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUIPrev+'"></span></a>'+
+ '<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUINext+'"></span></a>';
+ $(nPaging).append( sAppend );
+
+ var els = $('a', nPaging);
+ var nPrevious = els[0],
+ nNext = els[1];
+
+ oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, fnClickHandler );
+ oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
+
+ /* ID the first elements only */
+ if ( !oSettings.aanFeatures.p )
+ {
+ nPaging.id = oSettings.sTableId+'_paginate';
+ nPrevious.id = oSettings.sTableId+'_previous';
+ nNext.id = oSettings.sTableId+'_next';
+
+ nPrevious.setAttribute('aria-controls', oSettings.sTableId);
+ nNext.setAttribute('aria-controls', oSettings.sTableId);
+ }
+ },
+
+ /*
+ * Function: oPagination.two_button.fnUpdate
+ * Purpose: Update the two button pagination at the end of the draw
+ * Returns: -
+ * Inputs: object:oSettings - dataTables settings object
+ * function:fnCallbackDraw - draw function to call on page change
+ */
+ "fnUpdate": function ( oSettings, fnCallbackDraw )
+ {
+ if ( !oSettings.aanFeatures.p )
+ {
+ return;
+ }
+
+ var oClasses = oSettings.oClasses;
+ var an = oSettings.aanFeatures.p;
+ var nNode;
+
+ /* Loop over each instance of the pager */
+ for ( var i=0, iLen=an.length ; i<iLen ; i++ )
+ {
+ nNode = an[i].firstChild;
+ if ( nNode )
+ {
+ /* Previous page */
+ nNode.className = ( oSettings._iDisplayStart === 0 ) ?
+ oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;
+
+ /* Next page */
+ nNode = nNode.nextSibling;
+ nNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
+ oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;
+ }
+ }
+ }
+ },
+
+
+ /*
+ * Variable: iFullNumbersShowPages
+ * Purpose: Change the number of pages which can be seen
+ * Scope: jQuery.fn.dataTableExt.oPagination
+ */
+ "iFullNumbersShowPages": 5,
+
+ /*
+ * Variable: full_numbers
+ * Purpose: Full numbers pagination
+ * Scope: jQuery.fn.dataTableExt.oPagination
+ */
+ "full_numbers": {
+ /*
+ * Function: oPagination.full_numbers.fnInit
+ * Purpose: Initialise dom elements required for pagination with a list of the pages
+ * Returns: -
+ * Inputs: object:oSettings - dataTables settings object
+ * node:nPaging - the DIV which contains this pagination control
+ * function:fnCallbackDraw - draw function which must be called on update
+ */
+ "fnInit": function ( oSettings, nPaging, fnCallbackDraw )
+ {
+ var oLang = oSettings.oLanguage.oPaginate;
+ var oClasses = oSettings.oClasses;
+ var fnClickHandler = function ( e ) {
+ if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
+ {
+ fnCallbackDraw( oSettings );
+ }
+ };
+
+ $(nPaging).append(
+ '<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'">'+oLang.sFirst+'</a>'+
+ '<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'">'+oLang.sPrevious+'</a>'+
+ '<span></span>'+
+ '<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'</a>'+
+ '<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+'</a>'
+ );
+ var els = $('a', nPaging);
+ var nFirst = els[0],
+ nPrev = els[1],
+ nNext = els[2],
+ nLast = els[3];
+
+ oSettings.oApi._fnBindAction( nFirst, {action: "first"}, fnClickHandler );
+ oSettings.oApi._fnBindAction( nPrev, {action: "previous"}, fnClickHandler );
+ oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
+ oSettings.oApi._fnBindAction( nLast, {action: "last"}, fnClickHandler );
+
+ /* ID the first elements only */
+ if ( !oSettings.aanFeatures.p )
+ {
+ nPaging.id = oSettings.sTableId+'_paginate';
+ nFirst.id =oSettings.sTableId+'_first';
+ nPrev.id =oSettings.sTableId+'_previous';
+ nNext.id =oSettings.sTableId+'_next';
+ nLast.id =oSettings.sTableId+'_last';
+ }
+ },
+
+ /*
+ * Function: oPagination.full_numbers.fnUpdate
+ * Purpose: Update the list of page buttons shows
+ * Returns: -
+ * Inputs: object:oSettings - dataTables settings object
+ * function:fnCallbackDraw - draw function to call on page change
+ */
+ "fnUpdate": function ( oSettings, fnCallbackDraw )
+ {
+ if ( !oSettings.aanFeatures.p )
+ {
+ return;
+ }
+
+ var iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;
+ var iPageCountHalf = Math.floor(iPageCount / 2);
+ var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
+ var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
+ var sList = "";
+ var iStartButton, iEndButton, i, iLen;
+ var oClasses = oSettings.oClasses;
+ var anButtons, anStatic, nPaginateList, nNode;
+ var an = oSettings.aanFeatures.p;
+ var fnBind = function (j) {
+ oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) {
+ /* Use the information in the element to jump to the required page */
+ oSettings.oApi._fnPageChange( oSettings, e.data.page );
+ fnCallbackDraw( oSettings );
+ e.preventDefault();
+ } );
+ };
+
+ /* Pages calculation */
+ if ( oSettings._iDisplayLength === -1 )
+ {
+ iStartButton = 1;
+ iEndButton = 1;
+ iCurrentPage = 1;
+ }
+ else if (iPages < iPageCount)
+ {
+ iStartButton = 1;
+ iEndButton = iPages;
+ }
+ else if (iCurrentPage <= iPageCountHalf)
+ {
+ iStartButton = 1;
+ iEndButton = iPageCount;
+ }
+ else if (iCurrentPage >= (iPages - iPageCountHalf))
+ {
+ iStartButton = iPages - iPageCount + 1;
+ iEndButton = iPages;
+ }
+ else
+ {
+ iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
+ iEndButton = iStartButton + iPageCount - 1;
+ }
+
+
+ /* Build the dynamic list */
+ for ( i=iStartButton ; i<=iEndButton ; i++ )
+ {
+ sList += (iCurrentPage !== i) ?
+ '<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+'">'+oSettings.fnFormatNumber(i)+'</a>' :
+ '<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButtonActive+'">'+oSettings.fnFormatNumber(i)+'</a>';
+ }
+
+ /* Loop over each instance of the pager */
+ for ( i=0, iLen=an.length ; i<iLen ; i++ )
+ {
+ nNode = an[i];
+ if ( !nNode.hasChildNodes() )
+ {
+ continue;
+ }
+
+ /* Build up the dynamic list first - html and listeners */
+ $('span:eq(0)', nNode)
+ .html( sList )
+ .children('a').each( fnBind );
+
+ /* Update the permanent button's classes */
+ anButtons = nNode.getElementsByTagName('a');
+ anStatic = [
+ anButtons[0], anButtons[1],
+ anButtons[anButtons.length-2], anButtons[anButtons.length-1]
+ ];
+
+ $(anStatic).removeClass( oClasses.sPageButton+" "+oClasses.sPageButtonActive+" "+oClasses.sPageButtonStaticDisabled );
+ $([anStatic[0], anStatic[1]]).addClass(
+ (iCurrentPage==1) ?
+ oClasses.sPageButtonStaticDisabled :
+ oClasses.sPageButton
+ );
+ $([anStatic[2], anStatic[3]]).addClass(
+ (iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?
+ oClasses.sPageButtonStaticDisabled :
+ oClasses.sPageButton
+ );
+ }
+ }
+ }
+ } );
+
+ $.extend( DataTable.ext.oSort, {
+ /*
+ * text sorting
+ */
+ "string-pre": function ( a )
+ {
+ if ( typeof a != 'string' ) {
+ a = (a !== null && a.toString) ? a.toString() : '';
+ }
+ return a.toLowerCase();
+ },
+
+ "string-asc": function ( x, y )
+ {
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ },
+
+ "string-desc": function ( x, y )
+ {
+ return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+ },
+
+
+ /*
+ * html sorting (ignore html tags)
+ */
+ "html-pre": function ( a )
+ {
+ return a.replace( /<.*?>/g, "" ).toLowerCase();
+ },
+
+ "html-asc": function ( x, y )
+ {
+ return ((x < y) ? -1 : ((x > y) ? 1 : 0));
+ },
+
+ "html-desc": function ( x, y )
+ {
+ return ((x < y) ? 1 : ((x > y) ? -1 : 0));
+ },
+
+
+ /*
+ * date sorting
+ */
+ "date-pre": function ( a )
+ {
+ var x = Date.parse( a );
+
+ if ( isNaN(x) || x==="" )
+ {
+ x = Date.parse( "01/01/1970 00:00:00" );
+ }
+ return x;
+ },
+
+ "date-asc": function ( x, y )
+ {
+ return x - y;
+ },
+
+ "date-desc": function ( x, y )
+ {
+ return y - x;
+ },
+
+
+ /*
+ * numerical sorting
+ */
+ "numeric-pre": function ( a )
+ {
+ return (a=="-" || a==="") ? 0 : a*1;
+ },
+
+ "numeric-asc": function ( x, y )
+ {
+ return x - y;
+ },
+
+ "numeric-desc": function ( x, y )
+ {
+ return y - x;
+ }
+ } );
+
+
+ $.extend( DataTable.ext.aTypes, [
+ /*
+ * Function: -
+ * Purpose: Check to see if a string is numeric
+ * Returns: string:'numeric' or null
+ * Inputs: mixed:sText - string to check
+ */
+ function ( sData )
+ {
+ /* Allow zero length strings as a number */
+ if ( typeof sData === 'number' )
+ {
+ return 'numeric';
+ }
+ else if ( typeof sData !== 'string' )
+ {
+ return null;
+ }
+
+ var sValidFirstChars = "0123456789-";
+ var sValidChars = "0123456789.";
+ var Char;
+ var bDecimal = false;
+
+ /* Check for a valid first char (no period and allow negatives) */
+ Char = sData.charAt(0);
+ if (sValidFirstChars.indexOf(Char) == -1)
+ {
+ return null;
+ }
+
+ /* Check all the other characters are valid */
+ for ( var i=1 ; i<sData.length ; i++ )
+ {
+ Char = sData.charAt(i);
+ if (sValidChars.indexOf(Char) == -1)
+ {
+ return null;
+ }
+
+ /* Only allowed one decimal place... */
+ if ( Char == "." )
+ {
+ if ( bDecimal )
+ {
+ return null;
+ }
+ bDecimal = true;
+ }
+ }
+
+ return 'numeric';
+ },
+
+ /*
+ * Function: -
+ * Purpose: Check to see if a string is actually a formatted date
+ * Returns: string:'date' or null
+ * Inputs: string:sText - string to check
+ */
+ function ( sData )
+ {
+ var iParse = Date.parse(sData);
+ if ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )
+ {
+ return 'date';
+ }
+ return null;
+ },
+
+ /*
+ * Function: -
+ * Purpose: Check to see if a string should be treated as an HTML string
+ * Returns: string:'html' or null
+ * Inputs: string:sText - string to check
+ */
+ function ( sData )
+ {
+ if ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )
+ {
+ return 'html';
+ }
+ return null;
+ }
+ ] );
+
+
+ // jQuery aliases
+ $.fn.DataTable = DataTable;
+ $.fn.dataTable = DataTable;
+ $.fn.dataTableSettings = DataTable.settings;
+ $.fn.dataTableExt = DataTable.ext;
+
+
+ // Information about events fired by DataTables - for documentation.
+ /**
+ * Draw event, fired whenever the table is redrawn on the page, at the same point as
+ * fnDrawCallback. This may be useful for binding events or performing calculations when
+ * the table is altered at all.
+ * @name DataTable#draw
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Filter event, fired when the filtering applied to the table (using the build in global
+ * global filter, or column filters) is altered.
+ * @name DataTable#filter
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Page change event, fired when the paging of the table is altered.
+ * @name DataTable#page
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * Sort event, fired when the sorting applied to the table is altered.
+ * @name DataTable#sort
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+
+ /**
+ * DataTables initialisation complete event, fired when the table is fully drawn,
+ * including Ajax data loaded, if Ajax data is required.
+ * @name DataTable#init
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The JSON object request from the server - only
+ * present if client-side Ajax sourced data is used</li></ol>
+ */
+
+ /**
+ * State save event, fired when the table has changed state a new state save is required.
+ * This method allows modification of the state saving object prior to actually doing the
+ * save, including addition or other state properties (for plug-ins) or modification
+ * of a DataTables core property.
+ * @name DataTable#stateSaveParams
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The state information to be saved
+ */
+
+ /**
+ * State load event, fired when the table is loading state from the stored data, but
+ * prior to the settings object being modified by the saved state - allowing modification
+ * of the saved state is required or loading of state for a plug-in.
+ * @name DataTable#stateLoadParams
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The saved state information
+ */
+
+ /**
+ * State loaded event, fired when state has been loaded from stored data and the settings
+ * object has been modified by the loaded data.
+ * @name DataTable#stateLoaded
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {object} json The saved state information
+ */
+
+ /**
+ * Processing event, fired when DataTables is doing some kind of processing (be it,
+ * sort, filter or anything else). Can be used to indicate to the end user that
+ * there is something happening, or that something has finished.
+ * @name DataTable#processing
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} oSettings DataTables settings object
+ * @param {boolean} bShow Flag for if DataTables is doing processing or not
+ */
+
+ /**
+ * Ajax (XHR) event, fired whenever an Ajax request is completed from a request to
+ * made to the server for new data (note that this trigger is called in fnServerData,
+ * if you override fnServerData and which to use this event, you need to trigger it in
+ * you success function).
+ * @name DataTable#xhr
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ * @param {object} json JSON returned from the server
+ */
+
+ /**
+ * Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing
+ * the bDestroy:true parameter in the initialisation object. This can be used to remove
+ * bound events, added DOM nodes, etc.
+ * @name DataTable#destroy
+ * @event
+ * @param {event} e jQuery event object
+ * @param {object} o DataTables settings object {@link DataTable.models.oSettings}
+ */
+}));
+
+}(window, document));
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js
new file mode 100644
index 00000000..02694a4a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js
@@ -0,0 +1,155 @@
+/*
+ * File: jquery.dataTables.min.js
+ * Version: 1.9.4
+ * Author: Allan Jardine (www.sprymedia.co.uk)
+ * Info: www.datatables.net
+ *
+ * Copyright 2008-2012 Allan Jardine, all rights reserved.
+ *
+ * This source file is free software, under either the GPL v2 license or a
+ * BSD style license, available at:
+ * http://datatables.net/license_gpl2
+ * http://datatables.net/license_bsd
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+ */
+(function(X,l,n){var L=function(h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSortJUI,nTh:b?b:l.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.oDefaults:d});a.aoColumns.push(c);if(a.aoPreSearchCols[d]===n||null===a.aoPreSearchCols[d])a.aoPreSearchCols[d]=h.extend({},j.models.oSearch);else if(c=a.aoPreSearchCols[d],
+c.bRegex===n&&(c.bRegex=!0),c.bSmart===n&&(c.bSmart=!0),c.bCaseInsensitive===n)c.bCaseInsensitive=!0;m(a,d,null)}function m(a,b,c){var d=a.aoColumns[b];c!==n&&null!==c&&(c.mDataProp&&!c.mData&&(c.mData=c.mDataProp),c.sType!==n&&(d.sType=c.sType,d._bAutoType=!1),h.extend(d,c),p(d,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(d.aDataSort=[c.iDataSort]),p(d,c,"aDataSort"));var i=d.mRender?Q(d.mRender):null,f=Q(d.mData);d.fnGetData=function(a,b){var c=f(a,b);return d.mRender&&b&&""!==b?i(c,b,a):c};d.fnSetData=
+L(d.mData);a.oFeatures.bSort||(d.bSortable=!1);!d.bSortable||-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableNone,d.sSortingClassJUI=""):-1==h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortable,d.sSortingClassJUI=a.oClasses.sSortJUI):-1!=h.inArray("asc",d.asSorting)&&-1==h.inArray("desc",d.asSorting)?(d.sSortingClass=a.oClasses.sSortableAsc,d.sSortingClassJUI=a.oClasses.sSortJUIAscAllowed):-1==
+h.inArray("asc",d.asSorting)&&-1!=h.inArray("desc",d.asSorting)&&(d.sSortingClass=a.oClasses.sSortableDesc,d.sSortingClassJUI=a.oClasses.sSortJUIDescAllowed)}function k(a){if(!1===a.oFeatures.bAutoWidth)return!1;da(a);for(var b=0,c=a.aoColumns.length;b<c;b++)a.aoColumns[b].nTh.style.width=a.aoColumns[b].sWidth}function G(a,b){var c=r(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function R(a,b){var c=r(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function t(a){return r(a,"bVisible").length}
+function r(a,b){var c=[];h.map(a.aoColumns,function(a,i){a[b]&&c.push(i)});return c}function B(a){for(var b=j.ext.aTypes,c=b.length,d=0;d<c;d++){var i=b[d](a);if(null!==i)return i}return"string"}function u(a,b){for(var c=b.split(","),d=[],i=0,f=a.aoColumns.length;i<f;i++)for(var g=0;g<f;g++)if(a.aoColumns[i].sName==c[g]){d.push(g);break}return d}function M(a){for(var b="",c=0,d=a.aoColumns.length;c<d;c++)b+=a.aoColumns[c].sName+",";return b.length==d?"":b.slice(0,-1)}function ta(a,b,c,d){var i,f,
+g,e,w;if(b)for(i=b.length-1;0<=i;i--){var j=b[i].aTargets;h.isArray(j)||D(a,1,"aTargets must be an array of targets, not a "+typeof j);f=0;for(g=j.length;f<g;f++)if("number"===typeof j[f]&&0<=j[f]){for(;a.aoColumns.length<=j[f];)o(a);d(j[f],b[i])}else if("number"===typeof j[f]&&0>j[f])d(a.aoColumns.length+j[f],b[i]);else if("string"===typeof j[f]){e=0;for(w=a.aoColumns.length;e<w;e++)("_all"==j[f]||h(a.aoColumns[e].nTh).hasClass(j[f]))&&d(e,b[i])}}if(c){i=0;for(a=c.length;i<a;i++)d(i,c[i])}}function H(a,
+b){var c;c=h.isArray(b)?b.slice():h.extend(!0,{},b);var d=a.aoData.length,i=h.extend(!0,{},j.models.oRow);i._aData=c;a.aoData.push(i);for(var f,i=0,g=a.aoColumns.length;i<g;i++)c=a.aoColumns[i],"function"===typeof c.fnRender&&c.bUseRendered&&null!==c.mData?F(a,d,i,S(a,d,i)):F(a,d,i,v(a,d,i)),c._bAutoType&&"string"!=c.sType&&(f=v(a,d,i,"type"),null!==f&&""!==f&&(f=B(f),null===c.sType?c.sType=f:c.sType!=f&&"html"!=c.sType&&(c.sType="string")));a.aiDisplayMaster.push(d);a.oFeatures.bDeferRender||ea(a,
+d);return d}function ua(a){var b,c,d,i,f,g,e;if(a.bDeferLoading||null===a.sAjaxSource)for(b=a.nTBody.firstChild;b;){if("TR"==b.nodeName.toUpperCase()){c=a.aoData.length;b._DT_RowIndex=c;a.aoData.push(h.extend(!0,{},j.models.oRow,{nTr:b}));a.aiDisplayMaster.push(c);f=b.firstChild;for(d=0;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)F(a,c,d,h.trim(f.innerHTML)),d++;f=f.nextSibling}}b=b.nextSibling}i=T(a);d=[];b=0;for(c=i.length;b<c;b++)for(f=i[b].firstChild;f;)g=f.nodeName.toUpperCase(),("TD"==
+g||"TH"==g)&&d.push(f),f=f.nextSibling;c=0;for(i=a.aoColumns.length;c<i;c++){e=a.aoColumns[c];null===e.sTitle&&(e.sTitle=e.nTh.innerHTML);var w=e._bAutoType,o="function"===typeof e.fnRender,k=null!==e.sClass,n=e.bVisible,m,p;if(w||o||k||!n){g=0;for(b=a.aoData.length;g<b;g++)f=a.aoData[g],m=d[g*i+c],w&&"string"!=e.sType&&(p=v(a,g,c,"type"),""!==p&&(p=B(p),null===e.sType?e.sType=p:e.sType!=p&&"html"!=e.sType&&(e.sType="string"))),e.mRender?m.innerHTML=v(a,g,c,"display"):e.mData!==c&&(m.innerHTML=v(a,
+g,c,"display")),o&&(p=S(a,g,c),m.innerHTML=p,e.bUseRendered&&F(a,g,c,p)),k&&(m.className+=" "+e.sClass),n?f._anHidden[c]=null:(f._anHidden[c]=m,m.parentNode.removeChild(m)),e.fnCreatedCell&&e.fnCreatedCell.call(a.oInstance,m,v(a,g,c,"display"),f._aData,g,c)}}if(0!==a.aoRowCreatedCallback.length){b=0;for(c=a.aoData.length;b<c;b++)f=a.aoData[b],A(a,"aoRowCreatedCallback",null,[f.nTr,f._aData,b])}}function I(a,b){return b._DT_RowIndex!==n?b._DT_RowIndex:null}function fa(a,b,c){for(var b=J(a,b),d=0,a=
+a.aoColumns.length;d<a;d++)if(b[d]===c)return d;return-1}function Y(a,b,c,d){for(var i=[],f=0,g=d.length;f<g;f++)i.push(v(a,b,d[f],c));return i}function v(a,b,c,d){var i=a.aoColumns[c];if((c=i.fnGetData(a.aoData[b]._aData,d))===n)return a.iDrawError!=a.iDraw&&null===i.sDefaultContent&&(D(a,0,"Requested unknown parameter "+("function"==typeof i.mData?"{mData function}":"'"+i.mData+"'")+" from the data source for row "+b),a.iDrawError=a.iDraw),i.sDefaultContent;if(null===c&&null!==i.sDefaultContent)c=
+i.sDefaultContent;else if("function"===typeof c)return c();return"display"==d&&null===c?"":c}function F(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d)}function Q(a){if(null===a)return function(){return null};if("function"===typeof a)return function(b,d,i){return a(b,d,i)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("["))){var b=function(a,d,i){var f=i.split("."),g;if(""!==i){var e=0;for(g=f.length;e<g;e++){if(i=f[e].match(U)){f[e]=f[e].replace(U,"");""!==f[e]&&(a=a[f[e]]);
+g=[];f.splice(0,e+1);for(var f=f.join("."),e=0,h=a.length;e<h;e++)g.push(b(a[e],d,f));a=i[0].substring(1,i[0].length-1);a=""===a?g:g.join(a);break}if(null===a||a[f[e]]===n)return n;a=a[f[e]]}}return a};return function(c,d){return b(c,d,a)}}return function(b){return b[a]}}function L(a){if(null===a)return function(){};if("function"===typeof a)return function(b,d){a(b,"set",d)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("["))){var b=function(a,d,i){var i=i.split("."),f,g,e=0;for(g=
+i.length-1;e<g;e++){if(f=i[e].match(U)){i[e]=i[e].replace(U,"");a[i[e]]=[];f=i.slice();f.splice(0,e+1);g=f.join(".");for(var h=0,j=d.length;h<j;h++)f={},b(f,d[h],g),a[i[e]].push(f);return}if(null===a[i[e]]||a[i[e]]===n)a[i[e]]={};a=a[i[e]]}a[i[i.length-1].replace(U,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Z(a){for(var b=[],c=a.aoData.length,d=0;d<c;d++)b.push(a.aoData[d]._aData);return b}function ga(a){a.aoData.splice(0,a.aoData.length);a.aiDisplayMaster.splice(0,
+a.aiDisplayMaster.length);a.aiDisplay.splice(0,a.aiDisplay.length);y(a)}function ha(a,b){for(var c=-1,d=0,i=a.length;d<i;d++)a[d]==b?c=d:a[d]>b&&a[d]--; -1!=c&&a.splice(c,1)}function S(a,b,c){var d=a.aoColumns[c];return d.fnRender({iDataRow:b,iDataColumn:c,oSettings:a,aData:a.aoData[b]._aData,mDataProp:d.mData},v(a,b,c,"display"))}function ea(a,b){var c=a.aoData[b],d;if(null===c.nTr){c.nTr=l.createElement("tr");c.nTr._DT_RowIndex=b;c._aData.DT_RowId&&(c.nTr.id=c._aData.DT_RowId);c._aData.DT_RowClass&&
+(c.nTr.className=c._aData.DT_RowClass);for(var i=0,f=a.aoColumns.length;i<f;i++){var g=a.aoColumns[i];d=l.createElement(g.sCellType);d.innerHTML="function"===typeof g.fnRender&&(!g.bUseRendered||null===g.mData)?S(a,b,i):v(a,b,i,"display");null!==g.sClass&&(d.className=g.sClass);g.bVisible?(c.nTr.appendChild(d),c._anHidden[i]=null):c._anHidden[i]=d;g.fnCreatedCell&&g.fnCreatedCell.call(a.oInstance,d,v(a,b,i,"display"),c._aData,b,i)}A(a,"aoRowCreatedCallback",null,[c.nTr,c._aData,b])}}function va(a){var b,
+c,d;if(0!==h("th, td",a.nTHead).length){b=0;for(d=a.aoColumns.length;b<d;b++)if(c=a.aoColumns[b].nTh,c.setAttribute("role","columnheader"),a.aoColumns[b].bSortable&&(c.setAttribute("tabindex",a.iTabIndex),c.setAttribute("aria-controls",a.sTableId)),null!==a.aoColumns[b].sClass&&h(c).addClass(a.aoColumns[b].sClass),a.aoColumns[b].sTitle!=c.innerHTML)c.innerHTML=a.aoColumns[b].sTitle}else{var i=l.createElement("tr");b=0;for(d=a.aoColumns.length;b<d;b++)c=a.aoColumns[b].nTh,c.innerHTML=a.aoColumns[b].sTitle,
+c.setAttribute("tabindex","0"),null!==a.aoColumns[b].sClass&&h(c).addClass(a.aoColumns[b].sClass),i.appendChild(c);h(a.nTHead).html("")[0].appendChild(i);V(a.aoHeader,a.nTHead)}h(a.nTHead).children("tr").attr("role","row");if(a.bJUI){b=0;for(d=a.aoColumns.length;b<d;b++){c=a.aoColumns[b].nTh;i=l.createElement("div");i.className=a.oClasses.sSortJUIWrapper;h(c).contents().appendTo(i);var f=l.createElement("span");f.className=a.oClasses.sSortIcon;i.appendChild(f);c.appendChild(i)}}if(a.oFeatures.bSort)for(b=
+0;b<a.aoColumns.length;b++)!1!==a.aoColumns[b].bSortable?ia(a,a.aoColumns[b].nTh,b):h(a.aoColumns[b].nTh).addClass(a.oClasses.sSortableNone);""!==a.oClasses.sFooterTH&&h(a.nTFoot).children("tr").children("th").addClass(a.oClasses.sFooterTH);if(null!==a.nTFoot){c=N(a,null,a.aoFooter);b=0;for(d=a.aoColumns.length;b<d;b++)c[b]&&(a.aoColumns[b].nTf=c[b],a.aoColumns[b].sClass&&h(c[b]).addClass(a.aoColumns[b].sClass))}}function W(a,b,c){var d,i,f,g=[],e=[],h=a.aoColumns.length,j;c===n&&(c=!1);d=0;for(i=
+b.length;d<i;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=h-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);e.push([])}d=0;for(i=g.length;d<i;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(j=h=1,e[d][f]===n){a.appendChild(g[d][f].cell);for(e[d][f]=1;g[d+h]!==n&&g[d][f].cell==g[d+h][f].cell;)e[d+h][f]=1,h++;for(;g[d][f+j]!==n&&g[d][f].cell==g[d][f+j].cell;){for(c=0;c<h;c++)e[d+c][f+j]=1;j++}g[d][f].cell.rowSpan=h;g[d][f].cell.colSpan=j}}}function x(a){var b=
+A(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))E(a,!1);else{var c,d,b=[],i=0,f=a.asStripeClasses.length;c=a.aoOpenRows.length;a.bDrawing=!0;a.iInitDisplayStart!==n&&-1!=a.iInitDisplayStart&&(a._iDisplayStart=a.oFeatures.bServerSide?a.iInitDisplayStart:a.iInitDisplayStart>=a.fnRecordsDisplay()?0:a.iInitDisplayStart,a.iInitDisplayStart=-1,y(a));if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++;else if(a.oFeatures.bServerSide){if(!a.bDestroying&&!wa(a))return}else a.iDraw++;if(0!==a.aiDisplay.length){var g=
+a._iDisplayStart;d=a._iDisplayEnd;a.oFeatures.bServerSide&&(g=0,d=a.aoData.length);for(;g<d;g++){var e=a.aoData[a.aiDisplay[g]];null===e.nTr&&ea(a,a.aiDisplay[g]);var j=e.nTr;if(0!==f){var o=a.asStripeClasses[i%f];e._sRowStripe!=o&&(h(j).removeClass(e._sRowStripe).addClass(o),e._sRowStripe=o)}A(a,"aoRowCallback",null,[j,a.aoData[a.aiDisplay[g]]._aData,i,g]);b.push(j);i++;if(0!==c)for(e=0;e<c;e++)if(j==a.aoOpenRows[e].nParent){b.push(a.aoOpenRows[e].nTr);break}}}else b[0]=l.createElement("tr"),a.asStripeClasses[0]&&
+(b[0].className=a.asStripeClasses[0]),c=a.oLanguage,f=c.sZeroRecords,1==a.iDraw&&null!==a.sAjaxSource&&!a.oFeatures.bServerSide?f=c.sLoadingRecords:c.sEmptyTable&&0===a.fnRecordsTotal()&&(f=c.sEmptyTable),c=l.createElement("td"),c.setAttribute("valign","top"),c.colSpan=t(a),c.className=a.oClasses.sRowEmpty,c.innerHTML=ja(a,f),b[i].appendChild(c);A(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Z(a),a._iDisplayStart,a.fnDisplayEnd(),a.aiDisplay]);A(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],
+Z(a),a._iDisplayStart,a.fnDisplayEnd(),a.aiDisplay]);i=l.createDocumentFragment();c=l.createDocumentFragment();if(a.nTBody){f=a.nTBody.parentNode;c.appendChild(a.nTBody);if(!a.oScroll.bInfinite||!a._bInitComplete||a.bSorted||a.bFiltered)for(;c=a.nTBody.firstChild;)a.nTBody.removeChild(c);c=0;for(d=b.length;c<d;c++)i.appendChild(b[c]);a.nTBody.appendChild(i);null!==f&&f.appendChild(a.nTBody)}A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1;a.oFeatures.bServerSide&&(E(a,!1),
+a._bInitComplete||$(a))}}function aa(a){a.oFeatures.bSort?O(a,a.oPreviousSearch):a.oFeatures.bFilter?K(a,a.oPreviousSearch):(y(a),x(a))}function xa(a){var b=h("<div></div>")[0];a.nTable.parentNode.insertBefore(b,a.nTable);a.nTableWrapper=h('<div id="'+a.sTableId+'_wrapper" class="'+a.oClasses.sWrapper+'" role="grid"></div>')[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var c=a.nTableWrapper,d=a.sDom.split(""),i,f,g,e,w,o,k,m=0;m<d.length;m++){f=0;g=d[m];if("<"==g){e=h("<div></div>")[0];w=d[m+
+1];if("'"==w||'"'==w){o="";for(k=2;d[m+k]!=w;)o+=d[m+k],k++;"H"==o?o=a.oClasses.sJUIHeader:"F"==o&&(o=a.oClasses.sJUIFooter);-1!=o.indexOf(".")?(w=o.split("."),e.id=w[0].substr(1,w[0].length-1),e.className=w[1]):"#"==o.charAt(0)?e.id=o.substr(1,o.length-1):e.className=o;m+=k}c.appendChild(e);c=e}else if(">"==g)c=c.parentNode;else if("l"==g&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange)i=ya(a),f=1;else if("f"==g&&a.oFeatures.bFilter)i=za(a),f=1;else if("r"==g&&a.oFeatures.bProcessing)i=Aa(a),f=
+1;else if("t"==g)i=Ba(a),f=1;else if("i"==g&&a.oFeatures.bInfo)i=Ca(a),f=1;else if("p"==g&&a.oFeatures.bPaginate)i=Da(a),f=1;else if(0!==j.ext.aoFeatures.length){e=j.ext.aoFeatures;k=0;for(w=e.length;k<w;k++)if(g==e[k].cFeature){(i=e[k].fnInit(a))&&(f=1);break}}1==f&&null!==i&&("object"!==typeof a.aanFeatures[g]&&(a.aanFeatures[g]=[]),a.aanFeatures[g].push(i),c.appendChild(i))}b.parentNode.replaceChild(a.nTableWrapper,b)}function V(a,b){var c=h(b).children("tr"),d,i,f,g,e,j,o,k,m,p;a.splice(0,a.length);
+f=0;for(j=c.length;f<j;f++)a.push([]);f=0;for(j=c.length;f<j;f++){d=c[f];for(i=d.firstChild;i;){if("TD"==i.nodeName.toUpperCase()||"TH"==i.nodeName.toUpperCase()){k=1*i.getAttribute("colspan");m=1*i.getAttribute("rowspan");k=!k||0===k||1===k?1:k;m=!m||0===m||1===m?1:m;g=0;for(e=a[f];e[g];)g++;o=g;p=1===k?!0:!1;for(e=0;e<k;e++)for(g=0;g<m;g++)a[f+g][o+e]={cell:i,unique:p},a[f+g].nTr=d}i=i.nextSibling}}}function N(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],V(c,b)));for(var b=0,i=c.length;b<i;b++)for(var f=
+0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function wa(a){if(a.bAjaxDataGet){a.iDraw++;E(a,!0);var b=Ea(a);ka(a,b);a.fnServerData.call(a.oInstance,a.sAjaxSource,b,function(b){Fa(a,b)},a);return!1}return!0}function Ea(a){var b=a.aoColumns.length,c=[],d,i,f,g;c.push({name:"sEcho",value:a.iDraw});c.push({name:"iColumns",value:b});c.push({name:"sColumns",value:M(a)});c.push({name:"iDisplayStart",value:a._iDisplayStart});c.push({name:"iDisplayLength",
+value:!1!==a.oFeatures.bPaginate?a._iDisplayLength:-1});for(f=0;f<b;f++)d=a.aoColumns[f].mData,c.push({name:"mDataProp_"+f,value:"function"===typeof d?"function":d});if(!1!==a.oFeatures.bFilter){c.push({name:"sSearch",value:a.oPreviousSearch.sSearch});c.push({name:"bRegex",value:a.oPreviousSearch.bRegex});for(f=0;f<b;f++)c.push({name:"sSearch_"+f,value:a.aoPreSearchCols[f].sSearch}),c.push({name:"bRegex_"+f,value:a.aoPreSearchCols[f].bRegex}),c.push({name:"bSearchable_"+f,value:a.aoColumns[f].bSearchable})}if(!1!==
+a.oFeatures.bSort){var e=0;d=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(f=0;f<d.length;f++){i=a.aoColumns[d[f][0]].aDataSort;for(g=0;g<i.length;g++)c.push({name:"iSortCol_"+e,value:i[g]}),c.push({name:"sSortDir_"+e,value:d[f][1]}),e++}c.push({name:"iSortingCols",value:e});for(f=0;f<b;f++)c.push({name:"bSortable_"+f,value:a.aoColumns[f].bSortable})}return c}function ka(a,b){A(a,"aoServerParams","serverParams",[b])}function Fa(a,b){if(b.sEcho!==n){if(1*b.sEcho<
+a.iDraw)return;a.iDraw=1*b.sEcho}(!a.oScroll.bInfinite||a.oScroll.bInfinite&&(a.bSorted||a.bFiltered))&&ga(a);a._iRecordsTotal=parseInt(b.iTotalRecords,10);a._iRecordsDisplay=parseInt(b.iTotalDisplayRecords,10);var c=M(a),c=b.sColumns!==n&&""!==c&&b.sColumns!=c,d;c&&(d=u(a,b.sColumns));for(var i=Q(a.sAjaxDataProp)(b),f=0,g=i.length;f<g;f++)if(c){for(var e=[],h=0,j=a.aoColumns.length;h<j;h++)e.push(i[f][d[h]]);H(a,e)}else H(a,i[f]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;x(a);a.bAjaxDataGet=
+!0;E(a,!1)}function za(a){var b=a.oPreviousSearch,c=a.oLanguage.sSearch,c=-1!==c.indexOf("_INPUT_")?c.replace("_INPUT_",'<input type="text" />'):""===c?'<input type="text" />':c+' <input type="text" />',d=l.createElement("div");d.className=a.oClasses.sFilter;d.innerHTML="<label>"+c+"</label>";a.aanFeatures.f||(d.id=a.sTableId+"_filter");c=h('input[type="text"]',d);d._DT_Input=c[0];c.val(b.sSearch.replace('"',"&quot;"));c.bind("keyup.DT",function(){for(var c=a.aanFeatures.f,d=this.value===""?"":this.value,
+g=0,e=c.length;g<e;g++)c[g]!=h(this).parents("div.dataTables_filter")[0]&&h(c[g]._DT_Input).val(d);d!=b.sSearch&&K(a,{sSearch:d,bRegex:b.bRegex,bSmart:b.bSmart,bCaseInsensitive:b.bCaseInsensitive})});c.attr("aria-controls",a.sTableId).bind("keypress.DT",function(a){if(a.keyCode==13)return false});return d}function K(a,b,c){var d=a.oPreviousSearch,i=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};if(a.oFeatures.bServerSide)f(b);
+else{Ga(a,b.sSearch,c,b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<a.aoPreSearchCols.length;b++)Ha(a,i[b].sSearch,b,i[b].bRegex,i[b].bSmart,i[b].bCaseInsensitive);Ia(a)}a.bFiltered=!0;h(a.oInstance).trigger("filter",a);a._iDisplayStart=0;y(a);x(a);la(a,0)}function Ia(a){for(var b=j.ext.afnFiltering,c=r(a,"bSearchable"),d=0,i=b.length;d<i;d++)for(var f=0,g=0,e=a.aiDisplay.length;g<e;g++){var h=a.aiDisplay[g-f];b[d](a,Y(a,h,"filter",c),h)||(a.aiDisplay.splice(g-f,1),f++)}}function Ha(a,b,c,
+d,i,f){if(""!==b)for(var g=0,b=ma(b,d,i,f),d=a.aiDisplay.length-1;0<=d;d--)i=Ja(v(a,a.aiDisplay[d],c,"filter"),a.aoColumns[c].sType),b.test(i)||(a.aiDisplay.splice(d,1),g++)}function Ga(a,b,c,d,i,f){d=ma(b,d,i,f);i=a.oPreviousSearch;c||(c=0);0!==j.ext.afnFiltering.length&&(c=1);if(0>=b.length)a.aiDisplay.splice(0,a.aiDisplay.length),a.aiDisplay=a.aiDisplayMaster.slice();else if(a.aiDisplay.length==a.aiDisplayMaster.length||i.sSearch.length>b.length||1==c||0!==b.indexOf(i.sSearch)){a.aiDisplay.splice(0,
+a.aiDisplay.length);la(a,1);for(b=0;b<a.aiDisplayMaster.length;b++)d.test(a.asDataSearch[b])&&a.aiDisplay.push(a.aiDisplayMaster[b])}else for(b=c=0;b<a.asDataSearch.length;b++)d.test(a.asDataSearch[b])||(a.aiDisplay.splice(b-c,1),c++)}function la(a,b){if(!a.oFeatures.bServerSide){a.asDataSearch=[];for(var c=r(a,"bSearchable"),d=1===b?a.aiDisplayMaster:a.aiDisplay,i=0,f=d.length;i<f;i++)a.asDataSearch[i]=na(a,Y(a,d[i],"filter",c))}}function na(a,b){var c=b.join(" ");-1!==c.indexOf("&")&&(c=h("<div>").html(c).text());
+return c.replace(/[\n\r]/g," ")}function ma(a,b,c,d){if(c)return a=b?a.split(" "):oa(a).split(" "),a="^(?=.*?"+a.join(")(?=.*?")+").*$",RegExp(a,d?"i":"");a=b?a:oa(a);return RegExp(a,d?"i":"")}function Ja(a,b){return"function"===typeof j.ext.ofnSearch[b]?j.ext.ofnSearch[b](a):null===a?"":"html"==b?a.replace(/[\r\n]/g," ").replace(/<.*?>/g,""):"string"===typeof a?a.replace(/[\r\n]/g," "):a}function oa(a){return a.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),
+"\\$1")}function Ca(a){var b=l.createElement("div");b.className=a.oClasses.sInfo;a.aanFeatures.i||(a.aoDrawCallback.push({fn:Ka,sName:"information"}),b.id=a.sTableId+"_info");a.nTable.setAttribute("aria-describedby",a.sTableId+"_info");return b}function Ka(a){if(a.oFeatures.bInfo&&0!==a.aanFeatures.i.length){var b=a.oLanguage,c=a._iDisplayStart+1,d=a.fnDisplayEnd(),i=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g;g=0===f?b.sInfoEmpty:b.sInfo;f!=i&&(g+=" "+b.sInfoFiltered);g+=b.sInfoPostFix;g=ja(a,g);
+null!==b.fnInfoCallback&&(g=b.fnInfoCallback.call(a.oInstance,a,c,d,i,f,g));a=a.aanFeatures.i;b=0;for(c=a.length;b<c;b++)h(a[b]).html(g)}}function ja(a,b){var c=a.fnFormatNumber(a._iDisplayStart+1),d=a.fnDisplayEnd(),d=a.fnFormatNumber(d),i=a.fnRecordsDisplay(),i=a.fnFormatNumber(i),f=a.fnRecordsTotal(),f=a.fnFormatNumber(f);a.oScroll.bInfinite&&(c=a.fnFormatNumber(1));return b.replace(/_START_/g,c).replace(/_END_/g,d).replace(/_TOTAL_/g,i).replace(/_MAX_/g,f)}function ba(a){var b,c,d=a.iInitDisplayStart;
+if(!1===a.bInitialised)setTimeout(function(){ba(a)},200);else{xa(a);va(a);W(a,a.aoHeader);a.nTFoot&&W(a,a.aoFooter);E(a,!0);a.oFeatures.bAutoWidth&&da(a);b=0;for(c=a.aoColumns.length;b<c;b++)null!==a.aoColumns[b].sWidth&&(a.aoColumns[b].nTh.style.width=q(a.aoColumns[b].sWidth));a.oFeatures.bSort?O(a):a.oFeatures.bFilter?K(a,a.oPreviousSearch):(a.aiDisplay=a.aiDisplayMaster.slice(),y(a),x(a));null!==a.sAjaxSource&&!a.oFeatures.bServerSide?(c=[],ka(a,c),a.fnServerData.call(a.oInstance,a.sAjaxSource,
+c,function(c){var f=a.sAjaxDataProp!==""?Q(a.sAjaxDataProp)(c):c;for(b=0;b<f.length;b++)H(a,f[b]);a.iInitDisplayStart=d;if(a.oFeatures.bSort)O(a);else{a.aiDisplay=a.aiDisplayMaster.slice();y(a);x(a)}E(a,false);$(a,c)},a)):a.oFeatures.bServerSide||(E(a,!1),$(a))}}function $(a,b){a._bInitComplete=!0;A(a,"aoInitComplete","init",[a,b])}function pa(a){var b=j.defaults.oLanguage;!a.sEmptyTable&&(a.sZeroRecords&&"No data available in table"===b.sEmptyTable)&&p(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&
+(a.sZeroRecords&&"Loading..."===b.sLoadingRecords)&&p(a,a,"sZeroRecords","sLoadingRecords")}function ya(a){if(a.oScroll.bInfinite)return null;var b='<select size="1" '+('name="'+a.sTableId+'_length"')+">",c,d,i=a.aLengthMenu;if(2==i.length&&"object"===typeof i[0]&&"object"===typeof i[1]){c=0;for(d=i[0].length;c<d;c++)b+='<option value="'+i[0][c]+'">'+i[1][c]+"</option>"}else{c=0;for(d=i.length;c<d;c++)b+='<option value="'+i[c]+'">'+i[c]+"</option>"}b+="</select>";i=l.createElement("div");a.aanFeatures.l||
+(i.id=a.sTableId+"_length");i.className=a.oClasses.sLength;i.innerHTML="<label>"+a.oLanguage.sLengthMenu.replace("_MENU_",b)+"</label>";h('select option[value="'+a._iDisplayLength+'"]',i).attr("selected",!0);h("select",i).bind("change.DT",function(){var b=h(this).val(),i=a.aanFeatures.l;c=0;for(d=i.length;c<d;c++)i[c]!=this.parentNode&&h("select",i[c]).val(b);a._iDisplayLength=parseInt(b,10);y(a);if(a.fnDisplayEnd()==a.fnRecordsDisplay()){a._iDisplayStart=a.fnDisplayEnd()-a._iDisplayLength;if(a._iDisplayStart<
+0)a._iDisplayStart=0}if(a._iDisplayLength==-1)a._iDisplayStart=0;x(a)});h("select",i).attr("aria-controls",a.sTableId);return i}function y(a){a._iDisplayEnd=!1===a.oFeatures.bPaginate?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength>a.aiDisplay.length||-1==a._iDisplayLength?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Da(a){if(a.oScroll.bInfinite)return null;var b=l.createElement("div");b.className=a.oClasses.sPaging+a.sPaginationType;j.ext.oPagination[a.sPaginationType].fnInit(a,
+b,function(a){y(a);x(a)});a.aanFeatures.p||a.aoDrawCallback.push({fn:function(a){j.ext.oPagination[a.sPaginationType].fnUpdate(a,function(a){y(a);x(a)})},sName:"pagination"});return b}function qa(a,b){var c=a._iDisplayStart;if("number"===typeof b)a._iDisplayStart=b*a._iDisplayLength,a._iDisplayStart>a.fnRecordsDisplay()&&(a._iDisplayStart=0);else if("first"==b)a._iDisplayStart=0;else if("previous"==b)a._iDisplayStart=0<=a._iDisplayLength?a._iDisplayStart-a._iDisplayLength:0,0>a._iDisplayStart&&(a._iDisplayStart=
+0);else if("next"==b)0<=a._iDisplayLength?a._iDisplayStart+a._iDisplayLength<a.fnRecordsDisplay()&&(a._iDisplayStart+=a._iDisplayLength):a._iDisplayStart=0;else if("last"==b)if(0<=a._iDisplayLength){var d=parseInt((a.fnRecordsDisplay()-1)/a._iDisplayLength,10)+1;a._iDisplayStart=(d-1)*a._iDisplayLength}else a._iDisplayStart=0;else D(a,0,"Unknown paging action: "+b);h(a.oInstance).trigger("page",a);return c!=a._iDisplayStart}function Aa(a){var b=l.createElement("div");a.aanFeatures.r||(b.id=a.sTableId+
+"_processing");b.innerHTML=a.oLanguage.sProcessing;b.className=a.oClasses.sProcessing;a.nTable.parentNode.insertBefore(b,a.nTable);return b}function E(a,b){if(a.oFeatures.bProcessing)for(var c=a.aanFeatures.r,d=0,i=c.length;d<i;d++)c[d].style.visibility=b?"visible":"hidden";h(a.oInstance).trigger("processing",[a,b])}function Ba(a){if(""===a.oScroll.sX&&""===a.oScroll.sY)return a.nTable;var b=l.createElement("div"),c=l.createElement("div"),d=l.createElement("div"),i=l.createElement("div"),f=l.createElement("div"),
+g=l.createElement("div"),e=a.nTable.cloneNode(!1),j=a.nTable.cloneNode(!1),o=a.nTable.getElementsByTagName("thead")[0],k=0===a.nTable.getElementsByTagName("tfoot").length?null:a.nTable.getElementsByTagName("tfoot")[0],m=a.oClasses;c.appendChild(d);f.appendChild(g);i.appendChild(a.nTable);b.appendChild(c);b.appendChild(i);d.appendChild(e);e.appendChild(o);null!==k&&(b.appendChild(f),g.appendChild(j),j.appendChild(k));b.className=m.sScrollWrapper;c.className=m.sScrollHead;d.className=m.sScrollHeadInner;
+i.className=m.sScrollBody;f.className=m.sScrollFoot;g.className=m.sScrollFootInner;a.oScroll.bAutoCss&&(c.style.overflow="hidden",c.style.position="relative",f.style.overflow="hidden",i.style.overflow="auto");c.style.border="0";c.style.width="100%";f.style.border="0";d.style.width=""!==a.oScroll.sXInner?a.oScroll.sXInner:"100%";e.removeAttribute("id");e.style.marginLeft="0";a.nTable.style.marginLeft="0";null!==k&&(j.removeAttribute("id"),j.style.marginLeft="0");d=h(a.nTable).children("caption");0<
+d.length&&(d=d[0],"top"===d._captionSide?e.appendChild(d):"bottom"===d._captionSide&&k&&j.appendChild(d));""!==a.oScroll.sX&&(c.style.width=q(a.oScroll.sX),i.style.width=q(a.oScroll.sX),null!==k&&(f.style.width=q(a.oScroll.sX)),h(i).scroll(function(){c.scrollLeft=this.scrollLeft;if(k!==null)f.scrollLeft=this.scrollLeft}));""!==a.oScroll.sY&&(i.style.height=q(a.oScroll.sY));a.aoDrawCallback.push({fn:La,sName:"scrolling"});a.oScroll.bInfinite&&h(i).scroll(function(){if(!a.bDrawing&&h(this).scrollTop()!==
+0&&h(this).scrollTop()+h(this).height()>h(a.nTable).height()-a.oScroll.iLoadGap&&a.fnDisplayEnd()<a.fnRecordsDisplay()){qa(a,"next");y(a);x(a)}});a.nScrollHead=c;a.nScrollFoot=f;return b}function La(a){var b=a.nScrollHead.getElementsByTagName("div")[0],c=b.getElementsByTagName("table")[0],d=a.nTable.parentNode,i,f,g,e,j,o,k,m,p=[],n=[],l=null!==a.nTFoot?a.nScrollFoot.getElementsByTagName("div")[0]:null,R=null!==a.nTFoot?l.getElementsByTagName("table")[0]:null,r=a.oBrowser.bScrollOversize,s=function(a){k=
+a.style;k.paddingTop="0";k.paddingBottom="0";k.borderTopWidth="0";k.borderBottomWidth="0";k.height=0};h(a.nTable).children("thead, tfoot").remove();i=h(a.nTHead).clone()[0];a.nTable.insertBefore(i,a.nTable.childNodes[0]);g=a.nTHead.getElementsByTagName("tr");e=i.getElementsByTagName("tr");null!==a.nTFoot&&(j=h(a.nTFoot).clone()[0],a.nTable.insertBefore(j,a.nTable.childNodes[1]),o=a.nTFoot.getElementsByTagName("tr"),j=j.getElementsByTagName("tr"));""===a.oScroll.sX&&(d.style.width="100%",b.parentNode.style.width=
+"100%");var t=N(a,i);i=0;for(f=t.length;i<f;i++)m=G(a,i),t[i].style.width=a.aoColumns[m].sWidth;null!==a.nTFoot&&C(function(a){a.style.width=""},j);a.oScroll.bCollapse&&""!==a.oScroll.sY&&(d.style.height=d.offsetHeight+a.nTHead.offsetHeight+"px");i=h(a.nTable).outerWidth();if(""===a.oScroll.sX){if(a.nTable.style.width="100%",r&&(h("tbody",d).height()>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(h(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else""!==a.oScroll.sXInner?a.nTable.style.width=
+q(a.oScroll.sXInner):i==h(d).width()&&h(d).height()<h(a.nTable).height()?(a.nTable.style.width=q(i-a.oScroll.iBarWidth),h(a.nTable).outerWidth()>i-a.oScroll.iBarWidth&&(a.nTable.style.width=q(i))):a.nTable.style.width=q(i);i=h(a.nTable).outerWidth();C(s,e);C(function(a){p.push(q(h(a).width()))},e);C(function(a,b){a.style.width=p[b]},g);h(e).height(0);null!==a.nTFoot&&(C(s,j),C(function(a){n.push(q(h(a).width()))},j),C(function(a,b){a.style.width=n[b]},o),h(j).height(0));C(function(a,b){a.innerHTML=
+"";a.style.width=p[b]},e);null!==a.nTFoot&&C(function(a,b){a.innerHTML="";a.style.width=n[b]},j);if(h(a.nTable).outerWidth()<i){g=d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")?i+a.oScroll.iBarWidth:i;if(r&&(d.scrollHeight>d.offsetHeight||"scroll"==h(d).css("overflow-y")))a.nTable.style.width=q(g-a.oScroll.iBarWidth);d.style.width=q(g);a.nScrollHead.style.width=q(g);null!==a.nTFoot&&(a.nScrollFoot.style.width=q(g));""===a.oScroll.sX?D(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width."):
+""!==a.oScroll.sXInner&&D(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else d.style.width=q("100%"),a.nScrollHead.style.width=q("100%"),null!==a.nTFoot&&(a.nScrollFoot.style.width=q("100%"));""===a.oScroll.sY&&r&&(d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth));""!==a.oScroll.sY&&a.oScroll.bCollapse&&(d.style.height=q(a.oScroll.sY),r=""!==a.oScroll.sX&&a.nTable.offsetWidth>
+d.offsetWidth?a.oScroll.iBarWidth:0,a.nTable.offsetHeight<d.offsetHeight&&(d.style.height=q(a.nTable.offsetHeight+r)));r=h(a.nTable).outerWidth();c.style.width=q(r);b.style.width=q(r);c=h(a.nTable).height()>d.clientHeight||"scroll"==h(d).css("overflow-y");b.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px";null!==a.nTFoot&&(R.style.width=q(r),l.style.width=q(r),l.style.paddingRight=c?a.oScroll.iBarWidth+"px":"0px");h(d).scroll();if(a.bSorted||a.bFiltered)d.scrollTop=0}function C(a,b,c){for(var d=
+0,i=0,f=b.length,g,e;i<f;){g=b[i].firstChild;for(e=c?c[i].firstChild:null;g;)1===g.nodeType&&(c?a(g,e,d):a(g,d),d++),g=g.nextSibling,e=c?e.nextSibling:null;i++}}function Ma(a,b){if(!a||null===a||""===a)return 0;b||(b=l.body);var c,d=l.createElement("div");d.style.width=q(a);b.appendChild(d);c=d.offsetWidth;b.removeChild(d);return c}function da(a){var b=0,c,d=0,i=a.aoColumns.length,f,e,j=h("th",a.nTHead),o=a.nTable.getAttribute("width");e=a.nTable.parentNode;for(f=0;f<i;f++)a.aoColumns[f].bVisible&&
+(d++,null!==a.aoColumns[f].sWidth&&(c=Ma(a.aoColumns[f].sWidthOrig,e),null!==c&&(a.aoColumns[f].sWidth=q(c)),b++));if(i==j.length&&0===b&&d==i&&""===a.oScroll.sX&&""===a.oScroll.sY)for(f=0;f<a.aoColumns.length;f++)c=h(j[f]).width(),null!==c&&(a.aoColumns[f].sWidth=q(c));else{b=a.nTable.cloneNode(!1);f=a.nTHead.cloneNode(!0);d=l.createElement("tbody");c=l.createElement("tr");b.removeAttribute("id");b.appendChild(f);null!==a.nTFoot&&(b.appendChild(a.nTFoot.cloneNode(!0)),C(function(a){a.style.width=
+""},b.getElementsByTagName("tr")));b.appendChild(d);d.appendChild(c);d=h("thead th",b);0===d.length&&(d=h("tbody tr:eq(0)>td",b));j=N(a,f);for(f=d=0;f<i;f++){var k=a.aoColumns[f];k.bVisible&&null!==k.sWidthOrig&&""!==k.sWidthOrig?j[f-d].style.width=q(k.sWidthOrig):k.bVisible?j[f-d].style.width="":d++}for(f=0;f<i;f++)a.aoColumns[f].bVisible&&(d=Na(a,f),null!==d&&(d=d.cloneNode(!0),""!==a.aoColumns[f].sContentPadding&&(d.innerHTML+=a.aoColumns[f].sContentPadding),c.appendChild(d)));e.appendChild(b);
+""!==a.oScroll.sX&&""!==a.oScroll.sXInner?b.style.width=q(a.oScroll.sXInner):""!==a.oScroll.sX?(b.style.width="",h(b).width()<e.offsetWidth&&(b.style.width=q(e.offsetWidth))):""!==a.oScroll.sY?b.style.width=q(e.offsetWidth):o&&(b.style.width=q(o));b.style.visibility="hidden";Oa(a,b);i=h("tbody tr:eq(0)",b).children();0===i.length&&(i=N(a,h("thead",b)[0]));if(""!==a.oScroll.sX){for(f=d=e=0;f<a.aoColumns.length;f++)a.aoColumns[f].bVisible&&(e=null===a.aoColumns[f].sWidthOrig?e+h(i[d]).outerWidth():
+e+(parseInt(a.aoColumns[f].sWidth.replace("px",""),10)+(h(i[d]).outerWidth()-h(i[d]).width())),d++);b.style.width=q(e);a.nTable.style.width=q(e)}for(f=d=0;f<a.aoColumns.length;f++)a.aoColumns[f].bVisible&&(e=h(i[d]).width(),null!==e&&0<e&&(a.aoColumns[f].sWidth=q(e)),d++);i=h(b).css("width");a.nTable.style.width=-1!==i.indexOf("%")?i:q(h(b).outerWidth());b.parentNode.removeChild(b)}o&&(a.nTable.style.width=q(o))}function Oa(a,b){""===a.oScroll.sX&&""!==a.oScroll.sY?(h(b).width(),b.style.width=q(h(b).outerWidth()-
+a.oScroll.iBarWidth)):""!==a.oScroll.sX&&(b.style.width=q(h(b).outerWidth()))}function Na(a,b){var c=Pa(a,b);if(0>c)return null;if(null===a.aoData[c].nTr){var d=l.createElement("td");d.innerHTML=v(a,c,b,"");return d}return J(a,c)[b]}function Pa(a,b){for(var c=-1,d=-1,i=0;i<a.aoData.length;i++){var e=v(a,i,b,"display")+"",e=e.replace(/<.*?>/g,"");e.length>c&&(c=e.length,d=i)}return d}function q(a){if(null===a)return"0px";if("number"==typeof a)return 0>a?"0px":a+"px";var b=a.charCodeAt(a.length-1);
+return 48>b||57<b?a:a+"px"}function Qa(){var a=l.createElement("p"),b=a.style;b.width="100%";b.height="200px";b.padding="0px";var c=l.createElement("div"),b=c.style;b.position="absolute";b.top="0px";b.left="0px";b.visibility="hidden";b.width="200px";b.height="150px";b.padding="0px";b.overflow="hidden";c.appendChild(a);l.body.appendChild(c);b=a.offsetWidth;c.style.overflow="scroll";a=a.offsetWidth;b==a&&(a=c.clientWidth);l.body.removeChild(c);return b-a}function O(a,b){var c,d,i,e,g,k,o=[],m=[],p=
+j.ext.oSort,l=a.aoData,q=a.aoColumns,G=a.oLanguage.oAria;if(!a.oFeatures.bServerSide&&(0!==a.aaSorting.length||null!==a.aaSortingFixed)){o=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(c=0;c<o.length;c++)if(d=o[c][0],i=R(a,d),e=a.aoColumns[d].sSortDataType,j.ext.afnSortData[e])if(g=j.ext.afnSortData[e].call(a.oInstance,a,d,i),g.length===l.length){i=0;for(e=l.length;i<e;i++)F(a,i,d,g[i])}else D(a,0,"Returned data sort array (col "+d+") is the wrong length");c=
+0;for(d=a.aiDisplayMaster.length;c<d;c++)m[a.aiDisplayMaster[c]]=c;var r=o.length,s;c=0;for(d=l.length;c<d;c++)for(i=0;i<r;i++){s=q[o[i][0]].aDataSort;g=0;for(k=s.length;g<k;g++)e=q[s[g]].sType,e=p[(e?e:"string")+"-pre"],l[c]._aSortData[s[g]]=e?e(v(a,c,s[g],"sort")):v(a,c,s[g],"sort")}a.aiDisplayMaster.sort(function(a,b){var c,d,e,i,f;for(c=0;c<r;c++){f=q[o[c][0]].aDataSort;d=0;for(e=f.length;d<e;d++)if(i=q[f[d]].sType,i=p[(i?i:"string")+"-"+o[c][1]](l[a]._aSortData[f[d]],l[b]._aSortData[f[d]]),0!==
+i)return i}return p["numeric-asc"](m[a],m[b])})}(b===n||b)&&!a.oFeatures.bDeferRender&&P(a);c=0;for(d=a.aoColumns.length;c<d;c++)e=q[c].sTitle.replace(/<.*?>/g,""),i=q[c].nTh,i.removeAttribute("aria-sort"),i.removeAttribute("aria-label"),q[c].bSortable?0<o.length&&o[0][0]==c?(i.setAttribute("aria-sort","asc"==o[0][1]?"ascending":"descending"),i.setAttribute("aria-label",e+("asc"==(q[c].asSorting[o[0][2]+1]?q[c].asSorting[o[0][2]+1]:q[c].asSorting[0])?G.sSortAscending:G.sSortDescending))):i.setAttribute("aria-label",
+e+("asc"==q[c].asSorting[0]?G.sSortAscending:G.sSortDescending)):i.setAttribute("aria-label",e);a.bSorted=!0;h(a.oInstance).trigger("sort",a);a.oFeatures.bFilter?K(a,a.oPreviousSearch,1):(a.aiDisplay=a.aiDisplayMaster.slice(),a._iDisplayStart=0,y(a),x(a))}function ia(a,b,c,d){Ra(b,{},function(b){if(!1!==a.aoColumns[c].bSortable){var e=function(){var d,e;if(b.shiftKey){for(var f=!1,h=0;h<a.aaSorting.length;h++)if(a.aaSorting[h][0]==c){f=!0;d=a.aaSorting[h][0];e=a.aaSorting[h][2]+1;a.aoColumns[d].asSorting[e]?
+(a.aaSorting[h][1]=a.aoColumns[d].asSorting[e],a.aaSorting[h][2]=e):a.aaSorting.splice(h,1);break}!1===f&&a.aaSorting.push([c,a.aoColumns[c].asSorting[0],0])}else 1==a.aaSorting.length&&a.aaSorting[0][0]==c?(d=a.aaSorting[0][0],e=a.aaSorting[0][2]+1,a.aoColumns[d].asSorting[e]||(e=0),a.aaSorting[0][1]=a.aoColumns[d].asSorting[e],a.aaSorting[0][2]=e):(a.aaSorting.splice(0,a.aaSorting.length),a.aaSorting.push([c,a.aoColumns[c].asSorting[0],0]));O(a)};a.oFeatures.bProcessing?(E(a,!0),setTimeout(function(){e();
+a.oFeatures.bServerSide||E(a,!1)},0)):e();"function"==typeof d&&d(a)}})}function P(a){var b,c,d,e,f,g=a.aoColumns.length,j=a.oClasses;for(b=0;b<g;b++)a.aoColumns[b].bSortable&&h(a.aoColumns[b].nTh).removeClass(j.sSortAsc+" "+j.sSortDesc+" "+a.aoColumns[b].sSortingClass);c=null!==a.aaSortingFixed?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(b=0;b<a.aoColumns.length;b++)if(a.aoColumns[b].bSortable){f=a.aoColumns[b].sSortingClass;e=-1;for(d=0;d<c.length;d++)if(c[d][0]==b){f="asc"==c[d][1]?
+j.sSortAsc:j.sSortDesc;e=d;break}h(a.aoColumns[b].nTh).addClass(f);a.bJUI&&(f=h("span."+j.sSortIcon,a.aoColumns[b].nTh),f.removeClass(j.sSortJUIAsc+" "+j.sSortJUIDesc+" "+j.sSortJUI+" "+j.sSortJUIAscAllowed+" "+j.sSortJUIDescAllowed),f.addClass(-1==e?a.aoColumns[b].sSortingClassJUI:"asc"==c[e][1]?j.sSortJUIAsc:j.sSortJUIDesc))}else h(a.aoColumns[b].nTh).addClass(a.aoColumns[b].sSortingClass);f=j.sSortColumn;if(a.oFeatures.bSort&&a.oFeatures.bSortClasses){a=J(a);e=[];for(b=0;b<g;b++)e.push("");b=0;
+for(d=1;b<c.length;b++)j=parseInt(c[b][0],10),e[j]=f+d,3>d&&d++;f=RegExp(f+"[123]");var o;b=0;for(c=a.length;b<c;b++)j=b%g,d=a[b].className,o=e[j],j=d.replace(f,o),j!=d?a[b].className=h.trim(j):0<o.length&&-1==d.indexOf(o)&&(a[b].className=d+" "+o)}}function ra(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b,c;b=a.oScroll.bInfinite;var d={iCreate:(new Date).getTime(),iStart:b?0:a._iDisplayStart,iEnd:b?a._iDisplayLength:a._iDisplayEnd,iLength:a._iDisplayLength,aaSorting:h.extend(!0,[],a.aaSorting),
+oSearch:h.extend(!0,{},a.oPreviousSearch),aoSearchCols:h.extend(!0,[],a.aoPreSearchCols),abVisCols:[]};b=0;for(c=a.aoColumns.length;b<c;b++)d.abVisCols.push(a.aoColumns[b].bVisible);A(a,"aoStateSaveParams","stateSaveParams",[a,d]);a.fnStateSave.call(a.oInstance,a,d)}}function Sa(a,b){if(a.oFeatures.bStateSave){var c=a.fnStateLoad.call(a.oInstance,a);if(c){var d=A(a,"aoStateLoadParams","stateLoadParams",[a,c]);if(-1===h.inArray(!1,d)){a.oLoadedState=h.extend(!0,{},c);a._iDisplayStart=c.iStart;a.iInitDisplayStart=
+c.iStart;a._iDisplayEnd=c.iEnd;a._iDisplayLength=c.iLength;a.aaSorting=c.aaSorting.slice();a.saved_aaSorting=c.aaSorting.slice();h.extend(a.oPreviousSearch,c.oSearch);h.extend(!0,a.aoPreSearchCols,c.aoSearchCols);b.saved_aoColumns=[];for(d=0;d<c.abVisCols.length;d++)b.saved_aoColumns[d]={},b.saved_aoColumns[d].bVisible=c.abVisCols[d];A(a,"aoStateLoaded","stateLoaded",[a,c])}}}}function s(a){for(var b=0;b<j.settings.length;b++)if(j.settings[b].nTable===a)return j.settings[b];return null}function T(a){for(var b=
+[],a=a.aoData,c=0,d=a.length;c<d;c++)null!==a[c].nTr&&b.push(a[c].nTr);return b}function J(a,b){var c=[],d,e,f,g,h,j;e=0;var o=a.aoData.length;b!==n&&(e=b,o=b+1);for(f=e;f<o;f++)if(j=a.aoData[f],null!==j.nTr){e=[];for(d=j.nTr.firstChild;d;)g=d.nodeName.toLowerCase(),("td"==g||"th"==g)&&e.push(d),d=d.nextSibling;g=d=0;for(h=a.aoColumns.length;g<h;g++)a.aoColumns[g].bVisible?c.push(e[g-d]):(c.push(j._anHidden[g]),d++)}return c}function D(a,b,c){a=null===a?"DataTables warning: "+c:"DataTables warning (table id = '"+
+a.sTableId+"'): "+c;if(0===b)if("alert"==j.ext.sErrMode)alert(a);else throw Error(a);else X.console&&console.log&&console.log(a)}function p(a,b,c,d){d===n&&(d=c);b[c]!==n&&(a[d]=b[c])}function Ta(a,b){var c,d;for(d in b)b.hasOwnProperty(d)&&(c=b[d],"object"===typeof e[d]&&null!==c&&!1===h.isArray(c)?h.extend(!0,a[d],c):a[d]=c);return a}function Ra(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",b,function(a){13===a.which&&c(a)}).bind("selectstart.DT",function(){return!1})}
+function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function A(a,b,c,d){for(var b=a[b],e=[],f=b.length-1;0<=f;f--)e.push(b[f].fn.apply(a.oInstance,d));null!==c&&h(a.oInstance).trigger(c,d);return e}function Ua(a){var b=h('<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden"><div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;"><div id="DT_BrowserTest" style="width:100%; height:10px;"></div></div></div>')[0];l.body.appendChild(b);a.oBrowser.bScrollOversize=
+100===h("#DT_BrowserTest",b)[0].offsetWidth?!0:!1;l.body.removeChild(b)}function Va(a){return function(){var b=[s(this[j.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return j.ext.oApi[a].apply(this,b)}}var U=/\[.*?\]$/,Wa=X.JSON?JSON.stringify:function(a){var b=typeof a;if("object"!==b||null===a)return"string"===b&&(a='"'+a+'"'),a+"";var c,d,e=[],f=h.isArray(a);for(c in a)d=a[c],b=typeof d,"string"===b?d='"'+d+'"':"object"===b&&null!==d&&(d=Wa(d)),e.push((f?"":'"'+c+'":')+d);return(f?
+"[":"{")+e+(f?"]":"}")};this.$=function(a,b){var c,d,e=[],f;d=s(this[j.ext.iApiIndex]);var g=d.aoData,o=d.aiDisplay,k=d.aiDisplayMaster;b||(b={});b=h.extend({},{filter:"none",order:"current",page:"all"},b);if("current"==b.page){c=d._iDisplayStart;for(d=d.fnDisplayEnd();c<d;c++)(f=g[o[c]].nTr)&&e.push(f)}else if("current"==b.order&&"none"==b.filter){c=0;for(d=k.length;c<d;c++)(f=g[k[c]].nTr)&&e.push(f)}else if("current"==b.order&&"applied"==b.filter){c=0;for(d=o.length;c<d;c++)(f=g[o[c]].nTr)&&e.push(f)}else if("original"==
+b.order&&"none"==b.filter){c=0;for(d=g.length;c<d;c++)(f=g[c].nTr)&&e.push(f)}else if("original"==b.order&&"applied"==b.filter){c=0;for(d=g.length;c<d;c++)f=g[c].nTr,-1!==h.inArray(c,o)&&f&&e.push(f)}else D(d,1,"Unknown selection options");e=h(e);c=e.filter(a);e=e.find(a);return h([].concat(h.makeArray(c),h.makeArray(e)))};this._=function(a,b){var c=[],d,e,f=this.$(a,b);d=0;for(e=f.length;d<e;d++)c.push(this.fnGetData(f[d]));return c};this.fnAddData=function(a,b){if(0===a.length)return[];var c=[],
+d,e=s(this[j.ext.iApiIndex]);if("object"===typeof a[0]&&null!==a[0])for(var f=0;f<a.length;f++){d=H(e,a[f]);if(-1==d)return c;c.push(d)}else{d=H(e,a);if(-1==d)return c;c.push(d)}e.aiDisplay=e.aiDisplayMaster.slice();(b===n||b)&&aa(e);return c};this.fnAdjustColumnSizing=function(a){var b=s(this[j.ext.iApiIndex]);k(b);a===n||a?this.fnDraw(!1):(""!==b.oScroll.sX||""!==b.oScroll.sY)&&this.oApi._fnScrollDraw(b)};this.fnClearTable=function(a){var b=s(this[j.ext.iApiIndex]);ga(b);(a===n||a)&&x(b)};this.fnClose=
+function(a){for(var b=s(this[j.ext.iApiIndex]),c=0;c<b.aoOpenRows.length;c++)if(b.aoOpenRows[c].nParent==a)return(a=b.aoOpenRows[c].nTr.parentNode)&&a.removeChild(b.aoOpenRows[c].nTr),b.aoOpenRows.splice(c,1),0;return 1};this.fnDeleteRow=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e,f,a="object"===typeof a?I(d,a):a,g=d.aoData.splice(a,1);e=0;for(f=d.aoData.length;e<f;e++)null!==d.aoData[e].nTr&&(d.aoData[e].nTr._DT_RowIndex=e);e=h.inArray(a,d.aiDisplay);d.asDataSearch.splice(e,1);ha(d.aiDisplayMaster,
+a);ha(d.aiDisplay,a);"function"===typeof b&&b.call(this,d,g);d._iDisplayStart>=d.fnRecordsDisplay()&&(d._iDisplayStart-=d._iDisplayLength,0>d._iDisplayStart&&(d._iDisplayStart=0));if(c===n||c)y(d),x(d);return g};this.fnDestroy=function(a){var b=s(this[j.ext.iApiIndex]),c=b.nTableWrapper.parentNode,d=b.nTBody,i,f,a=a===n?!1:a;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);if(!a){i=0;for(f=b.aoColumns.length;i<f;i++)!1===b.aoColumns[i].bVisible&&this.fnSetColumnVis(i,!0)}h(b.nTableWrapper).find("*").andSelf().unbind(".DT");
+h("tbody>tr>td."+b.oClasses.sRowEmpty,b.nTable).parent().remove();b.nTable!=b.nTHead.parentNode&&(h(b.nTable).children("thead").remove(),b.nTable.appendChild(b.nTHead));b.nTFoot&&b.nTable!=b.nTFoot.parentNode&&(h(b.nTable).children("tfoot").remove(),b.nTable.appendChild(b.nTFoot));b.nTable.parentNode.removeChild(b.nTable);h(b.nTableWrapper).remove();b.aaSorting=[];b.aaSortingFixed=[];P(b);h(T(b)).removeClass(b.asStripeClasses.join(" "));h("th, td",b.nTHead).removeClass([b.oClasses.sSortable,b.oClasses.sSortableAsc,
+b.oClasses.sSortableDesc,b.oClasses.sSortableNone].join(" "));b.bJUI&&(h("th span."+b.oClasses.sSortIcon+", td span."+b.oClasses.sSortIcon,b.nTHead).remove(),h("th, td",b.nTHead).each(function(){var a=h("div."+b.oClasses.sSortJUIWrapper,this),c=a.contents();h(this).append(c);a.remove()}));!a&&b.nTableReinsertBefore?c.insertBefore(b.nTable,b.nTableReinsertBefore):a||c.appendChild(b.nTable);i=0;for(f=b.aoData.length;i<f;i++)null!==b.aoData[i].nTr&&d.appendChild(b.aoData[i].nTr);!0===b.oFeatures.bAutoWidth&&
+(b.nTable.style.width=q(b.sDestroyWidth));if(f=b.asDestroyStripes.length){a=h(d).children("tr");for(i=0;i<f;i++)a.filter(":nth-child("+f+"n + "+i+")").addClass(b.asDestroyStripes[i])}i=0;for(f=j.settings.length;i<f;i++)j.settings[i]==b&&j.settings.splice(i,1);e=b=null};this.fnDraw=function(a){var b=s(this[j.ext.iApiIndex]);!1===a?(y(b),x(b)):aa(b)};this.fnFilter=function(a,b,c,d,e,f){var g=s(this[j.ext.iApiIndex]);if(g.oFeatures.bFilter){if(c===n||null===c)c=!1;if(d===n||null===d)d=!0;if(e===n||null===
+e)e=!0;if(f===n||null===f)f=!0;if(b===n||null===b){if(K(g,{sSearch:a+"",bRegex:c,bSmart:d,bCaseInsensitive:f},1),e&&g.aanFeatures.f){b=g.aanFeatures.f;c=0;for(d=b.length;c<d;c++)try{b[c]._DT_Input!=l.activeElement&&h(b[c]._DT_Input).val(a)}catch(o){h(b[c]._DT_Input).val(a)}}}else h.extend(g.aoPreSearchCols[b],{sSearch:a+"",bRegex:c,bSmart:d,bCaseInsensitive:f}),K(g,g.oPreviousSearch,1)}};this.fnGetData=function(a,b){var c=s(this[j.ext.iApiIndex]);if(a!==n){var d=a;if("object"===typeof a){var e=a.nodeName.toLowerCase();
+"tr"===e?d=I(c,a):"td"===e&&(d=I(c,a.parentNode),b=fa(c,d,a))}return b!==n?v(c,d,b,""):c.aoData[d]!==n?c.aoData[d]._aData:null}return Z(c)};this.fnGetNodes=function(a){var b=s(this[j.ext.iApiIndex]);return a!==n?b.aoData[a]!==n?b.aoData[a].nTr:null:T(b)};this.fnGetPosition=function(a){var b=s(this[j.ext.iApiIndex]),c=a.nodeName.toUpperCase();return"TR"==c?I(b,a):"TD"==c||"TH"==c?(c=I(b,a.parentNode),a=fa(b,c,a),[c,R(b,a),a]):null};this.fnIsOpen=function(a){for(var b=s(this[j.ext.iApiIndex]),c=0;c<
+b.aoOpenRows.length;c++)if(b.aoOpenRows[c].nParent==a)return!0;return!1};this.fnOpen=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e=T(d);if(-1!==h.inArray(a,e)){this.fnClose(a);var e=l.createElement("tr"),f=l.createElement("td");e.appendChild(f);f.className=c;f.colSpan=t(d);"string"===typeof b?f.innerHTML=b:h(f).html(b);b=h("tr",d.nTBody);-1!=h.inArray(a,b)&&h(e).insertAfter(a);d.aoOpenRows.push({nTr:e,nParent:a});return e}};this.fnPageChange=function(a,b){var c=s(this[j.ext.iApiIndex]);qa(c,a);
+y(c);(b===n||b)&&x(c)};this.fnSetColumnVis=function(a,b,c){var d=s(this[j.ext.iApiIndex]),e,f,g=d.aoColumns,h=d.aoData,o,m;if(g[a].bVisible!=b){if(b){for(e=f=0;e<a;e++)g[e].bVisible&&f++;m=f>=t(d);if(!m)for(e=a;e<g.length;e++)if(g[e].bVisible){o=e;break}e=0;for(f=h.length;e<f;e++)null!==h[e].nTr&&(m?h[e].nTr.appendChild(h[e]._anHidden[a]):h[e].nTr.insertBefore(h[e]._anHidden[a],J(d,e)[o]))}else{e=0;for(f=h.length;e<f;e++)null!==h[e].nTr&&(o=J(d,e)[a],h[e]._anHidden[a]=o,o.parentNode.removeChild(o))}g[a].bVisible=
+b;W(d,d.aoHeader);d.nTFoot&&W(d,d.aoFooter);e=0;for(f=d.aoOpenRows.length;e<f;e++)d.aoOpenRows[e].nTr.colSpan=t(d);if(c===n||c)k(d),x(d);ra(d)}};this.fnSettings=function(){return s(this[j.ext.iApiIndex])};this.fnSort=function(a){var b=s(this[j.ext.iApiIndex]);b.aaSorting=a;O(b)};this.fnSortListener=function(a,b,c){ia(s(this[j.ext.iApiIndex]),a,b,c)};this.fnUpdate=function(a,b,c,d,e){var f=s(this[j.ext.iApiIndex]),b="object"===typeof b?I(f,b):b;if(h.isArray(a)&&c===n){f.aoData[b]._aData=a.slice();
+for(c=0;c<f.aoColumns.length;c++)this.fnUpdate(v(f,b,c),b,c,!1,!1)}else if(h.isPlainObject(a)&&c===n){f.aoData[b]._aData=h.extend(!0,{},a);for(c=0;c<f.aoColumns.length;c++)this.fnUpdate(v(f,b,c),b,c,!1,!1)}else{F(f,b,c,a);var a=v(f,b,c,"display"),g=f.aoColumns[c];null!==g.fnRender&&(a=S(f,b,c),g.bUseRendered&&F(f,b,c,a));null!==f.aoData[b].nTr&&(J(f,b)[c].innerHTML=a)}c=h.inArray(b,f.aiDisplay);f.asDataSearch[c]=na(f,Y(f,b,"filter",r(f,"bSearchable")));(e===n||e)&&k(f);(d===n||d)&&aa(f);return 0};
+this.fnVersionCheck=j.ext.fnVersionCheck;this.oApi={_fnExternApiFunc:Va,_fnInitialise:ba,_fnInitComplete:$,_fnLanguageCompat:pa,_fnAddColumn:o,_fnColumnOptions:m,_fnAddData:H,_fnCreateTr:ea,_fnGatherData:ua,_fnBuildHead:va,_fnDrawHead:W,_fnDraw:x,_fnReDraw:aa,_fnAjaxUpdate:wa,_fnAjaxParameters:Ea,_fnAjaxUpdateDraw:Fa,_fnServerParams:ka,_fnAddOptionsHtml:xa,_fnFeatureHtmlTable:Ba,_fnScrollDraw:La,_fnAdjustColumnSizing:k,_fnFeatureHtmlFilter:za,_fnFilterComplete:K,_fnFilterCustom:Ia,_fnFilterColumn:Ha,
+_fnFilter:Ga,_fnBuildSearchArray:la,_fnBuildSearchRow:na,_fnFilterCreateSearch:ma,_fnDataToSearch:Ja,_fnSort:O,_fnSortAttachListener:ia,_fnSortingClasses:P,_fnFeatureHtmlPaginate:Da,_fnPageChange:qa,_fnFeatureHtmlInfo:Ca,_fnUpdateInfo:Ka,_fnFeatureHtmlLength:ya,_fnFeatureHtmlProcessing:Aa,_fnProcessingDisplay:E,_fnVisibleToColumnIndex:G,_fnColumnIndexToVisible:R,_fnNodeToDataIndex:I,_fnVisbleColumns:t,_fnCalculateEnd:y,_fnConvertToWidth:Ma,_fnCalculateColumnWidths:da,_fnScrollingWidthAdjust:Oa,_fnGetWidestNode:Na,
+_fnGetMaxLenString:Pa,_fnStringToCss:q,_fnDetectType:B,_fnSettingsFromNode:s,_fnGetDataMaster:Z,_fnGetTrNodes:T,_fnGetTdNodes:J,_fnEscapeRegex:oa,_fnDeleteIndex:ha,_fnReOrderIndex:u,_fnColumnOrdering:M,_fnLog:D,_fnClearTable:ga,_fnSaveState:ra,_fnLoadState:Sa,_fnCreateCookie:function(a,b,c,d,e){var f=new Date;f.setTime(f.getTime()+1E3*c);var c=X.location.pathname.split("/"),a=a+"_"+c.pop().replace(/[\/:]/g,"").toLowerCase(),g;null!==e?(g="function"===typeof h.parseJSON?h.parseJSON(b):eval("("+b+")"),
+b=e(a,g,f.toGMTString(),c.join("/")+"/")):b=a+"="+encodeURIComponent(b)+"; expires="+f.toGMTString()+"; path="+c.join("/")+"/";a=l.cookie.split(";");e=b.split(";")[0].length;f=[];if(4096<e+l.cookie.length+10){for(var j=0,o=a.length;j<o;j++)if(-1!=a[j].indexOf(d)){var k=a[j].split("=");try{(g=eval("("+decodeURIComponent(k[1])+")"))&&g.iCreate&&f.push({name:k[0],time:g.iCreate})}catch(m){}}for(f.sort(function(a,b){return b.time-a.time});4096<e+l.cookie.length+10;){if(0===f.length)return;d=f.pop();l.cookie=
+d.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+c.join("/")+"/"}}l.cookie=b},_fnReadCookie:function(a){for(var b=X.location.pathname.split("/"),a=a+"_"+b[b.length-1].replace(/[\/:]/g,"").toLowerCase()+"=",b=l.cookie.split(";"),c=0;c<b.length;c++){for(var d=b[c];" "==d.charAt(0);)d=d.substring(1,d.length);if(0===d.indexOf(a))return decodeURIComponent(d.substring(a.length,d.length))}return null},_fnDetectHeader:V,_fnGetUniqueThs:N,_fnScrollBarWidth:Qa,_fnApplyToChildren:C,_fnMap:p,_fnGetRowData:Y,
+_fnGetCellData:v,_fnSetCellData:F,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:L,_fnApplyColumnDefs:ta,_fnBindAction:Ra,_fnExtend:Ta,_fnCallbackReg:z,_fnCallbackFire:A,_fnJsonString:Wa,_fnRender:S,_fnNodeToColumnIndex:fa,_fnInfoMacros:ja,_fnBrowserDetect:Ua,_fnGetColumns:r};h.extend(j.ext.oApi,this.oApi);for(var sa in j.ext.oApi)sa&&(this[sa]=Va(sa));var ca=this;this.each(function(){var a=0,b,c,d;c=this.getAttribute("id");var i=!1,f=!1;if("table"!=this.nodeName.toLowerCase())D(null,0,"Attempted to initialise DataTables on a node which is not a table: "+
+this.nodeName);else{a=0;for(b=j.settings.length;a<b;a++){if(j.settings[a].nTable==this){if(e===n||e.bRetrieve)return j.settings[a].oInstance;if(e.bDestroy){j.settings[a].oInstance.fnDestroy();break}else{D(j.settings[a],0,"Cannot reinitialise DataTable.\n\nTo retrieve the DataTables object for this table, pass no arguments or see the docs for bRetrieve and bDestroy");return}}if(j.settings[a].sTableId==this.id){j.settings.splice(a,1);break}}if(null===c||""===c)this.id=c="DataTables_Table_"+j.ext._oExternConfig.iNextUnique++;
+var g=h.extend(!0,{},j.models.oSettings,{nTable:this,oApi:ca.oApi,oInit:e,sDestroyWidth:h(this).width(),sInstance:c,sTableId:c});j.settings.push(g);g.oInstance=1===ca.length?ca:h(this).dataTable();e||(e={});e.oLanguage&&pa(e.oLanguage);e=Ta(h.extend(!0,{},j.defaults),e);p(g.oFeatures,e,"bPaginate");p(g.oFeatures,e,"bLengthChange");p(g.oFeatures,e,"bFilter");p(g.oFeatures,e,"bSort");p(g.oFeatures,e,"bInfo");p(g.oFeatures,e,"bProcessing");p(g.oFeatures,e,"bAutoWidth");p(g.oFeatures,e,"bSortClasses");
+p(g.oFeatures,e,"bServerSide");p(g.oFeatures,e,"bDeferRender");p(g.oScroll,e,"sScrollX","sX");p(g.oScroll,e,"sScrollXInner","sXInner");p(g.oScroll,e,"sScrollY","sY");p(g.oScroll,e,"bScrollCollapse","bCollapse");p(g.oScroll,e,"bScrollInfinite","bInfinite");p(g.oScroll,e,"iScrollLoadGap","iLoadGap");p(g.oScroll,e,"bScrollAutoCss","bAutoCss");p(g,e,"asStripeClasses");p(g,e,"asStripClasses","asStripeClasses");p(g,e,"fnServerData");p(g,e,"fnFormatNumber");p(g,e,"sServerMethod");p(g,e,"aaSorting");p(g,
+e,"aaSortingFixed");p(g,e,"aLengthMenu");p(g,e,"sPaginationType");p(g,e,"sAjaxSource");p(g,e,"sAjaxDataProp");p(g,e,"iCookieDuration");p(g,e,"sCookiePrefix");p(g,e,"sDom");p(g,e,"bSortCellsTop");p(g,e,"iTabIndex");p(g,e,"oSearch","oPreviousSearch");p(g,e,"aoSearchCols","aoPreSearchCols");p(g,e,"iDisplayLength","_iDisplayLength");p(g,e,"bJQueryUI","bJUI");p(g,e,"fnCookieCallback");p(g,e,"fnStateLoad");p(g,e,"fnStateSave");p(g.oLanguage,e,"fnInfoCallback");z(g,"aoDrawCallback",e.fnDrawCallback,"user");
+z(g,"aoServerParams",e.fnServerParams,"user");z(g,"aoStateSaveParams",e.fnStateSaveParams,"user");z(g,"aoStateLoadParams",e.fnStateLoadParams,"user");z(g,"aoStateLoaded",e.fnStateLoaded,"user");z(g,"aoRowCallback",e.fnRowCallback,"user");z(g,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(g,"aoHeaderCallback",e.fnHeaderCallback,"user");z(g,"aoFooterCallback",e.fnFooterCallback,"user");z(g,"aoInitComplete",e.fnInitComplete,"user");z(g,"aoPreDrawCallback",e.fnPreDrawCallback,"user");g.oFeatures.bServerSide&&
+g.oFeatures.bSort&&g.oFeatures.bSortClasses?z(g,"aoDrawCallback",P,"server_side_sort_classes"):g.oFeatures.bDeferRender&&z(g,"aoDrawCallback",P,"defer_sort_classes");e.bJQueryUI?(h.extend(g.oClasses,j.ext.oJUIClasses),e.sDom===j.defaults.sDom&&"lfrtip"===j.defaults.sDom&&(g.sDom='<"H"lfr>t<"F"ip>')):h.extend(g.oClasses,j.ext.oStdClasses);h(this).addClass(g.oClasses.sTable);if(""!==g.oScroll.sX||""!==g.oScroll.sY)g.oScroll.iBarWidth=Qa();g.iInitDisplayStart===n&&(g.iInitDisplayStart=e.iDisplayStart,
+g._iDisplayStart=e.iDisplayStart);e.bStateSave&&(g.oFeatures.bStateSave=!0,Sa(g,e),z(g,"aoDrawCallback",ra,"state_save"));null!==e.iDeferLoading&&(g.bDeferLoading=!0,a=h.isArray(e.iDeferLoading),g._iRecordsDisplay=a?e.iDeferLoading[0]:e.iDeferLoading,g._iRecordsTotal=a?e.iDeferLoading[1]:e.iDeferLoading);null!==e.aaData&&(f=!0);""!==e.oLanguage.sUrl?(g.oLanguage.sUrl=e.oLanguage.sUrl,h.getJSON(g.oLanguage.sUrl,null,function(a){pa(a);h.extend(true,g.oLanguage,e.oLanguage,a);ba(g)}),i=!0):h.extend(!0,
+g.oLanguage,e.oLanguage);null===e.asStripeClasses&&(g.asStripeClasses=[g.oClasses.sStripeOdd,g.oClasses.sStripeEven]);b=g.asStripeClasses.length;g.asDestroyStripes=[];if(b){c=!1;d=h(this).children("tbody").children("tr:lt("+b+")");for(a=0;a<b;a++)d.hasClass(g.asStripeClasses[a])&&(c=!0,g.asDestroyStripes.push(g.asStripeClasses[a]));c&&d.removeClass(g.asStripeClasses.join(" "))}c=[];a=this.getElementsByTagName("thead");0!==a.length&&(V(g.aoHeader,a[0]),c=N(g));if(null===e.aoColumns){d=[];a=0;for(b=
+c.length;a<b;a++)d.push(null)}else d=e.aoColumns;a=0;for(b=d.length;a<b;a++)e.saved_aoColumns!==n&&e.saved_aoColumns.length==b&&(null===d[a]&&(d[a]={}),d[a].bVisible=e.saved_aoColumns[a].bVisible),o(g,c?c[a]:null);ta(g,e.aoColumnDefs,d,function(a,b){m(g,a,b)});a=0;for(b=g.aaSorting.length;a<b;a++){g.aaSorting[a][0]>=g.aoColumns.length&&(g.aaSorting[a][0]=0);var k=g.aoColumns[g.aaSorting[a][0]];g.aaSorting[a][2]===n&&(g.aaSorting[a][2]=0);e.aaSorting===n&&g.saved_aaSorting===n&&(g.aaSorting[a][1]=
+k.asSorting[0]);c=0;for(d=k.asSorting.length;c<d;c++)if(g.aaSorting[a][1]==k.asSorting[c]){g.aaSorting[a][2]=c;break}}P(g);Ua(g);a=h(this).children("caption").each(function(){this._captionSide=h(this).css("caption-side")});b=h(this).children("thead");0===b.length&&(b=[l.createElement("thead")],this.appendChild(b[0]));g.nTHead=b[0];b=h(this).children("tbody");0===b.length&&(b=[l.createElement("tbody")],this.appendChild(b[0]));g.nTBody=b[0];g.nTBody.setAttribute("role","alert");g.nTBody.setAttribute("aria-live",
+"polite");g.nTBody.setAttribute("aria-relevant","all");b=h(this).children("tfoot");if(0===b.length&&0<a.length&&(""!==g.oScroll.sX||""!==g.oScroll.sY))b=[l.createElement("tfoot")],this.appendChild(b[0]);0<b.length&&(g.nTFoot=b[0],V(g.aoFooter,g.nTFoot));if(f)for(a=0;a<e.aaData.length;a++)H(g,e.aaData[a]);else ua(g);g.aiDisplay=g.aiDisplayMaster.slice();g.bInitialised=!0;!1===i&&ba(g)}});ca=null;return this};j.fnVersionCheck=function(e){for(var h=function(e,h){for(;e.length<h;)e+="0";return e},m=j.ext.sVersion.split("."),
+e=e.split("."),k="",n="",l=0,t=e.length;l<t;l++)k+=h(m[l],3),n+=h(e[l],3);return parseInt(k,10)>=parseInt(n,10)};j.fnIsDataTable=function(e){for(var h=j.settings,m=0;m<h.length;m++)if(h[m].nTable===e||h[m].nScrollHead===e||h[m].nScrollFoot===e)return!0;return!1};j.fnTables=function(e){var o=[];jQuery.each(j.settings,function(j,k){(!e||!0===e&&h(k.nTable).is(":visible"))&&o.push(k.nTable)});return o};j.version="1.9.4";j.settings=[];j.models={};j.models.ext={afnFiltering:[],afnSortData:[],aoFeatures:[],
+aTypes:[],fnVersionCheck:j.fnVersionCheck,iApiIndex:0,ofnSearch:{},oApi:{},oStdClasses:{},oJUIClasses:{},oPagination:{},oSort:{},sVersion:j.version,sErrMode:"alert",_oExternConfig:{iNextUnique:0}};j.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};j.models.oRow={nTr:null,_aData:[],_aSortData:[],_anHidden:[],_sRowStripe:""};j.models.oColumn={aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bUseRendered:null,bVisible:null,_bAutoType:!0,fnCreatedCell:null,fnGetData:null,
+fnRender:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};j.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,
+bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollAutoCss:!0,bScrollCollapse:!1,bScrollInfinite:!1,bServerSide:!1,bSort:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCookieCallback:null,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(e){if(1E3>e)return e;for(var h=e+"",e=h.split(""),j="",h=h.length,k=0;k<h;k++)0===k%3&&0!==k&&(j=this.oLanguage.sInfoThousands+j),j=e[h-k-1]+j;return j},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,
+fnRowCallback:null,fnServerData:function(e,j,m,k){k.jqXHR=h.ajax({url:e,data:j,success:function(e){e.sError&&k.oApi._fnLog(k,0,e.sError);h(k.oInstance).trigger("xhr",[k,e]);m(e)},dataType:"json",cache:!1,type:k.sServerMethod,error:function(e,h){"parsererror"==h&&k.oApi._fnLog(k,0,"DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.")}})},fnServerParams:null,fnStateLoad:function(e){var e=this.oApi._fnReadCookie(e.sCookiePrefix+e.sInstance),j;try{j=
+"function"===typeof h.parseJSON?h.parseJSON(e):eval("("+e+")")}catch(m){j=null}return j},fnStateLoadParams:null,fnStateLoaded:null,fnStateSave:function(e,h){this.oApi._fnCreateCookie(e.sCookiePrefix+e.sInstance,this.oApi._fnJsonString(h),e.iCookieDuration,e.sCookiePrefix,e.fnCookieCallback)},fnStateSaveParams:null,iCookieDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iScrollLoadGap:100,iTabIndex:0,oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},
+oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sInfoThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},j.models.oSearch),sAjaxDataProp:"aaData",
+sAjaxSource:null,sCookiePrefix:"SpryMedia_DataTables_",sDom:"lfrtip",sPaginationType:"two_button",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET"};j.defaults.columns={aDataSort:null,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bUseRendered:!0,bVisible:!0,fnCreatedCell:null,fnRender:null,iDataSort:-1,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};j.models.oSettings={oFeatures:{bAutoWidth:null,
+bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortClasses:null,bStateSave:null},oScroll:{bAutoCss:null,bCollapse:null,bInfinite:null,iBarWidth:0,iLoadGap:null,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1},aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],asDataSearch:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:null,
+asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,sPaginationType:"two_button",iCookieDuration:0,sCookiePrefix:"",fnCookieCallback:null,aoStateSave:[],aoStateLoad:[],
+oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iDisplayEnd:10,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsTotal,10):this.aiDisplayMaster.length},
+fnRecordsDisplay:function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsDisplay,10):this.aiDisplay.length},fnDisplayEnd:function(){return this.oFeatures.bServerSide?!1===this.oFeatures.bPaginate||-1==this._iDisplayLength?this._iDisplayStart+this.aiDisplay.length:Math.min(this._iDisplayStart+this._iDisplayLength,this._iRecordsDisplay):this._iDisplayEnd},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null};j.ext=h.extend(!0,{},j.models.ext);h.extend(j.ext.oStdClasses,
+{sTable:"dataTable",sPagePrevEnabled:"paginate_enabled_previous",sPagePrevDisabled:"paginate_disabled_previous",sPageNextEnabled:"paginate_enabled_next",sPageNextDisabled:"paginate_disabled_next",sPageJUINext:"",sPageJUIPrev:"",sPageButton:"paginate_button",sPageButtonActive:"paginate_active",sPageButtonStaticDisabled:"paginate_button paginate_button_disabled",sPageFirst:"first",sPagePrevious:"previous",sPageNext:"next",sPageLast:"last",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",
+sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
+sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sFooterTH:"",sJUIHeader:"",sJUIFooter:""});h.extend(j.ext.oJUIClasses,j.ext.oStdClasses,{sPagePrevEnabled:"fg-button ui-button ui-state-default ui-corner-left",sPagePrevDisabled:"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",sPageNextEnabled:"fg-button ui-button ui-state-default ui-corner-right",
+sPageNextDisabled:"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",sPageJUINext:"ui-icon ui-icon-circle-arrow-e",sPageJUIPrev:"ui-icon ui-icon-circle-arrow-w",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"fg-button ui-button ui-state-default ui-state-disabled",sPageButtonStaticDisabled:"fg-button ui-button ui-state-default ui-state-disabled",sPageFirst:"first ui-corner-tl ui-corner-bl",sPageLast:"last ui-corner-tr ui-corner-br",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",
+sSortAsc:"ui-state-default",sSortDesc:"ui-state-default",sSortable:"ui-state-default",sSortableAsc:"ui-state-default",sSortableDesc:"ui-state-default",sSortableNone:"ui-state-default",sSortJUIAsc:"css_right ui-icon ui-icon-triangle-1-n",sSortJUIDesc:"css_right ui-icon ui-icon-triangle-1-s",sSortJUI:"css_right ui-icon ui-icon-carat-2-n-s",sSortJUIAscAllowed:"css_right ui-icon ui-icon-carat-1-n",sSortJUIDescAllowed:"css_right ui-icon ui-icon-carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",
+sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sFooterTH:"ui-state-default",sJUIHeader:"fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",sJUIFooter:"fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"});h.extend(j.ext.oPagination,{two_button:{fnInit:function(e,j,m){var k=e.oLanguage.oPaginate,n=function(h){e.oApi._fnPageChange(e,h.data.action)&&m(e)},k=!e.bJUI?'<a class="'+
+e.oClasses.sPagePrevDisabled+'" tabindex="'+e.iTabIndex+'" role="button">'+k.sPrevious+'</a><a class="'+e.oClasses.sPageNextDisabled+'" tabindex="'+e.iTabIndex+'" role="button">'+k.sNext+"</a>":'<a class="'+e.oClasses.sPagePrevDisabled+'" tabindex="'+e.iTabIndex+'" role="button"><span class="'+e.oClasses.sPageJUIPrev+'"></span></a><a class="'+e.oClasses.sPageNextDisabled+'" tabindex="'+e.iTabIndex+'" role="button"><span class="'+e.oClasses.sPageJUINext+'"></span></a>';h(j).append(k);var l=h("a",j),
+k=l[0],l=l[1];e.oApi._fnBindAction(k,{action:"previous"},n);e.oApi._fnBindAction(l,{action:"next"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_previous",l.id=e.sTableId+"_next",k.setAttribute("aria-controls",e.sTableId),l.setAttribute("aria-controls",e.sTableId))},fnUpdate:function(e){if(e.aanFeatures.p)for(var h=e.oClasses,j=e.aanFeatures.p,k,l=0,n=j.length;l<n;l++)if(k=j[l].firstChild)k.className=0===e._iDisplayStart?h.sPagePrevDisabled:h.sPagePrevEnabled,k=k.nextSibling,
+k.className=e.fnDisplayEnd()==e.fnRecordsDisplay()?h.sPageNextDisabled:h.sPageNextEnabled}},iFullNumbersShowPages:5,full_numbers:{fnInit:function(e,j,m){var k=e.oLanguage.oPaginate,l=e.oClasses,n=function(h){e.oApi._fnPageChange(e,h.data.action)&&m(e)};h(j).append('<a tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPageFirst+'">'+k.sFirst+'</a><a tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPagePrevious+'">'+k.sPrevious+'</a><span></span><a tabindex="'+e.iTabIndex+'" class="'+
+l.sPageButton+" "+l.sPageNext+'">'+k.sNext+'</a><a tabindex="'+e.iTabIndex+'" class="'+l.sPageButton+" "+l.sPageLast+'">'+k.sLast+"</a>");var t=h("a",j),k=t[0],l=t[1],r=t[2],t=t[3];e.oApi._fnBindAction(k,{action:"first"},n);e.oApi._fnBindAction(l,{action:"previous"},n);e.oApi._fnBindAction(r,{action:"next"},n);e.oApi._fnBindAction(t,{action:"last"},n);e.aanFeatures.p||(j.id=e.sTableId+"_paginate",k.id=e.sTableId+"_first",l.id=e.sTableId+"_previous",r.id=e.sTableId+"_next",t.id=e.sTableId+"_last")},
+fnUpdate:function(e,o){if(e.aanFeatures.p){var m=j.ext.oPagination.iFullNumbersShowPages,k=Math.floor(m/2),l=Math.ceil(e.fnRecordsDisplay()/e._iDisplayLength),n=Math.ceil(e._iDisplayStart/e._iDisplayLength)+1,t="",r,B=e.oClasses,u,M=e.aanFeatures.p,L=function(h){e.oApi._fnBindAction(this,{page:h+r-1},function(h){e.oApi._fnPageChange(e,h.data.page);o(e);h.preventDefault()})};-1===e._iDisplayLength?n=k=r=1:l<m?(r=1,k=l):n<=k?(r=1,k=m):n>=l-k?(r=l-m+1,k=l):(r=n-Math.ceil(m/2)+1,k=r+m-1);for(m=r;m<=k;m++)t+=
+n!==m?'<a tabindex="'+e.iTabIndex+'" class="'+B.sPageButton+'">'+e.fnFormatNumber(m)+"</a>":'<a tabindex="'+e.iTabIndex+'" class="'+B.sPageButtonActive+'">'+e.fnFormatNumber(m)+"</a>";m=0;for(k=M.length;m<k;m++)u=M[m],u.hasChildNodes()&&(h("span:eq(0)",u).html(t).children("a").each(L),u=u.getElementsByTagName("a"),u=[u[0],u[1],u[u.length-2],u[u.length-1]],h(u).removeClass(B.sPageButton+" "+B.sPageButtonActive+" "+B.sPageButtonStaticDisabled),h([u[0],u[1]]).addClass(1==n?B.sPageButtonStaticDisabled:
+B.sPageButton),h([u[2],u[3]]).addClass(0===l||n===l||-1===e._iDisplayLength?B.sPageButtonStaticDisabled:B.sPageButton))}}}});h.extend(j.ext.oSort,{"string-pre":function(e){"string"!=typeof e&&(e=null!==e&&e.toString?e.toString():"");return e.toLowerCase()},"string-asc":function(e,h){return e<h?-1:e>h?1:0},"string-desc":function(e,h){return e<h?1:e>h?-1:0},"html-pre":function(e){return e.replace(/<.*?>/g,"").toLowerCase()},"html-asc":function(e,h){return e<h?-1:e>h?1:0},"html-desc":function(e,h){return e<
+h?1:e>h?-1:0},"date-pre":function(e){e=Date.parse(e);if(isNaN(e)||""===e)e=Date.parse("01/01/1970 00:00:00");return e},"date-asc":function(e,h){return e-h},"date-desc":function(e,h){return h-e},"numeric-pre":function(e){return"-"==e||""===e?0:1*e},"numeric-asc":function(e,h){return e-h},"numeric-desc":function(e,h){return h-e}});h.extend(j.ext.aTypes,[function(e){if("number"===typeof e)return"numeric";if("string"!==typeof e)return null;var h,j=!1;h=e.charAt(0);if(-1=="0123456789-".indexOf(h))return null;
+for(var k=1;k<e.length;k++){h=e.charAt(k);if(-1=="0123456789.".indexOf(h))return null;if("."==h){if(j)return null;j=!0}}return"numeric"},function(e){var h=Date.parse(e);return null!==h&&!isNaN(h)||"string"===typeof e&&0===e.length?"date":null},function(e){return"string"===typeof e&&-1!=e.indexOf("<")&&-1!=e.indexOf(">")?"html":null}]);h.fn.DataTable=j;h.fn.dataTable=j;h.fn.dataTableSettings=j.settings;h.fn.dataTableExt=j.ext};"function"===typeof define&&define.amd?define(["jquery"],L):jQuery&&!jQuery.fn.dataTable&&
+L(jQuery)})(window,document);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables.min.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables.min.css
new file mode 100644
index 00000000..b6fb7378
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/data-tables/jquery.dataTables.min.css
@@ -0,0 +1 @@
+table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer;*cursor:hand}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table,.dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/bower.json b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/bower.json
new file mode 100644
index 00000000..a2b8288c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/bower.json
@@ -0,0 +1,42 @@
+{
+ "name": "iCheck",
+ "version": "1.0.2",
+ "description": "Highly customizable checkboxes and radio buttons (jQuery & Zepto)",
+ "keywords": [
+ "icheck",
+ "checkbox",
+ "radio",
+ "input",
+ "field",
+ "form",
+ "custom",
+ "replacement",
+ "accessibility",
+ "skins",
+ "ui",
+ "checked",
+ "disabled",
+ "indeterminate"
+ ],
+ "main": [
+ "./icheck.min.js"
+ ],
+ "dependencies": {
+ "jquery": ">=1.7"
+ },
+ "ignore": [
+ ".gitignore",
+ "CHANGELOG.md",
+ "README.md",
+ "demo/"
+ ],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Damir Sultanov",
+ "email": "info@fronteed.com",
+ "homepage": "http://fronteed.com/"
+ }
+ ],
+ "homepage": "http://fronteed.com/iCheck/"
+}
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/Thumbs.db b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/Thumbs.db
new file mode 100644
index 00000000..fd773ef4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/Thumbs.db
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/banner.jpg b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/banner.jpg
new file mode 100644
index 00000000..64b8f143
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/banner.jpg
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.css
new file mode 100644
index 00000000..e1ed3b17
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.css
@@ -0,0 +1,261 @@
+@import url("normalize.css");
+@font-face{font-family:'MontserratRegular';src:url("./montserrat-regular.eot");src:url("./montserrat-regular.eot?#iefix") format('embedded-opentype'),url("./montserrat-regular.woff") format('woff'),url("./montserrat-regular.ttf") format('truetype'),url("./montserrat-regular.svg#MontserratRegular") format('svg');font-style:normal;font-weight:normal}
+@font-face{font-family:'MontserratBold';src:url("./montserrat-bold.eot");src:url("./montserrat-bold.eot?#iefix") format('embedded-opentype'),url("./montserrat-bold.woff") format('woff'),url("./montserrat-bold.ttf") format('truetype'),url("./montserrat-bold.svg#MontserratBold") format('svg');font-style:normal;font-weight:bold}
+html,body{height:100%}
+body{font:14px/20px 'MontserratRegular',Helvetica,Arial,sans-serif;color:#222;background:#ebe7df url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAFZCAIAAAA96mnzAAACKklEQVR4Xn2VUW7kMAxD+QLf/1x7gv71LNwdKTLhZFtggMCwSVEUPdb3159/v0uSrM8HtGRZuoQk1R69J12o9ixJWvSnVyfLdbNw0XAXWe1fIL8BoqmNGiV/cHc9Gq4NXxLKHhteRyLpA28cl0SLdx0BckSWL4gkPlIVTg1nN9Ys3iyWI5AGDA5xOXB5BJaWmOw6KSLeU6+0P50QshQyEL2im/YMIL60dTSZ3RXenlkiJpMj8XPMAl1FtjMRW19NxzOE5VGWPVGrc7aSJgz1Y9ku57mpYSwn1h0ivFOXxoCKMCXiahbbZNIZR+tkphllPsomipCwb4GMkXTmPfVg40Jt2y4RQM/PqX5JTM4iiTN8Zz1XvbIAEEvoEW+3nxTLL3lB7t7J3WwyI7g5OVxKIeFEH4FIGLC9I+XqvSd4AxJM5O6WTPr54RAxLG44FVrEuz+kFdXyLiuX6kLPVLZL2ISlcHNlBIKm5rR8nEi9wJeA6Y8JZlJOyDiin0K5ag+AXHtALBicXasjIUu9h0STBbCMU+89gMnu/J05MU1QWqdbPMRPIZIzDgsi8Olg5t7wHhUg/pv5RUzO+BHDmczHkAfZWxlSYgNI5Ig5XRoc66dW9L45eHDkbkqCO7RLG5cna/HD7YhZnfINkFo8iNyj5kx6pFrxNGRlfhV2e1Zt5DnGU8T7Tud1ivi8jU8/3Zy88pkn6+zdXiJ7AVSFBZA3VcwDfXtt5UUHS38B35hQVuJip4MAAAAASUVORK5CYII=") repeat-x;*background-image:url("ie/header-line.png")}
+a{color:#222;text-decoration:none;border-bottom:1px solid #bbb;}
+a:hover{color:#000}
+a,.self{-webkit-transition:color .1s;-moz-transition:color .1s;-ms-transition:color .1s;-o-transition:color .1s;transition:color .1s}
+.self{color:#333;border-bottom:1px dotted #aaa;cursor:pointer;}
+.self:hover{color:#000}
+strong{font-family:'MontserratBold',Helvetica,Arial,sans-serif;font-weight:700}
+p{margin:0 0 8px}
+label{cursor:pointer}
+h1,h2,h3,h4{margin:0;font:bold 20px/60px 'MontserratBold',Helvetica,Arial,sans-serif}
+h2{height:60px;text-align:center;text-transform:uppercase}
+h4{font-size:18px;line-height:24px}
+ul{margin:0;padding:0;list-style:none}
+table{width:100%;margin-bottom:21px}
+th,td{padding:11px 20px 12px;vertical-align:top;font-weight:normal;text-align:left;border-bottom:2px solid #e7e5e0;}
+thead th,thead td{background:#f3f2ef}
+th{white-space:nowrap}
+td{width:100%}
+.focus{outline:1px dotted rgba(0,0,0,0.5) !important}
+.clear{position:relative;*zoom:1;}
+.clear:before,.clear:after{content:'';display:table;clear:both}
+.layout{width:930px;margin:0 auto;padding:0 15px}
+.header{padding:115px 0 73px;color:#fff;text-align:center;}
+.header h1,.header strong{letter-spacing:-1px;text-transform:uppercase}
+.header h1{padding-bottom:23px;font-size:22px;line-height:28px}
+.header h3{position:relative;padding:35px 0 17px;font-size:120px;line-height:140px;letter-spacing:-5px;}
+.header h3 span{font-size:30px;line-height:40px;letter-spacing:0;margin-left:-10px;vertical-align:baseline;}
+.header h3:before{content:'';display:inline-block;width:72px;height:64px;margin-right:32px;vertical-align:middle;background:url("icheck.png")}
+.header h3:after{content:'';position:absolute;top:0;left:50%;width:100px;margin-left:-50px;border-top:3px solid #fff}
+.header strong{font:24px/30px 'MontserratRegular',Helvetica,Arial,sans-serif;}
+.header strong a{color:#fff;border-bottom-color:#fff}
+.features{position:relative;font-size:16px;color:#555;background:#fff;}
+.features .self{color:#555;border-bottom-color:#bbb;}
+.features .self:hover{color:#222}
+.features .arrows{top:0}
+.features:hover .arrows .bottom{left:0}
+.features h2{color:#fff;background:#2489c5}
+.features ul{padding:44px 60px 36px}
+.features li{padding:0 0 9px 36px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABI0lEQVR4XpXSP0vDUBjF4ZtLkIr4EYzduogdXJTWWV2FLMVNoQrdAhlUUFAEcejo1q13svgFBAUdxA/g30kcdQoIIlL9DWcKuZEeeOCl99w3gTSI49h4MoFb/KCJz6KShS/rOh/TbEZZECLBiSQIR1nQQgAnAVr/LZjEnIq76OJbutjRGR26isUB3pDhBikucWoUzVdI1cl05zBk2MI5jvCKIfL5QluzxTS20bY6WENdl0ujTl13Ni3DABtwWEFp1HG6M7Aq9NHBGRbgy7w6HfTzX6GHCyyXPV2dnu9/MIUX+PIMOkRsbq7hHkZmxciDOrZoQRUVPCGCw504RDobR7VoQQ0f2Mejls1IRb/t4R10CcLc6/2igSVcw8gqFnEMOnSVPxQqQaPw2y7fAAAAAElFTkSuQmCC") 0 1px no-repeat;*background-image:url("ie/icon-star.png");}
+.features li.offset{margin-top:20px}
+.mark{padding:0 2px;color:#777;background:#e7e5e0;}
+.skin-polaris .mark{background:#232830}
+.skin-futurico .mark{background:#25262a}
+.social{height:60px;margin-bottom:60px;padding:0 60px;font-size:16px;color:#555;background:#f5f3ef;}
+.social a{color:#777;border-bottom-color:#ccc;}
+.social a:hover{color:#444}
+.social .left{float:left;padding-top:19px;}
+.social .left li{float:left;padding-right:30px;}
+.social .left li a{position:relative}
+.social .right{float:right;padding-top:20px;}
+.social .right li{float:right;padding-left:10px}
+.social .right.local{padding-top:19px;}
+.social .right.local li{padding-left:30px;font-size:14px}
+.demo-holder{margin-bottom:97px}
+.demo-title{padding-bottom:36px;font-size:26px;letter-spacing:-1px}
+.demo{position:relative;}
+.demo:hover .arrows .top,.demo:hover .arrows .bottom{left:0}
+.demo-list{position:relative;margin-right:360px;padding:33px 57px 17px;color:#555;background:#fff;border:3px solid #ddd8ce;}
+.demo-list ul{float:right;white-space:nowrap;}
+.demo-list ul:first-child{float:left}
+.demo-list ul li{position:relative;padding:0 0 18px 42px}
+.demo-list ul input{position:absolute;top:4px;left:0}
+.demo-list ul .icheckbox_square-blue,.demo-list ul .iradio_square-blue{position:absolute;top:-1px;left:0}
+.demo-list ul span{color:#bbb}
+.demo-methods{padding:21px 360px 0 0;}
+.demo-methods .mark{background:#d3cfc6}
+.demo-methods dt{position:relative;padding:17px 150px 18px 0;font:16px/24px 'MontserratRegular',Helvetica,Arial,sans-serif;color:#444;border-bottom:3px solid #ddd8ce;}
+.demo-methods dt .self{cursor:pointer;}
+.demo-methods dt .self:hover{color:#222}
+.demo-methods dt .code{position:absolute;right:0;bottom:18px;color:#777;}
+.demo-methods dt .code .self:hover{color:#444}
+.demo-methods dd{position:relative;display:none;margin:0;background:#fff;border:3px solid #ddd8ce;border-top:none;}
+.demo-methods dd:before{content:'';position:absolute;top:-13px;left:0;width:0;height:0;border:5px solid transparent;border-bottom-color:#ddd8ce;border-left-color:#ddd8ce}
+.demo-methods dd .markup{margin:0;color:#888;background:#f5f3ef;border:none;}
+.demo-methods dd .markup .comment{color:#aaa}
+.demo-callbacks{position:absolute;top:0;right:0;bottom:0;width:300px;color:#aaa;background:#232323;border:3px solid #ddd8ce;}
+.demo-callbacks h2{color:#fff;background:#6a5a8c}
+.demo-callbacks ul{position:absolute;top:60px;width:100%;bottom:0;overflow:auto;}
+.demo-callbacks ul::-webkit-scrollbar{width:10px;background:none;}
+.demo-callbacks ul::-webkit-scrollbar-track{background:none;border:none;}
+.demo-callbacks ul::-webkit-scrollbar-track-piece:disabled{display:none !important;}
+.demo-callbacks ul::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25);border:none;}
+.demo-callbacks ul::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3);}
+.demo-callbacks ul li{margin-top:-1px;padding:13px 20px 15px;border-top:1px solid #2e2e2e;}
+.demo-callbacks ul li span{color:#888}
+.skins{position:relative;*zoom:1;}
+.skins h2{position:absolute;top:-38px;right:0;left:0;font-size:24px;text-align:center}
+.arrows{position:absolute;top:3px;left:-60px;width:60px;overflow:hidden;}
+.arrows .top,.arrows .bottom{position:relative;left:60px;width:60px;height:60px;cursor:pointer;-webkit-transition:left .3s,background-color .2s;-moz-transition:left .3s,background-color .2s;-ms-transition:left .3s,background-color .2s;-o-transition:left .3s,background-color .2s;transition:left .3s,background-color .2s}
+.arrows .top{background:#83b3be url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAdklEQVR4Xo3MuwmFQBiE0b0FmAuutnRBsAARLMTYRzvWItiEYLq/s6CYyMwGXzTDcWbG8mhEf/ZjQIV2ZCigjiASMAVJIAVKAQ4FKWBDJVoYpAB/7z8GRaAQgBNQG8dZA28f0BmHBgUCKGh9hhpNKH8BWY8GlF2OH3hCC1zmdAAAAABJRU5ErkJggg==") 50% no-repeat;*background-image:url("ie/arrow-top.png");}
+.arrows .top:hover{background-color:#6ba4b1}
+.arrows .bottom{background:#e2b78d url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAf0lEQVR4Xo3MzQmEQBCE0TGAvQuOpiQIBiCCgXj2J52NRTAJwev0Vh+WOgjlNHyHguYFM/M6tKLSd2YTmtHHR48S8jtQzAB2430d2bgJvQLsdqRCZwZUPAFLaPjrjYAUMKLgwBtUK4CIhi4BEFGQBohISANEJKQBIqqIFtSqvx/0bXhCCUrgiAAAAABJRU5ErkJggg==") 50% no-repeat;*background-image:url("ie/arrow-bottom.png");}
+.arrows .bottom:hover{background-color:#dba571}
+@media screen and (max-width:1049px){.arrows,.fork-me{display:none}
+}.skin{position:relative;margin-bottom:40px;}
+.skin:hover .arrows .top,.skin:hover .arrows .bottom{left:0}
+.skin h3{position:relative;z-index:20;float:left;height:60px;padding:0 57px;line-height:58px;background:#fff;border:3px solid #ddd8ce;border-bottom:none;}
+.skin h3:before{content:'';position:absolute;top:100%;left:0;width:100%;height:2px;margin-top:-1px;background:#fff}
+.skin.skin-polaris h3{color:#cacdd1;background:#2c323c;}
+.skin.skin-polaris h3:before{background:#2c323c}
+.skin.skin-futurico h3{color:#c3c3c3;background:#2e3035;}
+.skin.skin-futurico h3:before{background:#2e3035}
+.skin dl{z-index:10;width:100%;margin:0}
+.skin dt{position:relative;top:-53px;right:-3px;float:right;height:47px;margin-right:-3px;padding:0 57px;line-height:47px;border:3px solid #ddd8ce;cursor:pointer;}
+.skin dt:hover{background:#f0ede7;border-bottom:3px solid #ddd8ce}
+.skin dt.selected{height:50px;background:#fff;border-bottom:none;cursor:default;}
+.skin dt.selected:before{content:'';position:absolute;top:100%;left:0;width:100%;height:2px;margin-top:-1px;background:#fff}
+.skin.skin-polaris dt{color:#cacdd1;background:#647083;}
+.skin.skin-polaris dt:hover{background:#4a5361}
+.skin.skin-polaris dt.selected{background:#2c323c;}
+.skin.skin-polaris dt.selected:before{background:#2c323c}
+.skin.skin-futurico dt{color:#c3c3c3;background:#676c77;}
+.skin.skin-futurico dt:hover{background:#4b4e56}
+.skin.skin-futurico dt.selected{background:#2e3035;}
+.skin.skin-futurico dt.selected:before{background:#2e3035}
+.skin dd{position:relative;display:none;float:left;width:100%;margin:-3px -100% 0 0;overflow:hidden;color:#444;background:#fff;border:3px solid #ddd8ce;}
+.skin dd.selected{display:block}
+.skin dd a{color:#444;}
+.skin dd a:hover{color:#111}
+.skin.skin-polaris dd{color:#7a828b;background:#2c323c;}
+.skin.skin-polaris dd a{color:#7a828b;border-bottom-color:#4e596b;}
+.skin.skin-polaris dd a:hover{color:#a2a7ae}
+.skin.skin-futurico dd{color:#888;background:#2e3035;}
+.skin.skin-futurico dd a{color:#888;border-bottom-color:#545861;}
+.skin.skin-futurico dd a:hover{color:#aaa}
+.skin-section{float:left;padding:42px 0 31px 57px;line-height:18px;}
+.skin-section h4{padding-bottom:18px;}
+.skin-polaris .skin-section h4{color:#959ba2}
+.skin-futurico .skin-section h4{color:#a0a0a0}
+.skin-section .list{float:left;padding-right:60px;}
+.skin-section .list li{position:relative;padding-bottom:15px}
+.skin-minimal .skin-section .list li{padding-left:38px}
+.skin-square .skin-section .list li{padding-left:42px}
+.skin-flat .skin-section .list li,.skin-line .skin-section label{padding-left:40px}
+.skin-line .skin-section h4{padding-bottom:24px}
+.skin-line .skin-section .list{padding-right:40px;}
+.skin-line .skin-section .list li{padding-bottom:10px}
+.skin-polaris .skin-section .list li{padding-left:37px}
+.skin-futurico .skin-section .list li{padding-left:36px}
+.icheckbox_minimal,.icheckbox_minimal-red,.icheckbox_minimal-green,.icheckbox_minimal-blue,.icheckbox_minimal-aero,.icheckbox_minimal-grey,.icheckbox_minimal-orange,.icheckbox_minimal-yellow,.icheckbox_minimal-pink,.icheckbox_minimal-purple,.iradio_minimal,.iradio_minimal-red,.iradio_minimal-green,.iradio_minimal-blue,.iradio_minimal-aero,.iradio_minimal-grey,.iradio_minimal-orange,.iradio_minimal-yellow,.iradio_minimal-pink,.iradio_minimal-purple{position:absolute;top:1px;left:0}
+.skin input[type=checkbox],.skin input[type=radio]{position:absolute;top:2px;left:0}
+.icheckbox_square,.icheckbox_square-red,.icheckbox_square-green,.icheckbox_square-blue,.icheckbox_square-aero,.icheckbox_square-grey,.icheckbox_square-orange,.icheckbox_square-yellow,.icheckbox_square-pink,.icheckbox_square-purple,.iradio_square,.iradio_square-red,.iradio_square-green,.iradio_square-blue,.iradio_square-aero,.iradio_square-grey,.iradio_square-orange,.iradio_square-yellow,.iradio_square-pink,.iradio_square-purple{position:absolute;top:-1px;left:0}
+.icheckbox_flat,.icheckbox_flat-red,.icheckbox_flat-green,.icheckbox_flat-blue,.icheckbox_flat-aero,.icheckbox_flat-grey,.icheckbox_flat-orange,.icheckbox_flat-yellow,.icheckbox_flat-pink,.icheckbox_flat-purple,.iradio_flat,.iradio_flat-red,.iradio_flat-green,.iradio_flat-blue,.iradio_flat-aero,.iradio_flat-grey,.iradio_flat-orange,.iradio_flat-yellow,.iradio_flat-pink,.iradio_flat-purple{position:absolute;top:0;left:0}
+.icheckbox_polaris,.iradio_polaris{position:absolute;top:-4px;left:-6px}
+.icheckbox_futurico,.iradio_futurico{position:absolute;top:2px;left:0}
+.skin-states{float:right;padding-right:57px;padding-left:0;}
+.skin-states .state{cursor:default !important}
+.skin-states .list{padding-right:0}
+.skin-minimal .skin-states .list li{padding-left:71px}
+.skin-square .skin-states .list li{padding-left:79px}
+.skin-flat .skin-states .list li{padding-left:75px}
+.skin-line .skin-states .list{padding-right:0}
+.skin-polaris .skin-states .list li{padding-left:69px}
+.skin-futurico .skin-states .list li{padding-left:67px}
+.skin-states .iradio_minimal,.skin-states .iradio_minimal-red,.skin-states .iradio_minimal-green,.skin-states .iradio_minimal-blue,.skin-states .iradio_minimal-aero,.skin-states .iradio_minimal-grey,.skin-states .iradio_minimal-orange,.skin-states .iradio_minimal-yellow,.skin-states .iradio_minimal-pink,.skin-states .iradio_minimal-purple{left:33px}
+.skin-states .iradio_square,.skin-states .iradio_square-red,.skin-states .iradio_square-green,.skin-states .iradio_square-blue,.skin-states .iradio_square-aero,.skin-states .iradio_square-grey,.skin-states .iradio_square-orange,.skin-states .iradio_square-yellow,.skin-states .iradio_square-pink,.skin-states .iradio_square-purple{left:37px}
+.skin-states .iradio_flat,.skin-states .iradio_flat-red,.skin-states .iradio_flat-green,.skin-states .iradio_flat-blue,.skin-states .iradio_flat-aero,.skin-states .iradio_flat-grey,.skin-states .iradio_flat-orange,.skin-states .iradio_flat-yellow,.skin-states .iradio_flat-pink,.skin-states .iradio_flat-purple{left:35px}
+.skin-states .iradio_polaris{left:26px}
+.skin-states .iradio_futurico{left:31px}
+.colors{clear:both;padding:24px 0 9px;}
+.skin-line .colors{padding-top:28px}
+.colors strong{float:left;line-height:20px;margin-right:20px}
+.colors li{position:relative;float:left;width:16px;height:16px;margin:2px 1px 0 0;background:#000;cursor:pointer;filter:alpha(opacity=50);opacity:.5;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-ms-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s;}
+.colors li:hover{filter:alpha(opacity=100);opacity:1}
+.colors li.active{height:20px;margin-top:0;filter:alpha(opacity=75);opacity:.75}
+.colors li.red{background:#d54e21}
+.colors li.green{background:#78a300}
+.colors li.blue{background:#0e76a8}
+.colors li.aero{background:#9cc2cb}
+.colors li.grey{background:#73716e}
+.colors li.orange{background:#f70}
+.colors li.yellow{background:#fc0}
+.colors li.pink{background:#ff66b5}
+.colors li.purple{background:#6a5a8c}
+.skin-square .colors li.red{background:#e56c69}
+.skin-square .colors li.green{background:#1b7e5a}
+.skin-square .colors li.blue{background:#2489c5}
+.skin-square .colors li.aero{background:#9cc2cb}
+.skin-square .colors li.grey{background:#73716e}
+.skin-square .colors li.yellow{background:#fc3}
+.skin-square .colors li.pink{background:#a77a94}
+.skin-square .colors li.purple{background:#6a5a8c}
+.skin-square .colors li.orange{background:#f70}
+.skin-flat .colors li.red{background:#ec7063}
+.skin-flat .colors li.green{background:#1abc9c}
+.skin-flat .colors li.blue{background:#3498db}
+.skin-flat .colors li.grey{background:#95a5a6}
+.skin-flat .colors li.orange{background:#f39c12}
+.skin-flat .colors li.yellow{background:#f1c40f}
+.skin-flat .colors li.pink{background:#af7ac5}
+.skin-flat .colors li.purple{background:#8677a7}
+.skin-line .colors li.yellow{background:#ffc414}
+.skins-info{padding:13px 0 57px;font-size:16px;line-height:22px;text-align:center;}
+.skins-info p{margin-bottom:17px}
+.skins-info .skins-banner{margin:34px 0 3px;}
+.skins-info .skins-banner a{display:block;width:728px;height:90px;margin:0 auto;overflow:hidden;text-indent:100%;white-space:nowrap;background:url(banner.jpg);-webkit-transition:opacity 0.4s ease;-moz-transition:opacity 0.4s ease;-o-transition:opacity 0.4s ease;transition:opacity 0.4s ease;border:none;}
+.skins-info .skins-banner a:hover{opacity:.8;}
+.skin-pre{padding:43px 60px 0}
+.skin-usage{padding:19px 60px 8px;list-style:decimal outside;}
+.skin-usage li{margin-bottom:23px}
+.skin-usage .schemes{margin-bottom:-3px;padding:13px 0 0 20px;color:#888;}
+.skin-usage .schemes ul{float:left;padding-right:60px}
+.skin-usage .schemes li{margin:0;padding-bottom:3px}
+.usage{position:relative;margin-bottom:80px;background:#fff;}
+.usage a{border-bottom-color:#ddd}
+.usage .self{border-bottom-color:#bbb}
+.usage .arrows{top:0}
+.usage:hover .arrows .top,.usage:hover .arrows .bottom{left:0}
+.usage h2{color:#fff;background:#1f7f5c}
+.usage h4{margin:26px 0 10px;}
+.usage h4.indeterminate{margin-top:28px}
+.usage p{margin-bottom:5px;}
+.usage p.offset{margin-top:10px}
+.usage p.callbacks-info{margin-bottom:19px}
+.usage p.methods-info{margin-bottom:10px}
+.usage p.methods-callback{margin-top:10px}
+.usage p.issue-tracker{margin-top:31px}
+.usage .markup{margin:9px 0 16px}
+.usage .usage-inner{font-size:15px;line-height:23px;padding:41px 60px 39px}
+.markup{margin:10px 0 18px;padding:8px 0 9px 17px;font:14px/20px 'MontserratRegular',Helvetica,Arial,sans-serif;color:#777;background:#e7e5e0;border-left:3px solid #d7d5cb;}
+.markup .comment{color:#999;}
+.markup .comment .self{color:#555;}
+.markup .comment .self:hover{color:#333}
+.skin-polaris .markup{background:#232830;border-left-color:#1f232a}
+.skin-futurico .markup{background:#25262a;border-left-color:#202225}
+.skin-polaris .markup .comment,.skin-futurico .markup .comment{color:#555}
+.browsers{margin-bottom:74px;}
+.browsers h2{margin-bottom:29px;font-size:24px}
+.browsers-inner{padding:0 60px;font-size:15px;line-height:23px;}
+.browsers-inner p{margin-bottom:15px}
+.benefits{position:relative;margin-bottom:59px;color:#888;background:#232323;}
+.benefits .arrows{top:0}
+.benefits:hover .arrows .top,.benefits:hover .arrows .bottom{left:0}
+.benefits h2{color:#fff;background:#6a5b8c}
+.benefits a{color:#888;border-bottom-color:#444;}
+.benefits a:hover{color:#aaa}
+.benefits .mark{color:#777;background:#393939}
+.benefits-inner{padding:41px 60px 29px;font-size:15px;line-height:23px;}
+.benefits-inner p{margin-bottom:15px}
+.benefits-inner ul{margin:-10px 0 15px}
+.download{height:63px;text-align:center;}
+.download a{display:block;height:60px;font-size:18px;line-height:58px;color:#fff;border-bottom:0 solid #e24f49;background:#e76b66;-webkit-transition:border-bottom .2s;-moz-transition:border-bottom .2s;-ms-transition:border-bottom .2s;-o-transition:border-bottom .2s;transition:border-bottom .2s;}
+.download a:before{content:'';display:inline-block;width:26px;height:26px;margin-right:12px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAACYUlEQVR4Xr3VPWhTURjH4VOt0ES7ZRJbEJpsNsaimx9E0GpRCdgU/NhsRAdNBYcK0RirQcSkIIK2cRBRiragVayDhqBDLVWatFvsIKK2UMEp4KBcf8N/KNdwvcHWAw8c/rzvebk5yU2dZVnmf6wVNdb70Ca+5Rrkx0e8E/ZkyzCoAyuxBZu17/jXQV34jjwCytowjUk90Ywyo5q8errcDoriPgpoRhEj6MQrGHmpbARF1RbUG3Uz6Bae4iBacQNNSKEPRi4pa1JNq3pGcds+qNrXu4B1CKKCWtZqlPAZO/72RDGsRdKWh5ATIdOSpHpjbu6ojBfYBiPdOIQeHJMeZd0wsh1jKDsNakEc97AHo8o3IYCz2I1nGMYuZQHVGPXs1RlxtNgH+TCFtBpvIqua40ghqkGdOIp27VOqMcigX8PTKIKzWXwZDDbAQhDG5o6yx2iAkQY80T4HYxOEpbP/uCOnN+wq1Nlq6x3qrWp3NIcKJvAWV+FVzU804i6uwyNZZY34BaOeyzpjQmfOLR70DSGcwyxOIa7mAZzHQ+QxLHllCdUYnMYZzOqsjeBsPbp8QFZ7Lw7gCt4jhGu4qCEGa5SVVWPUM4Yjbn5HfrTjNYzk8AAZ5CSjbBBG3qjXr0CqX+YAviJpy6cQg9NKIoJBN6+gIGbwA16kMY5eeGDEo2xcNV71TCPo5qM7iX14hJIueB4XkICRhLJ51ZTUsx8n3AwawmGE8QUhRDR4J4yElUUQUm1YvUPOfxPO4khj66KL70W/m+Z6uF3P0YdJBRVlZqkHlbEezQo+YWHJB8mC1Lx+Ayeq7nRIoewwAAAAAElFTkSuQmCC");*background-image:url("ie/icon-options.png");vertical-align:middle}
+.download a:hover{border-bottom-width:3px}
+.license{color:#444;text-align:center;padding:30px 0 75px}
+.footer{padding-top:28px;height:60px;color:#666;background:#e2dfd8;}
+.footer ul{float:left;}
+.footer ul li{float:left;padding:2px 10px 0 0}
+.footer ul.local li{padding:0 30px 0 0}
+.footer .code{float:right}
+.footer a{color:#444;}
+.footer a:hover{color:#222}
+.footer-inner{width:930px;margin:0 auto;overflow:hidden}
+.fork-me{position:fixed;*position:absolute;top:0;right:0;width:40px;height:40px;overflow:hidden;text-indent:100%;white-space:nowrap;background:#28545b url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAnElEQVR4XqVSgQmEMAyszw/gCI7wK7iBblBHcISfxG6gG/gjuIGO0A3ygaYQCCG2HhweF+6aShsAcDcBJBpuvlwFagqGJwUf5EL6kgV2eEe2yIgc9QI73CMPs8AOywI7nHDSzCxYxcnJ6+hrFnQkJrb2nGclP3Fj+vf0IUV1AgCZHiS86lOObxD4qqSD5mtXmAq1e2fB3vqXact3f/JmXumJlVq1AAAAAElFTkSuQmCC") 50% no-repeat;*background-image:url("ie/icon-fork.png");}
+.fork-me:hover{background-color:#1f7f5c}
+.skin dt,.fork-me{-webkit-transition:background-color .2s;-moz-transition:background-color .2s;-ms-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s}
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.styl b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.styl
new file mode 100644
index 00000000..7f66121a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/custom.styl
@@ -0,0 +1,1191 @@
+/* Reset
+----------------------------------- */
+@import url("normalize.css")
+
+
+/* Fonts
+----------------------------------- */
+$font = 'MontserratRegular'
+$fontBold = 'MontserratBold'
+$stack = $font, Helvetica, Arial, sans-serif
+$stackBold = $fontBold, Helvetica, Arial, sans-serif
+
+@font-face
+ font-family $font
+ src url('./montserrat-regular.eot')
+ src url('./montserrat-regular.eot?#iefix') format('embedded-opentype'),
+ url('./montserrat-regular.woff') format('woff'),
+ url('./montserrat-regular.ttf') format('truetype'),
+ url('./montserrat-regular.svg#' + $font + '') format('svg')
+ font-style normal
+ font-weight normal
+
+@font-face
+ font-family $fontBold
+ src url('./montserrat-bold.eot')
+ src url('./montserrat-bold.eot?#iefix') format('embedded-opentype'),
+ url('./montserrat-bold.woff') format('woff'),
+ url('./montserrat-bold.ttf') format('truetype'),
+ url('./montserrat-bold.svg#' + $fontBold + '') format('svg')
+ font-style normal
+ font-weight bold
+
+
+/* Demo
+----------------------------------- */
+html
+body
+ height 100%
+
+body
+ font 14px/20px $stack
+ color #222
+ background #ebe7df url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAFZCAIAAAA96mnzAAACKklEQVR4Xn2VUW7kMAxD+QLf/1x7gv71LNwdKTLhZFtggMCwSVEUPdb3159/v0uSrM8HtGRZuoQk1R69J12o9ixJWvSnVyfLdbNw0XAXWe1fIL8BoqmNGiV/cHc9Gq4NXxLKHhteRyLpA28cl0SLdx0BckSWL4gkPlIVTg1nN9Ys3iyWI5AGDA5xOXB5BJaWmOw6KSLeU6+0P50QshQyEL2im/YMIL60dTSZ3RXenlkiJpMj8XPMAl1FtjMRW19NxzOE5VGWPVGrc7aSJgz1Y9ku57mpYSwn1h0ivFOXxoCKMCXiahbbZNIZR+tkphllPsomipCwb4GMkXTmPfVg40Jt2y4RQM/PqX5JTM4iiTN8Zz1XvbIAEEvoEW+3nxTLL3lB7t7J3WwyI7g5OVxKIeFEH4FIGLC9I+XqvSd4AxJM5O6WTPr54RAxLG44FVrEuz+kFdXyLiuX6kLPVLZL2ISlcHNlBIKm5rR8nEi9wJeA6Y8JZlJOyDiin0K5ag+AXHtALBicXasjIUu9h0STBbCMU+89gMnu/J05MU1QWqdbPMRPIZIzDgsi8Olg5t7wHhUg/pv5RUzO+BHDmczHkAfZWxlSYgNI5Ig5XRoc66dW9L45eHDkbkqCO7RLG5cna/HD7YhZnfINkFo8iNyj5kx6pFrxNGRlfhV2e1Zt5DnGU8T7Tud1ivi8jU8/3Zy88pkn6+zdXiJ7AVSFBZA3VcwDfXtt5UUHS38B35hQVuJip4MAAAAASUVORK5CYII=") repeat-x
+ *background-image url(ie/header-line.png)
+
+a
+ color #222
+ text-decoration none
+ border-bottom 1px solid #bbb
+
+ &:hover
+ color #000
+
+a
+.self
+ -webkit-transition color .1s
+ -moz-transition color .1s
+ -ms-transition color .1s
+ -o-transition color .1s
+ transition color .1s
+
+.self
+ color #333
+ border-bottom 1px dotted #aaa
+ cursor pointer
+
+ &:hover
+ color #000
+
+strong
+ font-family $stackBold
+ font-weight 700
+
+p
+ margin 0 0 8px
+
+label
+ cursor pointer
+
+h1
+h2
+h3
+h4
+ margin 0
+ font bold 20px/60px $stackBold
+
+h2
+ height 60px
+ text-align center
+ text-transform uppercase
+
+h4
+ font-size 18px
+ line-height 24px
+
+ul
+ margin 0
+ padding 0
+ list-style none
+
+table
+ width 100%
+ margin-bottom 21px
+
+th
+td
+ padding 11px 20px 12px
+ vertical-align top
+ font-weight normal
+ text-align left
+ border-bottom 2px solid #E7E5E0
+
+ thead &
+ background lighten(#E7E5E0, 50%)
+
+th
+ white-space nowrap
+
+td
+ width 100%
+
+.focus
+ outline 1px dotted rgba(0,0,0,.5) !important
+
+.clear
+ position relative
+ *zoom 1
+
+ &:before
+ &:after
+ content ''
+ display table
+ clear both
+
+.layout
+ width 930px
+ margin 0 auto
+ padding 0 15px
+
+.header
+ padding 115px 0 73px
+ color #fff
+ text-align center
+
+ h1
+ strong
+ letter-spacing -1px
+ text-transform uppercase
+
+ h1
+ padding-bottom 23px
+ font-size 22px
+ line-height 28px
+
+ h3
+ position relative
+ padding 35px 0 17px
+ font-size 120px
+ line-height 140px
+ letter-spacing -5px
+
+ &:before
+ content ''
+ display inline-block
+ width 72px
+ height 64px
+ margin-right 32px
+ vertical-align middle
+ background url(icheck.png)
+
+ &:after
+ content ''
+ position absolute
+ top 0
+ left 50%
+ width 100px
+ margin-left -50px
+ border-top 3px solid #fff
+
+ strong
+ font 24px/30px $stack
+
+ a
+ color #fff
+ border-bottom-color #fff
+
+.features
+ position relative
+ font-size 16px
+ color #555
+ background #fff
+
+ .self
+ color #555
+ border-bottom-color #bbb
+
+ &:hover
+ color #222
+
+ .arrows
+ top 0
+
+ &:hover .arrows .bottom
+ left 0
+
+ h2
+ color #fff
+ background #2489c5
+
+ ul
+ padding 44px 60px 36px
+
+ li
+ padding 0 0 9px 36px
+ background url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABI0lEQVR4XpXSP0vDUBjF4ZtLkIr4EYzduogdXJTWWV2FLMVNoQrdAhlUUFAEcejo1q13svgFBAUdxA/g30kcdQoIIlL9DWcKuZEeeOCl99w3gTSI49h4MoFb/KCJz6KShS/rOh/TbEZZECLBiSQIR1nQQgAnAVr/LZjEnIq76OJbutjRGR26isUB3pDhBikucWoUzVdI1cl05zBk2MI5jvCKIfL5QluzxTS20bY6WENdl0ujTl13Ni3DABtwWEFp1HG6M7Aq9NHBGRbgy7w6HfTzX6GHCyyXPV2dnu9/MIUX+PIMOkRsbq7hHkZmxciDOrZoQRUVPCGCw504RDobR7VoQQ0f2Mejls1IRb/t4R10CcLc6/2igSVcw8gqFnEMOnSVPxQqQaPw2y7fAAAAAElFTkSuQmCC") 0 1px no-repeat
+ *background-image url(ie/icon-star.png)
+
+ &.offset
+ margin-top 20px
+
+.mark
+ padding 0 2px
+ color lighten(#555, 20%)
+ background lighten(#d7d4cc, 40%)
+
+ .skin-polaris &
+ background darken(#2C323C, 20%)
+
+ .skin-futurico &
+ background darken(#2E3035, 20%)
+
+.social
+ height 60px
+ margin-bottom 60px
+ padding 0 60px
+ font-size 16px
+ color #555
+ background lighten(#EBE7DF, 50%)
+
+ a
+ color #777
+ border-bottom-color #ccc
+
+ &:hover
+ color #444
+
+ .left
+ float left
+ padding-top 19px
+
+ li
+ float left
+ padding-right 30px
+
+ a
+ position relative
+
+ .right
+ float right
+ padding-top 20px
+
+ li
+ float right
+ padding-left 10px
+
+ &.local
+ padding-top 19px
+
+ li
+ padding-left 30px
+ font-size 14px
+
+.demo-holder
+ margin-bottom 97px
+
+.demo-title
+ padding-bottom 36px
+ font-size 26px
+ letter-spacing -1px
+
+.demo
+ position relative
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+.demo-list
+ position relative
+ margin-right 360px
+ padding 33px 57px 17px
+ color #555
+ background #fff
+ border 3px solid #ddd8ce
+
+ ul
+ float right
+ white-space nowrap
+
+ &:first-child
+ float left
+
+ li
+ position relative
+ padding 0 0 18px 42px
+
+ input
+ position absolute
+ top 4px
+ left 0
+
+ .icheckbox_square-blue
+ .iradio_square-blue
+ position absolute
+ top -1px
+ left 0
+
+ span
+ color #bbb
+
+.demo-methods
+ padding 21px 360px 0 0
+
+ .mark
+ background darken(#e7e5e0, 10%)
+
+ dt
+ position relative
+ padding 17px 150px 18px 0
+ font 16px/24px $stack
+ color #444
+ border-bottom 3px solid #ddd8ce
+
+ .self
+ cursor pointer
+
+ &:hover
+ color #222
+
+ .code
+ position absolute
+ right 0
+ bottom 18px
+ color #777
+
+ .self:hover
+ color #444
+
+ dd
+ position relative
+ display none
+ margin 0
+ background #fff
+ border 3px solid #ddd8ce
+ border-top none
+
+ &:before
+ content ''
+ position absolute
+ top -13px
+ left 0
+ width 0
+ height 0
+ border 5px solid transparent
+ border-bottom-color #ddd8ce
+ border-left-color #ddd8ce
+
+ .markup
+ margin 0
+ color #888
+ background lighten(#ebe7df, 50%)
+ border none
+
+ .comment
+ color #aaa
+
+.demo-callbacks
+ position absolute
+ top 0
+ right 0
+ bottom 0
+ width 300px
+ color #aaa
+ background #232323
+ border 3px solid #ddd8ce
+
+ h2
+ color #fff
+ background #6a5a8c
+
+ ul
+ position absolute
+ top 60px
+ width 100%
+ bottom 0
+ overflow auto
+
+ li
+ margin-top -1px
+ padding 13px 20px 15px
+ border-top 1px solid #2e2e2e
+
+ span
+ color #888
+
+.skins
+ position relative
+ *zoom 1
+
+ h2
+ position absolute
+ top -38px
+ right 0
+ left 0
+ font-size 24px
+ text-align center
+
+.arrows
+ position absolute
+ top 3px
+ left -60px
+ width 60px
+ overflow hidden
+
+ .top
+ .bottom
+ position relative
+ left 60px
+ width 60px
+ height 60px
+ cursor pointer
+ -webkit-transition left .3s, background-color .2s
+ -moz-transition left .3s, background-color .2s
+ -ms-transition left .3s, background-color .2s
+ -o-transition left .3s, background-color .2s
+ transition left .3s, background-color .2s
+
+ .top
+ background lighten(#5a9aa8, 25%) url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAdklEQVR4Xo3MuwmFQBiE0b0FmAuutnRBsAARLMTYRzvWItiEYLq/s6CYyMwGXzTDcWbG8mhEf/ZjQIV2ZCigjiASMAVJIAVKAQ4FKWBDJVoYpAB/7z8GRaAQgBNQG8dZA28f0BmHBgUCKGh9hhpNKH8BWY8GlF2OH3hCC1zmdAAAAABJRU5ErkJggg==") 50% no-repeat
+ *background-image url(ie/arrow-top.png)
+
+ &:hover
+ background-color lighten(#5a9aa8, 10%)
+
+ .bottom
+ background lighten(#dba571, 20%) url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAf0lEQVR4Xo3MzQmEQBCE0TGAvQuOpiQIBiCCgXj2J52NRTAJwev0Vh+WOgjlNHyHguYFM/M6tKLSd2YTmtHHR48S8jtQzAB2430d2bgJvQLsdqRCZwZUPAFLaPjrjYAUMKLgwBtUK4CIhi4BEFGQBohISANEJKQBIqqIFtSqvx/0bXhCCUrgiAAAAABJRU5ErkJggg==") 50% no-repeat
+ *background-image url(ie/arrow-bottom.png)
+
+ &:hover
+ background-color #dba571
+
+@media screen and (max-width:1049px)
+ .arrows
+ .fork-me
+ display none
+
+.skin
+ position relative
+ margin-bottom 40px
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+ h3
+ position relative
+ z-index 20
+ float left
+ height 60px
+ padding 0 57px
+ line-height 58px
+ background #fff
+ border 3px solid #ddd8ce
+ border-bottom none
+
+ &:before
+ content ''
+ position absolute
+ top 100%
+ left 0
+ width 100%
+ height 2px
+ margin-top -1px
+ background #fff
+
+ &.skin-polaris h3
+ color lighten(#7a828b, 60%)
+ background #2c323c
+
+ &:before
+ background #2c323c
+
+ &.skin-futurico h3
+ color lighten(#888, 50%)
+ background #2e3035
+
+ &:before
+ background #2e3035
+
+ dl
+ z-index 10
+ width 100%
+ margin 0
+
+ dt
+ position relative
+ top -53px
+ right -3px
+ float right
+ height 47px
+ margin-right -3px
+ padding 0 57px
+ line-height 47px
+ border 3px solid #ddd8ce
+ cursor pointer
+
+ &:hover
+ background #f0ede7
+ border-bottom 3px solid #ddd8ce
+
+ &.selected
+ height 50px
+ background #fff
+ border-bottom none
+ cursor default
+
+ &:before
+ content ''
+ position absolute
+ top 100%
+ left 0
+ width 100%
+ height 2px
+ margin-top -1px
+ background #fff
+
+ &.skin-polaris dt
+ color lighten(#7a828b, 60%)
+ background lighten(#30363f, 30%)
+
+ &:hover
+ background lighten(#30363f, 15%)
+
+ &.selected
+ background #2c323c
+
+ &:before
+ background #2c323c
+
+ &.skin-futurico dt
+ color lighten(#888, 50%)
+ background lighten(#2e3035, 30%)
+
+ &:hover
+ background lighten(#2e3035, 15%)
+
+ &.selected
+ background #2e3035
+
+ &:before
+ background #2e3035
+
+ dd
+ position relative
+ display none
+ float left
+ width 100%
+ margin -3px -100% 0 0
+ overflow hidden
+ color #444
+ background #fff
+ border 3px solid #ddd8ce
+
+ &.selected
+ display block
+
+ a
+ color #444
+
+ &:hover
+ color #111
+
+ &.skin-polaris dd
+ color #7a828b
+ background #2c323c
+
+ a
+ color #7a828b
+ border-bottom-color lighten(#2c323c, 20%)
+
+ &:hover
+ color lighten(#7a828b, 30%)
+
+ &.skin-futurico dd
+ color #888
+ background #2e3035
+
+ a
+ color #888
+ border-bottom-color lighten(#2e3035, 20%)
+
+ &:hover
+ color #aaa
+
+.skin-section
+ float left
+ padding 42px 0 31px 57px
+ line-height 18px
+
+ h4
+ padding-bottom 18px
+
+ .skin-polaris &
+ color lighten(#7a828b, 20%)
+
+ .skin-futurico &
+ color lighten(#888, 20%)
+
+ .list
+ float left
+ padding-right 60px
+
+ li
+ position relative
+ padding-bottom 15px
+
+ .skin-minimal & .list li
+ padding-left 38px
+
+ .skin-square & .list li
+ padding-left 42px
+
+ .skin-flat & .list li
+ .skin-line & label
+ padding-left 40px
+
+ .skin-line & h4
+ padding-bottom 24px
+
+ .skin-line & .list
+ padding-right 40px
+
+ li
+ padding-bottom 10px
+
+ .skin-polaris & .list li
+ padding-left 37px
+
+ .skin-futurico & .list li
+ padding-left 36px
+
+.icheckbox_minimal
+.icheckbox_minimal-red
+.icheckbox_minimal-green
+.icheckbox_minimal-blue
+.icheckbox_minimal-aero
+.icheckbox_minimal-grey
+.icheckbox_minimal-orange
+.icheckbox_minimal-yellow
+.icheckbox_minimal-pink
+.icheckbox_minimal-purple
+.iradio_minimal
+.iradio_minimal-red
+.iradio_minimal-green
+.iradio_minimal-blue
+.iradio_minimal-aero
+.iradio_minimal-grey
+.iradio_minimal-orange
+.iradio_minimal-yellow
+.iradio_minimal-pink
+.iradio_minimal-purple
+ position absolute
+ top 1px
+ left 0
+
+.skin input[type=checkbox]
+.skin input[type=radio]
+ position absolute
+ top 2px
+ left 0
+
+.icheckbox_square
+.icheckbox_square-red
+.icheckbox_square-green
+.icheckbox_square-blue
+.icheckbox_square-aero
+.icheckbox_square-grey
+.icheckbox_square-orange
+.icheckbox_square-yellow
+.icheckbox_square-pink
+.icheckbox_square-purple
+.iradio_square
+.iradio_square-red
+.iradio_square-green
+.iradio_square-blue
+.iradio_square-aero
+.iradio_square-grey
+.iradio_square-orange
+.iradio_square-yellow
+.iradio_square-pink
+.iradio_square-purple
+ position absolute
+ top -1px
+ left 0
+
+.icheckbox_flat
+.icheckbox_flat-red
+.icheckbox_flat-green
+.icheckbox_flat-blue
+.icheckbox_flat-aero
+.icheckbox_flat-grey
+.icheckbox_flat-orange
+.icheckbox_flat-yellow
+.icheckbox_flat-pink
+.icheckbox_flat-purple
+.iradio_flat
+.iradio_flat-red
+.iradio_flat-green
+.iradio_flat-blue
+.iradio_flat-aero
+.iradio_flat-grey
+.iradio_flat-orange
+.iradio_flat-yellow
+.iradio_flat-pink
+.iradio_flat-purple
+ position absolute
+ top 0
+ left 0
+
+.icheckbox_polaris
+.iradio_polaris
+ position absolute
+ top -4px
+ left -6px
+
+.icheckbox_futurico
+.iradio_futurico
+ position absolute
+ top 2px
+ left 0
+
+.skin-states
+ float right
+ padding-right 57px
+ padding-left 0
+
+ .state
+ cursor default !important
+
+ .list
+ padding-right 0
+
+ .skin-minimal & .list li
+ padding-left 71px
+
+ .skin-square & .list li
+ padding-left 79px
+
+ .skin-flat & .list li
+ padding-left 75px
+
+ .skin-line & .list
+ padding-right 0
+
+ .skin-polaris & .list li
+ padding-left 69px
+
+ .skin-futurico & .list li
+ padding-left 67px
+
+ .iradio_minimal
+ .iradio_minimal-red
+ .iradio_minimal-green
+ .iradio_minimal-blue
+ .iradio_minimal-aero
+ .iradio_minimal-grey
+ .iradio_minimal-orange
+ .iradio_minimal-yellow
+ .iradio_minimal-pink
+ .iradio_minimal-purple
+ left 33px
+
+ .iradio_square
+ .iradio_square-red
+ .iradio_square-green
+ .iradio_square-blue
+ .iradio_square-aero
+ .iradio_square-grey
+ .iradio_square-orange
+ .iradio_square-yellow
+ .iradio_square-pink
+ .iradio_square-purple
+ left 37px
+
+ .iradio_flat
+ .iradio_flat-red
+ .iradio_flat-green
+ .iradio_flat-blue
+ .iradio_flat-aero
+ .iradio_flat-grey
+ .iradio_flat-orange
+ .iradio_flat-yellow
+ .iradio_flat-pink
+ .iradio_flat-purple
+ left 35px
+
+ .iradio_polaris
+ left 26px
+
+ .iradio_futurico
+ left 31px
+
+.colors
+ clear both
+ padding 24px 0 9px
+
+ .skin-line &
+ padding-top 28px
+
+ strong
+ float left
+ line-height 20px
+ margin-right 20px
+
+ li
+ position relative
+ float left
+ width 16px
+ height 16px
+ margin 2px 1px 0 0
+ background #000
+ cursor pointer
+ filter unquote('alpha(opacity=50)')
+ opacity .5
+ -webkit-transition opacity .2s
+ -moz-transition opacity .2s
+ -ms-transition opacity .2s
+ -o-transition opacity .2s
+ transition opacity .2s
+
+ &:hover
+ filter unquote('alpha(opacity=100)')
+ opacity 1
+
+ &.active
+ height 20px
+ margin-top 0
+ filter unquote('alpha(opacity=75)')
+ opacity .75
+
+ &.red
+ background #d54e21
+
+ &.green
+ background #78a300
+
+ &.blue
+ background #0e76a8
+
+ &.aero
+ background #9cc2cb
+
+ &.grey
+ background #73716e
+
+ &.orange
+ background #f70
+
+ &.yellow
+ background #fc0
+
+ &.pink
+ background #ff66b5
+
+ &.purple
+ background #6a5a8c
+
+ .skin-square &.red
+ background #e56c69
+
+ .skin-square &.green
+ background #1b7e5a
+
+ .skin-square &.blue
+ background #2489c5
+
+ .skin-square &.aero
+ background #9cc2cb
+
+ .skin-square &.grey
+ background #73716e
+
+ .skin-square &.yellow
+ background #fc3
+
+ .skin-square &.pink
+ background #a77a94
+
+ .skin-square &.purple
+ background #6a5a8c
+
+ .skin-square &.orange
+ background #f70
+
+ .skin-flat &.red
+ background #ec7063
+
+ .skin-flat &.green
+ background #1abc9c
+
+ .skin-flat &.blue
+ background #3498db
+
+ .skin-flat &.grey
+ background #95a5a6
+
+ .skin-flat &.orange
+ background #f39c12
+
+ .skin-flat &.yellow
+ background #f1c40f
+
+ .skin-flat &.pink
+ background #af7ac5
+
+ .skin-flat &.purple
+ background #8677a7
+
+ .skin-line &.yellow
+ background #FFC414
+
+.skins-info
+ padding 13px 0 57px
+ font-size 16px
+ line-height 22px
+ text-align center
+
+ p
+ margin-bottom 17px
+
+.skin-pre
+ padding 43px 60px 0
+
+.skin-usage
+ padding 19px 60px 8px
+ list-style decimal outside
+
+ li
+ margin-bottom 23px
+
+ .schemes
+ margin-bottom -3px
+ padding 13px 0 0 20px
+ color #888
+
+ ul
+ float left
+ padding-right 60px
+
+ li
+ margin 0
+ padding-bottom 3px
+
+.usage
+ position relative
+ margin-bottom 80px
+ background #fff
+
+ a
+ border-bottom-color #ddd
+
+ .self
+ border-bottom-color #bbb
+
+ .arrows
+ top 0
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+ h2
+ color #fff
+ background #1f7f5c
+
+ h4
+ margin 26px 0 10px
+
+ &.indeterminate
+ margin-top 28px
+
+ p
+ margin-bottom 5px
+
+ &.offset
+ margin-top 10px
+
+ &.callbacks-info
+ margin-bottom 19px
+
+ &.methods-info
+ margin-bottom 10px
+
+ &.methods-callback
+ margin-top 10px
+
+ &.issue-tracker
+ margin-top 31px
+
+ .markup
+ margin 9px 0 16px
+
+ .usage-inner
+ font-size 15px
+ line-height 23px
+ padding 41px 60px 39px
+
+.markup
+ margin 10px 0 18px
+ padding 8px 0 9px 17px
+ font 14px/20px $stack
+ color lighten(#555, 20%)
+ background lighten(#d7d4cc, 40%)
+ border-left 3px solid darken(#ebeae5, 10%)
+
+ .comment
+ color lighten(#555, 40%)
+
+ .self
+ color #555
+
+ &:hover
+ color #333
+
+ .skin-polaris &
+ background darken(#2C323C, 20%)
+ border-left-color darken(#2C323C, 30%)
+
+ .skin-futurico &
+ background darken(#2E3035, 20%)
+ border-left-color darken(#2E3035, 30%)
+
+ .skin-polaris &
+ .skin-futurico &
+
+ .comment
+ color #555
+
+.browsers
+ margin-bottom 74px
+
+ h2
+ margin-bottom 29px
+ font-size 24px
+
+.browsers-inner
+ padding 0 60px
+ font-size 15px
+ line-height 23px
+
+ p
+ margin-bottom 15px
+
+.benefits
+ position relative
+ margin-bottom 59px
+ color #888
+ background #232323
+
+ .arrows
+ top 0
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+ h2
+ color #fff
+ background #6a5b8c
+
+ a
+ color #888
+ border-bottom-color #444
+
+ &:hover
+ color #aaa
+
+ .mark
+ color #777
+ background lighten(#232323, 10%)
+
+.benefits-inner
+ padding 41px 60px 29px
+ font-size 15px
+ line-height 23px
+
+ p
+ margin-bottom 15px
+
+ ul
+ margin -10px 0 15px
+
+.download
+ height 63px
+ text-align center
+
+ a
+ display block
+ height 60px
+ font-size 18px
+ line-height 58px
+ color #fff
+ border-bottom 0 solid darken(#E76B66, 10%)
+ background #E76B66
+ -webkit-transition border-bottom .2s
+ -moz-transition border-bottom .2s
+ -ms-transition border-bottom .2s
+ -o-transition border-bottom .2s
+ transition border-bottom .2s
+
+ &:before
+ content ''
+ display inline-block
+ width 26px
+ height 26px
+ margin-right 12px
+ background url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAACYUlEQVR4Xr3VPWhTURjH4VOt0ES7ZRJbEJpsNsaimx9E0GpRCdgU/NhsRAdNBYcK0RirQcSkIIK2cRBRiragVayDhqBDLVWatFvsIKK2UMEp4KBcf8N/KNdwvcHWAw8c/rzvebk5yU2dZVnmf6wVNdb70Ca+5Rrkx0e8E/ZkyzCoAyuxBZu17/jXQV34jjwCytowjUk90Ywyo5q8errcDoriPgpoRhEj6MQrGHmpbARF1RbUG3Uz6Bae4iBacQNNSKEPRi4pa1JNq3pGcds+qNrXu4B1CKKCWtZqlPAZO/72RDGsRdKWh5ATIdOSpHpjbu6ojBfYBiPdOIQeHJMeZd0wsh1jKDsNakEc97AHo8o3IYCz2I1nGMYuZQHVGPXs1RlxtNgH+TCFtBpvIqua40ghqkGdOIp27VOqMcigX8PTKIKzWXwZDDbAQhDG5o6yx2iAkQY80T4HYxOEpbP/uCOnN+wq1Nlq6x3qrWp3NIcKJvAWV+FVzU804i6uwyNZZY34BaOeyzpjQmfOLR70DSGcwyxOIa7mAZzHQ+QxLHllCdUYnMYZzOqsjeBsPbp8QFZ7Lw7gCt4jhGu4qCEGa5SVVWPUM4Yjbn5HfrTjNYzk8AAZ5CSjbBBG3qjXr0CqX+YAviJpy6cQg9NKIoJBN6+gIGbwA16kMY5eeGDEo2xcNV71TCPo5qM7iX14hJIueB4XkICRhLJ51ZTUsx8n3AwawmGE8QUhRDR4J4yElUUQUm1YvUPOfxPO4khj66KL70W/m+Z6uF3P0YdJBRVlZqkHlbEezQo+YWHJB8mC1Lx+Ayeq7nRIoewwAAAAAElFTkSuQmCC")
+ *background-image url(ie/icon-options.png)
+ vertical-align middle
+
+ &:hover
+ border-bottom-width 3px
+
+.license
+ color #444
+ text-align center
+ padding 30px 0 75px
+
+.footer
+ padding-top 28px
+ height 60px
+ color #666
+ background #e2dfd8
+
+ ul
+ float left
+
+ li
+ float left
+ padding 2px 10px 0 0
+
+ &.local li
+ padding 0 30px 0 0
+
+ .code
+ float right
+
+ a
+ color #444
+
+ &:hover
+ color #222
+
+.footer-inner
+ width 930px
+ margin 0 auto
+ overflow hidden
+
+.fork-me
+ position fixed
+ *position absolute
+ top 0
+ right 0
+ width 40px
+ height 40px
+ overflow hidden
+ text-indent 100%
+ white-space nowrap
+ background #28545b url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAnElEQVR4XqVSgQmEMAyszw/gCI7wK7iBblBHcISfxG6gG/gjuIGO0A3ygaYQCCG2HhweF+6aShsAcDcBJBpuvlwFagqGJwUf5EL6kgV2eEe2yIgc9QI73CMPs8AOywI7nHDSzCxYxcnJ6+hrFnQkJrb2nGclP3Fj+vf0IUV1AgCZHiS86lOObxD4qqSD5mtXmAq1e2fB3vqXact3f/JmXumJlVq1AAAAAElFTkSuQmCC") 50% no-repeat
+ *background-image url(ie/icon-fork.png)
+
+ &:hover
+ background-color #1f7f5c
+
+.skin dt
+.fork-me
+ -webkit-transition background-color .2s
+ -moz-transition background-color .2s
+ -ms-transition background-color .2s
+ -o-transition background-color .2s
+ transition background-color .2s
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/icheck.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/icheck.png
new file mode 100644
index 00000000..497c5e66
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/icheck.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-bottom.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-bottom.png
new file mode 100644
index 00000000..a815b3f6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-bottom.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-top.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-top.png
new file mode 100644
index 00000000..0836c0e3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/arrow-top.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/header-line.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/header-line.png
new file mode 100644
index 00000000..f6240feb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/header-line.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-fork.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-fork.png
new file mode 100644
index 00000000..2c3e3b9c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-fork.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-github.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-github.png
new file mode 100644
index 00000000..ed781862
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-github.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-lab.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-lab.png
new file mode 100644
index 00000000..4d42726a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-lab.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-options.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-options.png
new file mode 100644
index 00000000..20cbb613
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-options.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-star.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-star.png
new file mode 100644
index 00000000..a1c11692
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/ie/icon-star.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.eot b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.eot
new file mode 100644
index 00000000..69ddb387
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.eot
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.svg b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.svg
new file mode 100644
index 00000000..b7e99a4d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.svg
@@ -0,0 +1,1490 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="montserratbold" horiz-adv-x="1525" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="540" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="682" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="0" />
+<glyph unicode="&#xd;" horiz-adv-x="681" />
+<glyph unicode=" " horiz-adv-x="540" />
+<glyph unicode="&#x09;" horiz-adv-x="540" />
+<glyph unicode="&#xa0;" horiz-adv-x="540" />
+<glyph unicode="!" horiz-adv-x="645" d="M141 1432h363v-254l-62 -738h-241l-60 738v254zM141 164q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="&#x22;" horiz-adv-x="886" d="M145 883v549h244v-549h-244zM498 883v549h243v-549h-243z" />
+<glyph unicode="#" horiz-adv-x="1529" d="M1386 850h-206l-43 -256h235l-55 -283h-227l-54 -311h-307l53 311h-186l-53 -311h-310l54 311h-197l55 283h191l43 256h-219l55 283h211l55 331h310l-56 -331h185l55 331h311l-59 -331h215zM874 850h-186l-45 -256h186q27 164 45 256z" />
+<glyph unicode="$" horiz-adv-x="1300" d="M553 -141v149q-260 41 -479 236l190 231q160 -139 289 -178v305q-215 55 -315.5 148.5t-100.5 268.5t115 288.5t301 136.5v100h217v-104q205 -29 408 -170l-168 -242q-129 92 -240 123v-295q221 -57 326.5 -153.5t105.5 -272.5t-117.5 -290.5t-314.5 -137.5v-143h-217z M874 414q0 43 -22.5 71.5t-81.5 53.5v-252q104 33 104 127zM553 1159q-88 -31 -88 -112.5t88 -124.5v237z" />
+<glyph unicode="%" horiz-adv-x="1677" d="M1522 1432l-1026 -1432h-353l1028 1432h351zM1239 170q37 0 61.5 27.5t24.5 72.5t-24.5 75t-60.5 30t-60.5 -30t-24.5 -75t23.5 -72.5t60.5 -27.5zM1456 67q-86 -83 -216 -83t-216 84t-86 203.5t86 203.5t216 84t216 -84t86 -204.5t-86 -203.5zM432 1008q37 0 61.5 27.5 t24.5 72.5t-24.5 74.5t-60.5 29.5t-60.5 -29.5t-24.5 -74.5t23.5 -72.5t60.5 -27.5zM649 904q-86 -83 -216 -83t-216 84t-86 204t86 204t216 84t216 -84t86 -205t-86 -204z" />
+<glyph unicode="&#x26;" horiz-adv-x="1433" d="M1012 123q-172 -139 -398.5 -139t-372 115.5t-145.5 316.5q0 225 301 399q-68 82 -98.5 144.5t-30.5 146.5q0 174 126 266t298 92t294 -89t122 -249q0 -201 -293 -372q115 -143 172 -207q51 94 78 198l240 -172q-47 -129 -115 -239l203 -201l-203 -192zM460.5 287 q59.5 -47 154 -47t202.5 90q-150 158 -258 286q-158 -98 -158 -210q0 -72 59.5 -119zM611 1191q-36 -32 -36 -86t82 -157q154 82 154 154q0 59 -37 90t-82 31t-81 -32z" />
+<glyph unicode="'" horiz-adv-x="534" d="M145 883v549h244v-549h-244z" />
+<glyph unicode="(" horiz-adv-x="741" d="M482 1115q-85 -253 -85 -473t85 -474t208 -428h-332q-100 141 -183 398t-83 503t83 504t183 399h332q-123 -176 -208 -429z" />
+<glyph unicode=")" horiz-adv-x="741" d="M259 168q85 254 85 474t-85 473t-208 429h332q100 -141 183 -399t83 -504t-83 -503t-183 -398h-332q123 174 208 428z" />
+<glyph unicode="*" horiz-adv-x="933" d="M569 915l13 -172h-230l13 172l-146 -100l-104 186l172 86l-174 87l106 182l146 -96l-13 172h230l-13 -172l146 96l106 -182l-174 -87l172 -86l-104 -186z" />
+<glyph unicode="+" horiz-adv-x="1196" d="M457 223v369h-359v252h359v368h282v-368h359v-252h-359v-369h-282z" />
+<glyph unicode="," horiz-adv-x="608" d="M186 25q-72 51 -71.5 133t55.5 134t133 52t134.5 -51t56.5 -120t-60 -165l-123 -211h-202z" />
+<glyph unicode="-" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="." horiz-adv-x="589" d="M115 164q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="/" horiz-adv-x="1257" d="M913 1649h291l-860 -1878h-289z" />
+<glyph unicode="0" horiz-adv-x="1413" d="M428 723q0 -215 67.5 -346t211 -131t211 131t67.5 346t-67.5 346t-211 131t-211 -131t-67.5 -346zM262.5 185.5q-147.5 201.5 -147.5 538.5t147.5 538.5t444.5 201.5t444 -201.5t147 -538.5t-147 -538.5t-444 -201.5t-444.5 201.5z" />
+<glyph unicode="1" horiz-adv-x="825" d="M63 1432h580v-1432h-307v1159h-273v273z" />
+<glyph unicode="2" horiz-adv-x="1239" d="M720 873.5q54 76.5 54 148.5t-47 120t-121 48q-135 0 -256 -193l-256 152q100 156 220 235.5t305.5 79.5t325.5 -117.5t140 -320.5q0 -111 -56 -212t-208 -259l-258 -268h565v-287h-1009v238l420 430q127 129 181 205.5z" />
+<glyph unicode="3" horiz-adv-x="1210" d="M154 1159v273h876v-222l-293 -333q172 -29 266.5 -145t94.5 -267q0 -225 -152.5 -353t-390.5 -128t-481 168l131 254q203 -143 362 -144q96 0 158.5 47t62.5 136.5t-71.5 141.5t-198.5 52q-68 0 -190 -39v236l274 323h-448z" />
+<glyph unicode="4" horiz-adv-x="1204" d="M649 618v250h307v-250h162v-276h-162v-342h-307v342h-575v244l510 846h348l-486 -814h203z" />
+<glyph unicode="5" horiz-adv-x="1220" d="M1036 1432v-277h-565v-240q63 18 145 19q207 0 356.5 -125t149.5 -337t-154.5 -350t-381.5 -138q-291 0 -486 215l168 233q18 -18 49 -45t113 -71t164 -44t145.5 49.5t63.5 145.5t-68.5 148.5t-177 52.5t-252.5 -78l-133 143v699h864z" />
+<glyph unicode="6" horiz-adv-x="1290" d="M725 1190q-133 0 -206 -89t-89 -243q133 86 283 86q201 0 335 -131t134 -349t-144.5 -349t-363.5 -131q-152 0 -263.5 58t-172.5 163q-123 203 -123 508q0 197 48 345t132 234q164 172 405 172q100 0 191.5 -29.5t140.5 -60.5t109 -78l-152 -225q-12 12 -35.5 32.5 t-93 53.5t-135.5 33zM523.5 617.5q-64.5 -56.5 -64.5 -146.5t61.5 -154.5t153.5 -64.5t153.5 57.5t61.5 148.5t-55.5 153.5t-150.5 62.5t-159.5 -56.5z" />
+<glyph unicode="7" horiz-adv-x="1185" d="M96 973v459h1034v-242l-579 -1190h-348l553 1157h-361v-184h-299z" />
+<glyph unicode="8" horiz-adv-x="1314" d="M657 1464q213 0 354.5 -112.5t141.5 -277.5t-127 -283q178 -137 178 -361q0 -188 -151.5 -317t-395 -129t-395 129t-151.5 317q0 223 178 361q-129 121 -129 284.5t142 276t355 112.5zM657 250q84 0 156 48t72 140t-70 141.5t-158 49.5t-157.5 -49.5t-69.5 -141.5 t71.5 -140t155.5 -48zM657.5 874q77.5 0 136 49.5t58.5 122t-57.5 122t-137 49.5t-137 -49.5t-57.5 -122t58.5 -122t136 -49.5z" />
+<glyph unicode="9" horiz-adv-x="1288" d="M563 258q133 0 206 89t89 243q-131 -88 -283 -88q-201 0 -335 132t-134 349t144.5 349t363.5 132q152 0 263.5 -58t175.5 -163q121 -203 121 -508q0 -197 -48.5 -345t-130.5 -234q-168 -172 -407 -172q-100 0 -192.5 29.5t-139.5 59t-109 77.5l160 225q14 -12 38 -31.5 t91.5 -52.5t126.5 -33zM765.5 829.5q63.5 55.5 63.5 145.5t-61 155.5t-153.5 65.5t-150.5 -58.5t-58 -148.5t53 -152.5t148 -62.5t158.5 55.5z" />
+<glyph unicode=":" horiz-adv-x="634" d="M137 164q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128zM137 702.5q0 75.5 52.5 128t128 52.5t128 -52.5t52.5 -128t-52.5 -128t-128 -52.5t-128 52.5t-52.5 128z" />
+<glyph unicode=";" horiz-adv-x="645" d="M211 20q-74 53 -74 135.5t55.5 134.5t134.5 52t135 -51t56 -118t-59 -169l-127 -211h-201zM137 702.5q0 75.5 52.5 128t128 52.5t128 -52.5t52.5 -128t-52.5 -128t-128 -52.5t-128 52.5t-52.5 128z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1230" d="M84 668v280l995 469v-301l-657 -303l657 -311v-303z" />
+<glyph unicode="=" horiz-adv-x="1202" d="M102 1102h998v-252h-998v252zM102 592h998v-252h-998v252z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1230" d="M1147 948v-280l-995 -469v303l657 311l-657 303v301z" />
+<glyph unicode="?" horiz-adv-x="1073" d="M678 426h-311v154q0 84 21.5 126t90.5 113l139 144q31 37 31 95t-32.5 97t-86 39t-89 -46t-44.5 -122h-325q23 205 149.5 321.5t318 116.5t311.5 -104.5t120 -288.5q0 -82 -20.5 -122t-29 -57.5t-38 -52t-39.5 -44.5q-49 -49 -93 -92.5t-58.5 -71t-14.5 -82.5v-123z M346 164q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="@" horiz-adv-x="1824" d="M1409 250q55 0 97 88t42 221q0 289 -165.5 478.5t-444.5 189.5t-469 -199t-190 -476.5t179 -461.5t443 -184q207 0 365 151l84 -145q-82 -72 -209 -116t-240 -44q-342 0 -572.5 228.5t-230.5 571.5t243 585.5t585 242.5t571 -233.5t229 -581.5q0 -225 -93 -361t-244 -136 q-78 0 -142.5 47t-89.5 118q-113 -145 -286 -145t-301 131t-128 333t116 340t304 138q63 0 120.5 -27.5t82.5 -54.5l27 -26v84h256v-654q0 -102 61 -102zM1039.5 729.5q-54.5 67.5 -142.5 67.5t-140 -67.5t-52 -167t52 -173.5t142 -74t142.5 71t52.5 173.5t-54.5 170z" />
+<glyph unicode="A" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358z" />
+<glyph unicode="B" horiz-adv-x="1411" d="M803 0h-627v1432h557q145 0 251 -35t159 -94q96 -111 96 -250q0 -168 -109 -250q-37 -29 -51 -36t-51 -24q133 -29 212 -120t79 -226q0 -150 -102 -264q-119 -133 -414 -133zM496 852h151q133 0 197.5 28.5t64.5 124t-59 126t-201 30.5h-153v-309zM496 270h219 q137 0 205.5 34t68.5 133.5t-72.5 131t-232.5 31.5h-188v-330z" />
+<glyph unicode="C" horiz-adv-x="1499" d="M834 283q236 0 385 186l204 -211q-244 -274 -574.5 -274t-544.5 208.5t-214 527t218 531.5t534 213q352 0 590 -268l-199 -225q-152 188 -377 188q-180 0 -308 -117.5t-128 -317.5t121 -320.5t293 -120.5z" />
+<glyph unicode="D" horiz-adv-x="1574" d="M1270 1244.5q205 -187.5 205 -521.5t-200 -528.5t-609 -194.5h-490v1432h506q383 0 588 -187.5zM1035.5 393.5q117.5 110.5 117.5 321.5t-117.5 324.5t-361.5 113.5h-178v-870h202q220 0 337.5 110.5z" />
+<glyph unicode="E" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032z" />
+<glyph unicode="F" horiz-adv-x="1253" d="M1159 1432v-281h-663v-309h630v-281h-630v-561h-320v1432h983z" />
+<glyph unicode="G" horiz-adv-x="1536" d="M1106 729h321v-508q-213 -238 -589 -237q-315 0 -529.5 208.5t-214.5 527t218 531.5t526.5 213t535.5 -202l-166 -240q-96 84 -177 115.5t-175 31.5q-182 0 -307 -123.5t-125 -326.5t120 -325t285.5 -122t276.5 64v393z" />
+<glyph unicode="H" horiz-adv-x="1560" d="M1065 1432h319v-1432h-319v563h-569v-563h-320v1432h320v-598h569v598z" />
+<glyph unicode="I" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432z" />
+<glyph unicode="J" horiz-adv-x="1138" d="M229 1157v275h746v-934q0 -256 -132 -383t-339 -127q-258 0 -451 198l166 230q129 -139 270 -140q68 0 116 52.5t48 156.5v672h-424z" />
+<glyph unicode="K" horiz-adv-x="1454" d="M176 1432h320v-588l540 588h396l-570 -633q74 -102 272.5 -382t297.5 -417h-373l-420 565l-143 -159v-406h-320v1432z" />
+<glyph unicode="L" horiz-adv-x="1163" d="M176 0v1432h320v-1147h610v-285h-930z" />
+<glyph unicode="M" horiz-adv-x="1953" d="M1458 901l-387 -782h-190l-385 782v-901h-320v1432h432l369 -787l371 787h430v-1432h-320v901z" />
+<glyph unicode="N" horiz-adv-x="1673" d="M1178 1432h319v-1432h-319l-682 897v-897h-320v1432h299l703 -922v922z" />
+<glyph unicode="O" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212z" />
+<glyph unicode="P" horiz-adv-x="1386" d="M1162.5 1304q150.5 -128 150.5 -393.5t-154.5 -388.5t-472.5 -123h-190v-399h-320v1432h506q330 0 480.5 -128zM927.5 740.5q57.5 64.5 57.5 188.5t-74.5 176t-232.5 52h-182v-481h215q159 0 216.5 64.5z" />
+<glyph unicode="Q" horiz-adv-x="1693" d="M1597 725q0 -223 -113.5 -401.5t-305.5 -266.5q18 -31 58 -52t83 -21t84 13t65 32q53 43 76 84l166 -199q-176 -186 -440 -186q-123 0 -242 67.5t-182 190.5q-317 0 -534.5 212t-217.5 527t217 527t534.5 212t534.5 -212t217 -527zM1149 1050.5q-123 135.5 -302 135.5 t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327z" />
+<glyph unicode="R" horiz-adv-x="1488" d="M1337 956q0 -344 -272 -444l362 -512h-393l-317 457h-221v-457h-320v1432h543q334 0 476 -113t142 -363zM952.5 786.5q59.5 53.5 59.5 169t-61.5 158.5t-215.5 43h-239v-424h233q164 0 223.5 53.5z" />
+<glyph unicode="S" horiz-adv-x="1306" d="M511 1146q-46 -38 -46 -100.5t56.5 -99.5t260 -87t316 -150.5t112.5 -293t-144 -312t-380 -119.5q-340 0 -612 252l190 233q231 -203 428 -203q88 0 138.5 38t50.5 102.5t-53.5 102.5t-211.5 77q-250 59 -365.5 154.5t-115.5 299t146.5 314t365.5 110.5q143 0 286.5 -49 t250.5 -139l-162 -234q-186 141 -385 142q-80 0 -126 -38z" />
+<glyph unicode="T" horiz-adv-x="1245" d="M782 1155v-1155h-319v1155h-406v277h1131v-277h-406z" />
+<glyph unicode="U" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5z" />
+<glyph unicode="V" horiz-adv-x="1409" d="M705 520l364 912h346l-575 -1432h-271l-575 1432h346z" />
+<glyph unicode="W" horiz-adv-x="2086" d="M623 608l254 824h333l252 -824l285 824h346l-500 -1432h-237l-314 995l-311 -995h-237l-500 1432h346z" />
+<glyph unicode="X" horiz-adv-x="1423" d="M981 1432h385l-446 -691l483 -741h-389l-305 471l-303 -471h-386l482 733l-449 699h383l273 -424z" />
+<glyph unicode="Y" horiz-adv-x="1265" d="M793 0h-320v565l-496 867h347l309 -533l309 533h346l-495 -867v-565z" />
+<glyph unicode="Z" horiz-adv-x="1394" d="M94 0v219l750 936h-725v277h1161v-222l-748 -931h760v-279h-1198z" />
+<glyph unicode="[" horiz-adv-x="765" d="M684 1550v-231h-264v-1362h264v-231h-526v1824h526z" />
+<glyph unicode="\" horiz-adv-x="1171" d="M57 1550h310l745 -1550h-309z" />
+<glyph unicode="]" horiz-adv-x="765" d="M82 -274v231h264v1362h-264v231h526v-1824h-526z" />
+<glyph unicode="^" horiz-adv-x="989" d="M338 1579h-293l281 363h338l280 -363h-293l-157 174z" />
+<glyph unicode="_" horiz-adv-x="1474" d="M137 -270v178h1200v-178h-1200z" />
+<glyph unicode="`" horiz-adv-x="782" d="M680 1575h-293l-285 229l316 135z" />
+<glyph unicode="a" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134z" />
+<glyph unicode="b" horiz-adv-x="1363" d="M1130.5 963.5q149.5 -156.5 149.5 -402.5t-153.5 -411.5t-349 -165.5t-324.5 161v-145h-308v1520h308v-541q127 141 327.5 141t350 -156.5zM523.5 331q74.5 -85 181 -85t186.5 85t80 218t-78 223t-186.5 90t-183 -89t-74.5 -223t74.5 -219z" />
+<glyph unicode="c" horiz-adv-x="1191" d="M674 256q154 0 276 154l183 -205q-213 -221 -461 -221t-419 156.5t-171 409.5t173 411.5t411 158.5q119 0 240.5 -49t213.5 -145l-159 -209q-53 63 -130 98t-153 35q-121 0 -208 -79t-87 -219t87 -218t204 -78z" />
+<glyph unicode="d" horiz-adv-x="1363" d="M237.5 149.5q-153.5 165.5 -153.5 411.5t149.5 402.5t350 156.5t327.5 -141v541h308v-1520h-308v145q-129 -162 -324.5 -161.5t-349 166zM473 331q80 -85 186.5 -85t181 85t74.5 219t-74.5 223t-183 89t-186.5 -90t-78 -223t80 -218z" />
+<glyph unicode="e" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151z" />
+<glyph unicode="f" horiz-adv-x="823" d="M512 1165v-73h266v-222h-266v-870h-309v870h-129v222h129v67q0 180 109.5 285.5t272.5 105.5t296 -123l-111 -206q-68 78 -149 77q-47 0 -78 -33.5t-31 -99.5z" />
+<glyph unicode="g" horiz-adv-x="1366" d="M844 782.5q-74 75.5 -182.5 75.5t-187.5 -75.5t-79 -207t77 -212t187.5 -80.5t184.5 79.5t74 212t-74 208zM961 186q-145 -162 -361.5 -161.5t-365 146.5t-148.5 391t152.5 401.5t349 156.5t325.5 -162v146h308v-961q0 -147 -51.5 -261.5t-137.5 -180.5 q-170 -135 -401 -135q-123 0 -251 40t-224 113l118 232q152 -115 321 -115t267.5 84t98.5 266z" />
+<glyph unicode="h" horiz-adv-x="1308" d="M453 594v-594h-308v1520h308v-541q139 141 312 141t292 -123t119 -327v-670h-308v602q0 254 -186 254q-92 0 -160.5 -66.5t-68.5 -195.5z" />
+<glyph unicode="i" horiz-adv-x="598" d="M453 0h-308v1102h308v-1102zM119 1370q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="j" horiz-adv-x="702" d="M250 -20v1124h307v-1149q0 -180 -109.5 -284.5t-268.5 -104.5t-302 131l141 227q61 -72 138 -71q41 0 67.5 32t26.5 95zM223 1370q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="k" horiz-adv-x="1218" d="M453 0h-308v1520h308v-781l342 365h387l-420 -447l436 -657h-364l-281 422l-100 -105v-317z" />
+<glyph unicode="l" horiz-adv-x="598" d="M453 0h-308v1520h308v-1520z" />
+<glyph unicode="m" horiz-adv-x="2013" d="M1157 594v-594h-309v602q0 131 -40 192.5t-129 61.5t-157.5 -66.5t-68.5 -195.5v-594h-308v1102h308v-125q127 143 290 143q104 0 189.5 -61.5t128.5 -149.5q63 100 170.5 155.5t216.5 55.5q195 0 313.5 -115.5t118.5 -334.5v-670h-309v602q0 254 -187 254 q-92 0 -159.5 -66.5t-67.5 -195.5z" />
+<glyph unicode="n" horiz-adv-x="1308" d="M453 614v-614h-308v1102h308v-123q139 141 313 141t292 -123t118 -327v-670h-308v623q0 254 -186 254q-92 0 -160.5 -67t-68.5 -196z" />
+<glyph unicode="o" horiz-adv-x="1329" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5z" />
+<glyph unicode="p" horiz-adv-x="1363" d="M1129.5 959.5q150.5 -160.5 150.5 -404.5t-150.5 -407.5t-352.5 -163.5t-324 161v-542h-308v1499h308v-123q141 141 333.5 141t343 -160.5zM523.5 331q74.5 -85 181 -85t186.5 85t80 218t-78 223t-186.5 90t-183 -89t-74.5 -223t74.5 -219z" />
+<glyph unicode="q" horiz-adv-x="1363" d="M241.5 142.5q-157.5 158.5 -157.5 407.5t153.5 409.5t342 160.5t329.5 -141v123h310v-1499h-310v485q-131 -104 -299 -104q-211 0 -368.5 158.5zM473 331q80 -85 186.5 -85t180 85t73.5 219t-73.5 223t-182 89t-186.5 -89t-78 -223t80 -219z" />
+<glyph unicode="r" horiz-adv-x="841" d="M725 831q-137 0 -204.5 -97t-67.5 -257v-477h-308v1102h308v-146q59 68 148 115t181 49l2 -289h-59z" />
+<glyph unicode="s" horiz-adv-x="1064" d="M855 82q-120 -98 -304 -98q-123 0 -256 44t-240 130l135 192q172 -133 367 -133q59 0 94 23.5t35 62.5t-48 72t-139 61.5t-139.5 49t-109.5 59.5q-125 78 -125 230.5t123 248.5t317.5 96t388.5 -131l-114 -205q-143 98 -285.5 98.5t-142.5 -77.5q0 -43 45 -67.5 t149.5 -57.5t148.5 -50.5t105 -54.5q115 -70 115 -232.5t-120 -260.5z" />
+<glyph unicode="t" horiz-adv-x="901" d="M512 881v-494q0 -63 33 -99t78 -36q86 0 145 78l115 -215q-143 -131 -302 -131t-268.5 104.5t-109.5 284.5v508h-129v221h129v330h309v-330h266v-221h-266z" />
+<glyph unicode="u" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5z" />
+<glyph unicode="v" horiz-adv-x="1200" d="M442 0l-436 1104h320l274 -694l274 694h320l-436 -1104h-316z" />
+<glyph unicode="w" horiz-adv-x="1847" d="M719 0h-318l-374 1102h317l215 -666l215 666h297l215 -666l215 666h320l-375 -1102h-320l-202 600z" />
+<glyph unicode="x" horiz-adv-x="1198" d="M414 1102l188 -295l195 295h360l-379 -539l393 -563h-366l-215 303l-209 -303h-354l385 561l-365 541h367z" />
+<glyph unicode="y" horiz-adv-x="1208" d="M336 -434q-162 0 -305 131l139 227q78 -76 160 -76q43 0 73.5 42t30.5 89.5t-426 1122.5h328l268 -686l268 686h328l-512 -1299q-45 -113 -140 -175t-212 -62z" />
+<glyph unicode="z" horiz-adv-x="1132" d="M125 848v254h889v-240l-535 -606h565v-256h-958v254l520 594h-481z" />
+<glyph unicode="{" horiz-adv-x="737" d="M637 1300l-43 3q-90 0 -90 -80v-428q0 -109 -76 -160q76 -49 76 -158v-446q0 -68 133 -68v-250h-113q-307 0 -307 293v420q0 84 -47 84h-94v250h94q47 0 47 86v411q0 293 307 293h113v-250z" />
+<glyph unicode="|" horiz-adv-x="565" d="M156 -299v1890h254v-1890h-254z" />
+<glyph unicode="}" horiz-adv-x="737" d="M100 -37l43 -2q90 0 90 80v428q0 109 76 160q-76 49 -76 157v447q0 68 -133 67v250h113q307 0 307 -293v-419q0 -84 47 -84h95v-250h-95q-47 0 -47 -86v-412q0 -293 -307 -293h-113v250z" />
+<glyph unicode="~" horiz-adv-x="1095" d="M731 848q68 0 68 88q0 20 -6 45l245 -66q-12 -170 -90 -246.5t-194 -76.5q-70 0 -200 66.5t-169 66.5t-65.5 -39t-24.5 -111l-244 74q14 164 96 247t211 83q74 0 201 -65.5t172 -65.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="651" d="M508 0h-363v270l60 738h241l62 -738v-270zM145 1284q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1224" d="M770 -240h-197v232q-203 33 -341 182.5t-138 374.5t137.5 376.5t341.5 184.5v236h197v-234q209 -31 363 -186l-160 -209q-84 96 -203 123v-572q53 16 101.5 51t70.5 62l21 29l182 -205q-170 -178 -375 -211v-234zM444.5 726q-49.5 -71 -49.5 -174t49.5 -175t128.5 -101 v551q-79 -30 -128.5 -101z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1286" d="M604 1040v-223h320v-258h-320v-287h570v-272h-1047v272h156v287h-164v258h164v211q0 254 130 369.5t341 115.5q283 0 430 -258l-228 -184q-33 76 -84 119t-112.5 43t-108.5 -46.5t-47 -146.5z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1558" d="M291 334q-94 137 -94 314t90 315l-172 174l192 194l182 -182q133 72 291 72t289 -74l182 184l193 -194l-172 -176q90 -139 90 -312.5t-96 -314.5l178 -180l-191 -195l-190 193q-135 -70 -287.5 -70t-279.5 70l-191 -193l-190 195zM778.5 356q114.5 0 188 83t73.5 212 t-73.5 211t-188 82t-188.5 -82t-74 -211t74 -212t188.5 -83z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1517" d="M221 459h365v112h-365v197h234l-385 662h348l338 -584l350 584h346l-397 -662h225v-197h-360v-112h360v-197h-360v-262h-334v262h-365v197z" />
+<glyph unicode="&#xa6;" horiz-adv-x="602" d="M164 838v706h274v-706h-274zM164 -47v704h274v-704h-274z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1273" d="M523 1233q-38 -31 -38 -83t48.5 -84t191.5 -69q246 -59 352.5 -142t106.5 -239q0 -207 -209 -292q131 -88 131 -236.5t-125 -253t-334 -104.5q-293 0 -538 223l172 207q215 -180 372.5 -180t157.5 98q0 49 -57.5 84t-240.5 88t-297 140t-114 253q0 86 50.5 163t144.5 118 q-111 78 -111 211q0 168 125 273t320 105q135 0 241.5 -37.5t223.5 -123.5l-154 -219q-172 131 -315 131q-66 0 -104 -31zM375 651q0 -78 99 -128t253 -50q78 0 131 34t53 89q0 84 -121.5 125t-220.5 41q-194 0 -194 -111z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1087" d="M195 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM590 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1687" d="M1583 717q0 -305 -216 -523.5t-525.5 -218.5t-523.5 216.5t-214 521.5t216.5 524t523.5 219t523 -217t216 -522zM1432 716.5q0 241.5 -172.5 414t-415 172.5t-415.5 -174.5t-173 -416t170 -413.5t415.5 -172t418 174t172.5 415.5zM852 299q-172 0 -297 116.5t-125 305 t129 306.5t317.5 118t327.5 -146l-123 -153q-82 98 -207 98q-88 0 -150 -58.5t-62 -161.5t64.5 -163.5t154.5 -60.5q133 0 204 118l127 -153q-157 -166 -360 -166z" />
+<glyph unicode="&#xaa;" horiz-adv-x="733" d="M592 938h-152v63q-45 -70 -133 -69.5t-145.5 47.5t-57.5 125t60.5 118t163.5 40h104v6q0 88 -78 88q-61 0 -127 -29l-20 -10l-49 90q88 57 198 57q236 0 236 -194v-332zM430 1135v30h-90q-74 0 -74 -61q0 -29 18.5 -45.5t54.5 -16.5t63.5 25t27.5 68z" />
+<glyph unicode="&#xab;" horiz-adv-x="1236" d="M657 879l-241 -377l241 -379h-309l-250 379l250 377h309zM1118 879l-241 -377l241 -379h-309l-250 379l250 377h309z" />
+<glyph unicode="&#xac;" horiz-adv-x="1673" d="M129 911h1370v-731h-229v490h-1141v241z" />
+<glyph unicode="&#xad;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#xae;" horiz-adv-x="1687" d="M1583 717q0 -305 -216 -523.5t-525.5 -218.5t-523.5 216.5t-214 521.5t216.5 524t523.5 219t523 -217t216 -522zM1268 309q164 170 164 409.5t-172.5 412t-415 172.5t-415.5 -174.5t-173 -416t170 -413.5t418 -172t420 178h-238l-178 256h-90v-256h-226v832h330 q197 0 281 -68t84 -217q0 -182 -166 -254zM975 771q29 26 29 82t-30 77.5t-104 21.5h-112v-207h108q80 0 109 26z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M795 1407v-238h-682v238h682z" />
+<glyph unicode="&#xb0;" horiz-adv-x="876" d="M438.5 1462q141.5 0 241.5 -98t100 -236.5t-100 -235.5t-241.5 -97t-242 97t-100.5 235.5t100.5 236.5t242 98zM334 1011q43 -48 104.5 -48t103.5 47t42 116.5t-42 116.5t-103.5 47t-104.5 -47t-43 -115.5t43 -116.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1189" d="M453 1335h282v-295h357v-239h-357v-285h-282v285h-355v239h355v295zM98 414h994v-232h-994v232z" />
+<glyph unicode="&#xb2;" horiz-adv-x="899" d="M491.5 1111q30.5 42 30.5 79t-22.5 61.5t-57.5 24.5q-68 0 -143 -121l-178 107q66 100 140.5 151t190 51t203.5 -72.5t88 -197.5q0 -66 -34.5 -127t-126.5 -158l-127 -133h313v-196h-629v157l250 258q72 74 102.5 116z" />
+<glyph unicode="&#xb3;" horiz-adv-x="892" d="M156 1243v189h557v-150l-162 -186q96 -25 148.5 -95.5t52.5 -158.5q0 -137 -95.5 -217t-244 -80t-308.5 110l95 170q117 -88 219 -88q49 0 80.5 24.5t31.5 74t-44 75t-111.5 25.5t-118.5 -25v154l150 178h-250z" />
+<glyph unicode="&#xb4;" horiz-adv-x="782" d="M395 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1325" d="M162 -379v1481h309v-600q0 -254 186 -254q92 0 160 66.5t68 193.5v594h309v-1102h-309v92q-121 -109 -291 -108q-72 0 -123 14v-377h-309z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1458" d="M70 1122q0 180 123.5 303t377.5 123h701v-1763h-273v1509h-200v-1509h-267v928h-40q-266 0 -369 196q-53 100 -53 213z" />
+<glyph unicode="&#xb7;" horiz-adv-x="610" d="M125 651q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="&#xb8;" horiz-adv-x="575" d="M500 -260q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l77 176q45 -39 80 -38.5t54.5 18.5t19.5 46t-24.5 49.5t-58.5 21.5t-73 -19l84 160h236l-57 -104q133 -45 133 -156z" />
+<glyph unicode="&#xb9;" horiz-adv-x="610" d="M82 1432h379v-867h-219v680h-160v187z" />
+<glyph unicode="&#xba;" horiz-adv-x="804" d="M326.5 1085.5q29.5 -34.5 76 -34.5t76 34.5t29.5 91t-29.5 92.5t-76 36t-76 -36t-29.5 -92.5t29.5 -91zM618.5 972q-86.5 -83 -216.5 -83t-216 84t-86 203.5t86 203.5t216 84t216.5 -84t86.5 -204.5t-86.5 -203.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1236" d="M821 502l-241 377h309l250 -377l-250 -379h-309zM360 502l-241 377h309l250 -377l-250 -379h-309z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1751" d="M1151 1544h235l-745 -1560h-235zM74 1430h377v-865h-220v678h-157v187zM1395 537h186v-172h94v-164h-94v-201h-186v201h-367v157l301 506h225l-299 -499h140v172z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1798" d="M1128 1544h238l-745 -1560h-238zM74 1432h377v-867h-220v680h-157v187zM1433.5 531q30.5 42 30.5 79t-22.5 61.5t-57.5 24.5q-68 0 -143 -121l-178 107q66 100 140.5 151.5t190 51.5t204 -73t88.5 -198q0 -66 -35 -127t-127 -157l-127 -133h313v-197h-629v158l250 258 q72 73 102.5 115z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1845" d="M1243 1544h236l-746 -1560h-235zM131 1243v189h557v-150l-162 -186q96 -25 148.5 -95.5t52.5 -158.5q0 -137 -95 -217t-243.5 -80t-308.5 110l94 170q117 -88 219 -88q49 0 81 24.5t32 74t-44 75t-111.5 25.5t-119.5 -25v154l150 178h-250zM1491 537h186v-172h95v-164 h-95v-201h-186v201h-367v157l301 506h226l-299 -499h139v172z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1077" d="M399 1022h312v-154q0 -84 -21.5 -126t-91.5 -113l-139 -144q-31 -37 -31 -95t33 -97t86 -39t89 46t44 122h326q-23 -205 -150 -321.5t-318.5 -116.5t-311.5 104.5t-120 288.5q0 82 20.5 122t29 57t38 52t39.5 43q49 51 93.5 94t58.5 71t14 83v123zM731 1284 q0 -76 -52 -128t-128 -52t-128 52t-52 128t52 128t128 52t128 -52t52 -128z" />
+<glyph unicode="&#xc0;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM918 1575h-293l-285 229l315 135z" />
+<glyph unicode="&#xc1;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM899 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xc2;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM580 1575h-252l231 323h383l232 -323h-252l-172 166z" />
+<glyph unicode="&#xc3;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM633 1681q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xc4;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM420 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM815 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5 t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xc5;" d="M606 1430q-61 66 -61 154.5t64.5 153t154.5 64.5t154.5 -64.5t64.5 -154.5t-65 -156l618 -1427h-340l-133 309h-600l-133 -309h-340zM764 1006l-180 -416h358zM692 1583q0 -29 21.5 -50.5t50.5 -21.5t50.5 21.5t21.5 50.5t-21.5 50.5t-50.5 21.5t-50.5 -21.5t-21.5 -50.5 z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2095" d="M1966 1432v-281h-715v-309h641v-269h-641v-292h738v-281h-1078v309h-405l-162 -309h-377l735 1432h1264zM911 598v504l-260 -504h260z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1499" d="M834 283q236 0 385 186l204 -211q-207 -233 -495 -268l-54 -99q133 -45 134 -155q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l77 176q45 -39 80 -39t54.5 18.5t19.5 46.5t-24.5 49.5t-58.5 21.5t-73 -19l84 160q-266 45 -436 244.5t-170 498.5t218 512t534 213 q352 0 590 -268l-199 -225q-152 188 -377 188q-180 0 -308 -117.5t-128 -317.5t121 -320.5t293 -120.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM827 1575h-292l-285 229l315 135z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM809 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM489 1575h-251l231 323h383l231 -323h-252l-172 166z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM348 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM743 1734.5q0 63.5 44 107.5t107.5 44t108 -44t44.5 -107.5t-44.5 -107.5t-108 -44 t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM502 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xcd;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM483 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xce;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM166 1577h-252l231 324h383l232 -324h-252l-172 166z" />
+<glyph unicode="&#xcf;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM-14 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM381 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1605" d="M53 573v273h152v586h506q383 0 587.5 -187.5t204.5 -521.5t-199.5 -528.5t-609.5 -194.5h-489v573h-152zM1064 393.5q118 110.5 118 321.5t-118 324.5t-362 113.5h-178v-307h480v-273h-480v-290h203q219 0 337 110.5z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1673" d="M1178 1432h319v-1432h-319l-682 897v-897h-320v1432h299l703 -922v922zM717 1679q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM1012 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM993 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM674 1575h-252l231 323h383l232 -323h-252 l-172 166z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM727 1679q-63 0 -61 -106h-217q0 154 66.5 242 t170.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM494 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44 t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM889 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1206" d="M604 924l326 333l176 -182l-322 -330l324 -333l-176 -183l-328 334l-325 -334l-181 183l328 333l-326 330l181 182z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1691" d="M1597 725q0 -315 -217 -527t-534 -212q-80 0 -162 16l-106 -231h-289l149 327q-160 98 -252 263t-92 364q0 315 217 527t535 212q98 0 205 -26l96 211h291l-148 -322q143 -100 225 -258t82 -344zM846 1186q-178 0 -301 -135.5t-123 -338t143 -335.5l367 799 q-47 10 -86 10zM1149 398q123 134 123 320.5t-115 321.5l-352 -774q12 -2 41 -2q180 0 303 134z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM932 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xda;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM915 1579h-292l260 363l317 -134z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM596 1575h-252l231 323h383l232 -323h-252l-172 166z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM418 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM813 1734.5 q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1265" d="M793 0h-320v565l-496 867h347l309 -533l309 533h346l-495 -867v-565zM739 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xde;" horiz-adv-x="1402" d="M1313 754q0 -279 -163 -403t-484 -124h-170v-227h-320v1432h320v-172h166q651 0 651 -506zM919.5 570.5q65.5 66.5 65.5 188.5t-82 173t-246 51h-161v-479h194q164 0 229.5 66.5z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1325" d="M775.5 953.5q66.5 62.5 66.5 139t-39 131t-123 54.5q-119 0 -168 -84t-49 -246v-948h-320v922q0 201 41 315q16 51 55.5 114.5t92.5 102.5q123 96 325 96q117 0 208 -29.5t144.5 -73.5t88.5 -104q57 -104 57 -223q0 -190 -158 -319q121 -39 181.5 -140.5t60.5 -226.5 q0 -199 -138 -316.5t-396 -117.5h-127v258h90q252 0 252 176q0 195 -236 195q-43 0 -113 -6v247q138 21 204.5 83.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM844 1251h-293l-285 230l316 135z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM713 1251h-293l260 363l317 -133z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM444 1251h-251l231 324h383l231 -324h-252l-172 166z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM477 1358q-63 0 -61 -107h-217q0 154 66.5 242t170.5 88q66 0 159 -56.5t114 -56.5q63 0 61 107h217q0 -154 -66.5 -242t-170.5 -88q-63 0 -160 56.5t-113 56.5z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM266 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM662 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM408 1440q0 90 64.5 154.5t154.5 64.5t154.5 -64.5t64.5 -154.5t-64.5 -154.5t-154.5 -64.5t-154.5 64.5t-64.5 154.5zM555 1439.5q0 -28.5 21.5 -50t50 -21.5t50 21.5t21.5 50t-21.5 50t-50 21.5t-50 -21.5t-21.5 -50z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1916" d="M1833 449h-756v-11q16 -92 86 -146t160 -54q145 0 270 153l181 -201q-197 -207 -467 -206q-236 0 -387 155q-158 -156 -404 -155q-180 0 -307 102t-127 264q0 334 459 334h229v14q0 172 -178 172q-127 0 -307 -127l-138 199q221 178 460 178t360 -114q143 115 355 114.5 t361.5 -136.5t149.5 -378v-157zM768 420v29h-193q-90 0 -137 -16.5t-47 -75t44 -90t126 -31.5t144.5 50t62.5 134zM1450 819q-55 47 -136 47t-147.5 -49t-85.5 -133h439q-15 88 -70 135z" />
+<glyph unicode="&#xe7;" horiz-adv-x="1193" d="M676 256q154 0 276 154l183 -205q-166 -172 -365 -211l-55 -103q133 -45 133 -155q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l78 176q45 -39 79.5 -39t54 18.5t19.5 46.5t-24.5 49.5t-58 21.5t-72.5 -19l84 160q-195 41 -324 188.5t-129 364.5q0 254 173 412.5t411 158.5 q119 0 240.5 -49t213.5 -145l-159 -209q-53 63 -130 98t-153 35q-121 0 -208 -79t-87 -219t87 -218t204 -78z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM829 1251h-292l-285 230l315 135z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM739 1251h-293l261 363l317 -133z" />
+<glyph unicode="&#xea;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM461 1251h-252l231 324h383l232 -324h-252 l-172 166z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM297 1415.5q0 63.5 44 107.5t107.5 44 t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM692 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xec;" horiz-adv-x="598" d="M145 1102h308v-1102h-308v1102zM457 1251h-293l-285 230l316 135z" />
+<glyph unicode="&#xed;" horiz-adv-x="598" d="M145 1102h308v-1102h-308v1102zM449 1251h-293l260 363l317 -133z" />
+<glyph unicode="&#xee;" horiz-adv-x="598" d="M297 1397l-150 -146h-231l231 324h302l231 -324h-231zM145 1102h308v-1102h-308v1102z" />
+<glyph unicode="&#xef;" horiz-adv-x="598" d="M145 1102h308v-1102h-308v1102zM-49 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM346 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1222" d="M1135 553q0 -256 -136.5 -412.5t-373 -156.5t-386 140t-149.5 360.5t147.5 361.5t356.5 141q53 0 94 -8q-41 51 -127 145l-176 -114l-166 159l180 117q-31 27 -67 57l-76 64l252 149q86 -70 141 -120l162 106l170 -160l-170 -112q324 -371 324 -717zM452.5 313.5 q59.5 -71.5 159 -71.5t159.5 71.5t60 172t-61 172t-159.5 71.5t-158 -71.5t-59.5 -172t59.5 -172z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1308" d="M453 614v-614h-308v1102h308v-123q139 141 313 141t292 -123t118 -327v-670h-308v623q0 254 -186 254q-92 0 -160.5 -67t-68.5 -196zM549 1358q-63 0 -62 -107h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 107h217q0 -154 -66.5 -242t-171.5 -88 q-63 0 -159.5 56.5t-112.5 56.5z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM829 1251h-292l-285 230l315 135z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM780 1251h-293l261 363l317 -133z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM502 1251h-252l231 324h383l232 -324h-252 l-172 166z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM551 1358q-63 0 -62 -107h-217q0 154 67 242 t171 88q66 0 159 -56.5t113 -56.5q63 0 62 107h217q0 -154 -66.5 -242t-171.5 -88q-63 0 -159.5 56.5t-112.5 56.5z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM315 1415.5q0 63.5 44 107.5t107.5 44 t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM711 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1191" d="M416 327.5q0 75.5 52 128t128 52.5t128 -52.5t52 -128t-52 -128t-128 -52.5t-128 52.5t-52 128zM416 1104q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128zM98 842h996v-252h-996v252z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1327" d="M664 -16q-45 0 -93 6l-90 -197h-288l133 291q-115 78 -179.5 201t-64.5 266q0 240 166 404.5t416 164.5q72 0 131 -14l77 174h291l-129 -283q213 -170 213 -446q0 -240 -165.5 -403.5t-417.5 -163.5zM468 772q-77 -86 -77 -212t58 -206l231 504h-16q-119 0 -196 -86z M869.5 341q68.5 83 68.5 191.5t-35 178.5l-213 -463q111 10 179.5 93z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM825 1251h-293l-284 230l315 135z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM776 1251h-293l260 363l318 -133z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM483 1251h-252l232 324h383l231 -324h-252l-172 166z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM293 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM688 1415.5 q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1208" d="M336 -434q-162 0 -305 131l139 227q78 -76 160 -76q43 0 73.5 42t30.5 89.5t-426 1122.5h328l268 -686l268 686h328l-512 -1299q-45 -113 -140 -175t-212 -62zM717 1251h-293l260 363l317 -133z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1363" d="M1121.5 966.5q158.5 -153.5 158.5 -409.5t-158.5 -414.5t-369.5 -158.5q-164 0 -299 104v-485h-308v1917h308v-510q123 111 295 110q215 0 373.5 -153.5zM523.5 331q74.5 -85 181 -85t186.5 85t80 218t-78 223t-186.5 90t-183 -89t-74.5 -223t74.5 -219z" />
+<glyph unicode="&#xff;" horiz-adv-x="1208" d="M336 -434q-162 0 -305 131l139 227q78 -76 160 -76q43 0 73.5 42t30.5 89.5t-426 1122.5h328l268 -686l268 686h328l-512 -1299q-45 -113 -140 -175t-212 -62zM254 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z M649 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#x152;" horiz-adv-x="2134" d="M2003 1430v-283h-713v-295h639v-272h-639v-297h735v-283h-1200q-309 0 -519 205t-210 510t210 510t519 205h1178zM555 1031q-119 -130 -119 -315.5t119 -316.5t291 -131h123v893h-123q-172 0 -291 -130z" />
+<glyph unicode="&#x153;" horiz-adv-x="2119" d="M1954 160q-186 -176 -447.5 -176t-421.5 170q-166 -170 -418.5 -170t-418.5 163.5t-166 403.5t166 404.5t419 164.5t420 -172q162 172 400.5 172t397.5 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM938 537v14q0 135 -77 221t-196.5 86t-196.5 -86 t-77 -221t77 -220t194.5 -85t194.5 81t81 210zM1658.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="989" d="M324 1579h-252l231 324h383l232 -324h-252l-172 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1198" d="M498 1358q-63 0 -62 -107h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 107h217q0 -154 -67 -242t-171 -88q-63 0 -159.5 56.5t-112.5 56.5z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#x2011;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#x2012;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1112" d="M152 440v199h809v-199h-809z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1427" d="M131 442v197h1165v-197h-1165z" />
+<glyph unicode="&#x2018;" horiz-adv-x="491" d="M344 1221q68 -45 68 -126t-48.5 -128t-121 -47t-120.5 45t-48 116.5t45 141.5l149 217h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="491" d="M147 1133q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x201a;" horiz-adv-x="491" d="M147 23q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x201c;" horiz-adv-x="870" d="M344 1221q68 -45 68 -126t-48.5 -128t-121 -47t-120.5 45t-48 116.5t45 141.5l149 217h168zM723 1221q68 -45 68 -126t-48.5 -128t-121 -47t-120.5 45t-48 116.5t45 141.5l149 217h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="870" d="M147 1133q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168zM526 1133q-68 45 -67.5 125.5t48.5 128t120.5 47.5t121 -45.5t48.5 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x201e;" horiz-adv-x="870" d="M147 23q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168zM526 23q-68 45 -67.5 125.5t48.5 128t120.5 47.5t121 -45.5t48.5 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x2022;" horiz-adv-x="897" d="M164 649q0 119 83 202t201.5 83t201.5 -83t83 -202t-83 -201.5t-201.5 -82.5t-201.5 82.5t-83 201.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1435" d="M958 162q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128zM537 162q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128zM117 162q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="776" d="M657 879l-241 -377l241 -379h-309l-250 379l250 377h309z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M360 502l-241 377h309l250 -377l-250 -379h-309z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1568" d="M94 778v172h199q61 233 234 373.5t421 140.5q307 0 527 -247l-183 -238q-150 182 -352 182q-229 0 -317 -211h477v-172h-514q-2 -20 -2 -61t2 -60h514v-172h-467q49 -96 134 -147t187 -51q203 0 332 162l189 -209q-111 -129 -255.5 -192.5t-287.5 -63.5 q-231 0 -403.5 136t-235.5 365h-199v172h172q-2 18 -2 59.5t2 61.5h-172z" />
+<glyph unicode="&#x2122;" horiz-adv-x="2027" d="M592 1221v-654h-225v654h-238v211h700v-211h-237zM1108 567h-225v865h286l203 -431l203 431h285v-865h-226v459l-192 -391h-142l-192 391v-459z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 1106h1106v-1106h-1106v1106z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1421" d="M512 1165v-73h266v-222h-266v-870h-309v870h-129v222h129v67q0 180 109.5 285.5t272.5 105.5t296 -123l-111 -206q-68 78 -149 77q-47 0 -78 -33.5t-31 -99.5zM1276 0h-307v1102h307v-1102zM942 1370q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52 t-128 52t-52.5 128z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1421" d="M512 1165v-73h266v-222h-266v-870h-309v870h-129v222h129v67q0 180 109.5 285.5t272.5 105.5t296 -123l-111 -206q-68 78 -149 77q-47 0 -78 -33.5t-31 -99.5zM1276 0h-307v1520h307v-1520z" />
+<hkern u1="&#x26;" u2="&#x2019;" k="57" />
+<hkern u1="&#x26;" u2="&#xc6;" k="-27" />
+<hkern u1="&#x26;" u2="Y" k="47" />
+<hkern u1="&#x26;" u2="W" k="35" />
+<hkern u1="&#x26;" u2="V" k="43" />
+<hkern u1="&#x26;" u2="T" k="43" />
+<hkern u1="&#x26;" u2="A" k="-16" />
+<hkern u1="&#x26;" u2="&#x27;" k="55" />
+<hkern u1="&#x27;" u2="&#x2039;" k="35" />
+<hkern u1="&#x27;" u2="&#xf0;" k="18" />
+<hkern u1="&#x27;" u2="&#xc6;" k="96" />
+<hkern u1="&#x27;" u2="d" k="23" />
+<hkern u1="&#x27;" u2="J" k="33" />
+<hkern u1="&#x27;" u2="A" k="84" />
+<hkern u1="&#x27;" u2="&#x34;" k="35" />
+<hkern u1="&#x27;" u2="&#x2f;" k="137" />
+<hkern u1="&#x27;" u2="&#x2e;" k="236" />
+<hkern u1="&#x27;" u2="&#x26;" k="33" />
+<hkern u1="&#x28;" u2="&#xf0;" k="37" />
+<hkern u1="&#x28;" u2="&#xef;" k="-27" />
+<hkern u1="&#x28;" u2="&#xec;" k="-90" />
+<hkern u1="&#x28;" u2="&#x7b;" k="20" />
+<hkern u1="&#x28;" u2="w" k="27" />
+<hkern u1="&#x28;" u2="v" k="23" />
+<hkern u1="&#x28;" u2="u" k="41" />
+<hkern u1="&#x28;" u2="t" k="25" />
+<hkern u1="&#x28;" u2="s" k="35" />
+<hkern u1="&#x28;" u2="q" k="53" />
+<hkern u1="&#x28;" u2="o" k="55" />
+<hkern u1="&#x28;" u2="n" k="29" />
+<hkern u1="&#x28;" u2="j" k="-207" />
+<hkern u1="&#x28;" u2="f" k="25" />
+<hkern u1="&#x28;" u2="d" k="53" />
+<hkern u1="&#x28;" u2="a" k="41" />
+<hkern u1="&#x28;" u2="S" k="25" />
+<hkern u1="&#x28;" u2="O" k="45" />
+<hkern u1="&#x28;" u2="&#x39;" k="20" />
+<hkern u1="&#x28;" u2="&#x38;" k="31" />
+<hkern u1="&#x28;" u2="&#x36;" k="39" />
+<hkern u1="&#x28;" u2="&#x34;" k="45" />
+<hkern u1="&#x28;" u2="&#x30;" k="39" />
+<hkern u1="&#x28;" u2="&#x28;" k="20" />
+<hkern u1="&#x29;" u2="&#x29;" k="20" />
+<hkern u1="&#x2a;" u2="&#x2019;" k="-12" />
+<hkern u1="&#x2a;" u2="&#xf0;" k="23" />
+<hkern u1="&#x2a;" u2="&#xef;" k="-18" />
+<hkern u1="&#x2a;" u2="&#xee;" k="-59" />
+<hkern u1="&#x2a;" u2="&#xc6;" k="92" />
+<hkern u1="&#x2a;" u2="y" k="-27" />
+<hkern u1="&#x2a;" u2="o" k="16" />
+<hkern u1="&#x2a;" u2="d" k="23" />
+<hkern u1="&#x2a;" u2="J" k="37" />
+<hkern u1="&#x2a;" u2="A" k="82" />
+<hkern u1="&#x2d;" u2="&#xc6;" k="18" />
+<hkern u1="&#x2d;" u2="z" k="18" />
+<hkern u1="&#x2d;" u2="x" k="43" />
+<hkern u1="&#x2d;" u2="Z" k="31" />
+<hkern u1="&#x2d;" u2="Y" k="78" />
+<hkern u1="&#x2d;" u2="X" k="55" />
+<hkern u1="&#x2d;" u2="W" k="37" />
+<hkern u1="&#x2d;" u2="V" k="49" />
+<hkern u1="&#x2d;" u2="T" k="109" />
+<hkern u1="&#x2d;" u2="J" k="49" />
+<hkern u1="&#x2d;" u2="A" k="25" />
+<hkern u1="&#x2d;" u2="&#x37;" k="27" />
+<hkern u1="&#x2d;" u2="&#x33;" k="33" />
+<hkern u1="&#x2d;" u2="&#x32;" k="31" />
+<hkern u1="&#x2d;" u2="&#x31;" k="47" />
+<hkern u1="&#x2e;" u2="&#x2019;" k="264" />
+<hkern u1="&#x2e;" u2="&#x2018;" k="264" />
+<hkern u1="&#x2e;" u2="y" k="70" />
+<hkern u1="&#x2e;" u2="w" k="53" />
+<hkern u1="&#x2e;" u2="v" k="68" />
+<hkern u1="&#x2e;" u2="t" k="29" />
+<hkern u1="&#x2e;" u2="f" k="16" />
+<hkern u1="&#x2e;" u2="Y" k="111" />
+<hkern u1="&#x2e;" u2="W" k="90" />
+<hkern u1="&#x2e;" u2="V" k="113" />
+<hkern u1="&#x2e;" u2="U" k="27" />
+<hkern u1="&#x2e;" u2="T" k="111" />
+<hkern u1="&#x2e;" u2="O" k="31" />
+<hkern u1="&#x2e;" u2="&#x37;" k="29" />
+<hkern u1="&#x2e;" u2="&#x31;" k="57" />
+<hkern u1="&#x2e;" u2="&#x27;" k="236" />
+<hkern u1="&#x2f;" u2="&#xf0;" k="43" />
+<hkern u1="&#x2f;" u2="&#xec;" k="-55" />
+<hkern u1="&#x2f;" u2="&#xce;" k="-78" />
+<hkern u1="&#x2f;" u2="&#xc6;" k="129" />
+<hkern u1="&#x2f;" u2="z" k="49" />
+<hkern u1="&#x2f;" u2="x" k="27" />
+<hkern u1="&#x2f;" u2="u" k="49" />
+<hkern u1="&#x2f;" u2="s" k="84" />
+<hkern u1="&#x2f;" u2="q" k="88" />
+<hkern u1="&#x2f;" u2="o" k="88" />
+<hkern u1="&#x2f;" u2="n" k="51" />
+<hkern u1="&#x2f;" u2="f" k="27" />
+<hkern u1="&#x2f;" u2="d" k="86" />
+<hkern u1="&#x2f;" u2="a" k="74" />
+<hkern u1="&#x2f;" u2="S" k="35" />
+<hkern u1="&#x2f;" u2="O" k="49" />
+<hkern u1="&#x2f;" u2="J" k="27" />
+<hkern u1="&#x2f;" u2="A" k="121" />
+<hkern u1="&#x2f;" u2="&#x39;" k="23" />
+<hkern u1="&#x2f;" u2="&#x38;" k="37" />
+<hkern u1="&#x2f;" u2="&#x36;" k="43" />
+<hkern u1="&#x2f;" u2="&#x34;" k="82" />
+<hkern u1="&#x2f;" u2="&#x30;" k="41" />
+<hkern u1="&#x2f;" u2="&#x2f;" k="580" />
+<hkern u1="&#x3a;" u2="&#x2019;" k="20" />
+<hkern u1="&#x3a;" u2="y" k="16" />
+<hkern u1="&#x3a;" u2="Y" k="70" />
+<hkern u1="&#x3a;" u2="W" k="37" />
+<hkern u1="&#x3a;" u2="V" k="49" />
+<hkern u1="&#x3a;" u2="T" k="102" />
+<hkern u1="&#x40;" u2="Y" k="45" />
+<hkern u1="&#x40;" u2="W" k="20" />
+<hkern u1="&#x40;" u2="V" k="31" />
+<hkern u1="&#x40;" u2="T" k="41" />
+<hkern u1="A" u2="&#x2122;" k="86" />
+<hkern u1="A" u2="&#x2019;" k="96" />
+<hkern u1="A" u2="&#x2018;" k="96" />
+<hkern u1="A" u2="&#xf0;" k="23" />
+<hkern u1="A" u2="&#xae;" k="23" />
+<hkern u1="A" u2="y" k="63" />
+<hkern u1="A" u2="w" k="57" />
+<hkern u1="A" u2="v" k="63" />
+<hkern u1="A" u2="u" k="20" />
+<hkern u1="A" u2="t" k="57" />
+<hkern u1="A" u2="q" k="25" />
+<hkern u1="A" u2="o" k="27" />
+<hkern u1="A" u2="f" k="23" />
+<hkern u1="A" u2="d" k="27" />
+<hkern u1="A" u2="a" k="10" />
+<hkern u1="A" u2="\" k="111" />
+<hkern u1="A" u2="Y" k="100" />
+<hkern u1="A" u2="W" k="76" />
+<hkern u1="A" u2="V" k="88" />
+<hkern u1="A" u2="U" k="39" />
+<hkern u1="A" u2="T" k="104" />
+<hkern u1="A" u2="S" k="10" />
+<hkern u1="A" u2="O" k="43" />
+<hkern u1="A" u2="&#x3f;" k="39" />
+<hkern u1="A" u2="&#x31;" k="39" />
+<hkern u1="A" u2="&#x2d;" k="25" />
+<hkern u1="A" u2="&#x2a;" k="82" />
+<hkern u1="A" u2="&#x27;" k="84" />
+<hkern u1="B" u2="&#xf0;" k="10" />
+<hkern u1="B" u2="z" k="12" />
+<hkern u1="B" u2="y" k="20" />
+<hkern u1="B" u2="x" k="31" />
+<hkern u1="B" u2="w" k="18" />
+<hkern u1="B" u2="v" k="18" />
+<hkern u1="B" u2="u" k="10" />
+<hkern u1="B" u2="t" k="23" />
+<hkern u1="B" u2="s" k="18" />
+<hkern u1="B" u2="o" k="10" />
+<hkern u1="B" u2="f" k="20" />
+<hkern u1="B" u2="d" k="10" />
+<hkern u1="B" u2="]" k="33" />
+<hkern u1="B" u2="\" k="29" />
+<hkern u1="B" u2="Z" k="12" />
+<hkern u1="B" u2="Y" k="41" />
+<hkern u1="B" u2="X" k="25" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="31" />
+<hkern u1="B" u2="T" k="37" />
+<hkern u1="B" u2="J" k="18" />
+<hkern u1="B" u2="A" k="16" />
+<hkern u1="B" u2="&#x2f;" k="25" />
+<hkern u1="B" u2="&#x29;" k="33" />
+<hkern u1="C" u2="&#x2122;" k="-45" />
+<hkern u1="C" u2="&#xf0;" k="33" />
+<hkern u1="C" u2="&#xef;" k="-14" />
+<hkern u1="C" u2="&#xee;" k="-27" />
+<hkern u1="C" u2="u" k="16" />
+<hkern u1="C" u2="t" k="10" />
+<hkern u1="C" u2="s" k="23" />
+<hkern u1="C" u2="q" k="41" />
+<hkern u1="C" u2="o" k="43" />
+<hkern u1="C" u2="n" k="14" />
+<hkern u1="C" u2="f" k="10" />
+<hkern u1="C" u2="d" k="43" />
+<hkern u1="C" u2="a" k="12" />
+<hkern u1="C" u2="O" k="31" />
+<hkern u1="C" u2="A" k="10" />
+<hkern u1="C" u2="&#x2d;" k="16" />
+<hkern u1="C" u2="&#x2a;" k="-29" />
+<hkern u1="D" u2="&#xf0;" k="12" />
+<hkern u1="D" u2="&#xc6;" k="41" />
+<hkern u1="D" u2="z" k="16" />
+<hkern u1="D" u2="x" k="31" />
+<hkern u1="D" u2="u" k="10" />
+<hkern u1="D" u2="t" k="10" />
+<hkern u1="D" u2="s" k="18" />
+<hkern u1="D" u2="n" k="12" />
+<hkern u1="D" u2="l" k="12" />
+<hkern u1="D" u2="i" k="12" />
+<hkern u1="D" u2="h" k="12" />
+<hkern u1="D" u2="f" k="10" />
+<hkern u1="D" u2="a" k="14" />
+<hkern u1="D" u2="]" k="43" />
+<hkern u1="D" u2="\" k="37" />
+<hkern u1="D" u2="Z" k="27" />
+<hkern u1="D" u2="Y" k="49" />
+<hkern u1="D" u2="X" k="53" />
+<hkern u1="D" u2="W" k="23" />
+<hkern u1="D" u2="V" k="33" />
+<hkern u1="D" u2="T" k="37" />
+<hkern u1="D" u2="S" k="10" />
+<hkern u1="D" u2="J" k="41" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="&#x2f;" k="53" />
+<hkern u1="D" u2="&#x2e;" k="23" />
+<hkern u1="D" u2="&#x29;" k="45" />
+<hkern u1="E" u2="&#xf0;" k="25" />
+<hkern u1="E" u2="&#xee;" k="-14" />
+<hkern u1="E" u2="u" k="14" />
+<hkern u1="E" u2="t" k="16" />
+<hkern u1="E" u2="s" k="10" />
+<hkern u1="E" u2="q" k="25" />
+<hkern u1="E" u2="o" k="25" />
+<hkern u1="E" u2="n" k="10" />
+<hkern u1="E" u2="f" k="12" />
+<hkern u1="E" u2="d" k="25" />
+<hkern u1="E" u2="a" k="14" />
+<hkern u1="E" u2="O" k="23" />
+<hkern u1="F" u2="&#xf0;" k="29" />
+<hkern u1="F" u2="&#xef;" k="-18" />
+<hkern u1="F" u2="&#xee;" k="-51" />
+<hkern u1="F" u2="&#xec;" k="-18" />
+<hkern u1="F" u2="&#xc6;" k="94" />
+<hkern u1="F" u2="z" k="25" />
+<hkern u1="F" u2="x" k="14" />
+<hkern u1="F" u2="u" k="16" />
+<hkern u1="F" u2="t" k="10" />
+<hkern u1="F" u2="s" k="35" />
+<hkern u1="F" u2="q" k="23" />
+<hkern u1="F" u2="o" k="23" />
+<hkern u1="F" u2="n" k="20" />
+<hkern u1="F" u2="f" k="10" />
+<hkern u1="F" u2="d" k="23" />
+<hkern u1="F" u2="a" k="31" />
+<hkern u1="F" u2="S" k="10" />
+<hkern u1="F" u2="J" k="39" />
+<hkern u1="F" u2="A" k="78" />
+<hkern u1="F" u2="&#x2f;" k="80" />
+<hkern u1="F" u2="&#x2e;" k="82" />
+<hkern u1="G" u2="z" k="10" />
+<hkern u1="G" u2="y" k="18" />
+<hkern u1="G" u2="x" k="18" />
+<hkern u1="G" u2="w" k="18" />
+<hkern u1="G" u2="v" k="16" />
+<hkern u1="G" u2="t" k="18" />
+<hkern u1="G" u2="s" k="10" />
+<hkern u1="G" u2="f" k="16" />
+<hkern u1="G" u2="Y" k="25" />
+<hkern u1="G" u2="X" k="12" />
+<hkern u1="G" u2="W" k="12" />
+<hkern u1="G" u2="V" k="20" />
+<hkern u1="G" u2="T" k="23" />
+<hkern u1="G" u2="A" k="12" />
+<hkern u1="G" u2="&#x29;" k="23" />
+<hkern u1="I" u2="&#xf0;" k="25" />
+<hkern u1="I" u2="z" k="12" />
+<hkern u1="I" u2="u" k="10" />
+<hkern u1="I" u2="t" k="18" />
+<hkern u1="I" u2="s" k="14" />
+<hkern u1="I" u2="q" k="20" />
+<hkern u1="I" u2="o" k="20" />
+<hkern u1="I" u2="n" k="10" />
+<hkern u1="I" u2="l" k="10" />
+<hkern u1="I" u2="i" k="10" />
+<hkern u1="I" u2="h" k="10" />
+<hkern u1="I" u2="f" k="16" />
+<hkern u1="I" u2="d" k="20" />
+<hkern u1="I" u2="a" k="14" />
+<hkern u1="J" u2="&#xf0;" k="25" />
+<hkern u1="J" u2="&#xc6;" k="23" />
+<hkern u1="J" u2="z" k="18" />
+<hkern u1="J" u2="x" k="12" />
+<hkern u1="J" u2="u" k="16" />
+<hkern u1="J" u2="t" k="14" />
+<hkern u1="J" u2="s" k="23" />
+<hkern u1="J" u2="q" k="18" />
+<hkern u1="J" u2="o" k="18" />
+<hkern u1="J" u2="n" k="10" />
+<hkern u1="J" u2="l" k="12" />
+<hkern u1="J" u2="i" k="12" />
+<hkern u1="J" u2="h" k="12" />
+<hkern u1="J" u2="f" k="14" />
+<hkern u1="J" u2="d" k="18" />
+<hkern u1="J" u2="a" k="18" />
+<hkern u1="J" u2="J" k="16" />
+<hkern u1="J" u2="A" k="20" />
+<hkern u1="J" u2="&#x2f;" k="41" />
+<hkern u1="K" u2="&#x2039;" k="29" />
+<hkern u1="K" u2="&#xf0;" k="82" />
+<hkern u1="K" u2="&#xef;" k="-84" />
+<hkern u1="K" u2="&#xee;" k="-31" />
+<hkern u1="K" u2="&#xec;" k="-88" />
+<hkern u1="K" u2="&#xae;" k="20" />
+<hkern u1="K" u2="y" k="53" />
+<hkern u1="K" u2="w" k="59" />
+<hkern u1="K" u2="v" k="53" />
+<hkern u1="K" u2="u" k="49" />
+<hkern u1="K" u2="t" k="31" />
+<hkern u1="K" u2="s" k="14" />
+<hkern u1="K" u2="q" k="90" />
+<hkern u1="K" u2="o" k="96" />
+<hkern u1="K" u2="n" k="14" />
+<hkern u1="K" u2="f" k="23" />
+<hkern u1="K" u2="d" k="94" />
+<hkern u1="K" u2="a" k="33" />
+<hkern u1="K" u2="S" k="39" />
+<hkern u1="K" u2="O" k="74" />
+<hkern u1="K" u2="&#x2d;" k="55" />
+<hkern u1="L" u2="&#x2122;" k="162" />
+<hkern u1="L" u2="&#x2019;" k="168" />
+<hkern u1="L" u2="&#x2018;" k="168" />
+<hkern u1="L" u2="&#xb7;" k="123" />
+<hkern u1="L" u2="y" k="98" />
+<hkern u1="L" u2="w" k="82" />
+<hkern u1="L" u2="v" k="100" />
+<hkern u1="L" u2="u" k="14" />
+<hkern u1="L" u2="t" k="55" />
+<hkern u1="L" u2="q" k="14" />
+<hkern u1="L" u2="o" k="14" />
+<hkern u1="L" u2="f" k="31" />
+<hkern u1="L" u2="d" k="14" />
+<hkern u1="L" u2="\" k="131" />
+<hkern u1="L" u2="Y" k="125" />
+<hkern u1="L" u2="W" k="102" />
+<hkern u1="L" u2="V" k="121" />
+<hkern u1="L" u2="U" k="31" />
+<hkern u1="L" u2="T" k="127" />
+<hkern u1="L" u2="O" k="39" />
+<hkern u1="L" u2="&#x3f;" k="45" />
+<hkern u1="L" u2="&#x31;" k="41" />
+<hkern u1="L" u2="&#x2d;" k="100" />
+<hkern u1="L" u2="&#x2a;" k="170" />
+<hkern u1="L" u2="&#x27;" k="166" />
+<hkern u1="O" u2="&#xf0;" k="14" />
+<hkern u1="O" u2="&#xc6;" k="47" />
+<hkern u1="O" u2="z" k="18" />
+<hkern u1="O" u2="x" k="33" />
+<hkern u1="O" u2="t" k="12" />
+<hkern u1="O" u2="s" k="16" />
+<hkern u1="O" u2="n" k="12" />
+<hkern u1="O" u2="l" k="12" />
+<hkern u1="O" u2="i" k="12" />
+<hkern u1="O" u2="h" k="12" />
+<hkern u1="O" u2="f" k="10" />
+<hkern u1="O" u2="a" k="14" />
+<hkern u1="O" u2="]" k="43" />
+<hkern u1="O" u2="\" k="37" />
+<hkern u1="O" u2="Z" k="29" />
+<hkern u1="O" u2="Y" k="51" />
+<hkern u1="O" u2="X" k="55" />
+<hkern u1="O" u2="W" k="23" />
+<hkern u1="O" u2="V" k="33" />
+<hkern u1="O" u2="T" k="39" />
+<hkern u1="O" u2="S" k="12" />
+<hkern u1="O" u2="J" k="45" />
+<hkern u1="O" u2="A" k="43" />
+<hkern u1="O" u2="&#x2f;" k="55" />
+<hkern u1="O" u2="&#x2e;" k="31" />
+<hkern u1="O" u2="&#x29;" k="45" />
+<hkern u1="P" u2="&#xf0;" k="25" />
+<hkern u1="P" u2="&#xc6;" k="104" />
+<hkern u1="P" u2="z" k="10" />
+<hkern u1="P" u2="s" k="16" />
+<hkern u1="P" u2="q" k="12" />
+<hkern u1="P" u2="o" k="14" />
+<hkern u1="P" u2="d" k="12" />
+<hkern u1="P" u2="a" k="18" />
+<hkern u1="P" u2="]" k="25" />
+<hkern u1="P" u2="Z" k="16" />
+<hkern u1="P" u2="Y" k="10" />
+<hkern u1="P" u2="X" k="43" />
+<hkern u1="P" u2="J" k="59" />
+<hkern u1="P" u2="A" k="84" />
+<hkern u1="P" u2="&#x2f;" k="90" />
+<hkern u1="P" u2="&#x2e;" k="106" />
+<hkern u1="P" u2="&#x29;" k="37" />
+<hkern u1="Q" u2="&#x201e;" k="6" />
+<hkern u1="Q" u2="&#x201a;" k="6" />
+<hkern u1="Q" u2="&#xc6;" k="29" />
+<hkern u1="Q" u2="j" k="-172" />
+<hkern u1="Q" u2="]" k="-6" />
+<hkern u1="Q" u2="&#x2f;" k="31" />
+<hkern u1="R" u2="&#x2039;" k="29" />
+<hkern u1="R" u2="&#xf0;" k="45" />
+<hkern u1="R" u2="y" k="14" />
+<hkern u1="R" u2="w" k="12" />
+<hkern u1="R" u2="v" k="12" />
+<hkern u1="R" u2="u" k="23" />
+<hkern u1="R" u2="t" k="20" />
+<hkern u1="R" u2="q" k="37" />
+<hkern u1="R" u2="o" k="41" />
+<hkern u1="R" u2="n" k="10" />
+<hkern u1="R" u2="l" k="10" />
+<hkern u1="R" u2="i" k="10" />
+<hkern u1="R" u2="h" k="10" />
+<hkern u1="R" u2="f" k="14" />
+<hkern u1="R" u2="d" k="37" />
+<hkern u1="R" u2="a" k="27" />
+<hkern u1="R" u2="\" k="33" />
+<hkern u1="R" u2="Y" k="37" />
+<hkern u1="R" u2="W" k="18" />
+<hkern u1="R" u2="V" k="27" />
+<hkern u1="R" u2="T" k="29" />
+<hkern u1="R" u2="O" k="14" />
+<hkern u1="R" u2="J" k="16" />
+<hkern u1="S" u2="&#xf0;" k="10" />
+<hkern u1="S" u2="&#xee;" k="-31" />
+<hkern u1="S" u2="z" k="18" />
+<hkern u1="S" u2="y" k="25" />
+<hkern u1="S" u2="x" k="23" />
+<hkern u1="S" u2="w" k="25" />
+<hkern u1="S" u2="v" k="20" />
+<hkern u1="S" u2="u" k="14" />
+<hkern u1="S" u2="t" k="29" />
+<hkern u1="S" u2="s" k="20" />
+<hkern u1="S" u2="q" k="10" />
+<hkern u1="S" u2="o" k="10" />
+<hkern u1="S" u2="n" k="16" />
+<hkern u1="S" u2="f" k="29" />
+<hkern u1="S" u2="d" k="10" />
+<hkern u1="S" u2="Y" k="10" />
+<hkern u1="S" u2="X" k="10" />
+<hkern u1="S" u2="V" k="10" />
+<hkern u1="S" u2="T" k="12" />
+<hkern u1="S" u2="A" k="16" />
+<hkern u1="S" u2="&#x2f;" k="25" />
+<hkern u1="T" u2="&#x203a;" k="98" />
+<hkern u1="T" u2="&#x2039;" k="115" />
+<hkern u1="T" u2="&#xf1;" k="78" />
+<hkern u1="T" u2="&#xf0;" k="82" />
+<hkern u1="T" u2="&#xef;" k="-53" />
+<hkern u1="T" u2="&#xee;" k="-88" />
+<hkern u1="T" u2="&#xed;" k="27" />
+<hkern u1="T" u2="&#xec;" k="-57" />
+<hkern u1="T" u2="&#xdf;" k="27" />
+<hkern u1="T" u2="&#xc6;" k="113" />
+<hkern u1="T" u2="z" k="137" />
+<hkern u1="T" u2="y" k="135" />
+<hkern u1="T" u2="x" k="131" />
+<hkern u1="T" u2="w" k="125" />
+<hkern u1="T" u2="v" k="133" />
+<hkern u1="T" u2="u" k="100" />
+<hkern u1="T" u2="s" k="131" />
+<hkern u1="T" u2="q" k="119" />
+<hkern u1="T" u2="o" k="123" />
+<hkern u1="T" u2="n" k="43" />
+<hkern u1="T" u2="l" k="10" />
+<hkern u1="T" u2="i" k="10" />
+<hkern u1="T" u2="h" k="10" />
+<hkern u1="T" u2="f" k="14" />
+<hkern u1="T" u2="d" k="119" />
+<hkern u1="T" u2="a" k="131" />
+<hkern u1="T" u2="S" k="12" />
+<hkern u1="T" u2="O" k="39" />
+<hkern u1="T" u2="J" k="31" />
+<hkern u1="T" u2="A" k="104" />
+<hkern u1="T" u2="&#x40;" k="45" />
+<hkern u1="T" u2="&#x3a;" k="102" />
+<hkern u1="T" u2="&#x34;" k="57" />
+<hkern u1="T" u2="&#x2f;" k="102" />
+<hkern u1="T" u2="&#x2e;" k="111" />
+<hkern u1="T" u2="&#x2d;" k="109" />
+<hkern u1="T" u2="&#x26;" k="25" />
+<hkern u1="U" u2="&#xf0;" k="27" />
+<hkern u1="U" u2="&#xc6;" k="43" />
+<hkern u1="U" u2="z" k="23" />
+<hkern u1="U" u2="x" k="14" />
+<hkern u1="U" u2="u" k="16" />
+<hkern u1="U" u2="t" k="14" />
+<hkern u1="U" u2="s" k="29" />
+<hkern u1="U" u2="q" k="20" />
+<hkern u1="U" u2="o" k="20" />
+<hkern u1="U" u2="n" k="16" />
+<hkern u1="U" u2="l" k="12" />
+<hkern u1="U" u2="i" k="12" />
+<hkern u1="U" u2="h" k="12" />
+<hkern u1="U" u2="f" k="14" />
+<hkern u1="U" u2="d" k="20" />
+<hkern u1="U" u2="a" k="23" />
+<hkern u1="U" u2="J" k="27" />
+<hkern u1="U" u2="A" k="37" />
+<hkern u1="U" u2="&#x2f;" k="51" />
+<hkern u1="U" u2="&#x2e;" k="27" />
+<hkern u1="V" u2="&#x2122;" k="-29" />
+<hkern u1="V" u2="&#x203a;" k="31" />
+<hkern u1="V" u2="&#x2039;" k="70" />
+<hkern u1="V" u2="&#xf0;" k="61" />
+<hkern u1="V" u2="&#xef;" k="-115" />
+<hkern u1="V" u2="&#xee;" k="-86" />
+<hkern u1="V" u2="&#xed;" k="23" />
+<hkern u1="V" u2="&#xec;" k="-117" />
+<hkern u1="V" u2="&#xdf;" k="27" />
+<hkern u1="V" u2="&#xc6;" k="96" />
+<hkern u1="V" u2="z" k="49" />
+<hkern u1="V" u2="x" k="16" />
+<hkern u1="V" u2="u" k="49" />
+<hkern u1="V" u2="t" k="12" />
+<hkern u1="V" u2="s" k="98" />
+<hkern u1="V" u2="q" k="94" />
+<hkern u1="V" u2="o" k="94" />
+<hkern u1="V" u2="n" k="57" />
+<hkern u1="V" u2="f" k="16" />
+<hkern u1="V" u2="d" k="94" />
+<hkern u1="V" u2="a" k="84" />
+<hkern u1="V" u2="S" k="18" />
+<hkern u1="V" u2="O" k="33" />
+<hkern u1="V" u2="J" k="31" />
+<hkern u1="V" u2="A" k="88" />
+<hkern u1="V" u2="&#x40;" k="31" />
+<hkern u1="V" u2="&#x3a;" k="49" />
+<hkern u1="V" u2="&#x34;" k="39" />
+<hkern u1="V" u2="&#x31;" k="-16" />
+<hkern u1="V" u2="&#x2f;" k="111" />
+<hkern u1="V" u2="&#x2e;" k="113" />
+<hkern u1="V" u2="&#x2d;" k="49" />
+<hkern u1="V" u2="&#x26;" k="27" />
+<hkern u1="W" u2="&#x2122;" k="-12" />
+<hkern u1="W" u2="&#x2039;" k="55" />
+<hkern u1="W" u2="&#xf0;" k="57" />
+<hkern u1="W" u2="&#xef;" k="-98" />
+<hkern u1="W" u2="&#xee;" k="-74" />
+<hkern u1="W" u2="&#xed;" k="18" />
+<hkern u1="W" u2="&#xec;" k="-100" />
+<hkern u1="W" u2="&#xdf;" k="25" />
+<hkern u1="W" u2="&#xc6;" k="86" />
+<hkern u1="W" u2="z" k="41" />
+<hkern u1="W" u2="x" k="12" />
+<hkern u1="W" u2="u" k="41" />
+<hkern u1="W" u2="s" k="88" />
+<hkern u1="W" u2="q" k="82" />
+<hkern u1="W" u2="o" k="86" />
+<hkern u1="W" u2="n" k="47" />
+<hkern u1="W" u2="f" k="12" />
+<hkern u1="W" u2="d" k="80" />
+<hkern u1="W" u2="a" k="70" />
+<hkern u1="W" u2="S" k="10" />
+<hkern u1="W" u2="O" k="23" />
+<hkern u1="W" u2="J" k="27" />
+<hkern u1="W" u2="A" k="76" />
+<hkern u1="W" u2="&#x40;" k="20" />
+<hkern u1="W" u2="&#x3a;" k="37" />
+<hkern u1="W" u2="&#x34;" k="25" />
+<hkern u1="W" u2="&#x2f;" k="94" />
+<hkern u1="W" u2="&#x2e;" k="90" />
+<hkern u1="W" u2="&#x2d;" k="37" />
+<hkern u1="X" u2="&#x2039;" k="35" />
+<hkern u1="X" u2="&#xf0;" k="66" />
+<hkern u1="X" u2="&#xef;" k="-49" />
+<hkern u1="X" u2="&#xec;" k="-53" />
+<hkern u1="X" u2="&#xae;" k="23" />
+<hkern u1="X" u2="y" k="53" />
+<hkern u1="X" u2="w" k="59" />
+<hkern u1="X" u2="v" k="53" />
+<hkern u1="X" u2="u" k="49" />
+<hkern u1="X" u2="t" k="41" />
+<hkern u1="X" u2="q" k="74" />
+<hkern u1="X" u2="o" k="74" />
+<hkern u1="X" u2="n" k="16" />
+<hkern u1="X" u2="f" k="31" />
+<hkern u1="X" u2="d" k="74" />
+<hkern u1="X" u2="a" k="25" />
+<hkern u1="X" u2="S" k="12" />
+<hkern u1="X" u2="O" k="59" />
+<hkern u1="X" u2="&#x2d;" k="55" />
+<hkern u1="Y" u2="&#x2122;" k="-43" />
+<hkern u1="Y" u2="&#x203a;" k="51" />
+<hkern u1="Y" u2="&#x2039;" k="94" />
+<hkern u1="Y" u2="&#xf0;" k="68" />
+<hkern u1="Y" u2="&#xef;" k="-129" />
+<hkern u1="Y" u2="&#xee;" k="-80" />
+<hkern u1="Y" u2="&#xed;" k="25" />
+<hkern u1="Y" u2="&#xec;" k="-131" />
+<hkern u1="Y" u2="&#xdf;" k="31" />
+<hkern u1="Y" u2="&#xc6;" k="109" />
+<hkern u1="Y" u2="&#xae;" k="25" />
+<hkern u1="Y" u2="z" k="76" />
+<hkern u1="Y" u2="y" k="12" />
+<hkern u1="Y" u2="x" k="31" />
+<hkern u1="Y" u2="w" k="20" />
+<hkern u1="Y" u2="v" k="12" />
+<hkern u1="Y" u2="u" k="82" />
+<hkern u1="Y" u2="t" k="14" />
+<hkern u1="Y" u2="s" k="98" />
+<hkern u1="Y" u2="q" k="106" />
+<hkern u1="Y" u2="o" k="109" />
+<hkern u1="Y" u2="n" k="84" />
+<hkern u1="Y" u2="f" k="27" />
+<hkern u1="Y" u2="d" k="104" />
+<hkern u1="Y" u2="a" k="92" />
+<hkern u1="Y" u2="]" k="-12" />
+<hkern u1="Y" u2="S" k="23" />
+<hkern u1="Y" u2="O" k="51" />
+<hkern u1="Y" u2="J" k="20" />
+<hkern u1="Y" u2="A" k="100" />
+<hkern u1="Y" u2="&#x40;" k="49" />
+<hkern u1="Y" u2="&#x3a;" k="70" />
+<hkern u1="Y" u2="&#x34;" k="57" />
+<hkern u1="Y" u2="&#x31;" k="-33" />
+<hkern u1="Y" u2="&#x2f;" k="102" />
+<hkern u1="Y" u2="&#x2e;" k="111" />
+<hkern u1="Y" u2="&#x2d;" k="78" />
+<hkern u1="Y" u2="&#x26;" k="31" />
+<hkern u1="Z" u2="&#xf0;" k="27" />
+<hkern u1="Z" u2="&#xee;" k="-29" />
+<hkern u1="Z" u2="y" k="16" />
+<hkern u1="Z" u2="w" k="18" />
+<hkern u1="Z" u2="v" k="14" />
+<hkern u1="Z" u2="u" k="23" />
+<hkern u1="Z" u2="t" k="23" />
+<hkern u1="Z" u2="q" k="29" />
+<hkern u1="Z" u2="o" k="31" />
+<hkern u1="Z" u2="n" k="16" />
+<hkern u1="Z" u2="f" k="23" />
+<hkern u1="Z" u2="d" k="31" />
+<hkern u1="Z" u2="a" k="12" />
+<hkern u1="Z" u2="O" k="29" />
+<hkern u1="Z" u2="&#x2d;" k="25" />
+<hkern u1="[" u2="&#xf0;" k="31" />
+<hkern u1="[" u2="&#xef;" k="-35" />
+<hkern u1="[" u2="&#xee;" k="-35" />
+<hkern u1="[" u2="&#xec;" k="-102" />
+<hkern u1="[" u2="u" k="33" />
+<hkern u1="[" u2="s" k="27" />
+<hkern u1="[" u2="q" k="51" />
+<hkern u1="[" u2="o" k="51" />
+<hkern u1="[" u2="j" k="-193" />
+<hkern u1="[" u2="d" k="51" />
+<hkern u1="[" u2="a" k="35" />
+<hkern u1="[" u2="Y" k="-12" />
+<hkern u1="[" u2="S" k="20" />
+<hkern u1="[" u2="O" k="43" />
+<hkern u1="[" u2="&#x38;" k="20" />
+<hkern u1="[" u2="&#x36;" k="33" />
+<hkern u1="[" u2="&#x34;" k="49" />
+<hkern u1="[" u2="&#x30;" k="33" />
+<hkern u1="\" u2="&#x2019;" k="117" />
+<hkern u1="\" u2="&#xc6;" k="-49" />
+<hkern u1="\" u2="y" k="47" />
+<hkern u1="\" u2="w" k="39" />
+<hkern u1="\" u2="v" k="47" />
+<hkern u1="\" u2="t" k="23" />
+<hkern u1="\" u2="Y" k="78" />
+<hkern u1="\" u2="W" k="63" />
+<hkern u1="\" u2="V" k="80" />
+<hkern u1="\" u2="U" k="25" />
+<hkern u1="\" u2="T" k="78" />
+<hkern u1="\" u2="O" k="23" />
+<hkern u1="\" u2="A" k="-27" />
+<hkern u1="\" u2="&#x31;" k="39" />
+<hkern u1="\" u2="&#x27;" k="100" />
+<hkern u1="a" u2="&#x2122;" k="41" />
+<hkern u1="a" u2="&#x2019;" k="16" />
+<hkern u1="a" u2="&#x2018;" k="16" />
+<hkern u1="a" u2="y" k="14" />
+<hkern u1="a" u2="w" k="16" />
+<hkern u1="a" u2="v" k="14" />
+<hkern u1="a" u2="t" k="12" />
+<hkern u1="a" u2="f" k="8" />
+<hkern u1="a" u2="\" k="68" />
+<hkern u1="a" u2="Z" k="23" />
+<hkern u1="a" u2="Y" k="84" />
+<hkern u1="a" u2="X" k="14" />
+<hkern u1="a" u2="W" k="59" />
+<hkern u1="a" u2="V" k="76" />
+<hkern u1="a" u2="U" k="23" />
+<hkern u1="a" u2="T" k="100" />
+<hkern u1="a" u2="S" k="12" />
+<hkern u1="a" u2="O" k="14" />
+<hkern u1="a" u2="J" k="16" />
+<hkern u1="a" u2="I" k="10" />
+<hkern u1="a" u2="&#x29;" k="31" />
+<hkern u1="b" u2="&#x2122;" k="47" />
+<hkern u1="b" u2="&#x2019;" k="43" />
+<hkern u1="b" u2="&#x2018;" k="43" />
+<hkern u1="b" u2="&#xc6;" k="25" />
+<hkern u1="b" u2="&#x7d;" k="29" />
+<hkern u1="b" u2="z" k="14" />
+<hkern u1="b" u2="y" k="23" />
+<hkern u1="b" u2="x" k="45" />
+<hkern u1="b" u2="w" k="18" />
+<hkern u1="b" u2="v" k="23" />
+<hkern u1="b" u2="t" k="18" />
+<hkern u1="b" u2="s" k="10" />
+<hkern u1="b" u2="f" k="16" />
+<hkern u1="b" u2="]" k="51" />
+<hkern u1="b" u2="\" k="74" />
+<hkern u1="b" u2="Z" k="47" />
+<hkern u1="b" u2="Y" k="104" />
+<hkern u1="b" u2="X" k="72" />
+<hkern u1="b" u2="W" k="80" />
+<hkern u1="b" u2="V" k="94" />
+<hkern u1="b" u2="U" k="20" />
+<hkern u1="b" u2="T" k="119" />
+<hkern u1="b" u2="S" k="23" />
+<hkern u1="b" u2="J" k="35" />
+<hkern u1="b" u2="I" k="20" />
+<hkern u1="b" u2="A" k="27" />
+<hkern u1="b" u2="&#x2f;" k="41" />
+<hkern u1="b" u2="&#x2a;" k="23" />
+<hkern u1="b" u2="&#x29;" k="53" />
+<hkern u1="b" u2="&#x27;" k="23" />
+<hkern u1="c" u2="&#x2122;" k="25" />
+<hkern u1="c" u2="&#x2039;" k="20" />
+<hkern u1="c" u2="&#xf0;" k="23" />
+<hkern u1="c" u2="q" k="16" />
+<hkern u1="c" u2="o" k="18" />
+<hkern u1="c" u2="d" k="16" />
+<hkern u1="c" u2="]" k="20" />
+<hkern u1="c" u2="\" k="45" />
+<hkern u1="c" u2="Y" k="86" />
+<hkern u1="c" u2="X" k="10" />
+<hkern u1="c" u2="W" k="43" />
+<hkern u1="c" u2="V" k="55" />
+<hkern u1="c" u2="U" k="16" />
+<hkern u1="c" u2="T" k="106" />
+<hkern u1="c" u2="S" k="12" />
+<hkern u1="c" u2="O" k="20" />
+<hkern u1="c" u2="&#x2d;" k="20" />
+<hkern u1="c" u2="&#x29;" k="29" />
+<hkern u1="d" u2="&#xec;" k="-31" />
+<hkern u1="d" u2="Z" k="12" />
+<hkern u1="d" u2="U" k="14" />
+<hkern u1="d" u2="T" k="10" />
+<hkern u1="d" u2="O" k="12" />
+<hkern u1="d" u2="J" k="18" />
+<hkern u1="d" u2="I" k="10" />
+<hkern u1="e" u2="&#x2122;" k="35" />
+<hkern u1="e" u2="&#x2019;" k="20" />
+<hkern u1="e" u2="&#x2018;" k="20" />
+<hkern u1="e" u2="&#xc6;" k="14" />
+<hkern u1="e" u2="&#x7d;" k="20" />
+<hkern u1="e" u2="z" k="10" />
+<hkern u1="e" u2="y" k="16" />
+<hkern u1="e" u2="x" k="31" />
+<hkern u1="e" u2="w" k="10" />
+<hkern u1="e" u2="v" k="16" />
+<hkern u1="e" u2="t" k="12" />
+<hkern u1="e" u2="f" k="10" />
+<hkern u1="e" u2="]" k="43" />
+<hkern u1="e" u2="\" k="66" />
+<hkern u1="e" u2="Z" k="33" />
+<hkern u1="e" u2="Y" k="100" />
+<hkern u1="e" u2="X" k="47" />
+<hkern u1="e" u2="W" k="78" />
+<hkern u1="e" u2="V" k="96" />
+<hkern u1="e" u2="U" k="14" />
+<hkern u1="e" u2="T" k="141" />
+<hkern u1="e" u2="S" k="16" />
+<hkern u1="e" u2="J" k="27" />
+<hkern u1="e" u2="I" k="14" />
+<hkern u1="e" u2="A" k="18" />
+<hkern u1="e" u2="&#x2f;" k="35" />
+<hkern u1="e" u2="&#x29;" k="47" />
+<hkern u1="f" u2="&#x2122;" k="-63" />
+<hkern u1="f" u2="&#x2039;" k="43" />
+<hkern u1="f" u2="&#xf0;" k="51" />
+<hkern u1="f" u2="&#xef;" k="-164" />
+<hkern u1="f" u2="&#xee;" k="-106" />
+<hkern u1="f" u2="&#xec;" k="-172" />
+<hkern u1="f" u2="&#xc6;" k="88" />
+<hkern u1="f" u2="&#x7d;" k="-20" />
+<hkern u1="f" u2="s" k="12" />
+<hkern u1="f" u2="q" k="25" />
+<hkern u1="f" u2="o" k="27" />
+<hkern u1="f" u2="d" k="23" />
+<hkern u1="f" u2="a" k="12" />
+<hkern u1="f" u2="]" k="-39" />
+<hkern u1="f" u2="\" k="-27" />
+<hkern u1="f" u2="Y" k="-135" />
+<hkern u1="f" u2="X" k="-61" />
+<hkern u1="f" u2="W" k="-104" />
+<hkern u1="f" u2="V" k="-123" />
+<hkern u1="f" u2="T" k="-59" />
+<hkern u1="f" u2="J" k="14" />
+<hkern u1="f" u2="A" k="82" />
+<hkern u1="f" u2="&#x2f;" k="55" />
+<hkern u1="f" u2="&#x2e;" k="57" />
+<hkern u1="f" u2="&#x2d;" k="29" />
+<hkern u1="f" u2="&#x2a;" k="-12" />
+<hkern u1="f" u2="&#x29;" k="-25" />
+<hkern u1="g" u2="j" k="-14" />
+<hkern u1="i" u2="&#xec;" k="-35" />
+<hkern u1="i" u2="Z" k="14" />
+<hkern u1="i" u2="U" k="12" />
+<hkern u1="i" u2="T" k="10" />
+<hkern u1="i" u2="O" k="12" />
+<hkern u1="i" u2="J" k="18" />
+<hkern u1="i" u2="I" k="10" />
+<hkern u1="j" u2="j" k="-61" />
+<hkern u1="k" u2="&#x2039;" k="41" />
+<hkern u1="k" u2="&#xf0;" k="63" />
+<hkern u1="k" u2="s" k="23" />
+<hkern u1="k" u2="q" k="55" />
+<hkern u1="k" u2="o" k="57" />
+<hkern u1="k" u2="d" k="53" />
+<hkern u1="k" u2="a" k="29" />
+<hkern u1="k" u2="Y" k="23" />
+<hkern u1="k" u2="V" k="10" />
+<hkern u1="k" u2="T" k="135" />
+<hkern u1="k" u2="S" k="12" />
+<hkern u1="k" u2="O" k="45" />
+<hkern u1="k" u2="&#x2d;" k="51" />
+<hkern u1="k" u2="&#x2a;" k="-27" />
+<hkern u1="l" u2="&#xec;" k="-31" />
+<hkern u1="l" u2="&#xb7;" k="152" />
+<hkern u1="l" u2="Z" k="12" />
+<hkern u1="l" u2="U" k="14" />
+<hkern u1="l" u2="T" k="10" />
+<hkern u1="l" u2="O" k="12" />
+<hkern u1="l" u2="J" k="18" />
+<hkern u1="l" u2="I" k="10" />
+<hkern u1="n" u2="&#x2122;" k="43" />
+<hkern u1="n" u2="&#x2019;" k="20" />
+<hkern u1="n" u2="&#x2018;" k="20" />
+<hkern u1="n" u2="y" k="18" />
+<hkern u1="n" u2="w" k="18" />
+<hkern u1="n" u2="v" k="18" />
+<hkern u1="n" u2="t" k="16" />
+<hkern u1="n" u2="f" k="10" />
+<hkern u1="n" u2="\" k="72" />
+<hkern u1="n" u2="Z" k="25" />
+<hkern u1="n" u2="Y" k="84" />
+<hkern u1="n" u2="X" k="14" />
+<hkern u1="n" u2="W" k="59" />
+<hkern u1="n" u2="V" k="76" />
+<hkern u1="n" u2="U" k="23" />
+<hkern u1="n" u2="T" k="102" />
+<hkern u1="n" u2="S" k="12" />
+<hkern u1="n" u2="O" k="14" />
+<hkern u1="n" u2="J" k="16" />
+<hkern u1="n" u2="I" k="10" />
+<hkern u1="n" u2="&#x29;" k="31" />
+<hkern u1="o" u2="&#x2122;" k="43" />
+<hkern u1="o" u2="&#x2019;" k="35" />
+<hkern u1="o" u2="&#x2018;" k="35" />
+<hkern u1="o" u2="&#xc6;" k="25" />
+<hkern u1="o" u2="&#x7d;" k="29" />
+<hkern u1="o" u2="z" k="14" />
+<hkern u1="o" u2="y" k="27" />
+<hkern u1="o" u2="x" k="45" />
+<hkern u1="o" u2="w" k="20" />
+<hkern u1="o" u2="v" k="25" />
+<hkern u1="o" u2="t" k="20" />
+<hkern u1="o" u2="s" k="10" />
+<hkern u1="o" u2="f" k="18" />
+<hkern u1="o" u2="]" k="51" />
+<hkern u1="o" u2="\" k="74" />
+<hkern u1="o" u2="Z" k="47" />
+<hkern u1="o" u2="Y" k="109" />
+<hkern u1="o" u2="X" k="74" />
+<hkern u1="o" u2="W" k="84" />
+<hkern u1="o" u2="V" k="94" />
+<hkern u1="o" u2="U" k="20" />
+<hkern u1="o" u2="T" k="123" />
+<hkern u1="o" u2="S" k="25" />
+<hkern u1="o" u2="J" k="35" />
+<hkern u1="o" u2="I" k="20" />
+<hkern u1="o" u2="A" k="27" />
+<hkern u1="o" u2="&#x2f;" k="41" />
+<hkern u1="o" u2="&#x2a;" k="16" />
+<hkern u1="o" u2="&#x29;" k="53" />
+<hkern u1="p" u2="&#x2122;" k="43" />
+<hkern u1="p" u2="&#x2019;" k="31" />
+<hkern u1="p" u2="&#x2018;" k="31" />
+<hkern u1="p" u2="&#xc6;" k="23" />
+<hkern u1="p" u2="&#x7d;" k="31" />
+<hkern u1="p" u2="z" k="14" />
+<hkern u1="p" u2="y" k="23" />
+<hkern u1="p" u2="x" k="43" />
+<hkern u1="p" u2="w" k="18" />
+<hkern u1="p" u2="v" k="23" />
+<hkern u1="p" u2="t" k="18" />
+<hkern u1="p" u2="s" k="10" />
+<hkern u1="p" u2="f" k="16" />
+<hkern u1="p" u2="]" k="51" />
+<hkern u1="p" u2="\" k="74" />
+<hkern u1="p" u2="Z" k="47" />
+<hkern u1="p" u2="Y" k="104" />
+<hkern u1="p" u2="X" k="68" />
+<hkern u1="p" u2="W" k="80" />
+<hkern u1="p" u2="V" k="94" />
+<hkern u1="p" u2="U" k="20" />
+<hkern u1="p" u2="T" k="119" />
+<hkern u1="p" u2="S" k="23" />
+<hkern u1="p" u2="J" k="33" />
+<hkern u1="p" u2="I" k="18" />
+<hkern u1="p" u2="A" k="25" />
+<hkern u1="p" u2="&#x2f;" k="41" />
+<hkern u1="p" u2="&#x29;" k="53" />
+<hkern u1="q" u2="j" k="-141" />
+<hkern u1="r" u2="&#x2039;" k="41" />
+<hkern u1="r" u2="&#xf0;" k="39" />
+<hkern u1="r" u2="&#xc6;" k="92" />
+<hkern u1="r" u2="s" k="8" />
+<hkern u1="r" u2="q" k="14" />
+<hkern u1="r" u2="o" k="16" />
+<hkern u1="r" u2="d" k="14" />
+<hkern u1="r" u2="a" k="10" />
+<hkern u1="r" u2="]" k="27" />
+<hkern u1="r" u2="Z" k="25" />
+<hkern u1="r" u2="Y" k="12" />
+<hkern u1="r" u2="X" k="63" />
+<hkern u1="r" u2="T" k="129" />
+<hkern u1="r" u2="J" k="74" />
+<hkern u1="r" u2="I" k="10" />
+<hkern u1="r" u2="A" k="94" />
+<hkern u1="r" u2="&#x2f;" k="80" />
+<hkern u1="r" u2="&#x2e;" k="84" />
+<hkern u1="r" u2="&#x29;" k="35" />
+<hkern u1="r" u2="&#x26;" k="20" />
+<hkern u1="s" u2="&#x2122;" k="31" />
+<hkern u1="s" u2="y" k="10" />
+<hkern u1="s" u2="x" k="14" />
+<hkern u1="s" u2="v" k="8" />
+<hkern u1="s" u2="t" k="8" />
+<hkern u1="s" u2="]" k="35" />
+<hkern u1="s" u2="\" k="55" />
+<hkern u1="s" u2="Z" k="12" />
+<hkern u1="s" u2="Y" k="96" />
+<hkern u1="s" u2="X" k="25" />
+<hkern u1="s" u2="W" k="55" />
+<hkern u1="s" u2="V" k="68" />
+<hkern u1="s" u2="U" k="20" />
+<hkern u1="s" u2="T" k="111" />
+<hkern u1="s" u2="O" k="14" />
+<hkern u1="s" u2="J" k="10" />
+<hkern u1="s" u2="I" k="14" />
+<hkern u1="s" u2="A" k="12" />
+<hkern u1="s" u2="&#x2f;" k="23" />
+<hkern u1="s" u2="&#x29;" k="41" />
+<hkern u1="t" u2="&#x2122;" k="20" />
+<hkern u1="t" u2="&#xf0;" k="8" />
+<hkern u1="t" u2="q" k="10" />
+<hkern u1="t" u2="o" k="12" />
+<hkern u1="t" u2="d" k="10" />
+<hkern u1="t" u2="\" k="37" />
+<hkern u1="t" u2="Y" k="70" />
+<hkern u1="t" u2="W" k="37" />
+<hkern u1="t" u2="V" k="45" />
+<hkern u1="t" u2="U" k="18" />
+<hkern u1="t" u2="T" k="47" />
+<hkern u1="t" u2="O" k="16" />
+<hkern u1="u" u2="&#x2122;" k="16" />
+<hkern u1="u" u2="\" k="39" />
+<hkern u1="u" u2="Z" k="16" />
+<hkern u1="u" u2="Y" k="84" />
+<hkern u1="u" u2="X" k="16" />
+<hkern u1="u" u2="W" k="47" />
+<hkern u1="u" u2="V" k="57" />
+<hkern u1="u" u2="U" k="16" />
+<hkern u1="u" u2="T" k="43" />
+<hkern u1="u" u2="S" k="10" />
+<hkern u1="u" u2="O" k="12" />
+<hkern u1="u" u2="J" k="18" />
+<hkern u1="u" u2="I" k="10" />
+<hkern u1="u" u2="&#x29;" k="29" />
+<hkern u1="v" u2="&#x2039;" k="35" />
+<hkern u1="v" u2="&#xf0;" k="39" />
+<hkern u1="v" u2="&#xc6;" k="72" />
+<hkern u1="v" u2="s" k="18" />
+<hkern u1="v" u2="q" k="23" />
+<hkern u1="v" u2="o" k="25" />
+<hkern u1="v" u2="d" k="23" />
+<hkern u1="v" u2="a" k="14" />
+<hkern u1="v" u2="Y" k="12" />
+<hkern u1="v" u2="X" k="51" />
+<hkern u1="v" u2="T" k="133" />
+<hkern u1="v" u2="J" k="43" />
+<hkern u1="v" u2="A" k="63" />
+<hkern u1="v" u2="&#x2f;" k="78" />
+<hkern u1="v" u2="&#x2e;" k="68" />
+<hkern u1="v" u2="&#x29;" k="23" />
+<hkern u1="w" u2="&#x2039;" k="27" />
+<hkern u1="w" u2="&#xf0;" k="35" />
+<hkern u1="w" u2="&#xc6;" k="66" />
+<hkern u1="w" u2="s" k="16" />
+<hkern u1="w" u2="q" k="18" />
+<hkern u1="w" u2="o" k="20" />
+<hkern u1="w" u2="d" k="18" />
+<hkern u1="w" u2="a" k="12" />
+<hkern u1="w" u2="Z" k="12" />
+<hkern u1="w" u2="Y" k="20" />
+<hkern u1="w" u2="X" k="57" />
+<hkern u1="w" u2="T" k="125" />
+<hkern u1="w" u2="J" k="51" />
+<hkern u1="w" u2="A" k="57" />
+<hkern u1="w" u2="&#x2f;" k="70" />
+<hkern u1="w" u2="&#x2e;" k="53" />
+<hkern u1="w" u2="&#x29;" k="29" />
+<hkern u1="x" u2="&#x2039;" k="43" />
+<hkern u1="x" u2="&#xf0;" k="53" />
+<hkern u1="x" u2="s" k="12" />
+<hkern u1="x" u2="q" k="49" />
+<hkern u1="x" u2="o" k="51" />
+<hkern u1="x" u2="d" k="47" />
+<hkern u1="x" u2="a" k="20" />
+<hkern u1="x" u2="Y" k="29" />
+<hkern u1="x" u2="V" k="14" />
+<hkern u1="x" u2="U" k="12" />
+<hkern u1="x" u2="T" k="131" />
+<hkern u1="x" u2="O" k="35" />
+<hkern u1="x" u2="&#x2d;" k="45" />
+<hkern u1="y" u2="&#x2039;" k="35" />
+<hkern u1="y" u2="&#xf0;" k="39" />
+<hkern u1="y" u2="&#xc6;" k="72" />
+<hkern u1="y" u2="s" k="20" />
+<hkern u1="y" u2="q" k="25" />
+<hkern u1="y" u2="o" k="27" />
+<hkern u1="y" u2="d" k="23" />
+<hkern u1="y" u2="a" k="16" />
+<hkern u1="y" u2="Y" k="12" />
+<hkern u1="y" u2="X" k="51" />
+<hkern u1="y" u2="T" k="135" />
+<hkern u1="y" u2="J" k="47" />
+<hkern u1="y" u2="A" k="63" />
+<hkern u1="y" u2="&#x2f;" k="72" />
+<hkern u1="y" u2="&#x2e;" k="70" />
+<hkern u1="y" u2="&#x2a;" k="-33" />
+<hkern u1="y" u2="&#x29;" k="23" />
+<hkern u1="z" u2="&#x2122;" k="16" />
+<hkern u1="z" u2="&#x2039;" k="23" />
+<hkern u1="z" u2="&#xf0;" k="16" />
+<hkern u1="z" u2="q" k="14" />
+<hkern u1="z" u2="o" k="14" />
+<hkern u1="z" u2="d" k="14" />
+<hkern u1="z" u2="\" k="37" />
+<hkern u1="z" u2="Y" k="72" />
+<hkern u1="z" u2="W" k="37" />
+<hkern u1="z" u2="V" k="45" />
+<hkern u1="z" u2="U" k="20" />
+<hkern u1="z" u2="T" k="143" />
+<hkern u1="z" u2="O" k="14" />
+<hkern u1="z" u2="I" k="12" />
+<hkern u1="z" u2="&#x2d;" k="20" />
+<hkern u1="&#x7b;" u2="&#xef;" k="-14" />
+<hkern u1="&#x7b;" u2="&#xee;" k="-31" />
+<hkern u1="&#x7b;" u2="&#xec;" k="-82" />
+<hkern u1="&#x7b;" u2="q" k="31" />
+<hkern u1="&#x7b;" u2="o" k="29" />
+<hkern u1="&#x7b;" u2="j" k="-182" />
+<hkern u1="&#x7b;" u2="d" k="29" />
+<hkern u1="&#x7b;" u2="O" k="20" />
+<hkern u1="&#x7c;" u2="&#xec;" k="-27" />
+<hkern u1="&#x7c;" u2="j" k="-133" />
+<hkern u1="&#x7d;" u2="&#x29;" k="20" />
+<hkern u1="&#xae;" u2="&#xc6;" k="23" />
+<hkern u1="&#xae;" u2="Y" k="25" />
+<hkern u1="&#xae;" u2="X" k="25" />
+<hkern u1="&#xae;" u2="A" k="23" />
+<hkern u1="&#xb0;" u2="&#x34;" k="43" />
+<hkern u1="&#xb7;" u2="l" k="152" />
+<hkern u1="&#xb7;" u2="&#x37;" k="31" />
+<hkern u1="&#xb7;" u2="&#x33;" k="45" />
+<hkern u1="&#xb7;" u2="&#x32;" k="43" />
+<hkern u1="&#xb7;" u2="&#x31;" k="49" />
+<hkern u1="&#xbf;" u2="Y" k="35" />
+<hkern u1="&#xbf;" u2="W" k="25" />
+<hkern u1="&#xbf;" u2="V" k="33" />
+<hkern u1="&#xbf;" u2="T" k="39" />
+<hkern u1="&#xde;" u2="&#x2122;" k="18" />
+<hkern u1="&#xde;" u2="&#xf0;" k="14" />
+<hkern u1="&#xde;" u2="&#xc6;" k="51" />
+<hkern u1="&#xde;" u2="z" k="16" />
+<hkern u1="&#xde;" u2="x" k="25" />
+<hkern u1="&#xde;" u2="s" k="14" />
+<hkern u1="&#xde;" u2="n" k="12" />
+<hkern u1="&#xde;" u2="l" k="12" />
+<hkern u1="&#xde;" u2="i" k="12" />
+<hkern u1="&#xde;" u2="h" k="12" />
+<hkern u1="&#xde;" u2="a" k="14" />
+<hkern u1="&#xde;" u2="]" k="47" />
+<hkern u1="&#xde;" u2="\" k="39" />
+<hkern u1="&#xde;" u2="Z" k="33" />
+<hkern u1="&#xde;" u2="Y" k="57" />
+<hkern u1="&#xde;" u2="X" k="72" />
+<hkern u1="&#xde;" u2="W" k="25" />
+<hkern u1="&#xde;" u2="V" k="35" />
+<hkern u1="&#xde;" u2="T" k="37" />
+<hkern u1="&#xde;" u2="S" k="10" />
+<hkern u1="&#xde;" u2="J" k="53" />
+<hkern u1="&#xde;" u2="A" k="49" />
+<hkern u1="&#xde;" u2="&#x2f;" k="59" />
+<hkern u1="&#xde;" u2="&#x2e;" k="53" />
+<hkern u1="&#xde;" u2="&#x29;" k="49" />
+<hkern u1="&#xdf;" u2="&#xc6;" k="12" />
+<hkern u1="&#xdf;" u2="z" k="8" />
+<hkern u1="&#xdf;" u2="y" k="18" />
+<hkern u1="&#xdf;" u2="x" k="25" />
+<hkern u1="&#xdf;" u2="w" k="14" />
+<hkern u1="&#xdf;" u2="v" k="16" />
+<hkern u1="&#xdf;" u2="t" k="16" />
+<hkern u1="&#xdf;" u2="s" k="10" />
+<hkern u1="&#xdf;" u2="f" k="16" />
+<hkern u1="&#xdf;" u2="\" k="20" />
+<hkern u1="&#xdf;" u2="Z" k="18" />
+<hkern u1="&#xdf;" u2="Y" k="37" />
+<hkern u1="&#xdf;" u2="X" k="37" />
+<hkern u1="&#xdf;" u2="W" k="31" />
+<hkern u1="&#xdf;" u2="V" k="35" />
+<hkern u1="&#xdf;" u2="U" k="20" />
+<hkern u1="&#xdf;" u2="T" k="33" />
+<hkern u1="&#xdf;" u2="S" k="14" />
+<hkern u1="&#xdf;" u2="O" k="12" />
+<hkern u1="&#xdf;" u2="J" k="16" />
+<hkern u1="&#xdf;" u2="I" k="18" />
+<hkern u1="&#xdf;" u2="A" k="16" />
+<hkern u1="&#xdf;" u2="&#x2f;" k="29" />
+<hkern u1="&#xdf;" u2="&#x29;" k="31" />
+<hkern u1="&#xed;" u2="&#x2122;" k="-74" />
+<hkern u1="&#xed;" u2="&#x7d;" k="-96" />
+<hkern u1="&#xed;" u2="&#x7c;" k="-41" />
+<hkern u1="&#xed;" u2="l" k="-45" />
+<hkern u1="&#xed;" u2="i" k="-43" />
+<hkern u1="&#xed;" u2="h" k="-45" />
+<hkern u1="&#xed;" u2="]" k="-117" />
+<hkern u1="&#xed;" u2="\" k="-111" />
+<hkern u1="&#xed;" u2="&#x2a;" k="-14" />
+<hkern u1="&#xed;" u2="&#x29;" k="-106" />
+<hkern u1="&#xee;" u2="&#x2122;" k="-88" />
+<hkern u1="&#xee;" u2="&#x7d;" k="-29" />
+<hkern u1="&#xee;" u2="]" k="-33" />
+<hkern u1="&#xee;" u2="&#x2a;" k="-57" />
+<hkern u1="&#xef;" u2="&#x2122;" k="-59" />
+<hkern u1="&#xef;" u2="&#x7d;" k="-16" />
+<hkern u1="&#xef;" u2="]" k="-37" />
+<hkern u1="&#xef;" u2="\" k="-16" />
+<hkern u1="&#xef;" u2="&#x2a;" k="-23" />
+<hkern u1="&#xef;" u2="&#x29;" k="-25" />
+<hkern u1="&#xf0;" u2="&#x2122;" k="20" />
+<hkern u1="&#xf0;" u2="&#x2019;" k="23" />
+<hkern u1="&#xf0;" u2="&#x2018;" k="23" />
+<hkern u1="&#xf0;" u2="&#xc6;" k="20" />
+<hkern u1="&#xf0;" u2="z" k="10" />
+<hkern u1="&#xf0;" u2="y" k="18" />
+<hkern u1="&#xf0;" u2="x" k="35" />
+<hkern u1="&#xf0;" u2="w" k="14" />
+<hkern u1="&#xf0;" u2="v" k="16" />
+<hkern u1="&#xf0;" u2="t" k="14" />
+<hkern u1="&#xf0;" u2="s" k="8" />
+<hkern u1="&#xf0;" u2="f" k="14" />
+<hkern u1="&#xf0;" u2="]" k="33" />
+<hkern u1="&#xf0;" u2="\" k="29" />
+<hkern u1="&#xf0;" u2="Z" k="57" />
+<hkern u1="&#xf0;" u2="Y" k="68" />
+<hkern u1="&#xf0;" u2="X" k="66" />
+<hkern u1="&#xf0;" u2="W" k="53" />
+<hkern u1="&#xf0;" u2="V" k="59" />
+<hkern u1="&#xf0;" u2="U" k="20" />
+<hkern u1="&#xf0;" u2="T" k="90" />
+<hkern u1="&#xf0;" u2="S" k="18" />
+<hkern u1="&#xf0;" u2="J" k="31" />
+<hkern u1="&#xf0;" u2="I" k="16" />
+<hkern u1="&#xf0;" u2="A" k="23" />
+<hkern u1="&#xf0;" u2="&#x2f;" k="37" />
+<hkern u1="&#xf0;" u2="&#x29;" k="37" />
+<hkern u1="&#x2018;" u2="&#xf0;" k="27" />
+<hkern u1="&#x2018;" u2="&#xef;" k="-27" />
+<hkern u1="&#x2018;" u2="&#xec;" k="-29" />
+<hkern u1="&#x2018;" u2="&#xc6;" k="125" />
+<hkern u1="&#x2018;" u2="s" k="43" />
+<hkern u1="&#x2018;" u2="q" k="55" />
+<hkern u1="&#x2018;" u2="o" k="59" />
+<hkern u1="&#x2018;" u2="d" k="68" />
+<hkern u1="&#x2018;" u2="a" k="27" />
+<hkern u1="&#x2018;" u2="O" k="18" />
+<hkern u1="&#x2018;" u2="J" k="27" />
+<hkern u1="&#x2018;" u2="A" k="115" />
+<hkern u1="&#x2018;" u2="&#x2e;" k="287" />
+<hkern u1="&#x2019;" u2="&#x2039;" k="45" />
+<hkern u1="&#x2019;" u2="&#xf0;" k="27" />
+<hkern u1="&#x2019;" u2="&#xef;" k="-27" />
+<hkern u1="&#x2019;" u2="&#xec;" k="-29" />
+<hkern u1="&#x2019;" u2="&#xc6;" k="125" />
+<hkern u1="&#x2019;" u2="s" k="43" />
+<hkern u1="&#x2019;" u2="q" k="55" />
+<hkern u1="&#x2019;" u2="o" k="59" />
+<hkern u1="&#x2019;" u2="d" k="68" />
+<hkern u1="&#x2019;" u2="a" k="27" />
+<hkern u1="&#x2019;" u2="O" k="18" />
+<hkern u1="&#x2019;" u2="J" k="27" />
+<hkern u1="&#x2019;" u2="A" k="115" />
+<hkern u1="&#x2019;" u2="&#x40;" k="49" />
+<hkern u1="&#x2019;" u2="&#x3a;" k="47" />
+<hkern u1="&#x2019;" u2="&#x2f;" k="164" />
+<hkern u1="&#x2019;" u2="&#x2e;" k="287" />
+<hkern u1="&#x2019;" u2="&#x26;" k="41" />
+<hkern u1="&#x2039;" u2="Y" k="51" />
+<hkern u1="&#x2039;" u2="V" k="31" />
+<hkern u1="&#x2039;" u2="T" k="98" />
+<hkern u1="&#x203a;" u2="z" k="20" />
+<hkern u1="&#x203a;" u2="y" k="35" />
+<hkern u1="&#x203a;" u2="x" k="43" />
+<hkern u1="&#x203a;" u2="w" k="27" />
+<hkern u1="&#x203a;" u2="v" k="35" />
+<hkern u1="&#x203a;" u2="t" k="23" />
+<hkern u1="&#x203a;" u2="f" k="20" />
+<hkern u1="&#x203a;" u2="Z" k="20" />
+<hkern u1="&#x203a;" u2="Y" k="94" />
+<hkern u1="&#x203a;" u2="X" k="35" />
+<hkern u1="&#x203a;" u2="W" k="55" />
+<hkern u1="&#x203a;" u2="V" k="70" />
+<hkern u1="&#x203a;" u2="T" k="115" />
+<hkern u1="&#x203a;" u2="J" k="23" />
+<hkern u1="&#x203a;" u2="&#x27;" k="35" />
+<hkern u1="&#x2122;" u2="&#xef;" k="-18" />
+<hkern u1="&#x2122;" u2="&#xee;" k="-51" />
+<hkern u1="&#x2122;" u2="&#xec;" k="-20" />
+<hkern u1="&#x2122;" u2="&#xc6;" k="55" />
+<hkern u1="&#x2122;" u2="J" k="29" />
+<hkern u1="&#x2122;" u2="A" k="49" />
+</font>
+</defs></svg> -162 -186q96 -25 148.5 -95.5t52.5 -158.5q0 -137 -95 -217t-243.5 -80t-308.5 110l94 170q117 -88 219 -88q49 0 81 24.5t32 74t-44 75t-111.5 25.5t-119.5 -25v154l150 178h-250zM1491 537h186v-172h95v-164 h-95v-201h-186v201h-367v157l301 506h226l-299 -499h139v172z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1077" d="M399 1022h312v-154q0 -84 -21.5 -126t-91.5 -113l-139 -144q-31 -37 -31 -95t33 -97t86 -39t89 46t44 122h326q-23 -205 -150 -321.5t-318.5 -116.5t-311.5 104.5t-120 288.5q0 82 20.5 122t29 57t38 52t39.5 43q49 51 93.5 94t58.5 71t14 83v123zM731 1284 q0 -76 -52 -128t-128 -52t-128 52t-52 128t52 128t128 52t128 -52t52 -128z" />
+<glyph unicode="&#xc0;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM918 1575h-293l-285 229l315 135z" />
+<glyph unicode="&#xc1;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM899 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xc2;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM580 1575h-252l231 323h383l232 -323h-252l-172 166z" />
+<glyph unicode="&#xc3;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM633 1681q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xc4;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM420 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM815 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5 t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xc5;" d="M606 1430q-61 66 -61 154.5t64.5 153t154.5 64.5t154.5 -64.5t64.5 -154.5t-65 -156l618 -1427h-340l-133 309h-600l-133 -309h-340zM764 1006l-180 -416h358zM692 1583q0 -29 21.5 -50.5t50.5 -21.5t50.5 21.5t21.5 50.5t-21.5 50.5t-50.5 21.5t-50.5 -21.5t-21.5 -50.5 z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2095" d="M1966 1432v-281h-715v-309h641v-269h-641v-292h738v-281h-1078v309h-405l-162 -309h-377l735 1432h1264zM911 598v504l-260 -504h260z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1499" d="M834 283q236 0 385 186l204 -211q-207 -233 -495 -268l-54 -99q133 -45 134 -155q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l77 176q45 -39 80 -39t54.5 18.5t19.5 46.5t-24.5 49.5t-58.5 21.5t-73 -19l84 160q-266 45 -436 244.5t-170 498.5t218 512t534 213 q352 0 590 -268l-199 -225q-152 188 -377 188q-180 0 -308 -117.5t-128 -317.5t121 -320.5t293 -120.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM827 1575h-292l-285 229l315 135z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM809 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM489 1575h-251l231 323h383l231 -323h-252l-172 166z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM348 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM743 1734.5q0 63.5 44 107.5t107.5 44t108 -44t44.5 -107.5t-44.5 -107.5t-108 -44 t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM502 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xcd;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM483 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xce;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM166 1577h-252l231 324h383l232 -324h-252l-172 166z" />
+<glyph unicode="&#xcf;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM-14 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM381 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1605" d="M53 573v273h152v586h506q383 0 587.5 -187.5t204.5 -521.5t-199.5 -528.5t-609.5 -194.5h-489v573h-152zM1064 393.5q118 110.5 118 321.5t-118 324.5t-362 113.5h-178v-307h480v-273h-480v-290h203q219 0 337 110.5z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1673" d="M1178 1432h319v-1432h-319l-682 897v-897h-320v1432h299l703 -922v922zM717 1679q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM1012 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM993 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM674 1575h-252l231 323h383l232 -323h-252 l-172 166z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM727 1679q-63 0 -61 -106h-217q0 154 66.5 242 t170.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM494 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44 t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM889 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1206" d="M604 924l326 333l176 -182l-322 -330l324 -333l-176 -183l-328 334l-325 -334l-181 183l328 333l-326 330l181 182z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1691" d="M1597 725q0 -315 -217 -527t-534 -212q-80 0 -162 16l-106 -231h-289l149 327q-160 98 -252 263t-92 364q0 315 217 527t535 212q98 0 205 -26l96 211h291l-148 -322q143 -100 225 -258t82 -344zM846 1186q-178 0 -301 -135.5t-123 -338t143 -335.5l367 799 q-47 10 -86 10zM1149 398q123 134 123 320.5t-115 321.5l-352 -774q12 -2 41 -2q180 0 303 134z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM932 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xda;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM915 1579h-292l260 363l317 -134 \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.ttf b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.ttf
new file mode 100644
index 00000000..a1df9e56
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.ttf
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.woff b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.woff
new file mode 100644
index 00000000..381aedcd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-bold.woff
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.eot b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.eot
new file mode 100644
index 00000000..baf70329
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.eot
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.svg b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.svg
new file mode 100644
index 00000000..6bc82bd7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.svg
@@ -0,0 +1,1365 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="montserratregular" horiz-adv-x="561" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="682" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="0" />
+<glyph unicode="&#xd;" horiz-adv-x="681" />
+<glyph unicode=" " />
+<glyph unicode="!" horiz-adv-x="604" d="M160 1466h286v-264l-61 -739h-164l-61 739v264zM197 29q-45 45 -45 107.5t45 107.5t107.5 45t107.5 -45t45 -107.5t-45 -107.5t-107.5 -45t-107.5 45z" />
+<glyph unicode="&#x22;" horiz-adv-x="765" d="M158 928v504h159v-504h-159zM449 928v504h159v-504h-159z" />
+<glyph unicode="#" horiz-adv-x="1505" d="M1374 893h-221l-59 -340h252l-46 -225h-243l-58 -328h-227l57 328h-301l-57 -328h-229l57 328h-211l45 225h205l59 340h-233l45 225h227l60 348h227l-59 -348h301l59 348h229l-63 -348h229zM928 893h-301l-62 -340h301z" />
+<glyph unicode="$" horiz-adv-x="1267" d="M580 -147v149q-281 29 -504 223l149 178q172 -150 355 -178v398q-231 55 -339 145t-108 267t124 290t323 123v102h131v-104q225 -16 426 -154l-133 -188q-135 96 -293 119v-385h6q236 -55 346.5 -149.5t110.5 -273.5t-127 -292t-336 -123v-147h-131zM866.5 276.5 q57.5 47.5 57.5 119t-45 113.5t-168 79v-369q98 10 155.5 57.5zM435 1174.5q-52 -46.5 -52 -115t41 -108.5t156 -77v355q-93 -8 -145 -54.5z" />
+<glyph unicode="%" horiz-adv-x="1609" d="M709 1141q0 -135 -89.5 -231.5t-221.5 -96.5t-220 95.5t-88 230.5t89 231t221 96t220.5 -95t88.5 -230zM1454 1432l-1048 -1432h-265l1049 1432h264zM516 1136.5q0 61.5 -35 103.5t-85 42t-82.5 -42t-32.5 -103.5t34.5 -103.5t85 -42t83 42t32.5 103.5zM1522 311 q0 -135 -89.5 -231t-221.5 -96t-220 95t-88 230t89 231.5t221.5 96.5t220.5 -95.5t88 -230.5zM1333 303.5q0 61.5 -34.5 103.5t-85 42t-83 -42t-32.5 -103.5t34.5 -103.5t85 -42t83 42t32.5 103.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1421" d="M584 -16q-201 0 -342.5 111.5t-141.5 305.5q0 231 336 412q-84 96 -117.5 157.5t-33.5 155.5q0 164 120.5 252t284.5 88t278.5 -84t114.5 -235q0 -203 -327 -383q164 -201 266 -307q63 94 98 219l168 -119q-53 -141 -121 -248q82 -84 209 -203l-153 -143l-189 187 q-180 -166 -450 -166zM405.5 240.5q77.5 -58.5 206.5 -58.5t275 119q-207 217 -328 365q-231 -125 -231 -275q0 -92 77.5 -150.5zM566.5 1241q-54.5 -43 -54.5 -100.5t27.5 -103.5t95.5 -128q231 115 231 213q0 82 -54 122t-122.5 40t-123 -43z" />
+<glyph unicode="'" horiz-adv-x="475" d="M158 928v504h159v-504h-159z" />
+<glyph unicode="(" horiz-adv-x="679" d="M330 638.5q0 -235.5 82 -490t200 -420.5h-243q-100 139 -183.5 397t-83.5 514t83 514t184 397h243q-119 -166 -200.5 -421t-81.5 -490.5z" />
+<glyph unicode=")" horiz-adv-x="679" d="M350 638.5q0 235.5 -82 490.5t-200 421h243q100 -139 183.5 -397t83.5 -514t-83 -514t-184 -397h-243q119 166 200.5 420.5t81.5 490z" />
+<glyph unicode="*" horiz-adv-x="884" d="M690 881l-194 131l16 -234h-139l16 236l-194 -131l-70 118l209 105l-209 102l70 121l192 -129l-14 232h139l-14 -232l192 127l70 -119l-211 -102l211 -105z" />
+<glyph unicode="+" horiz-adv-x="1163" d="M489 307v389h-391v193h391v385h185v-385h391v-193h-391v-389h-185z" />
+<glyph unicode="," horiz-adv-x="575" d="M135 133q0 66 45 110t106.5 44t107.5 -44t46 -105.5t-55 -149.5l-123 -203h-119l76 213q-84 39 -84 135z" />
+<glyph unicode="-" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="." horiz-adv-x="573" d="M135 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="/" horiz-adv-x="1202" d="M944 1661h205l-887 -1901h-205z" />
+<glyph unicode="0" horiz-adv-x="1409" d="M354 725q0 -240 85 -387.5t265.5 -147.5t263.5 146.5t83 388.5t-83 388.5t-263.5 146.5t-265.5 -147.5t-85 -387.5zM121 725q0 338 145.5 539.5t438 201.5t438 -201.5t145.5 -539.5t-145.5 -539.5t-438 -201.5t-438 201.5t-145.5 539.5z" />
+<glyph unicode="1" horiz-adv-x="780" d="M59 1432h521v-1432h-230v1217h-291v215z" />
+<glyph unicode="2" horiz-adv-x="1206" d="M759.5 872q61.5 84 61.5 170t-65.5 146.5t-165.5 60.5q-176 0 -293 -180l-195 113q94 141 208 212.5t293 71.5t314.5 -113.5t135.5 -310.5q0 -111 -57.5 -211t-211.5 -258l-335 -342h649v-231h-979v205l434 436q145 147 206.5 231z" />
+<glyph unicode="3" horiz-adv-x="1183" d="M158 1217v215h837v-189l-346 -387q197 -6 307.5 -124t110.5 -281q0 -219 -148.5 -344t-382 -125t-456.5 149l102 195q176 -123 369 -123q125 0 206 58t81 168t-90.5 175.5t-249.5 65.5q-80 0 -154 -23v184l332 386h-518z" />
+<glyph unicode="4" horiz-adv-x="1171" d="M690 580v262h230v-262h172v-220h-172v-360h-230v360h-614v213l526 859h264l-518 -852h342z" />
+<glyph unicode="5" horiz-adv-x="1185" d="M995 1434v-220h-604v-352q90 49 205 49q201 0 346 -120.5t145 -327.5t-151.5 -343t-372.5 -136q-289 0 -461 192l129 176q16 -16 44 -38.5t114 -60.5t188.5 -38t186.5 61.5t84 179t-89 182t-225.5 64.5t-259.5 -67l-102 110v689h823z" />
+<glyph unicode="6" horiz-adv-x="1269" d="M725 1241q-190 0 -280.5 -129t-92.5 -348q51 57 147.5 107.5t213.5 50.5q193 0 322.5 -128t129.5 -340t-140 -341t-353 -129q-344 0 -475 307q-74 176 -74 397t47 368.5t129 233.5q160 168 392.5 168t420.5 -145l-121 -178q-47 41 -126 73.5t-140 32.5zM474 640 q-83 -69 -83 -178.5t80 -188t201 -78.5t200.5 70.5t79.5 180t-73.5 186.5t-197.5 77t-207 -69z" />
+<glyph unicode="7" horiz-adv-x="1159" d="M94 1020v412h1008v-215l-606 -1217h-267l592 1212h-508v-192h-219z" />
+<glyph unicode="8" horiz-adv-x="1302" d="M651 1460q207 0 344.5 -108.5t137.5 -273.5t-154 -292q207 -131 207 -368q0 -184 -147.5 -309t-387 -125t-387 124.5t-147.5 309.5q0 238 207 368q-154 127 -154 292t137 273.5t344 108.5zM651.5 193q106.5 0 200.5 60t94 173t-90 174.5t-204.5 61.5t-205 -61.5 t-90.5 -174.5t94.5 -173t201 -60zM651.5 842q104.5 0 181 62.5t76.5 153.5t-76.5 152.5t-181 61.5t-181.5 -61.5t-77 -152.5t77 -153.5t181.5 -62.5z" />
+<glyph unicode="9" horiz-adv-x="1267" d="M545 201q190 0 280 129t93 348q-51 -57 -147.5 -107.5t-213.5 -50.5q-193 0 -323 128t-130 340t140.5 341t353.5 129q344 0 475 -307q74 -176 74 -397.5t-47 -368.5t-129 -233q-160 -168 -392.5 -168t-420.5 145l121 178q47 -41 126 -73.5t140 -32.5zM796 801.5 q83 68.5 83 178.5t-80 188.5t-200 78.5t-197.5 -70.5t-77.5 -181t70.5 -186.5t194.5 -76t207 68.5z" />
+<glyph unicode=":" horiz-adv-x="600" d="M147 137.5q0 63.5 44.5 107.5t107.5 44t108.5 -44t45.5 -107.5t-45.5 -108.5t-108.5 -45t-107.5 45t-44.5 108.5zM147 638.5q0 63.5 44.5 108t107.5 44.5t108.5 -44.5t45.5 -108t-45.5 -108.5t-108.5 -45t-107.5 45t-44.5 108.5z" />
+<glyph unicode=";" horiz-adv-x="606" d="M150 135q0 66 45 110t107.5 44t108.5 -44t46 -103.5t-56 -153.5l-125 -203h-118l75 213q-83 43 -83 137zM150 638.5q0 63.5 44 108t107.5 44.5t108.5 -44.5t45 -108t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1212" d="M92 684v258l965 447v-234l-721 -326v-22l721 -334v-233z" />
+<glyph unicode="=" horiz-adv-x="1277" d="M123 1081h1032v-192h-1032v192zM123 696h1032v-192h-1032v192z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1212" d="M1120 942v-258l-964 -444v233l721 334v22l-721 326v234z" />
+<glyph unicode="?" horiz-adv-x="1040" d="M618 444h-231v125q0 82 19.5 122t85.5 106l149 149q47 51 47 127t-49 126t-127 50t-130 -48t-60 -128h-248q20 182 142 285.5t304 103.5t297 -99t115 -278q0 -123 -68 -204q-39 -49 -59.5 -69.5t-54 -52.5t-57 -55.5t-38.5 -39.5q-37 -45 -37 -127v-93zM395 34 q-47 44 -47 106.5t46 107.5t110.5 45t112 -44t47.5 -106.5t-46.5 -107.5t-111 -45t-111.5 44z" />
+<glyph unicode="@" horiz-adv-x="1851" d="M913 -258q-344 0 -576.5 229.5t-232.5 573.5t244 588.5t589 244.5t581.5 -244.5t236.5 -596.5q0 -221 -84 -357.5t-223 -136.5q-100 0 -159.5 68.5t-63.5 195.5q-115 -264 -367 -264q-176 0 -310 141.5t-134 358.5t127 364.5t336 147.5q94 0 178 -49.5t121 -116.5v137 h196v-715q0 -143 113 -143q63 0 115.5 93t52.5 245q0 328 -198 555t-510 227t-531 -219t-219 -524t206.5 -509t511.5 -204q246 0 377 123l45 -76q-72 -61 -190.5 -99t-231.5 -38zM1100 770q-78 86 -203 86t-200.5 -88t-75.5 -216t74.5 -223.5t203.5 -95.5t204 93.5t75 225.5 t-78 218z" />
+<glyph unicode="A" horiz-adv-x="1519" d="M401 326l-143 -326h-258l631 1432h258l631 -1432h-258l-144 326h-717zM1020 549l-260 590l-260 -590h520z" />
+<glyph unicode="B" horiz-adv-x="1445" d="M825 0h-626v1432h557q145 0 250.5 -35t156.5 -94q98 -111 99 -250q0 -168 -107 -250q-39 -29 -53.5 -36t-50.5 -24q133 -29 211.5 -120t78.5 -226q0 -150 -102 -264q-121 -133 -414 -133zM440 838h308q262 0 262 178q0 102 -63.5 147t-196.5 45h-310v-370zM440 223h379 q133 0 204 42t71 159q0 190 -306 190h-348v-391z" />
+<glyph unicode="C" horiz-adv-x="1507" d="M852 219q125 0 215 42t188 134l156 -159q-227 -252 -551.5 -252t-539 208.5t-214.5 528t218.5 532.5t551 213t556.5 -245l-154 -168q-102 98 -193.5 137t-214.5 39q-217 0 -364.5 -140.5t-147.5 -358.5t146.5 -364.5t347.5 -146.5z" />
+<glyph unicode="D" horiz-adv-x="1601" d="M1282 1244.5q207 -187.5 207 -521.5t-201 -528.5t-614 -194.5h-475v1432h491q385 0 592 -187.5zM1245 717q0 492 -563 491h-242v-981h269q260 0 398 124t138 366z" />
+<glyph unicode="E" horiz-adv-x="1339" d="M1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="F" horiz-adv-x="1236" d="M440 1206v-393h635v-223h-635v-590h-241v1432h954l-2 -226h-711z" />
+<glyph unicode="G" horiz-adv-x="1550" d="M1190 696h242v-489q-203 -223 -580 -223q-317 0 -531.5 208.5t-214.5 528t218.5 532.5t527.5 213t514 -180l-129 -184q-84 72 -169 99.5t-198 27.5q-217 0 -364.5 -140.5t-147.5 -368.5t143.5 -366.5t347.5 -138.5t341 88v393z" />
+<glyph unicode="H" horiz-adv-x="1591" d="M199 0v1432h241v-621h711v621h242v-1432h-242v586h-711v-586h-241z" />
+<glyph unicode="I" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432z" />
+<glyph unicode="J" horiz-adv-x="1128" d="M246 1214v218h696v-945q0 -250 -127 -374.5t-326 -124.5q-250 0 -426 176l138 190q139 -133 272 -133q94 0 160.5 63.5t66.5 190.5v739h-454z" />
+<glyph unicode="K" horiz-adv-x="1441" d="M199 1432h241v-699l656 699h307l-576 -627l584 -805h-287l-475 627l-209 -226v-401h-241v1432z" />
+<glyph unicode="L" horiz-adv-x="1159" d="M199 0v1432h241v-1203h654v-229h-895z" />
+<glyph unicode="M" horiz-adv-x="2013" d="M440 0h-241v1432h376l433 -900l432 900h375v-1432h-242v1118l-500 -993h-135l-498 993v-1118z" />
+<glyph unicode="N" horiz-adv-x="1712" d="M1272 1432h241v-1432h-262l-811 1044v-1044h-241v1432h241l832 -1070v1070z" />
+<glyph unicode="O" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212z" />
+<glyph unicode="P" horiz-adv-x="1400" d="M1165.5 1307q149.5 -125 149.5 -385t-152.5 -381t-468.5 -121h-254v-420h-241v1432h491q326 0 475.5 -125zM994.5 716q72.5 77 72.5 225.5t-92 209.5t-289 61h-246v-573h281q201 0 273.5 77z" />
+<glyph unicode="Q" horiz-adv-x="1720" d="M891 -12l-31 -2q-319 0 -536.5 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -527q0 -240 -129 -425t-344 -267q70 -92 176 -92q78 0 152.5 41t113.5 106l137 -190q-178 -188 -407 -189q-131 0 -252 74t-170 203zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5 t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5z" />
+<glyph unicode="R" horiz-adv-x="1490" d="M1341 967q0 -354 -309 -447l375 -520h-307l-342 481h-318v-481h-241v1432h532q328 0 469 -110.5t141 -354.5zM1020 763.5q74 63.5 74 204t-76 192.5t-270 52h-308v-512h301q205 0 279 63.5z" />
+<glyph unicode="S" horiz-adv-x="1290" d="M458.5 1200q-67.5 -43 -67.5 -130t67.5 -133t288 -99.5t332 -149.5t111.5 -283.5t-141.5 -304t-370.5 -116.5q-336 0 -596 231l151 182q217 -188 451 -188q117 0 185.5 50t68.5 133t-64.5 129t-222 84t-239.5 70t-146 83q-127 96 -127 294.5t144.5 306t357.5 107.5 q137 0 272.5 -45t233.5 -127l-129 -182q-63 57 -172 94t-214.5 37t-173 -43z" />
+<glyph unicode="T" horiz-adv-x="1236" d="M739 1210v-1210h-241v1210h-435v222h1111v-222h-435z" />
+<glyph unicode="U" horiz-adv-x="1572" d="M786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5z" />
+<glyph unicode="V" horiz-adv-x="1433" d="M852 0h-270l-576 1432h270l441 -1070l440 1070h270z" />
+<glyph unicode="W" horiz-adv-x="2146" d="M645 401l320 1031h217l319 -1031l361 1031h260l-500 -1432h-240l-301 981h-16l-301 -981h-240l-499 1432h260z" />
+<glyph unicode="X" horiz-adv-x="1378" d="M1047 0l-353 539h-10l-352 -539h-301l491 735l-456 697h299l319 -484h10l320 484h299l-457 -697l492 -735h-301z" />
+<glyph unicode="Y" horiz-adv-x="1277" d="M762 0h-246v565l-532 867h264l391 -652l391 652h264l-532 -867v-565z" />
+<glyph unicode="Z" horiz-adv-x="1382" d="M930 1210h-807v222h1143v-189l-832 -1014v-6h844v-223h-1182v186l834 1018v6z" />
+<glyph unicode="[" horiz-adv-x="727" d="M643 1550v-172h-283v-1493h283v-172h-463v1837h463z" />
+<glyph unicode="\" horiz-adv-x="1069" d="M57 1550h205l746 -1550h-205z" />
+<glyph unicode="]" horiz-adv-x="727" d="M84 1378v172h463v-1837h-463v172h283v1493h-283z" />
+<glyph unicode="^" horiz-adv-x="806" d="M559 1520l-158 170l-157 -170h-199l250 319h209l248 -319h-193z" />
+<glyph unicode="_" horiz-adv-x="1478" d="M147 -283v117h1184v-117h-1184z" />
+<glyph unicode="`" horiz-adv-x="1705" d="M1106 1229h-209l-250 196l242 101z" />
+<glyph unicode="a" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166z" />
+<glyph unicode="b" horiz-adv-x="1376" d="M1124.5 954.5q155.5 -151.5 155.5 -403.5t-154.5 -409.5t-360.5 -157.5t-370 180v-164h-229v1520h229v-621q135 207 354.5 207t375 -151.5zM485.5 287.5q94.5 -99.5 229.5 -99.5t235.5 98.5t100.5 255t-98.5 260t-235.5 103.5t-231.5 -103.5t-94.5 -259t94.5 -255z" />
+<glyph unicode="c" horiz-adv-x="1179" d="M649 -16q-227 0 -391 154.5t-164 404.5t171 406.5t417 156.5t416 -170l-135 -166q-141 123 -284.5 123t-249 -95.5t-105.5 -246t104 -254.5t257 -104t288 139l135 -148q-199 -200 -459 -200z" />
+<glyph unicode="d" horiz-adv-x="1376" d="M249.5 139.5q-153.5 155.5 -153.5 409.5t158 405.5t376 151.5t351 -184v598h229v-1520h-229v164q-127 -180 -371 -180q-207 0 -360.5 155.5zM426 284.5q100 -98.5 235.5 -98.5t229.5 99.5t94 255t-94 260t-231.5 104.5t-235.5 -104.5t-98 -261t100 -255z" />
+<glyph unicode="e" horiz-adv-x="1265" d="M1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5z" />
+<glyph unicode="f" horiz-adv-x="790" d="M449 1180v-90h286v-185h-286v-905h-230v905h-137v185h137v84q0 172 103.5 273t250 101t267.5 -108l-95 -162q-68 72 -141.5 72t-114 -46t-40.5 -124z" />
+<glyph unicode="g" horiz-adv-x="1339" d="M1174 1090v-951q0 -289 -157 -433t-402.5 -144t-444.5 153l109 174q160 -121 322.5 -120.5t257.5 84.5t95 268v139q-51 -96 -146 -153.5t-214 -57.5q-217 0 -356.5 151.5t-139.5 377t139.5 377t355.5 151.5t351 -178v162h230zM406.5 355.5q82.5 -97.5 223 -97.5t227.5 94 t87 234.5t-88 238t-227.5 97.5t-222 -100.5t-82.5 -234.5t82.5 -231.5z" />
+<glyph unicode="h" horiz-adv-x="1323" d="M395 590v-590h-229v1518h229v-627q49 100 148.5 157.5t214.5 57.5q184 0 297.5 -112.5t113.5 -325.5v-668h-229v598q0 301 -250 301q-119 0 -207 -78.5t-88 -230.5z" />
+<glyph unicode="i" d="M395 0h-229v1090h229v-1090zM137 1409q0 59 43 102t102.5 43t102.5 -43t43 -102t-43 -102t-102.5 -43t-102.5 43t-43 102z" />
+<glyph unicode="j" d="M166 -51v1141h229v-1149q0 -172 -103.5 -273.5t-249.5 -101.5t-267 108l106 172q70 -68 140.5 -67.5t107.5 45.5t37 125zM133 1409q0 59 43 102t102.5 43t102.5 -43t43 -102t-43 -102t-102.5 -43t-102.5 43t-43 102z" />
+<glyph unicode="k" horiz-adv-x="1189" d="M395 0h-229v1520h229v-893l443 463h295l-414 -433l444 -657h-278l-324 477l-166 -168v-309z" />
+<glyph unicode="l" d="M395 0h-229v1520h229v-1520z" />
+<glyph unicode="m" horiz-adv-x="2076" d="M395 590v-590h-229v1090h229v-199q49 100 148.5 157.5t214.5 57.5q258 0 350 -213q162 213 403 213q184 0 298 -112.5t114 -325.5v-668h-229v598q0 301 -250 301q-117 0 -204 -74.5t-91 -218.5v-606h-229v598q0 156 -55.5 228.5t-174.5 72.5t-207 -78.5t-88 -230.5z" />
+<glyph unicode="n" horiz-adv-x="1323" d="M395 590v-590h-229v1090h229v-199q55 100 152.5 157.5t210.5 57.5q184 0 297.5 -112.5t113.5 -325.5v-668h-229v598q0 301 -250 301q-119 0 -207 -78.5t-88 -230.5z" />
+<glyph unicode="o" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5z" />
+<glyph unicode="p" horiz-adv-x="1376" d="M1124.5 954.5q155.5 -151.5 155.5 -403.5t-154.5 -409.5t-360.5 -157.5t-370 180v-561h-229v1487h229v-191q135 207 354.5 207t375 -151.5zM485.5 287.5q94.5 -99.5 229.5 -99.5t235.5 98.5t100.5 255t-98.5 260t-235.5 103.5t-231.5 -103.5t-94.5 -259t94.5 -255z" />
+<glyph unicode="q" horiz-adv-x="1376" d="M251 141.5q-155 157.5 -155 409.5t156 403.5t375 151.5t354 -207v191h229v-1487h-229v561q-164 -180 -369.5 -180t-360.5 157.5zM426 286.5q100 -98.5 235.5 -98.5t229.5 99.5t94 255t-94 259t-231.5 103.5t-235.5 -103.5t-98 -260t100 -255z" />
+<glyph unicode="r" horiz-adv-x="813" d="M737 874q-170 0 -256 -110.5t-86 -296.5v-467h-229v1090h229v-220q55 102 150.5 168t202.5 68l2 -232h-13z" />
+<glyph unicode="s" horiz-adv-x="1036" d="M829.5 77q-112.5 -93 -288.5 -93q-119 0 -247 43t-226 120l110 179q190 -143 369 -144q78 0 123 36t45 91q0 82 -217 148q-16 6 -25 8q-340 92 -340 307q0 152 118 243t306 91t356 -111l-86 -170q-133 88 -288 88q-82 0 -133.5 -29.5t-51.5 -88.5q0 -53 54 -78 q37 -18 103.5 -34.5t117.5 -33t99 -37t103 -57.5q111 -74 111 -229.5t-112.5 -248.5z" />
+<glyph unicode="t" horiz-adv-x="856" d="M449 905v-553q0 -78 40.5 -124t114.5 -46t141 72l95 -162q-121 -109 -267.5 -108.5t-250 101.5t-103.5 273v547h-137v185h137v342h230v-342h286v-185h-286z" />
+<glyph unicode="u" horiz-adv-x="1323" d="M928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231z" />
+<glyph unicode="v" horiz-adv-x="1171" d="M455 0l-439 1090h238l332 -824l332 824h237l-438 -1090h-262z" />
+<glyph unicode="w" horiz-adv-x="1867" d="M676 0h-262l-377 1090h237l271 -824l270 824h238l270 -824l270 824h238l-377 -1090h-262l-258 745z" />
+<glyph unicode="x" horiz-adv-x="1142" d="M340 1090l233 -359l242 359h272l-380 -533l397 -557h-283l-260 362l-254 -362h-268l387 555l-367 535h281z" />
+<glyph unicode="y" horiz-adv-x="1175" d="M303 -434q-150 0 -270 108l104 187q72 -68 148.5 -68t125 55.5t48.5 120.5q0 29 -441 1121h246l326 -803l325 803h246l-528 -1295q-47 -106 -135.5 -167.5t-194.5 -61.5z" />
+<glyph unicode="z" horiz-adv-x="1107" d="M131 889v196h852v-206l-612 -680h645v-199h-926v223l596 666h-555z" />
+<glyph unicode="{" horiz-adv-x="688" d="M565 1362q-127 0 -127 -117v-444q0 -143 -135 -168q135 -23 135 -166v-481q0 -53 30 -74t114 -21v-190h-70q-279 0 -279 270v443q0 68 -24.5 95.5t-77.5 27.5h-49v190h49q53 0 77.5 28.5t24.5 98.5v426q0 270 279 270h70v-190q-7 2 -17 2z" />
+<glyph unicode="|" horiz-adv-x="526" d="M178 -313v1915h170v-1915h-170z" />
+<glyph unicode="}" horiz-adv-x="688" d="M176 -299h-70v190q84 0 114 20.5t30 74.5v481q0 143 135 166q-135 25 -135 168v444q0 63 -34 91t-66 28h-7l-37 -4v190h70q279 0 279 -270v-426q0 -70 24.5 -98.5t77.5 -28.5h49v-190h-49q-53 0 -77.5 -28t-24.5 -95v-443q0 -270 -279 -270z" />
+<glyph unicode="~" horiz-adv-x="1157" d="M377 758q-82 0 -96 -133l-179 51q12 143 86 216t191 73q92 0 248 -84q102 -53 151 -54q82 0 96 134l181 -52q-12 -143 -87 -217t-192 -74q-88 0 -248 87q-102 53 -151 53z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa1;" horiz-adv-x="602" d="M442 -16h-284v258l61 739h164l59 -739v-258zM195 1200q-45 45 -45 107.5t45 107.5t107.5 45t107.5 -45t45 -107.5t-45 -107.5t-107.5 -45t-107.5 45z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1200" d="M592 -250v238q-207 23 -349.5 173t-142.5 379.5t141.5 380t350.5 179.5v243h131v-239q231 -18 381 -168l-135 -166q-125 106 -246 119v-694q135 14 256 137l135 -148q-170 -174 -391 -196v-238h-131zM404.5 765q-74.5 -89 -74.5 -215t72.5 -220t189.5 -125v676 q-113 -27 -187.5 -116z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1261" d="M539 1057v-269h342v-200h-342v-373h610v-215h-1020v215h168v373h-176v200h176v256q0 248 125 362t328 114q268 0 403 -230l-170 -135q-84 139 -217 139q-98 0 -162.5 -56t-64.5 -181z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1546" d="M307 311q-109 147 -108.5 336t104.5 332l-180 180l145 144l185 -183q139 90 317 90t324 -92l184 185l145 -144l-182 -182q104 -147 104.5 -330.5t-110.5 -333.5l188 -186l-143 -143l-195 190q-137 -86 -313 -86t-313 86l-193 -190l-143 143zM772 305q143 0 237.5 96.5 t94.5 248t-94.5 246.5t-237.5 95t-237.5 -95t-94.5 -246.5t94.5 -248t237.5 -96.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1464" d="M209 434h389v111l-8 12h-381v180h274l-411 695h264l387 -658h14l402 658h260l-426 -695h268v-180h-379l-6 -12v-111h385v-180h-387v-254h-256v254h-389v180z" />
+<glyph unicode="&#xa6;" horiz-adv-x="565" d="M186 881v669h193v-669h-193zM186 -49v670h193v-670h-193z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1249" d="M297 649q0 -96 120 -159.5t306 -63.5q106 0 177 45t71 111.5t-47 109.5t-121 66q-147 43 -261 43t-179.5 -40t-65.5 -112zM468 1284q-54 -43 -54 -111.5t59 -109.5t269 -91t314.5 -130t104.5 -230q0 -102 -65.5 -185t-204.5 -116q94 -35 141 -106.5t47 -147.5 q0 -141 -119.5 -240.5t-320.5 -99.5q-293 0 -518 201l131 156q201 -166 393 -166q219 0 219 139q0 66 -68.5 109t-268 101t-311.5 141t-112 243q0 98 68 180t188 105q-166 66 -165.5 229.5t120 264t306.5 100.5q133 0 233 -33t205 -109l-117 -164q-152 113 -326 113 q-94 0 -148 -43z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1249" d="M376 1268q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM756 1268q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1194 459q-139 -145 -317.5 -145.5 t-297 111.5t-118.5 294t123 294.5t305 112.5t299 -122l-98 -121q-106 90 -209 90t-179.5 -68.5t-76.5 -178.5t76.5 -185.5t188 -75.5t206.5 100z" />
+<glyph unicode="&#xaa;" horiz-adv-x="720" d="M567 954h-96v68q-63 -76 -154.5 -76t-143.5 45t-52 119q0 150 203 150h139v18q0 100 -113 100q-68 0 -145 -51l-47 68q90 72 194 71q215 0 215 -186v-326zM461 1143v43h-119q-115 0 -115 -74q0 -37 29 -56.5t79 -19.5t88 30t38 77z" />
+<glyph unicode="&#xab;" horiz-adv-x="1120" d="M580 852l-236 -360l236 -361h-222l-243 361l243 360h222zM985 852l-235 -360l235 -361h-221l-244 361l244 360h221z" />
+<glyph unicode="&#xac;" horiz-adv-x="1695" d="M137 911h1370v-731h-168v551h-1202v180z" />
+<glyph unicode="&#xad;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#xae;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1210 860q0 -199 -174 -250l213 -288h-172 l-192 268h-176v-268h-140v800h301q182 0 261 -62.5t79 -199.5zM1031 747.5q42 34.5 42 113.5t-43 109.5t-151 30.5h-170v-288h165q115 0 157 34.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="868" d="M750 1407v-178h-629v178h629z" />
+<glyph unicode="&#xb0;" horiz-adv-x="851" d="M426 1464q131 0 223 -92t92 -223t-92 -222t-223 -91t-223 91t-92 222t92 223t223 92zM277.5 1001.5q60.5 -61.5 147.5 -61.5t147.5 61.5t60.5 147.5t-60.5 146.5t-147.5 60.5t-147.5 -60.5t-60.5 -146.5t60.5 -147.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1163" d="M489 565v277h-391v192h391v273h185v-273h391v-192h-391v-277h-185zM98 451h967v-172h-967v172z" />
+<glyph unicode="&#xb2;" horiz-adv-x="858" d="M519 1120q36 49 36 99.5t-38 85t-97 34.5q-104 0 -172 -104l-113 65q109 166 287 166q111 0 189.5 -66.5t78.5 -180.5q0 -63 -33.5 -122t-124.5 -153l-194 -199h379v-135h-572v119l252 256q86 86 122 135z" />
+<glyph unicode="&#xb3;" horiz-adv-x="811" d="M158 1305v127h495v-113l-204 -229q117 -2 181 -73t64 -183.5t-87 -186.5t-226 -74t-270 89l61 114q100 -72 217 -71q74 0 122 33.5t48 99t-53 104.5t-124 39t-116 -14v108l197 230h-305z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1705" d="M901 1286h-209l217 297l242 -100z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1314" d="M176 -397v1487h230v-598q0 -301 249 -302q119 0 207 79t88 231v590h230v-1090h-230v199q-55 -100 -152.5 -157.5t-204 -57.5t-187.5 34v-415h-230z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1374" d="M72 1139q0 174 120.5 292.5t366.5 118.5h612v-1779h-190v1585h-229v-1585h-185v981q-49 -6 -94 -7q-113 0 -196.5 39t-124.5 101q-80 119 -80 254z" />
+<glyph unicode="&#xb7;" horiz-adv-x="595" d="M145 653.5q0 63.5 44 107.5t107.5 44t109 -44t45.5 -107.5t-45.5 -108.5t-109 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="575" d="M481 -240q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59.5 25.5t-60 -10l73 139h146l-41 -78q143 -19 143 -162z" />
+<glyph unicode="&#xb9;" horiz-adv-x="548" d="M84 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xba;" horiz-adv-x="774" d="M387 1032q72 0 118 47t46 122t-46 122t-118 47t-118 -47t-46 -122t46 -122t118 -47zM387 934q-117 0 -194.5 76.5t-77.5 189.5t77.5 189.5t194.5 76.5t194.5 -76.5t77.5 -189.5t-77.5 -189.5t-194.5 -76.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1120" d="M776 492l-235 360h221l244 -360l-244 -361h-221zM371 492l-236 360h221l244 -360l-244 -361h-221z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1767" d="M1210 1550h148l-764 -1566h-148zM1452 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM72 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1900" d="M1276 1550h147l-764 -1566h-147zM1613 510q36 49 36 99t-38 85t-98 35q-100 0 -172 -104l-110 65q109 166 285 166q111 0 190.5 -66.5t79.5 -181.5q0 -63 -34 -122.5t-124 -151.5l-196 -199h378v-135h-571v119l254 256q84 86 120 135zM72 1432h303v-838h-133v713h-170 v125z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1845" d="M1294 1550h148l-764 -1566h-148zM1536 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM129 1305v127h496v-113l-205 -229q117 -2 181.5 -73t64.5 -183.5t-87 -186.5t-226.5 -74t-270.5 89l61 114q100 -72 217 -71q74 0 122 33.5 t48 99t-53 104.5t-123.5 39t-115.5 -14v108l196 230h-305z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1040" d="M422 1004h231v-125q0 -82 -19.5 -122t-84.5 -106l-150 -149q-47 -51 -47 -127t49.5 -126t127 -50t130 48t60.5 128h248q-20 -182 -142.5 -285.5t-304.5 -103.5t-296.5 99t-114.5 277q0 123 67 205q39 49 59.5 69.5t54.5 52.5t57.5 55.5t37.5 41.5q37 43 37 125v93z M645 1414q47 -44 47 -106.5t-46 -107.5t-110.5 -45t-111.5 44t-47 106.5t46 107.5t110.5 45t111.5 -44z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM860 1550h-209l-250 197l242 100z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1519" d="M401 326l-143 -326h-258l631 1432h258l631 -1432h-258l-144 326h-717zM1020 549l-260 590l-260 -590h520zM870 1552h-208l217 297l241 -100z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM633 1825h213l250 -275h-199l-158 115l-157 -115h-199z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM897 1544q-53 0 -148.5 48t-121.5 48q-68 0 -70 -90h-151q0 119 48 193t134 74q55 0 153.5 -48.5t128.5 -48.5q61 0 62 90h153q-6 -266 -188 -266z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM468 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM848 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1495" d="M903.5 1729.5q67.5 -64.5 67.5 -162t-97 -162.5l621 -1405h-266l-146 326h-686l-139 -326h-258l618 1407q-92 66 -92 162t66.5 160.5t155 64.5t156 -64.5zM987 549l-246 551l-243 -551h489zM829.5 1498q30.5 32 30.5 82t-30.5 82t-81 32t-82 -32t-31.5 -82t31.5 -82 t82 -32t81 32z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2129" d="M1995 1432v-226h-764v-393h686v-211h-686v-377h788v-225h-1052v326h-518l-175 -326h-297l750 1432h1268zM967 557v649h-60l-342 -649h402z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1507" d="M852 219q125 0 215 42t188 134l156 -159q-213 -238 -520 -250l-33 -64q143 -18 143 -162q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59 25.5t-60.5 -10l68 129q-281 35 -461.5 237.5t-180.5 507.5t218.5 518t551 213 t556.5 -245l-154 -168q-102 98 -193.5 137t-214.5 39q-217 0 -364.5 -140.5t-147.5 -358.5t146.5 -364.5t347.5 -146.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M862 1550h-209l-250 197l242 100zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005zM811 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M596 1825h213l250 -275h-199l-158 115l-157 -115h-199zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M425 1579q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM805 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcc;" horiz-adv-x="638" d="M428 1550h-209l-250 197l242 100zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xcd;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM420 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xce;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM236 1825h213l249 -275h-198l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xcf;" horiz-adv-x="638" d="M42 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM422 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1617" d="M53 602v215h162v615h492q385 0 591.5 -187.5t206.5 -521.5t-200.5 -528.5t-614.5 -194.5h-475v602h-162zM1262 717q0 492 -564 491h-241v-391h512v-215h-512v-375h268q260 0 398.5 124t138.5 366z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1712" d="M1272 1432h241v-1432h-262l-811 1044v-1044h-241v1432h241l832 -1070v1070zM1001 1544q-53 0 -148 48t-122 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1720" d="M1016 1550h-209l-250 197l242 100zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528 t-536.5 -212z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM897 1550h-209l217 297 l242 -100z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM750 1825h213l249 -275h-198 l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM1008 1544q-53 0 -148.5 48 t-122.5 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-6 -266 -188 -266z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1720" d="M570.5 1579q-35.5 37 -35.5 89t35.5 89t89 37t90 -36t36.5 -88t-36.5 -90t-90 -38t-89 37zM950 1579q-37 37 -37 89t37 89t89.5 37t89 -36t36.5 -88t-37.5 -90t-89 -38t-88.5 37zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5 t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1157" d="M580 907l348 350l129 -131l-346 -346l348 -350l-129 -131l-350 350l-351 -350l-131 131l351 350l-349 346l131 131z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1720" d="M1614 727q0 -317 -217 -529t-537 -212q-109 0 -207 24l-116 -250h-205l149 320q-174 94 -274.5 265t-100.5 382q0 315 217.5 527t536.5 212q125 0 248 -39l111 234h204l-145 -313q156 -98 246 -261t90 -360zM860 1245q-213 0 -359.5 -151.5t-146.5 -368.5 q0 -133 60.5 -248t165.5 -186l434 930q-74 24 -154 24zM1366 725q0 250 -188 408l-428 -916q57 -10 110 -10q213 0 359.5 151.5t146.5 366.5z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1572" d="M969 1550h-209l-250 197l242 100zM786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1572" d="M786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5zM852 1552h-209l217 297l242 -100z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1572" d="M786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5zM688 1825h213l250 -275h-199l-157 115l-158 -115h-199z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1572" d="M511 1579q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM891 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37zM786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5 v803h242v-793q0 -197 98 -311.5t266 -114.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1277" d="M762 0h-246v565l-532 867h264l391 -652l391 652h264l-532 -867v-565zM797 1520h-209l217 297l242 -101z" />
+<glyph unicode="&#xde;" horiz-adv-x="1404" d="M1315 756q0 -272 -162 -394t-479 -122h-234v-240h-241v1432h241v-181h230q645 1 645 -495zM985 537.5q82 78.5 82 224t-100.5 208t-300.5 62.5h-226v-573h260q203 0 285 78.5z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1333" d="M843.5 943q71.5 71 71.5 164t-54 160.5t-171 67.5q-156 0 -219 -96t-63 -285v-954h-242v934q0 147 13.5 207.5t30.5 114t41.5 91t63.5 78.5t86 66q111 59 258.5 59t248 -41t149.5 -108q92 -123 92 -266q0 -211 -213 -344q152 -16 227.5 -123t75.5 -246 q0 -193 -135 -307.5t-387 -114.5h-84v201h45q154 0 236.5 50t82.5 172t-81.5 180.5t-219.5 58.5q-47 0 -71 -3v191q147 22 218.5 93z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM786 1229h-208l-250 196l241 101z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM719 1229h-209l217 297l242 -101z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM489 1503h213l250 -274h-198l-158 114l-158 -114h-198z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM748 1223q-53 0 -148.5 48t-122.5 48q-68 0 -69 -90h-152q0 119 48 192.5t134 73.5q55 0 153.5 -48t129.5 -48q61 0 61 90h154q-6 -266 -188 -266z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM285 1356q0 53 35.5 89t89 36t90.5 -36t37 -89t-37 -90t-90.5 -37t-89 37t-35.5 90zM700.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89 -36t36.5 -89t-37.5 -90t-89 -37t-88 37z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM825 1407q0 -86 -67.5 -149.5t-155.5 -63.5t-154.5 63.5t-66.5 149.5 t66.5 150.5t154.5 64.5t155.5 -64.5t67.5 -150.5zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62t82 166zM684 1326q31 32 31 82t-31 82t-81 32t-82 -32t-32 -82t32 -82t82 -32t81 32z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1949" d="M1864 471h-813q2 -131 95 -211t222 -80q184 0 291 129l131 -143q-176 -182 -441.5 -182t-414.5 196q-164 -197 -436 -196q-172 0 -293 97t-121 257t117.5 235.5t322.5 75.5h297v49q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450.5 158t362.5 -152 q147 152 371.5 152t371 -134t146.5 -370v-131zM819 406v65h-258q-190 0 -229 -57q-18 -29 -19 -72q0 -80 61.5 -122t171 -42t191.5 62t82 166zM1550.5 842.5q-75.5 66.5 -192.5 66.5t-206 -69.5t-99 -190.5l581 -2q-8 129 -83.5 195.5z" />
+<glyph unicode="&#xe7;" horiz-adv-x="1181" d="M838 -240q0 -78 -63.5 -136t-161 -58t-171.5 45l54 117q39 -20 78.5 -20.5t62 23t22.5 56.5t-23.5 58.5t-59 25.5t-60.5 -10l68 127q-207 25 -347.5 175t-140.5 390t171 396.5t417 156.5t416 -170l-135 -166q-141 123 -284.5 123t-249 -95.5t-105.5 -246t103 -254.5 t257 -104t289 139l135 -148q-168 -168 -381 -194l-35 -68q144 -19 144 -162z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1265" d="M844 1229h-209l-250 196l242 101zM1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5 t-100 -207.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1265" d="M1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5zM770 1233h-209l217 297 l242 -100z" />
+<glyph unicode="&#xea;" horiz-adv-x="1265" d="M1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5zM543 1503h213l250 -274h-199 l-158 114l-157 -114h-199z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1265" d="M332 1356q0 53 37 89t89 36t89 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM747.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89.5 -36t37 -89t-37 -90t-89.5 -37t-89 37zM1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182 q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5z" />
+<glyph unicode="&#xec;" d="M410 1229h-209l-250 196l242 101zM166 1090h229v-1090h-229v1090z" />
+<glyph unicode="&#xed;" d="M389 1229h-192l217 287l225 -101zM166 1090h229v-1090h-229v1090z" />
+<glyph unicode="&#xee;" d="M166 1090h229v-1090h-229v1090zM184 1503h213l250 -274h-198l-158 114l-158 -114h-199z" />
+<glyph unicode="&#xef;" d="M-16 1356q0 53 36.5 89t89 36t89.5 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM399 1266q-37 37 -37 89t37 89t89.5 37t89 -36t36.5 -89t-36.5 -90t-89 -37t-89.5 37zM166 1090h229v-1090h-229v1090z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1220" d="M817 895q-78 129 -252 303l-190 -121l-117 111l193 123q-4 6 -150 127l195 112q74 -57 149 -129l174 111l121 -111l-180 -116q360 -391 360 -758q0 -252 -133 -407.5t-362.5 -155.5t-376 137t-146.5 353t143.5 354.5t346.5 138.5q145 0 221 -76zM404.5 269 q78.5 -85 206.5 -85t207 85t79 205t-79 206t-207 86t-206.5 -86t-78.5 -206t78.5 -205z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1323" d="M395 590v-590h-229v1090h229v-199q55 100 152.5 157.5t210.5 57.5q184 0 297.5 -112.5t113.5 -325.5v-668h-229v598q0 301 -250 301q-119 0 -207 -78.5t-88 -230.5zM829 1223q-53 0 -148 48t-122 48q-68 0 -70 -90h-151q0 119 48 192.5t134 73.5q55 0 153.5 -48 t129.5 -48q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1335" d="M809 1229h-209l-250 196l242 101zM667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5zM772 1229h-209l217 297l242 -101z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5zM563 1503h213l250 -274h-199l-157 114 l-158 -114h-199z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5zM819 1223q-53 0 -148.5 48t-121.5 48 q-68 0 -70 -90h-151q0 119 48 192.5t134 73.5q55 0 153.5 -48t129.5 -48q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1335" d="M344 1356q0 53 37 89t89 36t89 -36t37 -89t-38 -90t-90 -37t-88 37t-36 90zM760 1266q-37 37 -37 89t37 89t89 37t89 -36t37 -89t-37 -90t-89 -37t-89 37zM667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5z M667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1163" d="M430 432.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM430 1159.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM98 889h967v-193h-967v193z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1335" d="M668 -16q-57 0 -133 14l-99 -213h-205l131 281q-125 74 -196.5 200.5t-71.5 278.5q0 236 164 398.5t410 162.5q90 0 170 -25l90 193h205l-127 -270q111 -78 173 -198t62 -261q0 -236 -163.5 -398.5t-409.5 -162.5zM421 801.5q-97 -99.5 -97 -270.5t129 -273l297 635 q-35 8 -82 8q-150 0 -247 -99.5zM668 188q150 0 247 99.5t97 259.5t-101 256l-286 -613q14 -2 43 -2z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1323" d="M805 1229h-209l-250 196l242 101zM928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1323" d="M928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231zM717 1233h-209l217 297l242 -100z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1323" d="M928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231zM553 1503h213l250 -274h-199l-158 114l-157 -114h-199z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1323" d="M332 1356q0 53 37 89t89 36t89 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM747.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89.5 -36t37 -89t-37 -90t-89.5 -37t-89 37zM928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5 t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1175" d="M303 -434q-150 0 -270 108l104 187q72 -68 148.5 -68t125 55.5t48.5 120.5q0 29 -441 1121h246l326 -803l325 803h246l-528 -1295q-47 -106 -135.5 -167.5t-194.5 -61.5zM680 1286h-209l217 297l242 -100z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1376" d="M1132.5 946q147.5 -160 147.5 -404.5t-146.5 -401t-390.5 -156.5q-168 0 -292 106q-29 25 -41 41l-15 19v-547h-229v1917h229v-580q6 6 15.5 17.5t44 40t73.5 51.5q102 57 220 57q237 0 384.5 -160zM939 293.5q95 107.5 95 252t-94 252t-233.5 107.5t-227.5 -106.5 t-88 -254t88 -253t226.5 -105.5t233.5 107.5z" />
+<glyph unicode="&#xff;" horiz-adv-x="1175" d="M283 1356q0 53 36.5 89t89 36t89.5 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM698.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89 -36t36.5 -89t-36.5 -90t-89 -37t-89 37zM303 -434q-150 0 -270 108l104 187q72 -68 148.5 -68t125 55.5t48.5 120.5q0 29 -441 1121 h246l326 -803l325 803h246l-528 -1295q-47 -106 -135.5 -167.5t-194.5 -61.5z" />
+<glyph unicode="&#x152;" horiz-adv-x="2183" d="M2048 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1235q-309 0 -519 205t-210 511t209.5 511t519.5 205h1210zM371 717q0 -209 142 -357.5t347 -148.5h182v1010h-182q-207 0 -348 -147.5t-141 -356.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="2183" d="M2097 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -458 -182q-133 0 -250 55t-193 158q-166 -213 -454 -213q-246 0 -410 162.5t-164 398t164 398.5t410 163q287 0 454 -215q76 104 194 159.5t245 55.5q225 0 380.5 -134t155.5 -370 v-158zM667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM1243 625h625q0 137 -86 210.5t-212 73.5t-226.5 -76.5t-100.5 -207.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1380" d="M590 1503h213l250 -274h-199l-158 114l-157 -114h-199z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1062" d="M686 1513q-53 0 -148.5 48.5t-121.5 48.5q-68 0 -70 -90h-151q0 119 48 192.5t134 73.5q55 0 153.5 -48t128.5 -48q61 0 62 90h153q-6 -267 -188 -267z" />
+<glyph unicode="&#x2000;" horiz-adv-x="924" />
+<glyph unicode="&#x2001;" horiz-adv-x="1849" />
+<glyph unicode="&#x2002;" horiz-adv-x="924" />
+<glyph unicode="&#x2003;" horiz-adv-x="1849" />
+<glyph unicode="&#x2004;" horiz-adv-x="616" />
+<glyph unicode="&#x2005;" horiz-adv-x="462" />
+<glyph unicode="&#x2006;" horiz-adv-x="308" />
+<glyph unicode="&#x2007;" horiz-adv-x="308" />
+<glyph unicode="&#x2008;" horiz-adv-x="231" />
+<glyph unicode="&#x2009;" horiz-adv-x="369" />
+<glyph unicode="&#x200a;" horiz-adv-x="102" />
+<glyph unicode="&#x2010;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#x2011;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#x2012;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1101" d="M168 463v137h766v-137h-766z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1484" d="M168 465v135h1149v-135h-1149z" />
+<glyph unicode="&#x2018;" horiz-adv-x="442" d="M274 1268q57 -37 57.5 -99.5t-36.5 -98.5t-92.5 -36t-93 35t-37.5 91.5t37 109.5l120 174h125z" />
+<glyph unicode="&#x2019;" horiz-adv-x="444" d="M150 1200q-55 33 -55.5 97.5t36.5 100.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125z" />
+<glyph unicode="&#x201a;" horiz-adv-x="444" d="M150 10q-55 35 -55.5 98.5t36.5 99.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125z" />
+<glyph unicode="&#x201c;" horiz-adv-x="757" d="M274 1268q57 -37 57.5 -99.5t-36.5 -98.5t-92.5 -36t-93 35t-37.5 91.5t37 109.5l120 174h125zM588 1268q57 -37 57 -99.5t-37 -98.5t-92 -36t-93 35t-38 91.5t37 109.5l121 174h125z" />
+<glyph unicode="&#x201d;" horiz-adv-x="755" d="M150 1200q-55 33 -55.5 97.5t36.5 100.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125zM461 1200q-55 33 -55 97.5t36.5 100.5t92 36t93.5 -35t38 -91.5t-37 -109.5l-121 -174h-125z" />
+<glyph unicode="&#x201e;" horiz-adv-x="755" d="M150 10q-55 35 -55.5 98.5t36.5 99.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125zM461 10q-55 35 -55 98.5t36.5 99.5t92 36t93.5 -35t38 -91.5t-37 -109.5l-121 -174h-125z" />
+<glyph unicode="&#x2022;" horiz-adv-x="876" d="M174 647.5q0 108.5 78 186t186.5 77.5t186 -77.5t77.5 -186t-77.5 -186.5t-186 -78t-186.5 78t-78 186.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1429" d="M135 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM563 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM991 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5 t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="369" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M580 852l-236 -360l236 -361h-222l-243 361l243 360h222z" />
+<glyph unicode="&#x203a;" horiz-adv-x="714" d="M371 492l-236 360h221l244 -360l-244 -361h-221z" />
+<glyph unicode="&#x205f;" horiz-adv-x="462" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1558" d="M106 805v176h213q68 219 240 352t391 133q326 0 516 -235l-145 -184q-90 96 -171 135t-200 39t-214 -62.5t-142 -177.5h487v-176h-530q-2 -25 -2 -75t6 -95h526v-176h-471q111 -213 334 -213q111 0 189.5 42t166.5 132l146 -176q-190 -236 -502 -236q-213 0 -378 122 t-236 329h-224v176h185q-6 49 -6 98t2 72h-181z" />
+<glyph unicode="&#x2122;" horiz-adv-x="2048" d="M516 1303v-709h-141v709h-254v129h649v-129h-254zM1069 594h-141v838h221l252 -527l254 527h219v-838h-141v653l-293 -581h-80l-291 581v-653z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1351" d="M449 1180v-90h286v-185h-286v-905h-230v905h-137v185h137v84q0 172 103.5 273t250 101t267.5 -108l-95 -162q-68 72 -141.5 72t-114 -46t-40.5 -124zM1186 0h-230v1090h230v-1090zM928 1409q0 59 43 102t102.5 43t102.5 -43t43 -102t-43 -102t-102.5 -43t-102.5 43 t-43 102z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1351" d="M449 1180v-90h286v-185h-286v-905h-230v905h-137v185h137v84q0 172 103.5 273t250 101t267.5 -108l-95 -162q-68 72 -141.5 72t-114 -46t-40.5 -124zM1186 0h-230v1520h230v-1520z" />
+<hkern u1="&#x26;" u2="&#x2019;" k="59" />
+<hkern u1="&#x26;" u2="&#xc6;" k="-27" />
+<hkern u1="&#x26;" u2="Y" k="51" />
+<hkern u1="&#x26;" u2="W" k="35" />
+<hkern u1="&#x26;" u2="V" k="45" />
+<hkern u1="&#x26;" u2="T" k="45" />
+<hkern u1="&#x26;" u2="A" k="-12" />
+<hkern u1="&#x26;" u2="&#x27;" k="59" />
+<hkern u1="&#x27;" u2="&#x2039;" k="29" />
+<hkern u1="&#x27;" u2="&#xf0;" k="33" />
+<hkern u1="&#x27;" u2="&#xc6;" k="106" />
+<hkern u1="&#x27;" u2="o" k="23" />
+<hkern u1="&#x27;" u2="J" k="35" />
+<hkern u1="&#x27;" u2="A" k="94" />
+<hkern u1="&#x27;" u2="&#x3a;" k="18" />
+<hkern u1="&#x27;" u2="&#x34;" k="45" />
+<hkern u1="&#x27;" u2="&#x2f;" k="150" />
+<hkern u1="&#x27;" u2="&#x2e;" k="258" />
+<hkern u1="&#x27;" u2="&#x26;" k="39" />
+<hkern u1="&#x28;" u2="&#xf0;" k="41" />
+<hkern u1="&#x28;" u2="&#x7b;" k="20" />
+<hkern u1="&#x28;" u2="w" k="31" />
+<hkern u1="&#x28;" u2="v" k="27" />
+<hkern u1="&#x28;" u2="u" k="43" />
+<hkern u1="&#x28;" u2="t" k="27" />
+<hkern u1="&#x28;" u2="s" k="35" />
+<hkern u1="&#x28;" u2="o" k="55" />
+<hkern u1="&#x28;" u2="n" k="31" />
+<hkern u1="&#x28;" u2="j" k="-188" />
+<hkern u1="&#x28;" u2="f" k="25" />
+<hkern u1="&#x28;" u2="a" k="39" />
+<hkern u1="&#x28;" u2="S" k="23" />
+<hkern u1="&#x28;" u2="O" k="45" />
+<hkern u1="&#x28;" u2="&#x39;" k="20" />
+<hkern u1="&#x28;" u2="&#x38;" k="33" />
+<hkern u1="&#x28;" u2="&#x36;" k="41" />
+<hkern u1="&#x28;" u2="&#x34;" k="45" />
+<hkern u1="&#x28;" u2="&#x30;" k="39" />
+<hkern u1="&#x28;" u2="&#x28;" k="20" />
+<hkern u1="&#x29;" u2="&#x29;" k="20" />
+<hkern u1="&#x2a;" u2="&#xf0;" k="35" />
+<hkern u1="&#x2a;" u2="&#xef;" k="-31" />
+<hkern u1="&#x2a;" u2="&#xee;" k="-66" />
+<hkern u1="&#x2a;" u2="&#xec;" k="-16" />
+<hkern u1="&#x2a;" u2="&#xc6;" k="102" />
+<hkern u1="&#x2a;" u2="y" k="-14" />
+<hkern u1="&#x2a;" u2="v" k="-18" />
+<hkern u1="&#x2a;" u2="o" k="23" />
+<hkern u1="&#x2a;" u2="J" k="41" />
+<hkern u1="&#x2a;" u2="A" k="90" />
+<hkern u1="&#x2b;" u2="&#x33;" k="20" />
+<hkern u1="&#x2d;" u2="&#xc6;" k="18" />
+<hkern u1="&#x2d;" u2="z" k="35" />
+<hkern u1="&#x2d;" u2="x" k="47" />
+<hkern u1="&#x2d;" u2="t" k="18" />
+<hkern u1="&#x2d;" u2="f" k="18" />
+<hkern u1="&#x2d;" u2="Z" k="39" />
+<hkern u1="&#x2d;" u2="Y" k="92" />
+<hkern u1="&#x2d;" u2="X" k="57" />
+<hkern u1="&#x2d;" u2="W" k="39" />
+<hkern u1="&#x2d;" u2="V" k="53" />
+<hkern u1="&#x2d;" u2="T" k="117" />
+<hkern u1="&#x2d;" u2="S" k="16" />
+<hkern u1="&#x2d;" u2="J" k="59" />
+<hkern u1="&#x2d;" u2="A" k="25" />
+<hkern u1="&#x2d;" u2="&#x37;" k="39" />
+<hkern u1="&#x2d;" u2="&#x33;" k="39" />
+<hkern u1="&#x2d;" u2="&#x32;" k="39" />
+<hkern u1="&#x2d;" u2="&#x31;" k="55" />
+<hkern u1="&#x2e;" u2="&#x2019;" k="289" />
+<hkern u1="&#x2e;" u2="&#x2018;" k="289" />
+<hkern u1="&#x2e;" u2="y" k="74" />
+<hkern u1="&#x2e;" u2="w" k="57" />
+<hkern u1="&#x2e;" u2="v" k="74" />
+<hkern u1="&#x2e;" u2="t" k="33" />
+<hkern u1="&#x2e;" u2="f" k="16" />
+<hkern u1="&#x2e;" u2="Y" k="127" />
+<hkern u1="&#x2e;" u2="W" k="96" />
+<hkern u1="&#x2e;" u2="V" k="119" />
+<hkern u1="&#x2e;" u2="U" k="31" />
+<hkern u1="&#x2e;" u2="T" k="119" />
+<hkern u1="&#x2e;" u2="O" k="39" />
+<hkern u1="&#x2e;" u2="&#x37;" k="35" />
+<hkern u1="&#x2e;" u2="&#x36;" k="20" />
+<hkern u1="&#x2e;" u2="&#x31;" k="63" />
+<hkern u1="&#x2e;" u2="&#x30;" k="23" />
+<hkern u1="&#x2e;" u2="&#x27;" k="258" />
+<hkern u1="&#x2f;" u2="&#xf0;" k="49" />
+<hkern u1="&#x2f;" u2="&#xcf;" k="-16" />
+<hkern u1="&#x2f;" u2="&#xc6;" k="135" />
+<hkern u1="&#x2f;" u2="z" k="53" />
+<hkern u1="&#x2f;" u2="x" k="35" />
+<hkern u1="&#x2f;" u2="w" k="23" />
+<hkern u1="&#x2f;" u2="v" k="20" />
+<hkern u1="&#x2f;" u2="u" k="53" />
+<hkern u1="&#x2f;" u2="s" k="88" />
+<hkern u1="&#x2f;" u2="o" k="94" />
+<hkern u1="&#x2f;" u2="n" k="57" />
+<hkern u1="&#x2f;" u2="f" k="27" />
+<hkern u1="&#x2f;" u2="a" k="84" />
+<hkern u1="&#x2f;" u2="S" k="33" />
+<hkern u1="&#x2f;" u2="O" k="51" />
+<hkern u1="&#x2f;" u2="J" k="31" />
+<hkern u1="&#x2f;" u2="A" k="125" />
+<hkern u1="&#x2f;" u2="&#x39;" k="20" />
+<hkern u1="&#x2f;" u2="&#x38;" k="39" />
+<hkern u1="&#x2f;" u2="&#x36;" k="45" />
+<hkern u1="&#x2f;" u2="&#x34;" k="86" />
+<hkern u1="&#x2f;" u2="&#x30;" k="43" />
+<hkern u1="&#x2f;" u2="&#x2f;" k="575" />
+<hkern u1="&#x30;" u2="]" k="43" />
+<hkern u1="&#x30;" u2="\" k="27" />
+<hkern u1="&#x30;" u2="A" k="20" />
+<hkern u1="&#x30;" u2="&#x2f;" k="49" />
+<hkern u1="&#x30;" u2="&#x2e;" k="23" />
+<hkern u1="&#x30;" u2="&#x29;" k="39" />
+<hkern u1="&#x32;" u2="&#xb7;" k="35" />
+<hkern u1="&#x32;" u2="&#x2d;" k="23" />
+<hkern u1="&#x33;" u2="&#x2f;" k="33" />
+<hkern u1="&#x34;" u2="&#xb0;" k="49" />
+<hkern u1="&#x34;" u2="]" k="31" />
+<hkern u1="&#x34;" u2="\" k="37" />
+<hkern u1="&#x34;" u2="Y" k="31" />
+<hkern u1="&#x34;" u2="V" k="27" />
+<hkern u1="&#x34;" u2="T" k="41" />
+<hkern u1="&#x34;" u2="&#x37;" k="27" />
+<hkern u1="&#x34;" u2="&#x31;" k="25" />
+<hkern u1="&#x34;" u2="&#x29;" k="31" />
+<hkern u1="&#x34;" u2="&#x27;" k="43" />
+<hkern u1="&#x35;" u2="&#x2f;" k="29" />
+<hkern u1="&#x36;" u2="&#x2f;" k="27" />
+<hkern u1="&#x37;" u2="&#xc6;" k="90" />
+<hkern u1="&#x37;" u2="&#xb7;" k="53" />
+<hkern u1="&#x37;" u2="&#xa2;" k="41" />
+<hkern u1="&#x37;" u2="Y" k="-33" />
+<hkern u1="&#x37;" u2="V" k="-12" />
+<hkern u1="&#x37;" u2="A" k="82" />
+<hkern u1="&#x37;" u2="&#x34;" k="41" />
+<hkern u1="&#x37;" u2="&#x2f;" k="123" />
+<hkern u1="&#x37;" u2="&#x2e;" k="135" />
+<hkern u1="&#x37;" u2="&#x2d;" k="53" />
+<hkern u1="&#x38;" u2="]" k="33" />
+<hkern u1="&#x38;" u2="\" k="20" />
+<hkern u1="&#x38;" u2="&#x2f;" k="31" />
+<hkern u1="&#x38;" u2="&#x29;" k="33" />
+<hkern u1="&#x39;" u2="]" k="41" />
+<hkern u1="&#x39;" u2="\" k="25" />
+<hkern u1="&#x39;" u2="A" k="20" />
+<hkern u1="&#x39;" u2="&#x2f;" k="49" />
+<hkern u1="&#x39;" u2="&#x2e;" k="25" />
+<hkern u1="&#x39;" u2="&#x29;" k="39" />
+<hkern u1="&#x3a;" u2="&#x2019;" k="127" />
+<hkern u1="&#x3a;" u2="y" k="18" />
+<hkern u1="&#x3a;" u2="v" k="20" />
+<hkern u1="&#x3a;" u2="t" k="16" />
+<hkern u1="&#x3a;" u2="Y" k="92" />
+<hkern u1="&#x3a;" u2="W" k="43" />
+<hkern u1="&#x3a;" u2="V" k="57" />
+<hkern u1="&#x3a;" u2="T" k="113" />
+<hkern u1="&#x3a;" u2="&#x27;" k="18" />
+<hkern u1="&#x40;" u2="&#x2019;" k="37" />
+<hkern u1="&#x40;" u2="Y" k="53" />
+<hkern u1="&#x40;" u2="W" k="20" />
+<hkern u1="&#x40;" u2="V" k="33" />
+<hkern u1="&#x40;" u2="T" k="51" />
+<hkern u1="A" u2="&#x2122;" k="96" />
+<hkern u1="A" u2="&#x2019;" k="109" />
+<hkern u1="A" u2="&#x2018;" k="109" />
+<hkern u1="A" u2="&#xf0;" k="18" />
+<hkern u1="A" u2="&#xae;" k="25" />
+<hkern u1="A" u2="y" k="59" />
+<hkern u1="A" u2="w" k="51" />
+<hkern u1="A" u2="v" k="59" />
+<hkern u1="A" u2="u" k="16" />
+<hkern u1="A" u2="t" k="49" />
+<hkern u1="A" u2="o" k="23" />
+<hkern u1="A" u2="f" k="18" />
+<hkern u1="A" u2="]" k="27" />
+<hkern u1="A" u2="\" k="113" />
+<hkern u1="A" u2="Y" k="104" />
+<hkern u1="A" u2="W" k="68" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="U" k="35" />
+<hkern u1="A" u2="T" k="113" />
+<hkern u1="A" u2="O" k="37" />
+<hkern u1="A" u2="&#x3f;" k="43" />
+<hkern u1="A" u2="&#x36;" k="20" />
+<hkern u1="A" u2="&#x31;" k="43" />
+<hkern u1="A" u2="&#x30;" k="20" />
+<hkern u1="A" u2="&#x2d;" k="25" />
+<hkern u1="A" u2="&#x2a;" k="90" />
+<hkern u1="A" u2="&#x27;" k="94" />
+<hkern u1="B" u2="z" k="10" />
+<hkern u1="B" u2="y" k="16" />
+<hkern u1="B" u2="x" k="27" />
+<hkern u1="B" u2="w" k="14" />
+<hkern u1="B" u2="v" k="16" />
+<hkern u1="B" u2="t" k="18" />
+<hkern u1="B" u2="s" k="14" />
+<hkern u1="B" u2="f" k="16" />
+<hkern u1="B" u2="]" k="41" />
+<hkern u1="B" u2="\" k="29" />
+<hkern u1="B" u2="Y" k="39" />
+<hkern u1="B" u2="X" k="20" />
+<hkern u1="B" u2="W" k="14" />
+<hkern u1="B" u2="V" k="25" />
+<hkern u1="B" u2="T" k="35" />
+<hkern u1="B" u2="J" k="14" />
+<hkern u1="B" u2="A" k="16" />
+<hkern u1="B" u2="&#x2f;" k="27" />
+<hkern u1="B" u2="&#x29;" k="35" />
+<hkern u1="C" u2="&#xf0;" k="27" />
+<hkern u1="C" u2="&#xee;" k="-47" />
+<hkern u1="C" u2="u" k="14" />
+<hkern u1="C" u2="s" k="14" />
+<hkern u1="C" u2="o" k="31" />
+<hkern u1="C" u2="n" k="10" />
+<hkern u1="C" u2="S" k="10" />
+<hkern u1="C" u2="O" k="31" />
+<hkern u1="C" u2="&#x2d;" k="20" />
+<hkern u1="E" u2="&#xf0;" k="20" />
+<hkern u1="E" u2="u" k="14" />
+<hkern u1="E" u2="t" k="16" />
+<hkern u1="E" u2="o" k="20" />
+<hkern u1="E" u2="f" k="12" />
+<hkern u1="E" u2="O" k="20" />
+<hkern u1="F" u2="&#xf0;" k="41" />
+<hkern u1="F" u2="&#xee;" k="-43" />
+<hkern u1="F" u2="&#xed;" k="20" />
+<hkern u1="F" u2="&#xec;" k="-29" />
+<hkern u1="F" u2="&#xdf;" k="16" />
+<hkern u1="F" u2="&#xc6;" k="100" />
+<hkern u1="F" u2="z" k="33" />
+<hkern u1="F" u2="x" k="18" />
+<hkern u1="F" u2="u" k="25" />
+<hkern u1="F" u2="t" k="10" />
+<hkern u1="F" u2="s" k="43" />
+<hkern u1="F" u2="o" k="31" />
+<hkern u1="F" u2="n" k="31" />
+<hkern u1="F" u2="f" k="14" />
+<hkern u1="F" u2="a" k="45" />
+<hkern u1="F" u2="J" k="35" />
+<hkern u1="F" u2="A" k="88" />
+<hkern u1="F" u2="&#x2f;" k="94" />
+<hkern u1="F" u2="&#x2e;" k="115" />
+<hkern u1="G" u2="y" k="16" />
+<hkern u1="G" u2="x" k="12" />
+<hkern u1="G" u2="w" k="16" />
+<hkern u1="G" u2="v" k="18" />
+<hkern u1="G" u2="t" k="18" />
+<hkern u1="G" u2="f" k="18" />
+<hkern u1="G" u2="]" k="20" />
+<hkern u1="G" u2="Y" k="23" />
+<hkern u1="G" u2="X" k="10" />
+<hkern u1="G" u2="V" k="16" />
+<hkern u1="G" u2="T" k="16" />
+<hkern u1="G" u2="A" k="14" />
+<hkern u1="G" u2="&#x29;" k="20" />
+<hkern u1="I" u2="&#xf0;" k="18" />
+<hkern u1="I" u2="z" k="10" />
+<hkern u1="I" u2="u" k="10" />
+<hkern u1="I" u2="t" k="16" />
+<hkern u1="I" u2="s" k="12" />
+<hkern u1="I" u2="o" k="18" />
+<hkern u1="I" u2="n" k="10" />
+<hkern u1="I" u2="l" k="10" />
+<hkern u1="I" u2="h" k="10" />
+<hkern u1="I" u2="f" k="14" />
+<hkern u1="I" u2="a" k="12" />
+<hkern u1="J" u2="&#xf0;" k="23" />
+<hkern u1="J" u2="&#xc6;" k="18" />
+<hkern u1="J" u2="z" k="16" />
+<hkern u1="J" u2="x" k="12" />
+<hkern u1="J" u2="u" k="12" />
+<hkern u1="J" u2="t" k="14" />
+<hkern u1="J" u2="s" k="20" />
+<hkern u1="J" u2="o" k="16" />
+<hkern u1="J" u2="n" k="10" />
+<hkern u1="J" u2="l" k="10" />
+<hkern u1="J" u2="h" k="10" />
+<hkern u1="J" u2="f" k="14" />
+<hkern u1="J" u2="a" k="14" />
+<hkern u1="J" u2="J" k="16" />
+<hkern u1="J" u2="A" k="18" />
+<hkern u1="J" u2="&#x2f;" k="43" />
+<hkern u1="J" u2="&#x2e;" k="18" />
+<hkern u1="K" u2="&#x2039;" k="27" />
+<hkern u1="K" u2="&#xf0;" k="68" />
+<hkern u1="K" u2="&#xef;" k="-39" />
+<hkern u1="K" u2="&#xec;" k="-70" />
+<hkern u1="K" u2="&#xae;" k="20" />
+<hkern u1="K" u2="y" k="53" />
+<hkern u1="K" u2="w" k="59" />
+<hkern u1="K" u2="v" k="53" />
+<hkern u1="K" u2="u" k="45" />
+<hkern u1="K" u2="t" k="27" />
+<hkern u1="K" u2="o" k="84" />
+<hkern u1="K" u2="n" k="10" />
+<hkern u1="K" u2="f" k="18" />
+<hkern u1="K" u2="a" k="18" />
+<hkern u1="K" u2="S" k="25" />
+<hkern u1="K" u2="O" k="63" />
+<hkern u1="K" u2="&#x2d;" k="55" />
+<hkern u1="L" u2="&#x2122;" k="176" />
+<hkern u1="L" u2="&#x2019;" k="178" />
+<hkern u1="L" u2="&#x2018;" k="178" />
+<hkern u1="L" u2="&#xf0;" k="10" />
+<hkern u1="L" u2="&#xb7;" k="152" />
+<hkern u1="L" u2="&#xae;" k="20" />
+<hkern u1="L" u2="y" k="123" />
+<hkern u1="L" u2="w" k="100" />
+<hkern u1="L" u2="v" k="123" />
+<hkern u1="L" u2="u" k="14" />
+<hkern u1="L" u2="t" k="63" />
+<hkern u1="L" u2="o" k="18" />
+<hkern u1="L" u2="f" k="27" />
+<hkern u1="L" u2="\" k="139" />
+<hkern u1="L" u2="Y" k="135" />
+<hkern u1="L" u2="W" k="115" />
+<hkern u1="L" u2="V" k="123" />
+<hkern u1="L" u2="U" k="35" />
+<hkern u1="L" u2="T" k="147" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="&#x3f;" k="49" />
+<hkern u1="L" u2="&#x31;" k="45" />
+<hkern u1="L" u2="&#x2d;" k="133" />
+<hkern u1="L" u2="&#x2a;" k="180" />
+<hkern u1="L" u2="&#x27;" k="178" />
+<hkern u1="O" u2="&#x2122;" k="20" />
+<hkern u1="O" u2="&#xf0;" k="10" />
+<hkern u1="O" u2="&#xc6;" k="39" />
+<hkern u1="O" u2="&#x7d;" k="23" />
+<hkern u1="O" u2="z" k="14" />
+<hkern u1="O" u2="x" k="25" />
+<hkern u1="O" u2="s" k="12" />
+<hkern u1="O" u2="n" k="10" />
+<hkern u1="O" u2="l" k="10" />
+<hkern u1="O" u2="i" k="10" />
+<hkern u1="O" u2="h" k="10" />
+<hkern u1="O" u2="a" k="10" />
+<hkern u1="O" u2="]" k="51" />
+<hkern u1="O" u2="\" k="37" />
+<hkern u1="O" u2="Z" k="25" />
+<hkern u1="O" u2="Y" k="47" />
+<hkern u1="O" u2="X" k="51" />
+<hkern u1="O" u2="W" k="14" />
+<hkern u1="O" u2="V" k="25" />
+<hkern u1="O" u2="T" k="39" />
+<hkern u1="O" u2="J" k="43" />
+<hkern u1="O" u2="A" k="37" />
+<hkern u1="O" u2="&#x2f;" k="57" />
+<hkern u1="O" u2="&#x2e;" k="39" />
+<hkern u1="O" u2="&#x29;" k="45" />
+<hkern u1="P" u2="&#x2039;" k="20" />
+<hkern u1="P" u2="&#xf0;" k="27" />
+<hkern u1="P" u2="&#xc6;" k="100" />
+<hkern u1="P" u2="s" k="12" />
+<hkern u1="P" u2="o" k="12" />
+<hkern u1="P" u2="a" k="20" />
+<hkern u1="P" u2="]" k="39" />
+<hkern u1="P" u2="Z" k="14" />
+<hkern u1="P" u2="Y" k="16" />
+<hkern u1="P" u2="X" k="39" />
+<hkern u1="P" u2="J" k="63" />
+<hkern u1="P" u2="A" k="78" />
+<hkern u1="P" u2="&#x2f;" k="98" />
+<hkern u1="P" u2="&#x2e;" k="129" />
+<hkern u1="P" u2="&#x29;" k="37" />
+<hkern u1="Q" u2="&#x7d;" k="10" />
+<hkern u1="Q" u2="j" k="-125" />
+<hkern u1="Q" u2="]" k="25" />
+<hkern u1="R" u2="&#x2039;" k="31" />
+<hkern u1="R" u2="&#xf0;" k="41" />
+<hkern u1="R" u2="u" k="18" />
+<hkern u1="R" u2="t" k="12" />
+<hkern u1="R" u2="o" k="31" />
+<hkern u1="R" u2="n" k="10" />
+<hkern u1="R" u2="f" k="10" />
+<hkern u1="R" u2="a" k="20" />
+<hkern u1="R" u2="\" k="25" />
+<hkern u1="R" u2="Y" k="27" />
+<hkern u1="R" u2="V" k="18" />
+<hkern u1="R" u2="T" k="20" />
+<hkern u1="R" u2="J" k="10" />
+<hkern u1="S" u2="z" k="12" />
+<hkern u1="S" u2="y" k="20" />
+<hkern u1="S" u2="x" k="18" />
+<hkern u1="S" u2="w" k="20" />
+<hkern u1="S" u2="v" k="20" />
+<hkern u1="S" u2="u" k="12" />
+<hkern u1="S" u2="t" k="25" />
+<hkern u1="S" u2="s" k="12" />
+<hkern u1="S" u2="n" k="12" />
+<hkern u1="S" u2="f" k="23" />
+<hkern u1="S" u2="Y" k="12" />
+<hkern u1="S" u2="V" k="10" />
+<hkern u1="S" u2="A" k="14" />
+<hkern u1="S" u2="&#x2f;" k="23" />
+<hkern u1="T" u2="&#x203a;" k="111" />
+<hkern u1="T" u2="&#x2039;" k="127" />
+<hkern u1="T" u2="&#xf0;" k="82" />
+<hkern u1="T" u2="&#xef;" k="-16" />
+<hkern u1="T" u2="&#xee;" k="-66" />
+<hkern u1="T" u2="&#xed;" k="41" />
+<hkern u1="T" u2="&#xec;" k="-49" />
+<hkern u1="T" u2="&#xdf;" k="27" />
+<hkern u1="T" u2="&#xc6;" k="111" />
+<hkern u1="T" u2="&#xae;" k="20" />
+<hkern u1="T" u2="z" k="147" />
+<hkern u1="T" u2="y" k="139" />
+<hkern u1="T" u2="x" k="137" />
+<hkern u1="T" u2="w" k="133" />
+<hkern u1="T" u2="v" k="139" />
+<hkern u1="T" u2="u" k="106" />
+<hkern u1="T" u2="t" k="20" />
+<hkern u1="T" u2="s" k="147" />
+<hkern u1="T" u2="o" k="131" />
+<hkern u1="T" u2="n" k="100" />
+<hkern u1="T" u2="l" k="10" />
+<hkern u1="T" u2="i" k="10" />
+<hkern u1="T" u2="h" k="10" />
+<hkern u1="T" u2="f" k="43" />
+<hkern u1="T" u2="a" k="150" />
+<hkern u1="T" u2="O" k="39" />
+<hkern u1="T" u2="J" k="27" />
+<hkern u1="T" u2="A" k="113" />
+<hkern u1="T" u2="&#x40;" k="55" />
+<hkern u1="T" u2="&#x3a;" k="113" />
+<hkern u1="T" u2="&#x34;" k="66" />
+<hkern u1="T" u2="&#x2f;" k="113" />
+<hkern u1="T" u2="&#x2e;" k="119" />
+<hkern u1="T" u2="&#x2d;" k="117" />
+<hkern u1="T" u2="&#x26;" k="29" />
+<hkern u1="U" u2="&#xf0;" k="27" />
+<hkern u1="U" u2="&#xc6;" k="39" />
+<hkern u1="U" u2="z" k="20" />
+<hkern u1="U" u2="x" k="12" />
+<hkern u1="U" u2="u" k="18" />
+<hkern u1="U" u2="t" k="14" />
+<hkern u1="U" u2="s" k="27" />
+<hkern u1="U" u2="o" k="18" />
+<hkern u1="U" u2="n" k="10" />
+<hkern u1="U" u2="l" k="12" />
+<hkern u1="U" u2="i" k="12" />
+<hkern u1="U" u2="h" k="12" />
+<hkern u1="U" u2="f" k="12" />
+<hkern u1="U" u2="a" k="20" />
+<hkern u1="U" u2="J" k="29" />
+<hkern u1="U" u2="A" k="35" />
+<hkern u1="U" u2="&#x2f;" k="53" />
+<hkern u1="U" u2="&#x2e;" k="33" />
+<hkern u1="V" u2="&#x2122;" k="-27" />
+<hkern u1="V" u2="&#x203a;" k="35" />
+<hkern u1="V" u2="&#x2039;" k="72" />
+<hkern u1="V" u2="&#xf0;" k="78" />
+<hkern u1="V" u2="&#xef;" k="-55" />
+<hkern u1="V" u2="&#xee;" k="-55" />
+<hkern u1="V" u2="&#xed;" k="29" />
+<hkern u1="V" u2="&#xec;" k="-104" />
+<hkern u1="V" u2="&#xdf;" k="25" />
+<hkern u1="V" u2="&#xc6;" k="92" />
+<hkern u1="V" u2="z" k="45" />
+<hkern u1="V" u2="x" k="18" />
+<hkern u1="V" u2="u" k="51" />
+<hkern u1="V" u2="t" k="10" />
+<hkern u1="V" u2="s" k="90" />
+<hkern u1="V" u2="o" k="88" />
+<hkern u1="V" u2="n" k="61" />
+<hkern u1="V" u2="f" k="12" />
+<hkern u1="V" u2="a" k="88" />
+<hkern u1="V" u2="S" k="12" />
+<hkern u1="V" u2="O" k="25" />
+<hkern u1="V" u2="J" k="27" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="&#x40;" k="33" />
+<hkern u1="V" u2="&#x3a;" k="57" />
+<hkern u1="V" u2="&#x34;" k="41" />
+<hkern u1="V" u2="&#x31;" k="-10" />
+<hkern u1="V" u2="&#x2f;" k="117" />
+<hkern u1="V" u2="&#x2e;" k="119" />
+<hkern u1="V" u2="&#x2d;" k="53" />
+<hkern u1="V" u2="&#x26;" k="29" />
+<hkern u1="W" u2="&#x203a;" k="23" />
+<hkern u1="W" u2="&#x2039;" k="57" />
+<hkern u1="W" u2="&#xf0;" k="72" />
+<hkern u1="W" u2="&#xef;" k="-51" />
+<hkern u1="W" u2="&#xee;" k="-49" />
+<hkern u1="W" u2="&#xed;" k="25" />
+<hkern u1="W" u2="&#xec;" k="-88" />
+<hkern u1="W" u2="&#xdf;" k="23" />
+<hkern u1="W" u2="&#xc6;" k="80" />
+<hkern u1="W" u2="z" k="35" />
+<hkern u1="W" u2="x" k="10" />
+<hkern u1="W" u2="u" k="43" />
+<hkern u1="W" u2="s" k="80" />
+<hkern u1="W" u2="o" k="78" />
+<hkern u1="W" u2="n" k="51" />
+<hkern u1="W" u2="a" k="76" />
+<hkern u1="W" u2="O" k="14" />
+<hkern u1="W" u2="J" k="25" />
+<hkern u1="W" u2="A" k="68" />
+<hkern u1="W" u2="&#x40;" k="20" />
+<hkern u1="W" u2="&#x3a;" k="43" />
+<hkern u1="W" u2="&#x34;" k="27" />
+<hkern u1="W" u2="&#x2f;" k="98" />
+<hkern u1="W" u2="&#x2e;" k="96" />
+<hkern u1="W" u2="&#x2d;" k="39" />
+<hkern u1="W" u2="&#x26;" k="20" />
+<hkern u1="X" u2="&#x2039;" k="31" />
+<hkern u1="X" u2="&#xf0;" k="51" />
+<hkern u1="X" u2="&#xef;" k="-16" />
+<hkern u1="X" u2="&#xec;" k="-41" />
+<hkern u1="X" u2="&#xae;" k="20" />
+<hkern u1="X" u2="y" k="49" />
+<hkern u1="X" u2="w" k="55" />
+<hkern u1="X" u2="v" k="49" />
+<hkern u1="X" u2="u" k="43" />
+<hkern u1="X" u2="t" k="33" />
+<hkern u1="X" u2="o" k="66" />
+<hkern u1="X" u2="n" k="12" />
+<hkern u1="X" u2="f" k="25" />
+<hkern u1="X" u2="a" k="14" />
+<hkern u1="X" u2="O" k="51" />
+<hkern u1="X" u2="&#x2d;" k="55" />
+<hkern u1="Y" u2="&#x2122;" k="-47" />
+<hkern u1="Y" u2="&#x203a;" k="66" />
+<hkern u1="Y" u2="&#x2039;" k="109" />
+<hkern u1="Y" u2="&#xf0;" k="90" />
+<hkern u1="Y" u2="&#xef;" k="-78" />
+<hkern u1="Y" u2="&#xee;" k="-45" />
+<hkern u1="Y" u2="&#xed;" k="39" />
+<hkern u1="Y" u2="&#xec;" k="-125" />
+<hkern u1="Y" u2="&#xdf;" k="29" />
+<hkern u1="Y" u2="&#xc6;" k="113" />
+<hkern u1="Y" u2="&#xae;" k="31" />
+<hkern u1="Y" u2="z" k="82" />
+<hkern u1="Y" u2="y" k="18" />
+<hkern u1="Y" u2="x" k="43" />
+<hkern u1="Y" u2="w" k="27" />
+<hkern u1="Y" u2="v" k="16" />
+<hkern u1="Y" u2="u" k="74" />
+<hkern u1="Y" u2="t" k="14" />
+<hkern u1="Y" u2="s" k="106" />
+<hkern u1="Y" u2="o" k="123" />
+<hkern u1="Y" u2="n" k="72" />
+<hkern u1="Y" u2="f" k="23" />
+<hkern u1="Y" u2="a" k="100" />
+<hkern u1="Y" u2="S" k="18" />
+<hkern u1="Y" u2="O" k="47" />
+<hkern u1="Y" u2="J" k="20" />
+<hkern u1="Y" u2="A" k="104" />
+<hkern u1="Y" u2="&#x40;" k="57" />
+<hkern u1="Y" u2="&#x3a;" k="90" />
+<hkern u1="Y" u2="&#x36;" k="20" />
+<hkern u1="Y" u2="&#x34;" k="66" />
+<hkern u1="Y" u2="&#x31;" k="-31" />
+<hkern u1="Y" u2="&#x2f;" k="119" />
+<hkern u1="Y" u2="&#x2e;" k="127" />
+<hkern u1="Y" u2="&#x2d;" k="92" />
+<hkern u1="Y" u2="&#x26;" k="37" />
+<hkern u1="Z" u2="&#xf0;" k="25" />
+<hkern u1="Z" u2="&#xee;" k="-37" />
+<hkern u1="Z" u2="y" k="16" />
+<hkern u1="Z" u2="w" k="20" />
+<hkern u1="Z" u2="v" k="16" />
+<hkern u1="Z" u2="u" k="23" />
+<hkern u1="Z" u2="t" k="20" />
+<hkern u1="Z" u2="o" k="29" />
+<hkern u1="Z" u2="n" k="14" />
+<hkern u1="Z" u2="f" k="18" />
+<hkern u1="Z" u2="O" k="25" />
+<hkern u1="Z" u2="&#x2d;" k="35" />
+<hkern u1="[" u2="&#xf0;" k="41" />
+<hkern u1="[" u2="&#xec;" k="-33" />
+<hkern u1="[" u2="&#xc6;" k="23" />
+<hkern u1="[" u2="z" k="37" />
+<hkern u1="[" u2="w" k="33" />
+<hkern u1="[" u2="v" k="29" />
+<hkern u1="[" u2="u" k="43" />
+<hkern u1="[" u2="t" k="20" />
+<hkern u1="[" u2="s" k="49" />
+<hkern u1="[" u2="o" k="59" />
+<hkern u1="[" u2="n" k="37" />
+<hkern u1="[" u2="j" k="-184" />
+<hkern u1="[" u2="f" k="20" />
+<hkern u1="[" u2="a" k="45" />
+<hkern u1="[" u2="S" k="27" />
+<hkern u1="[" u2="O" k="51" />
+<hkern u1="[" u2="A" k="27" />
+<hkern u1="[" u2="&#x39;" k="20" />
+<hkern u1="[" u2="&#x38;" k="33" />
+<hkern u1="[" u2="&#x36;" k="43" />
+<hkern u1="[" u2="&#x34;" k="55" />
+<hkern u1="[" u2="&#x30;" k="43" />
+<hkern u1="\" u2="&#x2019;" k="127" />
+<hkern u1="\" u2="&#xc6;" k="-39" />
+<hkern u1="\" u2="y" k="47" />
+<hkern u1="\" u2="w" k="37" />
+<hkern u1="\" u2="v" k="47" />
+<hkern u1="\" u2="t" k="23" />
+<hkern u1="\" u2="Y" k="90" />
+<hkern u1="\" u2="W" k="63" />
+<hkern u1="\" u2="V" k="82" />
+<hkern u1="\" u2="U" k="25" />
+<hkern u1="\" u2="T" k="84" />
+<hkern u1="\" u2="O" k="23" />
+<hkern u1="\" u2="A" k="-14" />
+<hkern u1="\" u2="&#x31;" k="41" />
+<hkern u1="\" u2="&#x27;" k="109" />
+<hkern u1="a" u2="&#x2122;" k="47" />
+<hkern u1="a" u2="&#x2019;" k="33" />
+<hkern u1="a" u2="&#x2018;" k="33" />
+<hkern u1="a" u2="&#x7d;" k="23" />
+<hkern u1="a" u2="y" k="12" />
+<hkern u1="a" u2="w" k="10" />
+<hkern u1="a" u2="v" k="12" />
+<hkern u1="a" u2="t" k="12" />
+<hkern u1="a" u2="f" k="8" />
+<hkern u1="a" u2="]" k="47" />
+<hkern u1="a" u2="\" k="70" />
+<hkern u1="a" u2="Z" k="18" />
+<hkern u1="a" u2="Y" k="96" />
+<hkern u1="a" u2="X" k="10" />
+<hkern u1="a" u2="W" k="53" />
+<hkern u1="a" u2="V" k="72" />
+<hkern u1="a" u2="U" k="16" />
+<hkern u1="a" u2="T" k="109" />
+<hkern u1="a" u2="S" k="10" />
+<hkern u1="a" u2="O" k="12" />
+<hkern u1="a" u2="J" k="14" />
+<hkern u1="a" u2="I" k="10" />
+<hkern u1="a" u2="&#x29;" k="33" />
+<hkern u1="c" u2="&#x2122;" k="35" />
+<hkern u1="c" u2="&#x2039;" k="27" />
+<hkern u1="c" u2="&#xf0;" k="25" />
+<hkern u1="c" u2="s" k="8" />
+<hkern u1="c" u2="o" k="23" />
+<hkern u1="c" u2="a" k="8" />
+<hkern u1="c" u2="]" k="33" />
+<hkern u1="c" u2="\" k="41" />
+<hkern u1="c" u2="Y" k="90" />
+<hkern u1="c" u2="W" k="35" />
+<hkern u1="c" u2="V" k="45" />
+<hkern u1="c" u2="U" k="12" />
+<hkern u1="c" u2="T" k="164" />
+<hkern u1="c" u2="S" k="12" />
+<hkern u1="c" u2="O" k="20" />
+<hkern u1="c" u2="&#x2d;" k="31" />
+<hkern u1="c" u2="&#x29;" k="27" />
+<hkern u1="d" u2="Z" k="12" />
+<hkern u1="d" u2="U" k="12" />
+<hkern u1="d" u2="T" k="10" />
+<hkern u1="d" u2="O" k="10" />
+<hkern u1="d" u2="J" k="16" />
+<hkern u1="d" u2="I" k="10" />
+<hkern u1="e" u2="&#x2122;" k="41" />
+<hkern u1="e" u2="&#x2019;" k="37" />
+<hkern u1="e" u2="&#x2018;" k="37" />
+<hkern u1="e" u2="&#x7d;" k="25" />
+<hkern u1="e" u2="y" k="12" />
+<hkern u1="e" u2="x" k="23" />
+<hkern u1="e" u2="v" k="12" />
+<hkern u1="e" u2="t" k="8" />
+<hkern u1="e" u2="f" k="8" />
+<hkern u1="e" u2="]" k="51" />
+<hkern u1="e" u2="\" k="68" />
+<hkern u1="e" u2="Z" k="29" />
+<hkern u1="e" u2="Y" k="117" />
+<hkern u1="e" u2="X" k="35" />
+<hkern u1="e" u2="W" k="74" />
+<hkern u1="e" u2="V" k="88" />
+<hkern u1="e" u2="U" k="14" />
+<hkern u1="e" u2="T" k="158" />
+<hkern u1="e" u2="S" k="14" />
+<hkern u1="e" u2="J" k="18" />
+<hkern u1="e" u2="I" k="12" />
+<hkern u1="e" u2="A" k="14" />
+<hkern u1="e" u2="&#x2f;" k="35" />
+<hkern u1="e" u2="&#x29;" k="47" />
+<hkern u1="f" u2="&#x2122;" k="-57" />
+<hkern u1="f" u2="&#x2039;" k="55" />
+<hkern u1="f" u2="&#xf0;" k="63" />
+<hkern u1="f" u2="&#xef;" k="-100" />
+<hkern u1="f" u2="&#xee;" k="-37" />
+<hkern u1="f" u2="&#xec;" k="-152" />
+<hkern u1="f" u2="&#xc6;" k="90" />
+<hkern u1="f" u2="s" k="8" />
+<hkern u1="f" u2="o" k="27" />
+<hkern u1="f" u2="a" k="10" />
+<hkern u1="f" u2="]" k="-29" />
+<hkern u1="f" u2="Y" k="-117" />
+<hkern u1="f" u2="X" k="-33" />
+<hkern u1="f" u2="W" k="-78" />
+<hkern u1="f" u2="V" k="-94" />
+<hkern u1="f" u2="T" k="-39" />
+<hkern u1="f" u2="J" k="12" />
+<hkern u1="f" u2="A" k="82" />
+<hkern u1="f" u2="&#x3a;" k="41" />
+<hkern u1="f" u2="&#x2f;" k="63" />
+<hkern u1="f" u2="&#x2e;" k="66" />
+<hkern u1="f" u2="&#x2d;" k="63" />
+<hkern u1="i" u2="Z" k="12" />
+<hkern u1="i" u2="U" k="12" />
+<hkern u1="i" u2="T" k="10" />
+<hkern u1="i" u2="O" k="10" />
+<hkern u1="i" u2="J" k="16" />
+<hkern u1="i" u2="I" k="10" />
+<hkern u1="j" u2="j" k="-33" />
+<hkern u1="k" u2="&#x2122;" k="33" />
+<hkern u1="k" u2="&#x2039;" k="41" />
+<hkern u1="k" u2="&#xf0;" k="53" />
+<hkern u1="k" u2="s" k="10" />
+<hkern u1="k" u2="o" k="51" />
+<hkern u1="k" u2="a" k="18" />
+<hkern u1="k" u2="Y" k="39" />
+<hkern u1="k" u2="V" k="16" />
+<hkern u1="k" u2="U" k="10" />
+<hkern u1="k" u2="T" k="133" />
+<hkern u1="k" u2="O" k="35" />
+<hkern u1="k" u2="&#x2d;" k="57" />
+<hkern u1="l" u2="&#xb7;" k="150" />
+<hkern u1="l" u2="Z" k="12" />
+<hkern u1="l" u2="U" k="12" />
+<hkern u1="l" u2="T" k="10" />
+<hkern u1="l" u2="O" k="10" />
+<hkern u1="l" u2="J" k="16" />
+<hkern u1="l" u2="I" k="10" />
+<hkern u1="n" u2="&#x2122;" k="49" />
+<hkern u1="n" u2="&#x2019;" k="35" />
+<hkern u1="n" u2="&#x2018;" k="35" />
+<hkern u1="n" u2="&#x7d;" k="23" />
+<hkern u1="n" u2="y" k="14" />
+<hkern u1="n" u2="w" k="12" />
+<hkern u1="n" u2="v" k="12" />
+<hkern u1="n" u2="t" k="14" />
+<hkern u1="n" u2="f" k="10" />
+<hkern u1="n" u2="]" k="47" />
+<hkern u1="n" u2="\" k="72" />
+<hkern u1="n" u2="Z" k="20" />
+<hkern u1="n" u2="Y" k="96" />
+<hkern u1="n" u2="X" k="10" />
+<hkern u1="n" u2="W" k="53" />
+<hkern u1="n" u2="V" k="72" />
+<hkern u1="n" u2="U" k="16" />
+<hkern u1="n" u2="T" k="109" />
+<hkern u1="n" u2="S" k="10" />
+<hkern u1="n" u2="O" k="12" />
+<hkern u1="n" u2="J" k="14" />
+<hkern u1="n" u2="I" k="10" />
+<hkern u1="n" u2="&#x2a;" k="16" />
+<hkern u1="n" u2="&#x29;" k="33" />
+<hkern u1="o" u2="&#x2122;" k="49" />
+<hkern u1="o" u2="&#x2019;" k="53" />
+<hkern u1="o" u2="&#x2018;" k="53" />
+<hkern u1="o" u2="&#xc6;" k="20" />
+<hkern u1="o" u2="&#x7d;" k="35" />
+<hkern u1="o" u2="z" k="12" />
+<hkern u1="o" u2="y" k="20" />
+<hkern u1="o" u2="x" k="39" />
+<hkern u1="o" u2="w" k="14" />
+<hkern u1="o" u2="v" k="18" />
+<hkern u1="o" u2="t" k="16" />
+<hkern u1="o" u2="f" k="16" />
+<hkern u1="o" u2="]" k="59" />
+<hkern u1="o" u2="\" k="76" />
+<hkern u1="o" u2="Z" k="41" />
+<hkern u1="o" u2="Y" k="123" />
+<hkern u1="o" u2="X" k="66" />
+<hkern u1="o" u2="W" k="78" />
+<hkern u1="o" u2="V" k="88" />
+<hkern u1="o" u2="U" k="18" />
+<hkern u1="o" u2="T" k="131" />
+<hkern u1="o" u2="S" k="23" />
+<hkern u1="o" u2="J" k="29" />
+<hkern u1="o" u2="I" k="18" />
+<hkern u1="o" u2="A" k="23" />
+<hkern u1="o" u2="&#x3f;" k="20" />
+<hkern u1="o" u2="&#x2f;" k="43" />
+<hkern u1="o" u2="&#x2a;" k="23" />
+<hkern u1="o" u2="&#x29;" k="55" />
+<hkern u1="o" u2="&#x27;" k="23" />
+<hkern u1="q" u2="j" k="-119" />
+<hkern u1="r" u2="&#x2122;" k="16" />
+<hkern u1="r" u2="&#x2039;" k="55" />
+<hkern u1="r" u2="&#xf0;" k="57" />
+<hkern u1="r" u2="&#xc6;" k="92" />
+<hkern u1="r" u2="&#x7d;" k="20" />
+<hkern u1="r" u2="o" k="20" />
+<hkern u1="r" u2="a" k="10" />
+<hkern u1="r" u2="]" k="39" />
+<hkern u1="r" u2="Z" k="29" />
+<hkern u1="r" u2="Y" k="14" />
+<hkern u1="r" u2="X" k="61" />
+<hkern u1="r" u2="T" k="139" />
+<hkern u1="r" u2="J" k="86" />
+<hkern u1="r" u2="A" k="90" />
+<hkern u1="r" u2="&#x3a;" k="33" />
+<hkern u1="r" u2="&#x2f;" k="88" />
+<hkern u1="r" u2="&#x2e;" k="92" />
+<hkern u1="r" u2="&#x2d;" k="57" />
+<hkern u1="r" u2="&#x29;" k="37" />
+<hkern u1="r" u2="&#x26;" k="27" />
+<hkern u1="s" u2="&#x2122;" k="47" />
+<hkern u1="s" u2="&#x7d;" k="20" />
+<hkern u1="s" u2="x" k="8" />
+<hkern u1="s" u2="v" k="8" />
+<hkern u1="s" u2="]" k="43" />
+<hkern u1="s" u2="\" k="53" />
+<hkern u1="s" u2="Y" k="92" />
+<hkern u1="s" u2="X" k="16" />
+<hkern u1="s" u2="W" k="51" />
+<hkern u1="s" u2="V" k="61" />
+<hkern u1="s" u2="U" k="18" />
+<hkern u1="s" u2="T" k="145" />
+<hkern u1="s" u2="O" k="10" />
+<hkern u1="s" u2="I" k="12" />
+<hkern u1="s" u2="A" k="10" />
+<hkern u1="s" u2="&#x2f;" k="20" />
+<hkern u1="s" u2="&#x29;" k="41" />
+<hkern u1="t" u2="&#x2122;" k="39" />
+<hkern u1="t" u2="o" k="8" />
+<hkern u1="t" u2="]" k="25" />
+<hkern u1="t" u2="\" k="33" />
+<hkern u1="t" u2="Y" k="68" />
+<hkern u1="t" u2="W" k="25" />
+<hkern u1="t" u2="V" k="37" />
+<hkern u1="t" u2="U" k="12" />
+<hkern u1="t" u2="T" k="119" />
+<hkern u1="u" u2="&#x2122;" k="37" />
+<hkern u1="u" u2="]" k="37" />
+<hkern u1="u" u2="\" k="41" />
+<hkern u1="u" u2="Z" k="14" />
+<hkern u1="u" u2="Y" k="72" />
+<hkern u1="u" u2="X" k="14" />
+<hkern u1="u" u2="W" k="51" />
+<hkern u1="u" u2="V" k="61" />
+<hkern u1="u" u2="U" k="10" />
+<hkern u1="u" u2="T" k="100" />
+<hkern u1="u" u2="O" k="10" />
+<hkern u1="u" u2="J" k="16" />
+<hkern u1="u" u2="I" k="10" />
+<hkern u1="u" u2="&#x29;" k="31" />
+<hkern u1="v" u2="&#x2039;" k="37" />
+<hkern u1="v" u2="&#xf0;" k="35" />
+<hkern u1="v" u2="&#xc6;" k="66" />
+<hkern u1="v" u2="s" k="14" />
+<hkern u1="v" u2="o" k="18" />
+<hkern u1="v" u2="a" k="14" />
+<hkern u1="v" u2="]" k="29" />
+<hkern u1="v" u2="Z" k="12" />
+<hkern u1="v" u2="Y" k="16" />
+<hkern u1="v" u2="X" k="49" />
+<hkern u1="v" u2="T" k="139" />
+<hkern u1="v" u2="J" k="53" />
+<hkern u1="v" u2="A" k="59" />
+<hkern u1="v" u2="&#x3a;" k="18" />
+<hkern u1="v" u2="&#x2f;" k="82" />
+<hkern u1="v" u2="&#x2e;" k="74" />
+<hkern u1="v" u2="&#x2a;" k="-18" />
+<hkern u1="v" u2="&#x29;" k="27" />
+<hkern u1="w" u2="&#x2039;" k="29" />
+<hkern u1="w" u2="&#xf0;" k="29" />
+<hkern u1="w" u2="&#xc6;" k="59" />
+<hkern u1="w" u2="s" k="8" />
+<hkern u1="w" u2="o" k="14" />
+<hkern u1="w" u2="a" k="10" />
+<hkern u1="w" u2="]" k="33" />
+<hkern u1="w" u2="Z" k="16" />
+<hkern u1="w" u2="Y" k="27" />
+<hkern u1="w" u2="X" k="53" />
+<hkern u1="w" u2="T" k="133" />
+<hkern u1="w" u2="J" k="57" />
+<hkern u1="w" u2="A" k="51" />
+<hkern u1="w" u2="&#x2f;" k="72" />
+<hkern u1="w" u2="&#x2e;" k="59" />
+<hkern u1="w" u2="&#x29;" k="31" />
+<hkern u1="x" u2="&#x2122;" k="27" />
+<hkern u1="x" u2="&#x2039;" k="45" />
+<hkern u1="x" u2="&#xf0;" k="45" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="a" k="10" />
+<hkern u1="x" u2="Y" k="39" />
+<hkern u1="x" u2="V" k="16" />
+<hkern u1="x" u2="U" k="12" />
+<hkern u1="x" u2="T" k="135" />
+<hkern u1="x" u2="O" k="25" />
+<hkern u1="x" u2="&#x2d;" k="49" />
+<hkern u1="y" u2="&#x2039;" k="37" />
+<hkern u1="y" u2="&#xf0;" k="35" />
+<hkern u1="y" u2="&#xc6;" k="66" />
+<hkern u1="y" u2="s" k="12" />
+<hkern u1="y" u2="o" k="18" />
+<hkern u1="y" u2="a" k="14" />
+<hkern u1="y" u2="]" k="23" />
+<hkern u1="y" u2="Z" k="12" />
+<hkern u1="y" u2="Y" k="16" />
+<hkern u1="y" u2="X" k="47" />
+<hkern u1="y" u2="T" k="139" />
+<hkern u1="y" u2="J" k="49" />
+<hkern u1="y" u2="A" k="59" />
+<hkern u1="y" u2="&#x3a;" k="18" />
+<hkern u1="y" u2="&#x2f;" k="76" />
+<hkern u1="y" u2="&#x2e;" k="74" />
+<hkern u1="y" u2="&#x2a;" k="-12" />
+<hkern u1="y" u2="&#x29;" k="23" />
+<hkern u1="z" u2="&#x2122;" k="43" />
+<hkern u1="z" u2="&#x2039;" k="31" />
+<hkern u1="z" u2="&#xf0;" k="14" />
+<hkern u1="z" u2="o" k="14" />
+<hkern u1="z" u2="]" k="33" />
+<hkern u1="z" u2="\" k="37" />
+<hkern u1="z" u2="Y" k="78" />
+<hkern u1="z" u2="W" k="33" />
+<hkern u1="z" u2="V" k="41" />
+<hkern u1="z" u2="U" k="20" />
+<hkern u1="z" u2="T" k="150" />
+<hkern u1="z" u2="O" k="12" />
+<hkern u1="z" u2="I" k="10" />
+<hkern u1="z" u2="&#x2d;" k="35" />
+<hkern u1="&#x7b;" u2="&#xf0;" k="23" />
+<hkern u1="&#x7b;" u2="u" k="25" />
+<hkern u1="&#x7b;" u2="s" k="20" />
+<hkern u1="&#x7b;" u2="o" k="35" />
+<hkern u1="&#x7b;" u2="j" k="-168" />
+<hkern u1="&#x7b;" u2="a" k="20" />
+<hkern u1="&#x7b;" u2="O" k="25" />
+<hkern u1="&#x7c;" u2="j" k="-104" />
+<hkern u1="&#x7d;" u2="&#x29;" k="20" />
+<hkern u1="&#xae;" u2="&#xc6;" k="25" />
+<hkern u1="&#xae;" u2="Y" k="33" />
+<hkern u1="&#xae;" u2="X" k="25" />
+<hkern u1="&#xae;" u2="T" k="25" />
+<hkern u1="&#xae;" u2="J" k="25" />
+<hkern u1="&#xae;" u2="A" k="27" />
+<hkern u1="&#xb0;" u2="&#x34;" k="49" />
+<hkern u1="&#xb7;" u2="l" k="150" />
+<hkern u1="&#xb7;" u2="&#x37;" k="41" />
+<hkern u1="&#xb7;" u2="&#x33;" k="53" />
+<hkern u1="&#xb7;" u2="&#x32;" k="51" />
+<hkern u1="&#xb7;" u2="&#x31;" k="59" />
+<hkern u1="&#xbf;" u2="Y" k="39" />
+<hkern u1="&#xbf;" u2="W" k="31" />
+<hkern u1="&#xbf;" u2="V" k="37" />
+<hkern u1="&#xbf;" u2="T" k="41" />
+<hkern u1="&#xce;" u2="&#x7d;" k="-20" />
+<hkern u1="&#xde;" u2="&#x2122;" k="25" />
+<hkern u1="&#xde;" u2="&#xc6;" k="39" />
+<hkern u1="&#xde;" u2="z" k="10" />
+<hkern u1="&#xde;" u2="x" k="14" />
+<hkern u1="&#xde;" u2="]" k="51" />
+<hkern u1="&#xde;" u2="\" k="35" />
+<hkern u1="&#xde;" u2="Z" k="27" />
+<hkern u1="&#xde;" u2="Y" k="49" />
+<hkern u1="&#xde;" u2="X" k="61" />
+<hkern u1="&#xde;" u2="W" k="12" />
+<hkern u1="&#xde;" u2="V" k="25" />
+<hkern u1="&#xde;" u2="T" k="37" />
+<hkern u1="&#xde;" u2="J" k="49" />
+<hkern u1="&#xde;" u2="A" k="39" />
+<hkern u1="&#xde;" u2="&#x2f;" k="61" />
+<hkern u1="&#xde;" u2="&#x2e;" k="66" />
+<hkern u1="&#xde;" u2="&#x29;" k="45" />
+<hkern u1="&#xdf;" u2="y" k="14" />
+<hkern u1="&#xdf;" u2="x" k="18" />
+<hkern u1="&#xdf;" u2="w" k="10" />
+<hkern u1="&#xdf;" u2="v" k="14" />
+<hkern u1="&#xdf;" u2="t" k="14" />
+<hkern u1="&#xdf;" u2="f" k="12" />
+<hkern u1="&#xdf;" u2="]" k="25" />
+<hkern u1="&#xdf;" u2="\" k="20" />
+<hkern u1="&#xdf;" u2="Z" k="14" />
+<hkern u1="&#xdf;" u2="Y" k="37" />
+<hkern u1="&#xdf;" u2="X" k="31" />
+<hkern u1="&#xdf;" u2="W" k="27" />
+<hkern u1="&#xdf;" u2="V" k="33" />
+<hkern u1="&#xdf;" u2="U" k="20" />
+<hkern u1="&#xdf;" u2="T" k="31" />
+<hkern u1="&#xdf;" u2="S" k="10" />
+<hkern u1="&#xdf;" u2="O" k="10" />
+<hkern u1="&#xdf;" u2="J" k="14" />
+<hkern u1="&#xdf;" u2="I" k="16" />
+<hkern u1="&#xdf;" u2="A" k="14" />
+<hkern u1="&#xdf;" u2="&#x2f;" k="31" />
+<hkern u1="&#xdf;" u2="&#x29;" k="33" />
+<hkern u1="&#xed;" u2="&#x2122;" k="-90" />
+<hkern u1="&#xed;" u2="&#x7d;" k="-33" />
+<hkern u1="&#xed;" u2="]" k="-55" />
+<hkern u1="&#xed;" u2="\" k="-18" />
+<hkern u1="&#xed;" u2="&#x2a;" k="-37" />
+<hkern u1="&#xee;" u2="&#x2122;" k="-72" />
+<hkern u1="&#xee;" u2="&#x3f;" k="-35" />
+<hkern u1="&#xee;" u2="&#x2a;" k="-84" />
+<hkern u1="&#xef;" u2="&#x2122;" k="-70" />
+<hkern u1="&#xef;" u2="&#x7d;" k="-12" />
+<hkern u1="&#xef;" u2="]" k="-33" />
+<hkern u1="&#xef;" u2="&#x2a;" k="-43" />
+<hkern u1="&#xf0;" u2="&#x2122;" k="31" />
+<hkern u1="&#xf0;" u2="&#x2019;" k="37" />
+<hkern u1="&#xf0;" u2="&#x2018;" k="37" />
+<hkern u1="&#xf0;" u2="&#xc6;" k="14" />
+<hkern u1="&#xf0;" u2="&#x7d;" k="20" />
+<hkern u1="&#xf0;" u2="z" k="8" />
+<hkern u1="&#xf0;" u2="y" k="12" />
+<hkern u1="&#xf0;" u2="x" k="27" />
+<hkern u1="&#xf0;" u2="w" k="8" />
+<hkern u1="&#xf0;" u2="v" k="14" />
+<hkern u1="&#xf0;" u2="t" k="12" />
+<hkern u1="&#xf0;" u2="f" k="10" />
+<hkern u1="&#xf0;" u2="]" k="39" />
+<hkern u1="&#xf0;" u2="\" k="33" />
+<hkern u1="&#xf0;" u2="Z" k="37" />
+<hkern u1="&#xf0;" u2="Y" k="80" />
+<hkern u1="&#xf0;" u2="X" k="61" />
+<hkern u1="&#xf0;" u2="W" k="59" />
+<hkern u1="&#xf0;" u2="V" k="70" />
+<hkern u1="&#xf0;" u2="U" k="18" />
+<hkern u1="&#xf0;" u2="T" k="82" />
+<hkern u1="&#xf0;" u2="S" k="16" />
+<hkern u1="&#xf0;" u2="J" k="25" />
+<hkern u1="&#xf0;" u2="I" k="12" />
+<hkern u1="&#xf0;" u2="A" k="20" />
+<hkern u1="&#xf0;" u2="&#x2f;" k="39" />
+<hkern u1="&#xf0;" u2="&#x2a;" k="18" />
+<hkern u1="&#xf0;" u2="&#x29;" k="39" />
+<hkern u1="&#xf0;" u2="&#x27;" k="18" />
+<hkern u1="&#x2018;" u2="&#xf0;" k="39" />
+<hkern u1="&#x2018;" u2="&#xc6;" k="133" />
+<hkern u1="&#x2018;" u2="s" k="49" />
+<hkern u1="&#x2018;" u2="o" k="74" />
+<hkern u1="&#x2018;" u2="a" k="43" />
+<hkern u1="&#x2018;" u2="O" k="23" />
+<hkern u1="&#x2018;" u2="J" k="29" />
+<hkern u1="&#x2018;" u2="A" k="125" />
+<hkern u1="&#x2018;" u2="&#x2e;" k="309" />
+<hkern u1="&#x2019;" u2="&#x2039;" k="33" />
+<hkern u1="&#x2019;" u2="&#xf0;" k="39" />
+<hkern u1="&#x2019;" u2="&#xc6;" k="133" />
+<hkern u1="&#x2019;" u2="&#xae;" k="25" />
+<hkern u1="&#x2019;" u2="s" k="49" />
+<hkern u1="&#x2019;" u2="o" k="74" />
+<hkern u1="&#x2019;" u2="a" k="43" />
+<hkern u1="&#x2019;" u2="O" k="23" />
+<hkern u1="&#x2019;" u2="J" k="29" />
+<hkern u1="&#x2019;" u2="A" k="125" />
+<hkern u1="&#x2019;" u2="&#x40;" k="57" />
+<hkern u1="&#x2019;" u2="&#x3a;" k="156" />
+<hkern u1="&#x2019;" u2="&#x2f;" k="172" />
+<hkern u1="&#x2019;" u2="&#x2e;" k="309" />
+<hkern u1="&#x2019;" u2="&#x26;" k="45" />
+<hkern u1="&#x2039;" u2="Y" k="66" />
+<hkern u1="&#x2039;" u2="W" k="23" />
+<hkern u1="&#x2039;" u2="V" k="35" />
+<hkern u1="&#x2039;" u2="T" k="111" />
+<hkern u1="&#x203a;" u2="z" k="25" />
+<hkern u1="&#x203a;" u2="y" k="37" />
+<hkern u1="&#x203a;" u2="x" k="43" />
+<hkern u1="&#x203a;" u2="w" k="29" />
+<hkern u1="&#x203a;" u2="v" k="37" />
+<hkern u1="&#x203a;" u2="t" k="27" />
+<hkern u1="&#x203a;" u2="s" k="20" />
+<hkern u1="&#x203a;" u2="f" k="27" />
+<hkern u1="&#x203a;" u2="Z" k="23" />
+<hkern u1="&#x203a;" u2="Y" k="109" />
+<hkern u1="&#x203a;" u2="X" k="33" />
+<hkern u1="&#x203a;" u2="W" k="57" />
+<hkern u1="&#x203a;" u2="V" k="72" />
+<hkern u1="&#x203a;" u2="T" k="127" />
+<hkern u1="&#x203a;" u2="J" k="27" />
+<hkern u1="&#x203a;" u2="&#x27;" k="29" />
+<hkern u1="&#x2122;" u2="&#xee;" k="-31" />
+<hkern u1="&#x2122;" u2="&#xec;" k="-14" />
+<hkern u1="&#x2122;" u2="&#xc6;" k="61" />
+<hkern u1="&#x2122;" u2="J" k="35" />
+<hkern u1="&#x2122;" u2="A" k="55" />
+</font>
+</defs></svg> -88t-37 -90t-89 -38t-89 37z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1194 459q-139 -145 -317.5 -145.5 t-297 111.5t-118.5 294t123 294.5t305 112.5t299 -122l-98 -121q-106 90 -209 90t-179.5 -68.5t-76.5 -178.5t76.5 -185.5t188 -75.5t206.5 100z" />
+<glyph unicode="&#xaa;" horiz-adv-x="720" d="M567 954h-96v68q-63 -76 -154.5 -76t-143.5 45t-52 119q0 150 203 150h139v18q0 100 -113 100q-68 0 -145 -51l-47 68q90 72 194 71q215 0 215 -186v-326zM461 1143v43h-119q-115 0 -115 -74q0 -37 29 -56.5t79 -19.5t88 30t38 77z" />
+<glyph unicode="&#xab;" horiz-adv-x="1120" d="M580 852l-236 -360l236 -361h-222l-243 361l243 360h222zM985 852l-235 -360l235 -361h-221l-244 361l244 360h221z" />
+<glyph unicode="&#xac;" horiz-adv-x="1695" d="M137 911h1370v-731h-168v551h-1202v180z" />
+<glyph unicode="&#xad;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#xae;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1210 860q0 -199 -174 -250l213 -288h-172 l-192 268h-176v-268h-140v800h301q182 0 261 -62.5t79 -199.5zM1031 747.5q42 34.5 42 113.5t-43 109.5t-151 30.5h-170v-288h165q115 0 157 34.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="868" d="M750 1407v-178h-629v178h629z" />
+<glyph unicode="&#xb0;" horiz-adv-x="851" d="M426 1464q131 0 223 -92t92 -223t-92 -222t-223 -91t-223 91t-92 222t92 223t223 92zM277.5 1001.5q60.5 -61.5 147.5 -61.5t147.5 61.5t60.5 147.5t-60.5 146.5t-147.5 60.5t-147.5 -60.5t-60.5 -146.5t60.5 -147.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1163" d="M489 565v277h-391v192h391v273h185v-273h391v-192h-391v-277h-185zM98 451h967v-172h-967v172z" />
+<glyph unicode="&#xb2;" horiz-adv-x="858" d="M519 1120q36 49 36 99.5t-38 85t-97 34.5q-104 0 -172 -104l-113 65q109 166 287 166q111 0 189.5 -66.5t78.5 -180.5q0 -63 -33.5 -122t-124.5 -153l-194 -199h379v-135h-572v119l252 256q86 86 122 135z" />
+<glyph unicode="&#xb3;" horiz-adv-x="811" d="M158 1305v127h495v-113l-204 -229q117 -2 181 -73t64 -183.5t-87 -186.5t-226 -74t-270 89l61 114q100 -72 217 -71q74 0 122 33.5t48 99t-53 104.5t-124 39t-116 -14v108l197 230h-305z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1705" d="M901 1286h-209l217 297l242 -100z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1314" d="M176 -397v1487h230v-598q0 -301 249 -302q119 0 207 79t88 231v590h230v-1090h-230v199q-55 -100 -152.5 -157.5t-204 -57.5t-187.5 34v-415h-230z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1374" d="M72 1139q0 174 120.5 292.5t366.5 118.5h612v-1779h-190v1585h-229v-1585h-185v981q-49 -6 -94 -7q-113 0 -196.5 39t-124.5 101q-80 119 -80 254z" />
+<glyph unicode="&#xb7;" horiz-adv-x="595" d="M145 653.5q0 63.5 44 107.5t107.5 44t109 -44t45.5 -107.5t-45.5 -108.5t-109 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="575" d="M481 -240q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59.5 25.5t-60 -10l73 139h146l-41 -78q143 -19 143 -162z" />
+<glyph unicode="&#xb9;" horiz-adv-x="548" d="M84 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xba;" horiz-adv-x="774" d="M387 1032q72 0 118 47t46 122t-46 122t-118 47t-118 -47t-46 -122t46 -122t118 -47zM387 934q-117 0 -194.5 76.5t-77.5 189.5t77.5 189.5t194.5 76.5t194.5 -76.5t77.5 -189.5t-77.5 -189.5t-194.5 -76.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1120" d="M776 492l-235 360h221l244 -360l-244 -361h-221zM371 492l-236 360h221l244 -360l-244 -361h-221z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1767" d="M1210 1550h148l-764 -1566h-148zM1452 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM72 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1900" d="M1276 1550h147l-764 -1566h-147zM1613 510q36 49 36 99t-38 85t-98 35q-100 0 -172 -104l-110 65q109 166 285 166q111 0 190.5 -66.5t79.5 -181.5q0 -63 -34 -122.5t-124 -151.5l-196 -199h378v-135h-571v119l254 256q84 86 120 135zM72 1432h303v-838h-133v713h-170 v125z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1845" d="M1294 1550h148l-764 -1566h-148zM1536 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM129 1305v127h496v-113l-205 -229q117 -2 181.5 -73t64.5 -183.5t-87 -186.5t-226.5 -74t-270.5 89l61 114q100 -72 217 -71q74 0 122 33.5 t48 99t-53 104.5t-123.5 39t-115.5 -14v108l196 230h-305z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1040" d="M422 1004h231v-125q0 -82 -19.5 -122t-84.5 -106l-150 -149q-47 -51 -47 -127t49.5 -126t127 -50t130 48t60.5 128h248q-20 -182 -142.5 -285.5t-304.5 -103.5t-296.5 99t-114.5 277q0 123 67 205q39 49 59.5 69.5t54.5 52.5t57.5 55.5t37.5 41.5q37 43 37 125v93z M645 1414q47 -44 47 -106.5t-46 -107.5t-110.5 -45t-111.5 44t-47 106.5t46 107.5t110.5 45t111.5 -44z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM860 1550h-209l-250 197l242 100z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1519" d="M401 326l-143 -326h-258l631 1432h258l631 -1432h-258l-144 326h-717zM1020 549l-260 590l-260 -590h520zM870 1552h-208l217 297l241 -100z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM633 1825h213l250 -275h-199l-158 115l-157 -115h-199z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM897 1544q-53 0 -148.5 48t-121.5 48q-68 0 -70 -90h-151q0 119 48 193t134 74q55 0 153.5 -48.5t128.5 -48.5q61 0 62 90h153q-6 -266 -188 -266z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM468 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM848 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1495" d="M903.5 1729.5q67.5 -64.5 67.5 -162t-97 -162.5l621 -1405h-266l-146 326h-686l-139 -326h-258l618 1407q-92 66 -92 162t66.5 160.5t155 64.5t156 -64.5zM987 549l-246 551l-243 -551h489zM829.5 1498q30.5 32 30.5 82t-30.5 82t-81 32t-82 -32t-31.5 -82t31.5 -82 t82 -32t81 32z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2129" d="M1995 1432v-226h-764v-393h686v-211h-686v-377h788v-225h-1052v326h-518l-175 -326h-297l750 1432h1268zM967 557v649h-60l-342 -649h402z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1507" d="M852 219q125 0 215 42t188 134l156 -159q-213 -238 -520 -250l-33 -64q143 -18 143 -162q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59 25.5t-60.5 -10l68 129q-281 35 -461.5 237.5t-180.5 507.5t218.5 518t551 213 t556.5 -245l-154 -168q-102 98 -193.5 137t-214.5 39q-217 0 -364.5 -140.5t-147.5 -358.5t146.5 -364.5t347.5 -146.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M862 1550h-209l-250 197l242 100zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005zM811 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M596 1825h213l250 -275h-199l-158 115l-157 -115h-199zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M425 1579q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM805 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcc;" horiz-adv-x="638" d="M428 1550h-209l-250 197l242 100zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xcd;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM420 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xce;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM236 1825h213l249 -275h-198l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xcf;" horiz-adv-x="638" d="M42 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM422 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1617" d="M53 602v215h162v615h492q385 0 591.5 -187.5t206.5 -521.5t-200.5 -528.5t-614.5 -194.5h-475v602h-162zM1262 717q0 492 -564 491h-241v-391h512v-215h-512v-375h268q260 0 398.5 124t138.5 366z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1712" d="M1272 1432h241v-1432h-262l-811 1044v-1044h-241v1432h241l832 -1070v1070zM1001 1544q-53 0 -148 48t-122 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1720" d="M1016 1550h-209l-250 197l242 100zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528 t-536.5 -212z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM897 1550h-209l217 297 l242 -100z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM750 1825h213l249 -275h-198 l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM1008 1544q-53 0 -148.5 48 t-122.5 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-6 -266 -188 -266z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1720" d="M570.5 1579q-35.5 37 -35.5 89t35.5 89t89 37t90 -36t36.5 -88t-36.5 -90t-90 -38t-89 37zM950 1579q-37 37 -37 89t37 89t89.5 37t89 -36t36.5 -88t-37.5 -90t-89 -38t-88.5 37zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5 t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1157" d="M580 907l348 350l129 -131l-346 -346l348 -350l-129 -131l-350 350l-351 -350l-131 131l351 350l-349 346l131 131z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1720" d="M1614 727q0 -317 -217 -529t-537 -212q-109 0 -207 24l-116 -250h-205l149 320q-174 94 -274.5 265t-100.5 382q0 315 217.5 527t536.5 212q125 0 248 -39l111 234h204l-145 -313q156 -98 246 -261t90 -360zM860 1245q-213 0 -359.5 -151.5t-146.5 -368.5 q0 -133 60.5 -248t165.5 -186l434 930q-74 24 -154 24zM1366 725q0 250 -188 408l-428 -916q57 -10 110 -10q213 0 359.5 151.5t \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.ttf b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.ttf
new file mode 100644
index 00000000..e3985ca9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.ttf
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.woff b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.woff
new file mode 100644
index 00000000..2e1467b0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/montserrat-regular.woff
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/normalize.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/normalize.css
new file mode 100644
index 00000000..4d4d01d1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/css/normalize.css
@@ -0,0 +1,527 @@
+/*! normalize.css v1.1.0 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+ HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+ display: none;
+}
+
+/* ==========================================================================
+ Base
+ ========================================================================== */
+
+/**
+ * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ * `em` units.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-size: 100%; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+ -ms-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+ font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+ margin: 0;
+}
+
+/* ==========================================================================
+ Links
+ ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+ outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* ==========================================================================
+ Typography
+ ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+h2 {
+ font-size: 1.5em;
+ margin: 0.83em 0;
+}
+
+h3 {
+ font-size: 1.17em;
+ margin: 1em 0;
+}
+
+h4 {
+ font-size: 1em;
+ margin: 1.33em 0;
+}
+
+h5 {
+ font-size: 0.83em;
+ margin: 1.67em 0;
+}
+
+h6 {
+ font-size: 0.67em;
+ margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+blockquote {
+ margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+ margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, serif;
+ _font-family: 'courier new', monospace;
+ font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+ white-space: pre;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+ quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+ content: '';
+ content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* ==========================================================================
+ Lists
+ ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+ margin: 1em 0;
+}
+
+dd {
+ margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+ padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+ list-style: none;
+ list-style-image: none;
+}
+
+/* ==========================================================================
+ Embedded content
+ ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+ border: 0; /* 1 */
+ -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* ==========================================================================
+ Figures
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+ margin: 0;
+}
+
+/* ==========================================================================
+ Forms
+ ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+ margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0;
+ white-space: normal; /* 2 */
+ *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ * and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+ font-size: 100%; /* 1 */
+ margin: 0; /* 2 */
+ vertical-align: baseline; /* 3 */
+ *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+ line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ * Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+ *overflow: visible; /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ * Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+ *height: 13px; /* 3 */
+ *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+ overflow: auto; /* 1 */
+ vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+ Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/index.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/index.html
new file mode 100644
index 00000000..67920887
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/index.html
@@ -0,0 +1,1544 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>Checkboxes and radio buttons customization (jQuery and Zepto) plugin</title>
+ <meta charset="utf-8">
+ <meta content="width=device-width" name="viewport">
+ <link href="./css/custom.css?v=1.0.2" rel="stylesheet">
+ <link href="../skins/all.css?v=1.0.2" rel="stylesheet">
+ <script src="./js/jquery.js"></script>
+ <script src="../icheck.js?v=1.0.2"></script>
+ <script src="./js/custom.min.js?v=1.0.2"></script>
+</head>
+<body>
+ <div class="layout clear">
+ <div class="header">
+ <h1>super customized checkboxes and radio buttons for jQuery &amp; Zepto</h1>
+ <h3>iCheck <span>v1.0.2</span></h3>
+ <strong>@<a href="http://twitter.com/fronteed/">Fronteed</a></strong>
+ </div>
+ <div class="features">
+ <div class="arrows">
+ <div class="bottom" data-to="demo"></div>
+ </div>
+ <h2>Plugin features</h2>
+ <ul>
+ <li>
+ <strong>Identical inputs across different browsers and devices</strong> &mdash; both <span class="self" data-to="download">desktop and mobile</span>
+ </li>
+ <li>
+ <strong>Touch devices support</strong> &mdash; iOS, Android, BlackBerry, Windows Phone, Amazon Kindle
+ </li>
+ <li>
+ <strong>Keyboard accessible inputs</strong> &mdash; <span class="mark">Tab</span>, <span class="mark">Spacebar</span>, <span class="mark">Arrow up/down</span> and other shortcuts
+ </li>
+ <li>
+ <strong>Screenreader accessible inputs</strong> &mdash; <a href="https://developer.mozilla.org/en-US/docs/Accessibility/ARIA" target="blank">ARIA</a> attributes for VoiceOver and others
+ </li>
+ <li>
+ <strong>Customization freedom</strong> &mdash; use any HTML and CSS to style inputs (try <span class="self" data-to="skins">6 Retina-ready skins</span>)
+ </li>
+ <li>
+ <strong>jQuery and Zepto</strong> JavaScript libraries support from single file
+ </li>
+ <li>
+ <strong>Lightweight size</strong> &mdash; 1 kb gzipped
+ </li>
+ <li class="offset">
+ <strong class="self" data-to="options">32 options</strong> to customize checkboxes and radio buttons
+ </li>
+ <li>
+ <strong class="self" data-to="callbacks">11 callbacks</strong> to handle changes
+ </li>
+ <li>
+ <strong class="self" data-to="methods">9 methods</strong> to make changes programmatically
+ </li>
+ <li>
+ Saves changes to original inputs, <span class="self" data-to="init">works carefully</span> with any selectors
+ </li>
+ </ul>
+ </div>
+ <div class="social clear">
+ <ul class="left">
+ <li>
+ <a href="http://github.com/fronteed/iCheck/">Download latest version</a>
+ </li>
+ </ul>
+ <ul class="right local">
+ <li>
+ <a href="http://twitter.com/fronteed/">Follow @fronteed</a>
+ </li>
+ <li>
+ <a href="https://twitter.com/intent/tweet?text=Highly customizable checkboxes and radio buttons&amp;url=http://fronteed.com/iCheck/&amp;via=fronteed&amp;hashtags=jQuery,Zepto">Share on Twitter</a>
+ </li>
+ <li>
+ <a href="https://github.com/fronteed/iCheck">Star on GitHub</a>
+ </li>
+ </ul>
+ </div>
+ <div class="demo-holder">
+ <h2 class="demo-title">Demo</h2>
+ <div class="demo">
+ <div class="arrows">
+ <div class="top" data-to="features"></div>
+ <div class="bottom" data-to="skins"></div>
+ </div>
+ <div class="demo-list clear">
+ <ul>
+ <li>
+ <input tabindex="1" type="checkbox" id="input-1">
+ <label for="input-1">Checkbox, <span>#input-1</span></label>
+ </li>
+ <li>
+ <input tabindex="2" type="checkbox" id="input-2" checked>
+ <label for="input-2">Checkbox, <span>#input-2</span></label>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <input tabindex="3" type="radio" id="input-3" name="demo-radio">
+ <label for="input-3">Radio button, <span>#input-3</span></label>
+ </li>
+ <li>
+ <input tabindex="4" type="radio" id="input-4" name="demo-radio" checked>
+ <label for="input-4">Radio button, <span>#input-4</span></label>
+ </li>
+ </ul>
+ <script>
+ $(document).ready(function(){
+ var callbacks_list = $('.demo-callbacks ul');
+ $('.demo-list input').on('ifCreated ifClicked ifChanged ifChecked ifUnchecked ifDisabled ifEnabled ifDestroyed', function(event){
+ callbacks_list.prepend('<li><span>#' + this.id + '</span> is ' + event.type.replace('if', '').toLowerCase() + '</li>');
+ }).iCheck({
+ checkboxClass: 'icheckbox_square-blue',
+ radioClass: 'iradio_square-blue',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </div>
+ <dl class="demo-methods">
+ <dt>
+ <span class="self do-check">Add <span class="mark">checked</span> state to 1 and 3 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-1, #input-3').iCheck('check');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-uncheck">Remove <span class="mark">checked</span> state from 1 and 3 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-1, #input-3').iCheck('uncheck');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-disable">Add <span class="mark">disabled</span> state to 2 and 4 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-2, #input-4').iCheck('disable');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-enable">Remove <span class="mark">disabled</span> state from 2 and 4 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-2, #input-4').iCheck('enable');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-destroy">Remove all traces of iCheck</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('input').iCheck('destroy');
+</pre>
+ </dd>
+ </dl>
+ <div class="demo-callbacks">
+ <h2>Callbacks</h2>
+ <ul></ul>
+ </div>
+ </div>
+ </div>
+ <div class="skins">
+ <h2>Skins</h2>
+ <div class="skin skin-minimal">
+ <div class="arrows">
+ <div class="top" data-to="demo"></div>
+ <div class="bottom" data-to="skin-square"></div>
+ </div>
+ <h3>Minimal skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="5" type="checkbox" id="minimal-checkbox-1">
+ <label for="minimal-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="6" type="checkbox" id="minimal-checkbox-2" checked>
+ <label for="minimal-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="minimal-checkbox-disabled" disabled>
+ <label for="minimal-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="minimal-checkbox-disabled-checked" checked disabled>
+ <label for="minimal-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="7" type="radio" id="minimal-radio-1" name="minimal-radio">
+ <label for="minimal-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="8" type="radio" id="minimal-radio-2" name="minimal-radio" checked>
+ <label for="minimal-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="minimal-radio-disabled" disabled>
+ <label for="minimal-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="minimal-radio-disabled-checked" checked disabled>
+ <label for="minimal-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li class="active" title="Black"></li>
+ <li class="red" title="Red"></li>
+ <li class="green" title="Green"></li>
+ <li class="blue" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_minimal"></div>
+ <div class="state iradio_minimal"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_minimal hover"></div>
+ <div class="state iradio_minimal hover"></div>
+ Hover
+ </li>
+ <li>
+ <div class="state icheckbox_minimal checked"></div>
+ <div class="state iradio_minimal checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_minimal disabled"></div>
+ <div class="state iradio_minimal disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_minimal checked disabled"></div>
+ <div class="state iradio_minimal checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-minimal input').iCheck({
+ checkboxClass: 'icheckbox_minimal',
+ radioClass: 'iradio_minimal',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; minimal.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/minimal/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/minimal/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/minimal/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_minimal',
+ radioClass: 'iradio_minimal',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_minimal-red',
+ radioClass: 'iradio_minimal-red',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-square">
+ <div class="arrows">
+ <div class="top" data-to="skin-minimal"></div>
+ <div class="bottom" data-to="skin-flat"></div>
+ </div>
+ <h3>Square skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="9" type="checkbox" id="square-checkbox-1">
+ <label for="square-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="10" type="checkbox" id="square-checkbox-2" checked>
+ <label for="square-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="square-checkbox-disabled" disabled>
+ <label for="square-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="square-checkbox-disabled-checked" checked disabled>
+ <label for="square-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="11" type="radio" id="square-radio-1" name="square-radio">
+ <label for="square-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="12" type="radio" id="square-radio-2" name="square-radio" checked>
+ <label for="square-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="square-radio-disabled" disabled>
+ <label for="square-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="square-radio-disabled-checked" checked disabled>
+ <label for="square-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li title="Black"></li>
+ <li class="red" title="Red"></li>
+ <li class="green active" title="Green"></li>
+ <li class="blue" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_square-green"></div>
+ <div class="state iradio_square-green"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_square-green hover"></div>
+ <div class="state iradio_square-green hover"></div>
+ Hover
+ </li>
+ <li>
+ <div class="state icheckbox_square-green checked"></div>
+ <div class="state iradio_square-green checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_square-green disabled"></div>
+ <div class="state iradio_square-green disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_square-green checked disabled"></div>
+ <div class="state iradio_square-green checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-square input').iCheck({
+ checkboxClass: 'icheckbox_square-green',
+ radioClass: 'iradio_square-green',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; square.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/square/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/square/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/square/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_square',
+ radioClass: 'iradio_square',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_square-red',
+ radioClass: 'iradio_square-red',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-flat">
+ <div class="arrows">
+ <div class="top" data-to="skin-square"></div>
+ <div class="bottom" data-to="skin-line"></div>
+ </div>
+ <h3>Flat skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="13" type="checkbox" id="flat-checkbox-1">
+ <label for="flat-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="14" type="checkbox" id="flat-checkbox-2" checked>
+ <label for="flat-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="flat-checkbox-disabled" disabled>
+ <label for="flat-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="flat-checkbox-disabled-checked" checked disabled>
+ <label for="flat-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="15" type="radio" id="flat-radio-1" name="flat-radio">
+ <label for="flat-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="16" type="radio" id="flat-radio-2" name="flat-radio" checked>
+ <label for="flat-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="flat-radio-disabled" disabled>
+ <label for="flat-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="flat-radio-disabled-checked" checked disabled>
+ <label for="flat-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li title="Black"></li>
+ <li class="red active" title="Red"></li>
+ <li class="green" title="Green"></li>
+ <li class="blue" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_flat-red"></div>
+ <div class="state iradio_flat-red"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_flat-red checked"></div>
+ <div class="state iradio_flat-red checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_flat-red disabled"></div>
+ <div class="state iradio_flat-red disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_flat-red checked disabled"></div>
+ <div class="state iradio_flat-red checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-flat input').iCheck({
+ checkboxClass: 'icheckbox_flat-red',
+ radioClass: 'iradio_flat-red'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; flat.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/flat/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/flat/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/flat/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_flat',
+ radioClass: 'iradio_flat'
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_flat-red',
+ radioClass: 'iradio_flat-red'
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-line">
+ <div class="arrows">
+ <div class="top" data-to="skin-flat"></div>
+ <div class="bottom" data-to="skin-polaris"></div>
+ </div>
+ <h3>Line skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="17" type="checkbox" id="line-checkbox-1">
+ <label for="line-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="18" type="checkbox" id="line-checkbox-2" checked>
+ <label for="line-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="line-checkbox-disabled" disabled>
+ <label for="line-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="line-checkbox-disabled-checked" checked disabled>
+ <label for="line-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="19" type="radio" id="line-radio-1" name="line-radio">
+ <label for="line-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="20" type="radio" id="line-radio-2" name="line-radio" checked>
+ <label for="line-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="line-radio-disabled" disabled>
+ <label for="line-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="line-radio-disabled-checked" checked disabled>
+ <label for="line-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li title="Black"></li>
+ <li class="red" title="Red"></li>
+ <li class="green" title="Green"></li>
+ <li class="blue active" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_line-blue">
+ <div class="icheck_line-icon"></div>
+ Normal
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue hover">
+ <div class="icheck_line-icon"></div>
+ Hover
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue checked">
+ <div class="icheck_line-icon"></div>
+ Checked
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue disabled">
+ <div class="icheck_line-icon"></div>
+ Disabled
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue checked disabled">
+ <div class="icheck_line-icon"></div>
+ Disabled &amp; checked
+ </div>
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-line input').each(function(){
+ var self = $(this),
+ label = self.next(),
+ label_text = label.text();
+
+ label.remove();
+ self.iCheck({
+ checkboxClass: 'icheckbox_line-blue',
+ radioClass: 'iradio_line-blue',
+ insert: '<div class="icheck_line-icon"></div>' + label_text
+ });
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; line.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/line/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/line/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/line/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes, radio buttons and labels to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;label>Checkbox 1&lt;/label>
+
+&lt;input type="checkbox" checked>
+&lt;label>Checkbox 2&lt;/label>
+
+&lt;input type="radio" name="iCheck">
+&lt;label>Radio button 1&lt;/label>
+
+&lt;input type="radio" name="iCheck" checked>
+&lt;label>Radio button 2&lt;/label>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').each(function(){
+ var self = $(this),
+ label = self.next(),
+ label_text = label.text();
+
+ label.remove();
+ self.iCheck({
+ checkboxClass: 'icheckbox_line',
+ radioClass: 'iradio_line',
+ insert: '&lt;div class="icheck_line-icon">&lt;/div>' + label_text
+ });
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').each(function(){
+ var self = $(this),
+ label = self.next(),
+ label_text = label.text();
+
+ label.remove();
+ self.iCheck({
+ checkboxClass: 'icheckbox_line-red',
+ radioClass: 'iradio_line-red',
+ insert: '&lt;div class="icheck_line-icon">&lt;/div>' + label_text
+ });
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-polaris">
+ <div class="arrows">
+ <div class="top" data-to="skin-line"></div>
+ <div class="bottom" data-to="skin-futurico"></div>
+ </div>
+ <h3>Polaris skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="21" type="checkbox" id="polaris-checkbox-1">
+ <label for="polaris-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="22" type="checkbox" id="polaris-checkbox-2" checked>
+ <label for="polaris-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="polaris-checkbox-disabled" disabled>
+ <label for="polaris-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="polaris-checkbox-disabled-checked" checked disabled>
+ <label for="polaris-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="23" type="radio" id="polaris-radio-1" name="polaris-radio">
+ <label for="polaris-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="24" type="radio" id="polaris-radio-2" name="polaris-radio" checked>
+ <label for="polaris-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="polaris-radio-disabled" disabled>
+ <label for="polaris-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="polaris-radio-disabled-checked" checked disabled>
+ <label for="polaris-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_polaris"></div>
+ <div class="state iradio_polaris"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_polaris hover"></div>
+ <div class="state iradio_polaris hover"></div>
+ Hover
+ </li>
+ <li>
+ <div class="state icheckbox_polaris checked"></div>
+ <div class="state iradio_polaris checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_polaris disabled"></div>
+ <div class="state iradio_polaris disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_polaris checked disabled"></div>
+ <div class="state iradio_polaris checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-polaris input').iCheck({
+ checkboxClass: 'icheckbox_polaris',
+ radioClass: 'iradio_polaris',
+ increaseArea: '-10%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Copy <span class="mark">/skins/polaris/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/polaris/polaris.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_polaris',
+ radioClass: 'iradio_polaris',
+ increaseArea: '-10%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-futurico">
+ <div class="arrows">
+ <div class="top" data-to="skin-polaris"></div>
+ <div class="bottom" data-to="usage"></div>
+ </div>
+ <h3>Futurico skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="25" type="checkbox" id="futurico-checkbox-1">
+ <label for="futurico-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="26" type="checkbox" id="futurico-checkbox-2" checked>
+ <label for="futurico-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="futurico-checkbox-disabled" disabled>
+ <label for="futurico-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="futurico-checkbox-disabled-checked" checked disabled>
+ <label for="futurico-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="27" type="radio" id="futurico-radio-1" name="futurico-radio">
+ <label for="futurico-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="28" type="radio" id="futurico-radio-2" name="futurico-radio" checked>
+ <label for="futurico-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="futurico-radio-disabled" disabled>
+ <label for="futurico-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="futurico-radio-disabled-checked" checked disabled>
+ <label for="futurico-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_futurico"></div>
+ <div class="state iradio_futurico"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_futurico checked"></div>
+ <div class="state iradio_futurico checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_futurico disabled"></div>
+ <div class="state iradio_futurico disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_futurico checked disabled"></div>
+ <div class="state iradio_futurico checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-futurico input').iCheck({
+ checkboxClass: 'icheckbox_futurico',
+ radioClass: 'iradio_futurico',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Copy <span class="mark">/skins/futurico/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/futurico/futurico.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_futurico',
+ radioClass: 'iradio_futurico',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skins-info">
+ <p>All skins (except Line) are transparent, you may use them on any background.</p>
+ <p><a href="http://designmodo.com/square/?u=718" target="blank">Square</a>, <a href="http://designmodo.com/flat/?u=718" target="blank">Flat</a>, <a href="http://designmodo.com/?u=718" target="blank">Polaris</a> and <a href="http://designmodo.com/futuricopro/?u=718" target="blank">Futurico</a> skins are based on <a href="http://designmodo.com/shop/?u=718" target="blank">Designmodo's UI packs</a>.</p>
+ <p class="skins-banner">
+ <a href="http://designmodo.com/shop/?u=718" target="blank">Awesome UI packs</a>
+ </p>
+ </div>
+ </div>
+ <div class="usage">
+ <div class="arrows">
+ <div class="top" data-to="skin-futurico"></div>
+ <div class="bottom" data-to="comparison"></div>
+ </div>
+ <h2>Simple usage</h2>
+ <div class="usage-inner">
+ <p>
+ iCheck plugin works with checkboxes and radio buttons like a constructor.
+ <br><strong>It wraps each input with a div</strong>, which may be customized by you or using one of the <span class="self" data-to="skins">available skins</span>.
+ <br>You may also place inside that div some HTML code or text using <span class="mark">insert</span> option.
+ </p>
+ <p class="offset">For this HTML:</p>
+<pre class="markup">
+&lt;label>
+ &lt;input type="checkbox" name="quux[1]" disabled>
+ Foo
+&lt;/label>
+
+&lt;label for="baz[1]">Bar&lt;/label>
+&lt;input type="radio" name="quux[2]" id="baz[1]" checked>
+
+&lt;label for="baz[2]">Bar&lt;/label>
+&lt;input type="radio" name="quux[2]" id="baz[2]">
+</pre>
+ <p class="offset">With default options you'll get nearly this:</p>
+<pre class="markup">
+&lt;label>
+ &lt;div class="icheckbox disabled">
+ &lt;input type="checkbox" name="quux[1]" disabled>
+ &lt;/div>
+ Foo
+&lt;/label>
+
+&lt;label for="baz[1]">Bar&lt;/label>
+&lt;div class="iradio checked">
+ &lt;input type="radio" name="quux[2]" id="baz[1]" checked>
+&lt;/div>
+
+&lt;label for="baz[2]">Bar&lt;/label>
+&lt;div class="iradio">
+ &lt;input type="radio" name="quux[2]" id="baz[2]">
+&lt;/div>
+</pre>
+ <p><strong>By default, iCheck doesn't provide any CSS styles for wrapper divs</strong> (if you don't use <span class="self" data-to="skins">skins</span>).</p>
+ <h4 class="options">Options</h4>
+ <p>These options are default:</p>
+<pre class="markup">
+{
+ <span class="comment">// 'checkbox' or 'radio' to style only checkboxes or radio buttons, both by default</span>
+ handle: '',
+
+ <span class="comment">// base class added to customized checkboxes</span>
+ checkboxClass: 'icheckbox',
+
+ <span class="comment">// base class added to customized radio buttons</span>
+ radioClass: 'iradio',
+
+ <span class="comment">// class added on checked state (input.checked = true)</span>
+ checkedClass: 'checked',
+
+ <span class="comment">// if not empty, used instead of 'checkedClass' option (input type specific)</span>
+ checkedCheckboxClass: '',
+ checkedRadioClass: '',
+
+ <span class="comment">// if not empty, added as class name on unchecked state (input.checked = false)</span>
+ uncheckedClass: '',
+
+ <span class="comment">// if not empty, used instead of 'uncheckedClass' option (input type specific)</span>
+ uncheckedCheckboxClass: '',
+ uncheckedRadioClass: '',
+
+ <span class="comment">// class added on disabled state (input.disabled = true)</span>
+ disabledClass: 'disabled',
+
+ <span class="comment">// if not empty, used instead of 'disabledClass' option (input type specific)</span>
+ disabledCheckboxClass: '',
+ disabledRadioClass: '',
+
+ <span class="comment">// if not empty, added as class name on enabled state (input.disabled = false)</span>
+ enabledClass: '',
+
+ <span class="comment">// if not empty, used instead of 'enabledClass' option (input type specific)</span>
+ enabledCheckboxClass: '',
+ enabledRadioClass: '',
+
+ <span class="comment">// class added on <span class="self" data-to="indeterminate">indeterminate state</span> (input.indeterminate = true)</span>
+ indeterminateClass: 'indeterminate',
+
+ <span class="comment">// if not empty, used instead of 'indeterminateClass' option (input type specific)</span>
+ indeterminateCheckboxClass: '',
+ indeterminateRadioClass: '',
+
+ <span class="comment">// if not empty, added as class name on determinate state (input.indeterminate = false)</span>
+ determinateClass: '',
+
+ <span class="comment">// if not empty, used instead of 'determinateClass' option (input type specific)</span>
+ determinateCheckboxClass: '',
+ determinateRadioClass: '',
+
+ <span class="comment">// class added on hover state (pointer is moved onto input)</span>
+ hoverClass: 'hover',
+
+ <span class="comment">// class added on focus state (input has gained focus)</span>
+ focusClass: 'focus',
+
+ <span class="comment">// class added on active state (mouse button is pressed on input)</span>
+ activeClass: 'active',
+
+ <span class="comment">// adds hoverClass to customized input on label hover and labelHoverClass to label on input hover</span>
+ labelHover: true,
+
+ <span class="comment">// class added to label if labelHover set to true</span>
+ labelHoverClass: 'hover',
+
+ <span class="comment">// increase clickable area by given % (negative number to decrease)</span>
+ increaseArea: '',
+
+ <span class="comment">// true to set 'pointer' CSS cursor over enabled inputs and 'default' over disabled</span>
+ cursor: false,
+
+ <span class="comment">// set true to inherit original input's class name</span>
+ inheritClass: false,
+
+ <span class="comment">// if set to true, input's id is prefixed with 'iCheck-' and attached</span>
+ inheritID: false,
+
+ <span class="comment">// set true to activate ARIA support</span>
+ aria: false,
+
+ <span class="comment">// add HTML code or text inside customized input</span>
+ insert: ''
+}
+</pre>
+ <p>There's no need to copy and paste all of them, you can just mention the ones you need:</p>
+<pre class="markup">
+$('input').iCheck({
+ labelHover: false,
+ cursor: true
+});
+</pre>
+ <p>You can choose any class names and slyle them as you want.</p>
+ <h4 class="init">Initialize</h4>
+ <p>Just include <span class="mark">icheck.js</span> after <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]).</p>
+ <p>iCheck supports any selectors, but handles only checkboxes and radio buttons:</p>
+<pre class="markup">
+<span class="comment">// customize all inputs (will search for checkboxes and radio buttons)</span>
+$('input').iCheck();
+
+<span class="comment">// handle inputs only inside $('.block')</span>
+$('.block input').iCheck();
+
+<span class="comment">// handle only checkboxes inside $('.test')</span>
+$('.test input').iCheck({
+ handle: 'checkbox'
+});
+
+<span class="comment">// handle .vote class elements (will search inside the element, if it's not an input)</span>
+$('.vote').iCheck();
+
+<span class="comment">// you can also change options after inputs are customized</span>
+$('input.some').iCheck({
+ <span class="comment">// different options</span>
+});
+</pre>
+ <h4 class="indeterminate">Indeterminate</h4>
+ <p>HTML5 allows specifying <a href="http://css-tricks.com/indeterminate-checkboxes/" target="blank">indeterminate</a> ("partially" checked) state for checkboxes. iCheck supports it for both checkboxes and radio buttons.</p>
+ <p>You can make an input indeterminate through HTML using additional attributes (supported by iCheck). Both do the same job, but <span class="mark">indeterminate="true"</span> may not work in some browsers (like IE7):</p>
+<pre class="markup">
+<span class="comment">&lt;!-- indeterminate="true" --></span>
+&lt;input type="checkbox" indeterminate="true">
+&lt;input type="radio" indeterminate="true">
+
+<span class="comment">&lt;!-- determinate="false" --></span>
+&lt;input type="checkbox" determinate="false">
+&lt;input type="radio" determinate="false">
+</pre>
+ <p><span class="mark">indeterminate</span> and <span class="mark">determinate</span> <span class="self" data-to="methods">methods</span> can be used to toggle indeterminate state.</p>
+ <h4 class="callbacks">Callbacks</h4>
+ <p class="callbacks-info">iCheck provides plenty callbacks, which may be used to handle changes.</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Callback name</th>
+ <td>When used</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th>ifClicked</th>
+ <td>user clicked on a customized input or an assigned label</td>
+ </tr>
+ <tr>
+ <th>ifChanged</th>
+ <td>input's <span class="mark">checked</span>, <span class="mark">disabled</span> or <span class="mark">indeterminate</span> state is changed</td>
+ </tr>
+ <tr>
+ <th>ifChecked</th>
+ <td>input's state is changed to <span class="mark">checked</span></td>
+ </tr>
+ <tr>
+ <th>ifUnchecked</th>
+ <td><span class="mark">checked</span> state is removed</td>
+ </tr>
+ <tr>
+ <th>ifToggled</th>
+ <td>input's <span class="mark">checked</span> state is changed</td>
+ </tr>
+ <tr>
+ <th>ifDisabled</th>
+ <td>input's state is changed to <span class="mark">disabled</span></td>
+ </tr>
+ <tr>
+ <th>ifEnabled</th>
+ <td><span class="mark">disabled</span> state is removed</td>
+ </tr>
+ <tr>
+ <th>ifIndeterminate</th>
+ <td>input's state is changed to <span class="mark">indeterminate</span></td>
+ </tr>
+ <tr>
+ <th>ifDeterminate</th>
+ <td><span class="mark">indeterminate</span> state is removed</td>
+ </tr>
+ <tr>
+ <th>ifCreated</th>
+ <td>input is just customized</td>
+ </tr>
+ <tr>
+ <th>ifDestroyed</th>
+ <td>customization is just removed</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Use <span class="mark">on()</span> method to bind them to inputs:<p>
+<pre class="markup">
+$('input').on('ifChecked', function(event){
+ alert(event.type + ' callback');
+});
+</pre>
+ <p><span class="mark">ifCreated</span> callback should be binded before plugin init.</p>
+ <h4 class="methods">Methods</h4>
+ <p class="methods-info">These methods can be used to make changes programmatically (any selectors can be used):</p>
+ <p><span class="mark">$('input').iCheck('check');</span> &mdash; change input's state to <span class="mark">checked</span></p>
+ <p><span class="mark">$('input').iCheck('uncheck');</span> &mdash; remove <span class="mark">checked</span> state</p>
+ <p><span class="mark">$('input').iCheck('toggle');</span> &mdash; toggle <span class="mark">checked</span> state</p>
+ <p><span class="mark">$('input').iCheck('disable');</span> &mdash; change input's state to <span class="mark">disabled</span></p>
+ <p><span class="mark">$('input').iCheck('enable');</span> &mdash; remove <span class="mark">disabled</span> state</p>
+ <p><span class="mark">$('input').iCheck('indeterminate');</span> &mdash; change input's state to <span class="mark">indeterminate</span></p>
+ <p><span class="mark">$('input').iCheck('determinate');</span> &mdash; remove <span class="mark">indeterminate</span> state</p>
+ <p><span class="mark">$('input').iCheck('update');</span> &mdash; apply input changes, which were done outside the plugin</p>
+ <p><span class="mark">$('input').iCheck('destroy');</span> &mdash; remove all traces of iCheck</p>
+ <p class="methods-callback">You may also specify some function, that will be executed on each method call:</p>
+<pre class="markup">
+$('input').iCheck('check', function(){
+ alert('Well done, Sir');
+});
+</pre>
+ <p class="issue-tracker">Feel free to <a href="http://github.com/fronteed/iCheck/">fork and submit pull-request</a> or <a href="http://github.com/fronteed/iCheck/issues">submit an issue</a> if you find something not working.</p>
+ </div>
+ </div>
+ <div class="benefits comparison">
+ <div class="arrows">
+ <div class="top" data-to="usage"></div>
+ <div class="bottom" data-to="download"></div>
+ </div>
+ <h2>Comparison</h2>
+ <div class="benefits-inner">
+ <p>iCheck is created to avoid routine of reinventing the wheel when working with checkboxes and radio buttons. It provides an expected identical result for the huge number of browsers, devices and their versions. Callbacks and methods can be used to easily handle and make changes at customized inputs.</p>
+ <p>There are some CSS3 ways available to style checkboxes and radio buttons, like <a href="http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/quick-tip-easy-css3-checkboxes-and-radio-buttons/" target="blank">this one</a>. You have to know about some of the disadvantages of similar methods:</p>
+ <ul>
+ <li>
+ &mdash; inputs are keyboard inaccessible, since <span class="mark">display: none</span> or <span class="mark">visibility: hidden</span> used to hide them
+ </li>
+ <li>
+ &mdash; poor browser support
+ </li>
+ <li>
+ &mdash; multiple bugs on mobile devices
+ </li>
+ <li>
+ &mdash; tricky, harder to maintain CSS code
+ </li>
+ <li>
+ &mdash; JavaScript is still needed to fix specific issues
+ </li>
+ </ul>
+ <p>While CSS3 method is quite limited solution, iCheck is made to be an everyday replacement covering most of the tasks.</p>
+ </div>
+ </div>
+ <div class="browsers">
+ <h2>Browser support</h2>
+ <div class="browsers-inner">
+ <p>iCheck is verified to work in Internet Explorer 6+, Firefox 2+, Opera 9+, Google Chrome and Safari browsers. Should also work in many others.</p>
+ <p>Mobile browsers (like Opera mini, Chrome mobile, Safari mobile, Android browser, Silk and others) are also supported. Tested on iOS (iPad, iPhone, iPod), Android, BlackBerry and Windows Phone devices.</p>
+ </div>
+ </div>
+ <div class="download">
+ <a href="http://github.com/fronteed/iCheck/">Download plugin</a>
+ </div>
+ <div class="license">iCheck plugin is released under the <a href="http://en.wikipedia.org/wiki/MIT_License" target="blank">MIT License</a>. Feel free to use it in personal and commercial projects.</div>
+ </div>
+ <div class="footer">
+ <div class="footer-inner clear">
+ <ul class="local">
+ <li>
+ <a href="https://github.com/fronteed/iCheck">Star on Github</a>
+ </li>
+ <li>
+ <a href="https://twitter.com/intent/tweet?text=Highly customizable checkboxes and radio buttons&amp;url=http://fronteed.com/iCheck/&amp;via=fronteed&amp;hashtags=jQuery,Zepto">Share on Twitter</a>
+ </li>
+ <li>
+ <a href="http://twitter.com/fronteed/">Follow @fronteed</a>
+ </li>
+ </ul>
+ <div class="code">
+ Created by <a href="http://fronteed.com/">Damir Sultanov</a>
+ </div>
+ </div>
+ </div>
+ <a href="http://github.com/fronteed/iCheck/" class="fork-me">Fork me on GitHub</a>
+</body>
+</html>
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.js
new file mode 100644
index 00000000..eace30ed
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.js
@@ -0,0 +1,109 @@
+$(document).ready(function() {
+ var hash = window.location.hash.replace('#', '');
+
+ if (hash && $('.' + hash).length) {
+ var point = $('.' + hash).offset().top - 40;
+
+ if (window.Zepto) {
+ window.scrollTo(0, point);
+ } else {
+ $(window).scrollTop($('.' + hash).offset().top - 40);
+ };
+ };
+
+ $('.skin dt').click(function() {
+ $(this).siblings().removeClass('selected').end().prev('dd').andSelf().addClass('selected');
+ });
+
+ $('.arrows .top, .arrows .bottom, .features .self, .skins-info .self, .usage .self').click(function(event) {
+ var target = $(this).data('to'),
+ target_offset = $('.' + target).offset().top;
+
+ event.preventDefault();
+ window.location.hash = target;
+
+ if (window.Zepto) {
+ window.scrollTo(0, target_offset - 40);
+ } else {
+ $('html, body').stop().animate({scrollTop: target_offset - 40}, 600);
+ };
+ });
+
+ $('.colors li').click(function() {
+ var self = $(this);
+
+ if (!self.hasClass('active')) {
+ self.siblings().removeClass('active');
+
+ var skin = self.closest('.skin'),
+ color = self.attr('class') ? '-' + self.attr('class') : '',
+ checkbox = skin.data('icheckbox'),
+ radio = skin.data('iradio'),
+ checkbox_default = 'icheckbox_minimal',
+ radio_default = 'iradio_minimal';
+
+ if (skin.hasClass('skin-square')) {
+ checkbox_default = 'icheckbox_square', radio_default = 'iradio_square';
+ checkbox == undefined && (checkbox = 'icheckbox_square-green', radio = 'iradio_square-green');
+ };
+
+ if (skin.hasClass('skin-flat')) {
+ checkbox_default = 'icheckbox_flat', radio_default = 'iradio_flat';
+ checkbox == undefined && (checkbox = 'icheckbox_flat-red', radio = 'iradio_flat-red');
+ };
+
+ if (skin.hasClass('skin-line')) {
+ checkbox_default = 'icheckbox_line', radio_default = 'iradio_line';
+ checkbox == undefined && (checkbox = 'icheckbox_line-blue', radio = 'iradio_line-blue');
+ };
+
+ checkbox == undefined && (checkbox = checkbox_default, radio = radio_default);
+
+ skin.find('input, .skin-states .state').each(function() {
+ var element = $(this).hasClass('state') ? $(this) : $(this).parent(),
+ element_class = element.attr('class').replace(checkbox, checkbox_default + color).replace(radio, radio_default + color);
+
+ element.attr('class', element_class);
+ });
+
+ skin.data('icheckbox', checkbox_default + color);
+ skin.data('iradio', radio_default + color);
+ self.addClass('active');
+ };
+ });
+
+ $('.demo-methods dt .self').click(function() {
+ var self = $(this),
+ self_class = self.attr('class').replace('self ', '');
+
+ switch (self_class) {
+ case 'do-check':
+ $('#input-1, #input-3').iCheck('check');
+ break;
+ case 'do-uncheck':
+ $('#input-1, #input-3').iCheck('uncheck');
+ break;
+ case 'do-disable':
+ $('#input-2, #input-4').iCheck('disable');
+ break;
+ case 'do-enable':
+ $('#input-2, #input-4').iCheck('enable');
+ break;
+ case 'do-destroy':
+ $('.demo-list input').iCheck('destroy');
+ break;
+ default:
+ var text = self.hasClass('active') ? 'show code' : 'hide code';
+
+ self.toggleClass('active').text(text);
+
+ if (window.Zepto) {
+ $(this).closest('dt').next().toggle();
+ } else {
+ $(this).closest('dt').next().slideToggle(200);
+ };
+
+ break;
+ };
+ });
+}); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.min.js
new file mode 100644
index 00000000..cd9ab216
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/custom.min.js
@@ -0,0 +1,5 @@
+$(document).ready(function(){var h=window.location.hash.replace("#","");if(h&&$("."+h).length){var k=$("."+h).offset().top-40;window.Zepto?window.scrollTo(0,k):$(window).scrollTop($("."+h).offset().top-40)}$(".skin dt").click(function(){$(this).siblings().removeClass("selected").end().prev("dd").andSelf().addClass("selected")});$(".arrows .top, .arrows .bottom, .features .self, .skins-info .self, .usage .self").click(function(b){var a=$(this).data("to"),d=$("."+a).offset().top;b.preventDefault();
+window.location.hash=a;window.Zepto?window.scrollTo(0,d-40):$("html, body").stop().animate({scrollTop:d-40},600)});$(".colors li").click(function(){var b=$(this);if(!b.hasClass("active")){b.siblings().removeClass("active");var a=b.closest(".skin"),d=b.attr("class")?"-"+b.attr("class"):"",c=a.data("icheckbox"),g=a.data("iradio"),e="icheckbox_minimal",f="iradio_minimal";a.hasClass("skin-square")&&(e="icheckbox_square",f="iradio_square",void 0==c&&(c="icheckbox_square-green",g="iradio_square-green"));
+a.hasClass("skin-flat")&&(e="icheckbox_flat",f="iradio_flat",void 0==c&&(c="icheckbox_flat-red",g="iradio_flat-red"));a.hasClass("skin-line")&&(e="icheckbox_line",f="iradio_line",void 0==c&&(c="icheckbox_line-blue",g="iradio_line-blue"));void 0==c&&(c=e,g=f);a.find("input, .skin-states .state").each(function(){var a=$(this).hasClass("state")?$(this):$(this).parent(),b=a.attr("class").replace(c,e+d).replace(g,f+d);a.attr("class",b)});a.data("icheckbox",e+d);a.data("iradio",f+d);b.addClass("active")}});
+$(".demo-methods dt .self").click(function(){var b=$(this);switch(b.attr("class").replace("self ","")){case "do-check":$("#input-1, #input-3").iCheck("check");break;case "do-uncheck":$("#input-1, #input-3").iCheck("uncheck");break;case "do-disable":$("#input-2, #input-4").iCheck("disable");break;case "do-enable":$("#input-2, #input-4").iCheck("enable");break;case "do-destroy":$(".demo-list input").iCheck("destroy");break;default:var a=b.hasClass("active")?"show code":"hide code";b.toggleClass("active").text(a);
+window.Zepto?$(this).closest("dt").next().toggle():$(this).closest("dt").next().slideToggle(200)}})}); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/jquery.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/jquery.js
new file mode 100644
index 00000000..569f77d1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/jquery.js
@@ -0,0 +1,4 @@
+/*!
+ * jQuery v1.8.3 jquery.com | jquery.org/license
+ */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);Function(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()| \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/zepto.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/zepto.js
new file mode 100644
index 00000000..ef1e61f7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/demo/js/zepto.js
@@ -0,0 +1,41 @@
+/*!
+ * Zepto v1.0 zeptojs.com | MIT licensed
+ * Modules: zepto, polyfill, event, data, stack
+ */
+var Zepto=function(){function h(a){return null==a?String(a):G[S.call(a)]||"object"}function m(a){return"function"==h(a)}function p(a){return null!=a&&a==a.window}function s(a){return null!=a&&a.nodeType==a.DOCUMENT_NODE}function q(a){return"object"==h(a)}function k(a){return q(a)&&!p(a)&&a.__proto__==Object.prototype}function t(a){return a instanceof Array}function l(a){return"number"==typeof a.length}function j(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,
+"$1_$2").replace(/_/g,"-").toLowerCase()}function r(a){return a in H?H[a]:H[a]=RegExp("(^|\\s)"+a+"(\\s|$)")}function A(a){return"children"in a?B.call(a.children):c.map(a.childNodes,function(a){if(1==a.nodeType)return a})}function C(a,b,d){for(g in b)d&&(k(b[g])||t(b[g]))?(k(b[g])&&!k(a[g])&&(a[g]={}),t(b[g])&&!t(a[g])&&(a[g]=[]),C(a[g],b[g],d)):b[g]!==f&&(a[g]=b[g])}function y(a,b){return b===f?c(a):c(a).filter(b)}function x(a,b,d,c){return m(b)?b.call(a,d,c):b}function z(a,b){var d=a.className,
+c=d&&d.baseVal!==f;if(b===f)return c?d.baseVal:d;c?d.baseVal=b:a.className=b}function E(a){var b;try{return a?"true"==a||("false"==a?!1:"null"==a?null:!isNaN(b=Number(a))?b:/^[\[\{]/.test(a)?c.parseJSON(a):a):a}catch(d){return a}}function e(a,b){b(a);for(var d in a.childNodes)e(a.childNodes[d],b)}var f,g,c,u,w=[],B=w.slice,D=w.filter,v=window.document,I={},H={},J=v.defaultView.getComputedStyle,M={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},N=/^\s*<(\w+|!)[^>]*>/,
+T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,O=/^(?:body|html)$/i,U="val css html text data width height offset".split(" "),K=v.createElement("table"),P=v.createElement("tr"),Q={tr:v.createElement("tbody"),tbody:K,thead:K,tfoot:K,td:P,th:P,"*":v.createElement("div")},V=/complete|loaded|interactive/,W=/^\.([\w-]+)$/,X=/^#([\w-]*)$/,Y=/^[\w-]+$/,G={},S=G.toString,n={},L,F,R=v.createElement("div");n.matches=function(a,b){if(!a||1!==a.nodeType)return!1;var d=a.webkitMatchesSelector||
+a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(d)return d.call(a,b);var c;c=a.parentNode;(d=!c)&&(c=R).appendChild(a);c=~n.qsa(c,b).indexOf(a);d&&R.removeChild(a);return c};L=function(a){return a.replace(/-+(.)?/g,function(a,d){return d?d.toUpperCase():""})};F=function(a){return D.call(a,function(b,d){return a.indexOf(b)==d})};n.fragment=function(a,b,d){a.replace&&(a=a.replace(T,"<$1></$2>"));b===f&&(b=N.test(a)&&RegExp.$1);b in Q||(b="*");var e,g=Q[b];g.innerHTML=""+a;a=c.each(B.call(g.childNodes),
+function(){g.removeChild(this)});k(d)&&(e=c(a),c.each(d,function(a,b){if(-1<U.indexOf(a))e[a](b);else e.attr(a,b)}));return a};n.Z=function(a,b){a=a||[];a.__proto__=c.fn;a.selector=b||"";return a};n.isZ=function(a){return a instanceof n.Z};n.init=function(a,b){if(a){if(m(a))return c(v).ready(a);if(n.isZ(a))return a;var d;if(t(a))d=D.call(a,function(a){return null!=a});else if(q(a))d=[k(a)?c.extend({},a):a],a=null;else if(N.test(a))d=n.fragment(a.trim(),RegExp.$1,b),a=null;else{if(b!==f)return c(b).find(a);
+d=n.qsa(v,a)}return n.Z(d,a)}return n.Z()};c=function(a,b){return n.init(a,b)};c.extend=function(a){var b,d=B.call(arguments,1);"boolean"==typeof a&&(b=a,a=d.shift());d.forEach(function(d){C(a,d,b)});return a};n.qsa=function(a,b){var d;return s(a)&&X.test(b)?(d=a.getElementById(RegExp.$1))?[d]:[]:1!==a.nodeType&&9!==a.nodeType?[]:B.call(W.test(b)?a.getElementsByClassName(RegExp.$1):Y.test(b)?a.getElementsByTagName(b):a.querySelectorAll(b))};c.contains=function(a,b){return a!==b&&a.contains(b)};c.type=
+h;c.isFunction=m;c.isWindow=p;c.isArray=t;c.isPlainObject=k;c.isEmptyObject=function(a){for(var b in a)return!1;return!0};c.inArray=function(a,b,d){return w.indexOf.call(b,a,d)};c.camelCase=L;c.trim=function(a){return a.trim()};c.uuid=0;c.support={};c.expr={};c.map=function(a,b){var d,e=[],f;if(l(a))for(f=0;f<a.length;f++)d=b(a[f],f),null!=d&&e.push(d);else for(f in a)d=b(a[f],f),null!=d&&e.push(d);return 0<e.length?c.fn.concat.apply([],e):e};c.each=function(a,b){var d;if(l(a))for(d=0;d<a.length&&
+!1!==b.call(a[d],d,a[d]);d++);else for(d in a)if(!1===b.call(a[d],d,a[d]))break;return a};c.grep=function(a,b){return D.call(a,b)};window.JSON&&(c.parseJSON=JSON.parse);c.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()});c.fn={forEach:w.forEach,reduce:w.reduce,push:w.push,sort:w.sort,indexOf:w.indexOf,concat:w.concat,map:function(a){return c(c.map(this,function(b,d){return a.call(b,d,b)}))},slice:function(){return c(B.apply(this,
+arguments))},ready:function(a){V.test(v.readyState)?a(c):v.addEventListener("DOMContentLoaded",function(){a(c)},!1);return this},get:function(a){return a===f?B.call(this):this[0<=a?a:a+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(a){w.every.call(this,function(b,d){return!1!==a.call(b,d,b)});return this},filter:function(a){return m(a)?this.not(this.not(a)):
+c(D.call(this,function(b){return n.matches(b,a)}))},add:function(a,b){return c(F(this.concat(c(a,b))))},is:function(a){return 0<this.length&&n.matches(this[0],a)},not:function(a){var b=[];if(m(a)&&a.call!==f)this.each(function(d){a.call(this,d)||b.push(this)});else{var d="string"==typeof a?this.filter(a):l(a)&&m(a.item)?B.call(a):c(a);this.forEach(function(a){0>d.indexOf(a)&&b.push(a)})}return c(b)},has:function(a){return this.filter(function(){return q(a)?c.contains(this,a):c(this).find(a).size()})},
+eq:function(a){return-1===a?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!q(a)?a:c(a)},last:function(){var a=this[this.length-1];return a&&!q(a)?a:c(a)},find:function(a){var b=this;return"object"==typeof a?c(a).filter(function(){var a=this;return w.some.call(b,function(b){return c.contains(b,a)})}):1==this.length?c(n.qsa(this[0],a)):this.map(function(){return n.qsa(this,a)})},closest:function(a,b){var d=this[0],e=!1;for("object"==typeof a&&(e=c(a));d&&!(e?0<=e.indexOf(d):
+n.matches(d,a));)d=d!==b&&!s(d)&&d.parentNode;return c(d)},parents:function(a){for(var b=[],d=this;0<d.length;)d=c.map(d,function(a){if((a=a.parentNode)&&!s(a)&&0>b.indexOf(a))return b.push(a),a});return y(b,a)},parent:function(a){return y(F(this.pluck("parentNode")),a)},children:function(a){return y(this.map(function(){return A(this)}),a)},contents:function(){return this.map(function(){return B.call(this.childNodes)})},siblings:function(a){return y(this.map(function(a,d){return D.call(A(d.parentNode),
+function(a){return a!==d})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return c.map(this,function(b){return b[a]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=null);if("none"==J(this,"").getPropertyValue("display")){var a=this.style,b=this.nodeName,d,c;I[b]||(d=v.createElement(b),v.body.appendChild(d),c=J(d,"").getPropertyValue("display"),d.parentNode.removeChild(d),"none"==c&&(c="block"),I[b]=c);a.display=
+I[b]}})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){var b=m(a);if(this[0]&&!b)var d=c(a).get(0),e=d.parentNode||1<this.length;return this.each(function(f){c(this).wrapAll(b?a.call(this,f):e?d.cloneNode(!0):d)})},wrapAll:function(a){if(this[0]){c(this[0]).before(a=c(a));for(var b;(b=a.children()).length;)a=b.first();c(a).append(this)}return this},wrapInner:function(a){var b=m(a);return this.each(function(d){var e=c(this),f=e.contents();d=b?a.call(this,d):a;f.length?f.wrapAll(d):
+e.append(d)})},unwrap:function(){this.parent().each(function(){c(this).replaceWith(c(this).children())});return this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(a){return this.each(function(){var b=c(this);(a===f?"none"==b.css("display"):a)?b.show():b.hide()})},prev:function(a){return c(this.pluck("previousElementSibling")).filter(a||"*")},next:function(a){return c(this.pluck("nextElementSibling")).filter(a||
+"*")},html:function(a){return a===f?0<this.length?this[0].innerHTML:null:this.each(function(b){var d=this.innerHTML;c(this).empty().append(x(this,a,b,d))})},text:function(a){return a===f?0<this.length?this[0].textContent:null:this.each(function(){this.textContent=a})},attr:function(a,b){var d;return"string"==typeof a&&b===f?0==this.length||1!==this[0].nodeType?f:"value"==a&&"INPUT"==this[0].nodeName?this.val():!(d=this[0].getAttribute(a))&&a in this[0]?this[0][a]:d:this.each(function(d){if(1===this.nodeType)if(q(a))for(g in a){d=
+g;var c=a[g];null==c?this.removeAttribute(d):this.setAttribute(d,c)}else d=x(this,b,d,this.getAttribute(a)),null==d?this.removeAttribute(a):this.setAttribute(a,d)})},removeAttr:function(a){return this.each(function(){1===this.nodeType&&this.removeAttribute(a)})},prop:function(a,b){return b===f?this[0]&&this[0][a]:this.each(function(d){this[a]=x(this,b,d,this[a])})},data:function(a,b){var d=this.attr("data-"+j(a),b);return null!==d?E(d):f},val:function(a){return a===f?this[0]&&(this[0].multiple?c(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):
+this[0].value):this.each(function(b){this.value=x(this,a,b,this.value)})},offset:function(a){if(a)return this.each(function(b){var e=c(this);b=x(this,a,b,e.offset());var f=e.offsetParent().offset();b={top:b.top-f.top,left:b.left-f.left};"static"==e.css("position")&&(b.position="relative");e.css(b)});if(0==this.length)return null;var b=this[0].getBoundingClientRect();return{left:b.left+window.pageXOffset,top:b.top+window.pageYOffset,width:Math.round(b.width),height:Math.round(b.height)}},css:function(a,
+b){if(2>arguments.length&&"string"==typeof a)return this[0]&&(this[0].style[L(a)]||J(this[0],"").getPropertyValue(a));var d="";if("string"==h(a))!b&&0!==b?this.each(function(){this.style.removeProperty(j(a))}):d=j(a)+":"+("number"==typeof b&&!M[j(a)]?b+"px":b);else for(g in a)!a[g]&&0!==a[g]?this.each(function(){this.style.removeProperty(j(g))}):d+=j(g)+":"+("number"==typeof a[g]&&!M[j(g)]?a[g]+"px":a[g])+";";return this.each(function(){this.style.cssText+=";"+d})},index:function(a){return a?this.indexOf(c(a)[0]):
+this.parent().children().indexOf(this[0])},hasClass:function(a){return w.some.call(this,function(a){return this.test(z(a))},r(a))},addClass:function(a){return this.each(function(b){u=[];var d=z(this);x(this,a,b,d).split(/\s+/g).forEach(function(a){c(this).hasClass(a)||u.push(a)},this);u.length&&z(this,d+(d?" ":"")+u.join(" "))})},removeClass:function(a){return this.each(function(b){if(a===f)return z(this,"");u=z(this);x(this,a,b,u).split(/\s+/g).forEach(function(a){u=u.replace(r(a)," ")});z(this,
+u.trim())})},toggleClass:function(a,b){return this.each(function(d){var e=c(this);x(this,a,d,z(this)).split(/\s+/g).forEach(function(a){(b===f?!e.hasClass(a):b)?e.addClass(a):e.removeClass(a)})})},scrollTop:function(){if(this.length)return"scrollTop"in this[0]?this[0].scrollTop:this[0].scrollY},position:function(){if(this.length){var a=this[0],b=this.offsetParent(),d=this.offset(),e=O.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c(a).css("margin-top"))||0;d.left-=parseFloat(c(a).css("margin-left"))||
+0;e.top+=parseFloat(c(b[0]).css("border-top-width"))||0;e.left+=parseFloat(c(b[0]).css("border-left-width"))||0;return{top:d.top-e.top,left:d.left-e.left}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||v.body;a&&!O.test(a.nodeName)&&"static"==c(a).css("position");)a=a.offsetParent;return a})}};c.fn.detach=c.fn.remove;["width","height"].forEach(function(a){c.fn[a]=function(b){var d,e=this[0],g=a.replace(/./,function(a){return a[0].toUpperCase()});return b===f?p(e)?
+e["inner"+g]:s(e)?e.documentElement["offset"+g]:(d=this.offset())&&d[a]:this.each(function(d){e=c(this);e.css(a,x(this,b,d,e[a]()))})}});["after","prepend","before","append"].forEach(function(a,b){var d=b%2;c.fn[a]=function(){var a,f=c.map(arguments,function(b){a=h(b);return"object"==a||"array"==a||null==b?b:n.fragment(b)}),g,u=1<this.length;return 1>f.length?this:this.each(function(a,h){g=d?h:h.parentNode;h=0==b?h.nextSibling:1==b?h.firstChild:2==b?h:null;f.forEach(function(a){if(u)a=a.cloneNode(!0);
+else if(!g)return c(a).remove();e(g.insertBefore(a,h),function(a){null!=a.nodeName&&("SCRIPT"===a.nodeName.toUpperCase()&&(!a.type||"text/javascript"===a.type)&&!a.src)&&window.eval.call(window,a.innerHTML)})})})};c.fn[d?a+"To":"insert"+(b?"Before":"After")]=function(b){c(b)[a](this);return this}});n.Z.prototype=c.fn;n.uniq=F;n.deserializeValue=E;c.zepto=n;return c}();window.Zepto=Zepto;"$"in window||(window.$=Zepto);
+(function(h){String.prototype.trim===h&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});Array.prototype.reduce===h&&(Array.prototype.reduce=function(m){if(void 0===this||null===this)throw new TypeError;var p=Object(this),s=p.length>>>0,q=0,k;if("function"!=typeof m)throw new TypeError;if(0==s&&1==arguments.length)throw new TypeError;if(2<=arguments.length)k=arguments[1];else{do{if(q in p){k=p[q++];break}if(++q>=s)throw new TypeError;}while(1)}for(;q<s;)q in p&&(k=m.call(h,
+k,p[q],q,p)),q++;return k})})();
+(function(h){function m(e){return e._zid||(e._zid=r++)}function p(e,f,g,c){f=s(f);if(f.ns)var h=RegExp("(?:^| )"+f.ns.replace(" "," .* ?")+"(?: |$)");return(j[m(e)]||[]).filter(function(e){return e&&(!f.e||e.e==f.e)&&(!f.ns||h.test(e.ns))&&(!g||m(e.fn)===m(g))&&(!c||e.sel==c)})}function s(e){e=(""+e).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function q(e,f,g){"string"!=h.type(e)?h.each(e,g):e.split(/\s/).forEach(function(e){g(e,f)})}function k(e,f,g,c,u,l){var k=m(e),r=j[k]||(j[k]=
+[]);q(f,g,function(f,g){var j=s(f);j.fn=g;j.sel=c;j.e in C&&(g=function(e){var c=e.relatedTarget;if(!c||c!==this&&!h.contains(this,c))return j.fn.apply(this,arguments)});j.del=u&&u(g,f);var k=j.del||g;j.proxy=function(c){var f=k.apply(e,[c].concat(c.data));!1===f&&(c.preventDefault(),c.stopPropagation());return f};j.i=r.length;r.push(j);e.addEventListener(C[j.e]||j.e,j.proxy,j.del&&("focus"==j.e||"blur"==j.e)||!!l)})}function t(e,f,g,c,h){var l=m(e);q(f||"",g,function(f,g){p(e,f,g,c).forEach(function(c){delete j[l][c.i];
+e.removeEventListener(C[c.e]||c.e,c.proxy,c.del&&("focus"==c.e||"blur"==c.e)||!!h)})})}function l(e){var f,g={originalEvent:e};for(f in e)!z.test(f)&&void 0!==e[f]&&(g[f]=e[f]);h.each(E,function(c,f){g[c]=function(){this[f]=y;return e[c].apply(e,arguments)};g[f]=x});return g}var j={},r=1,A={},C={mouseenter:"mouseover",mouseleave:"mouseout"};A.click=A.mousedown=A.mouseup=A.mousemove="MouseEvents";h.event={add:k,remove:t};h.proxy=function(e,f){if(h.isFunction(e)){var g=function(){return e.apply(f,arguments)};
+g._zid=m(e);return g}if("string"==typeof f)return h.proxy(e[f],e);throw new TypeError("expected function");};h.fn.bind=function(e,f){return this.each(function(){k(this,e,f)})};h.fn.unbind=function(e,f){return this.each(function(){t(this,e,f)})};h.fn.one=function(e,f){return this.each(function(g,c){k(this,e,f,null,function(e,f){return function(){var g=e.apply(c,arguments);t(c,f,e);return g}})})};var y=function(){return!0},x=function(){return!1},z=/^([A-Z]|layer[XY]$)/,E={preventDefault:"isDefaultPrevented",
+stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};h.fn.delegate=function(e,f,g){return this.each(function(c,j){k(j,f,g,e,function(c){return function(f){var g,k=h(f.target).closest(e,j).get(0);if(k)return g=h.extend(l(f),{currentTarget:k,liveFired:j}),c.apply(k,[g].concat([].slice.call(arguments,1)))}})})};h.fn.undelegate=function(e,f,g){return this.each(function(){t(this,f,g,e)})};h.fn.live=function(e,f){h(document.body).delegate(this.selector,e,f);return this};
+h.fn.die=function(e,f){h(document.body).undelegate(this.selector,e,f);return this};h.fn.on=function(e,f,g){return!f||h.isFunction(f)?this.bind(e,f||g):this.delegate(f,e,g)};h.fn.off=function(e,f,g){return!f||h.isFunction(f)?this.unbind(e,f||g):this.undelegate(f,e,g)};h.fn.trigger=function(e,f){if("string"==typeof e||h.isPlainObject(e))e=h.Event(e);var g=e;if(!("defaultPrevented"in g)){g.defaultPrevented=!1;var c=g.preventDefault;g.preventDefault=function(){this.defaultPrevented=!0;c.call(this)}}e.data=
+f;return this.each(function(){"dispatchEvent"in this&&this.dispatchEvent(e)})};h.fn.triggerHandler=function(e,f){var g,c;this.each(function(j,k){g=l("string"==typeof e?h.Event(e):e);g.data=f;g.target=k;h.each(p(k,e.type||e),function(e,f){c=f.proxy(g);if(g.isImmediatePropagationStopped())return!1})});return c};"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){h.fn[e]=
+function(f){return f?this.bind(e,f):this.trigger(e)}});["focus","blur"].forEach(function(e){h.fn[e]=function(f){f?this.bind(e,f):this.each(function(){try{this[e]()}catch(f){}});return this}});h.Event=function(e,f){"string"!=typeof e&&(f=e,e=f.type);var g=document.createEvent(A[e]||"Events"),c=!0;if(f)for(var h in f)"bubbles"==h?c=!!f[h]:g[h]=f[h];g.initEvent(e,c,!0,null,null,null,null,null,null,null,null,null,null,null,null);g.isDefaultPrevented=function(){return this.defaultPrevented};return g}})(Zepto);
+(function(h){function m(l,j){var r=l[t],r=r&&s[r];if(void 0===j)return r||p(l);if(r){if(j in r)return r[j];var m=k(j);if(m in r)return r[m]}return q.call(h(l),j)}function p(l,j,m){var q=l[t]||(l[t]=++h.uuid),p;if(!(p=s[q])){p=s;var y={};h.each(l.attributes,function(j,l){0==l.name.indexOf("data-")&&(y[k(l.name.replace("data-",""))]=h.zepto.deserializeValue(l.value))});p=p[q]=y}l=p;void 0!==j&&(l[k(j)]=m);return l}var s={},q=h.fn.data,k=h.camelCase,t=h.expando="Zepto"+ +new Date;h.fn.data=function(l,
+j){return void 0===j?h.isPlainObject(l)?this.each(function(j,k){h.each(l,function(h,j){p(k,h,j)})}):0==this.length?void 0:m(this[0],l):this.each(function(){p(this,l,j)})};h.fn.removeData=function(l){"string"==typeof l&&(l=l.split(/\s+/));return this.each(function(){var j=this[t],m=j&&s[j];m&&h.each(l,function(){delete m[k(this)]})})}})(Zepto);(function(a){a.fn.end=function(){return this.prevObject||a()};a.fn.andSelf=function(){return this.add(this.prevObject||a())};"filter add not eq first last find closest parents parent children siblings".split(" ").forEach(function(b){var c=a.fn[b];a.fn[b]=function(){var a=c.apply(this,arguments);a.prevObject=this;return a}})})(Zepto);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.jquery.json b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.jquery.json
new file mode 100644
index 00000000..e7018a64
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.jquery.json
@@ -0,0 +1,48 @@
+{
+ "name": "icheck",
+ "version": "1.0.2",
+ "title": "iCheck",
+ "author": {
+ "name": "Damir Sultanov",
+ "email": "info@fronteed.com",
+ "homepage": "http://fronteed.com/"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://en.wikipedia.org/wiki/MIT_License"
+ }
+ ],
+ "dependencies": {
+ "jquery": ">=1.7"
+ },
+ "description": "Highly customizable checkboxes and radio buttons (jQuery and Zepto). Features: identical inputs across different browsers and devices (both desktop and mobile), touch devices support (iOS, Android, BlackBerry, Windows Phone, Amazon Kindle), keyboard accessible inputs (Tab, Spacebar, Arrow up/down and other shortcuts), screenreader accessible inputs — (ARIA attributes for VoiceOver and others), customization freedom (use any HTML and CSS to style inputs or try 6 Retina-ready skins), lightweight size (1 kb gzipped). Provides 32 options to customize checkboxes and radio buttons, 11 callbacks to handle changes, 9 methods to make changes programmatically. Saves changes to original inputs, works carefully with any selectors.",
+ "keywords": [
+ "checkbox",
+ "radio",
+ "input",
+ "field",
+ "form",
+ "desktop",
+ "mobile",
+ "custom",
+ "replacement",
+ "accessibility",
+ "skins",
+ "ui",
+ "checked",
+ "disabled",
+ "indeterminate",
+ "css3",
+ "html5",
+ "tiny",
+ "lightweight",
+ "jquery",
+ "zepto"
+ ],
+ "homepage": "http://fronteed.com/iCheck/",
+ "docs": "https://github.com/fronteed/iCheck",
+ "demo": "http://fronteed.com/iCheck/",
+ "download": "http://fronteed.com/iCheck/",
+ "bugs": "https://github.com/fronteed/iCheck/issues/"
+}
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.js
new file mode 100644
index 00000000..7bf27682
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.js
@@ -0,0 +1,509 @@
+/*!
+ * iCheck v1.0.2, http://git.io/arlzeA
+ * ===================================
+ * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization
+ *
+ * (c) 2013 Damir Sultanov, http://fronteed.com
+ * MIT Licensed
+ */
+
+(function($) {
+
+ // Cached vars
+ var _iCheck = 'iCheck',
+ _iCheckHelper = _iCheck + '-helper',
+ _checkbox = 'checkbox',
+ _radio = 'radio',
+ _checked = 'checked',
+ _unchecked = 'un' + _checked,
+ _disabled = 'disabled',
+ _determinate = 'determinate',
+ _indeterminate = 'in' + _determinate,
+ _update = 'update',
+ _type = 'type',
+ _click = 'click',
+ _touch = 'touchbegin.i touchend.i',
+ _add = 'addClass',
+ _remove = 'removeClass',
+ _callback = 'trigger',
+ _label = 'label',
+ _cursor = 'cursor',
+ _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);
+
+ // Plugin init
+ $.fn[_iCheck] = function(options, fire) {
+
+ // Walker
+ var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]',
+ stack = $(),
+ walker = function(object) {
+ object.each(function() {
+ var self = $(this);
+
+ if (self.is(handle)) {
+ stack = stack.add(self);
+ } else {
+ stack = stack.add(self.find(handle));
+ }
+ });
+ };
+
+ // Check if we should operate with some method
+ if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) {
+
+ // Normalize method's name
+ options = options.toLowerCase();
+
+ // Find checkboxes and radio buttons
+ walker(this);
+
+ return stack.each(function() {
+ var self = $(this);
+
+ if (options == 'destroy') {
+ tidy(self, 'ifDestroyed');
+ } else {
+ operate(self, true, options);
+ }
+
+ // Fire method's callback
+ if ($.isFunction(fire)) {
+ fire();
+ }
+ });
+
+ // Customization
+ } else if (typeof options == 'object' || !options) {
+
+ // Check if any options were passed
+ var settings = $.extend({
+ checkedClass: _checked,
+ disabledClass: _disabled,
+ indeterminateClass: _indeterminate,
+ labelHover: true
+ }, options),
+
+ selector = settings.handle,
+ hoverClass = settings.hoverClass || 'hover',
+ focusClass = settings.focusClass || 'focus',
+ activeClass = settings.activeClass || 'active',
+ labelHover = !!settings.labelHover,
+ labelHoverClass = settings.labelHoverClass || 'hover',
+
+ // Setup clickable area
+ area = ('' + settings.increaseArea).replace('%', '') | 0;
+
+ // Selector limit
+ if (selector == _checkbox || selector == _radio) {
+ handle = 'input[type="' + selector + '"]';
+ }
+
+ // Clickable area limit
+ if (area < -50) {
+ area = -50;
+ }
+
+ // Walk around the selector
+ walker(this);
+
+ return stack.each(function() {
+ var self = $(this);
+
+ // If already customized
+ tidy(self);
+
+ var node = this,
+ id = node.id,
+
+ // Layer styles
+ offset = -area + '%',
+ size = 100 + (area * 2) + '%',
+ layer = {
+ position: 'absolute',
+ top: offset,
+ left: offset,
+ display: 'block',
+ width: size,
+ height: size,
+ margin: 0,
+ padding: 0,
+ background: '#fff',
+ border: 0,
+ opacity: 0
+ },
+
+ // Choose how to hide input
+ hide = _mobile ? {
+ position: 'absolute',
+ visibility: 'hidden'
+ } : area ? layer : {
+ position: 'absolute',
+ opacity: 0
+ },
+
+ // Get proper class
+ className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio,
+
+ // Find assigned labels
+ label = $(_label + '[for="' + id + '"]').add(self.closest(_label)),
+
+ // Check ARIA option
+ aria = !!settings.aria,
+
+ // Set ARIA placeholder
+ ariaID = _iCheck + '-' + Math.random().toString(36).substr(2,6),
+
+ // Parent & helper
+ parent = '<div class="' + className + '" ' + (aria ? 'role="' + node[_type] + '" ' : ''),
+ helper;
+
+ // Set ARIA "labelledby"
+ if (aria) {
+ label.each(function() {
+ parent += 'aria-labelledby="';
+
+ if (this.id) {
+ parent += this.id;
+ } else {
+ this.id = ariaID;
+ parent += ariaID;
+ }
+
+ parent += '"';
+ });
+ }
+
+ // Wrap input
+ parent = self.wrap(parent + '/>')[_callback]('ifCreated').parent().append(settings.insert);
+
+ // Layer addition
+ helper = $('<ins class="' + _iCheckHelper + '"/>').css(layer).appendTo(parent);
+
+ // Finalize customization
+ self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide);
+ !!settings.inheritClass && parent[_add](node.className || '');
+ !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id);
+ parent.css('position') == 'static' && parent.css('position', 'relative');
+ operate(self, true, _update);
+
+ // Label events
+ if (label.length) {
+ label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) {
+ var type = event[_type],
+ item = $(this);
+
+ // Do nothing if input is disabled
+ if (!node[_disabled]) {
+
+ // Click
+ if (type == _click) {
+ if ($(event.target).is('a')) {
+ return;
+ }
+ operate(self, false, true);
+
+ // Hover state
+ } else if (labelHover) {
+
+ // mouseout|touchend
+ if (/ut|nd/.test(type)) {
+ parent[_remove](hoverClass);
+ item[_remove](labelHoverClass);
+ } else {
+ parent[_add](hoverClass);
+ item[_add](labelHoverClass);
+ }
+ }
+
+ if (_mobile) {
+ event.stopPropagation();
+ } else {
+ return false;
+ }
+ }
+ });
+ }
+
+ // Input events
+ self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) {
+ var type = event[_type],
+ key = event.keyCode;
+
+ // Click
+ if (type == _click) {
+ return false;
+
+ // Keydown
+ } else if (type == 'keydown' && key == 32) {
+ if (!(node[_type] == _radio && node[_checked])) {
+ if (node[_checked]) {
+ off(self, _checked);
+ } else {
+ on(self, _checked);
+ }
+ }
+
+ return false;
+
+ // Keyup
+ } else if (type == 'keyup' && node[_type] == _radio) {
+ !node[_checked] && on(self, _checked);
+
+ // Focus/blur
+ } else if (/us|ur/.test(type)) {
+ parent[type == 'blur' ? _remove : _add](focusClass);
+ }
+ });
+
+ // Helper events
+ helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) {
+ var type = event[_type],
+
+ // mousedown|mouseup
+ toggle = /wn|up/.test(type) ? activeClass : hoverClass;
+
+ // Do nothing if input is disabled
+ if (!node[_disabled]) {
+
+ // Click
+ if (type == _click) {
+ operate(self, false, true);
+
+ // Active and hover states
+ } else {
+
+ // State is on
+ if (/wn|er|in/.test(type)) {
+
+ // mousedown|mouseover|touchbegin
+ parent[_add](toggle);
+
+ // State is off
+ } else {
+ parent[_remove](toggle + ' ' + activeClass);
+ }
+
+ // Label hover
+ if (label.length && labelHover && toggle == hoverClass) {
+
+ // mouseout|touchend
+ label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass);
+ }
+ }
+
+ if (_mobile) {
+ event.stopPropagation();
+ } else {
+ return false;
+ }
+ }
+ });
+ });
+ } else {
+ return this;
+ }
+ };
+
+ // Do something with inputs
+ function operate(input, direct, method) {
+ var node = input[0],
+ state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked,
+ active = method == _update ? {
+ checked: node[_checked],
+ disabled: node[_disabled],
+ indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false'
+ } : node[state];
+
+ // Check, disable or indeterminate
+ if (/^(ch|di|in)/.test(method) && !active) {
+ on(input, state);
+
+ // Uncheck, enable or determinate
+ } else if (/^(un|en|de)/.test(method) && active) {
+ off(input, state);
+
+ // Update
+ } else if (method == _update) {
+
+ // Handle states
+ for (var each in active) {
+ if (active[each]) {
+ on(input, each, true);
+ } else {
+ off(input, each, true);
+ }
+ }
+
+ } else if (!direct || method == 'toggle') {
+
+ // Helper or label was clicked
+ if (!direct) {
+ input[_callback]('ifClicked');
+ }
+
+ // Toggle checked state
+ if (active) {
+ if (node[_type] !== _radio) {
+ off(input, state);
+ }
+ } else {
+ on(input, state);
+ }
+ }
+ }
+
+ // Add checked, disabled or indeterminate state
+ function on(input, state, keep) {
+ var node = input[0],
+ parent = input.parent(),
+ checked = state == _checked,
+ indeterminate = state == _indeterminate,
+ disabled = state == _disabled,
+ callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',
+ regular = option(input, callback + capitalize(node[_type])),
+ specific = option(input, state + capitalize(node[_type]));
+
+ // Prevent unnecessary actions
+ if (node[state] !== true) {
+
+ // Toggle assigned radio buttons
+ if (!keep && state == _checked && node[_type] == _radio && node.name) {
+ var form = input.closest('form'),
+ inputs = 'input[name="' + node.name + '"]';
+
+ inputs = form.length ? form.find(inputs) : $(inputs);
+
+ inputs.each(function() {
+ if (this !== node && $(this).data(_iCheck)) {
+ off($(this), state);
+ }
+ });
+ }
+
+ // Indeterminate state
+ if (indeterminate) {
+
+ // Add indeterminate state
+ node[state] = true;
+
+ // Remove checked state
+ if (node[_checked]) {
+ off(input, _checked, 'force');
+ }
+
+ // Checked or disabled state
+ } else {
+
+ // Add checked or disabled state
+ if (!keep) {
+ node[state] = true;
+ }
+
+ // Remove indeterminate state
+ if (checked && node[_indeterminate]) {
+ off(input, _indeterminate, false);
+ }
+ }
+
+ // Trigger callbacks
+ callbacks(input, checked, state, keep);
+ }
+
+ // Add proper cursor
+ if (node[_disabled] && !!option(input, _cursor, true)) {
+ parent.find('.' + _iCheckHelper).css(_cursor, 'default');
+ }
+
+ // Add state class
+ parent[_add](specific || option(input, state) || '');
+
+ // Set ARIA attribute
+ if (!!parent.attr('role') && !indeterminate) {
+ parent.attr('aria-' + (disabled ? _disabled : _checked), 'true');
+ }
+
+ // Remove regular state class
+ parent[_remove](regular || option(input, callback) || '');
+ }
+
+ // Remove checked, disabled or indeterminate state
+ function off(input, state, keep) {
+ var node = input[0],
+ parent = input.parent(),
+ checked = state == _checked,
+ indeterminate = state == _indeterminate,
+ disabled = state == _disabled,
+ callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',
+ regular = option(input, callback + capitalize(node[_type])),
+ specific = option(input, state + capitalize(node[_type]));
+
+ // Prevent unnecessary actions
+ if (node[state] !== false) {
+
+ // Toggle state
+ if (indeterminate || !keep || keep == 'force') {
+ node[state] = false;
+ }
+
+ // Trigger callbacks
+ callbacks(input, checked, callback, keep);
+ }
+
+ // Add proper cursor
+ if (!node[_disabled] && !!option(input, _cursor, true)) {
+ parent.find('.' + _iCheckHelper).css(_cursor, 'pointer');
+ }
+
+ // Remove state class
+ parent[_remove](specific || option(input, state) || '');
+
+ // Set ARIA attribute
+ if (!!parent.attr('role') && !indeterminate) {
+ parent.attr('aria-' + (disabled ? _disabled : _checked), 'false');
+ }
+
+ // Add regular state class
+ parent[_add](regular || option(input, callback) || '');
+ }
+
+ // Remove all traces
+ function tidy(input, callback) {
+ if (input.data(_iCheck)) {
+
+ // Remove everything except input
+ input.parent().html(input.attr('style', input.data(_iCheck).s || ''));
+
+ // Callback
+ if (callback) {
+ input[_callback](callback);
+ }
+
+ // Unbind events
+ input.off('.i').unwrap();
+ $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i');
+ }
+ }
+
+ // Get some option
+ function option(input, state, regular) {
+ if (input.data(_iCheck)) {
+ return input.data(_iCheck).o[state + (regular ? '' : 'Class')];
+ }
+ }
+
+ // Capitalize some string
+ function capitalize(string) {
+ return string.charAt(0).toUpperCase() + string.slice(1);
+ }
+
+ // Executable handlers
+ function callbacks(input, checked, callback, keep) {
+ if (!keep) {
+ if (checked) {
+ input[_callback]('ifToggled');
+ }
+
+ input[_callback]('ifChanged')[_callback]('if' + capitalize(callback));
+ }
+ }
+})(window.jQuery || window.Zepto);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.min.js
new file mode 100644
index 00000000..7cdb17e0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/icheck.min.js
@@ -0,0 +1,11 @@
+/*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */
+(function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate,
+v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true");
+g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap();
+f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i";
+_add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c=
+f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this,
+b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='<div class="'+l+'" '+(u?'role="'+c[_type]+'" ':"");u&&z.each(function(){h+=
+'aria-labelledby="';this.id?h+=this.id:(this.id=y,h+=y);h+='"'});h=a.wrap(h+"/>")[_callback]("ifCreated").parent().append(e.insert);d=f('<ins class="'+C+'"/>').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return;
+A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d=
+b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/all.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/all.css
new file mode 100644
index 00000000..6439b742
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/all.css
@@ -0,0 +1,61 @@
+/* iCheck plugin skins
+----------------------------------- */
+@import url("minimal/_all.css");
+/*
+@import url("minimal/minimal.css");
+@import url("minimal/red.css");
+@import url("minimal/green.css");
+@import url("minimal/blue.css");
+@import url("minimal/aero.css");
+@import url("minimal/grey.css");
+@import url("minimal/orange.css");
+@import url("minimal/yellow.css");
+@import url("minimal/pink.css");
+@import url("minimal/purple.css");
+*/
+
+@import url("square/_all.css");
+/*
+@import url("square/square.css");
+@import url("square/red.css");
+@import url("square/green.css");
+@import url("square/blue.css");
+@import url("square/aero.css");
+@import url("square/grey.css");
+@import url("square/orange.css");
+@import url("square/yellow.css");
+@import url("square/pink.css");
+@import url("square/purple.css");
+*/
+
+@import url("flat/_all.css");
+/*
+@import url("flat/flat.css");
+@import url("flat/red.css");
+@import url("flat/green.css");
+@import url("flat/blue.css");
+@import url("flat/aero.css");
+@import url("flat/grey.css");
+@import url("flat/orange.css");
+@import url("flat/yellow.css");
+@import url("flat/pink.css");
+@import url("flat/purple.css");
+*/
+
+@import url("line/_all.css");
+/*
+@import url("line/line.css");
+@import url("line/red.css");
+@import url("line/green.css");
+@import url("line/blue.css");
+@import url("line/aero.css");
+@import url("line/grey.css");
+@import url("line/orange.css");
+@import url("line/yellow.css");
+@import url("line/pink.css");
+@import url("line/purple.css");
+*/
+
+@import url("polaris/polaris.css");
+
+@import url("futurico/futurico.css"); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/_all.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/_all.css
new file mode 100644
index 00000000..cf5ea76c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/_all.css
@@ -0,0 +1,530 @@
+/* iCheck plugin Flat skin
+----------------------------------- */
+.icheckbox_flat,
+.iradio_flat {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(flat.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat {
+ background-position: 0 0;
+}
+ .icheckbox_flat.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat {
+ background-position: -88px 0;
+}
+ .iradio_flat.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat,
+ .iradio_flat {
+ background-image: url(flat@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* red */
+.icheckbox_flat-red,
+.iradio_flat-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-red {
+ background-position: 0 0;
+}
+ .icheckbox_flat-red.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-red.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-red.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-red {
+ background-position: -88px 0;
+}
+ .iradio_flat-red.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-red.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-red.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-red,
+ .iradio_flat-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* green */
+.icheckbox_flat-green,
+.iradio_flat-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-green {
+ background-position: 0 0;
+}
+ .icheckbox_flat-green.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-green.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-green.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-green {
+ background-position: -88px 0;
+}
+ .iradio_flat-green.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-green.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-green.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-green,
+ .iradio_flat-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* blue */
+.icheckbox_flat-blue,
+.iradio_flat-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-blue {
+ background-position: 0 0;
+}
+ .icheckbox_flat-blue.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-blue.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-blue.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-blue {
+ background-position: -88px 0;
+}
+ .iradio_flat-blue.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-blue.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-blue.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-blue,
+ .iradio_flat-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* aero */
+.icheckbox_flat-aero,
+.iradio_flat-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-aero {
+ background-position: 0 0;
+}
+ .icheckbox_flat-aero.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-aero.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-aero.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-aero {
+ background-position: -88px 0;
+}
+ .iradio_flat-aero.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-aero.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-aero.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-aero,
+ .iradio_flat-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* grey */
+.icheckbox_flat-grey,
+.iradio_flat-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-grey {
+ background-position: 0 0;
+}
+ .icheckbox_flat-grey.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-grey.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-grey.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-grey {
+ background-position: -88px 0;
+}
+ .iradio_flat-grey.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-grey.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-grey.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-grey,
+ .iradio_flat-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* orange */
+.icheckbox_flat-orange,
+.iradio_flat-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-orange {
+ background-position: 0 0;
+}
+ .icheckbox_flat-orange.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-orange.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-orange.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-orange {
+ background-position: -88px 0;
+}
+ .iradio_flat-orange.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-orange.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-orange.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-orange,
+ .iradio_flat-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* yellow */
+.icheckbox_flat-yellow,
+.iradio_flat-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_flat-yellow.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-yellow.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-yellow.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-yellow {
+ background-position: -88px 0;
+}
+ .iradio_flat-yellow.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-yellow.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-yellow.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-yellow,
+ .iradio_flat-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* pink */
+.icheckbox_flat-pink,
+.iradio_flat-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-pink {
+ background-position: 0 0;
+}
+ .icheckbox_flat-pink.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-pink.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-pink.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-pink {
+ background-position: -88px 0;
+}
+ .iradio_flat-pink.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-pink.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-pink.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-pink,
+ .iradio_flat-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* purple */
+.icheckbox_flat-purple,
+.iradio_flat-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-purple {
+ background-position: 0 0;
+}
+ .icheckbox_flat-purple.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-purple.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-purple.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-purple {
+ background-position: -88px 0;
+}
+ .iradio_flat-purple.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-purple.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-purple.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-purple,
+ .iradio_flat-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.css
new file mode 100644
index 00000000..dc769c73
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, aero
+----------------------------------- */
+.icheckbox_flat-aero,
+.iradio_flat-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-aero {
+ background-position: 0 0;
+}
+ .icheckbox_flat-aero.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-aero.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-aero.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-aero {
+ background-position: -88px 0;
+}
+ .iradio_flat-aero.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-aero.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-aero.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-aero,
+ .iradio_flat-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.png
new file mode 100644
index 00000000..f4277aa4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero@2x.png
new file mode 100644
index 00000000..a9a74945
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/aero@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.css
new file mode 100644
index 00000000..af091c80
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, blue
+----------------------------------- */
+.icheckbox_flat-blue,
+.iradio_flat-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-blue {
+ background-position: 0 0;
+}
+ .icheckbox_flat-blue.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-blue.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-blue.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-blue {
+ background-position: -88px 0;
+}
+ .iradio_flat-blue.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-blue.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-blue.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-blue,
+ .iradio_flat-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.png
new file mode 100644
index 00000000..4b6ef982
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue@2x.png
new file mode 100644
index 00000000..d52da057
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/blue@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.css
new file mode 100644
index 00000000..665bc7bc
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.css
@@ -0,0 +1,53 @@
+/* iCheck plugin flat skin, black
+----------------------------------- */
+.icheckbox_flat,
+.iradio_flat {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(flat.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat {
+ background-position: 0 0;
+}
+ .icheckbox_flat.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat {
+ background-position: -88px 0;
+}
+ .iradio_flat.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat,
+ .iradio_flat {
+ background-image: url(flat@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.png
new file mode 100644
index 00000000..15af826e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat@2x.png
new file mode 100644
index 00000000..e70e438c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/flat@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.css
new file mode 100644
index 00000000..cce7a7fa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, green
+----------------------------------- */
+.icheckbox_flat-green,
+.iradio_flat-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-green {
+ background-position: 0 0;
+}
+ .icheckbox_flat-green.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-green.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-green.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-green {
+ background-position: -88px 0;
+}
+ .iradio_flat-green.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-green.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-green.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-green,
+ .iradio_flat-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.png
new file mode 100644
index 00000000..6b303fbe
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green@2x.png
new file mode 100644
index 00000000..92b4411d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/green@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.css
new file mode 100644
index 00000000..46305d01
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, grey
+----------------------------------- */
+.icheckbox_flat-grey,
+.iradio_flat-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-grey {
+ background-position: 0 0;
+}
+ .icheckbox_flat-grey.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-grey.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-grey.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-grey {
+ background-position: -88px 0;
+}
+ .iradio_flat-grey.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-grey.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-grey.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-grey,
+ .iradio_flat-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.png
new file mode 100644
index 00000000..c6e2873e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey@2x.png
new file mode 100644
index 00000000..0b47b1c6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/grey@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.css
new file mode 100644
index 00000000..c8d3caf3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, orange
+----------------------------------- */
+.icheckbox_flat-orange,
+.iradio_flat-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-orange {
+ background-position: 0 0;
+}
+ .icheckbox_flat-orange.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-orange.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-orange.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-orange {
+ background-position: -88px 0;
+}
+ .iradio_flat-orange.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-orange.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-orange.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-orange,
+ .iradio_flat-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.png
new file mode 100644
index 00000000..ec2532eb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange@2x.png
new file mode 100644
index 00000000..9350b506
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/orange@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.css
new file mode 100644
index 00000000..e4ca2549
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, pink
+----------------------------------- */
+.icheckbox_flat-pink,
+.iradio_flat-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-pink {
+ background-position: 0 0;
+}
+ .icheckbox_flat-pink.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-pink.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-pink.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-pink {
+ background-position: -88px 0;
+}
+ .iradio_flat-pink.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-pink.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-pink.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-pink,
+ .iradio_flat-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.png
new file mode 100644
index 00000000..3e65d9dd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink@2x.png
new file mode 100644
index 00000000..281ba06b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/pink@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.css
new file mode 100644
index 00000000..15408bcd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, purple
+----------------------------------- */
+.icheckbox_flat-purple,
+.iradio_flat-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-purple {
+ background-position: 0 0;
+}
+ .icheckbox_flat-purple.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-purple.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-purple.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-purple {
+ background-position: -88px 0;
+}
+ .iradio_flat-purple.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-purple.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-purple.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-purple,
+ .iradio_flat-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.png
new file mode 100644
index 00000000..3699fd58
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple@2x.png
new file mode 100644
index 00000000..7f4be74a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/purple@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.css
new file mode 100644
index 00000000..d2e240db
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, red
+----------------------------------- */
+.icheckbox_flat-red,
+.iradio_flat-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-red {
+ background-position: 0 0;
+}
+ .icheckbox_flat-red.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-red.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-red.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-red {
+ background-position: -88px 0;
+}
+ .iradio_flat-red.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-red.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-red.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-red,
+ .iradio_flat-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.png
new file mode 100644
index 00000000..0d5ac381
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red@2x.png
new file mode 100644
index 00000000..38590d98
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/red@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.css
new file mode 100644
index 00000000..ce130af6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, yellow
+----------------------------------- */
+.icheckbox_flat-yellow,
+.iradio_flat-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_flat-yellow.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-yellow.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-yellow.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-yellow {
+ background-position: -88px 0;
+}
+ .iradio_flat-yellow.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-yellow.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-yellow.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-yellow,
+ .iradio_flat-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.png
new file mode 100644
index 00000000..909dadc5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow@2x.png
new file mode 100644
index 00000000..9fd5d733
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/flat/yellow@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.css
new file mode 100644
index 00000000..23649a75
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Futurico skin
+----------------------------------- */
+.icheckbox_futurico,
+.iradio_futurico {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 16px;
+ height: 17px;
+ background: url(futurico.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_futurico {
+ background-position: 0 0;
+}
+ .icheckbox_futurico.checked {
+ background-position: -18px 0;
+ }
+ .icheckbox_futurico.disabled {
+ background-position: -36px 0;
+ cursor: default;
+ }
+ .icheckbox_futurico.checked.disabled {
+ background-position: -54px 0;
+ }
+
+.iradio_futurico {
+ background-position: -72px 0;
+}
+ .iradio_futurico.checked {
+ background-position: -90px 0;
+ }
+ .iradio_futurico.disabled {
+ background-position: -108px 0;
+ cursor: default;
+ }
+ .iradio_futurico.checked.disabled {
+ background-position: -126px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_futurico,
+ .iradio_futurico {
+ background-image: url(futurico@2x.png);
+ -webkit-background-size: 144px 19px;
+ background-size: 144px 19px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.png
new file mode 100644
index 00000000..50d62b5d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico@2x.png
new file mode 100644
index 00000000..f7eb45aa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/futurico/futurico@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/Thumbs.db b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/Thumbs.db
new file mode 100644
index 00000000..a5980502
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/Thumbs.db
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/_all.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/_all.css
new file mode 100644
index 00000000..14ff6cca
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/_all.css
@@ -0,0 +1,710 @@
+/* iCheck plugin Line skin
+----------------------------------- */
+.icheckbox_line,
+.iradio_line {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #000;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line.hover,
+ .icheckbox_line.checked.hover,
+ .iradio_line.hover {
+ background: #444;
+ }
+ .icheckbox_line.checked,
+ .iradio_line.checked {
+ background: #000;
+ }
+ .icheckbox_line.checked .icheck_line-icon,
+ .iradio_line.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line.disabled,
+ .iradio_line.disabled {
+ background: #ccc;
+ cursor: default;
+ }
+ .icheckbox_line.disabled .icheck_line-icon,
+ .iradio_line.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line.checked.disabled,
+ .iradio_line.checked.disabled {
+ background: #ccc;
+ }
+ .icheckbox_line.checked.disabled .icheck_line-icon,
+ .iradio_line.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* red */
+.icheckbox_line-red,
+.iradio_line-red {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #e56c69;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-red.hover,
+ .icheckbox_line-red.checked.hover,
+ .iradio_line-red.hover {
+ background: #E98582;
+ }
+ .icheckbox_line-red.checked,
+ .iradio_line-red.checked {
+ background: #e56c69;
+ }
+ .icheckbox_line-red.checked .icheck_line-icon,
+ .iradio_line-red.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-red.disabled,
+ .iradio_line-red.disabled {
+ background: #F7D3D2;
+ cursor: default;
+ }
+ .icheckbox_line-red.disabled .icheck_line-icon,
+ .iradio_line-red.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-red.checked.disabled,
+ .iradio_line-red.checked.disabled {
+ background: #F7D3D2;
+ }
+ .icheckbox_line-red.checked.disabled .icheck_line-icon,
+ .iradio_line-red.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* green */
+.icheckbox_line-green,
+.iradio_line-green {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #1b7e5a;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-green.hover,
+ .icheckbox_line-green.checked.hover,
+ .iradio_line-green.hover {
+ background: #24AA7A;
+ }
+ .icheckbox_line-green.checked,
+ .iradio_line-green.checked {
+ background: #1b7e5a;
+ }
+ .icheckbox_line-green.checked .icheck_line-icon,
+ .iradio_line-green.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-green.disabled,
+ .iradio_line-green.disabled {
+ background: #89E6C4;
+ cursor: default;
+ }
+ .icheckbox_line-green.disabled .icheck_line-icon,
+ .iradio_line-green.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-green.checked.disabled,
+ .iradio_line-green.checked.disabled {
+ background: #89E6C4;
+ }
+ .icheckbox_line-green.checked.disabled .icheck_line-icon,
+ .iradio_line-green.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* blue */
+.icheckbox_line-blue,
+.iradio_line-blue {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #2489c5;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-blue.hover,
+ .icheckbox_line-blue.checked.hover,
+ .iradio_line-blue.hover {
+ background: #3DA0DB;
+ }
+ .icheckbox_line-blue.checked,
+ .iradio_line-blue.checked {
+ background: #2489c5;
+ }
+ .icheckbox_line-blue.checked .icheck_line-icon,
+ .iradio_line-blue.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-blue.disabled,
+ .iradio_line-blue.disabled {
+ background: #ADD7F0;
+ cursor: default;
+ }
+ .icheckbox_line-blue.disabled .icheck_line-icon,
+ .iradio_line-blue.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-blue.checked.disabled,
+ .iradio_line-blue.checked.disabled {
+ background: #ADD7F0;
+ }
+ .icheckbox_line-blue.checked.disabled .icheck_line-icon,
+ .iradio_line-blue.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* aero */
+.icheckbox_line-aero,
+.iradio_line-aero {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #9cc2cb;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-aero.hover,
+ .icheckbox_line-aero.checked.hover,
+ .iradio_line-aero.hover {
+ background: #B5D1D8;
+ }
+ .icheckbox_line-aero.checked,
+ .iradio_line-aero.checked {
+ background: #9cc2cb;
+ }
+ .icheckbox_line-aero.checked .icheck_line-icon,
+ .iradio_line-aero.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-aero.disabled,
+ .iradio_line-aero.disabled {
+ background: #D2E4E8;
+ cursor: default;
+ }
+ .icheckbox_line-aero.disabled .icheck_line-icon,
+ .iradio_line-aero.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-aero.checked.disabled,
+ .iradio_line-aero.checked.disabled {
+ background: #D2E4E8;
+ }
+ .icheckbox_line-aero.checked.disabled .icheck_line-icon,
+ .iradio_line-aero.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* grey */
+.icheckbox_line-grey,
+.iradio_line-grey {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #73716e;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-grey.hover,
+ .icheckbox_line-grey.checked.hover,
+ .iradio_line-grey.hover {
+ background: #8B8986;
+ }
+ .icheckbox_line-grey.checked,
+ .iradio_line-grey.checked {
+ background: #73716e;
+ }
+ .icheckbox_line-grey.checked .icheck_line-icon,
+ .iradio_line-grey.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-grey.disabled,
+ .iradio_line-grey.disabled {
+ background: #D5D4D3;
+ cursor: default;
+ }
+ .icheckbox_line-grey.disabled .icheck_line-icon,
+ .iradio_line-grey.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-grey.checked.disabled,
+ .iradio_line-grey.checked.disabled {
+ background: #D5D4D3;
+ }
+ .icheckbox_line-grey.checked.disabled .icheck_line-icon,
+ .iradio_line-grey.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* orange */
+.icheckbox_line-orange,
+.iradio_line-orange {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #f70;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-orange.hover,
+ .icheckbox_line-orange.checked.hover,
+ .iradio_line-orange.hover {
+ background: #FF9233;
+ }
+ .icheckbox_line-orange.checked,
+ .iradio_line-orange.checked {
+ background: #f70;
+ }
+ .icheckbox_line-orange.checked .icheck_line-icon,
+ .iradio_line-orange.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-orange.disabled,
+ .iradio_line-orange.disabled {
+ background: #FFD6B3;
+ cursor: default;
+ }
+ .icheckbox_line-orange.disabled .icheck_line-icon,
+ .iradio_line-orange.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-orange.checked.disabled,
+ .iradio_line-orange.checked.disabled {
+ background: #FFD6B3;
+ }
+ .icheckbox_line-orange.checked.disabled .icheck_line-icon,
+ .iradio_line-orange.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* yellow */
+.icheckbox_line-yellow,
+.iradio_line-yellow {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #FFC414;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-yellow.hover,
+ .icheckbox_line-yellow.checked.hover,
+ .iradio_line-yellow.hover {
+ background: #FFD34F;
+ }
+ .icheckbox_line-yellow.checked,
+ .iradio_line-yellow.checked {
+ background: #FFC414;
+ }
+ .icheckbox_line-yellow.checked .icheck_line-icon,
+ .iradio_line-yellow.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-yellow.disabled,
+ .iradio_line-yellow.disabled {
+ background: #FFE495;
+ cursor: default;
+ }
+ .icheckbox_line-yellow.disabled .icheck_line-icon,
+ .iradio_line-yellow.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-yellow.checked.disabled,
+ .iradio_line-yellow.checked.disabled {
+ background: #FFE495;
+ }
+ .icheckbox_line-yellow.checked.disabled .icheck_line-icon,
+ .iradio_line-yellow.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* pink */
+.icheckbox_line-pink,
+.iradio_line-pink {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #a77a94;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-pink.hover,
+ .icheckbox_line-pink.checked.hover,
+ .iradio_line-pink.hover {
+ background: #B995A9;
+ }
+ .icheckbox_line-pink.checked,
+ .iradio_line-pink.checked {
+ background: #a77a94;
+ }
+ .icheckbox_line-pink.checked .icheck_line-icon,
+ .iradio_line-pink.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-pink.disabled,
+ .iradio_line-pink.disabled {
+ background: #E0D0DA;
+ cursor: default;
+ }
+ .icheckbox_line-pink.disabled .icheck_line-icon,
+ .iradio_line-pink.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-pink.checked.disabled,
+ .iradio_line-pink.checked.disabled {
+ background: #E0D0DA;
+ }
+ .icheckbox_line-pink.checked.disabled .icheck_line-icon,
+ .iradio_line-pink.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* purple */
+.icheckbox_line-purple,
+.iradio_line-purple {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #6a5a8c;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-purple.hover,
+ .icheckbox_line-purple.checked.hover,
+ .iradio_line-purple.hover {
+ background: #8677A7;
+ }
+ .icheckbox_line-purple.checked,
+ .iradio_line-purple.checked {
+ background: #6a5a8c;
+ }
+ .icheckbox_line-purple.checked .icheck_line-icon,
+ .iradio_line-purple.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-purple.disabled,
+ .iradio_line-purple.disabled {
+ background: #D2CCDE;
+ cursor: default;
+ }
+ .icheckbox_line-purple.disabled .icheck_line-icon,
+ .iradio_line-purple.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-purple.checked.disabled,
+ .iradio_line-purple.checked.disabled {
+ background: #D2CCDE;
+ }
+ .icheckbox_line-purple.checked.disabled .icheck_line-icon,
+ .iradio_line-purple.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/aero.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/aero.css
new file mode 100644
index 00000000..e6dd82a6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/aero.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, aero
+----------------------------------- */
+.icheckbox_line-aero,
+.iradio_line-aero {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #9cc2cb;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-aero.hover,
+ .icheckbox_line-aero.checked.hover,
+ .iradio_line-aero.hover {
+ background: #B5D1D8;
+ }
+ .icheckbox_line-aero.checked,
+ .iradio_line-aero.checked {
+ background: #9cc2cb;
+ }
+ .icheckbox_line-aero.checked .icheck_line-icon,
+ .iradio_line-aero.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-aero.disabled,
+ .iradio_line-aero.disabled {
+ background: #D2E4E8;
+ cursor: default;
+ }
+ .icheckbox_line-aero.disabled .icheck_line-icon,
+ .iradio_line-aero.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-aero.checked.disabled,
+ .iradio_line-aero.checked.disabled {
+ background: #D2E4E8;
+ }
+ .icheckbox_line-aero.checked.disabled .icheck_line-icon,
+ .iradio_line-aero.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/blue.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/blue.css
new file mode 100644
index 00000000..8f105d90
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/blue.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, blue
+----------------------------------- */
+.icheckbox_line-blue,
+.iradio_line-blue {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #2489c5;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-blue.hover,
+ .icheckbox_line-blue.checked.hover,
+ .iradio_line-blue.hover {
+ background: #3DA0DB;
+ }
+ .icheckbox_line-blue.checked,
+ .iradio_line-blue.checked {
+ background: #2489c5;
+ }
+ .icheckbox_line-blue.checked .icheck_line-icon,
+ .iradio_line-blue.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-blue.disabled,
+ .iradio_line-blue.disabled {
+ background: #ADD7F0;
+ cursor: default;
+ }
+ .icheckbox_line-blue.disabled .icheck_line-icon,
+ .iradio_line-blue.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-blue.checked.disabled,
+ .iradio_line-blue.checked.disabled {
+ background: #ADD7F0;
+ }
+ .icheckbox_line-blue.checked.disabled .icheck_line-icon,
+ .iradio_line-blue.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/green.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/green.css
new file mode 100644
index 00000000..9535c7c3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/green.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, green
+----------------------------------- */
+.icheckbox_line-green,
+.iradio_line-green {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #1b7e5a;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-green.hover,
+ .icheckbox_line-green.checked.hover,
+ .iradio_line-green.hover {
+ background: #24AA7A;
+ }
+ .icheckbox_line-green.checked,
+ .iradio_line-green.checked {
+ background: #1b7e5a;
+ }
+ .icheckbox_line-green.checked .icheck_line-icon,
+ .iradio_line-green.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-green.disabled,
+ .iradio_line-green.disabled {
+ background: #89E6C4;
+ cursor: default;
+ }
+ .icheckbox_line-green.disabled .icheck_line-icon,
+ .iradio_line-green.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-green.checked.disabled,
+ .iradio_line-green.checked.disabled {
+ background: #89E6C4;
+ }
+ .icheckbox_line-green.checked.disabled .icheck_line-icon,
+ .iradio_line-green.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/grey.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/grey.css
new file mode 100644
index 00000000..9e340535
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/grey.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, grey
+----------------------------------- */
+.icheckbox_line-grey,
+.iradio_line-grey {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #73716e;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-grey.hover,
+ .icheckbox_line-grey.checked.hover,
+ .iradio_line-grey.hover {
+ background: #8B8986;
+ }
+ .icheckbox_line-grey.checked,
+ .iradio_line-grey.checked {
+ background: #73716e;
+ }
+ .icheckbox_line-grey.checked .icheck_line-icon,
+ .iradio_line-grey.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-grey.disabled,
+ .iradio_line-grey.disabled {
+ background: #D5D4D3;
+ cursor: default;
+ }
+ .icheckbox_line-grey.disabled .icheck_line-icon,
+ .iradio_line-grey.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-grey.checked.disabled,
+ .iradio_line-grey.checked.disabled {
+ background: #D5D4D3;
+ }
+ .icheckbox_line-grey.checked.disabled .icheck_line-icon,
+ .iradio_line-grey.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.css
new file mode 100644
index 00000000..2173a25c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, black
+----------------------------------- */
+.icheckbox_line,
+.iradio_line {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #000;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line.hover,
+ .icheckbox_line.checked.hover,
+ .iradio_line.hover {
+ background: #444;
+ }
+ .icheckbox_line.checked,
+ .iradio_line.checked {
+ background: #000;
+ }
+ .icheckbox_line.checked .icheck_line-icon,
+ .iradio_line.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line.disabled,
+ .iradio_line.disabled {
+ background: #ccc;
+ cursor: default;
+ }
+ .icheckbox_line.disabled .icheck_line-icon,
+ .iradio_line.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line.checked.disabled,
+ .iradio_line.checked.disabled {
+ background: #ccc;
+ }
+ .icheckbox_line.checked.disabled .icheck_line-icon,
+ .iradio_line.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.png
new file mode 100644
index 00000000..d21d7a7b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line@2x.png
new file mode 100644
index 00000000..62900a2d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/line@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/orange.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/orange.css
new file mode 100644
index 00000000..e408a6af
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/orange.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, orange
+----------------------------------- */
+.icheckbox_line-orange,
+.iradio_line-orange {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #f70;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-orange.hover,
+ .icheckbox_line-orange.checked.hover,
+ .iradio_line-orange.hover {
+ background: #FF9233;
+ }
+ .icheckbox_line-orange.checked,
+ .iradio_line-orange.checked {
+ background: #f70;
+ }
+ .icheckbox_line-orange.checked .icheck_line-icon,
+ .iradio_line-orange.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-orange.disabled,
+ .iradio_line-orange.disabled {
+ background: #FFD6B3;
+ cursor: default;
+ }
+ .icheckbox_line-orange.disabled .icheck_line-icon,
+ .iradio_line-orange.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-orange.checked.disabled,
+ .iradio_line-orange.checked.disabled {
+ background: #FFD6B3;
+ }
+ .icheckbox_line-orange.checked.disabled .icheck_line-icon,
+ .iradio_line-orange.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/pink.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/pink.css
new file mode 100644
index 00000000..d19459ed
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/pink.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, pink
+----------------------------------- */
+.icheckbox_line-pink,
+.iradio_line-pink {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #a77a94;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-pink.hover,
+ .icheckbox_line-pink.checked.hover,
+ .iradio_line-pink.hover {
+ background: #B995A9;
+ }
+ .icheckbox_line-pink.checked,
+ .iradio_line-pink.checked {
+ background: #a77a94;
+ }
+ .icheckbox_line-pink.checked .icheck_line-icon,
+ .iradio_line-pink.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-pink.disabled,
+ .iradio_line-pink.disabled {
+ background: #E0D0DA;
+ cursor: default;
+ }
+ .icheckbox_line-pink.disabled .icheck_line-icon,
+ .iradio_line-pink.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-pink.checked.disabled,
+ .iradio_line-pink.checked.disabled {
+ background: #E0D0DA;
+ }
+ .icheckbox_line-pink.checked.disabled .icheck_line-icon,
+ .iradio_line-pink.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/purple.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/purple.css
new file mode 100644
index 00000000..ecca700b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/purple.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, purple
+----------------------------------- */
+.icheckbox_line-purple,
+.iradio_line-purple {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #6a5a8c;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-purple.hover,
+ .icheckbox_line-purple.checked.hover,
+ .iradio_line-purple.hover {
+ background: #8677A7;
+ }
+ .icheckbox_line-purple.checked,
+ .iradio_line-purple.checked {
+ background: #6a5a8c;
+ }
+ .icheckbox_line-purple.checked .icheck_line-icon,
+ .iradio_line-purple.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-purple.disabled,
+ .iradio_line-purple.disabled {
+ background: #D2CCDE;
+ cursor: default;
+ }
+ .icheckbox_line-purple.disabled .icheck_line-icon,
+ .iradio_line-purple.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-purple.checked.disabled,
+ .iradio_line-purple.checked.disabled {
+ background: #D2CCDE;
+ }
+ .icheckbox_line-purple.checked.disabled .icheck_line-icon,
+ .iradio_line-purple.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/red.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/red.css
new file mode 100644
index 00000000..3a8aee21
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/red.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, red
+----------------------------------- */
+.icheckbox_line-red,
+.iradio_line-red {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #e56c69;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-red.hover,
+ .icheckbox_line-red.checked.hover,
+ .iradio_line-red.hover {
+ background: #E98582;
+ }
+ .icheckbox_line-red.checked,
+ .iradio_line-red.checked {
+ background: #e56c69;
+ }
+ .icheckbox_line-red.checked .icheck_line-icon,
+ .iradio_line-red.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-red.disabled,
+ .iradio_line-red.disabled {
+ background: #F7D3D2;
+ cursor: default;
+ }
+ .icheckbox_line-red.disabled .icheck_line-icon,
+ .iradio_line-red.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-red.checked.disabled,
+ .iradio_line-red.checked.disabled {
+ background: #F7D3D2;
+ }
+ .icheckbox_line-red.checked.disabled .icheck_line-icon,
+ .iradio_line-red.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/yellow.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/yellow.css
new file mode 100644
index 00000000..c6eaccfa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/line/yellow.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, yellow
+----------------------------------- */
+.icheckbox_line-yellow,
+.iradio_line-yellow {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #FFC414;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-yellow.hover,
+ .icheckbox_line-yellow.checked.hover,
+ .iradio_line-yellow.hover {
+ background: #FFD34F;
+ }
+ .icheckbox_line-yellow.checked,
+ .iradio_line-yellow.checked {
+ background: #FFC414;
+ }
+ .icheckbox_line-yellow.checked .icheck_line-icon,
+ .iradio_line-yellow.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-yellow.disabled,
+ .iradio_line-yellow.disabled {
+ background: #FFE495;
+ cursor: default;
+ }
+ .icheckbox_line-yellow.disabled .icheck_line-icon,
+ .iradio_line-yellow.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-yellow.checked.disabled,
+ .iradio_line-yellow.checked.disabled {
+ background: #FFE495;
+ }
+ .icheckbox_line-yellow.checked.disabled .icheck_line-icon,
+ .iradio_line-yellow.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/_all.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/_all.css
new file mode 100644
index 00000000..61043e39
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/_all.css
@@ -0,0 +1,590 @@
+/* iCheck plugin Minimal skin
+----------------------------------- */
+.icheckbox_minimal,
+.iradio_minimal {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(minimal.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal {
+ background-position: 0 0;
+}
+ .icheckbox_minimal.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal {
+ background-position: -100px 0;
+}
+ .iradio_minimal.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal,
+ .iradio_minimal {
+ background-image: url(minimal@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* red */
+.icheckbox_minimal-red,
+.iradio_minimal-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-red {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-red.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-red.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-red.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-red.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-red {
+ background-position: -100px 0;
+}
+ .iradio_minimal-red.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-red.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-red.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-red.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-red,
+ .iradio_minimal-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* green */
+.icheckbox_minimal-green,
+.iradio_minimal-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-green {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-green.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-green.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-green.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-green.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-green {
+ background-position: -100px 0;
+}
+ .iradio_minimal-green.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-green.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-green.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-green.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-green,
+ .iradio_minimal-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* blue */
+.icheckbox_minimal-blue,
+.iradio_minimal-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-blue {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-blue.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-blue.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-blue.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-blue.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-blue {
+ background-position: -100px 0;
+}
+ .iradio_minimal-blue.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-blue.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-blue.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-blue.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-blue,
+ .iradio_minimal-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* aero */
+.icheckbox_minimal-aero,
+.iradio_minimal-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-aero {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-aero.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-aero.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-aero.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-aero.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-aero {
+ background-position: -100px 0;
+}
+ .iradio_minimal-aero.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-aero.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-aero.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-aero.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-aero,
+ .iradio_minimal-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* grey */
+.icheckbox_minimal-grey,
+.iradio_minimal-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-grey {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-grey.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-grey.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-grey.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-grey.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-grey {
+ background-position: -100px 0;
+}
+ .iradio_minimal-grey.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-grey.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-grey.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-grey.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-grey,
+ .iradio_minimal-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* orange */
+.icheckbox_minimal-orange,
+.iradio_minimal-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-orange {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-orange.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-orange.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-orange.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-orange.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-orange {
+ background-position: -100px 0;
+}
+ .iradio_minimal-orange.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-orange.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-orange.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-orange.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-orange,
+ .iradio_minimal-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* yellow */
+.icheckbox_minimal-yellow,
+.iradio_minimal-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-yellow.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-yellow.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-yellow.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-yellow.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-yellow {
+ background-position: -100px 0;
+}
+ .iradio_minimal-yellow.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-yellow.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-yellow.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-yellow.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-yellow,
+ .iradio_minimal-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* pink */
+.icheckbox_minimal-pink,
+.iradio_minimal-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-pink {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-pink.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-pink.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-pink.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-pink.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-pink {
+ background-position: -100px 0;
+}
+ .iradio_minimal-pink.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-pink.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-pink.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-pink.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-pink,
+ .iradio_minimal-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* purple */
+.icheckbox_minimal-purple,
+.iradio_minimal-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-purple {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-purple.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-purple.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-purple.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-purple.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-purple {
+ background-position: -100px 0;
+}
+ .iradio_minimal-purple.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-purple.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-purple.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-purple.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-purple,
+ .iradio_minimal-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.css
new file mode 100644
index 00000000..c0ddf79d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, aero
+----------------------------------- */
+.icheckbox_minimal-aero,
+.iradio_minimal-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-aero {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-aero.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-aero.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-aero.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-aero.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-aero {
+ background-position: -100px 0;
+}
+ .iradio_minimal-aero.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-aero.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-aero.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-aero.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-aero,
+ .iradio_minimal-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.png
new file mode 100644
index 00000000..dccf7740
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero@2x.png
new file mode 100644
index 00000000..5537ee36
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/aero@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.css
new file mode 100644
index 00000000..7205ac9a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, blue
+----------------------------------- */
+.icheckbox_minimal-blue,
+.iradio_minimal-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-blue {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-blue.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-blue.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-blue.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-blue.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-blue {
+ background-position: -100px 0;
+}
+ .iradio_minimal-blue.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-blue.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-blue.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-blue.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-blue,
+ .iradio_minimal-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.png
new file mode 100644
index 00000000..af04cee5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue@2x.png
new file mode 100644
index 00000000..f19210a9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/blue@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.css
new file mode 100644
index 00000000..ad005c11
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, green
+----------------------------------- */
+.icheckbox_minimal-green,
+.iradio_minimal-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-green {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-green.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-green.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-green.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-green.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-green {
+ background-position: -100px 0;
+}
+ .iradio_minimal-green.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-green.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-green.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-green.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-green,
+ .iradio_minimal-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.png
new file mode 100644
index 00000000..9171ebc7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green@2x.png
new file mode 100644
index 00000000..7f18f96a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/green@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.css
new file mode 100644
index 00000000..157bbd37
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, grey
+----------------------------------- */
+.icheckbox_minimal-grey,
+.iradio_minimal-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-grey {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-grey.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-grey.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-grey.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-grey.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-grey {
+ background-position: -100px 0;
+}
+ .iradio_minimal-grey.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-grey.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-grey.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-grey.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-grey,
+ .iradio_minimal-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.png
new file mode 100644
index 00000000..22dcdbcf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey@2x.png
new file mode 100644
index 00000000..85e82ddd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/grey@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.css
new file mode 100644
index 00000000..f344ea63
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, black
+----------------------------------- */
+.icheckbox_minimal,
+.iradio_minimal {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(minimal.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal {
+ background-position: 0 0;
+}
+ .icheckbox_minimal.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal {
+ background-position: -100px 0;
+}
+ .iradio_minimal.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal,
+ .iradio_minimal {
+ background-image: url(minimal@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.png
new file mode 100644
index 00000000..943be16f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal@2x.png
new file mode 100644
index 00000000..d62291da
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/minimal@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.css
new file mode 100644
index 00000000..04779ebe
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, orange
+----------------------------------- */
+.icheckbox_minimal-orange,
+.iradio_minimal-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-orange {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-orange.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-orange.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-orange.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-orange.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-orange {
+ background-position: -100px 0;
+}
+ .iradio_minimal-orange.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-orange.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-orange.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-orange.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-orange,
+ .iradio_minimal-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.png
new file mode 100644
index 00000000..f2a31497
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange@2x.png
new file mode 100644
index 00000000..68c83591
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/orange@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.css
new file mode 100644
index 00000000..1e2f0e42
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, pink
+----------------------------------- */
+.icheckbox_minimal-pink,
+.iradio_minimal-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-pink {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-pink.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-pink.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-pink.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-pink.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-pink {
+ background-position: -100px 0;
+}
+ .iradio_minimal-pink.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-pink.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-pink.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-pink.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-pink,
+ .iradio_minimal-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.png
new file mode 100644
index 00000000..660553c0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink@2x.png
new file mode 100644
index 00000000..7d7b3851
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/pink@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.css
new file mode 100644
index 00000000..f3f8cf4d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, purple
+----------------------------------- */
+.icheckbox_minimal-purple,
+.iradio_minimal-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-purple {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-purple.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-purple.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-purple.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-purple.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-purple {
+ background-position: -100px 0;
+}
+ .iradio_minimal-purple.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-purple.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-purple.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-purple.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-purple,
+ .iradio_minimal-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.png
new file mode 100644
index 00000000..48dec794
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple@2x.png
new file mode 100644
index 00000000..3bb70417
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/purple@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.css
new file mode 100644
index 00000000..0530c919
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, red
+----------------------------------- */
+.icheckbox_minimal-red,
+.iradio_minimal-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-red {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-red.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-red.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-red.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-red.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-red {
+ background-position: -100px 0;
+}
+ .iradio_minimal-red.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-red.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-red.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-red.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-red,
+ .iradio_minimal-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.png
new file mode 100644
index 00000000..4443f809
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red@2x.png
new file mode 100644
index 00000000..2eb55a65
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/red@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.css
new file mode 100644
index 00000000..fbd567f6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, yellow
+----------------------------------- */
+.icheckbox_minimal-yellow,
+.iradio_minimal-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-yellow.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-yellow.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-yellow.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-yellow.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-yellow {
+ background-position: -100px 0;
+}
+ .iradio_minimal-yellow.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-yellow.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-yellow.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-yellow.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-yellow,
+ .iradio_minimal-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.png
new file mode 100644
index 00000000..0999b7ec
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow@2x.png
new file mode 100644
index 00000000..c16f2b7d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/minimal/yellow@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.css
new file mode 100644
index 00000000..8427bf20
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Polaris skin
+----------------------------------- */
+.icheckbox_polaris,
+.iradio_polaris {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 29px;
+ height: 29px;
+ background: url(polaris.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_polaris {
+ background-position: 0 0;
+}
+ .icheckbox_polaris.hover {
+ background-position: -31px 0;
+ }
+ .icheckbox_polaris.checked {
+ background-position: -62px 0;
+ }
+ .icheckbox_polaris.disabled {
+ background-position: -93px 0;
+ cursor: default;
+ }
+ .icheckbox_polaris.checked.disabled {
+ background-position: -124px 0;
+ }
+
+.iradio_polaris {
+ background-position: -155px 0;
+}
+ .iradio_polaris.hover {
+ background-position: -186px 0;
+ }
+ .iradio_polaris.checked {
+ background-position: -217px 0;
+ }
+ .iradio_polaris.disabled {
+ background-position: -248px 0;
+ cursor: default;
+ }
+ .iradio_polaris.checked.disabled {
+ background-position: -279px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_polaris,
+ .iradio_polaris {
+ background-image: url(polaris@2x.png);
+ -webkit-background-size: 310px 31px;
+ background-size: 310px 31px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.png
new file mode 100644
index 00000000..60c14e6a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris@2x.png
new file mode 100644
index 00000000..ed943daf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/polaris/polaris@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/Thumbs.db b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/Thumbs.db
new file mode 100644
index 00000000..95f09067
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/Thumbs.db
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/_all.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/_all.css
new file mode 100644
index 00000000..6b150ba9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/_all.css
@@ -0,0 +1,590 @@
+/* iCheck plugin Square skin
+----------------------------------- */
+.icheckbox_square,
+.iradio_square {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(square.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square {
+ background-position: 0 0;
+}
+ .icheckbox_square.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square {
+ background-position: -120px 0;
+}
+ .iradio_square.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square,
+ .iradio_square {
+ background-image: url(square@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* red */
+.icheckbox_square-red,
+.iradio_square-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-red {
+ background-position: 0 0;
+}
+ .icheckbox_square-red.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-red.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-red.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-red.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-red {
+ background-position: -120px 0;
+}
+ .iradio_square-red.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-red.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-red.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-red.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-red,
+ .iradio_square-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* green */
+.icheckbox_square-green,
+.iradio_square-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-green {
+ background-position: 0 0;
+}
+ .icheckbox_square-green.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-green.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-green.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-green.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-green {
+ background-position: -120px 0;
+}
+ .iradio_square-green.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-green.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-green.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-green.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-green,
+ .iradio_square-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* blue */
+.icheckbox_square-blue,
+.iradio_square-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-blue {
+ background-position: 0 0;
+}
+ .icheckbox_square-blue.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-blue.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-blue.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-blue.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-blue {
+ background-position: -120px 0;
+}
+ .iradio_square-blue.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-blue.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-blue.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-blue.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-blue,
+ .iradio_square-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* aero */
+.icheckbox_square-aero,
+.iradio_square-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin-right: 10px;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-aero {
+ background-position: 0 0;
+}
+ .icheckbox_square-aero.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-aero.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-aero.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-aero.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-aero {
+ background-position: -120px 0;
+}
+ .iradio_square-aero.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-aero.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-aero.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-aero.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-aero,
+ .iradio_square-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* grey */
+.icheckbox_square-grey,
+.iradio_square-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-grey {
+ background-position: 0 0;
+}
+ .icheckbox_square-grey.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-grey.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-grey.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-grey.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-grey {
+ background-position: -120px 0;
+}
+ .iradio_square-grey.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-grey.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-grey.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-grey.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-grey,
+ .iradio_square-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* orange */
+.icheckbox_square-orange,
+.iradio_square-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-orange {
+ background-position: 0 0;
+}
+ .icheckbox_square-orange.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-orange.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-orange.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-orange.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-orange {
+ background-position: -120px 0;
+}
+ .iradio_square-orange.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-orange.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-orange.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-orange.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-orange,
+ .iradio_square-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* yellow */
+.icheckbox_square-yellow,
+.iradio_square-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_square-yellow.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-yellow.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-yellow.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-yellow.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-yellow {
+ background-position: -120px 0;
+}
+ .iradio_square-yellow.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-yellow.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-yellow.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-yellow.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-yellow,
+ .iradio_square-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* pink */
+.icheckbox_square-pink,
+.iradio_square-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-pink {
+ background-position: 0 0;
+}
+ .icheckbox_square-pink.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-pink.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-pink.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-pink.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-pink {
+ background-position: -120px 0;
+}
+ .iradio_square-pink.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-pink.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-pink.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-pink.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-pink,
+ .iradio_square-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* purple */
+.icheckbox_square-purple,
+.iradio_square-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-purple {
+ background-position: 0 0;
+}
+ .icheckbox_square-purple.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-purple.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-purple.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-purple.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-purple {
+ background-position: -120px 0;
+}
+ .iradio_square-purple.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-purple.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-purple.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-purple.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-purple,
+ .iradio_square-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.css
new file mode 100644
index 00000000..6c4d0752
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, aero
+----------------------------------- */
+.icheckbox_square-aero,
+.iradio_square-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-aero {
+ background-position: 0 0;
+}
+ .icheckbox_square-aero.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-aero.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-aero.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-aero.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-aero {
+ background-position: -120px 0;
+}
+ .iradio_square-aero.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-aero.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-aero.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-aero.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-aero,
+ .iradio_square-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.png
new file mode 100644
index 00000000..8271ca9d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero@2x.png
new file mode 100644
index 00000000..07c5a022
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/aero@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.css
new file mode 100644
index 00000000..455761b0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, blue
+----------------------------------- */
+.icheckbox_square-blue,
+.iradio_square-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-blue {
+ background-position: 0 0;
+}
+ .icheckbox_square-blue.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-blue.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-blue.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-blue.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-blue {
+ background-position: -120px 0;
+}
+ .iradio_square-blue.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-blue.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-blue.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-blue.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-blue,
+ .iradio_square-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.png
new file mode 100644
index 00000000..a3e040fc
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue@2x.png
new file mode 100644
index 00000000..8fdea12f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/blue@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.css
new file mode 100644
index 00000000..0f4409cf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, green
+----------------------------------- */
+.icheckbox_square-green,
+.iradio_square-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-green {
+ background-position: 0 0;
+}
+ .icheckbox_square-green.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-green.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-green.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-green.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-green {
+ background-position: -120px 0;
+}
+ .iradio_square-green.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-green.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-green.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-green.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-green,
+ .iradio_square-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.png
new file mode 100644
index 00000000..465824e7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green@2x.png
new file mode 100644
index 00000000..784e8747
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/green@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.css
new file mode 100644
index 00000000..4c06d58a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, grey
+----------------------------------- */
+.icheckbox_square-grey,
+.iradio_square-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-grey {
+ background-position: 0 0;
+}
+ .icheckbox_square-grey.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-grey.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-grey.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-grey.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-grey {
+ background-position: -120px 0;
+}
+ .iradio_square-grey.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-grey.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-grey.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-grey.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-grey,
+ .iradio_square-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.png
new file mode 100644
index 00000000..f6937585
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey@2x.png
new file mode 100644
index 00000000..5d6341c0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/grey@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.css
new file mode 100644
index 00000000..55b45897
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, orange
+----------------------------------- */
+.icheckbox_square-orange,
+.iradio_square-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-orange {
+ background-position: 0 0;
+}
+ .icheckbox_square-orange.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-orange.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-orange.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-orange.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-orange {
+ background-position: -120px 0;
+}
+ .iradio_square-orange.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-orange.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-orange.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-orange.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-orange,
+ .iradio_square-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.png
new file mode 100644
index 00000000..84608500
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange@2x.png
new file mode 100644
index 00000000..b1f23197
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/orange@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.css
new file mode 100644
index 00000000..b3823b21
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, pink
+----------------------------------- */
+.icheckbox_square-pink,
+.iradio_square-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-pink {
+ background-position: 0 0;
+}
+ .icheckbox_square-pink.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-pink.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-pink.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-pink.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-pink {
+ background-position: -120px 0;
+}
+ .iradio_square-pink.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-pink.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-pink.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-pink.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-pink,
+ .iradio_square-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.png
new file mode 100644
index 00000000..9c8b4e2b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink@2x.png
new file mode 100644
index 00000000..b1f3a6ed
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/pink@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.css
new file mode 100644
index 00000000..39d9b3b3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, purple
+----------------------------------- */
+.icheckbox_square-purple,
+.iradio_square-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-purple {
+ background-position: 0 0;
+}
+ .icheckbox_square-purple.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-purple.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-purple.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-purple.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-purple {
+ background-position: -120px 0;
+}
+ .iradio_square-purple.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-purple.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-purple.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-purple.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-purple,
+ .iradio_square-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.png
new file mode 100644
index 00000000..6bfc16a3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple@2x.png
new file mode 100644
index 00000000..6d3c8b1a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/purple@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.css
new file mode 100644
index 00000000..43399b8e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, red
+----------------------------------- */
+.icheckbox_square-red,
+.iradio_square-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-red {
+ background-position: 0 0;
+}
+ .icheckbox_square-red.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-red.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-red.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-red.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-red {
+ background-position: -120px 0;
+}
+ .iradio_square-red.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-red.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-red.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-red.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-red,
+ .iradio_square-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.png
new file mode 100644
index 00000000..749675a9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red@2x.png
new file mode 100644
index 00000000..c05700a5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/red@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.css
new file mode 100644
index 00000000..2f3e5bf8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, black
+----------------------------------- */
+.icheckbox_square,
+.iradio_square {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(square.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square {
+ background-position: 0 0;
+}
+ .icheckbox_square.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square {
+ background-position: -120px 0;
+}
+ .iradio_square.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square,
+ .iradio_square {
+ background-image: url(square@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.png
new file mode 100644
index 00000000..2a3c8811
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square@2x.png
new file mode 100644
index 00000000..9b56c448
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/square@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.css
new file mode 100644
index 00000000..65ef0ba2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, yellow
+----------------------------------- */
+.icheckbox_square-yellow,
+.iradio_square-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_square-yellow.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-yellow.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-yellow.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-yellow.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-yellow {
+ background-position: -120px 0;
+}
+ .iradio_square-yellow.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-yellow.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-yellow.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-yellow.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-yellow,
+ .iradio_square-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.png
new file mode 100644
index 00000000..b6c03309
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow@2x.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow@2x.png
new file mode 100644
index 00000000..6b8e328e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/icheck/skins/square/yellow@2x.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_cn.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_cn.html
new file mode 100644
index 00000000..1fe011de
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_cn.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>API 文档 [zTree -- jQuery æ ‘æ’件]</title>
+ <link rel="stylesheet" href="apiCss/common.css" type="text/css">
+ <link rel='stylesheet' href='apiCss/zTreeStyleForApi.css' type='text/css'>
+ <script type="text/javascript">
+ var ie = (function(){
+ var undef,
+ v = 3,
+ div = document.createElement('div'),
+ all = div.getElementsByTagName('i');
+ while (
+ div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+ all[0]
+ );
+ return v > 4 ? v : undef;
+ }()), ie6 = (ie === 6),
+ path = window.location.pathname.replace(/.*\/([^\/\.]*)\..*/g,"$1"),
+ langLib = [];
+ ie = ie<9;
+ if(ie) {
+ document.write('<link rel="stylesheet" href="apiCss/common_ie6.css" type="text/css">');
+ }
+ var lang = "cn",
+ ajaxMsg = "如果你使用的是 Chrome æµè§ˆå™¨ï¼Œé‚£ä¹ˆè¯·æŠŠ API 文档å‘布到 web æœåŠ¡ç›®å½•ä¸‹è®¿é—®ã€‚\n\n(Chrome æµè§ˆå™¨ä¸æ”¯æŒæœ¬åœ° ajax 访问, å³ï¼šfile://)";
+
+ </script>
+ </head>
+ <body>
+ <div id="header_wrap" class="header_wrap" style="padding-top: 30px;">
+ <div id="header" class="header round">
+ <div class="light-bulb" alt=""></div>
+ <div class="ieSuggest">æµè§ˆæœ¬ç½‘站建议您使用 Chromeã€FireFoxã€Operaã€IE9 ç­‰æµè§ˆå™¨ï¼ˆåªè¦ä¸æ˜¯ IE6 7 8 就行), 速度会更快,画é¢ä¼šæ›´ç‚«ï¼</div>
+ <div class="google_plus"><g:plusone></g:plusone></div>
+ <div class="header-text">
+ <h1><em>zTree v3.5.16 API 文档</em></h1><p></p>
+ <p>all.js = core + excheck + exedit ( ä¸åŒ…括 exhide ); å‘现错误请åŠæ—¶é€šçŸ¥ï¼Œè°¢è°¢ã€‚</p>
+ </div>
+ <ul class="shortcuts language" style="top:0;">
+ <li><a href="API_en.html" onclick="window.location.href='API_en.html'"><button class="ico en" title="英文版" type="button"></button><span class=""></span></a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content_wrap" class="content_wrap">
+ <div id="content" class="content">
+ <div class="nav_section">
+ <ul>
+ <li class="first">注释:</li>
+ <li><button class="ico16 z_core" onfocus="this.blur();"></button><span>core 核心包</span></li>
+ <li><button class="ico16 z_check" onfocus="this.blur();"></button><span>excheck 扩展</span></li>
+ <li><button class="ico16 z_edit" onfocus="this.blur();"></button><span>exedit 扩展</span></li>
+ <li><button class="ico16 z_hide" onfocus="this.blur();"></button><span>exhide 扩展</span></li>
+ <li class="noline">
+ <button class="ico16 z_search" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ </li>
+ </ul>
+ </div>
+
+ <div id="contentBox" class="contentBox round clearfix">
+ <div id="apiContent" class="apiContent">
+ <div id="api_setting" class="api_setting left">
+ <ul class="api_content_title"><li>setting é…置详解</li></ul>
+ <ul id="settingTree" class="ztree"></ul>
+ </div>
+ <div id="api_function" class="api_function right">
+ <ul class="api_content_title"><li>zTree 方法详解</li></ul>
+ <ul id="functionTree" class="ztree"></ul>
+ <ul class="api_content_title"><li>treeNode 节点数æ®è¯¦è§£</li></ul>
+ <ul id="treenodeTree" class="ztree"></ul>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+
+ <!-- overlayed -->
+ <div id="overlayDiv" class="baby_overlay">
+ <div id="overlayContent" class="content round clearfix">
+ <div class="overlaySearch">
+ <button class="ico16 z_search" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ </div>
+ <a id="overlayDivCloseBtn" class="close"></a>
+ <div id="overlayDetailDiv" class="details"></div>
+ </div>
+ <div id="overlayDivArrow" class="baby_overlay_arrow"></div>
+ </div>
+ <script type="text/javascript" src="apiCss/jquery-1.6.2.min.js"></script>
+ <script type='text/javascript' src='apiCss/jquery.ztree.core-3.5.js'></script>
+ <script type='text/javascript' src='apiCss/api.js'></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ apiContent._init();
+ });
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_en.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_en.html
new file mode 100644
index 00000000..fc7488b3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/API_en.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>API Document [zTree -- jQuery tree plug-ins.]</title>
+ <link rel="stylesheet" href="apiCss/common.css" type="text/css">
+ <link rel='stylesheet' href='apiCss/zTreeStyleForApi.css' type='text/css'>
+ <script type="text/javascript">
+ var ie = (function(){
+ var undef,
+ v = 3,
+ div = document.createElement('div'),
+ all = div.getElementsByTagName('i');
+ while (
+ div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+ all[0]
+ );
+ return v > 4 ? v : undef;
+ }()), ie6 = (ie === 6),
+ path = window.location.pathname.replace(/.*\/([^\/\.]*)\..*/g,"$1"),
+ langLib = [];
+ ie = ie<9;
+ if(ie) {
+ document.write('<link rel="stylesheet" href="apiCss/common_ie6.css" type="text/css">');
+ }
+ var lang = "en",
+ ajaxMsg = "If you use chrome browser, please copy the API files to local webserver. \n\n( because chrome browser can't allow AJAX access to 'file://' )";
+ </script>
+ </head>
+ <body>
+ <div id="header_wrap" class="header_wrap" style="padding-top: 30px;">
+ <div id="header" class="header round">
+ <div class="light-bulb" alt=""></div>
+ <div class="ieSuggest">If you use the Chrome / FireFox / Opera / IE9 browser will be even more dazzling effect!</div>
+ <div class="google_plus"><g:plusone></g:plusone></div>
+ <div class="header-text">
+ <h1><em>zTree v3.5.16 API Document</em></h1><p></p>
+ <p>all.js = core + excheck + exedit ( without exhide ); if you found some mistakes please contact me.</p>
+ </div>
+ <ul class="shortcuts language" style="top:0;">
+ <li><a href="API_cn.html" onclick="window.location.href='API_cn.html'"><button class="ico cn" title="Chinese" type="button"></button><span class=""></span></a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content_wrap" class="content_wrap">
+ <div id="content" class="content">
+ <div class="nav_section">
+ <ul>
+ <li class="first">Notes: </li>
+ <li><button class="ico16 z_core" onfocus="this.blur();"></button><span>core package</span></li>
+ <li><button class="ico16 z_check" onfocus="this.blur();"></button><span>excheck pack</span></li>
+ <li><button class="ico16 z_edit" onfocus="this.blur();"></button><span>exedit pack</span></li>
+ <li><button class="ico16 z_hide" onfocus="this.blur();"></button><span>exhide pack</span></li>
+ <li class="noline">
+ <button class="ico16 z_search" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ </li>
+ </ul>
+ </div>
+
+ <div id="contentBox" class="contentBox round clearfix">
+ <div id="apiContent" class="apiContent">
+ <div id="api_setting" class="api_setting left">
+ <ul class="api_content_title"><li>setting details</li></ul>
+ <ul id="settingTree" class="ztree"></ul>
+ </div>
+ <div id="api_function" class="api_function right">
+ <ul class="api_content_title"><li>zTree method details</li></ul>
+ <ul id="functionTree" class="ztree"></ul>
+ <ul class="api_content_title"><li>treeNode data details</li></ul>
+ <ul id="treenodeTree" class="ztree"></ul>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+
+ <!-- overlayed -->
+ <div id="overlayDiv" class="baby_overlay">
+ <div id="overlayContent" class="content round clearfix">
+ <div class="overlaySearch">
+ <button class="ico16 z_search" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ </div>
+ <a id="overlayDivCloseBtn" class="close"></a>
+ <div id="overlayDetailDiv" class="details"></div>
+ </div>
+ <div id="overlayDivArrow" class="baby_overlay_arrow"></div>
+ </div>
+ <script type="text/javascript" src="apiCss/jquery-1.6.2.min.js"></script>
+ <script type='text/javascript' src='apiCss/jquery.ztree.core-3.5.js'></script>
+ <script type='text/javascript' src='apiCss/api.js'></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ apiContent._init();
+ });
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/api.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/api.js
new file mode 100644
index 00000000..37dd4ba3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/api.js
@@ -0,0 +1,592 @@
+var apiContent = {
+ zTree_Setting: null,
+ zTree_Node: null,
+ zTree_Function: null,
+ overlayDiv : null,
+ overlayContent : null,
+ overlayDetailDiv : null,
+ overlayCloseBtn: null,
+ overlayArrow: null,
+ contentBoxDiv : null,
+ settingDiv : null,
+ functionDiv : null,
+ overlaySearch: null,
+ searchKey: null,
+ searchResultInput: null,
+ searchPrevBtn: null,
+ searchNextBtn: null,
+ apiCache: {},
+ lastValue: "",
+ searchNodes: [],
+ searchNodesCur: 0,
+
+ _init: function() {
+ this.overlayDiv = $("#overlayDiv");
+ this.overlayContent = $("#overlayContent");
+ this.overlayDetailDiv = $("#overlayDetailDiv");
+ this.overlayCloseBtn = $("#overlayDivCloseBtn");
+ this.overlayArrow = $("#overlayDivArrow");
+ this.contentBoxDiv = $("#contentBox");
+ this.settingDiv = $("#api_setting");
+ this.functionDiv = $("#api_function");
+ this.searchKey = $(".searchKey");
+ this.overlaySearch = $(".overlaySearch");
+ this.searchResultInput = $(".searchResult");
+ this.searchPrevBtn = $(".searchPrev");
+ this.searchNextBtn = $(".searchNext");
+ var setting = {
+ view: {
+ fontCss: this.getFontCss,
+ showLine: false,
+ showIcon: this.showIcon,
+ showTitle: this.getTitle,
+ selectedMulti: false,
+ dblClickExpand: false
+ },
+ data: {
+ key: {
+ title: "tt"
+ },
+ simpleData: {
+ enable:true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: ""
+ }
+ },
+ callback: {
+ onNodeCreated: this.onNodeCreated,
+ beforeClick: this.beforeClick
+ }
+ };
+ var setting_nodes =[
+ {id:1, pId:0, t:"setting", name:"var setting = {", open:true},
+ {id:11, pId:1, t:"treeId", name:"treeId : \"\",", iconSkin:"core", showAPI:true},
+ {id:12, pId:1, t:"treeObj", name:"treeObj : null,", iconSkin:"core", showAPI:true},
+ {id:121, pId:1, name:""},
+
+ {id:20, pId:1, t:"async", name:"async : {", open:true},
+ {id:201, pId:20, t:"autoParam", name:"autoParam : [],", iconSkin:"core", showAPI:true},
+ {id:208, pId:20, t:"contentType", name:"contentType : \"application...\",", iconSkin:"core", showAPI:true},
+ {id:202, pId:20, t:"dataFilter", name:"dataFilter : null,", iconSkin:"core", showAPI:true},
+ {id:203, pId:20, t:"dataType", name:"dataType : \"text\",", iconSkin:"core", showAPI:true},
+ {id:204, pId:20, t:"enable", name:"enable : false,", iconSkin:"core", showAPI:true},
+ {id:205, pId:20, t:"otherParam", name:"otherParam : [],", iconSkin:"core", showAPI:true},
+ {id:206, pId:20, t:"type", name:"type : \"post\",", iconSkin:"core", showAPI:true},
+ {id:207, pId:20, t:"url", name:"url : \"\"", iconSkin:"core", showAPI:true},
+ {id:21, pId:1, name:"},"},
+ {id:22, pId:1, name:""},
+
+ {id:30, pId:1, t:"callback", name:"callback : {", open:true},
+ {id:3001, pId:30, t:"beforeAsync", name:"beforeAsync : null,", iconSkin:"core", showAPI:true},
+ {id:3002, pId:30, t:"beforeCheck", name:"beforeCheck : null,", iconSkin:"check", showAPI:true},
+ {id:3003, pId:30, t:"beforeClick", name:"beforeClick : null,", iconSkin:"core", showAPI:true},
+ {id:3004, pId:30, t:"beforeCollapse", name:"beforeCollapse : null,", iconSkin:"core", showAPI:true},
+ {id:3004, pId:30, t:"beforeDblClick", name:"beforeDblClick : null,", iconSkin:"core", showAPI:true},
+ {id:3005, pId:30, t:"beforeDrag", name:"beforeDrag : null,", iconSkin:"edit", showAPI:true},
+ {id:3006, pId:30, t:"beforeDragOpen", name:"beforeDragOpen : null,", iconSkin:"edit", showAPI:true},
+ {id:3007, pId:30, t:"beforeDrop", name:"beforeDrop : null,", iconSkin:"edit", showAPI:true},
+ {id:3029, pId:30, t:"beforeEditName", name:"beforeEditName : null,", iconSkin:"edit", showAPI:true},
+ {id:3008, pId:30, t:"beforeExpand", name:"beforeExpand : null,", iconSkin:"core", showAPI:true},
+ {id:3009, pId:30, t:"beforeMouseDown", name:"beforeMouseDown : null,", iconSkin:"core", showAPI:true},
+ {id:3010, pId:30, t:"beforeMouseUp", name:"beforeMouseUp : null,", iconSkin:"core", showAPI:true},
+ {id:3011, pId:30, t:"beforeRemove", name:"beforeRemove : null,", iconSkin:"edit", showAPI:true},
+ {id:3012, pId:30, t:"beforeRename", name:"beforeRename : null,", iconSkin:"edit", showAPI:true},
+ {id:3013, pId:30, t:"beforeRightClick", name:"beforeRightClick : null,", iconSkin:"core", showAPI:true},
+ {id:3014, pId:30, name:""},
+ {id:3015, pId:30, t:"onAsyncError", name:"onAsyncError : null,", iconSkin:"core", showAPI:true},
+ {id:3016, pId:30, t:"onAsyncSuccess", name:"onAsyncSuccess : null,", iconSkin:"core", showAPI:true},
+ {id:3017, pId:30, t:"onCheck", name:"onCheck : null,", iconSkin:"check", showAPI:true},
+ {id:3018, pId:30, t:"onClick", name:"onClick : null,", iconSkin:"core", showAPI:true},
+ {id:3019, pId:30, t:"onCollapse", name:"onCollapse : null,", iconSkin:"core", showAPI:true},
+ {id:3029, pId:30, t:"onDblClick", name:"onDblClick : null,", iconSkin:"core", showAPI:true},
+ {id:3020, pId:30, t:"onDrag", name:"onDrag : null,", iconSkin:"edit", showAPI:true},
+ {id:3030, pId:30, t:"onDragMove", name:"onDragMove : null,", iconSkin:"edit", showAPI:true},
+ {id:3021, pId:30, t:"onDrop", name:"onDrop : null,", iconSkin:"edit", showAPI:true},
+ {id:3022, pId:30, t:"onExpand", name:"onExpand : null,", iconSkin:"core", showAPI:true},
+ {id:3023, pId:30, t:"onMouseDown", name:"onMouseDown : null,", iconSkin:"core", showAPI:true},
+ {id:3024, pId:30, t:"onMouseUp", name:"onMouseUp : null,", iconSkin:"core", showAPI:true},
+ {id:3025, pId:30, t:"onNodeCreated", name:"onNodeCreated : null,", iconSkin:"core", showAPI:true},
+ {id:3026, pId:30, t:"onRemove", name:"onRemove : null,", iconSkin:"edit", showAPI:true},
+ {id:3027, pId:30, t:"onRename", name:"onRename : null,", iconSkin:"edit", showAPI:true},
+ {id:3028, pId:30, t:"onRightClick", name:"onRightClick : null", iconSkin:"core", showAPI:true},
+ {id:31, pId:1, name:"},"},
+ {id:32, pId:1, name:""},
+
+ {id:40, pId:1, t:"check", name:"check : {", open:true},
+ {id:405, pId:40, t:"autoCheckTrigger", name:"autoCheckTrigger : false,", iconSkin:"check", showAPI:true},
+ {id:401, pId:40, t:"chkboxType", name:"chkboxType : {\"Y\": \"ps\", \"N\": \"ps\"},", iconSkin:"check", showAPI:true},
+ {id:402, pId:40, t:"chkStyle", name:"chkStyle : \"checkbox\",", iconSkin:"check", showAPI:true},
+ {id:403, pId:40, t:"enable", name:"enable : false,", iconSkin:"check", showAPI:true},
+ {id:406, pId:40, t:"nocheckInherit", name:"nocheckInherit : false", iconSkin:"check", showAPI:true},
+ {id:407, pId:40, t:"chkDisabledInherit", name:"chkDisabledInherit : false", iconSkin:"check", showAPI:true},
+ {id:404, pId:40, t:"radioType", name:"radioType : \"level\"", iconSkin:"check", showAPI:true},
+ {id:41, pId:1, name:"},"},
+ {id:42, pId:1, name:""},
+
+ {id:50, pId:1, t:"data", name:"data : {", open:true},
+ {id:500, pId:50, t:"keep", name:"keep : {", open:true},
+ {id:5001, pId:500, t:"leaf", name:"leaf : false,", iconSkin:"core", showAPI:true},
+ {id:5002, pId:500, t:"parent", name:"parent : false", iconSkin:"core", showAPI:true},
+ {id:501, pId:50, name:"},"},
+
+ {id:510, pId:50, t:"key", name:"key : {", open:true},
+ {id:5101, pId:510, t:"checked", name:"checked : \"checked\",", iconSkin:"check", showAPI:true},
+ {id:5102, pId:510, t:"children", name:"children : \"children\",", iconSkin:"core", showAPI:true},
+ {id:5103, pId:510, t:"name", name:"name : \"name\",", iconSkin:"core", showAPI:true},
+ {id:5104, pId:510, t:"title", name:"title : \"\"", iconSkin:"core", showAPI:true},
+ {id:5105, pId:510, t:"url", name:"url : \"url\"", iconSkin:"core", showAPI:true},
+ {id:511, pId:50, name:"},"},
+
+ {id:520, pId:50, t:"simpleData", name:"simpleData : {", open:true},
+ {id:5201, pId:520, t:"enable", name:"enable : false,", iconSkin:"core", showAPI:true},
+ {id:5202, pId:520, t:"idKey", name:"idKey : \"id\",", iconSkin:"core", showAPI:true},
+ {id:5203, pId:520, t:"pIdKey", name:"pIdKey : \"pId\",", iconSkin:"core", showAPI:true},
+ {id:5204, pId:520, t:"rootPId", name:"rootPId : null", iconSkin:"core", showAPI:true},
+ {id:521, pId:50, name:"}"},
+ {id:51, pId:1, name:"},"},
+ {id:52, pId:1, name:""},
+
+ {id:60, pId:1, t:"edit", name:"edit : {", open:true},
+ {id:601, pId:60, t:"drag", name:"drag : {", open:true},
+ {id:60111, pId:601, t:"autoExpandTrigger", name:"autoExpandTrigger : true,", iconSkin:"edit", showAPI:true},
+ {id:60101, pId:601, t:"isCopy", name:"isCopy : true,", iconSkin:"edit", showAPI:true},
+ {id:60102, pId:601, t:"isMove", name:"isMove : true,", iconSkin:"edit", showAPI:true},
+ {id:60103, pId:601, t:"prev", name:"prev : true,", iconSkin:"edit", showAPI:true},
+ {id:60104, pId:601, t:"next", name:"next : true,", iconSkin:"edit", showAPI:true},
+ {id:60105, pId:601, t:"inner", name:"inner : true,", iconSkin:"edit", showAPI:true},
+ {id:60107, pId:601, t:"borderMax", name:"borderMax : 10,", iconSkin:"edit", showAPI:true},
+ {id:60108, pId:601, t:"borderMin", name:"borderMin : -5,", iconSkin:"edit", showAPI:true},
+ {id:60106, pId:601, t:"minMoveSize", name:"minMoveSize : 5,", iconSkin:"edit", showAPI:true},
+ {id:60109, pId:601, t:"maxShowNodeNum", name:"maxShowNodeNum : 5,", iconSkin:"edit", showAPI:true},
+ {id:60110, pId:601, t:"autoOpenTime", name:"autoOpenTime : 500", iconSkin:"edit", showAPI:true},
+ {id:602, pId:60, name:"},"},
+ {id:608, pId:60, t:"editNameSelectAll", name:"editNameSelectAll : false,", iconSkin:"edit", showAPI:true},
+ {id:603, pId:60, t:"enable", name:"enable : false,", iconSkin:"edit", showAPI:true},
+ {id:604, pId:60, t:"removeTitle", name:"removeTitle : \"remove\",", iconSkin:"edit", showAPI:true},
+ {id:605, pId:60, t:"renameTitle", name:"renameTitle : \"rename\",", iconSkin:"edit", showAPI:true},
+ {id:606, pId:60, t:"showRemoveBtn", name:"showRemoveBtn : true,", iconSkin:"edit", showAPI:true},
+ {id:607, pId:60, t:"showRenameBtn", name:"showRenameBtn : true", iconSkin:"edit", showAPI:true},
+ {id:61, pId:1, name:"},"},
+ {id:62, pId:1, name:""},
+
+ {id:70, pId:1, t:"view", name:"view : {", open:true},
+ {id:7001, pId:70, t:"addDiyDom", name:"addDiyDom : null,", iconSkin:"core", showAPI:true},
+ {id:7002, pId:70, t:"addHoverDom", name:"addHoverDom : null,", iconSkin:"edit", showAPI:true},
+ {id:7003, pId:70, t:"autoCancelSelected", name:"autoCancelSelected : true,", iconSkin:"core", showAPI:true},
+ {id:7004, pId:70, t:"dblClickExpand", name:"dblClickExpand : true,", iconSkin:"core", showAPI:true},
+ {id:7005, pId:70, t:"expandSpeed", name:"expandSpeed : \"fast\",", iconSkin:"core", showAPI:true},
+ {id:7006, pId:70, t:"fontCss", name:"fontCss : {},", iconSkin:"core", showAPI:true},
+ {id:7012, pId:70, t:"nameIsHTML", name:"nameIsHTML : false,", iconSkin:"core", showAPI:true},
+ {id:7007, pId:70, t:"removeHoverDom", name:"removeHoverDom : null,", iconSkin:"edit", showAPI:true},
+ {id:7008, pId:70, t:"selectedMulti", name:"selectedMulti : true,", iconSkin:"core", showAPI:true},
+ {id:7009, pId:70, t:"showIcon", name:"showIcon : true,", iconSkin:"core", showAPI:true},
+ {id:7010, pId:70, t:"showLine", name:"showLine : true,", iconSkin:"core", showAPI:true},
+ {id:7011, pId:70, t:"showTitle", name:"showTitle : true,", iconSkin:"core", showAPI:true},
+ {id:7012, pId:70, t:"txtSelectedEnable", name:"txtSelectedEnable : false", iconSkin:"core", showAPI:true},
+ {id:71, pId:1, name:"}"},
+
+ {id:2, pId:0, name:"}"}
+ ];
+
+ var treenode_nodes =[
+ {id:1, pId:0, t:"treeNode", name:"treeNode : {", open:true},
+ {id:101, pId:1, t:"checked", name:"checked", iconSkin:"check", showAPI:true},
+ {id:102, pId:1, t:"children", name:"children", iconSkin:"core", showAPI:true},
+ {id:128, pId:1, t:"chkDisabled", name:"chkDisabled", iconSkin:"check", showAPI:true},
+ {id:127, pId:1, t:"click", name:"click", iconSkin:"core", showAPI:true},
+ {id:103, pId:1, t:"getCheckStatus", name:"getCheckStatus ()", iconSkin:"check", showAPI:true},
+ {id:104, pId:1, t:"getNextNode", name:"getNextNode ()", iconSkin:"core", showAPI:true},
+ {id:105, pId:1, t:"getParentNode", name:"getParentNode ()", iconSkin:"core", showAPI:true},
+ {id:106, pId:1, t:"getPreNode", name:"getPreNode ()", iconSkin:"core", showAPI:true},
+ {id:129, pId:1, t:"halfCheck", name:"halfCheck", iconSkin:"check", showAPI:true},
+ {id:107, pId:1, t:"icon", name:"icon", iconSkin:"core", showAPI:true},
+ {id:108, pId:1, t:"iconClose", name:"iconClose", iconSkin:"core", showAPI:true},
+ {id:109, pId:1, t:"iconOpen", name:"iconOpen", iconSkin:"core", showAPI:true},
+ {id:110, pId:1, t:"iconSkin", name:"iconSkin", iconSkin:"core", showAPI:true},
+ {id:131, pId:1, t:"isHidden", name:"isHidden", iconSkin:"hide", showAPI:true},
+ {id:111, pId:1, t:"isParent", name:"isParent", iconSkin:"core", showAPI:true},
+ {id:132, pId:1, t:"name", name:"name", iconSkin:"core", showAPI:true},
+ {id:112, pId:1, t:"nocheck", name:"nocheck", iconSkin:"check", showAPI:true},
+ {id:113, pId:1, t:"open", name:"open", iconSkin:"core", showAPI:true},
+ {id:133, pId:1, t:"target", name:"target", iconSkin:"core", showAPI:true},
+ {id:134, pId:1, t:"url", name:"url", iconSkin:"core", showAPI:true},
+ {id:114, pId:1, t:"diy", name:"*DIY*", iconSkin:"core", showAPI:true},
+ {id:115, pId:1, name:""},
+ {id:116, pId:1, t:"check_Child_State", name:"[check_Child_State]", iconSkin:"check", showAPI:true},
+ {id:117, pId:1, t:"check_Focus", name:"[check_Focus]", iconSkin:"check", showAPI:true},
+ {id:118, pId:1, t:"checkedOld", name:"[checkedOld]", iconSkin:"check", showAPI:true},
+ {id:119, pId:1, t:"editNameFlag", name:"[editNameFlag]", iconSkin:"edit", showAPI:true},
+ {id:120, pId:1, t:"isAjaxing", name:"[isAjaxing]", iconSkin:"core", showAPI:true},
+ {id:121, pId:1, t:"isFirstNode", name:"[isFirstNode]", iconSkin:"core", showAPI:true},
+ {id:122, pId:1, t:"isHover", name:"[isHover]", iconSkin:"edit", showAPI:true},
+ {id:123, pId:1, t:"isLastNode", name:"[isLastNode]", iconSkin:"core", showAPI:true},
+ {id:124, pId:1, t:"level", name:"[level]", iconSkin:"core", showAPI:true},
+ {id:125, pId:1, t:"parentTId", name:"[parentTId]", iconSkin:"core", showAPI:true},
+ {id:126, pId:1, t:"tId", name:"[tId]", iconSkin:"core", showAPI:true},
+ {id:130, pId:1, t:"zAsync", name:"[zAsync]", iconSkin:"core", showAPI:true},
+ {id:2, pId:0, name:"}"}
+ ];
+
+ var function_nodes =[
+ {id:1, pId:0, t:"$.fn.zTree", name:"$.fn.zTree : {", open:true},
+ {id:11, pId:1, t:"init", name:"init (obj, zSetting, zNodes)", iconSkin:"core", showAPI:true},
+ {id:12, pId:1, t:"getZTreeObj", name:"getZTreeObj (treeId)", iconSkin:"core", showAPI:true},
+ {id:14, pId:1, t:"destroy", name:"destroy (treeId)", iconSkin:"core", showAPI:true},
+ {id:13, pId:1, t:"_z", name:"_z : {tools, view, event, data}", iconSkin:"core", showAPI:true},
+ {id:2, pId:0, name:"}"},
+ {id:3, pId:0, name:""},
+ {id:4, pId:0, t:"zTreeObj", name:"zTreeObj : {", open:true},
+ {id:401, pId:4, t:"setting", name:"setting", iconSkin:"core", showAPI:true},
+ {id:402, pId:4, t:"addNodes", name:"addNodes (parentNode, newNodes, isSilent)", iconSkin:"core", showAPI:true},
+ {id:403, pId:4, t:"cancelEditName", name:"cancelEditName (newName)", iconSkin:"edit", showAPI:true},
+ {id:404, pId:4, t:"cancelSelectedNode", name:"cancelSelectedNode (node)", iconSkin:"core", showAPI:true},
+ {id:405, pId:4, t:"checkAllNodes", name:"checkAllNodes (checked)", iconSkin:"check", showAPI:true},
+ {id:406, pId:4, t:"checkNode", name:"checkNode (node, checked, checkTypeFlag, callbackFlag)", iconSkin:"check", showAPI:true},
+ {id:407, pId:4, t:"copyNode", name:"copyNode (targetNode, node, moveType, isSilent)", iconSkin:"edit", showAPI:true},
+ {id:436, pId:4, t:"destroy", name:"destroy ()", iconSkin:"core", showAPI:true},
+ {id:408, pId:4, t:"editName", name:"editName (node)", iconSkin:"edit", showAPI:true},
+ {id:409, pId:4, t:"expandAll", name:"expandAll (expandFlag)", iconSkin:"core", showAPI:true},
+ {id:410, pId:4, t:"expandNode", name:"expandNode (node, expandFlag, sonSign, focus, callbackFlag)", iconSkin:"core", showAPI:true},
+ {id:411, pId:4, t:"getChangeCheckedNodes", name:"getChangeCheckedNodes ()", iconSkin:"check", showAPI:true},
+ {id:412, pId:4, t:"getCheckedNodes", name:"getCheckedNodes (checked)", iconSkin:"check", showAPI:true},
+ {id:413, pId:4, t:"getNodeByParam", name:"getNodeByParam (key, value, parentNode)", iconSkin:"core", showAPI:true},
+ {id:414, pId:4, t:"getNodeByTId", name:"getNodeByTId (tId)", iconSkin:"core", showAPI:true},
+ {id:415, pId:4, t:"getNodeIndex", name:"getNodeIndex (node)", iconSkin:"core", showAPI:true},
+ {id:416, pId:4, t:"getNodes", name:"getNodes ()", iconSkin:"core", showAPI:true},
+ {id:431, pId:4, t:"getNodesByFilter", name:"getNodesByFilter (filter, isSingle, parentNode, invokeParam)", iconSkin:"core", showAPI:true},
+ {id:417, pId:4, t:"getNodesByParam", name:"getNodesByParam (key, value, parentNode)", iconSkin:"core", showAPI:true},
+ {id:418, pId:4, t:"getNodesByParamFuzzy", name:"getNodesByParamFuzzy (key, value, parentNode)", iconSkin:"core", showAPI:true},
+ {id:419, pId:4, t:"getSelectedNodes", name:"getSelectedNodes ()", iconSkin:"core", showAPI:true},
+ {id:432, pId:4, t:"hideNode", name:"hideNode (node)", iconSkin:"hide", showAPI:true},
+ {id:433, pId:4, t:"hideNodes", name:"hideNodes (nodes)", iconSkin:"hide", showAPI:true},
+ {id:420, pId:4, t:"moveNode", name:"moveNode (targetNode, node, moveType, isSilent)", iconSkin:"edit", showAPI:true},
+ {id:421, pId:4, t:"reAsyncChildNodes", name:"reAsyncChildNodes (parentNode, reloadType, isSilent)", iconSkin:"core", showAPI:true},
+ {id:422, pId:4, t:"refresh", name:"refresh ()", iconSkin:"core", showAPI:true},
+ {id:423, pId:4, t:"removeChildNodes", name:"removeChildNodes (parentNode)", iconSkin:"core", showAPI:true},
+ {id:424, pId:4, t:"removeNode", name:"removeNode (node, callbackFlag)", iconSkin:"core", showAPI:true},
+ {id:425, pId:4, t:"selectNode", name:"selectNode (node, addFlag)", iconSkin:"core", showAPI:true},
+ {id:430, pId:4, t:"setChkDisabled", name:"setChkDisabled (node, disabled, inheritParent, inheritChildren)", iconSkin:"check", showAPI:true},
+ {id:426, pId:4, t:"setEditable", name:"setEditable (editable)", iconSkin:"edit", showAPI:true},
+ {id:434, pId:4, t:"showNode", name:"showNode (node)", iconSkin:"hide", showAPI:true},
+ {id:435, pId:4, t:"showNodes", name:"showNodes (nodes)", iconSkin:"hide", showAPI:true},
+ {id:427, pId:4, t:"transformToArray", name:"transformToArray (nodes)", iconSkin:"core", showAPI:true},
+ {id:428, pId:4, t:"transformTozTreeNodes", name:"transformTozTreeNodes (simpleNodes)", iconSkin:"core", showAPI:true},
+ {id:429, pId:4, t:"updateNode", name:"updateNode (node, checkTypeFlag)", iconSkin:"core", showAPI:true},
+ {id:5, pId:0, name:"}"}
+ ];
+
+ apiContent.zTree_Setting = $.fn.zTree.init($("#settingTree"), $.fn.zTree._z.tools.clone(setting), setting_nodes);
+ apiContent.zTree_Node = $.fn.zTree.init($("#treenodeTree"), $.fn.zTree._z.tools.clone(setting), treenode_nodes);
+ apiContent.zTree_Function = $.fn.zTree.init($("#functionTree"), $.fn.zTree._z.tools.clone(setting), function_nodes);
+ this.bindEvent();
+
+ },
+ bindEvent: function() {
+ $(document).bind("keydown", this.listenKeyDown)
+ this.overlayCloseBtn.bind("click", apiContent.overlayClose);
+ this.searchResultInput.bind("click", function(e) {
+ $(this).prev().get(0).focus();
+ this.blur();
+ }).bind("focus", function(e) {
+ this.blur();
+ });
+ this.searchKey.bind("focus", this.focusKey)
+ .bind("blur", this.blurKey)
+ .bind("propertychange", this.searchNode)
+ .bind("input", this.searchNode);
+ this.searchPrevBtn.bind("click", this.searchPrev);
+ this.searchNextBtn.bind("click", this.searchNext);
+ },
+ setSameKey: function(value) {
+ apiContent.searchKey.attr("value", value);
+ },
+ focusKey: function(e) {
+ if (apiContent.searchKey.hasClass("empty")) {
+ apiContent.searchKey.removeClass("empty");
+ }
+ },
+ blurKey: function(e) {
+ apiContent.setSameKey(e.target.value);
+ if (e.target.value === "") {
+ apiContent.searchKey.addClass("empty");
+ }
+ },
+ listenKeyDown: function(e) {
+ if (e.keyCode=="13" && apiContent.overlayDiv.is(":hidden")) {
+ apiContent.openAPI();
+ } else if (e.keyCode=="37") {
+ apiContent.searchPrev();
+ } else if (e.keyCode=="13" || e.keyCode=="39") {
+ apiContent.searchNext();
+ }
+ },
+ openAPI: function() {
+ if (apiContent.searchNodes.length > 0) {
+ var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+ treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+ function_zTree = $.fn.zTree.getZTreeObj("functionTree");
+ if (apiContent.searchNodesCur < 0 || apiContent.searchNodesCur > apiContent.searchNodes.length -1) {
+ apiContent.searchNodesCur = 0;
+ }
+ var node = apiContent.searchNodes[apiContent.searchNodesCur];
+
+ if (node.tId.indexOf("setting") > -1) {
+ setting_zTree.selectNode(node);
+ } else if (node.tId.indexOf("treenode") > -1) {
+ treenode_zTree.selectNode(node);
+ } else {
+ function_zTree.selectNode(node);
+ }
+ apiContent.beforeClick(node.tId.substring(0, node.tId.indexOf("_")), node, true);
+ apiContent.searchCur();
+ }
+ },
+ searchNode: function(e) {
+ var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+ treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+ function_zTree = $.fn.zTree.getZTreeObj("functionTree");
+ if (apiContent.curKey == e.target.value) return;
+ apiContent.curKey = e.target.value;
+ var value = $.trim(apiContent.curKey);
+ apiContent.setSameKey(apiContent.curKey);
+ if (apiContent.searchKey.hasClass("empty")) {
+ value = "";
+ apiContent.searchResultInput.removeClass("noResult").attr("value","");
+ }
+ if (apiContent.lastValue === value) return;
+
+ apiContent.updateNodes(false);
+ apiContent.lastValue = value;
+ if (value === "" || value.length < 2) {
+ apiContent.searchNodes = [];
+ apiContent.searchNodesCur = -1;
+ apiContent.searchCur(true);
+ return;
+ }
+
+ var settingNodeList = setting_zTree.getNodesByFilter(apiContent.searchFilter);
+ var functionNodeList = function_zTree.getNodesByFilter(apiContent.searchFilter);
+ var treenodeNodeList = treenode_zTree.getNodesByFilter(apiContent.searchFilter);
+ apiContent.searchNodes = settingNodeList.concat(functionNodeList).concat(treenodeNodeList);
+ apiContent.searchNodesCur = -1;
+ apiContent.searchCur();
+ apiContent.updateNodes(true);
+ },
+ searchFilter: function(node) {
+ var value = $.trim(apiContent.searchKey.get(0).value).toLowerCase();
+ return (node.showAPI && node.name.toLowerCase().indexOf(value) > -1);
+ },
+ searchPrev: function(e) {
+ if (apiContent.searchPrevBtn.hasClass("disabled")) return;
+ apiContent.searchNodesCur--;
+ if (apiContent.searchNodesCur < 0 || apiContent.searchNodesCur > apiContent.searchNodes.length -1) {
+ apiContent.searchNodesCur = apiContent.searchNodes.length -1;
+ }
+ apiContent.openAPI();
+ },
+ searchNext: function(e) {
+ if (apiContent.searchNextBtn.hasClass("disabled")) return;
+ apiContent.searchNodesCur++;
+ apiContent.openAPI();
+ },
+ searchCur: function(init) {
+ var result = apiContent.searchNodes;
+ if (init) {
+ apiContent.searchResultInput.removeClass("noResult").attr("value","");
+ } else if (result.length == 0) {
+ apiContent.searchResultInput.addClass("noResult").attr("value"," [ 0 / 0 ] ");
+ } else {
+ apiContent.searchResultInput.removeClass("noResult").attr("value"," [ " + (apiContent.searchNodesCur > -1 ? apiContent.searchNodesCur+1 : "?")+ " / " + result.length + " ] ");
+ }
+ if (result.length > 0) {
+ apiContent.searchPrevBtn.removeClass("disabled");
+ apiContent.searchNextBtn.removeClass("disabled");
+ } else {
+ apiContent.searchPrevBtn.addClass("disabled");
+ apiContent.searchNextBtn.addClass("disabled");
+ }
+ },
+ updateNodes: function(highlight) {
+ var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+ treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+ function_zTree = $.fn.zTree.getZTreeObj("functionTree"),
+ node = null;
+ for( var i=0, l=apiContent.searchNodes.length; i<l; i++) {
+ node = apiContent.searchNodes[i];
+ if (node.level > 0) {
+ node.highlight = highlight;
+ if (node.tId.indexOf("setting") > -1) {
+ setting_zTree.updateNode(node);
+ } else if (node.tId.indexOf("treenode") > -1) {
+ treenode_zTree.updateNode(node);
+ } else {
+ function_zTree.updateNode(node);
+ }
+ }
+ }
+ },
+ getFontCss: function(treeId, treeNode) {
+ return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
+ },
+ getTitle: function(treeId, node) {
+ var t = [], n = node;
+ while (n && !!n.t) {
+ t.push(n.t);
+ n = n.getParentNode();
+ }
+ t = t.reverse();
+ node.tt = t.join('.');
+ return true;
+ },
+ showIcon: function(treeId, node) {
+ return (!!node.iconSkin);
+ },
+ onNodeCreated: function (e, treeId, node) {
+ var a = $("#" + node.tId + "_a");
+ if (node.showAPI) {
+ a.attr("rel", "#overlayDiv");
+ } else {
+ a.css({cursor: "default"});
+ }
+ },
+ beforeClick: function (treeId, node, noClear) {
+ if (!node.showAPI) return false;
+ var o = $("#" + node.tId + "_a");
+ if (!!apiContent.apiCache[node.tId]) {
+ apiContent.tmpDiv.html(apiContent.apiCache[node.tId]);
+ apiContent.overlayShow(o, (apiContent.lastNode === node));
+ } else {
+ apiContent.overlayAjax(treeId, node);
+ }
+ apiContent.lastNode = node;
+ if (node.tId.indexOf("settingTree")>-1) {
+ apiContent.settingDiv.removeClass("right").addClass("left");
+ apiContent.functionDiv.removeClass("left").addClass("right");
+ } else {
+ apiContent.settingDiv.removeClass("left").addClass("right");
+ apiContent.functionDiv.removeClass("right").addClass("left");
+ }
+
+ if (!noClear) {
+ apiContent.clearSelectedNode();
+ }
+ return true;
+ },
+ clearSelectedNode: function() {
+ apiContent.zTree_Setting.cancelSelectedNode();
+ apiContent.zTree_Node.cancelSelectedNode();
+ apiContent.zTree_Function.cancelSelectedNode();
+ },
+ overlayAutoClose: function(e) {
+ var eId = e.target.id, eRel = e.target.getAttribute("rel"), eClass = e.target.className;
+ if (eId === "overlayDiv" || eId === "overlayDivArrow" || eClass.indexOf("searchPrev") > -1 || eClass.indexOf("searchNext") > -1 || !!eRel) return;
+ if (!$(e.target).parents("[rel]").length && !$(e.target).parents("#overlayDiv").length) {
+ apiContent.overlayClose();
+ }
+ },
+ overlayClose: function() {
+ var o = apiContent.overlayDiv;
+ o.stop();
+ apiContent.clearSelectedNode();
+ if (ie) {
+ o.hide();
+ } else {
+ setTimeout(function() {o.fadeTo("fast", 0, function(){o.hide();})}, 200);
+ }
+ $(document).unbind("click", apiContent.overlayAutoClose);
+ },
+ overlayShow: function(target, isSameNode) {
+ var w = $(window), o = apiContent.overlayDiv, a = apiContent.overlayArrow,
+ oc = apiContent.overlayContent, c = apiContent.contentBoxDiv,
+ t = target.offset().top - 30,
+ cMaxLeft = c.offset().left + c.outerWidth({margin:true}) - o.outerWidth({margin:true}) - 10,
+ l = Math.min(cMaxLeft, target.offset().left + target.width() + 40),
+ arrowT = target.offset().top + 16,
+ wMinTop = 100, footerHeight = 50, onlyFade = false,
+ wHeight = w.height(), wScrollTop=w.scrollTop(), wMaxTop = wHeight + wScrollTop - footerHeight;
+ if (!apiContent.overlayMaxTop) {
+ apiContent.overlayMaxTop = apiContent.contentBoxDiv.offset().top + apiContent.contentBoxDiv.height();
+ }
+ o.stop();
+ if (o.css("display") !== "block") {
+ o.css({top: t, left: l});
+ a.css({top:arrowT - t});
+ $(document).bind("click", apiContent.overlayAutoClose);
+ }
+ if (ie) {
+ onlyFade = true;
+ o.show();
+ } else {
+ o.fadeTo("fast", 1);
+ }
+
+ var h = apiContent.tmpDiv.outerHeight({margin:true}) + apiContent.overlaySearch.outerHeight();
+ if ((t + h) > wMaxTop) {
+ t = wMaxTop - h;
+ }
+ if ((t + h) > apiContent.overlayMaxTop) {
+ t = apiContent.overlayMaxTop - h;
+ }
+ t = Math.max(t, wScrollTop, wMinTop);
+ if ((t + h) > ($("body").height()-footerHeight-20)) {
+ o.css("padding-bottom", footerHeight + "px");
+ } else {
+ o.css("padding-bottom", "0");
+ }
+ apiContent.overlayDetailDiv.empty();
+ apiContent.overlayDetailDiv.append(apiContent.tmpDiv.children());
+ if (!onlyFade) {
+ onlyFade = (isSameNode && t === parseInt(o.css("top").replace("px", "")));
+ }
+
+ a.removeClass("reverse");
+ if ( (arrowT - t) > (h-55) ) {
+ a.addClass("reverse");
+ arrowT -= 55;
+ }
+
+ if (onlyFade) {
+ o.css({top: t, left: l});
+ oc.css({height: h});
+ a.css({top:arrowT - t});
+ } else {
+ o.animate({top: t, left: l}, {duration: "normal",easing: "swing", complete:null});
+ oc.animate({height: h}, {duration: "fast",easing: "swing", complete:null});
+ a.animate({top:arrowT - t}, {duration: "normal",easing: "linear", complete:null});
+ }
+ },
+ overlayAjax: function(treeId, node) {
+ var o = $("#" + node.tId + "_a");
+ if (node.isAjax) return;
+ node.isAjax = true;
+ $.ajax({
+ type: "get",
+ url: "" + lang + "/" + node.tt.replace("$.", "") + ".html",
+ data: null,
+ dataType: "text",
+ success: function(msg) {
+ if (!apiContent.tmpDiv) {
+ var tmpDiv = $(document.createElement("div"));
+ tmpDiv.addClass("baby_overlay_tmp");
+ $("body").append(tmpDiv)
+ apiContent.tmpDiv = $(document.createElement("div"));
+ apiContent.tmpDiv.addClass("details");
+ tmpDiv.append(apiContent.tmpDiv);
+
+ } else {
+ apiContent.tmpDiv.empty();
+ }
+ apiContent.tmpDiv.html(msg);
+ apiContent.overlayShow(o, false);
+ apiContent.apiCache[node.tId] = msg;
+ node.isAjax = false;
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ alert(ajaxMsg)
+ if (apiContent.tmpDiv) apiContent.tmpDiv.empty();
+ node.isAjax = false;
+ }
+ });
+ }
+} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common.css
new file mode 100644
index 00000000..78f910c7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common.css
@@ -0,0 +1,219 @@
+/* Resets */
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
+:focus {outline: 0;}
+body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #528036 url(img/background.jpg) no-repeat fixed 0 0;}
+p {padding-bottom: 20px;}
+ol, ul {list-style: none;}
+table {border-collapse: separate;border-spacing: 0;}
+caption, th, td {text-align: left;font-weight: normal;}
+strong {font-weight: bold;}
+em {font-style: italic;}
+hr {display: none;}
+.font1 {color: white;background-color: #528036;}
+.right {float: right;}
+.left {float: left;}
+.hide {display: none;}
+.round {-moz-border-radius: 15px;-webkit-border-radius: 15px;-khtml-border-radius: 15px;border-radius: 15px;}
+.clear {clear: both;}
+.clearfix {display: block;}
+.clearfix:after {content: ".";display: block;clear: both;visibility: hidden;line-height: 0;height: 0;}
+html[xmlns] .clearfix {display: block;}
+* html .clearfix {height: 1%;}
+
+/* Link Styles */
+a {color: #528036;}
+a:link, a:visited {text-decoration: none;}
+a:hover {color: #000;text-decoration: none;}
+a:active {text-decoration: none;}
+
+/* Headings */
+h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, simsun, sans-serif;padding-bottom: 5px;}
+h1 {font-size: 36px;line-height: 44px;}
+h2 {font-size: 20px;line-height: 20px;}
+h3 {font-size: 14px;line-height: 14px;}
+h4 {font-size: 14px;font-weight: normal;line-height: 25px;}
+
+/* Wraps */
+.header_wrap {position: relative;min-width: 940px;padding: 100px 30px 0 30px;}
+.content_wrap {position: relative;min-width: 940px;padding: 0 30px 50px 30px;}
+.footer_wrap {bottom: 0;height: 47px;width: 100%;background-color: #1b1b1b;border-top: 1px solid #749e58;}
+
+/* Header */
+.header {position: relative;width: 940px;margin: 0 auto;height: 160px;border: 1px solid white;background: transparent url(img/header-bg.png) repeat-x 0 -50px;}
+.header-text {padding: 40px 25px 15px 120px;font-size: 18px;line-height: 24px;color: #747d67;font-family: Helvetica, sans-serif;}
+.header-text img {padding-bottom: 5px;}
+.shortcuts {white-space: nowrap;text-align: right;position: absolute;top: -45px;right: 5px;}
+.shortcuts.language {top: -85px;right:0px;}
+.shortcuts li {display: inline;font-size: 18px;line-height: 28px;font-family: Helvetica, Arial, simsun, sans-serif;padding-bottom: 5px;margin-left: 30px;cursor: pointer;}
+.shortcuts li button {cursor: pointer;}
+.shortcuts li span {border-bottom: 1px dotted white;}
+.shortcuts li span.selected {padding: 2px;background-color: #528036;}
+.shortcuts li a {color: #fff;}
+.ieSuggest {display:none;font-size: 12px;color: silver;position: absolute;left: 10px;top: 2px;}
+.google_plus {position: absolute;right: 10px; top:10px;}
+.light-bulb {position: absolute;left: -20px;bottom: -35px;width:116px;height:180px;background-image:url(img/lightbulb.png);background-repeat: no-repeat;}
+
+/* Content */
+.content {position: relative;width: 940px;margin: 0 auto;}
+.nav_section {position: relative;height: 20px;font-family: "Myriad Pro", "Trebuchet MS", sans-serif;font-size: 15px;color: #253;padding: 20px 0;}
+.nav_section ul {position: absolute;right: 10px;}
+.nav_section ul li {display: inline;line-height: 20px;margin: 0 5px 0 20px;border-bottom: 1px dotted white;}
+.nav_section ul li.noline {border-bottom: 0;}
+.nav_section ul li a {color: #fff;}
+.nav_section ul li a.selected {padding: 2px;background-color: #528036;}
+.nav_section ul li.first {border: none;}
+.content .title {margin: 50px 30px 20px 70px;}
+.content li {margin-bottom: 5px;}
+.contentBox {position: relative;overflow: hidden;border: 1px solid white;min-height: 200px;line-height: 25px;background: transparent url(img/contact-bg.png) repeat-x 0 0;}
+
+.zTreeInfo {display:none;width: 940px;position: absolute;}
+.zTreeInfo p {padding-bottom: 50px;}
+.zTreeInfo-left {float: left;width: 280px;height:300px;padding: 0 50px 60px 75px;background:url(img/zTreeIntroduction.jpg) no-repeat 30px 30px;}
+.zTreeInfo-right {position: relative;float: right;width: 475px;padding: 0 50px 60px 0;}
+.zTreeInfo-right li {font-size: 12px;list-style-type: disc;}
+
+.license {display:none;width: 940px;position: absolute;}
+
+.donateInfo {display:block;width: 940px;position: absolute;}
+
+.links {display:none;width: 940px;position: absolute;}
+.links .content {float: left;width: 160px;height:200px;padding: 0 10px 10px 2px;text-align: center;}
+.links .content.first {margin-left: 30px;}
+
+.contact {display:none;width: 940px;position: absolute;}
+.contact .myhome { position: absolute; top:10px; left:620px; width:300px; height:266px; background: transparent url(img/myhome.gif) scroll no-repeat 0 0;}
+
+.siteTag {position: absolute;left: -16px;top: 109px;z-index: 10;width: 65px;height: 46px;padding:0;margin:0 10px 0 0;
+ vertical-align:middle;border:0 none;background: transparent url(img/siteTag.png) scroll no-repeat 0 0;}
+.siteTag.tag_zTreeInfo {background-position: 0 0}
+.siteTag.tag_license {background-position: 0 -46px}
+.siteTag.tag_donate {background-position: 0 -92px}
+.siteTag.tag_contact {background-position: 0 -138px}
+
+.apiContent {width: 940px;}
+.apiContent .right {float: right;padding-right: 100px;}
+.apiContent .left {float: left;padding-right: 20px;border-right: 1px dotted silver;}
+.api_setting {position: relative;margin:20px 0 20px 20px;}
+.api_function {position: relative;margin:20px 0 20px 30px;padding-right: 10px;}
+.api_content_title {text-align: center;font-weight: bold;}
+
+.demoContent {width: 940px;}
+.demoContent .right {float: right;padding: 20px;width: 600px;}
+.demoContent .left {float: left;padding: 20px;}
+.demoContent iframe {width:600px;min-height: 530px;}
+
+.faqContent {width: 940px;}
+.faqContent .right {float: right;padding: 20px;width: 600px;}
+.faqContent .left {float: left;padding: 20px;}
+.faqContent iframe {width:600px;min-height: 300px;}
+
+.baby_overlay_tmp {position: absolute;top:0; left:-5000px;display:block;visibility: hidden;width:640px;font-size:11px;}
+.baby_overlay_tmp .details {padding: 20px;}
+.baby_overlay {display:none;position:absolute;z-index:99;left:0; top:0;width:640px;color:#fff;font-size:11px;}
+.baby_overlay .content {width:100%; height:100px;overflow: hidden;background: transparent url(img/overlay_bg.png) scroll repeat 0 0;}
+.baby_overlay .details {padding:0 20px 20px 20px;}
+.baby_overlay .close {background-image:url(img/close.png);position:absolute; right:5px; top:5px;cursor:pointer;height:36px;width:36px;}
+.baby_overlay_arrow {background-image:url(img/overlay_arrow.png);background-position:0 0;position:absolute;height:40px;width:40px;left: -40px;}
+.baby_overlay_arrow.reverse {background-position:0 -40px;}
+
+/* Footer */
+.footer {position: relative;min-width: 1000px;font: 14px/24px arial, helvetica, sans-serif;}
+.footer ul {position:absolute;left: 0px;border:1px solid #393939;background:#262626;padding:12px 0px;line-height: 18px;display: none;list-style: none;}
+.footer ul li a {display:block;padding: 2px 15px;color: #9c9c9c;text-indent: 0;}
+.footer ul li a:hover {text-decoration:none;color: #fff;}
+.footer-logo {position:absolute;margin: 10px 0 0 30px;width:122px; height:24px;top:0; left:0;background: transparent url(img/footer-logo.png) no-repeat 0 0;}
+.footer_mii {position: absolute;right: 558px;top: 8px;z-index: 10;padding: 4px 0;}
+.footer_mii a {font-size:10px;color:#649140}
+.footer_mii a:hover {color:#B6D76F}
+.footer_siteMap {position: absolute;right: 358px;top: 8px;width: 155px;z-index: 10;padding: 4px 0;}
+.footer_siteMap .footer_siteMap_header {width:155px;text-indent: -9999px;background: transparent url(img/footer_siteMap.gif) no-repeat 0 0;}
+.footer_siteMap ul {top:-202px;width:180px;}
+.footer_siteMap:hover ul {left: 0}
+.footer_contact {position: absolute;right: 193px;top: 8px;width: 155px;z-index: 10;padding: 4px 0;}
+.footer_contact .footer_contact_header {width:155px;text-indent: -9999px;background: transparent url(img/footer_contact.gif) no-repeat 0px 0px;}
+.footer_contact ul {top:-113px;width:153px;}
+.footer_contact:hover ul {left: 0}
+.footer_download {position: absolute;right: 60px;top: 8px;width: 123px;z-index: 10;padding: 4px 0;}
+.footer_download .footer_download_header {width:123px;text-indent: -9999px;background: transparent url(img/footer_download.png) no-repeat 0px 0px;}
+.footer_download ul {top:-113px;width:140px;}
+.footer_download:hover ul {left: 0}
+
+/* button icon */
+button {vertical-align:middle;border:0 none;background: transparent no-repeat 0 0 scroll;}
+
+.shortcuts button.ico {width:24px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/menuIcon.png)}
+.shortcuts button.home {background-position: 0 0}
+.shortcuts button.demo {background-position: 0 -24px}
+.shortcuts button.api {background-position: 0 -48px}
+.shortcuts button.faq {background-position: 0 -72px}
+.shortcuts button.donate {background-position: 0 -144px}
+.shortcuts button.download {background-position: 0 -96px}
+.shortcuts button.face {background-position: 0 -120px}
+.shortcuts button.cn {width:48px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/chinese.png)}
+.shortcuts button.en {width:48px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/english.png)}
+
+.content button.ico {width:24px; height:24px;padding:0; margin:0 10px 0 0;}
+
+.content button.ico16 {width:16px; height:16px;padding:0; margin:0 5px 0 0;background-image:url("img/apiMenu.png");}
+button.z_core {margin-top: -4px;background-position:0 0;}
+button.z_check {margin-top: -4px;background-position:0 -16px;}
+button.z_edit {margin-top: -4px;background-position:0 -32px;}
+button.z_hide {margin-top: -4px;background-position:0 -64px;}
+button.z_search {margin-top: -4px;background-position:0 -48px;}
+button.searchPrev {margin-top: -4px;background-position:-16px 0;cursor:pointer}
+button.searchNext {margin-top: -4px;background-position:-16px -16px;cursor:pointer}
+button.searchPrev.disabled {margin-top: -4px;background-position:-16px -32px;cursor:auto}
+button.searchNext.disabled {margin-top: -4px;background-position:-16px -48px;cursor:auto}
+input.search {margin:0;padding:2px 0; border:0;}
+input.searchKey {width:150px;}
+input.searchResult {margin-left:-3px;width:65px;text-align:right;background-color:white;color:#707070}
+input.searchResult.noResult {background-color:#ff6666;color:black}
+.baby_overlay div.overlaySearch {text-align:right;padding-right:50px;padding-top:12px;}
+
+/* api overlay*/
+.apiDetail .topLine {border-top: 1px dashed #376B29;margin-top: 5px;padding-top: 5px;}
+.apiDetail .highlight_red {color:#A60000;}
+.apiDetail .highlight_green {color:#A7F43D;}
+.apiDetail h1, .apiDetail h2, .apiDetail h3, .apiDetail h4, .apiDetail h5, .apiDetail h6 {color: white;padding: 0;}
+.apiDetail h2 {color: #A7F43D;margin: 5px auto;padding: 5px;font-size: 20px;}
+.apiDetail h2 span {font-size: 14px;float: right;font-weight: normal;margin: 2px 20px 0 0;vertical-align: bottom;}
+.apiDetail h2 span.path {float: left;margin: 2px 0 0 0;vertical-align: bottom;}
+.apiDetail h3 {margin: 5px auto;padding: 5px;font-size: 14px;font-weight: normal;}
+.apiDetail h3 span.h3_info {margin-left: 20px;font-size: 12px;}
+.apiDetail h4 {margin: 0 auto;padding: 0 5px;font-size: 12px;font-weight: normal;line-height: 16px;}
+.apiDetail .desc h4 {color: black;}
+.apiDetail h4 b{width: 150px;display:inline-block;}
+.apiDetail h4 span{width: 230px;display:inline-block;}
+
+.apiDetail pre, .apiDetail .desc {background: #E8FCD6;color: black;margin: 10px;padding: 10px;display: block;}
+.apiDetail pre {word-wrap: break-word;}
+.apiDetail p{margin-left: 5px;padding: 0;}
+.apiDetail .longdesc {margin-top: 5px;}
+.apiDetail .longdesc p{font-size: 12px;line-height:1.5;margin:3px 0;}
+.apiDetail .longdesc b{font-size: 14px;}
+.apiDetail table {border-collapse:collapse;}
+.apiDetail table td {border:1px solid silver;text-align: center;vertical-align: middle;}
+.apiDetail table thead td {font-weight: bold}
+
+.apiDetail button {width:16px; height:16px; vertical-align:middle; border:0 none; cursor: pointer;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-image:url("zTreeStyle/img/zTreeStandard.png");}
+
+.apiDetail button.chk {width:13px; height:13px; margin:0 3px 2px 0; cursor: auto}
+.apiDetail button.chk.checkbox_false_full {background-position:0 0}
+.apiDetail button.chk.checkbox_false_full_focus {background-position:0 -14px}
+.apiDetail button.chk.checkbox_false_part {background-position:0 -28px}
+.apiDetail button.chk.checkbox_false_part_focus {background-position:0 -42px}
+.apiDetail button.chk.checkbox_true_full {background-position:-14px 0}
+.apiDetail button.chk.checkbox_true_full_focus {background-position:-14px -14px}
+.apiDetail button.chk.checkbox_true_part {background-position:-14px -28px}
+.apiDetail button.chk.checkbox_true_part_focus {background-position:-14px -42px}
+.apiDetail button.chk.radio_false_full {background-position:-28px 0}
+.apiDetail button.chk.radio_false_full_focus {background-position:-28px -14px}
+.apiDetail button.chk.radio_false_part {background-position:-28px -28px}
+.apiDetail button.chk.radio_false_part_focus {background-position:-28px -42px}
+.apiDetail button.chk.radio_true_full {background-position:-42px 0}
+.apiDetail button.chk.radio_true_full_focus {background-position:-42px -14px}
+.apiDetail button.chk.radio_true_part {background-position:-42px -28px}
+.apiDetail button.chk.radio_true_part_focus {background-position:-42px -42px} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common_ie6.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common_ie6.css
new file mode 100644
index 00000000..aacaf59c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/common_ie6.css
@@ -0,0 +1,23 @@
+* html{
+/* background-image:url(about:blank);*/
+ background-attachment:fixed;
+}
+html pre {word-wrap: break-word}
+.header {background-image: none;background-color: #F0F6E4;}
+
+.ieSuggest {display:block;}
+.shortcuts button.cn {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/chinese.png');background-image: none;}
+.shortcuts button.en {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/english.png');background-image: none;}
+
+.light-bulb {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/lightbulb.png');background-image: none;}
+.contentBox {background-image: none;background-color: #F0F6E4;}
+.zTreeInfo {background-image: none;background-color: #F0F6E4;}
+
+.content button.ico16 {*background-image:url("img/apiMenu.gif")}
+.siteTag {background-image: none;}
+.apiContent .right {float: right;padding-right: 50px;}
+
+div.baby_overlay {background-color: #3C6E31;background-image:none;color:#fff;}
+div.baby_overlay .close {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/overlay_close_IE6.gif');background-image: none;}
+.baby_overlay_arrow {background-image:url(img/overlay_arrow.gif);}
+.apiDetail button {background-image:url("img/zTreeStandard.gif")} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.gif
new file mode 100644
index 00000000..066fc8e4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.png
new file mode 100644
index 00000000..9acec505
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/apiMenu.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/background.jpg b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/background.jpg
new file mode 100644
index 00000000..003375ff
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/background.jpg
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/chinese.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/chinese.png
new file mode 100644
index 00000000..d3b57fc1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/chinese.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/close.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/close.png
new file mode 100644
index 00000000..69e41e38
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/close.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/contact-bg.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/contact-bg.png
new file mode 100644
index 00000000..a3d7a5f1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/contact-bg.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/english.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/english.png
new file mode 100644
index 00000000..2ad2d7d5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/english.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/header-bg.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/header-bg.png
new file mode 100644
index 00000000..a2baacf2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/header-bg.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/lightbulb.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/lightbulb.png
new file mode 100644
index 00000000..c99357a3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/lightbulb.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif
new file mode 100644
index 00000000..e7c3e6d4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.png
new file mode 100644
index 00000000..d790a115
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_arrow.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_bg.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_bg.png
new file mode 100644
index 00000000..5f81ee69
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_bg.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif
new file mode 100644
index 00000000..42cb8d83
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif
new file mode 100644
index 00000000..3f69a5b1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.png
new file mode 100644
index 00000000..33c9e844
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/img/zTreeStandard.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js
new file mode 100644
index 00000000..8cdc80eb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Jun 30 14:16:56 2011 -0400
+ */
+(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
+shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
+)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js
new file mode 100644
index 00000000..705bdb4f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js
@@ -0,0 +1,69 @@
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
+e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
+"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
+"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
+(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
+treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
+addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
+h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
+getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
+getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
+getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
+null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
+getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
+removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
+F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
+for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
+return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
+doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
+[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
+[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
+L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
+Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
+c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
+f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
+0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
+d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
+f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
+!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
+a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
+a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
+f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
+g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
+a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
+d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
+a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
+"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
+c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
+" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
+i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
+h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
+f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
+a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
+a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
+k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
+a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
+NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
+"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
+a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
+a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
+a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
+c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
+b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
+a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
+0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css
new file mode 100644
index 00000000..bb4717bc
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css
@@ -0,0 +1,49 @@
+/*-------------------------------------
+zTree Style
+
+version: 3.0
+author: Hunter.z
+email: hunter.z@263.net
+website: http://code.google.com/p/jquerytree/
+
+-------------------------------------*/
+
+.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
+.ztree {margin:0; padding:5px; color:#333}
+.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap}
+.ztree li ul{ margin:0; padding:0 0 0 18px}
+.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
+
+.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; color:#333; height:17px; text-decoration:none; vertical-align:top; display: inline-block}
+.ztree li a:hover {text-decoration:none}
+.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid;}
+.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_prev {}
+.ztree li a.tmpTargetNode_next {}
+.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
+ font-size:12px; border:1px #7EC4CC solid; *border:0px}
+.ztree li span {line-height:16px; margin-right: 2px}
+.ztree li span.button {line-height:0; margin:0;width:16px; height:16px; display: inline-block; vertical-align:middle;
+ border:0 none; cursor: pointer;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+.ztree li span.button.switch {width:1px; height:18px; visibility: hidden}
+
+.zTreeDragUL {margin:0; padding:0; position:absolute; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
+.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
+
+/* level 等级样å¼*/
+/*.ztree li button.level0 {
+ display:none;
+}
+.ztree li ul.level0 {
+ padding:0;
+ background:none;
+}*/
+
+.ztree li span.button.core_ico_docu{margin-right:2px; background-position:-126px 0; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.check_ico_docu{margin-right:2px; background-position:-126px -16px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.edit_ico_docu{margin-right:2px; background-position:-126px -32px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.hide_ico_docu{margin-right:2px; background-position:-160px 0; vertical-align:top; *vertical-align:middle}
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree._z.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree._z.html
new file mode 100644
index 00000000..7af3e40d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree._z.html
@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">$.fn.zTree.</span>_z</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree v3.x 内部的全部方法都å¯ä»¥é€šè¿‡ $.fn.zTree._z 进行调用,开放出æ¥æ˜¯ä¸ºäº†æ›´ä¾¿äºŽå¤§å®¶å¼€å‘制作自己的 zTree æ’件。 </p>
+ <p class="highlight_red">如无特殊需求请勿使用此对象,以åŠä¿®æ”¹æ­¤å¯¹è±¡å†…部的å„个函数。</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.destroy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.destroy.html
new file mode 100644
index 00000000..71058076
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.destroy.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>destroy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>从 zTree v3.4 开始æä¾›é”€æ¯ zTree 的方法。 </p>
+ <p>1ã€ç”¨æ­¤æ–¹æ³•å¯ä»¥é”€æ¯æŒ‡å®š treeId çš„ zTree,也å¯ä»¥é”€æ¯å½“å‰é¡µé¢å…¨éƒ¨çš„ zTree。</p>
+ <p class="highlight_red">2ã€é”€æ¯æŒ‡å®š treeId çš„ zTree 也å¯ä»¥ä½¿ç”¨ zTreeObj.destroy() 方法。</p>
+ <p class="highlight_red">3ã€é‡æ–°ä½¿ç”¨å·²ç»è¢«é”€æ¯çš„树,必须è¦ä½¿ç”¨ init 方法进行åˆå§‹åŒ–。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree 的 DOM 容器的 id</p>
+ <p class="highlight_red">çœç•¥ treeId,表示销æ¯å½“å‰é¡µé¢å…¨éƒ¨çš„ zTree</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. é”€æ¯ id 为 "treeDemo" çš„ zTree</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy("treeDemo");</code></pre>
+ <h4>2. 销æ¯å…¨éƒ¨ çš„ zTree</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy();</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html
new file mode 100644
index 00000000..b1d1db40
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>getZTreeObj</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree v3.x 专门æä¾›çš„æ ¹æ® treeId èŽ·å– zTree 对象的方法。 </p>
+ <p class="highlight_red">必须在åˆå§‹åŒ– zTree 以åŽæ‰å¯ä»¥ä½¿ç”¨æ­¤æ–¹æ³•ã€‚</p>
+ <p>有了这个方法,用户ä¸å†éœ€è¦è‡ªå·±è®¾å®šå…¨å±€å˜é‡æ¥ä¿å­˜ zTree åˆå§‹åŒ–åŽå¾—到的对象了,而且在所有回调函数中全都会返回 treeId 属性,用户å¯ä»¥éšæ—¶ä½¿ç”¨æ­¤æ–¹æ³•èŽ·å–需è¦è¿›è¡Œæ“作的 zTree 对象</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree 的 DOM 容器的 id</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>zTree 对象,æä¾›æ“作 zTree çš„å„ç§æ–¹æ³•ï¼Œå¯¹äºŽé€šè¿‡ js æ“作 zTree æ¥è¯´å¿…须通过此对象</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. èŽ·å– id 为 tree çš„ zTree 对象</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.init.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.init.html
new file mode 100644
index 00000000..8db6d2c7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/fn.zTree.init.html
@@ -0,0 +1,74 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(obj, zSetting, zNodes)</span><span class="path">$.fn.zTree.</span>init</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree åˆå§‹åŒ–方法,创建 zTree 必须使用此方法</p>
+ <p>1ã€é¡µé¢éœ€è¦è¿›è¡Œ W3C 申明,例如:&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&nbsp;&nbsp; &nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;。</p>
+ <p>2ã€éœ€è¦é¦–先加载 jquery-1.4.2.js 或其他更高版本的 jQuery 。</p>
+ <p>3ã€éœ€è¦åŠ è½½ jquery-ztree.core-3.0.js,如果需è¦ç”¨åˆ° 编辑功能 或 checkbox / radio 还需è¦åˆ†åˆ«åŠ è½½ jquery-ztree.exedit-3.0.js å’Œ jquery-ztree.excheck-3.0.js 。</p>
+ <p>4ã€éœ€è¦åŠ è½½ zTreeStyle.css ä»¥åŠ zTreeStyle 目录下的 img 文件。</p>
+ <p>5ã€å¦‚果需è¦ä½¿ç”¨è‡ªå®šä¹‰å›¾æ ‡è¯·å‚考相应的Demo。</p>
+ <p>6ã€è¯·æ³¨æ„设置 zTree çš„å®¹å™¨æ ·å¼ class="ztree",其中 "ztree" 这个 className,å¯ä»¥æ ¹æ®éœ€è¦éšæ„修改,别忘了修改 css 中对应å字就是了,对于容器如果需è¦å¢žåŠ å…¶ä»–特殊样å¼ï¼Œå¯æ ¹æ®è‡ªå·±çš„需è¦è¿›è¡Œä¿®æ”¹ã€‚</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>obj</b><span>jQuery Object</span></h4>
+ <p>用于展现 zTree 的 DOM 容器</p>
+ <h4 class="topLine"><b>zSetting</b><span>JSON</span></h4>
+ <p>zTree çš„é…置数æ®ï¼Œå…·ä½“请å‚考 “setting é…置详解â€ä¸­çš„å„个属性详细说明</p>
+ <h4 class="topLine"><b>zNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>zTree 的节点数æ®ï¼Œå…·ä½“请å‚考 “treeNode 节点数æ®è¯¦è§£â€ä¸­çš„å„个属性详细说明</p>
+ <p class="highlight_red">1ã€v3.x 支æŒå•ç‹¬æ·»åŠ ä¸€ä¸ªèŠ‚点,å³å¦‚æžœåªæ–°å¢žä¸€ä¸ªèŠ‚点,ä¸ç”¨å¿…须包在数组中</p>
+ <p class="highlight_red">2ã€å¦‚果需è¦å¼‚步加载根节点,å¯ä»¥è®¾ç½®ä¸º null 或 [ ]</p>
+ <p class="highlight_red">3ã€ä½¿ç”¨ç®€å•æ•°æ®æ¨¡å¼ï¼Œè¯·å‚考 setting.data.simpleData 内的属性说明</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>zTree 对象,æä¾›æ“作 zTree çš„å„ç§æ–¹æ³•ï¼Œå¯¹äºŽé€šè¿‡ js æ“作 zTree æ¥è¯´å¿…须通过此对象</p>
+ <p class="highlight_red">如果ä¸éœ€è¦è‡ªè¡Œè®¾å®šå…¨å±€å˜é‡ä¿å­˜ï¼Œå¯ä»¥åˆ©ç”¨ $.fn.zTree.getZTreeObj 方法éšæ—¶èŽ·å–</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 简å•åˆ›å»º zTree 演示</h4>
+ <pre xmlns=""><code>&lt;!DOCTYPE html&gt;
+&lt;HTML&gt;
+ &lt;HEAD&gt;
+ &lt;TITLE&gt; ZTREE DEMO &lt;/TITLE&gt;
+ &lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;
+ &lt;link rel="stylesheet" href="zTreeStyle/zTreeStyle.css" type="text/css"&gt;
+ &lt;script type="text/javascript" src="jquery-1.4.2.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.core-3.5.js"&gt;&lt;/script&gt;
+&lt;!--
+ &lt;script type="text/javascript" src="jquery.ztree.excheck-3.5.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.exedit-3.5.js"&gt;&lt;/script&gt;
+--&gt;
+ &lt;SCRIPT type="text/javascript" &gt;
+ var zTreeObj,
+ setting = {
+ view: {
+ selectedMulti: false
+ }
+ },
+ zTreeNodes = [
+ {"name":"网站导航", open:true, children: [
+ { "name":"google", "url":"http://g.cn", "target":"_blank"},
+ { "name":"baidu", "url":"http://baidu.com", "target":"_blank"},
+ { "name":"sina", "url":"http://www.sina.com.cn", "target":"_blank"}
+ ]
+ }
+ ];
+
+ $(document).ready(function(){
+ zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);
+
+ });
+ &lt;/SCRIPT&gt;
+ &lt;/HEAD&gt;
+
+&lt;BODY&gt;
+&lt;ul id="tree" class="ztree" style="width:230px; overflow:auto;"&gt;&lt;/ul&gt;
+ &lt;/BODY&gt;
+&lt;/HTML&gt;</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.autoParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.autoParam.html
new file mode 100644
index 00000000..cf0f4d27
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.autoParam.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String)</span><span class="path">setting.async.</span>autoParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>异步加载时需è¦è‡ªåŠ¨æ交父节点属性的å‚数。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:[ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>1ã€å°†éœ€è¦ä½œä¸ºå‚æ•°æ交的属性åç§°ï¼Œåˆ¶ä½œæˆ Array å³å¯ï¼Œä¾‹å¦‚:["id", "name"]</p>
+ <p>2ã€å¯ä»¥è®¾ç½®æ交时的å‚æ•°å称,例如 server åªæŽ¥å— zId : ["id=zId"]</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 id 属性为自动æ交的å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id"]
+ }
+};
+å‡è®¾ 异步加载 父节点(node = {id:1, name:"test"}) çš„å­èŠ‚点时,将æ交å‚æ•° id=1
+......</code></pre>
+ <h4>2. 设置 id 属性作为 zId æˆä¸ºè‡ªåŠ¨æ交的å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id=zId"]
+ }
+};
+å‡è®¾ 对父节点 node = {id:1, name:"test"},进行异步加载时,将æ交å‚æ•° zId=1
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.contentType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.contentType.html
new file mode 100644
index 00000000..db0c92fe
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.contentType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>contentType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax æ交å‚æ•°çš„æ•°æ®ç±»åž‹ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:"application/x-www-form-urlencoded"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> contentType = "application/x-www-form-urlencoded" å¯ä»¥æ»¡è¶³ç»å¤§éƒ¨åˆ†è¯·æ±‚,按照标准的 Form æ ¼å¼æ交å‚æ•°</p>
+ <p> contentType = "application/json" å¯ä»¥æ»¡è¶³ .Net 的编程需è¦ï¼ŒæŒ‰ç…§ JSON æ ¼å¼æ交å‚æ•°</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 Ajax æ交å‚æ•°çš„æ•°æ®ç±»åž‹ä¸º JSON æ ¼å¼</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ contentType: "application/json",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataFilter.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataFilter.html
new file mode 100644
index 00000000..f174bf0f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataFilter.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, parentNode, responseData)</span><span class="path">setting.async.</span>dataFilter</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于对 Ajax 返回数æ®è¿›è¡Œé¢„处ç†çš„函数。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">对根进行异步加载时,parentNode = null</p>
+ <h4 class="topLine"><b>responseData</b><span>Array(JSON) / JSON / String</span></h4>
+ <p>异步加载获å–到的数æ®è½¬æ¢åŽçš„ Array(JSON) / JSON / String æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">v3.4开始 æ”¯æŒ XML æ•°æ®æ ¼å¼çš„ String</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON) / JSON</span></h4>
+ <p>返回值是 zTree 支æŒçš„JSON æ•°æ®ç»“æž„å³å¯ã€‚</p>
+ <p class="highlight_red">v3.x 支æŒå•ä¸ª JSON 节点数æ®è¿›è¡ŒåŠ è½½</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 修改异步获å–到的节点name属性</h4>
+ <pre xmlns=""><code>function ajaxDataFilter(treeId, parentNode, responseData) {
+ if (responseData) {
+ for(var i =0; i < responseData.length; i++) {
+ responseData[i].name += "_filter";
+ }
+ }
+ return responseData;
+};
+var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ dataFilter: ajaxDataFilter
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataType.html
new file mode 100644
index 00000000..6d639b70
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.dataType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>dataType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax 获å–çš„æ•°æ®ç±»åž‹ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:"text"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> dataType = "text" å¯ä»¥æ»¡è¶³ç»å¤§éƒ¨åˆ†è¯·æ±‚</p>
+ <p class="highlight_red">其余 dataType 类型请å‚考 jQuery ajax 中的 dataType å‚æ•°</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 Ajax 获å–çš„æ•°æ®ç±»åž‹ä¸º 纯文本</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ dataType: "text",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.enable.html
new file mode 100644
index 00000000..9079ae10
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.enable.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.async.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦å¼€å¯å¼‚步加载模å¼</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 å¼€å¯ å¼‚æ­¥åŠ è½½æ¨¡å¼</p>
+ <p> false 表示 关闭 异步加载模å¼</p>
+ <p class="highlight_red">如果设置为 true,请务必设置 setting.async 内的其它å‚数。</p>
+ <p class="highlight_red">如果需è¦æ ¹èŠ‚点也异步加载,åˆå§‹åŒ–æ—¶ treeNodes å‚数设置为 null å³å¯ã€‚</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦å¼€å¯å¼‚步加载模å¼</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.otherParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.otherParam.html
new file mode 100644
index 00000000..981715f1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.otherParam.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String) / JSON</span><span class="path">setting.async.</span>otherParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax 请求æ交的é™æ€å‚数键值对。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:[ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>å¯ä»¥ä¸ºç©º[ ],如果有 key,则必须存在 value。 例如:[key, value]</p>
+ </div>
+ <h3>JSON æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>直接用 JSON æ ¼å¼åˆ¶ä½œé”®å€¼å¯¹ï¼Œä¾‹å¦‚:{ key1:value1, key2:value2 }</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 Array(String) æ ¼å¼çš„å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: ["id", "1", "name", "test"]
+ }
+};
+进行异步加载时,将æ交å‚æ•° id=1&name=test</code></pre>
+ <h4>2. 设置 JSON æ ¼å¼çš„å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: { "id":"1", "name":"test"}
+ }
+};
+进行异步加载时,将æ交å‚æ•° id=1&name=test</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.type.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.type.html
new file mode 100644
index 00000000..20d9a6b8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.type.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>type</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax çš„ http 请求模å¼ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:"post"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> type = "post" 表示异步加载采用 post 方法请求</p>
+ <p> type = "get" 表示异步加载采用 get 方法请求</p>
+ <p class="highlight_red">对应于 jQuery ajax 中的 type å‚æ•°</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置使用 get æ–¹å¼è¯·æ±‚æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ type: "get",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.url.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.url.html
new file mode 100644
index 00000000..a5209afa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.async.url.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.async.</span>url</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax 获å–æ•°æ®çš„ URL 地å€ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:""</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>设置固定的异步加载 url 字符串,请注æ„地å€çš„路径,确ä¿é¡µé¢èƒ½æ­£å¸¸åŠ è½½</p>
+ <p class="highlight_red">url 内也å¯ä»¥å¸¦å‚数,这些å‚æ•°å°±åªèƒ½æ˜¯é€šè¿‡ get æ–¹å¼æ交了,并且请注æ„进行转ç </p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦å¼‚步加载å­èŠ‚点的的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>返回值</b><span>String</span></h4>
+ <p>è¿”å›žå€¼åŒ String æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置异步获å–节点的 URL 为 nodes.php</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "nodes.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+ <h4>2. 设置异步获å–节点的 URL 为 function 动æ€èŽ·å–</h4>
+ <pre xmlns=""><code>function getAsyncUrl(treeId, treeNode) {
+ return treeNode.isParent ? "nodes1.php" : "nodes2.php";
+};
+var setting = {
+ async: {
+ enable: true,
+ url: getAsyncUrl,
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html
new file mode 100644
index 00000000..70ba0fc4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeAsync</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å¼‚步加载之å‰çš„事件回调函数,zTree æ ¹æ®è¿”回值确定是å¦å…许进行异步加载</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸è¿›è¡Œå¼‚æ­¥åŠ è½½ï¼Œä¹Ÿæ— æ³•è§¦å‘ onAsyncSuccess / onAsyncError 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ id 为 1 的父节点进行异步加载æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeAsync(treeId, treeNode) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeAsync: zTreeBeforeAsync
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html
new file mode 100644
index 00000000..a0e1f42f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· 勾选 或 å–消勾选 之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许 勾选 或 å–消勾选 </p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行 勾选 或 å–消勾选 的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,将ä¸ä¼šæ”¹å˜å‹¾é€‰çŠ¶æ€ï¼Œå¹¶ä¸”æ— æ³•è§¦å‘ onCheck 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‰€æœ‰å‹¾é€‰æ“作,ä¿æŒåˆå§‹åŒ–的勾选状æ€</h4>
+ <pre xmlns=""><code>function zTreeBeforeCheck(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCheck: zTreeBeforeCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeClick.html
new file mode 100644
index 00000000..6efe9286
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>beforeClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å•å‡»èŠ‚点之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许å•å‡»æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被å•å‡»çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>节点被点击åŽçš„选中æ“作类型,详细看下表</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="是å¦å…许多点选中">selectedMulti</td><td title="是å¦æŒ‰ä¸‹ Ctrl 或 Cmd é”®">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="节点当å‰é€‰æ‹©çŠ¶æ€">isSelected</td><td>选中æ“作</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>追加选中</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ </tbody>
+ </table>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸ä¼šé€‰ä¸­èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onClick 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢èŠ‚点被选中</h4>
+ <pre xmlns=""><code>function zTreeBeforeClick(treeId, treeNode, clickFlag) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeClick: zTreeBeforeClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html
new file mode 100644
index 00000000..d778e9c8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCollapse</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·çˆ¶èŠ‚点折å ä¹‹å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许折å æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>è¦æŠ˜å çš„父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸ä¼šæŠ˜å èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onCollapse 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‰€æœ‰å·²å±•å¼€çš„父节点折å </h4>
+ <pre xmlns=""><code>function zTreeBeforeCollapse(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCollapse: zTreeBeforeCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html
new file mode 100644
index 00000000..ed7e4dc2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDblClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标åŒå‡»ä¹‹å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onDblClick 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡åŒå‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onDblClick 事件回调函数,对其他æ“作无任何影å“</p>
+ <p class="highlight_red">此事件回调函数对åŒå‡»èŠ‚点展开功能无任何影å“,如果需è¦è®¾ç½®è¯·å‚考 setting.view.dblClickExpand 属性</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onDblClick 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeDblClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeDblClick: zTreeBeforeDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html
new file mode 100644
index 00000000..1e783a3c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes)</span><span class="path">setting.callback.</span>beforeDrag</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被拖拽之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许开å¯æ‹–拽æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>被拖拽的节点 treeNodes 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>è¦è¢«æ‹–拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">v3.x å…许多个åŒçº§èŠ‚点åŒæ—¶è¢«æ‹–拽,因此将此å‚数修改为 Array(JSON)</p>
+ <p class="highlight_red">如果拖拽时多个被选择的节点ä¸æ˜¯åŒçº§å…³ç³»ï¼Œåˆ™åªèƒ½æ‹–拽鼠标当å‰æ‰€åœ¨ä½ç½®çš„节点</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ç»ˆæ­¢æ‹–æ‹½ï¼Œä¹Ÿæ— æ³•è§¦å‘ onDrag / beforeDrop / onDrop 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å…¨éƒ¨æ‹–拽æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrag(treeId, treeNodes) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrag: zTreeBeforeDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html
new file mode 100644
index 00000000..ceab2d34
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDragOpen</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·æ‹–拽节点移动到折å çŠ¶æ€çš„父节点åŽï¼Œå³å°†è‡ªåŠ¨å±•å¼€è¯¥çˆ¶èŠ‚点之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许自动展开æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>需è¦è¢«å±•å¼€çš„父节点 treeNode 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>è¦è¢«è‡ªåŠ¨å±•å¼€çš„父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree 将无法进行自动展开æ“作</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å…¨éƒ¨æ‹–拽时的自动展开æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeDragOpen(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDragOpen: zTreeBeforeDragOpen
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html
new file mode 100644
index 00000000..41237434
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>beforeDrop</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点拖拽æ“作结æŸä¹‹å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许此拖拽æ“作</p>
+ <p>默认值:null</p>
+ <p class="highlight_red">如未拖拽到有效ä½ç½®ï¼Œåˆ™ä¸è§¦å‘此回调函数,直接将节点æ¢å¤åŽŸä½ç½®</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>目标节点 targetNode 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">无论拖拽æ“作为 å¤åˆ¶ 还是 移动,treeNodes 都是当å‰è¢«æ‹–拽节点的数æ®é›†åˆã€‚</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>treeNodes 被拖拽放开的目标节点 JSON æ•°æ®å¯¹è±¡ã€‚</p>
+ <p class="highlight_red">如果拖拽æˆä¸ºæ ¹èŠ‚点,则 targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>指定移动到目标节点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>拖拽节点æ“作是 å¤åˆ¶ 或 移动</p>
+ <p class="highlight_red">true:å¤åˆ¶ï¼›false:移动</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†æ¢å¤è¢«æ‹–æ‹½çš„èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onDrop 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å°†èŠ‚点拖拽æˆä¸ºæ ¹èŠ‚点</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
+ return !(targetNode == null || (moveType != "inner" && !targetNode.parentTId));
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrop: zTreeBeforeDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html
new file mode 100644
index 00000000..9df3ca2c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeEditName</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点编辑按钮的 click 事件,并且根æ®è¿”回值确定是å¦å…许进入å称编辑状æ€</p>
+ <p class="highlight_red">此事件回调函数最主è¦æ˜¯ç”¨äºŽæ•èŽ·ç¼–辑按钮的点击事件,然åŽè§¦å‘自定义的编辑界é¢æ“作。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦è¿›å…¥ç¼–辑å称状æ€çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,节点将无法进入 zTree 默认的编辑å称状æ€</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ä¿®æ”¹çˆ¶èŠ‚点的å称</h4>
+ <pre xmlns=""><code>function zTreeBeforeEditName(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeEditName: zTreeBeforeEditName
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html
new file mode 100644
index 00000000..350972b7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeExpand</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·çˆ¶èŠ‚点展开之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许展开æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>è¦å±•å¼€çš„父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸ä¼šå±•å¼€èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onExpand 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‰€æœ‰å·²æŠ˜å çš„父节点展开</h4>
+ <pre xmlns=""><code>function zTreeBeforeExpand(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeExpand: zTreeBeforeExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html
new file mode 100644
index 00000000..2c3f28d8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseDown</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键按下之å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onMouseDown 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键按下时所在节点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onMouseDown 事件回调函数,对其他æ“作无任何影å“</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onMouseDown 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseDown(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseDown: zTreeBeforeMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html
new file mode 100644
index 00000000..f0b01b97
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseUp</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键æ¾å¼€ä¹‹å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onMouseUp 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键æ¾å¼€æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onMouseUp 事件回调函数,对其他æ“作无任何影å“</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onMouseUp 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseUp(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseUp: zTreeBeforeMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html
new file mode 100644
index 00000000..0edb3fd0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRemove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被删除之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许删除æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦åˆ é™¤çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸åˆ é™¤èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onRemove 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å…¨éƒ¨åˆ é™¤æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeRemove(treeId, treeNode) {
+ return false;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRemove: zTreeBeforeRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRename.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRename.html
new file mode 100644
index 00000000..07099619
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRename.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, newName, isCancel)</span><span class="path">setting.callback.</span>beforeRename</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点编辑å称结æŸï¼ˆInput 失去焦点 或 按下 Enter 键)之åŽï¼Œæ›´æ–°èŠ‚点å称数æ®ä¹‹å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许更改å称的æ“作</p>
+ <p class="highlight_red">节点进入编辑å称状æ€åŽï¼ŒæŒ‰ ESC é”®å¯ä»¥æ”¾å¼ƒå½“å‰ä¿®æ”¹ï¼Œæ¢å¤åŽŸå称,å–消编辑å称状æ€</p>
+ <p class="highlight_red">从 v3.5.13 开始,å–消编辑状æ€ä¹Ÿä¼šè§¦å‘æ­¤å›žè°ƒï¼Œæ ¹æ® isCancel å‚数判断</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦æ›´æ”¹å称的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>newName</b><span>String</span></h4>
+ <p>修改åŽçš„æ–°å称</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>是å¦å–消æ“作 (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true 表示å–消编辑æ“作(按下 ESC 或 使用 cancelEditName 方法)</p>
+ <p class="highlight_red">isCancel = false 表示确认修改æ“作</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¿æŒå称编辑状æ€ï¼Œæ— æ³•è§¦å‘ onRename 事件回调函数,并且会导致å±è”½å…¶å®ƒäº‹ä»¶ï¼Œç›´åˆ°ä¿®æ”¹å称使得 beforeRename 返回 true</p>
+ <p class="highlight_red">如果返回 false,ä¸ä¼šè®© input 输入框获å–焦点,é¿å…由于警告信æ¯è€Œå¯¼è‡´åå¤è§¦å‘ beforeRename。 请在关闭æ示警告信æ¯åŽï¼Œåˆ©ç”¨ editName 方法让 input é‡æ–°èŽ·å–焦点。</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ä¿®æ”¹çš„å称的长度å°äºŽ 5</h4>
+ <pre xmlns=""><code>function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
+ return newName.length > 5;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRename: zTreeBeforeRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html
new file mode 100644
index 00000000..1a5bdaa3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRightClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标å³é”®ç‚¹å‡»ä¹‹å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onRightClick 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡å³é”®ç‚¹å‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onRightClick 事件回调函数,对其他æ“作无任何影å“</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onRightClick 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeRightClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeRightClick: zTreeBeforeRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html
new file mode 100644
index 00000000..c469e113
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span class="path">setting.callback.</span>onAsyncError</h2>
+ <h2><span>Function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown)</span>&nbsp;</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å¼‚步加载出现异常错误的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeAsync 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onAsyncSuccess / onAsyncError 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>XMLHttpRequest</b><span>String</span></h4>
+ <p>标准 XMLHttpRequest 对象,请å‚考 JQuery API 文档。</p>
+ <h4 class="topLine"><b>textStatus</b><span>String</span></h4>
+ <p>请求状æ€ï¼šsuccess,error,请å‚考 JQuery API 文档。</p>
+ <h4 class="topLine"><b>errorThrown</b><span>String</span></h4>
+ <p>errorThrown åªæœ‰å½“异常å‘生时æ‰ä¼šè¢«ä¼ é€’,请å‚考 JQuery API 文档。</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 异步加载出现异常åŽï¼Œå¼¹å‡ºé”™è¯¯ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
+ alert(XMLHttpRequest);
+};
+var setting = {
+ callback: {
+ onAsyncError: zTreeOnAsyncError
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html
new file mode 100644
index 00000000..081e9d73
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, msg)</span><span class="path">setting.callback.</span>onAsyncSuccess</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å¼‚步加载正常结æŸçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeAsync 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onAsyncSuccess / onAsyncError 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>msg</b><span>String / Object</span></h4>
+ <p>异步获å–的节点数æ®å­—符串,主è¦ä¾¿äºŽç”¨æˆ·è°ƒè¯•ä½¿ç”¨ã€‚</p>
+ <p class="highlight_red">实际数æ®ç±»åž‹ä¼šå— setting.async.dataType 的设置影å“,请å‚考 JQuery API 文档。</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 异步加载æˆåŠŸåŽï¼Œå¼¹å‡ºæ示信æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
+ alert(msg);
+};
+var setting = {
+ callback: {
+ onAsyncSuccess: zTreeOnAsyncSuccess
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCheck.html
new file mode 100644
index 00000000..113eee97
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· checkbox / radio 被勾选 或 å–消勾选的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeCheck 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onCheck 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被勾选 或 å–消勾选的节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡ç‚¹å‡» checkbox 或 radio åŽï¼Œ 弹出该节点的 tIdã€name 以åŠå½“å‰å‹¾é€‰çŠ¶æ€çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnCheck(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
+};
+var setting = {
+ callback: {
+ onCheck: zTreeOnCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onClick.html
new file mode 100644
index 00000000..1f7a2664
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>onClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被点击的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeClick 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onClick 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被点击的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>节点被点击åŽçš„选中æ“作类型,详细看下表</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="是å¦å…许多点选中">selectedMulti</td><td title="是å¦æŒ‰ä¸‹ Ctrl 或 Cmd é”®">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="节点当å‰é€‰æ‹©çŠ¶æ€">isSelected</td><td>选中æ“作</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>追加选中</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡ç‚¹å‡»èŠ‚点åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnClick(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onClick: zTreeOnClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCollapse.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCollapse.html
new file mode 100644
index 00000000..1c816c20
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCollapse</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被折å çš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeCollapse 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onCollapse 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被折å çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡æŠ˜å èŠ‚点åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnCollapse(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onCollapse: zTreeOnCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDblClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDblClick.html
new file mode 100644
index 00000000..deb8e626
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDblClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onDblClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标åŒå‡»ä¹‹åŽçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeDblClick 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onDblClick 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡åŒå‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡åŒå‡»åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnDblClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onDblClick: zTreeOnDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrag.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrag.html
new file mode 100644
index 00000000..efd115bd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrag.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDrag</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被拖拽的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeDrag 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onDragMove å’Œ onDrag 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>被拖拽的节点 treeNodes 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>è¦è¢«æ‹–拽的节点 JSON æ•°æ®é›†åˆ</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡å¼€å§‹è¿›è¡Œæ‹–拽节点åŽï¼Œ 弹出被拖拽节点的个数信æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnDrag(event, treeId, treeNodes) {
+ alert(treeNodes.length);
+};
+var setting = {
+ callback: {
+ onDrag: zTreeOnDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDragMove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDragMove.html
new file mode 100644
index 00000000..e6a8dd9e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDragMove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDragMove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被拖拽过程中移动的事件回调函数</p>
+ <p class="highlight_red">主è¦ç”¨äºŽæ•èŽ· zTree 节点拖拽到的 DOM,从而æ“作对应的 DOM。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>被拖拽的节点 treeNodes 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>è¦è¢«æ‹–拽的节点 JSON æ•°æ®é›†åˆ</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 拖拽节点时,éšæ—¶è¾“出 当å‰æ‹–拽到的目标 DOM</h4>
+ <pre xmlns=""><code>function zTreeOnDragMove(event, treeId, treeNodes) {
+ console.log(event.target);
+};
+var setting = {
+ callback: {
+ onDragMove: zTreeOnDragMove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrop.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrop.html
new file mode 100644
index 00000000..c6773a88
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onDrop.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>onDrop</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点拖拽æ“作结æŸçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeDrop 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onDrop 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>目标节点 targetNode 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">如果拖拽æ“作为 移动,treeNodes 是当å‰è¢«æ‹–拽节点的数æ®é›†åˆã€‚</p>
+ <p class="highlight_red">如果拖拽æ“作为 å¤åˆ¶ï¼ŒtreeNodes 是å¤åˆ¶åŽ clone 得到的新节点数æ®ã€‚</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>æˆä¸º treeNodes 拖拽结æŸçš„目标节点 JSON æ•°æ®å¯¹è±¡ã€‚</p>
+ <p class="highlight_red">如果拖拽æˆä¸ºæ ¹èŠ‚点,则 targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>指定移动到目标节点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <p class="highlight_red">如果 moveType = null,表明拖拽无效</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>拖拽节点æ“作是 å¤åˆ¶ 或 移动</p>
+ <p class="highlight_red">true:å¤åˆ¶ï¼›false:移动</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡æ‹–拽æ“作结æŸåŽï¼Œ 弹出该被拖拽节点的个数以åŠç›®æ ‡èŠ‚点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnDrop(event, treeId, treeNodes, targetNode, moveType) {
+ alert(treeNodes.length + "," + (targetNode ? (targetNode.tId + ", " + targetNode.name) : "isRoot" ));
+};
+var setting = {
+ callback: {
+ onDrop: zTreeOnDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onExpand.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onExpand.html
new file mode 100644
index 00000000..791c5f6f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onExpand</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被展开的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeExpand 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onExpand 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被展开的节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡å±•å¼€èŠ‚点åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnExpand(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onExpand: zTreeOnExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html
new file mode 100644
index 00000000..bc9d0ea7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseDown</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键按下åŽçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeMouseDown 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onMouseDown 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键按下时所在节点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡æŒ‰é”®æŒ‰ä¸‹åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnMouseDown(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseDown: zTreeOnMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html
new file mode 100644
index 00000000..a969fef9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseUp</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键æ¾å¼€åŽçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeMouseUp 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onMouseUp 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键æ¾å¼€æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡æŒ‰é”®æ¾å¼€åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnMouseUp(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseUp: zTreeOnMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html
new file mode 100644
index 00000000..2ebaee63
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onNodeCreated</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚ç‚¹ç”Ÿæˆ DOM åŽçš„事件回调函数</p>
+ <p class="highlight_red">v3.x 采用了延迟加载技术,因此对于父节点未展开的å­èŠ‚点æ¥è¯´ï¼Œåˆå§‹åŒ–åŽæ˜¯ä¸ä¼šè§¦å‘此回调函数,直到其父节点被展开</p>
+ <p class="highlight_red">大数æ®é‡çš„节点加载请注æ„:ä¸è®¾ç½® onNodeCreated,å¯ä»¥æå‡ä¸€éƒ¨åˆ†åˆå§‹åŒ–性能</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>ç”Ÿæˆ DOM 完毕的节点的 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 创建节点 DOM åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnNodeCreated(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onNodeCreated: zTreeOnNodeCreated
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRemove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRemove.html
new file mode 100644
index 00000000..e7e625d9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRemove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRemove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·åˆ é™¤èŠ‚点之åŽçš„事件回调函数。</p>
+ <p class="highlight_red">如果用户设置了 beforeRemove 回调函数,并返回 falseï¼Œå°†æ— æ³•è§¦å‘ onRemove 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦åˆ é™¤çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 删除节点时,弹出被删除的节点的 tId ä»¥åŠ name ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnRemove(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRemove: zTreeOnRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRename.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRename.html
new file mode 100644
index 00000000..f225463f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRename.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, isCancel)</span><span class="path">setting.callback.</span>onRename</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点编辑å称结æŸä¹‹åŽçš„事件回调函数。</p>
+ <p>1ã€èŠ‚点进入编辑å称状æ€ï¼Œå¹¶ä¸”修改节点å称åŽè§¦å‘此回调函数。<span class="highlight_red">如果用户设置了 beforeRename 回调函数,并返回 falseï¼Œå°†æ— æ³•è§¦å‘ onRename 事件回调函数。</span></p>
+ <p>2ã€<span class="highlight_red">如果通过直接修改 treeNode çš„æ•°æ®ï¼Œå¹¶ä¸”利用 updateNode 方法更新,是ä¸ä¼šè§¦å‘此回调函数的。</span></p>
+ <p class="highlight_red">3ã€ä»Ž v3.5.13 开始,å–消编辑状æ€ä¹Ÿä¼šè§¦å‘æ­¤å›žè°ƒï¼Œæ ¹æ® isCancel å‚数判断</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被修改å称的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>是å¦å–消æ“作 (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true 表示å–消编辑æ“作(按下 ESC 或 使用 cancelEditName 方法)</p>
+ <p class="highlight_red">isCancel = false 表示确认修改æ“作</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 修改å称åŽï¼Œå¼¹å‡ºè¢«ä¿®æ”¹å称的节点的 tId ä»¥åŠ name ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnRename(event, treeId, treeNode, isCancel) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRename: zTreeOnRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRightClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRightClick.html
new file mode 100644
index 00000000..d51c68d1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.callback.onRightClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRightClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标å³é”®ç‚¹å‡»ä¹‹åŽçš„事件回调函数</p>
+ <p class="highlight_red">1ã€å¦‚果设置了 setting.callback.beforeRightClick 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onRightClick 事件回调函数。</p>
+ <p class="highlight_red">2ã€åªè¦å°† function 的引用赋给 onRightClick 属性,则å³é”®ç‚¹å‡» zTree 时,将å±è”½æµè§ˆå™¨çš„å³é”®èœå•ã€‚</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡å³é”®ç‚¹å‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡å³é”®ç‚¹å‡»åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnRightClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onRightClick: zTreeOnRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html
new file mode 100644
index 00000000..d1efd770
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>autoCheckTrigger</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置自动关è”勾选时是å¦è§¦å‘ beforeCheck / onCheck 事件回调函数。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]</span></p>
+ <p class="highlight_red">1ã€å¦‚果设置 setting.check.chkboxType = { "Y": "", "N": "" },将ä¸ä¼šæœ‰ä»»ä½•è‡ªåŠ¨å…³è”勾选的æ“作。</p>
+ <p class="highlight_red">2ã€å¦‚果开å¯è§¦å‘,对于节点较多的树将会影å“性能,因为所有被è”动勾选的æ“作都会触å‘事件回调函数,请根æ®éœ€è¦å†³å®šæ˜¯å¦ä½¿ç”¨æ­¤åŠŸèƒ½ã€‚</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 è§¦å‘ / ä¸è§¦å‘ 事件回调函数</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦è§¦å‘自动关è”勾选æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ autoCheckTrigger: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html
new file mode 100644
index 00000000..8af1c2c6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>chkDisabledInherit</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>当父节点设置 chkDisabled = true 时,设置å­èŠ‚点是å¦è‡ªåŠ¨ç»§æ‰¿ chkDisabled = true 。<span class="highlight_red">[setting.check.enable = true 时生效]</span></p>
+ <p class="highlight_red">1ã€åªä½¿ç”¨äºŽåˆå§‹åŒ–节点时,便于批é‡æ“作。 对于已存在的节点请利用 setChkDisabled 方法å•ä¸ªèŠ‚点设置。</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 新加入å­èŠ‚点时,自动继承父节点 chkDisabled = true 的属性。</p>
+ <p> false 表示 新加入å­èŠ‚点时,ä¸ç»§æ‰¿çˆ¶èŠ‚点 chkDisabled 的属性。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦å­èŠ‚点自动继承 chkDisabled = true</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkDisabledInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkStyle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkStyle.html
new file mode 100644
index 00000000..9706c134
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkStyle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>chkStyle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选框类型(checkbox 或 radio)<span class="highlight_red">[setting.check.enable = true 时生效]</span></p>
+ <p>默认值:"checkbox"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>chkStyle = "checkbox" 时,显示 checkbox 选择框,<span class="highlight_red">setting.check.chkboxType</span> 属性有效。
+<br/>chkStyle = "radio" 时,显示 radio 选择框, <span class="highlight_red">setting.check.radioType</span> 属性有效。</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>checkbox 状æ€è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk checkbox_false_full"></button>未勾选;<span class="highlight_red">如果是父节点,则无å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_false_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_false_part"></button>未勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">存在被勾选的å­èŠ‚点</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_false_part_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_full"></button>被勾选;<span class="highlight_red">如果是父节点,则全部å­èŠ‚点都被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_true_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_part"></button>被勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">且部分或无å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>radio 状æ€è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk radio_false_full"></button>未勾选;<span class="highlight_red">如果是父节点,则没有å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_false_full_focus"></button></p>
+ <p><button type="button" class="chk radio_false_part"></button>未勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">且存在被勾选的å­èŠ‚点</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_false_part_focus"></button></p>
+ <p><button type="button" class="chk radio_true_full"></button>被勾选;<span class="highlight_red">如果是父节点,则没有å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_true_full_focus"></button></p>
+ <p><button type="button" class="chk radio_true_part"></button>被勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">且存在被勾选的å­èŠ‚点</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置选择框为 radio</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkboxType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkboxType.html
new file mode 100644
index 00000000..da06b6ca
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.chkboxType.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">setting.check.</span>chkboxType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选 checkbox 对于父å­èŠ‚点的关è”关系。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]</span></p>
+ <p>默认值:{ "Y": "ps", "N": "ps" }</p>
+ </div>
+ </div>
+ <h3>JSON æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>Y 属性定义 checkbox 被勾选åŽçš„情况;
+<br/>N 属性定义 checkbox å–消勾选åŽçš„情况;
+<br/>"p" 表示æ“作会影å“父级节点;
+<br/>"s" 表示æ“作会影å“å­çº§èŠ‚点。</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. checkbox 勾选æ“作,åªå½±å“父级节点;å–消勾选æ“作,åªå½±å“å­çº§èŠ‚点</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "checkbox",
+ chkboxType: { "Y": "p", "N": "s" }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.enable.html
new file mode 100644
index 00000000..8b1387e3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.enable.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 的节点上是å¦æ˜¾ç¤º checkbox / radio</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / ä¸æ˜¾ç¤º å¤é€‰æ¡†æˆ–å•é€‰æ¡†</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦æ˜¾ç¤º checkbox</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html
new file mode 100644
index 00000000..caf99028
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>nocheckInherit</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>当父节点设置 nocheck = true 时,设置å­èŠ‚点是å¦è‡ªåŠ¨ç»§æ‰¿ nocheck = true 。<span class="highlight_red">[setting.check.enable = true 时生效]</span></p>
+ <p class="highlight_red">1ã€åªä½¿ç”¨äºŽåˆå§‹åŒ–节点时,便于批é‡æ“作。 对于已存在的节点请利用 updateNode 方法å•ä¸ªèŠ‚点设置。</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 新加入å­èŠ‚点时,自动继承父节点 nocheck = true 的属性。</p>
+ <p> false 表示 新加入å­èŠ‚点时,ä¸ç»§æ‰¿çˆ¶èŠ‚点 nocheck 的属性。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦å­èŠ‚点自动继承 nocheck = true</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ nocheckInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.radioType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.radioType.html
new file mode 100644
index 00000000..19f84cad
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.check.radioType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>radioType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>radio 的分组范围。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "radio" 时生效]</span></p>
+ <p>默认值:"level"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>radioType = "level" 时,在æ¯ä¸€çº§èŠ‚点范围内当åšä¸€ä¸ªåˆ†ç»„。
+<br/>radioType = "all" 时,在整棵树范围内当åšä¸€ä¸ªåˆ†ç»„。</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 radio 的判别规则为整棵树内</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio",
+ radioType: "all"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.leaf.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.leaf.html
new file mode 100644
index 00000000..af3a7211
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.leaf.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>leaf</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 的节点å¶å­èŠ‚点属性é”,是å¦å§‹ç»ˆä¿æŒ isParent = false</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 é”定 / ä¸é”定 å¶å­èŠ‚点属性</p>
+ <p class="highlight_red">如果设置为 true,则所有 isParent = false 的节点,都无法添加å­èŠ‚点。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦é”定å¶å­èŠ‚点状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ leaf: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.parent.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.parent.html
new file mode 100644
index 00000000..c4975df2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.keep.parent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>parent</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 的节点父节点属性é”,是å¦å§‹ç»ˆä¿æŒ isParent = true</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 é”定 / ä¸é”定 父节点属性</p>
+ <p class="highlight_red">如果设置为 true,则所有 isParent = true 的节点,å³ä½¿è¯¥èŠ‚点的å­èŠ‚点被全部删除或移走,ä¾æ—§ä¿æŒçˆ¶èŠ‚点状æ€ã€‚</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦é”定父节点状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ parent: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.checked.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.checked.html
new file mode 100644
index 00000000..ac9fdc1d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.checked.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>checked</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¸­ä¿å­˜ check 状æ€çš„属性å称。</p>
+ <p>默认值:"checked"</p>
+ <p class="highlight_red">请勿与 zTree 节点数æ®çš„其他å‚数冲çªï¼Œä¾‹å¦‚:checkedOld</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ isChecked 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ checked: "isChecked"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.children.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.children.html
new file mode 100644
index 00000000..66a49a7e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.children.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>children</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¸­ä¿å­˜å­èŠ‚点数æ®çš„属性å称。</p>
+ <p>默认值:"children"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ nodes 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ children: "nodes"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.name.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.name.html
new file mode 100644
index 00000000..c25d250a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.name.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>name</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¿å­˜èŠ‚点å称的属性å称。</p>
+ <p>默认值:"name"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ ename 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ name: "ename"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.title.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.title.html
new file mode 100644
index 00000000..43e68554
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.title.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>title</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¿å­˜èŠ‚点æ示信æ¯çš„属性å称。<span class="highlight_red">[setting.view.showTitle = true 时生效]</span></p>
+ <p class="highlight_red">如果设置为 "" ,则自动与 setting.data.key.name ä¿æŒä¸€è‡´ï¼Œé¿å…用户åå¤è®¾ç½®</p>
+ <p>默认值:""</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ fullName 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ title: "fullName"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.url.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.url.html
new file mode 100644
index 00000000..e534d985
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.key.url.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>url</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¿å­˜èŠ‚点链接的目标 URL 的属性å称。</p>
+ <p class="highlight_red">特殊用途:当åŽå°æ•°æ®åªèƒ½ç”Ÿæˆ url 属性,åˆä¸æƒ³å®žçŽ°ç‚¹å‡»èŠ‚点跳转的功能时,å¯ä»¥ç›´æŽ¥ä¿®æ”¹æ­¤å±žæ€§ä¸ºå…¶ä»–ä¸å­˜åœ¨çš„属性å称</p>
+ <p>默认值:"url"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ xUrl 属性当åšèŠ‚点链接的目标 URL</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ url: "xUrl"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html
new file mode 100644
index 00000000..65bd4071
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.simpleData.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>确定 zTree åˆå§‹åŒ–时的节点数æ®ã€å¼‚步加载时的节点数æ®ã€æˆ– <span class="highlight_red">addNodes</span> 方法中输入的 newNodes æ•°æ®æ˜¯å¦é‡‡ç”¨ç®€å•æ•°æ®æ¨¡å¼ (Array)</p>
+ <p>ä¸éœ€è¦ç”¨æˆ·å†æŠŠæ•°æ®åº“中å–出的 List 强行转æ¢ä¸ºå¤æ‚çš„ JSON 嵌套格å¼</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 使用 / ä¸ä½¿ç”¨ 简å•æ•°æ®æ¨¡å¼</p>
+ <p class="highlight_red">如果设置为 true,请务必设置 setting.data.simpleData 内的其他å‚æ•°: idKey / pIdKey / rootPId,并且让数æ®æ»¡è¶³çˆ¶å­å…³ç³»ã€‚</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html
new file mode 100644
index 00000000..81129e93
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>idKey</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点数æ®ä¸­ä¿å­˜å”¯ä¸€æ ‡è¯†çš„属性å称。<span class="highlight_red">[setting.data.simpleData.enable = true 时生效]</span></p>
+ <p>默认值:"id"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html
new file mode 100644
index 00000000..d434bc31
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>pIdKey</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点数æ®ä¸­ä¿å­˜å…¶çˆ¶èŠ‚点唯一标识的属性å称。<span class="highlight_red">[setting.data.simpleData.enable = true 时生效]</span></p>
+ <p>默认值:"pId"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html
new file mode 100644
index 00000000..8cff82d4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.data.simpleData.</span>rootPId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于修正根节点父节点数æ®ï¼Œå³ pIdKey 指定的属性值。<span class="highlight_red">[setting.data.simpleData.enable = true 时生效]</span></p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html
new file mode 100644
index 00000000..126b8a85
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>autoExpandTrigger</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时父节点自动展开是å¦è§¦å‘ onExpand 事件回调函数。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 è§¦å‘ / ä¸è§¦å‘ onExpand 事件回调函数。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. è®¾ç½®æ‹–æ‹½æ—¶çˆ¶èŠ‚ç‚¹è‡ªåŠ¨å±•å¼€è§¦å‘ onExpand 事件回调函数</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoExpandTrigger: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html
new file mode 100644
index 00000000..df783392
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>autoOpenTime</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时父节点自动展开的延时间隔。 (å•ä½ï¼šms)<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:500</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置拖拽到父节点上立刻自动展开</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoOpenTime: 0
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html
new file mode 100644
index 00000000..1d4dd681
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMax</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽节点æˆä¸ºæ ¹èŠ‚点时的 Tree 内边界范围 (å•ä½ï¼špx)。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:10</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 更改拖拽æ“作节点æˆä¸ºæ ¹èŠ‚点时的 Tree 内边界范围为20px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMax: 20
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html
new file mode 100644
index 00000000..463eb2b7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMin</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽节点æˆä¸ºæ ¹èŠ‚点时的 Tree 外边界范围 (å•ä½ï¼špx)。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:-5</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 更改拖拽æ“作节点æˆä¸ºæ ¹èŠ‚点时的 Tree 外边界范围为10px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMin: -10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.inner.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.inner.html
new file mode 100644
index 00000000..06679e1a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.inner.html
@@ -0,0 +1,59 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>inner</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽到目标节点时,设置是å¦å…许æˆä¸ºç›®æ ‡èŠ‚点的å­èŠ‚点。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">拖拽目标是 æ ¹ 的时候,ä¸è§¦å‘ prev å’Œ next,åªä¼šè§¦å‘ inner</p>
+ <p class="highlight_red">此功能主è¦ä½œç”¨æ˜¯å¯¹æ‹–拽进行适当é™åˆ¶ï¼ˆè¾…助箭头),需è¦ç»“åˆ prevã€next 一起使用,æ‰èƒ½å®žçŽ°å®Œæ•´åŠŸèƒ½ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 æˆä¸ºç›®æ ‡èŠ‚点的å­èŠ‚点</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控(多棵树拖拽时,是目标节点所在树的 treeId)</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>拖拽时的目标节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果拖拽的节点è¦æˆä¸ºæ ¹èŠ‚点,则 targetNode = null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‹–拽æˆä¸ºç›®æ ‡èŠ‚点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: false
+ }
+ }
+};
+......</code></pre>
+ <h4>2. ç¦æ­¢æ‹–拽æˆä¸ºæ ¹èŠ‚点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>function canInner(treeId, nodes, targetNode) {
+ return !(targetNode && targetNode.level === 0);
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: canInner
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html
new file mode 100644
index 00000000..cff17afd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isCopy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时, 设置是å¦å…许å¤åˆ¶èŠ‚点。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>规则说明</h3>
+ <div class="desc">
+ <p>1ã€isCopy = true; isMove = true 时,拖拽节点按下 Ctrl 或 Cmd 键表示 copy; å¦åˆ™ä¸º move</p>
+ <p>2ã€isCopy = true; isMove = false 时,所有拖拽æ“作都是 copy</p>
+ <p>3ã€isCopy = false; isMove = true 时,所有拖拽æ“作都是 move</p>
+ <p>4ã€isCopy = false; isMove = false 时,ç¦æ­¢æ‹–拽æ“作</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置所有拖拽æ“作都是 copy</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: true,
+ isMove: false
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html
new file mode 100644
index 00000000..7fdadd18
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isMove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时, 设置是å¦å…许移动节点。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>规则说明</h3>
+ <div class="desc">
+ <p>1ã€isCopy = true; isMove = true 时,拖拽节点按下 Ctrl 或 Cmd 键表示 copy; å¦åˆ™ä¸º move</p>
+ <p>2ã€isCopy = true; isMove = false 时,所有拖拽æ“作都是 copy</p>
+ <p>3ã€isCopy = false; isMove = true 时,所有拖拽æ“作都是 move</p>
+ <p>4ã€isCopy = false; isMove = false 时,ç¦æ­¢æ‹–拽æ“作</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置所有拖拽æ“作都是 move</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: false,
+ isMove: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html
new file mode 100644
index 00000000..3e7a3d26
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>maxShowNodeNum</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽多个兄弟节点时,浮动图层中显示的最大节点数。 多余的节点用...代替。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:5</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置拖拽时最多å¯æ˜¾ç¤º10个节点</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ maxShowNodeNum: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html
new file mode 100644
index 00000000..904be414
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>minMoveSize</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>判定是å¦æ‹–拽æ“作的最å°ä½ç§»å€¼ (å•ä½ï¼špx)。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">æ ¹æ®è‡ªå·±çš„需求å¯é€‚当调整此值,如果太å°å®¹æ˜“导致点击鼠标时误æ“作进行拖拽</p>
+ <p>默认值:5</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 更改拖拽æ“作å¯åŠ¨ä½ç§»å€¼ä¸º10px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ minMoveSize: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.next.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.next.html
new file mode 100644
index 00000000..ffc874aa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.next.html
@@ -0,0 +1,58 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>next</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽到目标节点时,设置是å¦å…许移动到目标节点åŽé¢çš„æ“作。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">拖拽目标是 æ ¹ 的时候,ä¸è§¦å‘ prev å’Œ next,åªä¼šè§¦å‘ inner</p>
+ <p class="highlight_red">此功能主è¦ä½œç”¨æ˜¯å¯¹æ‹–拽进行适当é™åˆ¶ï¼ˆè¾…助箭头),需è¦ç»“åˆ prevã€inner 一起使用,æ‰èƒ½å®žçŽ°å®Œæ•´åŠŸèƒ½ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 移动到目标节点åŽé¢</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控(多棵树拖拽时,是目标节点所在树的 treeId)</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>拖拽时的目标节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‹–拽到节点åŽé¢çš„æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: false,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. ç¦æ­¢æ‹–拽到父节点åŽé¢çš„æ“作</h4>
+ <pre xmlns=""><code>function canNext(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: canNext,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.prev.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.prev.html
new file mode 100644
index 00000000..bd053618
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.drag.prev.html
@@ -0,0 +1,58 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>prev</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽到目标节点时,设置是å¦å…许移动到目标节点å‰é¢çš„æ“作。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">拖拽目标是 æ ¹ 的时候,ä¸è§¦å‘ prev å’Œ next,åªä¼šè§¦å‘ inner</p>
+ <p class="highlight_red">此功能主è¦ä½œç”¨æ˜¯å¯¹æ‹–拽进行适当é™åˆ¶ï¼ˆè¾…助箭头),需è¦ç»“åˆ nextã€inner 一起使用,æ‰èƒ½å®žçŽ°å®Œæ•´åŠŸèƒ½ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 移动到目标节点å‰é¢</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控(多棵树拖拽时,是目标节点所在树的 treeId)</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>拖拽时的目标节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‹–拽到节点å‰é¢çš„æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: false,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. ç¦æ­¢æ‹–拽到父节点å‰é¢çš„æ“作</h4>
+ <pre xmlns=""><code>function canPrev(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: canPrev,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html
new file mode 100644
index 00000000..30784f3c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>editNameSelectAll</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点编辑å称 input åˆæ¬¡æ˜¾ç¤ºæ—¶,设置 txt 内容是å¦ä¸ºå…¨é€‰çŠ¶æ€ã€‚ <span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 全选状æ€</p>
+ <p> false 表示 ä¸æ˜¯å…¨é€‰çŠ¶æ€ï¼Œå…‰æ ‡é»˜è®¤åœ¨æœ€åŽ</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置节点编辑å称 input åˆæ¬¡æ˜¾ç¤ºæ—¶ï¼Œtxt内容为全选状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ editNameSelectAll: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.enable.html
new file mode 100644
index 00000000..de1afeaf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.enable.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦å¤„于编辑状æ€</p>
+ <p class="highlight_red">请在åˆå§‹åŒ–之å‰è®¾ç½®ï¼Œåˆå§‹åŒ–åŽéœ€è¦æ”¹å˜ç¼–辑状æ€è¯·ä½¿ç”¨ zTreeObj.setEditable() 方法</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å¯ä»¥ / ä¸å¯ä»¥ 编辑</p>
+ </div>
+ <h3>编辑状æ€è§„则说明</h3>
+ <div class="desc">
+ <p>1ã€ç‚¹å‡»èŠ‚点时,ä¸ä¼šæ‰“å¼€ <span class="highlight_red">node.url</span> 指定的 URL。
+<br/>2ã€å…¨é¢æ”¯æŒ 编辑 与 异步加载 状æ€å…±å­˜ã€‚
+<br/>3ã€å¯ä»¥å¯¹èŠ‚点进行拖拽,且支æŒå¤šæ£µæ ‘之间进行拖拽。
+<br/>4ã€æ”¯æŒæ‹–拽时 å¤åˆ¶/移动 节点。(å‚考: <span class="highlight_red">setting.edit.drag.isCopy / setting.edit.drag.isMove</span>)
+<br/>5ã€å¯ä»¥é€šè¿‡ç¼–辑按钮修改 name 属性。
+<br/>6ã€å¯ä»¥é€šè¿‡åˆ é™¤æŒ‰é’®åˆ é™¤èŠ‚点。
+<br/>
+</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 进入编辑状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.removeTitle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.removeTitle.html
new file mode 100644
index 00000000..55257da7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.removeTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>removeTitle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>删除按钮的 Title 辅助信æ¯ã€‚<span class="highlight_red">[setting.edit.enable = true & setting.edit.showRemoveBtn = true 时生效]</span></p>
+ <p>默认值:"remove"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>鼠标移动到 删除按钮 上时,æµè§ˆå™¨è‡ªåŠ¨å¼¹å‡ºçš„辅助信æ¯å†…容,å¯æ ¹æ®ç”¨æˆ·éœ€è¦è‡ªè¡Œä¿®æ”¹</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®åˆ é™¤æŒ‰é’® Title ä¿¡æ¯çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>String</span></h4>
+ <p>è¿”å›žå€¼åŒ String æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置删除按钮的 Title 辅助信æ¯ä¸º: "删除节点"</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: "删除节点"
+ }
+};
+......</code></pre>
+ <h4>2. 设置父节点删除按钮的 Title 辅助信æ¯ä¸º: "删除父节点"</h4>
+ <pre xmlns=""><code>function setRemoveTitle(treeId, treeNode) {
+ return treeNode.isParent ? "删除父节点":"删除å¶å­èŠ‚点";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: setRemoveTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.renameTitle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.renameTitle.html
new file mode 100644
index 00000000..2dfbcca1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.renameTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>renameTitle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>编辑å称按钮的 Title 辅助信æ¯ã€‚<span class="highlight_red">[setting.edit.enable = true & setting.edit.showRenameBtn = true 时生效]</span></p>
+ <p>默认值:"rename"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>设置鼠标移动到 编辑å称按钮 上时,æµè§ˆå™¨è‡ªåŠ¨å¼¹å‡ºçš„辅助信æ¯å†…容,å¯æ ¹æ®ç”¨æˆ·éœ€è¦è‡ªè¡Œä¿®æ”¹</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®ç¼–辑å称按钮 Title ä¿¡æ¯çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>String</span></h4>
+ <p>è¿”å›žå€¼åŒ String æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置编辑å称按钮的 Title 辅助信æ¯ä¸º: "编辑节点å称"</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: "编辑节点å称"
+ }
+};
+......</code></pre>
+ <h4>2. 设置父节点编辑å称按钮的 Title 辅助信æ¯ä¸º: "编辑父节点å称"</h4>
+ <pre xmlns=""><code>function setRenameTitle(treeId, treeNode) {
+ return treeNode.isParent ? "编辑父节点å称":"编辑å¶å­èŠ‚点å称";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: setRenameTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html
new file mode 100644
index 00000000..db62053c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRemoveBtn</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置是å¦æ˜¾ç¤ºåˆ é™¤æŒ‰é’®ã€‚<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>当点击æŸèŠ‚点的删除按钮时:</p>
+ <p>1ã€é¦–å…ˆè§¦å‘ <span class="highlight_red">setting.callback.beforeRemove</span> 回调函数,用户å¯åˆ¤å®šæ˜¯å¦è¿›è¡Œåˆ é™¤æ“作。</p>
+ <p>2ã€å¦‚果未设置 beforeRemove 或 beforeRemove 返回 trueï¼Œåˆ™åˆ é™¤èŠ‚ç‚¹å¹¶è§¦å‘ <span class="highlight_red">setting.callback.onRemove</span> 回调函数。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— 删除按钮</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºåˆ é™¤æŒ‰é’®çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ä¸æ˜¾ç¤ºåˆ é™¤æŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置所有的父节点ä¸æ˜¾ç¤ºåˆ é™¤æŒ‰é’®</h4>
+ <pre xmlns=""><code>function setRemoveBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: setRemoveBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html
new file mode 100644
index 00000000..33dd37aa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html
@@ -0,0 +1,51 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRenameBtn</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置是å¦æ˜¾ç¤ºç¼–辑å称按钮。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>当点击æŸèŠ‚点的编辑å称按钮时:</p>
+ <p>1ã€è¿›å…¥èŠ‚点编辑å称状æ€ã€‚</p>
+ <p>2ã€ç¼–辑å称完毕(Input 失去焦点 或 按下 Enter é”®ï¼‰ï¼Œä¼šè§¦å‘ <span class="highlight_red">setting.callback.beforeRename</span> 回调函数,用户å¯æ ¹æ®è‡ªå·±çš„规则判定是å¦å…许修改å称。</p>
+ <p>3ã€å¦‚æžœ beforeRename 返回 false,则继续ä¿æŒç¼–辑å称状æ€ï¼Œç›´åˆ°å称符åˆè§„则ä½ç½® (按下 ESC é”®å¯å–消编辑å称状æ€ï¼Œæ¢å¤åŽŸå称)。</p>
+ <p>4ã€å¦‚果未设置 beforeRename 或 beforeRename 返回 true,则结æŸèŠ‚点编辑å称状æ€ï¼Œæ›´æ–°èŠ‚点åç§°ï¼Œå¹¶è§¦å‘ <span class="highlight_red">setting.callback.onRename</span> 回调函数。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— 编辑å称按钮</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºç¼–辑å称按钮的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ä¸æ˜¾ç¤ºç¼–辑å称按钮</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置所有的父节点ä¸æ˜¾ç¤ºç¼–辑å称按钮</h4>
+ <pre xmlns=""><code>function setRenameBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: setRenameBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeId.html
new file mode 100644
index 00000000..819743eb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeId.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.</span>treeId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 的唯一标识,åˆå§‹åŒ–åŽï¼Œç­‰äºŽ 用户定义的 zTree 容器的 id 属性值。</p>
+ <p class="highlight_red">请勿进行åˆå§‹åŒ– 或 修改,属于内部å‚数。</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeObj.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeObj.html
new file mode 100644
index 00000000..37684a19
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.treeObj.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Object</span><span class="path">setting.</span>treeObj</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 容器的 jQuery 对象,主è¦åŠŸèƒ½ï¼šä¾¿äºŽæ“作。</p>
+ <p class="highlight_red">请勿进行åˆå§‹åŒ– 或 修改,属于内部å‚数。</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addDiyDom.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addDiyDom.html
new file mode 100644
index 00000000..0a508acc
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addDiyDom.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addDiyDom</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于在节点上固定显示用户自定义控件</p>
+ <p class="highlight_red">1. 大数æ®é‡çš„节点加载请注æ„:在 addDiyDom 中针对æ¯ä¸ªèŠ‚点 查找 DOM 对象并且添加新 DOM 控件,肯定会影å“åˆå§‹åŒ–性能;如果ä¸æ˜¯å¿…须使用,建议ä¸ä½¿ç”¨æ­¤åŠŸèƒ½</p>
+ <p class="highlight_red">2. 属于高级应用,使用时请确ä¿å¯¹ zTree 比较了解。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦æ˜¾ç¤ºè‡ªå®šä¹‰æŽ§ä»¶çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置节点åŽé¢æ˜¾ç¤ºä¸€ä¸ªæŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addDiyDom: addDiyDom
+ }
+};
+function addDiyDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt; &lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addHoverDom.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addHoverDom.html
new file mode 100644
index 00000000..f073e79c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.addHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addHoverDom</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于当鼠标移动到节点上时,显示用户自定义控件,显示éšè—状æ€åŒ zTree 内部的编辑ã€åˆ é™¤æŒ‰é’®</p>
+ <p class="highlight_red">请务必与 <span class="highlight_red">setting.view.removeHoverDom</span> åŒæ—¶ä½¿ç”¨ï¼›å±žäºŽé«˜çº§åº”用,使用时请确ä¿å¯¹ zTree 比较了解。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦æ˜¾ç¤ºè‡ªå®šä¹‰æŽ§ä»¶çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置鼠标移到节点上,在åŽé¢æ˜¾ç¤ºä¸€ä¸ªæŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html
new file mode 100644
index 00000000..4890f787
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>autoCancelSelected</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>点击节点时,按下 Ctrl 或 Cmd 键是å¦å…许å–消选择æ“作。</p>
+ <p class="highlight_red">如果ä¸éœ€è¦æ­¤åŠŸèƒ½ï¼Œè¯·è®¾ç½®ä¸º false。</p>
+ <p>默认值: true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 æ”¯æŒ / ä¸æ”¯æŒ é…åˆ Ctrl 或 Cmd 键进行å–消节点选择的æ“作</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ç¦æ­¢é…åˆ Ctrl 或 Cmd 键进行å–消节点选择的æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ autoCancelSelected: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html
new file mode 100644
index 00000000..5f3db964
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>dblClickExpand</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>åŒå‡»èŠ‚点时,是å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点的标识</p>
+ <p>默认值: true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示åŒå‡»èŠ‚点 åˆ‡æ¢ / ä¸åˆ‡æ¢ 展开状æ€</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦åŒå‡»åˆ‡æ¢å±•å¼€çŠ¶æ€çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. å–消默认åŒå‡»å±•å¼€çˆ¶èŠ‚点的功能</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ dblClickExpand: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置 zTree ä»…ä»… level=0 的父节点å–消åŒå‡»å±•å¼€çš„功能</h4>
+ <pre xmlns=""><code>function dblClickExpand(treeId, treeNode) {
+ return treeNode.level > 0;
+};
+var setting = {
+ view: {
+ dblClickExpand: dblClickExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.expandSpeed.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.expandSpeed.html
new file mode 100644
index 00000000..3b799c32
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.expandSpeed.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.view.</span>expandSpeed</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点展开ã€æŠ˜å æ—¶çš„åŠ¨ç”»é€Ÿåº¦ï¼Œè®¾ç½®æ–¹æ³•åŒ JQuery 动画效果中 speed å‚数。</p>
+ <p class="highlight_red">IE6 下会自动关闭动画效果,以ä¿è¯ zTree çš„æ“作速度</p>
+ <p>默认值:"fast"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>三ç§é¢„定速度之一的字符串("slow", "normal", or "fast")</p>
+ <p class="highlight_red">设置为 "" 时,ä¸æ˜¾ç¤ºåŠ¨ç”»æ•ˆæžœ</p>
+ </div>
+ <h3>Number æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>表示动画时长的毫秒数值 (如:1000)</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置为慢速显示动画效果</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ expandSpeed: "slow"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.fontCss.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.fontCss.html
new file mode 100644
index 00000000..54efb1bb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.fontCss.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON / Function(treeId, treeNode)</span><span class="path">setting.view.</span>fontCss</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>个性化文字样å¼ï¼Œåªé’ˆå¯¹ zTree 在节点上显示的&lt;A&gt;对象。</p>
+ <p>默认值:{}</p>
+ </div>
+ </div>
+ <h3>JSON æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>JSON æ ¼å¼ä¸º JQuery css方法中的 JSON 对象格å¼ï¼Œä¾‹å¦‚:<span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®è‡ªå®šä¹‰æ ·å¼çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>è¿”å›žå€¼åŒ JSON æ ¼å¼çš„æ•°æ®ï¼Œä¾‹å¦‚:<span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ä¸ä¿®æ”¹CSS,设置全部节点 name 显示为红色</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ fontCss : {color:"red"}
+ }
+};</code></pre>
+ <h4>2. 设置 level=0 的节点 name 显示为红色</h4>
+ <pre xmlns=""><code>function setFontCss(treeId, treeNode) {
+ return treeNode.level == 0 ? {color:"red"} : {};
+};
+var setting = {
+ view: {
+ fontCss: setFontCss
+ }
+};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html
new file mode 100644
index 00000000..a1d916c5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>nameIsHTML</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 name 属性是å¦æ”¯æŒ HTML 脚本</p>
+ <p class="highlight_red">如果å…许 HTML 脚本,请根æ®è‡ªå·±çš„需求åšæ ¡éªŒï¼Œé¿å…出现 js 注入等安全问题。</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 æ”¯æŒ / ä¸æ”¯æŒ HTML 脚本</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 name å±žæ€§æ”¯æŒ HTML 脚本</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ nameIsHTML: true
+ }
+};
+var node = {"name":"&lt;font color='red'&gt;test&lt;/font&gt;"};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html
new file mode 100644
index 00000000..bb1a9aa2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>removeHoverDom</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于当鼠标移出节点时,éšè—用户自定义控件,显示éšè—状æ€åŒ zTree 内部的编辑ã€åˆ é™¤æŒ‰é’®</p>
+ <p class="highlight_red">请务必与 <span class="highlight_red">addHoverDom</span> åŒæ—¶ä½¿ç”¨ï¼›å±žäºŽé«˜çº§åº”用,使用时请确ä¿å¯¹ zTree 比较了解。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦éšè—自定义控件的节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置鼠标移到节点上,在åŽé¢æ˜¾ç¤ºä¸€ä¸ªæŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.selectedMulti.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.selectedMulti.html
new file mode 100644
index 00000000..2cc65a2e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.selectedMulti.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>selectedMulti</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置是å¦å…许åŒæ—¶é€‰ä¸­å¤šä¸ªèŠ‚点。</p>
+ <p>默认值: true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 æ”¯æŒ / ä¸æ”¯æŒ åŒæ—¶é€‰ä¸­å¤šä¸ªèŠ‚点</p>
+ <p class="highlight_red">1ã€è®¾ç½®ä¸º true时,按下 Ctrl 或 Cmd é”®å¯ä»¥é€‰ä¸­å¤šä¸ªèŠ‚点</p>
+ <p class="highlight_red">2ã€è®¾ç½®ä¸º true / false 都ä¸å½±å“按下 Ctrl 或 Cmd é”®å¯ä»¥è®©å·²é€‰ä¸­çš„节点å–消选中状æ€ï¼ˆ å–消选中状æ€å¯ä»¥å‚考 setting.view.autoCancelSelected )</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ç¦æ­¢å¤šç‚¹åŒæ—¶é€‰ä¸­çš„功能</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ selectedMulti: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showIcon.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showIcon.html
new file mode 100644
index 00000000..ebe423ca
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showIcon.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showIcon</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦æ˜¾ç¤ºèŠ‚点的图标。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— 图标</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºå›¾æ ‡çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置 zTree ä¸æ˜¾ç¤ºå›¾æ ‡</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showIcon: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置 zTree ä»…ä»… level=2 的节点ä¸æ˜¾ç¤ºå›¾æ ‡</h4>
+ <pre xmlns=""><code>function showIconForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showIcon: showIconForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showLine.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showLine.html
new file mode 100644
index 00000000..02ab5ebb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showLine.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>showLine</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦æ˜¾ç¤ºèŠ‚点之间的连线。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / ä¸æ˜¾ç¤º 连线</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree ä¸æ˜¾ç¤ºèŠ‚点之间的连线</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showLine: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showTitle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showTitle.html
new file mode 100644
index 00000000..5bcb8600
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.showTitle.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showTitle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦æ˜¾ç¤ºèŠ‚点的 title æ示信æ¯(å³èŠ‚点 DOM çš„ title 属性)。</p>
+ <p class="highlight_red">请务必与 <span class="highlight_red">setting.data.key.title</span> åŒæ—¶ä½¿ç”¨ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— æ示信æ¯</p>
+ <p class="highlight_red">如果 setting.view.showTitle = true & setting.data.key.title = '',zTree 会自动使用 setting.data.key.name 指定的节点åç§°å½“åš title</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºæ示信æ¯çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置 zTree ä¸æ˜¾ç¤ºæ示信æ¯</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showTitle: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置 zTree ä»…ä»… level=2 的节点ä¸æ˜¾ç¤ºæ示信æ¯</h4>
+ <pre xmlns=""><code>function showTitleForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showTitle: showTitleForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html
new file mode 100644
index 00000000..c22a8c00
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>txtSelectedEnable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦å…许å¯ä»¥é€‰æ‹© zTree DOM 内的文本。</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 选择 zTree Dom 内的文本</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置 zTree å…许选择文本</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ txtSelectedEnable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Child_State.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Child_State.html
new file mode 100644
index 00000000..fa378994
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Child_State.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>check_Child_State</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于设置节点的å­èŠ‚点的 checkBox / radio çš„åŠé€‰çŠ¶æ€ã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">v3.x 针对节点数æ®å¯¹è±¡æä¾› treeNode.getCheckStatus() 方法获å–标准的åŠé€‰çŠ¶æ€</p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Number æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>规则如下:</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>勾选状æ€è¯´æ˜Ž</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>ä¸å­˜åœ¨å­èŠ‚点 或 å­èŠ‚点全部设置为 nocheck = true</td></tr>
+ <tr><td>0</td><td>æ—  å­èŠ‚点被勾选</td></tr>
+ <tr><td>1</td><td>部分 å­èŠ‚点被勾选</td></tr>
+ <tr><td>2</td><td>全部 å­èŠ‚点被勾选</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>勾选状æ€è¯´æ˜Ž</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>ä¸å­˜åœ¨å­èŠ‚点 或 å­èŠ‚点全部设置为 nocheck = true</td></tr>
+ <tr><td>0</td><td>æ—  å­èŠ‚点被勾选</td></tr>
+ <tr><td>2</td><td>有 å­èŠ‚点被勾选</td></tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Focus.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Focus.html
new file mode 100644
index 00000000..785aec9f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.check_Focus.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>check_Focus</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于设置节点的 checkBox / radio çš„ focus 状æ€ã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示当å‰é¼ æ ‡ç§»åŠ¨åˆ°è¾“入框内</p>
+ <p>false 表示当å‰é¼ æ ‡ç§»åŠ¨åˆ°è¾“入框外</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checked.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checked.html
new file mode 100644
index 00000000..049d6ba4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checked.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checked</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点的 checkBox / radio çš„ 勾选状æ€ã€‚<span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false 时有效]</span></p>
+ <p class="highlight_red">1ã€å¦‚æžœä¸ä½¿ç”¨ checked 属性设置勾选状æ€ï¼Œè¯·ä¿®æ”¹ setting.data.key.checked </p>
+ <p class="highlight_red">2ã€å»ºç«‹ treeNode æ•°æ®æ—¶è®¾ç½® treeNode.checked = true å¯ä»¥è®©èŠ‚点的输入框默认为勾选状æ€</p>
+ <p class="highlight_red">3ã€ä¿®æ”¹èŠ‚点勾选状æ€ï¼Œå¯ä»¥ä½¿ç”¨ treeObj.checkNode / checkAllNodes / updateNode 方法,具体使用哪ç§è¯·æ ¹æ®è‡ªå·±çš„需求而定</p>
+ <p class="highlight_red">4ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点的输入框被勾选</p>
+ <p>false 表示节点的输入框未勾选</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. åˆå§‹åŒ–çš„æ•°æ®è®¾ç½® 默认为勾选状æ€</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", checked:true },
+{ "id":2, "name":"test2", checked:true }
+]</code></pre>
+ <h4>2. 获å–第一个根节点的勾选状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checked = treeObj.getNodes()[0].checked;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checkedOld.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checkedOld.html
new file mode 100644
index 00000000..cab717e7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.checkedOld.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checkedOld</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点的 checkBox / radio 在åˆå§‹åŒ–时的 勾选状æ€ã€‚<span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false 时有效]</span></p>
+ <p class="highlight_red">1ã€zTree åˆå§‹åŒ–节点数æ®æ—¶ä¼šå¯¹æ­¤å±žæ€§è¿›è¡Œèµ‹å€¼ï¼Œå› æ­¤è¯·å‹¿å¯¹æ­¤å±žæ€§åˆå§‹åŒ–</p>
+ <p class="highlight_red">2ã€å¦‚需é…åˆ zTreeObj.getChangeCheckedNodes 方法实现特殊功能,å¯ä»¥æ ¹æ®éœ€æ±‚在使用中自行修改 checkedOld æ•°æ®</p>
+ <p>默认值:checkedçš„åˆå§‹åŒ–值</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点åˆå§‹åŒ–æ—¶ 输入框被勾选</p>
+ <p>false 表示节点åˆå§‹åŒ–æ—¶ 输入框未勾选</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–第一个根节点的åˆå§‹å‹¾é€‰çŠ¶æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checkedOld = treeObj.getNodes()[0].checkedOld;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.children.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.children.html
new file mode 100644
index 00000000..4bab8351
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.children.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(JSON)</span><span class="path">treeNode.</span>children</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点的å­èŠ‚点数æ®é›†åˆã€‚</p>
+ <p class="highlight_red">1ã€å¦‚æžœä¸ä½¿ç”¨ children 属性ä¿å­˜å­èŠ‚点数æ®ï¼Œè¯·ä¿®æ”¹ setting.data.key.children </p>
+ <p class="highlight_red">2ã€å¼‚步加载时,对于设置了 isParent = true 的节点,在展开时将进行异步加载</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>Array(JSON) æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>标准的 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. åˆå§‹åŒ–的标准嵌套格å¼çš„ JSON æ•°æ®å¯¹è±¡</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1",
+ children: [
+ { "id":3, "name":"test3"},
+ { "id":4, "name":"test4"},
+ { "id":5, "name":"test5"}
+ ]
+},
+{ "id":2, "name":"test2" }
+]</code></pre>
+ <h4>2. 获å–第一个根节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes()[0].children;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.chkDisabled.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.chkDisabled.html
new file mode 100644
index 00000000..e6bb0322
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.chkDisabled.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>chkDisabled</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1ã€è®¾ç½®èŠ‚点的 checkbox / radio 是å¦ç¦ç”¨ <span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">2ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p class="highlight_red">3ã€è¯·å‹¿å¯¹å·²åŠ è½½çš„节点修改此属性,ç¦æ­¢ 或 å–消ç¦æ­¢ 请使用 setChkDisabled() 方法</p>
+ <p class="highlight_red">4ã€åˆå§‹åŒ–时,如果需è¦å­å­™èŠ‚点继承父节点的 chkDisabled 属性,请设置 setting.check.chkDisabledInherit 属性</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p class="highlight_red">true 表示此节点的 checkbox / radio 被ç¦ç”¨ã€‚</p>
+ <p class="highlight_red">false 表示此节点的 checkbox / radio å¯ä»¥ä½¿ç”¨ã€‚</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. ç¦ç”¨èŠ‚点 checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "checked":true, "chkDisabled":true},
+ { "id":2, "name":"test2", "chkDisabled":true},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.click.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.click.html
new file mode 100644
index 00000000..833c6784
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.click.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>click</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>最简å•çš„ click 事件æ“作。相当于 onclick="..." 的内容。 如果æ“作较å¤æ‚,请使用 onClick 事件回调函数。</p>
+ <p class="highlight_red">由于 IE 对于 onclick å’Œ click事件共存时的处ç†ä¸Žå…¶ä»–æµè§ˆå™¨ä¸åŒï¼Œæ‰€ä»¥è¯·ä¸è¦åˆ©ç”¨æ­¤å‚数控制是å¦å…许跳转的æ“作(例如:treeNode.click = "return false;")。如有类似需求,请ä¸è¦ä½¿ç”¨ url 属性设置网å€ï¼ŒåŒæ—¶åˆ©ç”¨ onClick 回调函数控制跳转。</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>标准 javascript 语法, 例如:alert("test"); 等</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置æŸèŠ‚点点击时,弹出信æ¯æ¡†</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn", "click":"alert('test');"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.diy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.diy.html
new file mode 100644
index 00000000..b2fb0d9e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.diy.html
@@ -0,0 +1,15 @@
+<div class="apiDetail">
+<div>
+ <h2><span>?</span><span class="path">treeNode.</span>* DIY *</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于ä¿å­˜èŠ‚点的其他自定义数æ®ä¿¡æ¯ï¼Œä¸è¦ä¸Ž zTree 使用的属性相åŒå³å¯ï¼Œç”¨æˆ·å¯éšæ„设定。</p>
+ </div>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的备用英文å称</h4>
+ <pre xmlns=""><code>var node = { "id":1, "name":"test1", "ename":"test eName"};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.editNameFlag.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.editNameFlag.html
new file mode 100644
index 00000000..51162b8b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.editNameFlag.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>editNameFlag</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于记录节点是å¦å¤„于编辑å称状æ€ã€‚<span class="highlight_red">[setting.edit.enable = true 时有效]</span></p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点处于编辑å称状æ€</p>
+ <p>false 表示节点未处于编辑å称状æ€</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html
new file mode 100644
index 00000000..fc20eac4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html
@@ -0,0 +1,63 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getCheckStatus</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–节点 checkbox / radio åŠå‹¾é€‰çŠ¶æ€ã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <pre xmlns=""><code>{
+ checked: true, //ç­‰åŒäºŽ treeNode.checked
+ half: true //规则è§ä¸‹è¡¨
+}</code></pre>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>false</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–第一个根节点的åŠé€‰çŠ¶æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var halfCheck = treeObj.getNodes()[0].getCheckStatus();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getNextNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getNextNode.html
new file mode 100644
index 00000000..7a0fa5c0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getNextNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getNextNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–与 treeNode 节点相邻的åŽä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <p>与 treeNode 节点相邻的åŽä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">如果 treeNode 是最åŽä¸€ä¸ªèŠ‚点,返回 null 。</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点的下一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getNextNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getParentNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getParentNode.html
new file mode 100644
index 00000000..31309a62
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getParentNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getParentNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>èŽ·å– treeNode 节点的父节点。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <p> treeNode 节点的父节点 JSON æ•°æ®å¯¹è±¡ã€‚</p>
+ <p class="highlight_red">如果 treeNode 是根节点,返回 null 。</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点的父节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getParentNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getPreNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getPreNode.html
new file mode 100644
index 00000000..9d841841
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.getPreNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getPreNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–与 treeNode 节点相邻的å‰ä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <p>与 treeNode 节点相邻的å‰ä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">如果 treeNode 是第一个节点,返回 null 。</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点的å‰ä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getPreNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.halfCheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.halfCheck.html
new file mode 100644
index 00000000..23ac744c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.halfCheck.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>halfCheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>强制节点的 checkBox / radio çš„ åŠå‹¾é€‰çŠ¶æ€ã€‚<span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false 时有效]</span></p>
+ <p class="highlight_red">1ã€å¼ºåˆ¶ä¸ºåŠå‹¾é€‰çŠ¶æ€åŽï¼Œä¸å†è¿›è¡Œè‡ªåŠ¨è®¡ç®—åŠå‹¾é€‰çŠ¶æ€</p>
+ <p class="highlight_red">2ã€è®¾ç½® treeNode.halfCheck = false 或 null æ‰èƒ½æ¢å¤è‡ªåŠ¨è®¡ç®—åŠå‹¾é€‰çŠ¶æ€</p>
+ <p class="highlight_red">3ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点的输入框 强行设置为åŠå‹¾é€‰</p>
+ <p>false 表示节点的输入框 æ ¹æ® zTree 的规则自动计算åŠå‹¾é€‰çŠ¶æ€</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. åˆå§‹åŒ–çš„æ•°æ®è®¾ç½® 默认为åŠå‹¾é€‰çŠ¶æ€</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", isParent:true, checked:true, halfCheck:true },
+{ "id":2, "name":"test2", isParent:true, checked:false, halfCheck:true },
+{ "id":3, "name":"test3", isParent:true, checked:true },
+{ "id":4, "name":"test4", isParent:true, checked:false }
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.icon.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.icon.html
new file mode 100644
index 00000000..69c5db16
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.icon.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>icon</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点自定义图标的 URL 路径。</p>
+ <p class="highlight_red">1ã€çˆ¶èŠ‚点如果åªè®¾ç½® icon ,会导致展开ã€æŠ˜å æ—¶éƒ½ä½¿ç”¨åŒä¸€ä¸ªå›¾æ ‡</p>
+ <p class="highlight_red">2ã€çˆ¶èŠ‚点展开ã€æŠ˜å ä½¿ç”¨ä¸åŒçš„个性化图标需è¦åŒæ—¶è®¾ç½® treeNode.iconOpen / treeNode.iconClose 两个属性</p>
+ <p class="highlight_red">3ã€å¦‚果想利用 className 设置个性化图标,需è¦è®¾ç½® treeNode.iconSkin 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>图标图片的 url å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„</p>
+ <p class="highlight_red">设置相对路径请注æ„页é¢ä¸Žå›¾ç‰‡ä¹‹é—´çš„关系,确ä¿å›¾ç‰‡èƒ½å¤Ÿæ­£å¸¸åŠ è½½</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", icon:"/img/parent.gif"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconClose.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconClose.html
new file mode 100644
index 00000000..f51da9c9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconClose.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconClose</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>父节点自定义折å æ—¶å›¾æ ‡çš„ URL 路径。</p>
+ <p class="highlight_red">1ã€æ­¤å±žæ€§åªé’ˆå¯¹çˆ¶èŠ‚点有效</p>
+ <p class="highlight_red">2ã€æ­¤å±žæ€§å¿…须与 iconOpen åŒæ—¶ä½¿ç”¨</p>
+ <p class="highlight_red">3ã€å¦‚果想利用 className 设置个性化图标,需è¦è®¾ç½® treeNode.iconSkin 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>图标图片的 url å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„</p>
+ <p class="highlight_red">设置相对路径请注æ„页é¢ä¸Žå›¾ç‰‡ä¹‹é—´çš„关系,确ä¿å›¾ç‰‡èƒ½å¤Ÿæ­£å¸¸åŠ è½½</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", icon:"/img/parent.gif"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconOpen.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconOpen.html
new file mode 100644
index 00000000..29c9baae
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconOpen.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconOpen</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>父节点自定义展开时图标的 URL 路径。</p>
+ <p class="highlight_red">1ã€æ­¤å±žæ€§åªé’ˆå¯¹çˆ¶èŠ‚点有效</p>
+ <p class="highlight_red">2ã€æ­¤å±žæ€§å¿…须与 iconClose åŒæ—¶ä½¿ç”¨</p>
+ <p class="highlight_red">3ã€å¦‚果想利用 className 设置个性化图标,需è¦è®¾ç½® treeNode.iconSkin 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>图标图片的 url å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„</p>
+ <p class="highlight_red">设置相对路径请注æ„页é¢ä¸Žå›¾ç‰‡ä¹‹é—´çš„关系,确ä¿å›¾ç‰‡èƒ½å¤Ÿæ­£å¸¸åŠ è½½</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", icon:"/img/parent.gif"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconSkin.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconSkin.html
new file mode 100644
index 00000000..d5d97269
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.iconSkin.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconSkin</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点自定义图标的 className</p>
+ <p class="highlight_red">1ã€éœ€è¦ä¿®æ”¹ css,增加相应 className 的设置</p>
+ <p class="highlight_red">2ã€css æ–¹å¼ç®€å•ã€æ–¹ä¾¿ï¼Œå¹¶ä¸”åŒæ—¶æ”¯æŒçˆ¶èŠ‚点展开ã€æŠ˜å çŠ¶æ€åˆ‡æ¢å›¾ç‰‡</p>
+ <p class="highlight_red">3ã€css 建议采用图片分割渲染的方å¼ä»¥å‡å°‘åå¤åŠ è½½å›¾ç‰‡ï¼Œå¹¶ä¸”é¿å…图片闪动</p>
+ <p class="highlight_red">4ã€zTree v3.x çš„ iconSkin åŒæ ·æ”¯æŒ IE6</p>
+ <p class="highlight_red">5ã€å¦‚果想直接使用 图片的Url路径 设置节点的个性化图标,需è¦è®¾ç½® treeNode.icon / treeNode.iconOpen / treeNode.iconClose 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>设置个性图标的 className</p>
+ </div>
+ <h3>css & treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>css 内容:
+.ztree li span.button.diy01_ico_open, .ztree li span.button.diy01_ico_close{...}
+
+.ztree li span.button.diy02_ico_open{...}
+.ztree li span.button.diy02_ico_close{...}
+
+.ztree li span.button.diy03_ico_docu{...}
+
+js中节点数æ®ï¼š
+var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", iconSkin:"diy01"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconSkin:"diy02"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", iconSkin:"diy03"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isAjaxing.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isAjaxing.html
new file mode 100644
index 00000000..330c1202
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isAjaxing.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isAjaxing</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦æ­£åœ¨è¿›è¡Œå¼‚步加载。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示节点正在进行异步加载</p>
+ <p> false 表示节点没有进行异步加载</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦èŠ‚点正在进行异步加载</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isAjaxing = sNodes[0].isAjaxing;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isFirstNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isFirstNode.html
new file mode 100644
index 00000000..83b80bd9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isFirstNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isFirstNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦ä¸ºåŒçº§èŠ‚点中的第一个节点。</p>
+ <p class="highlight_red">使用 exhide 扩展åŽï¼Œåªé’ˆå¯¹æ˜¾ç¤ºçš„节点设置此属性</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示是åŒçº§èŠ‚点中的第一个节点</p>
+ <p> false 表示ä¸æ˜¯åŒçº§èŠ‚点中的第一个节点</p>
+ <p class="highlight_red">节点被éšè—åŽï¼ŒisFirstNode = false</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦æ˜¯åŒçº§èŠ‚点中的第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isFirstNode = sNodes[0].isFirstNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHidden.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHidden.html
new file mode 100644
index 00000000..5fb388e2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHidden.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHidden</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>判断 treeNode 节点是å¦è¢«éšè—。</p>
+ <p class="highlight_red">1ã€åˆå§‹åŒ– zTree 时,如果节点设置 isHidden = true,会被自动éšè—</p>
+ <p class="highlight_red">2ã€è¯·å‹¿å¯¹å·²åŠ è½½çš„节点修改此属性,éšè— / 显示 请使用 hideNode() / hideNodes() / showNode() / showNodes() 方法</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示被éšè—</p>
+ <p> false 表示被显示</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看第一个根节点是å¦è¢«éšè—</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getNodes();
+if (sNodes.length > 0) {
+ var isHidden = sNodes[0].isHidden;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHover.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHover.html
new file mode 100644
index 00000000..dcef6eba
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isHover.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHover</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录节点 çš„ hover 状æ€ï¼Œä¸»è¦ç”¨äºŽ setting.view.addHoverDom / removeHoverDom 。</p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点处于 hover 状æ€</p>
+ <p>false 表示节点未处于 hover 状æ€</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isLastNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isLastNode.html
new file mode 100644
index 00000000..5d5ac822
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isLastNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isLastNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦ä¸ºåŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">使用 exhide 扩展åŽï¼Œåªé’ˆå¯¹æ˜¾ç¤ºçš„节点设置此属性</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示是åŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点</p>
+ <p> false 表示ä¸æ˜¯åŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点</p>
+ <p class="highlight_red">节点被éšè—åŽï¼ŒisLastNode = false</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦æ˜¯åŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isLastNode = sNodes[0].isLastNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isParent.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isParent.html
new file mode 100644
index 00000000..bab887e0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.isParent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isParent</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦ä¸ºçˆ¶èŠ‚点。</p>
+ <p class="highlight_red">1ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œæ ¹æ® treeNode.children 属性判断,有å­èŠ‚点则设置为 true,å¦åˆ™ä¸º false</p>
+ <p class="highlight_red">2ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œå¦‚果设定 treeNode.isParent = true,å³ä½¿æ— å­èŠ‚点数æ®ï¼Œä¹Ÿä¼šè®¾ç½®ä¸ºçˆ¶èŠ‚点</p>
+ <p class="highlight_red">3ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示是父节点</p>
+ <p> false 表示ä¸æ˜¯çˆ¶èŠ‚点</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦æ˜¯çˆ¶èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isParent = sNodes[0].isParent;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.level.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.level.html
new file mode 100644
index 00000000..aff3254c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.level.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>level</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录节点的层级</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Number æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p class="highlight_red">根节点 level = 0,ä¾æ¬¡é€’增</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的级数</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var level = sNodes[0].level;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.name.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.name.html
new file mode 100644
index 00000000..918f2b49
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.name.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>name</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点å称。</p>
+ <p class="highlight_red">1ã€å¦‚æžœä¸ä½¿ç”¨ name 属性ä¿å­˜èŠ‚点å称,请修改 setting.data.key.name </p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>节点显示的å称字符串,标准 String å³å¯ï¼Œæ‰€æœ‰ç‰¹æ®Šå­—符都会被自动转义</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的å称为 test1ã€test2ã€test3</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1"},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.nocheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.nocheck.html
new file mode 100644
index 00000000..afaa62fb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.nocheck.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>nocheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1ã€è®¾ç½®èŠ‚点是å¦éšè— checkbox / radio <span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">2ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p class="highlight_red">true 表示此节点ä¸æ˜¾ç¤º checkbox / radio,ä¸å½±å“勾选的关è”关系,ä¸å½±å“父节点的åŠé€‰çŠ¶æ€ã€‚</p>
+ <p class="highlight_red">false 表示节点具有正常的勾选功能</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. ä¸æ˜¾ç¤ºæŸä¸ªèŠ‚点的 checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "nocheck":true},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.open.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.open.html
new file mode 100644
index 00000000..1eb9aec4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.open.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>open</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点的 展开 / æŠ˜å  çŠ¶æ€ã€‚</p>
+ <p class="highlight_red">1ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œå¦‚果设定 treeNode.open = true,则会直接展开此节点</p>
+ <p class="highlight_red">2ã€å¶å­èŠ‚点 treeNode.open = false</p>
+ <p class="highlight_red">3ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p class="highlight_red">4ã€éžå¼‚步加载模å¼ä¸‹ï¼Œæ— å­èŠ‚点的父节点设置 open=true åŽï¼Œå¯æ˜¾ç¤ºä¸ºå±•å¼€çŠ¶æ€ï¼Œä½†å¼‚步加载模å¼ä¸‹ä¸ä¼šç”Ÿæ•ˆã€‚(v3.5.15+) </p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示节点为 展开 状æ€</p>
+ <p> false 表示节点为 æŠ˜å  çŠ¶æ€</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的 展开 / æŠ˜å  çŠ¶æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isOpen = sNodes[0].open;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.parentTId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.parentTId.html
new file mode 100644
index 00000000..d228a23a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.parentTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>parentTId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>treeNode 节点的父节点唯一标识 tId。</p>
+ <p class="highlight_red">1ã€v3.x 用 parentTId 替æ¢äº†åŽŸå…ˆçš„ parentNode 属性,åŒæ—¶å¢žåŠ äº† getParentNode 方法,以é¿å…原先 parentNode 造æˆçš„ clone 死循环</p>
+ <p class="highlight_red">2ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>zTree 内部生æˆçš„节点唯一标识,请å‚考 treeNode.tId 的说明</p>
+ <p class="highlight_red">如果 treeNode 是根节点,则 parentTId = null</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的父节点 tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var parentTId = sNodes[0].parentTId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.tId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.tId.html
new file mode 100644
index 00000000..c32285c5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.tId.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>tId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>treeNode 节点的唯一标识 tId。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>生æˆè§„则:setting.treeId + "_" + 内部计数</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的 tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var tId = sNodes[0].tId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.target.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.target.html
new file mode 100644
index 00000000..f7c1b6ba
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.target.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>target</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置点击节点åŽåœ¨ä½•å¤„打开 url。<span class="highlight_red">[treeNode.url 存在时有效]</span></p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>åŒè¶…链接 target 属性: "_blank", "_self" 或 其他指定窗å£å称 </p>
+ <p>çœç•¥æ­¤å±žæ€§ï¼Œåˆ™é»˜è®¤ä¸º "_blank"</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置点击æŸèŠ‚点时,弹出新页é¢</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "url":"http://myTest.com", "target":"_blank"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.url.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.url.html
new file mode 100644
index 00000000..0b2e0076
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.url.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>url</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点链接的目标 URL</p>
+ <p class="highlight_red">1ã€ç¼–è¾‘æ¨¡å¼ (setting.edit.enable = true) 下此属性功能失效,如果必须使用类似功能,请利用 onClick 事件回调函数自行控制。</p>
+ <p class="highlight_red">2ã€å¦‚果需è¦åœ¨ onClick 事件回调函数中进行跳转控制,那么请将 URL 地å€ä¿å­˜åœ¨å…¶ä»–自定义的属性内,请勿使用 url</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>åŒè¶…链接 href 属性</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置æŸèŠ‚点点击时,跳转到 g.cn</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.zAsync.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.zAsync.html
new file mode 100644
index 00000000..00e48f39
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/treeNode.zAsync.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>zAsync</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦å·²ç»è¿›è¡Œè¿‡å¼‚步加载,é¿å…父节点åå¤å¼‚步加载数æ®ã€‚</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ <p class="highlight_red">默认值:false (无å­èŠ‚点的父节点); true (有å­èŠ‚点的父节点 & å¶å­èŠ‚点)</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示父节点展开时ä¸éœ€è¦è‡ªåŠ¨å¼‚步加载</p>
+ <p> false 表示父节点展开时需è¦è‡ªåŠ¨å¼‚步加载</p>
+ <p class="highlight_red"> æ­¤å‚æ•°ä¸ä¼šå¯¹ reAsyncChildNodes 方法造æˆä»»ä½•å½±å“</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦èŠ‚点是å¦éœ€è¦è‡ªåŠ¨å¼‚步加载</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var zAsync = sNodes[0].zAsync;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.addNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.addNodes.html
new file mode 100644
index 00000000..eac2152d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.addNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, newNodes, isSilent)</span><span class="path">zTreeObj.</span>addNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>添加节点。</p>
+ <p class="highlight_red">v3.x 为了é¿å…原先åå¤åˆå§‹åŒ–造æˆçš„æ•°æ®é‡å¤é—®é¢˜ï¼Œåœ¨ åˆå§‹åŒ– å’Œ 添加节点 时内部进行 clone æ“作。如果需è¦èŽ·å–æ•°æ®åœ¨ zTree 内的对象,请获å–此方法的返回值。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>指定的父节点,如果增加根节点,请设置 parentNode 为 null å³å¯ã€‚</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>newNodes</b><span>JSON / Array(JSON)</span></h4>
+ <p>需è¦å¢žåŠ çš„èŠ‚ç‚¹æ•°æ® JSON 对象集åˆï¼Œæ•°æ®åªéœ€è¦æ»¡è¶³ zTree 的节点数æ®å¿…需的属性å³å¯ï¼Œè¯¦ç»†è¯·å‚考“treeNode 节点数æ®è¯¦è§£â€</p>
+ <p class="highlight_red">1ã€v3.x 支æŒå•ç‹¬æ·»åŠ ä¸€ä¸ªèŠ‚点,å³å¦‚æžœåªæ–°å¢žä¸€ä¸ªèŠ‚点,ä¸ç”¨å¿…须包在数组中</p>
+ <p class="highlight_red">2ã€ä½¿ç”¨ç®€å•æ•°æ®æ¨¡å¼ï¼Œè¯·å‚考 setting.data.simpleData 内的属性说明</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定增加节点åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>返回值是 zTree 最终添加的节点数æ®é›†åˆ</p>
+ <p class="highlight_red">如果 newNodes 是å•ä¸ªèŠ‚ç‚¹æ•°æ® JSON,返回值也是将其包在 Array 内</p>
+ <p class="highlight_red">请务必记ä½ï¼šè¿”回值中的数æ®å¯¹è±¡ 是 newNodes 被 clone åŽçš„,所以ç»å¯¹ä¸ç›¸ç­‰ï¼</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 对于 id = "tree" 的 zTree 增加 1 个根节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNode = {name:"newNode1"};
+newNode = treeObj.addNodes(null, newNode);
+</code></pre>
+ <h4>2. 对于 id = "tree" 的 zTree 增加 3 个根节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNodes = [{name:"newNode1"}, {name:"newNode2"}, {name:"newNode3"}];
+newNodes = treeObj.addNodes(null, newNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html
new file mode 100644
index 00000000..9df098f0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(newName)</span><span class="path">zTreeObj.</span>cancelEditName</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å–消节点的编辑å称状æ€ï¼Œå¯ä»¥æ¢å¤åŽŸå称,也å¯ä»¥å¼ºè¡Œèµ‹ç»™æ–°çš„å称。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>newName</b><span>String</span></h4>
+ <p>é‡æ–°ç»™å®šçš„æ–°å称。</p>
+ <p class="highlight_red">如果çœç•¥æ­¤å‚数,则æ¢å¤åŽŸå称。</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å–消 zTree 的编辑å称状æ€ï¼Œæ¢å¤è¯¥èŠ‚点原有å称</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName();
+</code></pre>
+ <h4>2. å–消 zTree 的编辑å称状æ€ï¼Œå¹¶ä¸”é‡æ–°è®¾å®šè¯¥èŠ‚点å称</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName("test_new_name");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html
new file mode 100644
index 00000000..26d5706f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>cancelSelectedNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å–消节点的选中状æ€ã€‚</p>
+ <p class="highlight_red">v3.x 支æŒå¤šç‚¹åŒæ—¶é€‰ä¸­ï¼Œå› æ­¤å–消选中状æ€å¯ä»¥å…¨éƒ¨å–消,也å¯ä»¥å•ç‹¬å–消æŸä¸ªèŠ‚点的选中状æ€ã€‚</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦å–消选中状æ€çš„节点。</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果çœç•¥æ­¤å‚数,则将å–消全部被选中节点的选中状æ€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å–消当å‰æ‰€æœ‰è¢«é€‰ä¸­èŠ‚点的选中状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelSelectedNode();
+</code></pre>
+ <h4>2. å–消当å‰ç¬¬ä¸€ä¸ªè¢«é€‰ä¸­èŠ‚点的选中状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNode();
+if (nodes.length>0) {
+ treeObj.cancelSelectedNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html
new file mode 100644
index 00000000..d6eaadf1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>checkAllNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选 或 å–消勾选 全部节点。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时有效]</span></p>
+ <p class="highlight_red">此方法ä¸ä¼šè§¦å‘ beforeCheck / onCheck 事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true 表示勾选全部节点</p>
+ <p>checked = false 表示全部节点å–消勾选</p>
+ <p class="highlight_red">ä¸ä¼šå½±å“ treeNode.nochecked = true 的节点。</p>
+ <p class="highlight_red">ä¸ä¼šå½±å“未加载的节点。</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 勾选全部节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.checkAllNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkNode.html
new file mode 100644
index 00000000..cb8bb7de
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.checkNode.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checked, checkTypeFlag, callbackFlag)</span><span class="path">zTreeObj.</span>checkNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选 或 å–消勾选 å•ä¸ªèŠ‚点。<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">v3.x 中 checkNode() 方法å¯ä»¥è§¦å‘ beforeCheck / onCheck 事件回调函数。便于å‡å°‘冗余代ç </p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦å‹¾é€‰ 或 å–消勾选 的节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true 表示勾选节点</p>
+ <p>checked = false 表示节点å–消勾选</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,则根æ®å¯¹æ­¤èŠ‚点的勾选状æ€è¿›è¡Œ toggle 切æ¢</p>
+ <p class="highlight_red">ä¸å½±å“ treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true 表示按照 setting.check.chkboxType 属性进行父å­èŠ‚点的勾选è”动æ“作</p>
+ <p>checkTypeFlag = false 表示åªä¿®æ”¹æ­¤èŠ‚点勾选状æ€ï¼Œæ— ä»»ä½•å‹¾é€‰è”动æ“作</p>
+ <p class="highlight_red">checkTypeFlag = false 且 treeNode.checked = checked 时,ä¸ä¼šè§¦å‘回调函数,直接返回</p>
+ <p class="highlight_red">ä¸å½±å“父å­èŠ‚点中 treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true è¡¨ç¤ºæ‰§è¡Œæ­¤æ–¹æ³•æ—¶è§¦å‘ beforeCheck & onCheck 事件回调函数</p>
+ <p>callbackFlag = false 表示执行此方法时ä¸è§¦å‘事件回调函数</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 勾选当å‰é€‰ä¸­çš„节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.checkNode(nodes[i], true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.copyNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.copyNode.html
new file mode 100644
index 00000000..f1b624bf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.copyNode.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>copyNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å¤åˆ¶èŠ‚点。</p>
+ <p class="highlight_red">v3.x å¤åˆ¶èŠ‚点时进行 clone æ“作。如果需è¦èŽ·å–æ•°æ®åœ¨ zTree 内的对象,请获å–此方法的返回值。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>è¦å¤åˆ¶åˆ°çš„目标节点 JSON æ•°æ®</p>
+ <p class="highlight_red">如果å¤åˆ¶æˆä¸ºæ ¹èŠ‚点,请设置 targetNode 为 null å³å¯</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«å¤åˆ¶çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>å¤åˆ¶åˆ°ç›®æ ‡èŠ‚点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定å¤åˆ¶èŠ‚点åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>返回值是最终加入到 zTree 内的节点数æ®</p>
+ <p class="highlight_red">请务必记ä½ï¼šè¿”回值中的数æ®å¯¹è±¡ 是 treeNode 被 clone åŽçš„,所以ç»å¯¹ä¸ç›¸ç­‰ï¼</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 将根节点中第二个节点 å¤åˆ¶æˆä¸º 第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. 将根节点中第二个节点 å¤åˆ¶æˆä¸º 第一个节点的å‰ä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "before");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.destroy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.destroy.html
new file mode 100644
index 00000000..d9f6da0d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.destroy.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">zTreeObj.</span>destroy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>从 zTree v3.4 开始æä¾›é”€æ¯ zTree 的方法。</p>
+ <p>1ã€ç”¨æ­¤æ–¹æ³•å¯ä»¥é”€æ¯ zTreeObj 代表的 zTree。</p>
+ <p class="highlight_red">2ã€é”€æ¯å½“å‰é¡µé¢å…¨éƒ¨çš„ zTree,也å¯ä»¥ä½¿ç”¨ $.fn.zTree.destroy() 方法。</p>
+ <p class="highlight_red">3ã€é‡æ–°ä½¿ç”¨å·²ç»è¢«é”€æ¯çš„树,必须è¦ä½¿ç”¨ init 方法进行åˆå§‹åŒ–。</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. é”€æ¯ id 为 "treeDemo" çš„ zTree</h4>
+ <pre xmlns=""><code>var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
+zTreeObj.destroy();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.editName.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.editName.html
new file mode 100644
index 00000000..2d4eaf7b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.editName.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>editName</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置æŸèŠ‚点进入编辑å称状æ€ã€‚</p>
+ <p class="highlight_red">1ã€å¦‚果需è¦ç”¨ js å–消编辑å称状æ€ï¼Œè¯·ä½¿ç”¨ cancelEditName(newName) 方法。</p>
+ <p class="highlight_red">2ã€å¯åˆ©ç”¨æ­¤æ–¹æ³•è®©å½“å‰æ­£ç¼–辑的节点 input 输入框获å–焦点。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定进入编辑å称状æ€çš„节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 设置根节点第一个节点进入编辑å称状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.editName(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandAll.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandAll.html
new file mode 100644
index 00000000..aaa3e464
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandAll.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(expandFlag)</span><span class="path">zTreeObj.</span>expandAll</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>展开 / æŠ˜å  å…¨éƒ¨èŠ‚ç‚¹</p>
+ <p class="highlight_red">此方法ä¸ä¼šè§¦å‘ beforeExpand / onExpand å’Œ beforeCollapse / onCollapse 事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true 表示 展开 全部节点</p>
+ <p>expandFlag = false 表示 æŠ˜å  å…¨éƒ¨èŠ‚ç‚¹</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值表示最终实际æ“作情况</p>
+ <p>true 表示 展开 全部节点</p>
+ <p>false 表示 æŠ˜å  å…¨éƒ¨èŠ‚ç‚¹</p>
+ <p>null 表示 ä¸å­˜åœ¨ä»»ä½•çˆ¶èŠ‚点</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 展开全部节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.expandAll(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandNode.html
new file mode 100644
index 00000000..5d96d3f5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.expandNode.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, expandFlag, sonSign, focus, callbackFlag)</span><span class="path">zTreeObj.</span>expandNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>展开 / æŠ˜å  æŒ‡å®šçš„èŠ‚ç‚¹</p>
+ <p class="highlight_red">v3.x 中执行此方法å¯ä»¥è§¦å‘ beforeExpand / onExpand 或 beforeCollapse / onCollapse 事件回调函数。便于å‡å°‘冗余代ç </p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>éœ€è¦ å±•å¼€ / æŠ˜å  çš„èŠ‚ç‚¹æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true 表示 展开 节点</p>
+ <p>expandFlag = false 表示 æŠ˜å  èŠ‚ç‚¹</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,则根æ®å¯¹æ­¤èŠ‚点的展开状æ€è¿›è¡Œ toggle 切æ¢</p>
+ <h4 class="topLine"><b>sonSign</b><span>Boolean</span></h4>
+ <p>sonSign = true 表示 全部å­å­™èŠ‚点 进行与 expandFlag 相åŒçš„æ“作</p>
+ <p>sonSign = false 表示 åªå½±å“此节点,对于其 å­å­™èŠ‚点无任何影å“</p>
+ <p class="highlight_red">sonSign = false 且 treeNode.open = expandFlag 时,ä¸ä¼šè§¦å‘回调函数,直接返回</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>focus</b><span>Boolean</span></h4>
+ <p>focus = true 表示 展开 / æŠ˜å  æ“作åŽï¼Œé€šè¿‡è®¾ç½®ç„¦ç‚¹ä¿è¯æ­¤ç„¦ç‚¹è¿›å…¥å¯è§†åŒºåŸŸå†…</p>
+ <p>focus = false 表示 展开 / æŠ˜å  æ“作åŽï¼Œä¸è®¾ç½®ä»»ä½•ç„¦ç‚¹</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ true</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true è¡¨ç¤ºæ‰§è¡Œæ­¤æ–¹æ³•æ—¶è§¦å‘ beforeExpand / onExpand 或 beforeCollapse / onCollapse 事件回调函数</p>
+ <p>callbackFlag = false 表示执行此方法时ä¸è§¦å‘事件回调函数</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值表示最终实际æ“作情况</p>
+ <p>true 表示 展开 节点</p>
+ <p>false 表示 æŠ˜å  èŠ‚ç‚¹</p>
+ <p>null 表示 ä¸æ˜¯çˆ¶èŠ‚点</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 展开当å‰é€‰æ‹©çš„第一个节点(包括其全部å­èŠ‚点)</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.expandNode(nodes[0], true, true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html
new file mode 100644
index 00000000..ba865347
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getChangeCheckedNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–输入框勾选状æ€è¢«æ”¹å˜çš„节点集åˆï¼ˆä¸ŽåŽŸå§‹æ•°æ® checkedOld 对比)。<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>返回全部勾选状æ€è¢«æ”¹å˜çš„èŠ‚ç‚¹é›†åˆ Array</p>
+ <p class="highlight_red">如果需è¦èŽ·å–æ¯æ¬¡æ“作åŽå…¨éƒ¨è¢«æ”¹å˜å‹¾é€‰çŠ¶æ€çš„节点数æ®ï¼Œè¯·åœ¨æ¯æ¬¡å‹¾é€‰æ“作åŽï¼Œé历所有被改å˜å‹¾é€‰çŠ¶æ€çš„节点数æ®ï¼Œè®©å…¶ checkedOld = checked å°±å¯ä»¥äº†ã€‚</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰å‹¾é€‰çŠ¶æ€è¢«æ”¹å˜çš„节点集åˆ</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getChangeCheckedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html
new file mode 100644
index 00000000..85f4ba04
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>getCheckedNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–输入框被勾选 或 未勾选的节点集åˆã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true è¡¨ç¤ºèŽ·å– è¢«å‹¾é€‰ 的节点集åˆ</p>
+ <p>checked = false è¡¨ç¤ºèŽ·å– æœªå‹¾é€‰ 的节点集åˆ</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ true。</p>
+ <p class="highlight_red">对于 treeNode.nochecked = true 的节点ä¸è¿›è¡ŒèŽ·å–。</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>返回全部符åˆè¦æ±‚çš„èŠ‚ç‚¹é›†åˆ Array</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰è¢«å‹¾é€‰çš„节点集åˆ</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getCheckedNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html
new file mode 100644
index 00000000..89e72c78
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodeByParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®èŠ‚点数æ®çš„属性æœç´¢ï¼ŒèŽ·å–æ¡ä»¶å®Œå…¨åŒ¹é…çš„èŠ‚ç‚¹æ•°æ® JSON 对象</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性å称</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性值,å¯ä»¥æ˜¯ä»»ä½•ç±»åž‹ï¼Œåªè¦ä¿è¯ä¸Ž key 指定的属性值ä¿æŒä¸€è‡´å³å¯</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>æœç´¢èŒƒå›´ï¼ŒæŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中进行æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>匹é…精确æœç´¢çš„节点数æ®</p>
+ <p class="highlight_red">1ã€å¦‚无结果,返回 null</p>
+ <p class="highlight_red">2ã€å¦‚有多个节点满足查询æ¡ä»¶ï¼Œåªè¿”回第一个匹é…到的节点</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 id = 1 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("id", 1, null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html
new file mode 100644
index 00000000..76fcc486
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(tId)</span><span class="path">zTreeObj.</span>getNodeByTId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ® zTree 的唯一标识 tId 快速获å–节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">通过内部的 cache 获å–,ä¸éœ€è¦é历节点。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>tId</b><span>String</span></h4>
+ <p>节点在 zTree 内的唯一标识 tId</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>tId 对应的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如无结果,返回 null</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. èŽ·å– tId = "tree_10" 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByTId("tree_10");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html
new file mode 100644
index 00000000..b2c757d2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>getNodeIndex</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–æŸèŠ‚点在åŒçº§èŠ‚点中的åºå·ï¼ˆä»Ž0开始)</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦æŸ¥è¯¢é¡ºåºçš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Number</span></h4>
+ <p class="highlight_red">返回值从 0 开始计数</p>
+ <p class="highlight_red">如果ä¸å­˜åœ¨è¯¥èŠ‚点数æ®ï¼Œè¿”回 -1</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰é€‰ä¸­çš„第一个节点在åŒçº§èŠ‚点中的åºå·</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ var index = treeObj.getNodeIndex(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodes.html
new file mode 100644
index 00000000..b368535e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodes.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>èŽ·å– zTree 的全部节点数æ®</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>全部节点数æ®</p>
+ <p class="highlight_red">1ã€Array 仅仅是根节点的集åˆï¼ˆé»˜è®¤æƒ…况å­èŠ‚点都处于 children 属性下); </p>
+ <p class="highlight_red">2ã€å¦‚需é历全部节点需è¦åˆ©ç”¨é€’归,或利用 transformToArray 方法 将数æ®å˜æˆç®€å•çš„ Array 集åˆ</p>
+ <p class="highlight_red">3ã€å¯¹äºŽå¼‚步加载模å¼ä¸‹ï¼Œå°šæœªåŠ è½½çš„å­èŠ‚点是无法通过此方法获å–的。</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–全部节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html
new file mode 100644
index 00000000..69174251
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(filter, isSingle, parentNode, invokeParam)</span><span class="path">zTreeObj.</span>getNodesByFilter</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®è‡ªå®šä¹‰è§„则æœç´¢èŠ‚ç‚¹æ•°æ® JSON å¯¹è±¡é›†åˆ æˆ– å•ä¸ªèŠ‚点数æ®</p>
+ <p class="highlight_red">å¯è‡ªå®šä¹‰å¤æ‚çš„æœç´¢è§„则</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>filter</b><span>Function</span></h4>
+ <p>自定义过滤器函数 function filter(node) {...}</p>
+ <p>filter å‚数:node (èŠ‚ç‚¹æ•°æ® JSON)</p>
+ <p>filter 返回值:boolean (true 表示符åˆæœç´¢æ¡ä»¶ï¼›false 表示ä¸ç¬¦åˆæœç´¢æ¡ä»¶)</p>
+ <h4 class="topLine"><b>isSingle</b><span>Boolean</span></h4>
+ <p>isSingle = true 表示åªæŸ¥æ‰¾å•ä¸ªèŠ‚点</p>
+ <p>isSingle = false 表示查找节点集åˆ</p>
+ <p class="highlight_red">忽略此å‚数,表示查找节点集åˆ</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>å¯ä»¥æŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>invokeParam</b><span>ä»»æ„类型</span></h4>
+ <p>用户自定义的数æ®å¯¹è±¡ï¼Œç”¨äºŽ filter 中进行计算</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON) / JSON</span></h4>
+ <p>isSingle = true 返回 ç¬¬ä¸€ä¸ªæ‰¾åˆ°çš„èŠ‚ç‚¹æ•°æ® JSON,无结果时返回 null</p>
+ <p>isSingle = false 返回 节点数æ®é›†åˆ Array(JSON),无结果时返回 [ ]</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 level = 2 & name ä¸­åŒ…å« "test" 的节点数æ®</h4>
+ <pre xmlns=""><code>function filter(node) {
+ return (node.level == 2 && node.name.indexOf("test")>-1);
+}
+......
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodesByFilter(filter, true); // 仅查找一个节点
+var nodes = treeObj.getNodesByFilter(filter); // 查找节点集åˆ
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html
new file mode 100644
index 00000000..cf45939c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®èŠ‚点数æ®çš„属性æœç´¢ï¼ŒèŽ·å–æ¡ä»¶å®Œå…¨åŒ¹é…çš„èŠ‚ç‚¹æ•°æ® JSON 对象集åˆ</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性å称</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性值,å¯ä»¥æ˜¯ä»»ä½•ç±»åž‹ï¼Œåªè¦ä¿è¯ä¸Ž key 指定的属性值ä¿æŒä¸€è‡´å³å¯</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>å¯ä»¥æŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>匹é…精确æœç´¢çš„节点数æ®é›†åˆ</p>
+ <p class="highlight_red">如无结果,返回 [ ]</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 name = "test" 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html
new file mode 100644
index 00000000..04d183f9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParamFuzzy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®èŠ‚点数æ®çš„属性æœç´¢ï¼ŒèŽ·å–æ¡ä»¶æ¨¡ç³ŠåŒ¹é…çš„èŠ‚ç‚¹æ•°æ® JSON 对象集åˆ</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>需è¦æ¨¡ç³ŠåŒ¹é…的属性å称</p>
+ <h4 class="topLine"><b>value</b><span>String</span></h4>
+ <p>需è¦æ¨¡ç³ŠåŒ¹é…的属性值</p>
+ <p class="highlight_red">模糊匹é…åªèƒ½é’ˆå¯¹ String 类型的数æ®</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>å¯ä»¥æŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>匹é…模糊æœç´¢çš„节点数æ®é›†åˆ</p>
+ <p class="highlight_red">如无结果,返回 [ ]</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 name åŒ…å« "test" 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParamFuzzy("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html
new file mode 100644
index 00000000..ab36f8ee
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getSelectedNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>èŽ·å– zTree 当å‰è¢«é€‰ä¸­çš„节点数æ®é›†åˆ</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>当å‰è¢«é€‰ä¸­çš„节点数æ®é›†åˆ</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点数æ®é›†åˆ</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNode.html
new file mode 100644
index 00000000..a1996b88
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNode.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>hideNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>éšè—æŸä¸ªèŠ‚点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定被éšè—的节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. éšè—根节点第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNode(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html
new file mode 100644
index 00000000..cf752b50
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>hideNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>éšè—一批节点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>指定被éšè—的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">请务必ä¿è¯è¿™äº›èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. éšè—根节点第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNodes(nodes[0].children);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.moveNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.moveNode.html
new file mode 100644
index 00000000..9c9180b9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.moveNode.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>moveNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>移动节点。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>è¦ç§»åŠ¨åˆ°çš„目标节点 JSON æ•°æ®</p>
+ <p class="highlight_red">如果移动æˆä¸ºæ ¹èŠ‚点,请设置 targetNode 为 null å³å¯</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«ç§»åŠ¨çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>指定移动到目标节点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定移动节点åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>返回值是最终被移动的节点数æ®ï¼Œæ­£å¸¸æƒ…况下与 treeNode å‚数完全相åŒ</p>
+ <p class="highlight_red">如果 返回值 为 null,说明 移动失败,主è¦åŽŸå› æœ‰ï¼š<br/>
+ &nbsp;1ã€targetNode 是 treeNode 父节点,且 moveType = "inner"<br/>
+ &nbsp;2ã€targetNode 是 treeNode å­å­™èŠ‚点
+ </p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 将根节点中第二个节点 移动æˆä¸º 第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. 将根节点中第二个节点 移动æˆä¸º 第一个节点的å‰ä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "prev");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html
new file mode 100644
index 00000000..4a354e2f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, reloadType, isSilent)</span><span class="path">zTreeObj.</span>reAsyncChildNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>强行异步加载父节点的å­èŠ‚点。<span class="highlight_red">[setting.async.enable = true 时有效]</span></p>
+ <p class="highlight_red">å·²ç»åŠ è½½è¿‡çš„父节点å¯åå¤ä½¿ç”¨æ­¤æ–¹æ³•é‡æ–°åŠ è½½ã€‚</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>指定需è¦å¼‚步加载的父节点 JSON æ•°æ®</p>
+ <p class="highlight_red">1ã€parentNode = null 时,相当于从根节点 Root 进行异步加载</p>
+ <p class="highlight_red">2ã€parentNode.isParent = false 时,ä¸è¿›è¡Œå¼‚步加载</p>
+ <p class="highlight_red">3ã€è¯·åŠ¡å¿…ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>reloadType</b><span>String</span></h4>
+ <p>reloadType = "refresh" 表示清空åŽé‡æ–°åŠ è½½ã€‚</p>
+ <p>reloadType != "refresh" 时,表示追加å­èŠ‚点处ç†ã€‚</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定异步加载åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. é‡æ–°å¼‚步加载 zTree </h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.reAsyncChildNodes(null, "refresh");
+</code></pre>
+ <h4>2. é‡æ–°å¼‚步加载当å‰é€‰ä¸­çš„第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.reAsyncChildNodes(nodes[0], "refresh");
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.refresh.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.refresh.html
new file mode 100644
index 00000000..09a74ca3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.refresh.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>refresh</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>刷新 zTree 。</p>
+ <p class="highlight_red">没有特殊必è¦ï¼Œå°½é‡ä¸è¦ä½¿ç”¨æ­¤æ–¹æ³•ã€‚å•ä¸ªèŠ‚点更新请使用 updateNode 方法,异步加载模å¼ä¸‹è¯·ä½¿ç”¨ reAsyncChildNodes 方法。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 刷新 zTree </h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.refresh();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html
new file mode 100644
index 00000000..588639fb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode)</span><span class="path">zTreeObj.</span>removeChildNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>清空æŸçˆ¶èŠ‚点的å­èŠ‚点。</p>
+ <p class="highlight_red">1ã€æ¸…空å­èŠ‚点åŽï¼Œçˆ¶èŠ‚点会自动å˜ä¸ºå¶å­èŠ‚点,如需è¦çˆ¶èŠ‚点ä¿æŒçˆ¶èŠ‚点状æ€ï¼Œè¯·è®¾ç½® setting.data.keep.parent 属性。</p>
+ <p class="highlight_red">2ã€è¯·å‹¿ç”¨æ­¤æ–¹æ³•æ¸…空根节点,如果需è¦æ¸…空根节点,直接åˆå§‹åŒ– zTree,并且设置åˆå§‹èŠ‚点为 null å³å¯ã€‚</p>
+ <p class="highlight_red">3ã€æ­¤æ–¹æ³•ä¸ä¼šè§¦å‘任何事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>需è¦æ¸…空å­èŠ‚点的父节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>将该父节点的å­èŠ‚点数æ®è¿”回,如果ä¸å­˜åœ¨åˆ™è¿”回 null</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 清空选中的第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes && nodes.length>0) {
+ treeObj.removeChildNodes(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeNode.html
new file mode 100644
index 00000000..442f5c7e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.removeNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, callbackFlag)</span><span class="path">zTreeObj.</span>removeNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>删除节点。</p>
+ <p class="highlight_red">v3.x 中删除节点å¯ä»¥è§¦å‘ beforeRemove / onRemove 事件回调函数。便于å‡å°‘冗余代ç </p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«åˆ é™¤çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true è¡¨ç¤ºæ‰§è¡Œæ­¤æ–¹æ³•æ—¶è§¦å‘ beforeRemove & onRemove 事件回调函数</p>
+ <p>callbackFlag = false 表示执行此方法时ä¸è§¦å‘事件回调函数</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 删除所有选中的节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.removeNode(nodes[i]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.selectNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.selectNode.html
new file mode 100644
index 00000000..6e80d813
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.selectNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, addFlag)</span><span class="path">zTreeObj.</span>selectNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>选中指定节点</p>
+ <p class="highlight_red">v3.x 支æŒåŒæ—¶é€‰ä¸­å¤šä¸ªèŠ‚点。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«é€‰ä¸­çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>addFlag</b><span>Boolean</span></h4>
+ <p>addFlag = true 表示追加选中,会出现多点åŒæ—¶è¢«é€‰ä¸­çš„情况</p>
+ <p>addFlag = false 表示å•ç‹¬é€‰ä¸­ï¼ŒåŽŸå…ˆè¢«é€‰ä¸­çš„节点会被å–消选中状æ€</p>
+ <p class="highlight_red">setting.view.selectedMulti = false 时,此å‚数无效,始终进行å•ç‹¬é€‰ä¸­</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å•ç‹¬é€‰ä¸­æ ¹èŠ‚点中第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ treeObj.selectNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html
new file mode 100644
index 00000000..b042ab43
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(node, disabled, inheritParent, inheritChildren)</span><span class="path">zTreeObj.</span>setChkDisabled</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>ç¦ç”¨ 或 è§£ç¦ æŸä¸ªèŠ‚点的 checkbox / radio <span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">1ã€èŠ‚点的 checkbox / radio 被ç¦ç”¨åŽï¼Œæ— æ³•å‹¾é€‰æˆ–å–消勾选,但能够影å“父节点的åŠé€‰çŠ¶æ€</p>
+ <p class="highlight_red">2ã€è¯·ä¸è¦ç›´æŽ¥ä¿®æ”¹å·²åŠ è½½èŠ‚点的 treeNode.chkDisabled 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦ç¦ç”¨ 或 è§£ç¦ checkbox / radio 的节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>disabled</b><span>Boolean</span></h4>
+ <p>disabled = true 表示ç¦ç”¨ checkbox / radio</p>
+ <p>disabled = false è¡¨ç¤ºè§£ç¦ checkbox / radio</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ disabled = false </p>
+ <p class="highlight_red">ä¸å½±å“ treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>inheritParent</b><span>Boolean</span></h4>
+ <p>inheritParent = true 表示全部父节点进行åŒæ ·çš„æ“作</p>
+ <p>inheritParent = false 表示ä¸å½±å“父节点</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ inheritParent = false </p>
+ <h4 class="topLine"><b>inheritChildren</b><span>Boolean</span></h4>
+ <p>inheritChildren = true 表示全部å­èŠ‚点进行åŒæ ·çš„æ“作</p>
+ <p>inheritChildren = false 表示ä¸å½±å“å­èŠ‚点</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ inheritChildren = false </p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. ç¦ç”¨å½“å‰é€‰ä¸­çš„节点的 checkbox / radio</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.setChkDisabled(nodes[i], true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setEditable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setEditable.html
new file mode 100644
index 00000000..c90c8de6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setEditable.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(editable)</span><span class="path">zTreeObj.</span>setEditable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 进入 / å–消 编辑状æ€ã€‚</p>
+ <p class="highlight_red">对于编辑状æ€çš„å„ç§åŠŸèƒ½éœ€è¦æå‰è®¾ç½®å¯¹åº” setting 中的ä¸åŒå±žæ€§</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>editable</b><span>Boolean</span></h4>
+ <p>true 表示进入 编辑状æ€</p>
+ <p>false 表示å–消 编辑状æ€</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 设置 zTree 进入编辑状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.setEditable(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setting.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setting.html
new file mode 100644
index 00000000..61abd531
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.setting.html
@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">zTreeObj.</span>setting</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 对象使用的 setting é…置数æ®ï¼Œè¯¦ç»†è¯·å‚考 “setting é…置详解â€ä¸­çš„å„个属性详细说明</p>
+ <p class="highlight_red">v3.x å–消了原先æ“作 setting 的方法,让用户å¯ä»¥è¾ƒè‡ªç”±çš„修改å‚数,但请注æ„,对于 zTree åˆå§‹åŒ–有影å“çš„å‚æ•°åŽæœŸä¿®æ”¹æ˜¯ä¸ä¼šèµ·ä½œç”¨çš„,请对å„个属性有较深入的了解以åŽå†è€ƒè™‘进行修改。</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNode.html
new file mode 100644
index 00000000..ed22d510
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNode.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>showNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>显示æŸä¸ªè¢«éšè—的节点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定被显示的节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 显示æŸä¸ªéšè—的节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("isHidden", true);
+if (node) {
+ treeObj.showNode(node);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNodes.html
new file mode 100644
index 00000000..b0906574
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.showNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>showNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>显示一批已ç»è¢«éšè—的节点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>指定被显示的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">请务必ä¿è¯è¿™äº›èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 显示全部éšè—的节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("isHidden", true);
+treeObj.showNodes(nodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html
new file mode 100644
index 00000000..a46dc61e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>transformToArray</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å°† zTree 使用的标准 JSON 嵌套格å¼çš„æ•°æ®è½¬æ¢ä¸ºç®€å• Array æ ¼å¼ã€‚(å…去用户自行编写递归é历全部节点的麻烦)</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>需è¦è¢«è½¬æ¢çš„ zTree 节点数æ®å¯¹è±¡é›†åˆ 或 æŸä¸ªå•ç‹¬èŠ‚点的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>转æ¢åŽçš„ç®€å• Array æ•°æ®æ ¼å¼</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å°† zTree 节点数æ®è½¬æ¢ä¸ºç®€å• Array æ ¼å¼</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformToArray(treeObj.getNodes());
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html
new file mode 100644
index 00000000..8a527704
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(simpleNodes)</span><span class="path">zTreeObj.</span>transformTozTreeNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å°†ç®€å• Array æ ¼å¼æ•°æ®è½¬æ¢ä¸º zTree 使用的标准 JSON 嵌套数æ®æ ¼å¼ã€‚</p>
+ <p class="highlight_red">使用此方法,请务必设置节点唯一标识属性å称 setting.data.simpleData.idKey å’Œ 父节点唯一标识属性å称 setting.data.simpleData.pIdKey,并且让数æ®æ»¡è¶³çˆ¶å­å…³ç³»ã€‚</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>simpleNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>需è¦è¢«è½¬æ¢çš„ç®€å• Array æ ¼å¼æ•°æ® 或 æŸä¸ªå•ç‹¬çš„æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>zTree 使用的标准数æ®ï¼Œå­èŠ‚点都存在于父节点数æ®çš„ children 属性中</p>
+ <p class="highlight_red">如果 simpleNodes 是一个 JSON 对象,则被简å•å°è£…æˆé•¿åº¦ä¸º 1 的数组。</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å°†ç®€å• Array æ ¼å¼è½¬æ¢ä¸ºzTree使用的标准格å¼</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var simpleNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformTozTreeNodes(simpleNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.updateNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.updateNode.html
new file mode 100644
index 00000000..847fa6ee
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/cn/zTreeObj.updateNode.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checkTypeFlag)</span><span class="path">zTreeObj.</span>updateNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ›´æ–°æŸèŠ‚点数æ®ï¼Œä¸»è¦ç”¨äºŽè¯¥èŠ‚点显示属性的更新。</p>
+ <p class="highlight_red">1ã€å¯é’ˆå¯¹ nameã€target〠urlã€icon〠iconSkinã€checkedã€nocheck 等这几个用于显示效果的å‚数进行更新,其他用于 zTreeNodes çš„å‚数请ä¸è¦éšæ„更新,对于展开节点,还请调用 expandNode方法,因此请勿éšæ„修改 open 属性。</p>
+ <p class="highlight_red">2ã€ç”¨æ­¤æ–¹æ³•ä¿®æ”¹ checked 勾选状æ€ä¸ä¼šè§¦å‘ beforeCheck / onCheck 事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定需è¦æ›´æ–°çš„节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true 表示按照 setting.check.chkboxType 属性进行父å­èŠ‚点的勾选è”动æ“作</p>
+ <p>checkTypeFlag = false 表示åªä¿®æ”¹æ­¤èŠ‚点勾选状æ€ï¼Œæ— ä»»ä½•å‹¾é€‰è”动æ“作</p>
+ <p class="highlight_red">当 setting.check.enable = true 且 setting.check.chkStyle = "checkbox" æ—¶æ‰æœ‰æ•ˆ</p>
+ <p class="highlight_red">ä¸å½±å“父å­èŠ‚点中 treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 更新根节点中第一个节点的å称</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ nodes[0].name = "test";
+ treeObj.updateNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree._z.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree._z.html
new file mode 100644
index 00000000..61da261d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree._z.html
@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">$.fn.zTree.</span>_z</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>All of the methods in zTree v3.x are available through the '$. fn.zTree._z' calls, open it for you to develop your own zTree plug-ins.</p>
+ <p class="highlight_red">If you have no special requirements, please don't use this object, and don't modify the methods in this object.</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.destroy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.destroy.html
new file mode 100644
index 00000000..3a316999
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.destroy.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>destroy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>From zTree v3.4, zTree support the method for destruction.</p>
+ <p>1. This method can destroy the zTree with specify treeId, and can destroy all of the zTrees.</p>
+ <p class="highlight_red">2. If you want to destory some one zTree, you can use the 'zTreeObj.destroy()' method.</p>
+ <p class="highlight_red">3. If you want to use the tree which has been destroyed, you must use the 'init()' method at first.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier</p>
+ <p class="highlight_red">If this parameter is omitted, then will destroy all of the zTrees.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. destroy the zTree which its id is 'treeDemo'</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy("treeDemo");</code></pre>
+ <h4>2. destroy all of the zTrees</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy();</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html
new file mode 100644
index 00000000..2bc04476
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>getZTreeObj</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree v3.x specifically provide the method which can use the tree's Id to get zTree object.</p>
+ <p class="highlight_red">Please initialize zTree first, then you can use this method.</p>
+ <p>Users don't need to set the global variable to hold the zTree object, and all of the callback will return 'treeId' parameters, the user can always use this method to get the zTree object.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>zTree object</p>
+ <p>This object can provide the methods of operate the zTree</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the zTree object which id is 'tree'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.init.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.init.html
new file mode 100644
index 00000000..cf97d2bc
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/fn.zTree.init.html
@@ -0,0 +1,75 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(obj, zSetting, zNodes)</span><span class="path">$.fn.zTree.</span>init</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The method which used to create zTree.</p>
+ <p>1. The web page need to use W3C markup. For example: &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&nbsp;&nbsp; &nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</p>
+ <p>2. Need to load jquery-1.4.2.js or other higher versions.</p>
+ <p>3. Need to load jquery-ztree.core-3.0.js. If you need to use the edit mode or checkbox / radio mode, you need to load jquery-ztree.exedit-3.0.js and jquery-ztree.excheck-3.0.js.</p>
+ <p>4. Need to load zTreeStyle.css and image files</p>
+ <p>5. If you need to use custom icons, please refer to the appropriate Demo.</p>
+ <p>6. Note: You need to set zTree container's class name to "ztree". If you need to change, don't forget to modify the css file. If you need other special styles, can modify the css file to their own needs.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>object</b><span>jQuery Object</span></h4>
+ <p>DOM Container for zTree</p>
+ <h4 class="topLine"><b>zSetting</b><span>JSON</span></h4>
+ <p>zTree's configuration data, please refer to "setting details" in the API Document.</p>
+ <h4 class="topLine"><b>zNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>zTree's node data, please refer to "treeNode data details" in the API Document.</p>
+ <p class="highlight_red">1. zTree v3.x support to add single node, that is, if only to add one node, you can use JSON without using Array.</p>
+ <p class="highlight_red">2. If you need asynchronous load root nodes, can be set to null or [ ]</p>
+ <p class="highlight_red">3. If you use simple data mode, please refer to "setting.data.simpleData" in the API Document.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>zTree object</p>
+ <p>This object can provide the methods of operate the zTree</p>
+ <p class="highlight_red">You can use $.fn.zTree.getZTreeObj method at any time to obtain.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. create a simple tree</h4>
+ <pre xmlns=""><code>&lt;!DOCTYPE html&gt;
+&lt;HTML&gt;
+ &lt;HEAD&gt;
+ &lt;TITLE&gt; ZTREE DEMO &lt;/TITLE&gt;
+ &lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;
+ &lt;link rel="stylesheet" href="zTreeStyle/zTreeStyle.css" type="text/css"&gt;
+ &lt;script type="text/javascript" src="jquery-1.4.2.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.core-3.5.js"&gt;&lt;/script&gt;
+&lt;!--
+ &lt;script type="text/javascript" src="jquery.ztree.excheck-3.5.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.exedit-3.5.js"&gt;&lt;/script&gt;
+--&gt;
+ &lt;SCRIPT type="text/javascript" &gt;
+ var zTreeObj,
+ setting = {
+ view: {
+ selectedMulti: false
+ }
+ },
+ zTreeNodes = [
+ {"name":"Site Map", open:true, children: [
+ { "name":"google", "url":"http://www.google.com", "target":"_blank"},
+ { "name":"baidu", "url":"http://baidu.com", "target":"_blank"},
+ { "name":"sina", "url":"http://www.sina.com.cn", "target":"_blank"}
+ ]
+ }
+ ];
+
+ $(document).ready(function(){
+ zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);
+
+ });
+ &lt;/SCRIPT&gt;
+ &lt;/HEAD&gt;
+
+&lt;BODY&gt;
+&lt;ul id="tree" class="ztree" style="width:230px; overflow:auto;"&gt;&lt;/ul&gt;
+ &lt;/BODY&gt;
+&lt;/HTML&gt;</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.autoParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.autoParam.html
new file mode 100644
index 00000000..85cd4691
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.autoParam.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String)</span><span class="path">setting.async.</span>autoParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Required automatically submit the parameters about the properties of the parent node, when the asynchronous load. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default:[ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) Format</h3>
+ <div class="desc">
+ <p>1. Just save the attribute name of node to the array. For example: ["id", "name"]</p>
+ <p>2. You can change the parameter name. For example: server only accepts "zId" -- ["id=zId"]</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. set auto commit 'id' attribute</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id"]
+ }
+};
+If have the parent node: {id:1, name:"test"}, When asynchronously load this parent node's child nodes, will be submitted parameters: id=1
+......</code></pre>
+ <h4>2. set auto commit 'id' attribute, but parameter name is 'zId'</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id=zId"]
+ }
+};
+If have the parent node: {id:1, name:"test"}, When asynchronously load this parent node's child nodes, will be submitted parameters: zId=1
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.contentType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.contentType.html
new file mode 100644
index 00000000..cc9bfcd3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.contentType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>contentType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When Ajax sending data to the server, use this content-type. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default:"application/x-www-form-urlencoded"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p> contentType = "application/x-www-form-urlencoded", means: the sending data format is "form" format.</p>
+ <p> contentType = "application/json", means: the sending data format is "json" format. (for .Net)</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. set the sending data format to "json" format.</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ contentType: "application/json",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataFilter.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataFilter.html
new file mode 100644
index 00000000..34733e4d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataFilter.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, parentNode, responseData)</span><span class="path">setting.async.</span>dataFilter</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Function used to pre-process for the return data of Ajax. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>Parent node's JSON data object</p>
+ <p class="highlight_red">When asynchronously loading the root, the parentNode = null</p>
+ <h4 class="topLine"><b>responseData</b><span>Array(JSON) / JSON / String</span></h4>
+ <p>Ajax got Array (JSON) / JSON / String data objects</p>
+ <p class="highlight_red">From v3.4, support the string with XML format.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON) / JSON</span></h4>
+ <p>The return value should be the JSON data structure which is supported by the zTree.</p>
+ <p class="highlight_red">v3.x supports to load single node JSON data object.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Modify the node name attribute which is ajax got.</h4>
+ <pre xmlns=""><code>function ajaxDataFilter(treeId, parentNode, responseData) {
+ if (responseData) {
+ for(var i =0; i < responseData.length; i++) {
+ responseData[i].name += "_filter";
+ }
+ }
+ return responseData;
+};
+var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ dataFilter: ajaxDataFilter
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataType.html
new file mode 100644
index 00000000..e6672e9b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.dataType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>dataType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The data type of Ajax. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default:"text"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p> dataType = "text", It can meet most of the needs.</p>
+ <p class="highlight_red">The 'dataType' in zTree and jQuery's ajax is same.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the dataType which ajax got is text.</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ dataType: "text",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.enable.html
new file mode 100644
index 00000000..806ba6c6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.enable.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.async.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set zTree asynchronous loading mode is turned on or off.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true - turn on asynchronous loading mode</p>
+ <p> false - turn off asynchronous loading mode</p>
+ <p class="highlight_red">If set it is true, you must set attributes in setting.async</p>
+ <p class="highlight_red">If you don't pass 'treeNodes' parameter when initialize zTree, the root nodes will get by ajax.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Turn on asynchronous loading mode</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.otherParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.otherParam.html
new file mode 100644
index 00000000..2e37390a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.otherParam.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String) / JSON</span><span class="path">setting.async.</span>otherParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The static parameters of the Ajax request. (key - value) It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default: [ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) Format</h3>
+ <div class="desc">
+ <p>Can be empty array. e.g. [ ]. If set key, you must set value, e.g. [key, value]. ([key] or [key, value, key] is wrong!!)</p>
+ </div>
+ <h3>JSON Format</h3>
+ <div class="desc">
+ <p>Use JSON data format set the key-value. e.g. { key1:value1, key2:value2 }</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Use Array(String) Format</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: ["id", "1", "name", "test"]
+ }
+};
+when zTree send ajax, the parameters will has: id=1&name=test</code></pre>
+ <h4>2. Use JSON data Format</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: { "id":"1", "name":"test"}
+ }
+};
+when zTree send ajax, the parameters will has: id=1&name=test</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.type.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.type.html
new file mode 100644
index 00000000..ae543388
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.type.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>type</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Http request mode in ajax. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Defalut: "post"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p> "post" - http request mode</p>
+ <p> "get" - http request mode</p>
+ <p class="highlight_red">The 'type' in zTree and jQuery's ajax is same.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set http request mode is 'get'</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ type: "get",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.url.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.url.html
new file mode 100644
index 00000000..5587f294
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.async.url.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.async.</span>url</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The URL to which the ajax request is sent. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default: ""</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>A url string(e.g. "http://www.domain.com"). Note: please ensure that the url can be loaded</p>
+ <p class="highlight_red">Url can also take parameters, please note that transcode.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>Parent node's JSON data object</p>
+ <p class="highlight_red">When asynchronously loading the root, the treeNode = null</p>
+ <h4 class="topLine"><b>Return </b><span>String</span></h4>
+ <p>Return value is same as 'String Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. set ajax url is "nodes.php"</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "nodes.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+ <h4>2. set ajax url is "function"</h4>
+ <pre xmlns=""><code>function getAsyncUrl(treeId, treeNode) {
+ return treeNode.isParent ? "nodes1.php" : "nodes2.php";
+};
+var setting = {
+ async: {
+ enable: true,
+ url: getAsyncUrl,
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeAsync.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeAsync.html
new file mode 100644
index 00000000..6563ff29
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeAsync.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeAsync</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before zTree execute ajax, zTree based on return value to determine whether to execute ajax.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node</p>
+ <p class="highlight_red">When asynchronously loading the root, the treeNode = null</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not execute ajax, and will not trigger the 'onAsyncSuccess / onAsyncError' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. If the parent node's attribute 'id' is 1, zTree will not execute ajax.</h4>
+ <pre xmlns=""><code>function zTreeBeforeAsync(treeId, treeNode) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeAsync: zTreeBeforeAsync
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCheck.html
new file mode 100644
index 00000000..5260412b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before check or uncheck node, zTree based on return value to determine whether to change check state.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is checked or unchecked</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not change check state, and will not trigger the 'onCheck' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to change check state of all nodes, and keep the check state initialization</h4>
+ <pre xmlns=""><code>function zTreeBeforeCheck(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCheck: zTreeBeforeCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeClick.html
new file mode 100644
index 00000000..32ddbf77
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>beforeClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before click node, zTree based on return value to determine whether to trigger the 'onClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is clicked</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>Node is selected or deselected state, please see table below for details</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="Whether to allow multi-select">selectedMulti</td><td title="Whether to press Ctrl-key or Cmd-key">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="Node's selection state">isSelected</td><td>operate for selected</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>node is selected (multi)</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ </tbody>
+ </table>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not change selected state, and will not trigger the 'onClick' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disabled to click the node</h4>
+ <pre xmlns=""><code>function zTreeBeforeClick(treeId, treeNode, clickFlag) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeClick: zTreeBeforeClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html
new file mode 100644
index 00000000..b2713e8a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCollapse</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before collapse node, zTree based on return value to determine whether to collapse node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be collapsed</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not collapse node, and will not trigger the 'onCollapse' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disabled to collapse node which is expanded</h4>
+ <pre xmlns=""><code>function zTreeBeforeCollapse(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCollapse: zTreeBeforeCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html
new file mode 100644
index 00000000..6f1c743e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDblClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the dblclick event before the 'onDblClick' callback, zTree based on return value to determine whether to trigger the 'onDblClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is double clicked</p>
+ <p class="highlight_red">If the DOM which dblclicked isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, ztree will not trigger the 'onDblClick' callback, no effect on other operations.</p>
+ <p class="highlight_red">This callback function does not affect the dblclick the parent node to auto expand, please refer to setting.view.dblClickExpand properties.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onDblClick' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeDblClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeDblClick: zTreeBeforeDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrag.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrag.html
new file mode 100644
index 00000000..51752448
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrag.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes)</span><span class="path">setting.callback.</span>beforeDrag</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before drag node, zTree based on return value to determine whether to start to drag node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNodes are belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which will be dragged</p>
+ <p class="highlight_red">v3.x allows drag and drop multiple sibling nodes, so this parameter is modified to Array(JSON).</p>
+ <p class="highlight_red">If the selected nodes aren't the sibling nodes, you can only drag one node which mouse over.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will stop drag, and will not trigger the 'onDrag / beforeDrop / onDrop' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag all node</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrag(treeId, treeNodes) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrag: zTreeBeforeDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html
new file mode 100644
index 00000000..ed1ae978
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDragOpen</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when drag node to collapsed parent node, zTree based on return value to determine whether to auto expand parent node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNode(parent node) is belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node which will be auto expanded</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not auto expand parent node.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to auto expand parent node.</h4>
+ <pre xmlns=""><code>function zTreeBeforeDragOpen(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDragOpen: zTreeBeforeDragOpen
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrop.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrop.html
new file mode 100644
index 00000000..70143211
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeDrop.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>beforeDrop</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before drag-drop node, zTree based on return value to determine whether to allow drag-drop node.</p>
+ <p>Default: null</p>
+ <p class="highlight_red">When drop the nodes, if the dragged nodes is not in a valid location, this callback will not triggered, and will restore the original position.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the targetNode is belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <p class="highlight_red">The treeNodes are the data of the nodes which has been dragged, when copy nodes or move nodes.</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are drag-dropped.</p>
+ <p class="highlight_red">If the treeNodes will be root node, the targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>the relative position of move to the target node</p>
+ <p class="highlight_red">"inner": will be child of targetNode</p>
+ <p class="highlight_red">"prev": will be sibling node, and be in front of targetNode</p>
+ <p class="highlight_red">"next": will be sibling node, and be behind targetNode</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>the flag used to judge copy node or move node</p>
+ <p class="highlight_red">true: copy node; false: move node</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will restore the dragged nodes, and will not trigger the 'onDrop' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag nodes to root</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
+ return !(targetNode == null || (moveType != "inner" && !targetNode.parentTId));
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrop: zTreeBeforeDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeEditName.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeEditName.html
new file mode 100644
index 00000000..8772a3e9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeEditName.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeEditName</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before click edit button, zTree based on return value to determine whether to allow to edit the name.</p>
+ <p class="highlight_red">This callback is used to capture the event which edit button is clicked, then trigger the custom editing operation.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be edited name.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, the node will not be able to edit the name.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to edit the parent node's name</h4>
+ <pre xmlns=""><code>function zTreeBeforeEditName(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeEditName: zTreeBeforeEditName
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeExpand.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeExpand.html
new file mode 100644
index 00000000..73cf55a3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeExpand</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before expand node, zTree based on return value to determine whether to expand node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be expanded</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not expand node, and will not trigger the 'onExpand' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disabled to expand node which is collapsed</h4>
+ <pre xmlns=""><code>function zTreeBeforeExpand(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeExpand: zTreeBeforeExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html
new file mode 100644
index 00000000..4af0818b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseDown</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the mousedown event before the 'onMouseDown' callback, zTree based on return value to determine whether to trigger the 'onMouseDown' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not trigger the 'onMouseDown' callback, no effect on other operations.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onMouseDown' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseDown(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseDown: zTreeBeforeMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html
new file mode 100644
index 00000000..0c008fc4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseUp</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the mouseup event before the 'onMouseUp' callback, zTree based on return value to determine whether to trigger the 'onMouseUp' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not trigger the 'onMouseUp' callback, no effect on other operations.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onMouseUp' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseUp(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseUp: zTreeBeforeMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRemove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRemove.html
new file mode 100644
index 00000000..38e14c19
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRemove.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRemove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before remove node, zTree based on return value to determine whether to allow to remove node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be removed.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not remove node, and will not trigger the 'onRemove' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to remove node</h4>
+ <pre xmlns=""><code>function zTreeBeforeRemove(treeId, treeNode) {
+ return false;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRemove: zTreeBeforeRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRename.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRename.html
new file mode 100644
index 00000000..76438a94
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRename.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, newName, isCancel)</span><span class="path">setting.callback.</span>beforeRename</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before rename(when input DOM blur or press Enter Key), zTree based on return value to determine whether to allow to rename node.</p>
+ <p class="highlight_red">When node is editing name, press the ESC key to restore the original name and stop edit name.</p>
+ <p class="highlight_red">From v3.5.13, zTree will trigger this callback when user cancel edit name. please see 'isCancel' parameter.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be rename.</p>
+ <h4 class="topLine"><b>newName</b><span>String</span></h4>
+ <p>the new name</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>the status about cancel edit name (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true means: user cancel edit name. (press ESC or use cancelEditName() function)</p>
+ <p class="highlight_red">isCancel = false means: user submit edit name.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, the treeNode will keep the editing name, don't trigger the 'onRename' callback, and will ignore other enents, until the callback return true.</p>
+ <p class="highlight_red">If returns false, zTree will not set the input box to get focus to avoid the warning message which led to repeated triggering ‘beforeRename’ callback. Please use editName() method to set the input box to get focus when user close the warning message.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. the length of the new name can't less than 5</h4>
+ <pre xmlns=""><code>function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
+ return newName.length > 5;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRename: zTreeBeforeRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html
new file mode 100644
index 00000000..15c38cd5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRightClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the right click event before the 'onRightClick' callback, zTree based on return value to determine whether to trigger the 'onRightClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is mouse right clicked</p>
+ <p class="highlight_red">If the DOM which mouse right clicked isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return</b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, ztree will not trigger the 'onRightClick' callback, no effect on other operations.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onRightClick' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeRightClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeRightClick: zTreeBeforeRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncError.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncError.html
new file mode 100644
index 00000000..785c8d82
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncError.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span class="path">setting.callback.</span>onAsyncError</h2>
+ <h2><span>Function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown)</span>&nbsp;</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the error event when execute ajax.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeAsync',and return false, zTree will not execute ajax, and will not trigger the 'onAsyncSuccess / onAsyncError' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node</p>
+ <p class="highlight_red">When load root nodes, treeNode = null</p>
+ <h4 class="topLine"><b>XMLHttpRequest</b><span>String</span></h4>
+ <p>XMLHttpRequest Object, please refer to JQuery API documentation.</p>
+ <h4 class="topLine"><b>textStatus</b><span>String</span></h4>
+ <p>a string categorizing the status of the request("success", "error"...), please refer to JQuery API documentation.</p>
+ <h4 class="topLine"><b>errorThrown</b><span>String</span></h4>
+ <p>eWhen an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, please refer to JQuery API documentation.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When execute ajax make error, alert message.</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
+ alert(XMLHttpRequest);
+};
+var setting = {
+ callback: {
+ onAsyncError: zTreeOnAsyncError
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html
new file mode 100644
index 00000000..2722691f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, msg)</span><span class="path">setting.callback.</span>onAsyncSuccess</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the complete success event when execute ajax.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeAsync',and return false, zTree will not execute ajax, and will not trigger the 'onAsyncSuccess / onAsyncError' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node</p>
+ <p class="highlight_red">When load root nodes, treeNode = null</p>
+ <h4 class="topLine"><b>msg</b><span>String / Object</span></h4>
+ <p>The actualnode data which got by ajax. User-friendly debugging.</p>
+ <p class="highlight_red">The actual data's type of msg is affected by 'setting.async.dataType', please refer to JQuery API documentation.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When execute ajax complete success, alert message.</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
+ alert(msg);
+};
+var setting = {
+ callback: {
+ onAsyncSuccess: zTreeOnAsyncSuccess
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCheck.html
new file mode 100644
index 00000000..ed33f8d1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the check or uncheck event when check or uncheck the checkbox and radio.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeCheck',and return false, zTree will not change check state, and will not trigger the 'onCheck' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is checked or unchecked</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When check or uncheck the checkbox and radio, alert info about 'tId' and 'name' and 'checked'.</h4>
+ <pre xmlns=""><code>function zTreeOnCheck(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
+};
+var setting = {
+ callback: {
+ onCheck: zTreeOnCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onClick.html
new file mode 100644
index 00000000..0453af85
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>onClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the click event when click node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeClick',and return false, zTree will not change selected state, and will not trigger the 'onClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is clicked</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>Node is selected or deselected state, please see table below for details</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="Whether to allow multi-select">selectedMulti</td><td title="Whether to press Ctrl-key or Cmd-key">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="Node's selection state">isSelected</td><td>operate for selected</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>node is selected (multi)</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When click node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnClick(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onClick: zTreeOnClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCollapse.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCollapse.html
new file mode 100644
index 00000000..d605dc8e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCollapse</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when collapse node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeCollapse',and return false, zTree will not collapse node, and will not trigger the 'onCollapse' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be collapsed</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When collapse node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnCollapse(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onCollapse: zTreeOnCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDblClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDblClick.html
new file mode 100644
index 00000000..fbd47e8d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDblClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onDblClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the dblclick event when double click node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeDblClick',and return false, zTree will not trigger the 'onDblClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is double clicked</p>
+ <p class="highlight_red">If the DOM which dblclicked isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When double click node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnDblClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onDblClick: zTreeOnDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrag.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrag.html
new file mode 100644
index 00000000..d178b635
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrag.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDrag</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the drag event when drag node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeDrag',and return false, zTree will stop drag, and will not trigger the 'onDragMove' & 'onDrag' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNodes are belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which will be dragged</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When drag nodes, alert the number of dragged nodes.</h4>
+ <pre xmlns=""><code>function zTreeOnDrag(event, treeId, treeNodes) {
+ alert(treeNodes.length);
+};
+var setting = {
+ callback: {
+ onDrag: zTreeOnDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDragMove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDragMove.html
new file mode 100644
index 00000000..a56e8353
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDragMove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDragMove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the drag-move event when drag & drop node.</p>
+ <p class="highlight_red">Mainly used to capture the DOM which the nodes was drag in. </p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNodes are belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which will be dragged</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When drag nodes, output the target dom.</h4>
+ <pre xmlns=""><code>function zTreeOnDragMove(event, treeId, treeNodes) {
+ console.log(event.target);
+};
+var setting = {
+ callback: {
+ onDragMove: zTreeOnDragMove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrop.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrop.html
new file mode 100644
index 00000000..63624631
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onDrop.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>onDrop</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the drop event when drag-drop node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeDrop',and return false, zTree will restore the dragged nodes, and will not trigger the 'onDrop' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the targetNode is belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <p class="highlight_red">The treeNodes are the data of the nodes which be dragged, when move nodes.</p>
+ <p class="highlight_red">The treeNodes are the clone data of the nodes which be dragged, when copy nodes.</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are drag-dropped.</p>
+ <p class="highlight_red">If the treeNodes will be root node, the targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>the relative position of move to the target node</p>
+ <p class="highlight_red">"inner": will be child of targetNode</p>
+ <p class="highlight_red">"prev": will be sibling node, and be in front of targetNode</p>
+ <p class="highlight_red">"next": will be sibling node, and be behind targetNode</p>
+ <p class="highlight_red">If moveType is null, means drag & drop is cancel.</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>the flag used to judge copy node or move node</p>
+ <p class="highlight_red">true: copy node; false: move node</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When drag-drop nodes complete, alert the number of dragged nodes and info about targetNode.</h4>
+ <pre xmlns=""><code>function zTreeOnDrop(event, treeId, treeNodes, targetNode, moveType) {
+ alert(treeNodes.length + "," + (targetNode ? (targetNode.tId + ", " + targetNode.name) : "isRoot" ));
+};
+var setting = {
+ callback: {
+ onDrop: zTreeOnDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onExpand.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onExpand.html
new file mode 100644
index 00000000..7b9d8d50
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onExpand</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when expand node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeExpand',and return false, zTree will not expand node, and will not trigger the 'onExpand' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be expanded</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When expand node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnExpand(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onExpand: zTreeOnExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseDown.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseDown.html
new file mode 100644
index 00000000..bfd714c2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseDown</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when mouse down.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeMouseDown',and return false, zTree will not trigger the 'onMouseDown' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When mouse down, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnMouseDown(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseDown: zTreeOnMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseUp.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseUp.html
new file mode 100644
index 00000000..93edf319
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseUp</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when mouse up.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeMouseUp',and return false, zTree will not trigger the 'onMouseUp' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When mouse up, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnMouseUp(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseUp: zTreeOnMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html
new file mode 100644
index 00000000..a98b572f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onNodeCreated</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when node's DOM is created.</p>
+ <p class="highlight_red">Because v3.x uses lazy loading technology, so the nodes which doesn't create DOM when initialized will not trigger this callback, until its parent node is expanded.</p>
+ <p class="highlight_red">Large amount of data to load, please note: do not set onNodeCreated, can improve performance as when initialized.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which DOM is created</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When node's DOM is created, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnNodeCreated(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onNodeCreated: zTreeOnNodeCreated
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRemove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRemove.html
new file mode 100644
index 00000000..ce294136
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRemove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRemove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when remove node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeRemove',and return false, zTree will not remove node, and will not trigger the 'onRemove' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which was removed.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When remove node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnRemove(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRemove: zTreeOnRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRename.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRename.html
new file mode 100644
index 00000000..cd47eae1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRename.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, isCancel)</span><span class="path">setting.callback.</span>onRename</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when remove node.</p>
+ <p class="highlight_red">1. If you set 'setting.callback.beforeRename',and return false, zTree will keep the editing name, and will not trigger the 'onRename' callback.</p>
+ <p class="highlight_red">2. If you modity treeNode data, and use 'updateNode' function, zTree will not trigger the 'onRename' callback.</p>
+ <p class="highlight_red">3. From v3.5.13, zTree will trigger this callback when user cancel edit name. please see 'isCancel' parameter.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which was rename.</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>the status about cancel edit name (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true means: user cancel edit name. (press ESC or use cancelEditName() function)</p>
+ <p class="highlight_red">isCancel = false means: user submit edit name.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When rename node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnRename(event, treeId, treeNode, isCancel) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRename: zTreeOnRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRightClick.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRightClick.html
new file mode 100644
index 00000000..86b4b012
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.callback.onRightClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRightClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when mouse right click node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeRightClick',and return false, zTree will not trigger the 'onRightClick' callback.</p>
+ <p class="highlight_red">If you set 'setting.callback.onRightClick', zTree will shield the browser context menu when mouse right click on zTree.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is mouse right clicked</p>
+ <p class="highlight_red">If the DOM which mouse right clicked isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When mouse right click node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnRightClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onRightClick: zTreeOnRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html
new file mode 100644
index 00000000..b8b04cca
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>autoCheckTrigger</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When node is automatically checked or unchecked, this parameter used to set to trigger 'beforeCheck / onCheck' callback. It is valid when <span class="highlight_red">[setting.check.enable = true & setting.check.chkStyle = "checkbox"]</span></p>
+ <p class="highlight_red">1. If you set 'setting.check.chkboxType' to { "Y": "", "N": "" }, will not automatically checked or unchecked.</p>
+ <p class="highlight_red">2. If you turn on the trigger and there are many more nodes, will affect the performance, because the check or uncheck node can cause many nodes to be automatically checked or unchecked, it will trigger a lot of callbacks, according to the need to decide whether to use this feature.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: trigger callback</p>
+ <p> false means: don't trigger callback</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When node is automatically checked or unchecked, zTree trigger 'beforeCheck / onCheck' callback.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ autoCheckTrigger: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html
new file mode 100644
index 00000000..98d824e4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>chkDisabledInherit</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When the parent node's 'chkDisabled' attribute is true, set the child nodes automatically inherit the 'chkDisabled' attribute. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">1. Only be used to initialize the nodes, easy batch operations. Please use the 'updateNode' method modify existing node.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: When add new child nodes, if parent node's 'chkDisabled' attribute is true, the child nodes automatically inherit the 'chkDisabled' attribute.</p>
+ <p> false means: When add new child nodes, the child nodes don't inherit the 'chkDisabled' attribute from parent node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When add new child nodes, the child nodes automatically inherit the 'chkDisabled' attribute from parent node.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkDisabledInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkStyle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkStyle.html
new file mode 100644
index 00000000..d42e757a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkStyle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>chkStyle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Use the checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p>Default: "checkbox"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When chkStyle = "checkbox", zTree show checkbox, and '<span class="highlight_red">setting.check.chkboxType</span>' attribute is valid.
+<br/>When chkStyle = "radio", zTree show radio, and '<span class="highlight_red">setting.check.radioType</span>' attribute is valid.</p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>checkbox States Descriptions</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk checkbox_false_full"></button>not checked; <span class="highlight_red">If node is parent, so its child nodes have been not checked.</span> when mouse over: <button type="button" class="chk checkbox_false_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_false_part"></button>not checked; (only parent node) <span class="highlight_red">some of its child nodes have been checked.</span> when mouse over: <button type="button" class="chk checkbox_false_part_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_full"></button>be checked; <span class="highlight_red">If node is parent, so its all child nodes have been checked.</span> when mouse over: <button type="button" class="chk checkbox_true_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_part"></button>be checked; (only parent node) <span class="highlight_red">some of its child nodes or all have been not checked.</span> when mouse over: <button type="button" class="chk checkbox_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>radio States Descriptions</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk radio_false_full"></button>not checked; <span class="highlight_red">If node is parent, so its child have been not checked.</span> when mouse over: <button type="button" class="chk radio_false_full_focus"></button></p>
+ <p><button type="button" class="chk radio_false_part"></button>not checked; (only parent node) <span class="highlight_red">some of its child have been checked.</span> when mouse over: <button type="button" class="chk radio_false_part_focus"></button></p>
+ <p><button type="button" class="chk radio_true_full"></button>be checked; <span class="highlight_red">If node is parent, so its child have been not checked.</span> when mouse over: <button type="button" class="chk radio_true_full_focus"></button></p>
+ <p><button type="button" class="chk radio_true_part"></button>be checked; (only parent node) <span class="highlight_red">some of its child have been checked.</span> when mouse over: <button type="button" class="chk radio_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use radio</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkboxType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkboxType.html
new file mode 100644
index 00000000..5cecc9ee
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.chkboxType.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">setting.check.</span>chkboxType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When one node is checked or unchecked, control its parent node and its child node auto checked or unchecked. It is valid when <span class="highlight_red">[setting.check.enable = true &amp; setting.check.chkStyle = "checkbox"]</span></p>
+ <p>Default: { "Y": "ps", "N": "ps" }</p>
+ </div>
+ </div>
+ <h3>JSON Format</h3>
+ <div class="desc">
+ <p>"Y" attribute use to set auto check after checkbox was checked.
+<br/>"N" attribute use to set auto uncheck after checkbox was unchecked.
+<br/>If value has "p", so parent nodes will be checked or unchecked.
+<br/>If value has "s", so child nodes will be checked or unchecked.</p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. If check the node, so only auto check parent nodes; If uncheck the node, so only auto uncheck child nodes;</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "checkbox",
+ chkboxType: { "Y": "p", "N": "s" }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.enable.html
new file mode 100644
index 00000000..0236b5f8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.enable.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to use checkbox or radio in zTree</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: use the checkbox or radio</p>
+ <p> false means: don't use the checkbox or radio</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the checkbox</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.nocheckInherit.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.nocheckInherit.html
new file mode 100644
index 00000000..758b437e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.nocheckInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>nocheckInherit</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When the parent node's 'nocheck' attribute is true, set the child nodes automatically inherit the 'nocheck' attribute. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">1. Only be used to initialize the nodes, easy batch operations. Please use the 'updateNode' method modify existing node.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: When add new child nodes, if parent node's 'nocheck' attribute is true, the child nodes automatically inherit the 'nocheck' attribute.</p>
+ <p> false means: When add new child nodes, the child nodes don't inherit the 'nocheck' attribute from parent node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When add new child nodes, the child nodes automatically inherit the 'nocheck' attribute from parent node.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ nocheckInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.radioType.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.radioType.html
new file mode 100644
index 00000000..be867d75
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.check.radioType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>radioType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The group about radio. It is valid when <span class="highlight_red">[setting.check.enable = true &amp; setting.check.chkStyle = "radio"]</span></p>
+ <p>Default: "level"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When radioType = "level", will be grouped with same level nodes which have the same parent node.
+<br/>When radioType = "all", will be grouped with all nodes.</p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the group about radio is all nodes.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio",
+ radioType: "all"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.leaf.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.leaf.html
new file mode 100644
index 00000000..71c573e4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.leaf.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>leaf</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The leaf node's lock, the leaf node will lock the 'isParent' attribute to false.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: lock the leaf node, and <span class="highlight_red">the node which 'isParent' attribute is false can't add child nodes</span>.</p>
+ <p> false means: don't lock the leaf node, and <span class="highlight_red">the node which 'isParent' attribute is false can add child nodes</span>.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. lock the leaf node</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ leaf: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.parent.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.parent.html
new file mode 100644
index 00000000..5bab2f1e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.keep.parent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>parent</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The parent node's lock, the parent node will lock 'isParent' attribute to true.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: lock the parent node, and <span class="highlight_red">if remove all of the parent node's child nodes, its 'isParent' attribute still keep to be true.</span>.</p>
+ <p> false means: don't lock the parent node, and <span class="highlight_red">if remove all of the parent node's child nodes, its 'isParent' attribute will change to be false.</span>.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. lock the parent node</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ parent: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.checked.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.checked.html
new file mode 100644
index 00000000..2678cf25
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.checked.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>checked</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the checked state.</p>
+ <p>Default: "checked"</p>
+ <p class="highlight_red">Please don't set the other node attribute which zTree used. (e.g., checkedOld)</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. set the 'isChecked' attribute to save the checked state.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ checked: "isChecked"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.children.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.children.html
new file mode 100644
index 00000000..321a1a7d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.children.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>children</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the child nodes.</p>
+ <p>Default: "children"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'nodes' attribute to save the child nodes.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ children: "nodes"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.name.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.name.html
new file mode 100644
index 00000000..0208c559
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.name.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>name</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the node name.</p>
+ <p>Default: "name"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'ename' attribute to save the node name.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ name: "ename"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.title.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.title.html
new file mode 100644
index 00000000..96540eb6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.title.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>title</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the 'title' attribute of node DOM. It is valid when <span class="highlight_red">[setting.view.showTitle = true]</span></p>
+ <p class="highlight_red">If set it to "", the title of node DOM will be same as 'setting.data.key.name' attribute.</p>
+ <p>Default: ""</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'fullName' attribute to save the title of node DOM.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ title: "fullName"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.url.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.url.html
new file mode 100644
index 00000000..e9a08cea
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.key.url.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>url</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the node link's url.</p>
+ <p class="highlight_red">Special: If the nodes's data can only use the 'url' attribute, and don't use the link to jump feature, you can modify this attribute to any nonexistent attribute.</p>
+ <p>Default: "url"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'xUrl' attribute to save the node link's url.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ url: "xUrl"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.enable.html
new file mode 100644
index 00000000..7ea21db3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.enable.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.simpleData.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set zTree's node to accept the simple data format, when zTree is initialized or when ajax get / or when use <span class="highlight_red">addNodes</span> method.</p>
+ <p>Don't have to generate the complex nested data.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: zTree's node accept the simple data format.</p>
+ <p> false means: zTree's node only accept the nested data format.</p>
+ <p class="highlight_red">If set it is true, you must set the other attributes in 'setting.data.simpleData'. (e.g., idKey, pIdKey, rootPId) And let the data satisfy the parent-child relationship.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html
new file mode 100644
index 00000000..43df2605
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>idKey</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save node data's unique identifier. It is valid when <span class="highlight_red">[setting.data.simpleData.enable = true]</span></p>
+ <p>Default: "id"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html
new file mode 100644
index 00000000..8378c6e3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>pIdKey</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save its parent node data's unique identifier. It is valid when <span class="highlight_red">[setting.data.simpleData.enable = true]</span></p>
+ <p>Default: "pId"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html
new file mode 100644
index 00000000..61c9bbd0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.data.simpleData.</span>rootPId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set the default value of root's 'pIdKey' specified attribute values​​. It is valid when <span class="highlight_red">[setting.data.simpleData.enable = true]</span></p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html
new file mode 100644
index 00000000..804ee66a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>autoExpandTrigger</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag node cause the parent node is automatically expanded, set whether to allow to trigger the 'onExpand' callback. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: trigger the 'onExpand' callback.</p>
+ <p> false means: don't trigger the 'onExpand' callback.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set to allow to trigger the 'onExpand' callback</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoExpandTrigger: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html
new file mode 100644
index 00000000..74982afa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>autoOpenTime</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Drag to the parent node, the parent node auto expand time interval. (Unit: ms) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: 500</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When drag node to other parent node, expand it at once.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoOpenTime: 0
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html
new file mode 100644
index 00000000..edbb752b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMax</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag a node to root, the zTree's inner border width. (Unit: px) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: 10</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. adjust the inner border width is 20px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMax: 20
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html
new file mode 100644
index 00000000..e8458530
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMin</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag a node to root, the zTree's outer border width. (Unit: px) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: -5</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. adjust the outer border width is 10px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMin: -10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.inner.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.inner.html
new file mode 100644
index 00000000..1065df3b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.inner.html
@@ -0,0 +1,60 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>inner</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag one node to the target node, set whether to allow the node to be the target node's child. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">If the target node is root, so zTree will only trigger 'inner' and not trigger 'prev / next'.</p>
+ <p class="highlight_red">This function mainly for the appropriate limit drag and drop (auxiliary arrow), it requires a combination of 'prev, next' together, to achieve full functionality.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: allow the node to be the target node's child.</p>
+ <p> false means: don't allow the node to be the target node's child.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are draged over.</p>
+ <p class="highlight_red">If the treeNodes will be root node, the targetNode = null</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag the node to the target node's inner.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: false
+ }
+ }
+};
+......</code></pre>
+ <h4>2. disable to drag the node to be root node's child.</h4>
+ <pre xmlns=""><code>function canInner(treeId, nodes, targetNode) {
+ return !(targetNode && targetNode.level === 0);
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: canInner
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html
new file mode 100644
index 00000000..1207d2ae
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isCopy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag-drop node, set whether to allow to copy node. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Rules Description</h3>
+ <div class="desc">
+ <p>1. If isCopy = true and isMove = true, when drag-drop node, press Ctrl-Key or Cmd-key can copy node, don't press Ctrl-Key or Cmd-key can move node.</p>
+ <p>2. If isCopy = true and isMove = false, when drag-drop node, will copy node.</p>
+ <p>3. If isCopy = false and isMove = true, when drag-drop node, will move node.</p>
+ <p>4. If isCopy = false and isMove = false, so disable to drag-drop node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. all of the drag-drop operation will copy node.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: true,
+ isMove: false
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isMove.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isMove.html
new file mode 100644
index 00000000..e4a7ca3a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.isMove.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isMove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag-drop node, set whether to allow to move node. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Rules Description</h3>
+ <div class="desc">
+ <p>1. If isCopy = true and isMove = true, when drag-drop node, press Ctrl-Key or Cmd-key can copy node, don't press Ctrl-Key or Cmd-key can move node.</p>
+ <p>2. If isCopy = true and isMove = false, when drag-drop node, will copy node.</p>
+ <p>3. If isCopy = false and isMove = true, when drag-drop node, will move node.</p>
+ <p>4. If isCopy = false and isMove = false, so disable to drag-drop node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. all of the drag-drop operation will move node.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: false,
+ isMove: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html
new file mode 100644
index 00000000..dbc3ae47
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>maxShowNodeNum</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When dragging more than one sibling node, the floating layer shows the maximum number of nodes. zTree using '...' instead of redundant nodes. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: 5</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the maximum number is 10</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ maxShowNodeNum: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html
new file mode 100644
index 00000000..8270a993
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>minMoveSize</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The minimum offset which used to determine the drag operator start. (Unit: px) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">Please adjust the value according to needs. Note: If it is too small, will easily lead to misoperation when you click mouse.</p>
+ <p>Default: 5</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the minimum offset is 10px.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ minMoveSize: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.next.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.next.html
new file mode 100644
index 00000000..82eb6fba
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.next.html
@@ -0,0 +1,59 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>next</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag one node to the target node, set whether to allow the node to be the target node's next sibling. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">If the target node is root, so zTree will only trigger 'inner' and not trigger 'prev / next'.</p>
+ <p class="highlight_red">This function mainly for the appropriate limit drag and drop (auxiliary arrow), it requires a combination of 'prev, inner' together, to achieve full functionality.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: allow the node to be the target node's next sibling.</p>
+ <p> false means: don't allow the node to be the target node's next sibling.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are draged over.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag the node to the target node's next sibling.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: false,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. disable to drag the node to be all of the parent nodes's next sibling.</h4>
+ <pre xmlns=""><code>function canNext(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: canNext,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.prev.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.prev.html
new file mode 100644
index 00000000..de6f0c82
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.drag.prev.html
@@ -0,0 +1,59 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>prev</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag one node to the target node, set whether to allow the node to be the target node's previous sibling. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">If the target node is root, so zTree will only trigger 'inner' and not trigger 'prev / next'.</p>
+ <p class="highlight_red">This function mainly for the appropriate limit drag and drop (auxiliary arrow), it requires a combination of 'next, inner' together, to achieve full functionality.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: allow the node to be the target node's previous sibling.</p>
+ <p> false means: don't allow the node to be the target node's previous sibling.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are draged over.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag the node to the target node's previous sibling.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: false,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. disable to drag the node to be all of the parent nodes's previous sibling.</h4>
+ <pre xmlns=""><code>function canPrev(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: canPrev,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html
new file mode 100644
index 00000000..a030359d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>editNameSelectAll</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When edit node's name, the text in input is selected or unselected. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: when show the input, the text in input is selected</p>
+ <p> false means: when show the input, the text in input is not selected</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When edit node's name, the text in input is selected.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ editNameSelectAll: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.enable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.enable.html
new file mode 100644
index 00000000..ec9d2b31
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.enable.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set zTree is in edit mode</p>
+ <p class="highlight_red">Please set this attribute before zTree initialization. If you need to change the edit mode after the initialization, please use zTreeObj.setEditable() method.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: zTree is in edit mode.</p>
+ <p> false means: zTree is not in edit mode.</p>
+ </div>
+ <h3>Editing Rules Description</h3>
+ <div class="desc">
+ <p>1. When click the node, it will not open '<span class="highlight_red">node.url</span>' specified URL.
+<br/>2. Support for dynamic tree editing.
+<br/>3. You can drag-drop nodes, and support drag-drop nodes between multiple trees.
+<br/>4. Support use drag-drop to copy or move the node. (Reference: <span class="highlight_red">setting.edit.drag.isCopy / setting.edit.drag.isMove</span>)
+<br/>5. You can use the Edit button to modify the name attribute.
+<br/>6. You can use the Remove button to remove the node.
+<br/>
+ </p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. edit the tree</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.removeTitle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.removeTitle.html
new file mode 100644
index 00000000..e2175279
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.removeTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>removeTitle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>the title of the remove button DOM. It is valid when <span class="highlight_red">[setting.edit.enable = true & setting.edit.showRemoveBtn = true]</span></p>
+ <p>Default: "remove"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When the mouse over the remove button, the browser auto pop-up message content.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the remove button</p>
+ <h4 class="topLine"><b>Return </b><span>String</span></h4>
+ <p>Return value is same as 'String Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Set title is 'remove the node' about all the remove button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: "remove the node"
+ }
+};
+......</code></pre>
+ <h4>2. Set title is 'remove the parent node' about the parent node, and is 'remove the leaf node' about the leaf node</h4>
+ <pre xmlns=""><code>function setRemoveTitle(treeId, treeNode) {
+ return treeNode.isParent ? "remove the parent node":"remove the leaf node";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: setRemoveTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.renameTitle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.renameTitle.html
new file mode 100644
index 00000000..b8ce5a6b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.renameTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>renameTitle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>the title of the rename button DOM. It is valid when <span class="highlight_red">[setting.edit.enable = true & setting.edit.showRenameBtn = true]</span></p>
+ <p>Default: "rename"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When the mouse over the rename button, the browser auto pop-up message content.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the rename button</p>
+ <h4 class="topLine"><b>Return </b><span>String</span></h4>
+ <p>return value is same as 'String Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Set title is 'rename the node' about all the rename button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: "rename the node"
+ }
+};
+......</code></pre>
+ <h4>2. Set title is 'rename the parent node' about the parent node, and is 'rename the leaf node' about the leaf node</h4>
+ <pre xmlns=""><code>function setRenameTitle(treeId, treeNode) {
+ return treeNode.isParent ? "rename the parent node":"rename the leaf node";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: setRenameTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html
new file mode 100644
index 00000000..f0f1fe15
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRemoveBtn</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide the remove button. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>When you click the remove button:</p>
+ <p>1. zTree will trigger the <span class="highlight_red">setting.callback.beforeRemove</span> callback, and you can decide whether to allow delete.</p>
+ <p>2. If you don't set the 'beforeRemove' or the 'beforeRemove' callback return true, so zTree will trigger the <span class="highlight_red">setting.callback.onRemove</span> callback after remove the node.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show the remove button</p>
+ <p> false means: hide the remove button</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the remove button</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide the remove button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide the remove button of parent node</h4>
+ <pre xmlns=""><code>function setRemoveBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: setRemoveBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html
new file mode 100644
index 00000000..4fe2f581
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html
@@ -0,0 +1,52 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRenameBtn</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide the rename button. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>When you click the rename button:</p>
+ <p>1. Click the rename button, you can rename the node.</p>
+ <p>2. After rename operation (the input DOM blur or press the Enter Key), zTree will trigger the <span class="highlight_red">setting.callback.beforeRename</span> callback, and you can decide whether to allow rename.</p>
+ <p>3. If the 'beforeRename' callback return false, so zTree will keep the edit status. (Press the ESC key, can be restored to the original state.</p>
+ <p>4. If you don't set the 'beforeRename' or the 'beforeRename' callback return true, so zTree will trigger the <span class="highlight_red">setting.callback.onRename</span> callback after rename the node.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show the rename button</p>
+ <p> false means: hide the rename button</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the rename button</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide the rename button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide the rename button of parent node</h4>
+ <pre xmlns=""><code>function setRenameBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: setRenameBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeId.html
new file mode 100644
index 00000000..e4b04b37
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeId.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.</span>treeId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree unique identifier. After the initialization, it equals to the id attribute value of the user-defined zTree container.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeObj.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeObj.html
new file mode 100644
index 00000000..30eb66c4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.treeObj.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Object</span><span class="path">setting.</span>treeObj</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree DOM's jQuery object, the main function: easy to internal operations.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addDiyDom.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addDiyDom.html
new file mode 100644
index 00000000..fa22befd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addDiyDom.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addDiyDom</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>This function used to display the custom control on the node.</p>
+ <p class="highlight_red">1. If you have huge node data, please note: this function will affect the initialization performance. If not required, it is recommended not to use this function.</p>
+ <p class="highlight_red">2. This function is an advanced application, please make sure that a better understanding of zTree before you use it.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which display the custom control.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Display button in all nodes.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addDiyDom: addDiyDom
+ }
+};
+function addDiyDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt; &lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addHoverDom.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addHoverDom.html
new file mode 100644
index 00000000..1ea8b6d9
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.addHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addHoverDom</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to display custom control when mouse move over the node. (e.g. the rename and remove button)</p>
+ <p class="highlight_red">If you use this function, so must set <span class="highlight_red">setting.view.removeHoverDom</span>, please make sure that a better understanding of zTree before you use it.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to display the custom control.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Display a button when mouse move over the node, and hide the button when mouse move out.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html
new file mode 100644
index 00000000..44ab90d0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>autoCancelSelected</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When click the selected node while pressing the Ctrl-key or Cmd-key, allow to cancel selected the node.</p>
+ <p class="highlight_red">If you don't need this function, please set to false.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: press the Ctrl-key or Cmd-key, can cancel selected node.</p>
+ <p> false means: press the Ctrl-key or Cmd-key, can't cancel selected node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Press the Ctrl-key or Cmd-key, can't cancel selected node.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ autoCancelSelected: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.dblClickExpand.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.dblClickExpand.html
new file mode 100644
index 00000000..25176240
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.dblClickExpand.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>dblClickExpand</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When double-click the parent node, 'dblClickExpand' is used to decide whether to expand the parent node.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: When double-click the parent node, zTree will expand the parent node.</p>
+ <p> false means: When double-click the parent node, zTree will not expand the parent node.</p>
+ </div>
+ <h3>Function Pamameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which be double-clicked.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Example of setting</h3>
+ <h4>1. When double-click the parent node, zTree will not expand the parent node.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ dblClickExpand: false
+ }
+};
+......</code></pre>
+ <h4>2. When double-click the parent node, zTree will expand the parent node which level>0.</h4>
+ <pre xmlns=""><code>function dblClickExpand(treeId, treeNode) {
+ return treeNode.level > 0;
+};
+var setting = {
+ view: {
+ dblClickExpand: dblClickExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.expandSpeed.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.expandSpeed.html
new file mode 100644
index 00000000..1911e74e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.expandSpeed.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.view.</span>expandSpeed</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The animation speed of expand or collapse node. As same as 'speed' parameter in jQuery</p>
+ <p class="highlight_red">In order to ensure zTree operating speed, if use the IE6, zTree will not use animation.</p>
+ <p>Default: "fast"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>e.g. "slow", "normal", or "fast"</p>
+ <p class="highlight_red">If set to "", zTree will not use animation.</p>
+ </div>
+ <h3>Number Format</h3>
+ <div class="desc">
+ <p>How long the animation will run. [Unit: ms] (e.g. 1000)</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the animation speed to slow</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ expandSpeed: "slow"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.fontCss.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.fontCss.html
new file mode 100644
index 00000000..1ad5f516
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.fontCss.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON / Function(treeId, treeNode)</span><span class="path">setting.view.</span>fontCss</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Personalized text style, only applies to &lt;A&gt; object in the node DOM</p>
+ <p>Default: {}</p>
+ </div>
+ </div>
+ <h3>JSON Format</h3>
+ <div class="desc">
+ <p>As same as .css() method in jQuery. e.g. <span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which use the personalized text style</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>Return value is same as 'JSON Format'. e.g. <span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Don't modify css file, and set the node name's color to red</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ fontCss : {color:"red"}
+ }
+};</code></pre>
+ <h4>2. Don't modify css file, and set the root node name's color to red</h4>
+ <pre xmlns=""><code>function setFontCss(treeId, treeNode) {
+ return treeNode.level == 0 ? {color:"red"} : {};
+};
+var setting = {
+ view: {
+ fontCss: setFontCss
+ }
+};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.nameIsHTML.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.nameIsHTML.html
new file mode 100644
index 00000000..4fe19ada
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.nameIsHTML.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>nameIsHTML</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to use HTML in 'name' attribute.</p>
+ <p class="highlight_red">If allow HTML, please do check to avoid security issues, e.g. JavaScript Injection...</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: 'name' attribute can be HTML.</p>
+ <p> false means: 'name' attribute is only TEXT.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set to allow HTML</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ nameIsHTML: true
+ }
+};
+var node = {"name":"&lt;font color='red'&gt;test&lt;/font&gt;"};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.removeHoverDom.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.removeHoverDom.html
new file mode 100644
index 00000000..0c70aff2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.removeHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>removeHoverDom</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to hide custom control when mouse move out the node. (e.g. the rename and remove button)</p>
+ <p class="highlight_red">If you use this function, so must set <span class="highlight_red">setting.view.addHoverDom</span>, please make sure that a better understanding of zTree before you use it.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to hide the custom control.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Display a button when mouse move over the node, and hide the button when mouse move out.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.selectedMulti.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.selectedMulti.html
new file mode 100644
index 00000000..074fb685
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.selectedMulti.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>selectedMulti</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set whether to allow select multiple nodes.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true mean: you can select multiple nodes.</p>
+ <p> false mean: you can only select one node.</p>
+ <p class="highlight_red">1. Press Ctrl-key or Cmd-key, you can select multiple nodes.</p>
+ <p class="highlight_red">2ã€This attribute don't affect the feature of cancel select node. ( please see setting.view.autoCancelSelected )</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Only select one node.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ selectedMulti: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showIcon.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showIcon.html
new file mode 100644
index 00000000..9adf0034
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showIcon.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showIcon</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide node icon.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show node icon.</p>
+ <p> false means: hide node icon.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to show icon.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide node icon</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showIcon: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide node icon which level=2</h4>
+ <pre xmlns=""><code>function showIconForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showIcon: showIconForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showLine.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showLine.html
new file mode 100644
index 00000000..a5540149
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showLine.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>showLine</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide line.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show line.</p>
+ <p> false means: hide line.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Hide line</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showLine: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showTitle.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showTitle.html
new file mode 100644
index 00000000..66bb26e6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.showTitle.html
@@ -0,0 +1,47 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showTitle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide the 'title' attribute of node DOM.</p>
+ <p class="highlight_red">Please see the <span class="highlight_red">setting.data.key.title</span> attribute</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show the 'title' attribute of node DOM.</p>
+ <p> false means: hide the 'title' attribute of node DOM.</p>
+ <p class="highlight_red">When setting.view.showTitle = true & setting.data.key.title = '', zTree will set the 'setting.data.key.name' attribute to the 'setting.data.key.title'.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to show title.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide the 'title' attribute of node DOM.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showTitle: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide the 'title' attribute of node DOM which level=2.</h4>
+ <pre xmlns=""><code>function showTitleForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showTitle: showTitleForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html
new file mode 100644
index 00000000..a3809300
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>txtSelectedEnable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to allow or don't allow to select the text which in zTree's DOM.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: Allow to select the txt which in zTree's DOM.</p>
+ <p> false means: Don't allow to select the txt which in zTree's DOM.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Allow to select the txt which in zTree's DOM.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ txtSelectedEnable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Child_State.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Child_State.html
new file mode 100644
index 00000000..48efb79a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Child_State.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>check_Child_State</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the node's half-checked state about its all child nodes's checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">zTree v3.x provides treeNode.getCheckStatus () method to get an accurate the half-checked status.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Number Format</h3>
+ <div class="desc">
+ <p>Rules:</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>Checked Status Description</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>Has no child nodes or all child nodes's 'nocheck' attribute is true.</td></tr>
+ <tr><td>0</td><td>All of the child nodes has not been checked.</td></tr>
+ <tr><td>1</td><td>Some of the child nodes has been checked.</td></tr>
+ <tr><td>2</td><td>All of the child nodes has been checked.</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>Checked Status Description</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>Has no child nodes or all child nodes's 'nocheck' attribute is true.</td></tr>
+ <tr><td>0</td><td>All of the child nodes has not been checked.</td></tr>
+ <tr><td>2</td><td>Some of the child nodes has been checked.</td></tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Focus.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Focus.html
new file mode 100644
index 00000000..77b73598
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.check_Focus.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>check_Focus</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the status which the checkbox or radio get focus. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: mouse move over the checkbox</p>
+ <p>false means: mouse move out the checkbox</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checked.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checked.html
new file mode 100644
index 00000000..8a55f3d6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checked.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checked</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The checked status about node's checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false]</span></p>
+ <p class="highlight_red">1. If change the 'checked' to other attribute, please set the 'setting.data.key.checked' attribute.</p>
+ <p class="highlight_red">2. If you create node data, and set 'checked' attribute to true, zTree will check this node's checkbox or radio when zTree is initialized.</p>
+ <p class="highlight_red">3. Use the treeObj.checkNode or checkAllNodes or updateNode method, you can check or uncheck the node. Please see the API about these methods.</p>
+ <p class="highlight_red">4. zTree support identification string 'true' & 'false'.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: check the checkbox or radio when zTree is initialized.</p>
+ <p>false means: uncheck the checkbox or radio when zTree is initialized.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. check the checkbox when zTree is initialized</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", checked:true },
+{ "id":2, "name":"test2", checked:true }
+]</code></pre>
+ <h4>2. Get the checked status of the first root node</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checked = treeObj.getNodes()[0].checked;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checkedOld.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checkedOld.html
new file mode 100644
index 00000000..ee516260
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.checkedOld.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checkedOld</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The checked status about node's checkbox or radio when zTree was initialized. It is valid when <span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false]</span></p>
+ <p class="highlight_red">1. Do not initialize it, it will be initialized when the node is initialized.</p>
+ <p class="highlight_red">2. If you need to achieve special features, you can use the zTreeObj.getChangeCheckedNodes method and modify the value of 'checkedOld' attribute.</p>
+ <p>Default: the value of 'checked' attribute when zTree is initialized</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: the checkbox or radio is checked when zTree is initialized.</p>
+ <p>false means: the checkbox or radio is not checked when zTree is initialized.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the original checked status of the first root node</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checkedOld = treeObj.getNodes()[0].checkedOld;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.children.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.children.html
new file mode 100644
index 00000000..d765bb96
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.children.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(JSON)</span><span class="path">treeNode.</span>children</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The data collections of node's child nodes.</p>
+ <p class="highlight_red">1. If change the 'children' to other attribute, please set the 'setting.data.key.children' attribute.</p>
+ <p class="highlight_red">2. If you set to use dynamic tree, when a node is expanded which 'isParent' attribute is true and which has no child nodes, zTree will use ajax to get its child nodes.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>Array(JSON) Format</h3>
+ <div class="desc">
+ <p>Standard JSON Data object</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Use the standard JSON data object.</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1",
+ children: [
+ { "id":3, "name":"test3"},
+ { "id":4, "name":"test4"},
+ { "id":5, "name":"test5"}
+ ]
+},
+{ "id":2, "name":"test2" }
+]</code></pre>
+ <h4>2. Get the first root node's child nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes()[0].children;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.chkDisabled.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.chkDisabled.html
new file mode 100644
index 00000000..7a5fcf38
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.chkDisabled.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>chkDisabled</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1. Set node's checkbox / radio to disabled. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">2. zTree support identification string 'true' & 'false'.</p>
+ <p class="highlight_red">3. Please don't change this attribute of the nodes which have been created. If you want to disable or undisable the nodes, please use 'setChkDisabled()' methods.</p>
+ <p class="highlight_red">4. When zTree initialize the nodes, if you need to the child nodes automatically inherit the 'chkDisabled' attribute, please see 'setting.check.chkDisabledInherit'.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p class="highlight_red">true means: this node's checkbox / radio is disabled.</p>
+ <p class="highlight_red">false means: this node's checkbox / radio is able.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. disable some node's checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "checked":true, "chkDisabled":true},
+ { "id":2, "name":"test2", "chkDisabled":true},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.click.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.click.html
new file mode 100644
index 00000000..1f9db626
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.click.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>click</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Simple click event operations. As same as : (onclick ="...") the code. If the operation is more complex, please use the onClick callback.</p>
+ <p class="highlight_red">Because IE is different to other browsers in operating the event of ‘onclick’ and ‘click’ coexistence, please do not use this parameter to control whether to allow the redirection operation (for example: treeNode.click = "return false;"). If there is similar requirements, please do not use the 'url' attribute to save the website address, but use the 'onClick' callback to control jumps.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Standard javascript syntax, for example: alert ("test"); etc.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. When click this node, will alert msg.</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn", "click":"alert('test');"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.diy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.diy.html
new file mode 100644
index 00000000..68c39ba6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.diy.html
@@ -0,0 +1,15 @@
+<div class="apiDetail">
+<div>
+ <h2><span>?</span><span class="path">treeNode.</span>* DIY *</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to save other custom data of node, do not use the same attribute name with ztree used, the user can freely set.</p>
+ </div>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Use 'ename' attribute to save more info</h4>
+ <pre xmlns=""><code>var node = { "id":1, "name":"test1", "ename":"test eName"};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.editNameFlag.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.editNameFlag.html
new file mode 100644
index 00000000..f60ef2ab
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.editNameFlag.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>editNameFlag</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to save the node editing name status. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: node is being edited.</p>
+ <p>false means: node is not being edited.</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getCheckStatus.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getCheckStatus.html
new file mode 100644
index 00000000..3c9a2e6b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getCheckStatus.html
@@ -0,0 +1,63 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getCheckStatus</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the node's half-checked status of checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <pre xmlns=""><code>{
+ checked: true, //As same as 'treeNode.checked'
+ half: true //Rule the table below
+}</code></pre>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>false</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first root node's half-checked status</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var halfCheck = treeObj.getNodes()[0].getCheckStatus();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getNextNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getNextNode.html
new file mode 100644
index 00000000..755aa6ee
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getNextNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getNextNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the treeNode's next sibling node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <p>JSON data object of the treeNode's next sibling node</p>
+ <p class="highlight_red">If have not the next node, return null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's next sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getNextNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getParentNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getParentNode.html
new file mode 100644
index 00000000..16bab306
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getParentNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getParentNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the treeNode's parent node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <p>JSON data object of treeNode's parent node.</p>
+ <p class="highlight_red">If treeNode is root, return null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's parent node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getParentNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getPreNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getPreNode.html
new file mode 100644
index 00000000..f6745b14
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.getPreNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getPreNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the treeNode's previous sibling node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <p>JSON data object of the treeNode's previous sibling node</p>
+ <p class="highlight_red">If have not the previous node, return null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's previous sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getPreNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.halfCheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.halfCheck.html
new file mode 100644
index 00000000..8375326b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.halfCheck.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>halfCheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Force node checkBox / radio to the half-checked status. It is valid when <span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false]</span></p>
+ <p class="highlight_red">1. If you force to the half-checked status, zTree will not automatically calculated the half-checked status about this node.</p>
+ <p class="highlight_red">2. Until you set treeNode.halfCheck to false or null, zTree will automatically calculated the half-checked status about this node.</p>
+ <p class="highlight_red">3. zTree support identification string 'true' & 'false'.</p>
+ <p>Defaul: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: the checkbox or radio is half-checked when zTree is initialized.</p>
+ <p>false means: the half-checked status will be automatically calculated</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. set the half-checked status when zTree is initialized</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", isParent:true, checked:true, halfCheck:true },
+{ "id":2, "name":"test2", isParent:true, checked:false, halfCheck:true },
+{ "id":3, "name":"test3", isParent:true, checked:true },
+{ "id":4, "name":"test4", isParent:true, checked:false }
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.icon.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.icon.html
new file mode 100644
index 00000000..4e1c99fa
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.icon.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>icon</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>URL path of node's custom icon.</p>
+ <p class="highlight_red">1. If you only set the 'icon' attribute to parent node, the parent node will only show one icon when it is expanded or collapsed.</p>
+ <p class="highlight_red">2. If you need to show two icons when it is expanded or collapsed, please set the 'treeNode.iconOpen' and 'treeNode.iconClose' attribute.</p>
+ <p class="highlight_red">3. If you need to use css to set the custom icon, please set the 'treeNode.iconSkin' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Icon image url can be a relative path or absolute path.</p>
+ <p class="highlight_red">If use a relative path, please note the relationship between icon image and the page, ensure the correct image path.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", icon:"/img/parent.gif"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconClose.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconClose.html
new file mode 100644
index 00000000..2259e8f3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconClose.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconClose</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>URL path of parent node's custom icon when it is collapsed.</p>
+ <p class="highlight_red">1. Only parent node support this attribute.</p>
+ <p class="highlight_red">2. This attribute must be used simultaneously with 'iconOpen' attribute.</p>
+ <p class="highlight_red">3. If you need to use css to set the custom icon, please set the 'treeNode.iconSkin' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Icon image url can be a relative path or absolute path.</p>
+ <p class="highlight_red">If use a relative path, please note the relationship between icon image and the page, ensure the correct image path.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", icon:"/img/parent.gif"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconOpen.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconOpen.html
new file mode 100644
index 00000000..3203615d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconOpen.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconOpen</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>URL path of parent node's custom icon when it is expanded.</p>
+ <p class="highlight_red">1. Only parent node support this attribute.</p>
+ <p class="highlight_red">2. This attribute must be used simultaneously with 'iconClose' attribute.</p>
+ <p class="highlight_red">3. If you need to use css to set the custom icon, please set the 'treeNode.iconSkin' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Icon image url can be a relative path or absolute path.</p>
+ <p class="highlight_red">If use a relative path, please note the relationship between icon image and the page, ensure the correct image path.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", icon:"/img/parent.gif"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconSkin.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconSkin.html
new file mode 100644
index 00000000..fca7fbf2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.iconSkin.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconSkin</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The className of node's custom icon.</p>
+ <p class="highlight_red">1. You need to modify the css, add the definition of className.</p>
+ <p class="highlight_red">2. The css is simple, convenient, and support the parent node to switch icons when it is expanded or collapsed.</p>
+ <p class="highlight_red">3. Recommend the use of CSS Sprites, can reduce repeating load the image, to avoid image flicker.</p>
+ <p class="highlight_red">4. The 'iconSkin' support IE6 in zTree v3.x.</p>
+ <p class="highlight_red">5. If you need to use image's URL to set the custom icon, please set the 'treeNode.icon' or 'treeNode.iconOpen' or 'treeNode.iconClose' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>The string about custom icon's className.</p>
+ </div>
+ <h3>Examples of css & treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>css example:
+.ztree li span.button.diy01_ico_open, .ztree li span.button.diy01_ico_close{...}
+
+.ztree li span.button.diy02_ico_open{...}
+.ztree li span.button.diy02_ico_close{...}
+
+.ztree li span.button.diy03_ico_docu{...}
+
+node's data example:
+var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", iconSkin:"diy01"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconSkin:"diy02"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", iconSkin:"diy03"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isAjaxing.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isAjaxing.html
new file mode 100644
index 00000000..ddadf41b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isAjaxing.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isAjaxing</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node's child nodes being loaded asynchronously.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node's child nodes is being loaded asynchronously</p>
+ <p> false means: the node's child nodes is not being loaded asynchronously</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node's child nodes being loaded asynchronously</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isAjaxing = sNodes[0].isAjaxing;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isFirstNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isFirstNode.html
new file mode 100644
index 00000000..a8ee61ce
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isFirstNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isFirstNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node is the sibling nodes's first node.</p>
+ <p class="highlight_red">If you use the 'exhide' pack, so this attribute will only support the node which be shown. </p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node is first node.</p>
+ <p> false means: the node is not first node.</p>
+ <p class="highlight_red">If the node has been hidden, isFirstNode = false</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node is the sibling nodes's first node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isFirstNode = sNodes[0].isFirstNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHidden.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHidden.html
new file mode 100644
index 00000000..3a07b94c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHidden.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHidden</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node has been hidden.</p>
+ <p class="highlight_red">1. When initialize zTree, the nodes which be set 'isHidden = true' will be hidden.</p>
+ <p class="highlight_red"></p>
+ <p class="highlight_red">2. Please don't change this attribute of the nodes which have been created. If you want to hide or show nodes, please use 'hideNode() / hideNodes() / showNode() / showNodes()' methods.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: this node is hidden.</p>
+ <p> false means: this node is shown.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first root node has been hidden.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getNodes();
+if (sNodes.length > 0) {
+ var isHidden = sNodes[0].isHidden;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHover.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHover.html
new file mode 100644
index 00000000..e18ed0cf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isHover.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHover</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the hover status of node's DOM. For 'setting.view.addHoverDom / removeHoverDom'.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: the node's DOM is in hover.</p>
+ <p>false means: the node's DOM is not in hover.</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isLastNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isLastNode.html
new file mode 100644
index 00000000..cd2ca26b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isLastNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isLastNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node is the sibling nodes's last node.</p>
+ <p class="highlight_red">If you use the 'exhide' pack, so this attribute will only support the node which be shown. </p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node is last node.</p>
+ <p> false means: the node is not last node.</p>
+ <p class="highlight_red">If the node has been hidden, isLastNode = false</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node is the sibling nodes's last node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isLastNode = sNodes[0].isLastNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isParent.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isParent.html
new file mode 100644
index 00000000..dad4b819
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.isParent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isParent</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node is the parent node.</p>
+ <p class="highlight_red">1. When zTree initialize the node data, the node which has children is set to true, otherwise false.</p>
+ <p class="highlight_red">2. When zTree initialize the node data, if set treeNode.isParent to true, the node will be set to be parent node.</p>
+ <p class="highlight_red">3. In order to solve the problem of someone make json data, supporting "false", "true" format of the data string.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node is parent node.</p>
+ <p> false means: the node is not parent node.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node is the parent node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isParent = sNodes[0].isParent;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.level.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.level.html
new file mode 100644
index 00000000..d1511624
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.level.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>level</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The level of node</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Number Format</h3>
+ <div class="desc">
+ <p class="highlight_red">The root node's level = 0, and next level = 1, ...</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's level</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var level = sNodes[0].level;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.name.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.name.html
new file mode 100644
index 00000000..fa508ccb
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.name.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>name</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node's name</p>
+ <p class="highlight_red">1. If you want to change 'name' attribute, please modify the 'setting.data.key.name' attribute.</p>
+ <p>Default: undenfined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>String object. The HTML special characters are escaped</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set node's name to 'test1', 'test2', 'test3'</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1"},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.nocheck.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.nocheck.html
new file mode 100644
index 00000000..6c4880c8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.nocheck.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>nocheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1. Set node to hide the checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">2. zTree support identification string 'true' & 'false'.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p class="highlight_red">true means: the node hide the checkbox or radio, and don't affect the checked association, and don't affect its parent node's half-checked status.</p>
+ <p class="highlight_red">false means: the node show the checkbox or radio.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Hide some node's checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "nocheck":true},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.open.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.open.html
new file mode 100644
index 00000000..bc910de3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.open.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>open</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the parent node's expand status.</p>
+ <p class="highlight_red">1. When zTree initialize the node data, if you set treeNode.open = true, zTree will default expand this parent node.</p>
+ <p class="highlight_red">2. Leaf node's 'open' attribute is false.</p>
+ <p class="highlight_red">3. In order to solve the problem of someone make json data, supporting "false", "true" format of the data string.</p>
+ <p class="highlight_red">4. When setting.async.enable = false, the parent node will be expanded which have no child nodes and its attribute 'open' is true. (v3.5.15+) </p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the parent node is expanded.</p>
+ <p> false means: the parent node is collapsed.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's expand status.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isOpen = sNodes[0].open;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.parentTId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.parentTId.html
new file mode 100644
index 00000000..0bc2a6d6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.parentTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>parentTId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The unique identifier of node's parent node.</p>
+ <p class="highlight_red">1. zTree v3.x using 'parentTId' replaced the original 'parentNode' attribute, and increased getParentNode () method, in order to avoid the original 'parentNode' cause the clone () method infinite loop.</p>
+ <p class="highlight_red">2. Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>String object of node's parent node's tId. please see API about 'treeNode.tId'</p>
+ <p class="highlight_red">If treeNode is root node, parentTId is null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's parent node's tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var parentTId = sNodes[0].parentTId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.tId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.tId.html
new file mode 100644
index 00000000..18c2855a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.tId.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>tId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The unique identifier of node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>tId rules: setting.treeId + "_" + zTree counter</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var tId = sNodes[0].tId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.target.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.target.html
new file mode 100644
index 00000000..176a7a35
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.target.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>target</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to set the target where the node is clicked to open url. It is valid when <span class="highlight_red">[treeNode.url exists]</span></p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>As same as &lt;a&gt; tag's 'target' attribute. e.g. '_blank', '_self' or other window name.</p>
+ <p>if this attribute is omitted, zTree default set it to '_blank'</p>
+ </div>
+ <h3>Exmaples of treeNode</h3>
+ <h4>1. Set target is '_blank'</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "url":"http://myTest.com", "target":"_blank"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.url.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.url.html
new file mode 100644
index 00000000..55524455
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.url.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>url</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The URL of node link</p>
+ <p class="highlight_red">1. In edit mode (setting.edit.enable = true) , this feature fails. If you must use a similar feature, please use the 'onClick' callback for their own control.</p>
+ <p class="highlight_red">2. If you use the 'onClick' callback function to control opening URL , then set the URL in the other custom attribute, do not use the 'url' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>As same as &lt;a&gt; tag's 'href' attribute.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the URL is 'g.cn'</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.zAsync.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.zAsync.html
new file mode 100644
index 00000000..b3ff4145
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/treeNode.zAsync.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>zAsync</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the parent node's child nodes will be loaded asynchronously when the parent node is expanded.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ <p class="highlight_red">Default:false (the parent node which have no child nodes); true (the parent node which have child nodes or the leaf node)</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node's child nodes will not be loaded asynchronously when the parent node is expanded.</p>
+ <p> false means: the node's child nodes will be loaded asynchronously when the parent node is expanded.</p>
+ <p class="highlight_red"> This attribute will not effect to 'reAsyncChildNodes()' method</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node's child nodes has been loaded asynchronously</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var zAsync = sNodes[0].zAsync;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.addNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.addNodes.html
new file mode 100644
index 00000000..680ccc4e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.addNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, newNodes, isSilent)</span><span class="path">zTreeObj.</span>addNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Add nodes</p>
+ <p class="highlight_red">In order to avoid duplication data resulting from repeated initialization, zTree v3.x will automatically clone node data when zTree initialized or add nodes. If you need to get the data objects within the zTree, please get the return value of this method.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>The additional node's parent node. If additional node is root node, please the parentNode is null.</p>
+ <p class="highlight_red">Please ensure this node data object is a data object within zTree.</p>
+ <h4 class="topLine"><b>newNodes</b><span>JSON / Array(JSON)</span></h4>
+ <p>The node data's JSON object collection which need to increase, refer to 'treeNode treeNode data details'</p>
+ <p class="highlight_red">1. zTree v3.x support to add single node, that is, if you only add a node, you can don't use the array.</p>
+ <p class="highlight_red">2. If you use simple data model, please refer to the attributes within the 'setting.data.simpleData'.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>Set whether to automatically expand the parent node, after add nodes.</p>
+ <p>isSilent = true means: don't auto expand the parent node. Otherwise auto expand.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return the new nodes in zTree</p>
+ <p class="highlight_red">If the newNodes is single data object, the return value is a array with length is 1.</p>
+ <p class="highlight_red">Note: the node data JSON object in the return value is not equal to the JSON object in the 'newNodes'.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Add one root node to zTree which id is 'tree'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNode = {name:"newNode1"};
+newNode = treeObj.addNodes(null, newNode);
+</code></pre>
+ <h4>2. Add three root nodes to zTree which id is 'tree'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNodes = [{name:"newNode1"}, {name:"newNode2"}, {name:"newNode3"}];
+newNodes = treeObj.addNodes(null, newNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html
new file mode 100644
index 00000000..8afdae0b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(newName)</span><span class="path">zTreeObj.</span>cancelEditName</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Cancel the edit name status. Can restore the original name, and can also force assigned to a new name.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>newName</b><span>String</span></h4>
+ <p>Re given a new name</p>
+ <p class="highlight_red">If this parameter is omitted, then restore the original name.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Cancel edit name, and restore the original name.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName();
+</code></pre>
+ <h4>2. Cancel edit name , and set the new name.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName("test_new_name");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html
new file mode 100644
index 00000000..581c2d2b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>cancelSelectedNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To cancel the selected node.</p>
+ <p class="highlight_red">zTree v3.x support to select multiple nodes, so you can cancel a single selected node, and you can cancel all of the selected nodes too.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to cancel selected.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <p class="highlight_red">If you omit this parameter, zTree will cancel all of the selected nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Cancel all of the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelSelectedNode();
+</code></pre>
+ <h4>2. Cancel the first node of the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNode();
+if (nodes.length>0) {
+ treeObj.cancelSelectedNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html
new file mode 100644
index 00000000..276b6294
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>checkAllNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Check or unCheck all nodes which have been initialized. It is valid when <span class="highlight_red">[setting.check.enable = true & setting.check.chkStyle = "checkbox"]</span></p>
+ <p class="highlight_red">This method does not trigger 'beforeCheck' or 'onCheck' callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true means: check all nodes.</p>
+ <p>checked = false means: uncheck all nodes.</p>
+ <p class="highlight_red">Don't affect the node which 'nochecked' attribute is true.</p>
+ <p class="highlight_red">Don't affect the node is not loaded.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. check all nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.checkAllNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkNode.html
new file mode 100644
index 00000000..7411ef86
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.checkNode.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checked, checkTypeFlag, callbackFlag)</span><span class="path">zTreeObj.</span>checkNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Check or unCheck a single node. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Use checkNode() method of zTree v3.x can trigger 'beforeCheck' or 'onCheck' callback function. for reduce redundant code.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to be checked or unchecked.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true means: check node.</p>
+ <p>checked = false means: uncheck node.</p>
+ <p class="highlight_red">If this parameter is omitted, then toggle check or uncheck depend this node's expanded state.</p>
+ <p class="highlight_red">Don't affect the node which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true means: According to 'setting.check.chkboxType' attribute automatically check or uncheck the parent and child nodes.</p>
+ <p>checkTypeFlag = false means: only check or uncheck this node, don't affect its parent and child nodes.</p>
+ <p class="highlight_red">When checkTypeFlag = false and treeNode.checked = checked, will not trigger callback function.</p>
+ <p class="highlight_red">Don't affect the parent and child nodes which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true means: call this method, will trigger 'beforeCheck' & 'onCheck' callback.</p>
+ <p>callbackFlag = false means: call this method, will not trigger callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'callbackFlag = false'</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. check the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.checkNode(nodes[i], true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.copyNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.copyNode.html
new file mode 100644
index 00000000..a98e84de
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.copyNode.html
@@ -0,0 +1,47 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>copyNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Copy the node</p>
+ <p class="highlight_red">When copy nodes, zTree v3.x will clone nodes. If you need to get the data object in zTree, please get the return value of this method.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be target.</p>
+ <p class="highlight_red">If copy the node to root node, please set the 'targetNode' to null.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be copied.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>Copied to the target node's relative position.</p>
+ <p class="highlight_red">"inner" means: to be taregetNode's child node.</p>
+ <p class="highlight_red">"prev" means: to be taregetNode's previous sibling node.</p>
+ <p class="highlight_red">"next" means: to be taregetNode's next sibling node.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>After copy the node, whether to automatically expand its parent node.</p>
+ <p>isSilent = true means: don't expand its parent node.</p>
+ <p>isSilent = false or omit this parameter means: expand its parent node.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>return the new node in zTree</p>
+ <p class="highlight_red">Note: the node data JSON object in the return value is not equal to the treeNode.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Copy the second root node to the first root node's child node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. Copy the second root node to the first root node's previous sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "before");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.destroy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.destroy.html
new file mode 100644
index 00000000..80c52811
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.destroy.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">zTreeObj.</span>destroy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>From zTree v3.4, zTree support the method for destruction.</p>
+ <p>1. This method can destroy the zTreeObj's zTree.</p>
+ <p class="highlight_red">2. If you want to destory all of the zTrees, you can use the '$.fn.zTree.destroy()' method.</p>
+ <p class="highlight_red">3. If you want to use the tree which has been destroyed, you must use the 'init()' method at first.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. destroy the zTree which its id is 'treeDemo'</h4>
+ <pre xmlns=""><code>var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
+zTreeObj.destroy();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.editName.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.editName.html
new file mode 100644
index 00000000..92ac5c1c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.editName.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>editName</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Start editing the node's name.</p>
+ <p class="highlight_red">1. If need to cancel editing the node's name, please use cancelEditName(newName) method.</p>
+ <p class="highlight_red">2. This method can be used to set the editing node‘s input box to get focus.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be editing name</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Start editing the first selected node's name.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.editName(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandAll.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandAll.html
new file mode 100644
index 00000000..ef28a316
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandAll.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(expandFlag)</span><span class="path">zTreeObj.</span>expandAll</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Expand or collapse all nodes.</p>
+ <p class="highlight_red">This method does not trigger 'beforeExpand / onExpand' or 'beforeCollapse / onCollapse' callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true means: expand all nodes.</p>
+ <p>expandFlag = false means: collapse all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return the result of expand or collapse.</p>
+ <p>true means: expand all nodes</p>
+ <p>false means: collapse all nodes</p>
+ <p>null means: have no parent node to expand or collapse.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Expand all nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.expandAll(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandNode.html
new file mode 100644
index 00000000..f99ff77d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.expandNode.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, expandFlag, sonSign, focus, callbackFlag)</span><span class="path">zTreeObj.</span>expandNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Expand or collapse single node.</p>
+ <p class="highlight_red">Use expandNode() method of zTree v3.x can trigger 'beforeExpand / onExpand' or 'beforeCollapse / onCollapse' callback function. for reduce redundant code.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be expanded or collapsed</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true means: expand the node.</p>
+ <p>expandFlag = false means: collapse the node.</p>
+ <p class="highlight_red">If this parameter is omitted, then toggle expand or collapse depend this node's expanded state.</p>
+ <h4 class="topLine"><b>sonSign</b><span>Boolean</span></h4>
+ <p>sonSign = true means: expand or collapse all of the child nodes depend the 'expandFlag' parameter.</p>
+ <p>sonSign = false means: only expand or collapse this node.</p>
+ <p class="highlight_red">When sonSign = false and treeNode.open = expandFlag, will not trigger the callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'sonSign = false'.</p>
+ <h4 class="topLine"><b>focus</b><span>Boolean</span></h4>
+ <p>focus = true means: after expand or collapse, set the focus of this node for view.</p>
+ <p>focus = false means: after expand or coolapse, don't set the focus of this node.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'focus = true'.</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true means: call this method, will trigger 'beforeExpand / onExpand' or 'beforeCollapse / onCollapse' callback.</p>
+ <p>callbackFlag = false means: call this method, will not trigger callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'callbackFlag = false'</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return the result of expand or collapse.</p>
+ <p>true means: expand node</p>
+ <p>false means: collapse node</p>
+ <p>null means: the node is not parent node.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Expand the first selected node. (and expand this node's child nodes)</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.expandNode(nodes[0], true, true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html
new file mode 100644
index 00000000..d0f9cf3b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getChangeCheckedNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the collection of nodes which be changed checked status. (Compared with the original data checkedOld) It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return the collection of nodes which be changed checked status (Array)</p>
+ <p class="highlight_red">If you need to get the collection of nodes which changed the checked status, when nodes be checked or unchecked, so please set treeNode.checkedOld = treeNode.checked ( for all of the be changed checked status nodes ).</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the collection of nodes which be changed checked status</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getChangeCheckedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html
new file mode 100644
index 00000000..7a7c3b97
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>getCheckedNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the collection of nodes which be checked or unchecked. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true means: get the collection of nodes which be checked</p>
+ <p>checked = false means: get the collection of nodes which be unchecked</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'checked = true'</p>
+ <p class="highlight_red">Don't get the nodes which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return the collection of nodes which be checked or unchecked. (Array)</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the collection of nodes which be checked.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getCheckedNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html
new file mode 100644
index 00000000..05572e73
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodeByParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According to the node data attribute, search the node which exactly matches, and get the JSON object of node.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>The name of attribute which need to exactly match</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>The value which need to exactly match, can be any type, please ensure its type consistent with the attribute values.</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>JSON data object of the node which be searched.</p>
+ <p class="highlight_red">1. If search none node, return null.</p>
+ <p class="highlight_red">2. If there are many nodes can be searched, return the first node.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the node which its 'id' attribute is 1.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("id", 1, null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html
new file mode 100644
index 00000000..8fd26ea0
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(tId)</span><span class="path">zTreeObj.</span>getNodeByTId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According the unique identifier tId of zTree, quick get the node's JSON data object.</p>
+ <p class="highlight_red">Get the node from the cache, don't need to search from all nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>tId</b><span>String</span></h4>
+ <p>The unique identifier of node.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>JSON data object of the node which be searched.</p>
+ <p class="highlight_red">If no result, return null.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. 1. Search the node which its 'tId' attribute is 'tree_10'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByTId("tree_10");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html
new file mode 100644
index 00000000..ad828e7a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>getNodeIndex</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the node's index in the same level nodes. (start from 0)</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to get index.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Return </b><span>Number</span></h4>
+ <p class="highlight_red">return the index. (start from 0)</p>
+ <p class="highlight_red">If there is no this node, return -1.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the first selected node's index in the same level nodes.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ var index = treeObj.getNodeIndex(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodes.html
new file mode 100644
index 00000000..5906a434
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodes.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get all of the nodes in zTree</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return all of the nodes</p>
+ <p class="highlight_red">1. This array is a collection of the root nodes (the default child nodes are in the 'children' attributes);</p>
+ <p class="highlight_red">2. Traverse all the nodes need to use recursion, or the use of transformToArray() method make the nodes to be a simple array.</p>
+ <p class="highlight_red">3. For the asynchronous loading mode, can't get the nodes which are yet loaded.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get all of the nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html
new file mode 100644
index 00000000..2cd6baa8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(filter, isSingle, parentNode, invokeParam)</span><span class="path">zTreeObj.</span>getNodesByFilter</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Search the single node's data or collection of nodes's data by custom rules.</p>
+ <p class="highlight_red">Can be customized complex search rules.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>filter</b><span>Function</span></h4>
+ <p>Custom search function. e.g. function filter(node) {...}</p>
+ <p>filter's parameter: node (node's data -- JSON)</p>
+ <p>filter's return: boolean (true means: match the rules; false means: don't match the rules)</p>
+ <h4 class="topLine"><b>isSingle</b><span>Boolean</span></h4>
+ <p>isSingle = true means: search only one node</p>
+ <p>isSingle = false means: search the array of the nodes</p>
+ <p class="highlight_red">If this parameter is omitted, as same as false</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>invokeParam</b><span>anything</span></h4>
+ <p>Custom data object by user, used to calculate in the filter function.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON) / JSON</span></h4>
+ <p>If isSingle = true, will return the first node's data (JSON) what be matched. If no match, return null.</p>
+ <p>If isSingle = false, will return the array of all nodes's data what be matched. if no match, return [ ].</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the nodes which their 'name' contains 'test' and 'level' is 2.</h4>
+ <pre xmlns=""><code>function filter(node) {
+ return (node.level == 2 && node.name.indexOf("test")>-1);
+}
+......
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodesByFilter(filter, true); // search only one node
+var nodes = treeObj.getNodesByFilter(filter); // search the array of the nodes
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html
new file mode 100644
index 00000000..3173af47
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According to the node data attribute, search the nodes which exactly matches, and get the JSON objects collection of nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>The name of attribute which need to exactly match</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>The value which need to exactly match, can be any type, please ensure its type consistent with the attribute values.</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects collection of the nodes which be searched.</p>
+ <p class="highlight_red">If search none node, return [ ].</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the nodes which their 'name' attribute is 'test'.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html
new file mode 100644
index 00000000..14b6c294
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParamFuzzy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According to the node data attribute, search the nodes which fuzzy matches, and get the JSON objects collection of nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>The name of attribute which need to fuzzy match</p>
+ <h4 class="topLine"><b>value</b><span>String</span></h4>
+ <p>The value which need to fuzzy match.</p>
+ <p class="highlight_red">The type of value can only be String</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects collection of the nodes which be searched.</p>
+ <p class="highlight_red">If search none node, return [ ].</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the nodes which their 'name' attribute contains the string 'test'.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParamFuzzy("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html
new file mode 100644
index 00000000..4a0f0608
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getSelectedNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the JSON data objects collection of the selected nodes in zTree.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects collection of the selected nodes.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. get the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNode.html
new file mode 100644
index 00000000..f02f523d
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNode.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>hideNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To hide any node.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be hidden</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. hide the first root node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNode(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNodes.html
new file mode 100644
index 00000000..9bf8e6b5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.hideNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>hideNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To hide a group of nodes.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>the array of the nodes which will be hidden</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. hide the first root node's children.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNodes(nodes[0].children);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.moveNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.moveNode.html
new file mode 100644
index 00000000..93f066bf
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.moveNode.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>moveNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Move the node</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be target.</p>
+ <p class="highlight_red">If move the node to root node, please set the 'targetNode' to null.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be moved.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>Moved to the target node's relative position.</p>
+ <p class="highlight_red">"inner" means: to be taregetNode's child node.</p>
+ <p class="highlight_red">"prev" means: to be taregetNode's previous sibling node.</p>
+ <p class="highlight_red">"next" means: to be taregetNode's next sibling node.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>After move the node, whether to automatically expand its parent node.</p>
+ <p>isSilent = true means: don't expand its parent node.</p>
+ <p>isSilent = false or omit this parameter means: expand its parent node.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>return the node which be moved, it is same as the 'treeNode' parameter.</p>
+ <p class="highlight_red">Return null means: move node has failed. The cause:<br/>
+ &nbsp;1. the targetNode is the treeNode's parent node, and moveType = "inner"<br/>
+ &nbsp;2. the targetNode is the treeNode's child node.
+ </p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Move the second root node to the first root node's child node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. Move the second root node to the first root node's previous sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "prev");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html
new file mode 100644
index 00000000..63a0896c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, reloadType, isSilent)</span><span class="path">zTreeObj.</span>reAsyncChildNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Forced asynchronous loading child nodes of parent node. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p class="highlight_red">You can use this method to reload child nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>The parent node which will asynchronous loading child nodes.</p>
+ <p class="highlight_red">1. If parentNode = null, it is same as reload root nodes.</p>
+ <p class="highlight_red">2. If parentNode.isParent = false, don't load nodes.</p>
+ <p class="highlight_red">3. Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>reloadType</b><span>String</span></h4>
+ <p>reloadType = "refresh" means: reload child nodes.</p>
+ <p>reloadType != "refresh" means: append to load child nodes.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>Set whether to automatically expand the parent node, after load nodes.</p>
+ <p>isSilent = true means: don't auto expand the parent node. Otherwise auto expand.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. reload root nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.reAsyncChildNodes(null, "refresh");
+</code></pre>
+ <h4>2. reload the first selected node's child nodes.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.reAsyncChildNodes(nodes[0], "refresh");
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.refresh.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.refresh.html
new file mode 100644
index 00000000..8316192c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.refresh.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>refresh</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Refresh zTree</p>
+ <p class="highlight_red">If you have no special need, try not to use this method. If you refresh single node, please use updateNode() method. If you refresh child nodes in dynamic mode, please use the reAsyncChildNodes() method.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. refresh zTree </h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.refresh();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html
new file mode 100644
index 00000000..c249e175
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode)</span><span class="path">zTreeObj.</span>removeChildNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Remove a parent node's child nodes</p>
+ <p class="highlight_red">1. After remove child nodes, the parent node will become a leaf node. Such as the need to maintain the parent node is still a parent node, set 'setting.data.keep.parent' attribute.</p>
+ <p class="highlight_red">2. Do not use this method to empty the root. If you need to empty the root, you can initialization zTree, and set the initial nodes is null.</p>
+ <p class="highlight_red">3. This method does not trigger any callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>The parent node which need to clear its child nodes.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>Return the parent node's child nodes which have been removed. If has no child nodes, return null.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Remove the first selected node's child nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes && nodes.length>0) {
+ treeObj.removeChildNodes(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeNode.html
new file mode 100644
index 00000000..605322f3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.removeNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, callbackFlag)</span><span class="path">zTreeObj.</span>removeNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Remove a node</p>
+ <p class="highlight_red">Use removeNode() method of zTree v3.x can trigger 'beforeRemove / onRemove' callback function. for reduce redundant code.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be removed.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true means: call this method, will trigger 'beforeRemove' & 'onRemove' callback.</p>
+ <p>callbackFlag = false means: call this method, will not trigger callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'callbackFlag = false'</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Remove all of the selected nodes.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.removeNode(nodes[i]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.selectNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.selectNode.html
new file mode 100644
index 00000000..237f1996
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.selectNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, addFlag)</span><span class="path">zTreeObj.</span>selectNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Select a node</p>
+ <p class="highlight_red">zTree v3.x supports select multiple nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be selected.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>addFlag</b><span>Boolean</span></h4>
+ <p>addFlag = true means: append to select node, don't affect the previously selected node, can select multiple nodes.</p>
+ <p>addFlag = false means: select single node, prior the selected node is deselected.</p>
+ <p class="highlight_red">If setting.view.selectedMulti = false, this para, this parameter is not valid, always select single node</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Exampleso of function</h3>
+ <h4>1. Select single node which be first selected.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ treeObj.selectNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html
new file mode 100644
index 00000000..1d645e8f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(node, disabled, inheritParent, inheritChildren)</span><span class="path">zTreeObj.</span>setChkDisabled</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set the node's checkbox or radio is disabled or remove disabled. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">1. After the node's checkbox / radio is disabled, it can not be checked or unchecked, but it can affect the half-checked status of the parent node.</p>
+ <p class="highlight_red">2. Please do not directly modify the 'chkDisabled' attribute of the loaded node.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to be checked or unchecked.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>disabled</b><span>Boolean</span></h4>
+ <p>disabled = true means: the node's checkbox / radio is disabled.</p>
+ <p>disabled = false means: the node's checkbox / radio is removed disabled.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as disabled = false </p>
+ <p class="highlight_red">Don't affect the node which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>inheritParent</b><span>Boolean</span></h4>
+ <p>inheritParent = true means: all parent nodes's disabled status will be same as this node.</p>
+ <p>inheritParent = false means: all parent nodes's disabled status will be not affected.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'inheritParent = false'</p>
+ <h4 class="topLine"><b>inheritChildren</b><span>Boolean</span></h4>
+ <p>inheritChildren = true means: all child nodes's disabled status will be same as this node.</p>
+ <p>inheritChildren = false means: all child nodes's disabled status will be not affected.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'inheritChildren = false'</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Set the selected nodes's checkbox / radio to be disabled.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.setChkDisabled(nodes[i], true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setEditable.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setEditable.html
new file mode 100644
index 00000000..a44b0ff6
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setEditable.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(editable)</span><span class="path">zTreeObj.</span>setEditable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Edit mode and normal mode switch.</p>
+ <p class="highlight_red">To use edit mode, please set the attributes in 'setting.edit'</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>editable</b><span>Boolean</span></h4>
+ <p>true means: set zTree to edit mode.</p>
+ <p>false means: set zTree to normal mode.</p>
+ <h4><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. set zTree to edit mode</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.setEditable(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setting.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setting.html
new file mode 100644
index 00000000..d80c139a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.setting.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">zTreeObj.</span>setting</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The configuration data of zTree, refer to "<span class="highlight_red">setting details</span>" </p>
+ <p class="highlight_red">zTree v3.x to cancel the original operation setting method, so users can modify.</p>
+ <p class="highlight_red">Note: Modify the parameters which affect zTree initialization will not work, please first understand the different attributes.</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNode.html
new file mode 100644
index 00000000..53b5cbda
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNode.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>showNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To hide any node which be hidden.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>JSON data object of the node which will be shown</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. show someone node which be hidden.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("isHidden", true);
+if (node) {
+ treeObj.showNode(node);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNodes.html
new file mode 100644
index 00000000..c0c926c3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.showNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>showNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To show a group of nodes which be hidden.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>the array of the nodes which will be shown</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. show all of the nodes which be hidden.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("isHidden", true);
+treeObj.showNodes(nodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformToArray.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformToArray.html
new file mode 100644
index 00000000..4b2296d5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformToArray.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>transformToArray</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p></p>
+ <p>Transform the zTree nodes data into simple array. (To avoid the user to write code to traverse all nodes)</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>JSON data object of the node which need to be transformed.</p>
+ <p>or JSON data objects collection of the nodes which need to be transformed.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects array of the nodes which be transformed.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Transform the zTree nodes data into simple array.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformToArray(treeObj.getNodes());
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html
new file mode 100644
index 00000000..51d4a629
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(simpleNodes)</span><span class="path">zTreeObj.</span>transformTozTreeNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Transform the simple array into zTree nodes data.</p>
+ <p class="highlight_red">If you use this method, you must set 'setting.data.simpleData.idKey' and 'setting.data.simpleData.pIdKey' attribute, and let the data are consistent with parent-child relationship.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>simpleNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>JSON data object of the node which need to be transformed.</p>
+ <p>or JSON data objects array of the nodes which need to be transformed.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>Standard data which zTree use. The child nodes are stored in the parent node's 'children' attribute.</p>
+ <p class="highlight_red">If simpleNodes is a single JSON, so the return array's length is 1.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Transform the simple array data into zTree nodes format.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var simpleNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformTozTreeNodes(simpleNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.updateNode.html b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.updateNode.html
new file mode 100644
index 00000000..7639ff41
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/api/en/zTreeObj.updateNode.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checkTypeFlag)</span><span class="path">zTreeObj.</span>updateNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Update node data. Primarily used to update the node's DOM.</p>
+ <p class="highlight_red">1. Can update the attributes for display (e.g. 'name', 'target', 'url', 'icon', 'iconSkin', 'checked', 'nocheck'), do not update the other attributes. For example: If you need to expand the node, please use expandNode() method, do not modify the 'open' attribute.</p>
+ <p class="highlight_red">2. Use updateNode() method of zTree can't trigger 'beforeCheck' or 'onCheck' callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to update.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true means: According to 'setting.check.chkboxType' attribute automatically check or uncheck the parent and child nodes.</p>
+ <p>checkTypeFlag = false means: only check or uncheck this node, don't affect its parent and child nodes.</p>
+ <p class="highlight_red">This parameter is valid when 'setting.check.enable = true' and 'setting.check.chkStyle = "checkbox"'</p>
+ <p class="highlight_red">Don't affect the parent and child nodes which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Modify the first selected node's name, and update it.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ nodes[0].name = "test";
+ treeObj.updateNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/demo.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/demo.css
new file mode 100644
index 00000000..84060069
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/demo.css
@@ -0,0 +1,33 @@
+/* html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
+body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #f0f6e4 \9;}
+h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, sans-serif;padding-bottom: 5px;}
+h1 {font-size: 24px;line-height: 34px;text-align: center;}
+h2 {font-size: 14px;line-height: 24px;padding-top: 5px;}
+h6 {font-weight: normal;font-size: 12px;letter-spacing: 1px;line-height: 24px;text-align: center;} */
+/* a {color:#3C6E31;text-decoration: underline;}
+a:hover {background-color:#3C6E31;color:white;} */
+input.radio {margin: 0 2px 0 8px;}
+input.radio.first {margin-left:0;}
+input.empty {color: lightgray;}
+code {color: #2f332a;}
+.highlight_red {color:#A60000;}
+.highlight_green {color:#A7F43D;}
+li {list-style: circle;font-size: 12px;}
+li.title {list-style: none;}
+ul.list {margin-left: 17px;}
+
+div.content_wrap {width: 600px;height:380px;}
+div.content_wrap div.left{float: left;width: 250px;}
+div.content_wrap div.right{float: right;width: 340px;}
+div.zTreeDemoBackground {width:250px;height:362px;text-align:left;}
+
+ul.ztree {margin-top: 10px;border: 1px solid #eee;/*background: #f0f6e4;width:220px;height:360px;*/overflow-y:auto;overflow-x:auto;/*ict*/padding: 25px;padding-right: 50px;}
+ul.log {border: 1px solid #617775;background: #f0f6e4;width:300px;height:170px;overflow: hidden;}
+ul.log.small {height:45px;}
+ul.log li {color: #666666;list-style: none;padding-left: 10px;}
+ul.log li.dark {background-color: #E3E3E3;}
+
+/* ruler */
+div.ruler {height:20px; width:220px; background-color:#f0f6e4;border: 1px solid #333; margin-bottom: 5px; cursor: pointer}
+div.ruler div.cursor {height:20px; width:30px; background-color:#3C6E31; color:white; text-align: right; padding-right: 5px; cursor: pointer} \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/ReadMe.txt b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/ReadMe.txt
new file mode 100644
index 00000000..c4ae4434
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/ReadMe.txt
@@ -0,0 +1 @@
+Èç¹ûÒýÈëµÄÊ÷×é¼þÎÞÐè¸üнڵ㣬ÈçÌí¼Óɾ³ý¸üÐÂÍÏק½Úµã£¬ÇëÒýÈëzTreeStyle_select.cssÎļþ¡£ \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db
new file mode 100644
index 00000000..4fe7e7e2
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png
new file mode 100644
index 00000000..68ccb3c3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png
new file mode 100644
index 00000000..d6ff36d3
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/2.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/2.png
new file mode 100644
index 00000000..9eff506b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/2.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/3.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/3.png
new file mode 100644
index 00000000..d7ba6d0c
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/3.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/4.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/4.png
new file mode 100644
index 00000000..753e2bfd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/4.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/5.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/5.png
new file mode 100644
index 00000000..0c5eccd5
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/5.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/6.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/6.png
new file mode 100644
index 00000000..070b8352
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/6.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/7.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/7.png
new file mode 100644
index 00000000..532b037f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/7.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/8.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/8.png
new file mode 100644
index 00000000..a8f3a86e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/8.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/9.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/9.png
new file mode 100644
index 00000000..4db73cd4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/9.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db
new file mode 100644
index 00000000..f4a46171
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif
new file mode 100644
index 00000000..d561d36a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/loading.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/loading.gif
new file mode 100644
index 00000000..e8c28929
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/loading.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif
new file mode 100644
index 00000000..50c94fd4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak
new file mode 100644
index 00000000..50c94fd4
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png
new file mode 100644
index 00000000..e831f6d1
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak
new file mode 100644
index 00000000..ffda01ef
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd
new file mode 100644
index 00000000..e3630f4e
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd
Binary files differ
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css
new file mode 100644
index 00000000..d40353f8
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css
@@ -0,0 +1,107 @@
+/*-------------------------------------
+zTree Style
+
+version: 3.4
+author: Hunter.z
+email: hunter.z@263.net
+website: http://code.google.com/p/jquerytree/
+
+-------------------------------------*/
+
+.ztree * {padding:0; margin:0; font-size:14px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
+.ztree {margin:0; padding:5px; color:#333; /*overflow-x: auto;*/ overflow-x: visible;}
+.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
+.ztree li ul{ margin:0; padding:0 0 0 18px}
+.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
+
+.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:30px; color:#333; background-color: transparent;
+ text-decoration:none; vertical-align:top; display: inline-block;
+ /*ict*/width:100%;
+ background: #fff;
+ border: 1px solid #eeeeee;
+ color: #606060;
+ padding: 10px ;
+ padding-top: 5px;
+ padding-right:10%;
+}
+.ztree li a:hover {text-decoration:underline}
+.ztree li a.curSelectedNode {padding-top:5px; background-color:#e7f2f9; color:#2a2a2a; height:28px; border:1px #accbdd solid; opacity:0.8;}
+.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e7f2f9; color:#2a2a2a; height:16px; border:1px #accbdd solid; opacity:0.8;}
+.ztree li a.tmpTargetNode_inner {padding-top:5px; background-color:#316AC5; color:white; height:26px; border:1px #316AC5 solid;
+ opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_prev {}
+.ztree li a.tmpTargetNode_next {}
+.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
+ font-size:12px; border:1px #7EC4CC solid; *border:0px}
+.ztree li span {line-height:16px; margin-right:2px}
+.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
+ border:0 none; cursor: pointer;outline:none;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
+.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
+.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
+.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
+.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
+.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
+.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
+.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
+.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
+.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
+.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
+.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
+.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
+.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
+.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
+.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
+.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
+.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
+.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
+.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
+.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
+
+.ztree li span.button.switch {width:18px; height:18px}
+.ztree li span.button.root_open{background-position:-92px -54px}
+.ztree li span.button.root_close{background-position:-74px -54px}
+.ztree li span.button.roots_open{background-position:-92px 0}
+.ztree li span.button.roots_close{background-position:-74px 0}
+.ztree li span.button.center_open{background-position:-92px -18px}
+.ztree li span.button.center_close{background-position:-74px -18px}
+.ztree li span.button.bottom_open{background-position:-92px -36px}
+.ztree li span.button.bottom_close{background-position:-74px -36px}
+.ztree li span.button.noline_open{background-position:-92px -72px}
+.ztree li span.button.noline_close{background-position:-74px -72px}
+.ztree li span.button.root_docu{ background:none;}
+.ztree li span.button.roots_docu{background-position:-56px 0}
+.ztree li span.button.center_docu{background-position:-56px -18px}
+.ztree li span.button.bottom_docu{background-position:-56px -36px}
+.ztree li span.button.noline_docu{ background:none;}
+
+.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
+/*ict*/
+.ztree li span.button.add {margin-left:2px; /* margin-right: -1px; */ margin-right: 2px; background-position:-144px 0; vertical-align:top; *vertical-align:middle;float: right;}
+.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle;float: right;}
+.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle;float: right;}
+
+.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
+
+ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
+
+span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
+.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
+
+/* level style*/
+/*.ztree li span.button.level0 {
+ display:none;
+}
+.ztree li ul.level0 {
+ padding:0;
+ background:none;
+}*/ \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.js
new file mode 100644
index 00000000..28bca45a
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.js
@@ -0,0 +1,3506 @@
+
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ var settings = {}, roots = {}, caches = {},
+ //default consts of core
+ _consts = {
+ className: {
+ BUTTON: "button",
+ LEVEL: "level",
+ ICO_LOADING: "ico_loading",
+ SWITCH: "switch"
+ },
+ event: {
+ NODECREATED: "ztree_nodeCreated",
+ CLICK: "ztree_click",
+ EXPAND: "ztree_expand",
+ COLLAPSE: "ztree_collapse",
+ ASYNC_SUCCESS: "ztree_async_success",
+ ASYNC_ERROR: "ztree_async_error",
+ REMOVE: "ztree_remove"
+ },
+ id: {
+ A: "_a",
+ ICON: "_ico",
+ SPAN: "_span",
+ SWITCH: "_switch",
+ UL: "_ul"
+ },
+ line: {
+ ROOT: "root",
+ ROOTS: "roots",
+ CENTER: "center",
+ BOTTOM: "bottom",
+ NOLINE: "noline",
+ LINE: "line"
+ },
+ folder: {
+ OPEN: "open",
+ CLOSE: "close",
+ DOCU: "docu"
+ },
+ node: {
+ CURSELECTED: "curSelectedNode"
+ }
+ },
+ //default setting of core
+ _setting = {
+ treeId: "",
+ treeObj: null,
+ view: {
+ addDiyDom: null,
+ autoCancelSelected: true,
+ dblClickExpand: true,
+ expandSpeed: "fast",
+ fontCss: {},
+ nameIsHTML: false,
+ selectedMulti: true,
+ showIcon: true,
+ showLine: true,
+ showTitle: true,
+ txtSelectedEnable: false
+ },
+ data: {
+ key: {
+ children: "children",
+ name: "name",
+ title: "",
+ url: "url"
+ },
+ simpleData: {
+ enable: false,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: null
+ },
+ keep: {
+ parent: false,
+ leaf: false
+ }
+ },
+ async: {
+ enable: false,
+ contentType: "application/x-www-form-urlencoded",
+ type: "post",
+ dataType: "text",
+ url: "",
+ autoParam: [],
+ otherParam: [],
+ dataFilter: null
+ },
+ callback: {
+ beforeAsync:null,
+ beforeClick:null,
+ beforeDblClick:null,
+ beforeRightClick:null,
+ beforeMouseDown:null,
+ beforeMouseUp:null,
+ beforeExpand:null,
+ beforeCollapse:null,
+ beforeRemove:null,
+
+ onAsyncError:null,
+ onAsyncSuccess:null,
+ onNodeCreated:null,
+ onClick:null,
+ onDblClick:null,
+ onRightClick:null,
+ onMouseDown:null,
+ onMouseUp:null,
+ onExpand:null,
+ onCollapse:null,
+ onRemove:null
+ }
+ },
+ //default root of core
+ //zTree use root to save full data
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ if (!r) {
+ r = {};
+ data.setRoot(setting, r);
+ }
+ r[setting.data.key.children] = [];
+ r.expandTriggerFlag = false;
+ r.curSelectedList = [];
+ r.noSelection = true;
+ r.createdNodes = [];
+ r.zId = 0;
+ r._ver = (new Date()).getTime();
+ },
+ //default cache of core
+ _initCache = function(setting) {
+ var c = data.getCache(setting);
+ if (!c) {
+ c = {};
+ data.setCache(setting, c);
+ }
+ c.nodes = [];
+ c.doms = [];
+ },
+ //default bindEvent of core
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.NODECREATED, function (event, treeId, node) {
+ tools.apply(setting.callback.onNodeCreated, [event, treeId, node]);
+ });
+
+ o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) {
+ tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]);
+ });
+
+ o.bind(c.EXPAND, function (event, treeId, node) {
+ tools.apply(setting.callback.onExpand, [event, treeId, node]);
+ });
+
+ o.bind(c.COLLAPSE, function (event, treeId, node) {
+ tools.apply(setting.callback.onCollapse, [event, treeId, node]);
+ });
+
+ o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) {
+ tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]);
+ });
+
+ o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) {
+ tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ });
+
+ o.bind(c.REMOVE, function (event, treeId, treeNode) {
+ tools.apply(setting.callback.onRemove, [event, treeId, treeNode]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.NODECREATED)
+ .unbind(c.CLICK)
+ .unbind(c.EXPAND)
+ .unbind(c.COLLAPSE)
+ .unbind(c.ASYNC_SUCCESS)
+ .unbind(c.ASYNC_ERROR)
+ .unbind(c.REMOVE);
+ },
+ //default event proxy of core
+ _eventProxy = function(event) {
+ var target = event.target,
+ setting = data.getSetting(event.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(event.type, "mousedown")) {
+ treeEventType = "mousedown";
+ } else if (tools.eqs(event.type, "mouseup")) {
+ treeEventType = "mouseup";
+ } else if (tools.eqs(event.type, "contextmenu")) {
+ treeEventType = "contextmenu";
+ } else if (tools.eqs(event.type, "click")) {
+ if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.SWITCH) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "switchNode";
+ } else {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "clickNode";
+ }
+ }
+ } else if (tools.eqs(event.type, "dblclick")) {
+ treeEventType = "dblclick";
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "switchNode";
+ }
+ }
+ if (treeEventType.length > 0 && tId.length == 0) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {tId = tools.getNodeMainDom(tmp).id;}
+ }
+ // event to node
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "switchNode" :
+ if (!node.isParent) {
+ nodeEventType = "";
+ } else if (tools.eqs(event.type, "click")
+ || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) {
+ nodeEventCallback = handler.onSwitchNode;
+ } else {
+ nodeEventType = "";
+ }
+ break;
+ case "clickNode" :
+ nodeEventCallback = handler.onClickNode;
+ break;
+ }
+ }
+ // event to zTree
+ switch (treeEventType) {
+ case "mousedown" :
+ treeEventCallback = handler.onZTreeMousedown;
+ break;
+ case "mouseup" :
+ treeEventCallback = handler.onZTreeMouseup;
+ break;
+ case "dblclick" :
+ treeEventCallback = handler.onZTreeDblclick;
+ break;
+ case "contextmenu" :
+ treeEventCallback = handler.onZTreeContextmenu;
+ break;
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of core
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var r = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ n.level = level;
+ n.tId = setting.treeId + "_" + (++r.zId);
+ n.parentTId = parentNode ? parentNode.tId : null;
+ n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open;
+ if (n[childKey] && n[childKey].length > 0) {
+ n.isParent = true;
+ n.zAsync = true;
+ } else {
+ n.isParent = (typeof n.isParent == "string") ? tools.eqs(n.isParent, "true") : !!n.isParent;
+ n.open = (n.isParent && !setting.async.enable) ? n.open : false;
+ n.zAsync = !n.isParent;
+ }
+ n.isFirstNode = isFirstNode;
+ n.isLastNode = isLastNode;
+ n.getParentNode = function() {return data.getNodeCache(setting, n.parentTId);};
+ n.getPreNode = function() {return data.getPreNode(setting, n);};
+ n.getNextNode = function() {return data.getNextNode(setting, n);};
+ n.isAjaxing = false;
+ data.fixPIdKeyValue(setting, n);
+ },
+ _init = {
+ bind: [_bindEvent],
+ unbind: [_unbindEvent],
+ caches: [_initCache],
+ nodes: [_initNode],
+ proxys: [_eventProxy],
+ roots: [_initRoot],
+ beforeA: [],
+ afterA: [],
+ innerBeforeA: [],
+ innerAfterA: [],
+ zTreeTools: []
+ },
+ //method of operate data
+ data = {
+ addNodeCache: function(setting, node) {
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node;
+ },
+ getNodeCacheId: function(tId) {
+ return tId.substring(tId.lastIndexOf("_")+1);
+ },
+ addAfterA: function(afterA) {
+ _init.afterA.push(afterA);
+ },
+ addBeforeA: function(beforeA) {
+ _init.beforeA.push(beforeA);
+ },
+ addInnerAfterA: function(innerAfterA) {
+ _init.innerAfterA.push(innerAfterA);
+ },
+ addInnerBeforeA: function(innerBeforeA) {
+ _init.innerBeforeA.push(innerBeforeA);
+ },
+ addInitBind: function(bindEvent) {
+ _init.bind.push(bindEvent);
+ },
+ addInitUnBind: function(unbindEvent) {
+ _init.unbind.push(unbindEvent);
+ },
+ addInitCache: function(initCache) {
+ _init.caches.push(initCache);
+ },
+ addInitNode: function(initNode) {
+ _init.nodes.push(initNode);
+ },
+ addInitProxy: function(initProxy, isFirst) {
+ if (!!isFirst) {
+ _init.proxys.splice(0,0,initProxy);
+ } else {
+ _init.proxys.push(initProxy);
+ }
+ },
+ addInitRoot: function(initRoot) {
+ _init.roots.push(initRoot);
+ },
+ addNodesData: function(setting, parentNode, nodes) {
+ var childKey = setting.data.key.children;
+ if (!parentNode[childKey]) parentNode[childKey] = [];
+ if (parentNode[childKey].length > 0) {
+ parentNode[childKey][parentNode[childKey].length - 1].isLastNode = false;
+ view.setNodeLineIcos(setting, parentNode[childKey][parentNode[childKey].length - 1]);
+ }
+ parentNode.isParent = true;
+ parentNode[childKey] = parentNode[childKey].concat(nodes);
+ },
+ addSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ if (!data.isSelectedNode(setting, node)) {
+ root.curSelectedList.push(node);
+ }
+ },
+ addCreatedNode: function(setting, node) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ root.createdNodes.push(node);
+ }
+ },
+ addZTreeTools: function(zTreeTools) {
+ _init.zTreeTools.push(zTreeTools);
+ },
+ exSetting: function(s) {
+ $.extend(true, _setting, s);
+ },
+ fixPIdKeyValue: function(setting, node) {
+ if (setting.data.simpleData.enable) {
+ node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId;
+ }
+ },
+ getAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.afterA.length; i<j; i++) {
+ _init.afterA[i].apply(this, arguments);
+ }
+ },
+ getBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.beforeA.length; i<j; i++) {
+ _init.beforeA[i].apply(this, arguments);
+ }
+ },
+ getInnerAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.innerAfterA.length; i<j; i++) {
+ _init.innerAfterA[i].apply(this, arguments);
+ }
+ },
+ getInnerBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.innerBeforeA.length; i<j; i++) {
+ _init.innerBeforeA[i].apply(this, arguments);
+ }
+ },
+ getCache: function(setting) {
+ return caches[setting.treeId];
+ },
+ getNextNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length-1; i<=l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==l ? null : p[childKey][i+1]);
+ }
+ }
+ return null;
+ },
+ getNodeByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return null;
+ var childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ return nodes[i];
+ }
+ var tmp = data.getNodeByParam(setting, nodes[i][childKey], key, value);
+ if (tmp) return tmp;
+ }
+ return null;
+ },
+ getNodeCache: function(setting, tId) {
+ if (!tId) return null;
+ var n = caches[setting.treeId].nodes[data.getNodeCacheId(tId)];
+ return n ? n : null;
+ },
+ getNodeName: function(setting, node) {
+ var nameKey = setting.data.key.name;
+ return "" + node[nameKey];
+ },
+ getNodeTitle: function(setting, node) {
+ var t = setting.data.key.title === "" ? setting.data.key.name : setting.data.key.title;
+ return "" + node[t];
+ },
+ getNodes: function(setting) {
+ return data.getRoot(setting)[setting.data.key.children];
+ },
+ getNodesByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParam(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByParamFuzzy: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ value = value.toLowerCase();
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (typeof nodes[i][key] == "string" && nodes[i][key].toLowerCase().indexOf(value)>-1) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParamFuzzy(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByFilter: function(setting, nodes, filter, isSingle, invokeParam) {
+ if (!nodes) return (isSingle ? null : []);
+ var childKey = setting.data.key.children,
+ result = isSingle ? null : [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (tools.apply(filter, [nodes[i], invokeParam], false)) {
+ if (isSingle) {return nodes[i];}
+ result.push(nodes[i]);
+ }
+ var tmpResult = data.getNodesByFilter(setting, nodes[i][childKey], filter, isSingle, invokeParam);
+ if (isSingle && !!tmpResult) {return tmpResult;}
+ result = isSingle ? tmpResult : result.concat(tmpResult);
+ }
+ return result;
+ },
+ getPreNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length; i<l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==0 ? null : p[childKey][i-1]);
+ }
+ }
+ return null;
+ },
+ getRoot: function(setting) {
+ return setting ? roots[setting.treeId] : null;
+ },
+ getRoots: function() {
+ return roots;
+ },
+ getSetting: function(treeId) {
+ return settings[treeId];
+ },
+ getSettings: function() {
+ return settings;
+ },
+ getZTreeTools: function(treeId) {
+ var r = this.getRoot(this.getSetting(treeId));
+ return r ? r.treeTools : null;
+ },
+ initCache: function(setting) {
+ for (var i=0, j=_init.caches.length; i<j; i++) {
+ _init.caches[i].apply(this, arguments);
+ }
+ },
+ initNode: function(setting, level, node, parentNode, preNode, nextNode) {
+ for (var i=0, j=_init.nodes.length; i<j; i++) {
+ _init.nodes[i].apply(this, arguments);
+ }
+ },
+ initRoot: function(setting) {
+ for (var i=0, j=_init.roots.length; i<j; i++) {
+ _init.roots[i].apply(this, arguments);
+ }
+ },
+ isSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i]) return true;
+ }
+ return false;
+ },
+ removeNodeCache: function(setting, node) {
+ var childKey = setting.data.key.children;
+ if (node[childKey]) {
+ for (var i=0, l=node[childKey].length; i<l; i++) {
+ arguments.callee(setting, node[childKey][i]);
+ }
+ }
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = null;
+ },
+ removeSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i] || !data.getNodeCache(setting, root.curSelectedList[i].tId)) {
+ root.curSelectedList.splice(i, 1);
+ i--;j--;
+ }
+ }
+ },
+ setCache: function(setting, cache) {
+ caches[setting.treeId] = cache;
+ },
+ setRoot: function(setting, root) {
+ roots[setting.treeId] = root;
+ },
+ setZTreeTools: function(setting, zTreeTools) {
+ for (var i=0, j=_init.zTreeTools.length; i<j; i++) {
+ _init.zTreeTools[i].apply(this, arguments);
+ }
+ },
+ transformToArrayFormat: function (setting, nodes) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ r = [];
+ if (tools.isArray(nodes)) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ r.push(nodes[i]);
+ if (nodes[i][childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[i][childKey]));
+ }
+ } else {
+ r.push(nodes);
+ if (nodes[childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[childKey]));
+ }
+ return r;
+ },
+ transformTozTreeFormat: function(setting, sNodes) {
+ var i,l,
+ key = setting.data.simpleData.idKey,
+ parentKey = setting.data.simpleData.pIdKey,
+ childKey = setting.data.key.children;
+ if (!key || key=="" || !sNodes) return [];
+
+ if (tools.isArray(sNodes)) {
+ var r = [];
+ var tmpMap = [];
+ for (i=0, l=sNodes.length; i<l; i++) {
+ tmpMap[sNodes[i][key]] = sNodes[i];
+ }
+ for (i=0, l=sNodes.length; i<l; i++) {
+ if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
+ if (!tmpMap[sNodes[i][parentKey]][childKey])
+ tmpMap[sNodes[i][parentKey]][childKey] = [];
+ tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
+ } else {
+ r.push(sNodes[i]);
+ }
+ }
+ return r;
+ }else {
+ return [sNodes];
+ }
+ }
+ },
+ //method of event proxy
+ event = {
+ bindEvent: function(setting) {
+ for (var i=0, j=_init.bind.length; i<j; i++) {
+ _init.bind[i].apply(this, arguments);
+ }
+ },
+ unbindEvent: function(setting) {
+ for (var i=0, j=_init.unbind.length; i<j; i++) {
+ _init.unbind[i].apply(this, arguments);
+ }
+ },
+ bindTree: function(setting) {
+ var eventParam = {
+ treeId: setting.treeId
+ },
+ o = setting.treeObj;
+ if (!setting.view.txtSelectedEnable) {
+ // for can't select text
+ o.bind('selectstart', function(e){
+ var node
+ var n = e.originalEvent.srcElement.nodeName.toLowerCase();
+ return (n === "input" || n === "textarea" );
+ }).css({
+ "-moz-user-select":"-moz-none"
+ });
+ }
+ o.bind('click', eventParam, event.proxy);
+ o.bind('dblclick', eventParam, event.proxy);
+ o.bind('mouseover', eventParam, event.proxy);
+ o.bind('mouseout', eventParam, event.proxy);
+ o.bind('mousedown', eventParam, event.proxy);
+ o.bind('mouseup', eventParam, event.proxy);
+ o.bind('contextmenu', eventParam, event.proxy);
+ },
+ unbindTree: function(setting) {
+ var o = setting.treeObj;
+ o.unbind('click', event.proxy)
+ .unbind('dblclick', event.proxy)
+ .unbind('mouseover', event.proxy)
+ .unbind('mouseout', event.proxy)
+ .unbind('mousedown', event.proxy)
+ .unbind('mouseup', event.proxy)
+ .unbind('contextmenu', event.proxy);
+ },
+ doProxy: function(e) {
+ var results = [];
+ for (var i=0, j=_init.proxys.length; i<j; i++) {
+ var proxyResult = _init.proxys[i].apply(this, arguments);
+ results.push(proxyResult);
+ if (proxyResult.stop) {
+ break;
+ }
+ }
+ return results;
+ },
+ proxy: function(e) {
+ var setting = data.getSetting(e.data.treeId);
+ if (!tools.uCanDo(setting, e)) return true;
+ var results = event.doProxy(e),
+ r = true, x = false;
+ for (var i=0, l=results.length; i<l; i++) {
+ var proxyResult = results[i];
+ if (proxyResult.nodeEventCallback) {
+ x = true;
+ r = proxyResult.nodeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ if (proxyResult.treeEventCallback) {
+ x = true;
+ r = proxyResult.treeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ }
+ return r;
+ }
+ },
+ //method of event handler
+ handler = {
+ onSwitchNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (node.open) {
+ if (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ } else {
+ if (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ }
+ return true;
+ },
+ onClickNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ clickFlag = ( (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey)) && data.isSelectedNode(setting, node)) ? 0 : (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey) && setting.view.selectedMulti) ? 2 : 1;
+ if (tools.apply(setting.callback.beforeClick, [setting.treeId, node, clickFlag], true) == false) return true;
+ if (clickFlag === 0) {
+ view.cancelPreSelectedNode(setting, node);
+ } else {
+ view.selectNode(setting, node, clickFlag === 2);
+ }
+ setting.treeObj.trigger(consts.event.CLICK, [event, setting.treeId, node, clickFlag]);
+ return true;
+ },
+ onZTreeMousedown: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseDown, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseDown, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeMouseup: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseUp, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseUp, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeDblclick: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeDblClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onDblClick, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeContextmenu: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeRightClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onRightClick, [event, setting.treeId, node]);
+ }
+ return (typeof setting.callback.onRightClick) != "function";
+ }
+ },
+ //method of tools for zTree
+ tools = {
+ apply: function(fun, param, defaultValue) {
+ if ((typeof fun) == "function") {
+ return fun.apply(zt, param?param:[]);
+ }
+ return defaultValue;
+ },
+ canAsync: function(setting, node) {
+ var childKey = setting.data.key.children;
+ return (setting.async.enable && node && node.isParent && !(node.zAsync || (node[childKey] && node[childKey].length > 0)));
+ },
+ clone: function (obj){
+ if (obj === null) return null;
+ var o = tools.isArray(obj) ? [] : {};
+ for(var i in obj){
+ o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? arguments.callee(obj[i]) : obj[i]);
+ }
+ return o;
+ },
+ eqs: function(str1, str2) {
+ return str1.toLowerCase() === str2.toLowerCase();
+ },
+ isArray: function(arr) {
+ return Object.prototype.toString.apply(arr) === "[object Array]";
+ },
+ $: function(node, exp, setting) {
+ if (!!exp && typeof exp != "string") {
+ setting = exp;
+ exp = "";
+ }
+ if (typeof node == "string") {
+ return $(node, setting ? setting.treeObj.get(0).ownerDocument : null);
+ } else {
+ return $("#" + node.tId + exp, setting ? setting.treeObj : null);
+ }
+ },
+ getMDom: function (setting, curDom, targetExpr) {
+ if (!curDom) return null;
+ while (curDom && curDom.id !== setting.treeId) {
+ for (var i=0, l=targetExpr.length; curDom.tagName && i<l; i++) {
+ if (tools.eqs(curDom.tagName, targetExpr[i].tagName) && curDom.getAttribute(targetExpr[i].attrName) !== null) {
+ return curDom;
+ }
+ }
+ curDom = curDom.parentNode;
+ }
+ return null;
+ },
+ getNodeMainDom:function(target) {
+ return ($(target).parent("li").get(0) || $(target).parentsUntil("li").parent().get(0));
+ },
+ isChildOrSelf: function(dom, parentId) {
+ return ( $(dom).closest("#" + parentId).length> 0 );
+ },
+ uCanDo: function(setting, e) {
+ return true;
+ }
+ },
+ //method of operate ztree dom
+ view = {
+ addNodes: function(setting, parentNode, newNodes, isSilent) {
+ if (setting.data.keep.leaf && parentNode && !parentNode.isParent) {
+ return;
+ }
+ if (!tools.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+ if (setting.data.simpleData.enable) {
+ newNodes = data.transformTozTreeFormat(setting, newNodes);
+ }
+ if (parentNode) {
+ var target_switchObj = $$(parentNode, consts.id.SWITCH, setting),
+ target_icoObj = $$(parentNode, consts.id.ICON, setting),
+ target_ulObj = $$(parentNode, consts.id.UL, setting);
+
+ if (!parentNode.open) {
+ view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE);
+ parentNode.open = false;
+ target_ulObj.css({
+ "display": "none"
+ });
+ }
+
+ data.addNodesData(setting, parentNode, newNodes);
+ view.createNodes(setting, parentNode.level + 1, newNodes, parentNode);
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, parentNode, true);
+ }
+ } else {
+ data.addNodesData(setting, data.getRoot(setting), newNodes);
+ view.createNodes(setting, 0, newNodes, null);
+ }
+ },
+ appendNodes: function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ if (!nodes) return [];
+ var html = [],
+ childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ var node = nodes[i];
+ if (initFlag) {
+ var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
+ tmpPChild = tmpPNode[childKey],
+ isFirstNode = ((tmpPChild.length == nodes.length) && (i == 0)),
+ isLastNode = (i == (nodes.length - 1));
+ data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag);
+ data.addNodeCache(setting, node);
+ }
+
+ var childHtml = [];
+ if (node[childKey] && node[childKey].length > 0) {
+ //make child html first, because checkType
+ childHtml = view.appendNodes(setting, level + 1, node[childKey], node, initFlag, openFlag && node.open);
+ }
+ if (openFlag) {
+
+ view.makeDOMNodeMainBefore(html, setting, node);
+ view.makeDOMNodeLine(html, setting, node);
+ data.getBeforeA(setting, node, html);
+ view.makeDOMNodeNameBefore(html, setting, node);
+ data.getInnerBeforeA(setting, node, html);
+ view.makeDOMNodeIcon(html, setting, node);
+ data.getInnerAfterA(setting, node, html);
+ view.makeDOMNodeNameAfter(html, setting, node);
+ data.getAfterA(setting, node, html);
+ if (node.isParent && node.open) {
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ }
+ view.makeDOMNodeMainAfter(html, setting, node);
+ data.addCreatedNode(setting, node);
+ }
+ }
+ return html;
+ },
+ appendParentULDom: function(setting, node) {
+ var html = [],
+ nObj = $$(node, setting);
+ if (!nObj.get(0) && !!node.parentTId) {
+ view.appendParentULDom(setting, node.getParentNode());
+ nObj = $$(node, setting);
+ }
+ var ulObj = $$(node, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.remove();
+ }
+ var childKey = setting.data.key.children,
+ childHtml = view.appendNodes(setting, node.level+1, node[childKey], node, false, true);
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ nObj.append(html.join(''));
+ },
+ asyncNode: function(setting, node, isSilent, callback) {
+ var i, l;
+ if (node && !node.isParent) {
+ tools.apply(callback);
+ return false;
+ } else if (node && node.isAjaxing) {
+ return false;
+ } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) {
+ tools.apply(callback);
+ return false;
+ }
+ if (node) {
+ node.isAjaxing = true;
+ var icoObj = $$(node, consts.id.ICON, setting);
+ icoObj.attr({"style":"", "class":consts.className.BUTTON + " " + consts.className.ICO_LOADING});
+ }
+
+ var tmpParam = {};
+ for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) {
+ var pKey = setting.async.autoParam[i].split("="), spKey = pKey;
+ if (pKey.length>1) {
+ spKey = pKey[1];
+ pKey = pKey[0];
+ }
+ tmpParam[spKey] = node[pKey];
+ }
+ if (tools.isArray(setting.async.otherParam)) {
+ for (i = 0, l = setting.async.otherParam.length; i < l; i += 2) {
+ tmpParam[setting.async.otherParam[i]] = setting.async.otherParam[i + 1];
+ }
+ } else {
+ for (var p in setting.async.otherParam) {
+ tmpParam[p] = setting.async.otherParam[p];
+ }
+ }
+
+ var _tmpV = data.getRoot(setting)._ver;
+ $.ajax({
+ contentType: setting.async.contentType,
+ type: setting.async.type,
+ url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
+ data: tmpParam,
+ dataType: setting.async.dataType,
+ success: function(msg) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ var newNodes = [];
+ try {
+ if (!msg || msg.length == 0) {
+ newNodes = [];
+ } else if (typeof msg == "string") {
+ newNodes = eval("(" + msg + ")");
+ } else {
+ newNodes = msg;
+ }
+ } catch(err) {
+ newNodes = msg;
+ }
+
+ if (node) {
+ node.isAjaxing = null;
+ node.zAsync = true;
+ }
+ view.setNodeLineIcos(setting, node);
+ if (newNodes && newNodes !== "") {
+ newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes);
+ view.addNodes(setting, node, !!newNodes ? tools.clone(newNodes) : [], !!isSilent);
+ } else {
+ view.addNodes(setting, node, [], !!isSilent);
+ }
+ setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]);
+ tools.apply(callback);
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ if (node) node.isAjaxing = null;
+ view.setNodeLineIcos(setting, node);
+ setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ }
+ });
+ return true;
+ },
+ cancelPreSelectedNode: function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length-1; j>=i; j--) {
+ if (!node || node === list[j]) {
+ $$(list[j], consts.id.A, setting).removeClass(consts.node.CURSELECTED);
+ if (node) {
+ data.removeSelectedNode(setting, node);
+ break;
+ }
+ }
+ }
+ if (!node) data.getRoot(setting).curSelectedList = [];
+ },
+ createNodeCallback: function(setting) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ while (root.createdNodes.length>0) {
+ var node = root.createdNodes.shift();
+ tools.apply(setting.view.addDiyDom, [setting.treeId, node]);
+ if (!!setting.callback.onNodeCreated) {
+ setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]);
+ }
+ }
+ }
+ },
+ createNodes: function(setting, level, nodes, parentNode) {
+ if (!nodes || nodes.length == 0) return;
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ openFlag = !parentNode || parentNode.open || !!$$(parentNode[childKey][0], setting).get(0);
+ root.createdNodes = [];
+ var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, true, openFlag);
+ if (!parentNode) {
+ setting.treeObj.append(zTreeHtml.join(''));
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.append(zTreeHtml.join(''));
+ }
+ }
+ view.createNodeCallback(setting);
+ },
+ destroy: function(setting) {
+ if (!setting) return;
+ data.initCache(setting);
+ data.initRoot(setting);
+ event.unbindTree(setting);
+ event.unbindEvent(setting);
+ setting.treeObj.empty();
+ delete settings[setting.treeId];
+ },
+ expandCollapseNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (!node) {
+ tools.apply(callback, []);
+ return;
+ }
+ if (root.expandTriggerFlag) {
+ var _callback = callback;
+ callback = function(){
+ if (_callback) _callback();
+ if (node.open) {
+ setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]);
+ } else {
+ setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]);
+ }
+ };
+ root.expandTriggerFlag = false;
+ }
+ if (!node.open && node.isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (node[childKey] && node[childKey].length>0 && !$$(node[childKey][0], setting).get(0)))) {
+ view.appendParentULDom(setting, node);
+ view.createNodeCallback(setting);
+ }
+ if (node.open == expandFlag) {
+ tools.apply(callback, []);
+ return;
+ }
+ var ulObj = $$(node, consts.id.UL, setting),
+ switchObj = $$(node, consts.id.SWITCH, setting),
+ icoObj = $$(node, consts.id.ICON, setting);
+
+ if (node.isParent) {
+ node.open = !node.open;
+ if (node.iconOpen && node.iconClose) {
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ }
+
+ if (node.open) {
+ view.replaceSwitchClass(node, switchObj, consts.folder.OPEN);
+ view.replaceIcoClass(node, icoObj, consts.folder.OPEN);
+ if (animateFlag == false || setting.view.expandSpeed == "") {
+ ulObj.show();
+ tools.apply(callback, []);
+ } else {
+ if (node[childKey] && node[childKey].length > 0) {
+ ulObj.slideDown(setting.view.expandSpeed, callback);
+ } else {
+ ulObj.show();
+ tools.apply(callback, []);
+ }
+ }
+ } else {
+ view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(node, icoObj, consts.folder.CLOSE);
+ if (animateFlag == false || setting.view.expandSpeed == "" || !(node[childKey] && node[childKey].length > 0)) {
+ ulObj.hide();
+ tools.apply(callback, []);
+ } else {
+ ulObj.slideUp(setting.view.expandSpeed, callback);
+ }
+ }
+ } else {
+ tools.apply(callback, []);
+ }
+ },
+ expandCollapseParentNode: function(setting, node, expandFlag, animateFlag, callback) {
+ if (!node) return;
+ if (!node.parentTId) {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback);
+ return;
+ } else {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag);
+ }
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback);
+ }
+ },
+ expandCollapseSonNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ treeNodes = (node) ? node[childKey]: root[childKey],
+ selfAnimateSign = (node) ? false : animateFlag,
+ expandTriggerFlag = data.getRoot(setting).expandTriggerFlag;
+ data.getRoot(setting).expandTriggerFlag = false;
+ if (treeNodes) {
+ for (var i = 0, l = treeNodes.length; i < l; i++) {
+ if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign);
+ }
+ }
+ data.getRoot(setting).expandTriggerFlag = expandTriggerFlag;
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback );
+ },
+ makeDOMNodeIcon: function(html, setting, node) {
+ var nameStr = data.getNodeName(setting, node),
+ name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+ html.push("<span id='", node.tId, consts.id.ICON,
+ "' title='' treeNode", consts.id.ICON," class='", view.makeNodeIcoClass(setting, node),
+ "' style='", view.makeNodeIcoStyle(setting, node), "'></span><span id='", node.tId, consts.id.SPAN,
+ "'>",name,"</span>");
+ },
+ makeDOMNodeLine: function(html, setting, node) {
+ html.push("<span id='", node.tId, consts.id.SWITCH, "' title='' class='", view.makeNodeLineClass(setting, node), "' treeNode", consts.id.SWITCH,"></span>");
+ },
+ makeDOMNodeMainAfter: function(html, setting, node) {
+ html.push("</li>");
+ },
+ makeDOMNodeMainBefore: function(html, setting, node) {
+ html.push("<li id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
+ },
+ makeDOMNodeNameAfter: function(html, setting, node) {
+ html.push("</a>");
+ },
+ makeDOMNodeNameBefore: function(html, setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ url = view.makeNodeUrl(setting, node),
+ fontcss = view.makeNodeFontCss(setting, node),
+ fontStyle = [];
+ for (var f in fontcss) {
+ fontStyle.push(f, ":", fontcss[f], ";");
+ }
+ html.push("<a id='", node.tId, consts.id.A, "' class='", consts.className.LEVEL, node.level,"' treeNode", consts.id.A," onclick=\"", (node.click || ''),
+ "\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='",view.makeNodeTarget(node),"' style='", fontStyle.join(''),
+ "'");
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) {html.push("title='", title.replace(/'/g,"&#39;").replace(/</g,'&lt;').replace(/>/g,'&gt;'),"'");}
+ html.push(">");
+ },
+ makeNodeFontCss: function(setting, node) {
+ var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss);
+ return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {};
+ },
+ makeNodeIcoClass: function(setting, node) {
+ var icoCss = ["ico"];
+ if (!node.isAjaxing) {
+ icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0];
+ if (node.isParent) {
+ icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ icoCss.push(consts.folder.DOCU);
+ }
+ }
+ return consts.className.BUTTON + " " + icoCss.join('_');
+ },
+ makeNodeIcoStyle: function(setting, node) {
+ var icoStyle = [];
+ if (!node.isAjaxing) {
+ var icon = (node.isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node.icon;
+ if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;");
+ if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) {
+ icoStyle.push("width:0px;height:0px;");
+ }
+ }
+ return icoStyle.join('');
+ },
+ makeNodeLineClass: function(setting, node) {
+ var lineClass = [];
+ if (setting.view.showLine) {
+ if (node.level == 0 && node.isFirstNode && node.isLastNode) {
+ lineClass.push(consts.line.ROOT);
+ } else if (node.level == 0 && node.isFirstNode) {
+ lineClass.push(consts.line.ROOTS);
+ } else if (node.isLastNode) {
+ lineClass.push(consts.line.BOTTOM);
+ } else {
+ lineClass.push(consts.line.CENTER);
+ }
+ } else {
+ lineClass.push(consts.line.NOLINE);
+ }
+ if (node.isParent) {
+ lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ lineClass.push(consts.folder.DOCU);
+ }
+ return view.makeNodeLineClassEx(node) + lineClass.join('_');
+ },
+ makeNodeLineClassEx: function(node) {
+ return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " ";
+ },
+ makeNodeTarget: function(node) {
+ return (node.target || "_blank");
+ },
+ makeNodeUrl: function(setting, node) {
+ var urlKey = setting.data.key.url;
+ return node[urlKey] ? node[urlKey] : null;
+ },
+ makeUlHtml: function(setting, node, html, content) {
+ html.push("<ul id='", node.tId, consts.id.UL, "' class='", consts.className.LEVEL, node.level, " ", view.makeUlLineClass(setting, node), "' style='display:", (node.open ? "block": "none"),"'>");
+ html.push(content);
+ html.push("</ul>");
+ },
+ makeUlLineClass: function(setting, node) {
+ return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : "");
+ },
+ removeChildNodes: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ if (!nodes) return;
+
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ data.removeNodeCache(setting, nodes[i]);
+ }
+ data.removeSelectedNode(setting);
+ delete node[childKey];
+
+ if (!setting.data.keep.parent) {
+ node.isParent = false;
+ node.open = false;
+ var tmp_switchObj = $$(node, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(node, consts.id.ICON, setting);
+ view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU);
+ $$(node, consts.id.UL, setting).remove();
+ } else {
+ $$(node, consts.id.UL, setting).empty();
+ }
+ },
+ setFirstNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][0].isFirstNode = true;
+ }
+ },
+ setLastNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][childLength - 1].isLastNode = true;
+ }
+ },
+ removeNode: function(setting, node) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : root;
+
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ node.getPreNode = function() {return null;};
+ node.getNextNode = function() {return null;};
+
+ if (!data.getNodeCache(setting, node.tId)) {
+ return;
+ }
+
+ $$(node, setting).remove();
+ data.removeNodeCache(setting, node);
+ data.removeSelectedNode(setting, node);
+
+ for (var i = 0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i].tId == node.tId) {
+ parentNode[childKey].splice(i, 1);
+ break;
+ }
+ }
+ view.setFirstNode(setting, parentNode);
+ view.setLastNode(setting, parentNode);
+
+ var tmp_ulObj,tmp_switchObj,tmp_icoObj,
+ childLength = parentNode[childKey].length;
+
+ //repair nodes old parent
+ if (!setting.data.keep.parent && childLength == 0) {
+ //old parentNode has no child nodes
+ parentNode.isParent = false;
+ parentNode.open = false;
+ tmp_ulObj = $$(parentNode, consts.id.UL, setting);
+ tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(parentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (setting.view.showLine && childLength > 0) {
+ //old parentNode has child nodes
+ var newLast = parentNode[childKey][childLength - 1];
+ tmp_ulObj = $$(newLast, consts.id.UL, setting);
+ tmp_switchObj = $$(newLast, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(newLast, consts.id.ICON, setting);
+ if (parentNode == root) {
+ if (parentNode[childKey].length == 1) {
+ //node was root, and ztree has only one root after move node
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT);
+ } else {
+ var tmp_first_switchObj = $$(parentNode[childKey][0], consts.id.SWITCH, setting);
+ view.replaceSwitchClass(parentNode[childKey][0], tmp_first_switchObj, consts.line.ROOTS);
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ } else {
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ tmp_ulObj.removeClass(consts.line.LINE);
+ }
+ },
+ replaceIcoClass: function(node, obj, newName) {
+ if (!obj || node.isAjaxing) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[tmpList.length-1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ },
+ replaceSwitchClass: function(node, obj, newName) {
+ if (!obj) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.line.ROOT:
+ case consts.line.ROOTS:
+ case consts.line.CENTER:
+ case consts.line.BOTTOM:
+ case consts.line.NOLINE:
+ tmpList[0] = view.makeNodeLineClassEx(node) + newName;
+ break;
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ if (newName !== consts.folder.DOCU) {
+ obj.removeAttr("disabled");
+ } else {
+ obj.attr("disabled", "disabled");
+ }
+ },
+ selectNode: function(setting, node, addFlag) {
+ if (!addFlag) {
+ view.cancelPreSelectedNode(setting);
+ }
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED);
+ data.addSelectedNode(setting, node);
+ },
+ setNodeFontCss: function(setting, treeNode) {
+ var aObj = $$(treeNode, consts.id.A, setting),
+ fontCss = view.makeNodeFontCss(setting, treeNode);
+ if (fontCss) {
+ aObj.css(fontCss);
+ }
+ },
+ setNodeLineIcos: function(setting, node) {
+ if (!node) return;
+ var switchObj = $$(node, consts.id.SWITCH, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ icoObj = $$(node, consts.id.ICON, setting),
+ ulLine = view.makeUlLineClass(setting, node);
+ if (ulLine.length==0) {
+ ulObj.removeClass(consts.line.LINE);
+ } else {
+ ulObj.addClass(ulLine);
+ }
+ switchObj.attr("class", view.makeNodeLineClass(setting, node));
+ if (node.isParent) {
+ switchObj.removeAttr("disabled");
+ } else {
+ switchObj.attr("disabled", "disabled");
+ }
+ icoObj.removeAttr("style");
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ icoObj.attr("class", view.makeNodeIcoClass(setting, node));
+ },
+ setNodeName: function(setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ nObj = $$(node, consts.id.SPAN, setting);
+ nObj.empty();
+ if (setting.view.nameIsHTML) {
+ nObj.html(data.getNodeName(setting, node));
+ } else {
+ nObj.text(data.getNodeName(setting, node));
+ }
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("title", !title ? "" : title);
+ }
+ },
+ setNodeTarget: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("target", view.makeNodeTarget(node));
+ },
+ setNodeUrl: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting),
+ url = view.makeNodeUrl(setting, node);
+ if (url == null || url.length == 0) {
+ aObj.removeAttr("href");
+ } else {
+ aObj.attr("href", url);
+ }
+ },
+ switchNode: function(setting, node) {
+ if (node.open || !tools.canAsync(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ } else if (setting.async.enable) {
+ if (!view.asyncNode(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ return;
+ }
+ } else if (node) {
+ view.expandCollapseNode(setting, node, !node.open);
+ }
+ }
+ };
+ // zTree defind
+ $.fn.zTree = {
+ consts : _consts,
+ _z : {
+ tools: tools,
+ view: view,
+ event: event,
+ data: data
+ },
+ getZTreeObj: function(treeId) {
+ var o = data.getZTreeTools(treeId);
+ return o ? o : null;
+ },
+ destroy: function(treeId) {
+ if (!!treeId && treeId.length > 0) {
+ view.destroy(data.getSetting(treeId));
+ } else {
+ for(var s in settings) {
+ view.destroy(settings[s]);
+ }
+ }
+ },
+ init: function(obj, zSetting, zNodes) {
+ var setting = tools.clone(_setting);
+ $.extend(true, setting, zSetting);
+ setting.treeId = obj.attr("id");
+ setting.treeObj = obj;
+ setting.treeObj.empty();
+ settings[setting.treeId] = setting;
+ //For some older browser,(e.g., ie6)
+ if(typeof document.body.style.maxHeight === "undefined") {
+ setting.view.expandSpeed = "";
+ }
+ data.initRoot(setting);
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ zNodes = zNodes ? tools.clone(tools.isArray(zNodes)? zNodes : [zNodes]) : [];
+ if (setting.data.simpleData.enable) {
+ root[childKey] = data.transformTozTreeFormat(setting, zNodes);
+ } else {
+ root[childKey] = zNodes;
+ }
+
+ data.initCache(setting);
+ event.unbindTree(setting);
+ event.bindTree(setting);
+ event.unbindEvent(setting);
+ event.bindEvent(setting);
+
+ var zTreeTools = {
+ setting : setting,
+ addNodes : function(parentNode, newNodes, isSilent) {
+ if (!newNodes) return null;
+ if (!parentNode) parentNode = null;
+ if (parentNode && !parentNode.isParent && setting.data.keep.leaf) return null;
+ var xNewNodes = tools.clone(tools.isArray(newNodes)? newNodes: [newNodes]);
+ function addCallback() {
+ view.addNodes(setting, parentNode, xNewNodes, (isSilent==true));
+ }
+
+ if (tools.canAsync(setting, parentNode)) {
+ view.asyncNode(setting, parentNode, isSilent, addCallback);
+ } else {
+ addCallback();
+ }
+ return xNewNodes;
+ },
+ cancelSelectedNode : function(node) {
+ view.cancelPreSelectedNode(setting, node);
+ },
+ destroy : function() {
+ view.destroy(setting);
+ },
+ expandAll : function(expandFlag) {
+ expandFlag = !!expandFlag;
+ view.expandCollapseSonNode(setting, null, expandFlag, true);
+ return expandFlag;
+ },
+ expandNode : function(node, expandFlag, sonSign, focus, callbackFlag) {
+ if (!node || !node.isParent) return null;
+ if (expandFlag !== true && expandFlag !== false) {
+ expandFlag = !node.open;
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) {
+ return null;
+ } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) {
+ return null;
+ }
+ if (expandFlag && node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false);
+ }
+ if (expandFlag === node.open && !sonSign) {
+ return null;
+ }
+
+ data.getRoot(setting).expandTriggerFlag = callbackFlag;
+ if (!tools.canAsync(setting, node) && sonSign) {
+ view.expandCollapseSonNode(setting, node, expandFlag, true, function() {
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ });
+ } else {
+ node.open = !expandFlag;
+ view.switchNode(this.setting, node);
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ }
+ return expandFlag;
+ },
+ getNodes : function() {
+ return data.getNodes(setting);
+ },
+ getNodeByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodeByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodeByTId : function(tId) {
+ return data.getNodeCache(setting, tId);
+ },
+ getNodesByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByParamFuzzy : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParamFuzzy(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByFilter: function(filter, isSingle, parentNode, invokeParam) {
+ isSingle = !!isSingle;
+ if (!filter || (typeof filter != "function")) return (isSingle ? null : []);
+ return data.getNodesByFilter(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), filter, isSingle, invokeParam);
+ },
+ getNodeIndex : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i] == node) return i;
+ }
+ return -1;
+ },
+ getSelectedNodes : function() {
+ var r = [], list = data.getRoot(setting).curSelectedList;
+ for (var i=0, l=list.length; i<l; i++) {
+ r.push(list[i]);
+ }
+ return r;
+ },
+ isSelectedNode : function(node) {
+ return data.isSelectedNode(setting, node);
+ },
+ reAsyncChildNodes : function(parentNode, reloadType, isSilent) {
+ if (!this.setting.async.enable) return;
+ var isRoot = !parentNode;
+ if (isRoot) {
+ parentNode = data.getRoot(setting);
+ }
+ if (reloadType=="refresh") {
+ var childKey = this.setting.data.key.children;
+ for (var i = 0, l = parentNode[childKey] ? parentNode[childKey].length : 0; i < l; i++) {
+ data.removeNodeCache(setting, parentNode[childKey][i]);
+ }
+ data.removeSelectedNode(setting);
+ parentNode[childKey] = [];
+ if (isRoot) {
+ this.setting.treeObj.empty();
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ ulObj.empty();
+ }
+ }
+ view.asyncNode(this.setting, isRoot? null:parentNode, !!isSilent);
+ },
+ refresh : function() {
+ this.setting.treeObj.empty();
+ var root = data.getRoot(setting),
+ nodes = root[setting.data.key.children]
+ data.initRoot(setting);
+ root[setting.data.key.children] = nodes
+ data.initCache(setting);
+ view.createNodes(setting, 0, root[setting.data.key.children]);
+ },
+ removeChildNodes : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ view.removeChildNodes(setting, node);
+ return nodes ? nodes : null;
+ },
+ removeNode : function(node, callbackFlag) {
+ if (!node) return;
+ callbackFlag = !!callbackFlag;
+ if (callbackFlag && tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return;
+ view.removeNode(setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ }
+ },
+ selectNode : function(node, addFlag) {
+ if (!node) return;
+ if (tools.uCanDo(setting)) {
+ addFlag = setting.view.selectedMulti && addFlag;
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, false, function() {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ });
+ } else {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ }
+ view.selectNode(setting, node, addFlag);
+ }
+ },
+ transformTozTreeNodes : function(simpleNodes) {
+ return data.transformTozTreeFormat(setting, simpleNodes);
+ },
+ transformToArray : function(nodes) {
+ return data.transformToArrayFormat(setting, nodes);
+ },
+ updateNode : function(node, checkTypeFlag) {
+ if (!node) return;
+ var nObj = $$(node, setting);
+ if (nObj.get(0) && tools.uCanDo(setting)) {
+ view.setNodeName(setting, node);
+ view.setNodeTarget(setting, node);
+ view.setNodeUrl(setting, node);
+ view.setNodeLineIcos(setting, node);
+ view.setNodeFontCss(setting, node);
+ }
+ }
+ }
+ root.treeTools = zTreeTools;
+ data.setZTreeTools(setting, zTreeTools);
+
+ if (root[childKey] && root[childKey].length > 0) {
+ view.createNodes(setting, 0, root[childKey]);
+ } else if (setting.async.enable && setting.async.url && setting.async.url !== '') {
+ view.asyncNode(setting);
+ }
+ return zTreeTools;
+ }
+ };
+
+ var zt = $.fn.zTree,
+ $$ = tools.$,
+ consts = zt.consts;
+})(jQuery);
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of excheck
+ var _consts = {
+ event: {
+ CHECK: "ztree_check"
+ },
+ id: {
+ CHECK: "_check"
+ },
+ checkbox: {
+ STYLE: "checkbox",
+ DEFAULT: "chk",
+ DISABLED: "disable",
+ FALSE: "false",
+ TRUE: "true",
+ FULL: "full",
+ PART: "part",
+ FOCUS: "focus"
+ },
+ radio: {
+ STYLE: "radio",
+ TYPE_ALL: "all",
+ TYPE_LEVEL: "level"
+ }
+ },
+ //default setting of excheck
+ _setting = {
+ check: {
+ enable: false,
+ autoCheckTrigger: false,
+ chkStyle: _consts.checkbox.STYLE,
+ nocheckInherit: false,
+ chkDisabledInherit: false,
+ radioType: _consts.radio.TYPE_LEVEL,
+ chkboxType: {
+ "Y": "ps",
+ "N": "ps"
+ }
+ },
+ data: {
+ key: {
+ checked: "checked"
+ }
+ },
+ callback: {
+ beforeCheck:null,
+ onCheck:null
+ }
+ },
+ //default root of excheck
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList = [];
+ },
+ //default cache of excheck
+ _initCache = function(treeId) {},
+ //default bind event of excheck
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.CHECK, function (event, srcEvent, treeId, node) {
+ event.srcEvent = srcEvent;
+ tools.apply(setting.callback.onCheck, [event, treeId, node]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.CHECK);
+ },
+ //default event proxy of excheck
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoverCheck";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoutCheck";
+ }
+ } else if (tools.eqs(e.type, "click")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "checkNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "checkNode" :
+ nodeEventCallback = _handler.onCheckNode;
+ break;
+ case "mouseoverCheck" :
+ nodeEventCallback = _handler.onMouseoverCheck;
+ break;
+ case "mouseoutCheck" :
+ nodeEventCallback = _handler.onMouseoutCheck;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: nodeEventType === "checkNode",
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of excheck
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var checkedKey = setting.data.key.checked;
+ if (typeof n[checkedKey] == "string") n[checkedKey] = tools.eqs(n[checkedKey], "true");
+ n[checkedKey] = !!n[checkedKey];
+ n.checkedOld = n[checkedKey];
+ if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true");
+ n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck);
+ if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true");
+ n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled);
+ if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true");
+ n.halfCheck = !!n.halfCheck;
+ n.check_Child_State = -1;
+ n.check_Focus = false;
+ n.getCheckStatus = function() {return data.getCheckStatus(setting, n);};
+
+ if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && n[checkedKey] ) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList.push(n);
+ }
+ },
+ //add dom for check
+ _beforeA = function(setting, node, html) {
+ var checkedKey = setting.data.key.checked;
+ if (setting.check.enable) {
+ data.makeChkFlag(setting, node);
+ html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true?" style='display:none;'":""),"></span>");
+ }
+ },
+ //update zTreeObj, add method of check
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
+ var checkedKey = this.setting.data.key.checked;
+ if (node.chkDisabled === true) return;
+ if (checked !== true && checked !== false) {
+ checked = !node[checkedKey];
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (node[checkedKey] === checked && !checkTypeFlag) {
+ return;
+ } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) {
+ return;
+ }
+ if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) {
+ node[checkedKey] = checked;
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]);
+ }
+ }
+ }
+
+ zTreeTools.checkAllNodes = function(checked) {
+ view.repairAllChk(this.setting, !!checked);
+ }
+
+ zTreeTools.getCheckedNodes = function(checked) {
+ var childKey = this.setting.data.key.children;
+ checked = (checked !== false);
+ return data.getTreeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey], checked);
+ }
+
+ zTreeTools.getChangeCheckedNodes = function() {
+ var childKey = this.setting.data.key.children;
+ return data.getTreeChangeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey]);
+ }
+
+ zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) {
+ disabled = !!disabled;
+ inheritParent = !!inheritParent;
+ inheritChildren = !!inheritChildren;
+ view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren);
+ view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent);
+ }
+
+ var _updateNode = zTreeTools.updateNode;
+ zTreeTools.updateNode = function(node, checkTypeFlag) {
+ if (_updateNode) _updateNode.apply(zTreeTools, arguments);
+ if (!node || !this.setting.check.enable) return;
+ var nObj = $$(node, this.setting);
+ if (nObj.get(0) && tools.uCanDo(this.setting)) {
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ }
+ }
+ },
+ //method of operate data
+ _data = {
+ getRadioCheckedList: function(setting) {
+ var checkedList = data.getRoot(setting).radioCheckedList;
+ for (var i=0, j=checkedList.length; i<j; i++) {
+ if(!data.getNodeCache(setting, checkedList[i].tId)) {
+ checkedList.splice(i, 1);
+ i--; j--;
+ }
+ }
+ return checkedList;
+ },
+ getCheckStatus: function(setting, node) {
+ if (!setting.check.enable || node.nocheck || node.chkDisabled) return null;
+ var checkedKey = setting.data.key.checked,
+ r = {
+ checked: node[checkedKey],
+ half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (node[checkedKey] ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0)))
+ };
+ return r;
+ },
+ getTreeCheckedNodes: function(setting, nodes, checked, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL);
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] == checked) {
+ results.push(nodes[i]);
+ if(onlyOne) {
+ break;
+ }
+ }
+ data.getTreeCheckedNodes(setting, nodes[i][childKey], checked, results);
+ if(onlyOne && results.length > 0) {
+ break;
+ }
+ }
+ return results;
+ },
+ getTreeChangeCheckedNodes: function(setting, nodes, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked;
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] != nodes[i].checkedOld) {
+ results.push(nodes[i]);
+ }
+ data.getTreeChangeCheckedNodes(setting, nodes[i][childKey], results);
+ }
+ return results;
+ },
+ makeChkFlag: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ chkFlag = -1;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var cNode = node[childKey][i];
+ var tmp = -1;
+ if (setting.check.chkStyle == consts.radio.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 2;
+ } else if (cNode[checkedKey]) {
+ tmp = 2;
+ } else {
+ tmp = cNode.check_Child_State > 0 ? 2:0;
+ }
+ if (tmp == 2) {
+ chkFlag = 2; break;
+ } else if (tmp == 0){
+ chkFlag = 0;
+ }
+ } else if (setting.check.chkStyle == consts.checkbox.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 1;
+ } else if (cNode[checkedKey] ) {
+ tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1;
+ } else {
+ tmp = (cNode.check_Child_State > 0) ? 1 : 0;
+ }
+ if (tmp === 1) {
+ chkFlag = 1; break;
+ } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) {
+ chkFlag = 1; break;
+ } else if (chkFlag === 2 && tmp > -1 && tmp < 2) {
+ chkFlag = 1; break;
+ } else if (tmp > -1) {
+ chkFlag = tmp;
+ }
+ }
+ }
+ }
+ node.check_Child_State = chkFlag;
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onCheckNode: function (event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkedKey = setting.data.key.checked;
+ if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true;
+ node[checkedKey] = !node[checkedKey];
+ view.checkNodeRelation(setting, node);
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ view.repairParentChkClassWithSelf(setting, node);
+ setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]);
+ return true;
+ },
+ onMouseoverCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = true;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ },
+ onMouseoutCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = false;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+
+ },
+ //method of operate ztree dom
+ _view = {
+ checkNodeRelation: function(setting, node) {
+ var pNode, i, l,
+ childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ r = consts.radio;
+ if (setting.check.chkStyle == r.STYLE) {
+ var checkedList = data.getRadioCheckedList(setting);
+ if (node[checkedKey]) {
+ if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = checkedList.length-1; i >= 0; i--) {
+ pNode = checkedList[i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ checkedList.splice(i, 1);
+
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ if (pNode.parentTId != node.parentTId) {
+ view.repairParentChkClassWithSelf(setting, pNode);
+ }
+ }
+ }
+ checkedList.push(node);
+ } else {
+ var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (i = 0, l = parentNode[childKey].length; i < l; i++) {
+ pNode = parentNode[childKey][i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ }
+ }
+ }
+ } else if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = 0, l = checkedList.length; i < l; i++) {
+ if (node == checkedList[i]) {
+ checkedList.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ } else {
+ if (node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, false);
+ }
+ if (node[checkedKey] && setting.check.chkboxType.Y.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && setting.check.chkboxType.N.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, false);
+ }
+ }
+ },
+ makeChkClass: function(setting, node) {
+ var checkedKey = setting.data.key.checked,
+ c = consts.checkbox, r = consts.radio,
+ fullStyle = "";
+ if (node.chkDisabled === true) {
+ fullStyle = c.DISABLED;
+ } else if (node.halfCheck) {
+ fullStyle = c.PART;
+ } else if (setting.check.chkStyle == r.STYLE) {
+ fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART;
+ } else {
+ fullStyle = node[checkedKey] ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL:c.PART) : ((node.check_Child_State < 1)? c.FULL:c.PART);
+ }
+ var chkName = setting.check.chkStyle + "_" + (node[checkedKey] ? c.TRUE : c.FALSE) + "_" + fullStyle;
+ chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName;
+ return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName;
+ },
+ repairAllChk: function(setting, checked) {
+ if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) {
+ var checkedKey = setting.data.key.checked,
+ childKey = setting.data.key.children,
+ root = data.getRoot(setting);
+ for (var i = 0, l = root[childKey].length; i<l ; i++) {
+ var node = root[childKey][i];
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = checked;
+ }
+ view.setSonNodeCheckBox(setting, node, checked);
+ }
+ }
+ },
+ repairChkClass: function(setting, node) {
+ if (!node) return;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true) {
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ }
+ },
+ repairParentChkClass: function(setting, node) {
+ if (!node || !node.parentTId) return;
+ var pNode = node.getParentNode();
+ view.repairChkClass(setting, pNode);
+ view.repairParentChkClass(setting, pNode);
+ },
+ repairParentChkClassWithSelf: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node[childKey] && node[childKey].length > 0) {
+ view.repairParentChkClass(setting, node[childKey][0]);
+ } else {
+ view.repairParentChkClass(setting, node);
+ }
+ },
+ repairSonChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node.chkDisabled != chkDisabled) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ if (node[childKey] && inherit) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var sNode = node[childKey][i];
+ view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit);
+ }
+ }
+ },
+ repairParentChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ if (node.chkDisabled != chkDisabled && inherit) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit);
+ },
+ setChkClass: function(setting, obj, node) {
+ if (!obj) return;
+ if (node.nocheck === true) {
+ obj.hide();
+ } else {
+ obj.show();
+ }
+ obj.removeClass();
+ obj.addClass(view.makeChkClass(setting, node));
+ },
+ setParentNodeCheckBox: function(setting, node, value, srcNode) {
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+ if (node.parentTId) {
+ var pSign = true;
+ if (!value) {
+ var pNodes = node.getParentNode()[childKey];
+ for (var i = 0, l = pNodes.length; i < l; i++) {
+ if ((pNodes[i].nocheck !== true && pNodes[i].chkDisabled !== true && pNodes[i][checkedKey])
+ || ((pNodes[i].nocheck === true || pNodes[i].chkDisabled === true) && pNodes[i].check_Child_State > 0)) {
+ pSign = false;
+ break;
+ }
+ }
+ }
+ if (pSign) {
+ view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode);
+ }
+ }
+ },
+ setSonNodeCheckBox: function(setting, node, value, srcNode) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+
+ var hasDisable = false;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l && node.chkDisabled !== true; i++) {
+ var sNode = node[childKey][i];
+ view.setSonNodeCheckBox(setting, sNode, value, srcNode);
+ if (sNode.chkDisabled === true) hasDisable = true;
+ }
+ }
+
+ if (node != data.getRoot(setting) && node.chkDisabled !== true) {
+ if (hasDisable && node.nocheck !== true) {
+ data.makeChkFlag(setting, node);
+ }
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ if (!hasDisable) node.check_Child_State = (node[childKey] && node[childKey].length > 0) ? (value ? 2 : 0) : -1;
+ } else {
+ node.check_Child_State = -1;
+ }
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy, true);
+ data.addInitRoot(_initRoot);
+ data.addBeforeA(_beforeA);
+ data.addZTreeTools(_zTreeTools);
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) _createNodes.apply(view, arguments);
+ if (!nodes) return;
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var parentNode = node.getParentNode();
+ if (_removeNode) _removeNode.apply(view, arguments);
+ if (!node || !parentNode) return;
+ view.repairChkClass(setting, parentNode);
+ view.repairParentChkClass(setting, parentNode);
+ }
+
+ var _appendNodes = view.appendNodes;
+ view.appendNodes = function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ var html = "";
+ if (_appendNodes) {
+ html = _appendNodes.apply(view, arguments);
+ }
+ if (parentNode) {
+ data.makeChkFlag(setting, parentNode);
+ }
+ return html;
+ }
+})(jQuery);
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of exedit
+ var _consts = {
+ event: {
+ DRAG: "ztree_drag",
+ DROP: "ztree_drop",
+ RENAME: "ztree_rename",
+ DRAGMOVE:"ztree_dragmove"
+ },
+ id: {
+ EDIT: "_edit",
+ INPUT: "_input",
+ REMOVE: "_remove"
+ },
+ move: {
+ TYPE_INNER: "inner",
+ TYPE_PREV: "prev",
+ TYPE_NEXT: "next"
+ },
+ node: {
+ CURSELECTED_EDIT: "curSelectedNode_Edit",
+ TMPTARGET_TREE: "tmpTargetzTree",
+ TMPTARGET_NODE: "tmpTargetNode"
+ }
+ },
+ //default setting of exedit
+ _setting = {
+ edit: {
+ enable: false,
+ editNameSelectAll: false,
+ showRemoveBtn: true,
+ showRenameBtn: true,
+ removeTitle: "remove",
+ renameTitle: "rename",
+ drag: {
+ autoExpandTrigger: false,
+ isCopy: true,
+ isMove: true,
+ prev: true,
+ next: true,
+ inner: true,
+ minMoveSize: 5,
+ borderMax: 10,
+ borderMin: -5,
+ maxShowNodeNum: 5,
+ autoOpenTime: 500
+ }
+ },
+ view: {
+ addHoverDom: null,
+ removeHoverDom: null
+ },
+ callback: {
+ beforeDrag:null,
+ beforeDragOpen:null,
+ beforeDrop:null,
+ beforeEditName:null,
+ beforeRename:null,
+ onDrag:null,
+ onDragMove:null,
+ onDrop:null,
+ onRename:null
+ }
+ },
+ //default root of exedit
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting), rs = data.getRoots();
+ r.curEditNode = null;
+ r.curEditInput = null;
+ r.curHoverNode = null;
+ r.dragFlag = 0;
+ r.dragNodeShowBefore = [];
+ r.dragMaskList = new Array();
+ rs.showHoverDom = true;
+ },
+ //default cache of exedit
+ _initCache = function(treeId) {},
+ //default bind event of exedit
+ _bindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) {
+ tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]);
+ });
+
+ o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) {
+ tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DRAGMOVE,function(event, srcEvent, treeId, treeNodes){
+ tools.apply(setting.callback.onDragMove,[srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) {
+ tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.unbind(c.RENAME);
+ o.unbind(c.DRAG);
+ o.unbind(c.DRAGMOVE);
+ o.unbind(c.DROP);
+ },
+ //default event proxy of exedit
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ relatedTarget = e.relatedTarget,
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "hoverOverNode";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ tmp = tools.getMDom(setting, relatedTarget, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (!tmp) {
+ tId = "remove";
+ nodeEventType = "hoverOutNode";
+ }
+ } else if (tools.eqs(e.type, "mousedown")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "mousedownNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "mousedownNode" :
+ nodeEventCallback = _handler.onMousedownNode;
+ break;
+ case "hoverOverNode" :
+ nodeEventCallback = _handler.onHoverOverNode;
+ break;
+ case "hoverOutNode" :
+ nodeEventCallback = _handler.onHoverOutNode;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of exedit
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ n.isHover = false;
+ n.editNameFlag = false;
+ },
+ //update zTreeObj, add method of edit
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.cancelEditName = function(newName) {
+ var root = data.getRoot(this.setting);
+ if (!root.curEditNode) return;
+ view.cancelCurEditNode(this.setting, newName?newName:null, true);
+ }
+ zTreeTools.copyNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return null;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null;
+ var _this = this,
+ newNode = tools.clone(node);
+ if (!targetNode) {
+ targetNode = null;
+ moveType = consts.move.TYPE_INNER;
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ function copyCallback() {
+ view.addNodes(_this.setting, targetNode, [newNode], isSilent);
+ }
+
+ if (tools.canAsync(this.setting, targetNode)) {
+ view.asyncNode(this.setting, targetNode, isSilent, copyCallback);
+ } else {
+ copyCallback();
+ }
+ } else {
+ view.addNodes(this.setting, targetNode.parentNode, [newNode], isSilent);
+ view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent);
+ }
+ return newNode;
+ }
+ zTreeTools.editName = function(node) {
+ if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return;
+ if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true);
+ view.editNode(this.setting, node)
+ }
+ zTreeTools.moveNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return node;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) {
+ return null;
+ } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) {
+ return null;
+ } else if (!targetNode) {
+ targetNode = null;
+ }
+ var _this = this;
+ function moveCallback() {
+ view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent);
+ }
+ if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) {
+ view.asyncNode(this.setting, targetNode, isSilent, moveCallback);
+ } else {
+ moveCallback();
+ }
+ return node;
+ }
+ zTreeTools.setEditable = function(editable) {
+ this.setting.edit.enable = editable;
+ return this.refresh();
+ }
+ },
+ //method of operate data
+ _data = {
+ setSonNodeLevel: function(setting, parentNode, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ node.level = (parentNode)? parentNode.level + 1 : 0;
+ if (!node[childKey]) return;
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ if (node[childKey][i]) data.setSonNodeLevel(setting, node, node[childKey][i]);
+ }
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onHoverOverNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode != node) {
+ _handler.onHoverOutNode(event);
+ }
+ root.curHoverNode = node;
+ view.addHoverDom(setting, node);
+ },
+ onHoverOutNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) {
+ view.removeTreeDom(setting, root.curHoverNode);
+ root.curHoverNode = null;
+ }
+ },
+ onMousedownNode: function(eventMouseDown, _node) {
+ var i,l,
+ setting = data.getSetting(eventMouseDown.data.treeId),
+ root = data.getRoot(setting), roots = data.getRoots();
+ //right click can't drag & drop
+ if (eventMouseDown.button == 2 || !setting.edit.enable || (!setting.edit.drag.isCopy && !setting.edit.drag.isMove)) return true;
+
+ //input of edit node name can't drag & drop
+ var target = eventMouseDown.target,
+ _nodes = data.getRoot(setting).curSelectedList,
+ nodes = [];
+ if (!data.isSelectedNode(setting, _node)) {
+ nodes = [_node];
+ } else {
+ for (i=0, l=_nodes.length; i<l; i++) {
+ if (_nodes[i].editNameFlag && tools.eqs(target.tagName, "input") && target.getAttribute("treeNode"+consts.id.INPUT) !== null) {
+ return true;
+ }
+ nodes.push(_nodes[i]);
+ if (nodes[0].parentTId !== _nodes[i].parentTId) {
+ nodes = [_node];
+ break;
+ }
+ }
+ }
+
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+
+ var doc = $(setting.treeObj.get(0).ownerDocument),
+ body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget,
+ isOtherTree = false,
+ targetSetting = setting,
+ sourceSetting = setting,
+ preNode, nextNode,
+ preTmpTargetNodeId = null,
+ preTmpMoveType = null,
+ tmpTargetNodeId = null,
+ moveType = consts.move.TYPE_INNER,
+ mouseDownX = eventMouseDown.clientX,
+ mouseDownY = eventMouseDown.clientY,
+ startTime = (new Date()).getTime();
+
+ if (tools.uCanDo(setting)) {
+ doc.bind("mousemove", _docMouseMove);
+ }
+ function _docMouseMove(event) {
+ //avoid start drag after click node
+ if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.edit.drag.minMoveSize
+ && Math.abs(mouseDownY - event.clientY) < setting.edit.drag.minMoveSize) {
+ return true;
+ }
+ var i, l, tmpNode, tmpDom, tmpNodes,
+ childKey = setting.data.key.children;
+ body.css("cursor", "pointer");
+
+ if (root.dragFlag == 0) {
+ if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) {
+ _docMouseUp(event);
+ return true;
+ }
+
+ for (i=0, l=nodes.length; i<l; i++) {
+ if (i==0) {
+ root.dragNodeShowBefore = [];
+ }
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ root.dragNodeShowBefore[tmpNode.tId] = true;
+ } else {
+ root.dragNodeShowBefore[tmpNode.tId] = false;
+ }
+ }
+
+ root.dragFlag = 1;
+ roots.showHoverDom = false;
+ tools.showIfameMask(setting, true);
+
+ //sort
+ var isOrder = true, lastIndex = -1;
+ if (nodes.length>1) {
+ var pNodes = nodes[0].parentTId ? nodes[0].getParentNode()[childKey] : data.getNodes(setting);
+ tmpNodes = [];
+ for (i=0, l=pNodes.length; i<l; i++) {
+ if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) {
+ if (isOrder && lastIndex > -1 && (lastIndex+1) !== i) {
+ isOrder = false;
+ }
+ tmpNodes.push(pNodes[i]);
+ lastIndex = i;
+ }
+ if (nodes.length === tmpNodes.length) {
+ nodes = tmpNodes;
+ break;
+ }
+ }
+ }
+ if (isOrder) {
+ preNode = nodes[0].getPreNode();
+ nextNode = nodes[nodes.length-1].getNextNode();
+ }
+
+ //set node in selected
+ curNode = $$("<ul class='zTreeDragUL'></ul>", setting);
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ tmpNode.editNameFlag = false;
+ view.selectNode(setting, tmpNode, i>0);
+ view.removeTreeDom(setting, tmpNode);
+
+ if (i > setting.edit.drag.maxShowNodeNum-1) {
+ continue;
+ }
+
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_tmp'></li>", setting);
+ tmpDom.append($$(tmpNode, consts.id.A, setting).clone());
+ tmpDom.css("padding", "0");
+ tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED);
+ curNode.append(tmpDom);
+ if (i == setting.edit.drag.maxShowNodeNum-1) {
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_moretmp'><a> ... </a></li>", setting);
+ curNode.append(tmpDom);
+ }
+ }
+ curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp");
+ curNode.addClass(setting.treeObj.attr("class"));
+ curNode.appendTo(body);
+
+ tmpArrow = $$("<span class='tmpzTreeMove_arrow'></span>", setting);
+ tmpArrow.attr("id", "zTreeMove_arrow_tmp");
+ tmpArrow.appendTo(body);
+
+ setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]);
+ }
+
+ if (root.dragFlag == 1) {
+ if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft()+2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) {
+ var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget);
+ event.target = (xT.length > 0) ? xT.get(0) : event.target;
+ } else if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tmpTarget = null;
+ tmpTargetNodeId = null;
+
+ //judge drag & drop in multi ztree
+ isOtherTree = false;
+ targetSetting = setting;
+ var settings = data.getSettings();
+ for (var s in settings) {
+ if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId
+ && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length>0)) {
+ isOtherTree = true;
+ targetSetting = settings[s];
+ }
+ }
+
+ var docScrollTop = doc.scrollTop(),
+ docScrollLeft = doc.scrollLeft(),
+ treeOffset = targetSetting.treeObj.offset(),
+ scrollHeight = targetSetting.treeObj.get(0).scrollHeight,
+ scrollWidth = targetSetting.treeObj.get(0).scrollWidth,
+ dTop = (event.clientY + docScrollTop - treeOffset.top),
+ dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop),
+ dLeft = (event.clientX + docScrollLeft - treeOffset.left),
+ dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft),
+ isTop = (dTop < setting.edit.drag.borderMax && dTop > setting.edit.drag.borderMin),
+ isBottom = (dBottom < setting.edit.drag.borderMax && dBottom > setting.edit.drag.borderMin),
+ isLeft = (dLeft < setting.edit.drag.borderMax && dLeft > setting.edit.drag.borderMin),
+ isRight = (dRight < setting.edit.drag.borderMax && dRight > setting.edit.drag.borderMin),
+ isTreeInner = dTop > setting.edit.drag.borderMin && dBottom > setting.edit.drag.borderMin && dLeft > setting.edit.drag.borderMin && dRight > setting.edit.drag.borderMin,
+ isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0),
+ isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height()+10) >= scrollHeight),
+ isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0),
+ isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width()+10) >= scrollWidth);
+
+ if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //get node <li> dom
+ var targetObj = event.target;
+ while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) {
+ targetObj = targetObj.parentNode;
+ }
+
+ var canMove = true;
+ //don't move to self or children of self
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (targetObj.id === tmpNode.tId) {
+ canMove = false;
+ break;
+ } else if ($$(tmpNode, setting).find("#" + targetObj.id).length > 0) {
+ canMove = false;
+ break;
+ }
+ }
+ if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) {
+ tmpTarget = $(targetObj);
+ tmpTargetNodeId = targetObj.id;
+ }
+ }
+
+ //the mouse must be in zTree
+ tmpNode = nodes[0];
+ if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //judge mouse move in root of ztree
+ if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) {
+ tmpTarget = targetSetting.treeObj;
+ }
+ //auto scroll top
+ if (isTop) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()-10);
+ } else if (isBottom) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()+10);
+ }
+ if (isLeft) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()-10);
+ } else if (isRight) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+10);
+ }
+ //auto scroll left
+ if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+ tmpTarget.offset().left - targetSetting.treeObj.offset().left);
+ }
+ }
+
+ curNode.css({
+ "top": (event.clientY + docScrollTop + 3) + "px",
+ "left": (event.clientX + docScrollLeft + 3) + "px"
+ });
+
+ var dX = 0;
+ var dY = 0;
+ if (tmpTarget && tmpTarget.attr("id")!=targetSetting.treeId) {
+ var tmpTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId),
+ isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy),
+ isPrev = !!(preNode && tmpTargetNodeId === preNode.tId),
+ isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId),
+ isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId),
+ canPrev = (isCopy || !isNext) && tools.apply(targetSetting.edit.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.prev),
+ canNext = (isCopy || !isPrev) && tools.apply(targetSetting.edit.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.next),
+ canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !tmpTargetNode.isParent) && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.inner);
+ if (!canPrev && !canNext && !canInner) {
+ tmpTarget = null;
+ tmpTargetNodeId = "";
+ moveType = consts.move.TYPE_INNER;
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null
+ }
+ } else {
+ var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget),
+ tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()),
+ tmpTop = tmpTargetA.offset().top,
+ tmpLeft = tmpTargetA.offset().left,
+ prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1) ) : -1,
+ nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0) ) : -1,
+ dY_percent = (event.clientY + docScrollTop - tmpTop)/tmpTargetA.height();
+ if ((prevPercent==1 ||dY_percent<=prevPercent && dY_percent>=-.2) && canPrev) {
+ dX = 1 - tmpArrow.width();
+ dY = tmpTop - tmpArrow.height()/2;
+ moveType = consts.move.TYPE_PREV;
+ } else if ((nextPercent==0 || dY_percent>=nextPercent && dY_percent<=1.2) && canNext) {
+ dX = 1 - tmpArrow.width();
+ dY = (tmpNextA == null || (tmpTargetNode.isParent && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height()/2) : (tmpNextA.offset().top - tmpArrow.height()/2);
+ moveType = consts.move.TYPE_NEXT;
+ }else {
+ dX = 5 - tmpArrow.width();
+ dY = tmpTop;
+ moveType = consts.move.TYPE_INNER;
+ }
+ tmpArrow.css({
+ "display":"block",
+ "top": dY + "px",
+ "left": (tmpLeft + dX) + "px"
+ });
+ tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType);
+
+ if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) {
+ startTime = (new Date()).getTime();
+ }
+ if (tmpTargetNode && tmpTargetNode.isParent && moveType == consts.move.TYPE_INNER) {
+ var startTimer = true;
+ if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) {
+ startTimer = false;
+ }
+ if (startTimer) {
+ window.zTreeMoveTimer = setTimeout(function() {
+ if (moveType != consts.move.TYPE_INNER) return;
+ if (tmpTargetNode && tmpTargetNode.isParent && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.edit.drag.autoOpenTime
+ && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) {
+ view.switchNode(targetSetting, tmpTargetNode);
+ if (targetSetting.edit.drag.autoExpandTrigger) {
+ targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]);
+ }
+ }
+ }, targetSetting.edit.drag.autoOpenTime+50);
+ window.zTreeMoveTargetNodeTId = tmpTargetNode.tId;
+ }
+ }
+ }
+ } else {
+ moveType = consts.move.TYPE_INNER;
+ if (tmpTarget && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.edit.drag.inner)) {
+ tmpTarget.addClass(consts.node.TMPTARGET_TREE);
+ } else {
+ tmpTarget = null;
+ }
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ }
+ preTmpTargetNodeId = tmpTargetNodeId;
+ preTmpMoveType = moveType;
+
+ setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]);
+ }
+ return false;
+ }
+
+ doc.bind("mouseup", _docMouseUp);
+ function _docMouseUp(event) {
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ preTmpTargetNodeId = null;
+ preTmpMoveType = null;
+ doc.unbind("mousemove", _docMouseMove);
+ doc.unbind("mouseup", _docMouseUp);
+ doc.unbind("selectstart", _docSelect);
+ body.css("cursor", "auto");
+ if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tools.showIfameMask(setting, false);
+
+ roots.showHoverDom = true;
+ if (root.dragFlag == 0) return;
+ root.dragFlag = 0;
+
+ var i, l, tmpNode;
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ delete root.dragNodeShowBefore[tmpNode.tId];
+ }
+ }
+
+ if (curNode) curNode.remove();
+ if (tmpArrow) tmpArrow.remove();
+
+ var isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy);
+ if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId==nodes[0].parentTId && moveType == consts.move.TYPE_INNER) {
+ tmpTarget = null;
+ }
+ if (tmpTarget) {
+ var dragTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId);
+ if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) {
+ view.selectNodes(sourceSetting, nodes);
+ return;
+ }
+ var newNodes = isCopy ? tools.clone(nodes) : nodes;
+
+ function dropCallback() {
+ if (isOtherTree) {
+ if (!isCopy) {
+ for(var i=0, l=nodes.length; i<l; i++) {
+ view.removeNode(setting, nodes[i]);
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ if (moveType == consts.move.TYPE_PREV) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ } else {
+ if (isCopy && moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ if (isCopy) {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ }
+ if (moveType != consts.move.TYPE_NEXT) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ }
+ view.selectNodes(targetSetting, newNodes);
+ $$(newNodes[0], setting).focus().blur();
+
+ setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]);
+ }
+
+ if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) {
+ view.asyncNode(targetSetting, dragTargetNode, false, dropCallback);
+ } else {
+ dropCallback();
+ }
+
+ } else {
+ view.selectNodes(sourceSetting, nodes);
+ setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]);
+ }
+ }
+
+ doc.bind("selectstart", _docSelect);
+ function _docSelect() {
+ return false;
+ }
+
+ //Avoid FireFox's Bug
+ //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error.
+ if(eventMouseDown.preventDefault) {
+ eventMouseDown.preventDefault();
+ }
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+ getAbs: function (obj) {
+ var oRect = obj.getBoundingClientRect(),
+ scrollTop = document.body.scrollTop+document.documentElement.scrollTop,
+ scrollLeft = document.body.scrollLeft+document.documentElement.scrollLeft;
+ return [oRect.left+scrollLeft,oRect.top+scrollTop];
+ },
+ inputFocus: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ tools.setCursorPosition(inputObj.get(0), inputObj.val().length);
+ }
+ },
+ inputSelect: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ inputObj.select();
+ }
+ },
+ setCursorPosition: function(obj, pos){
+ if(obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos,pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+ showIfameMask: function(setting, showSign) {
+ var root = data.getRoot(setting);
+ //clear full mask
+ while (root.dragMaskList.length > 0) {
+ root.dragMaskList[0].remove();
+ root.dragMaskList.shift();
+ }
+ if (showSign) {
+ //show mask
+ var iframeList = $$("iframe", setting);
+ for (var i = 0, l = iframeList.length; i < l; i++) {
+ var obj = iframeList.get(i),
+ r = tools.getAbs(obj),
+ dragMask = $$("<div id='zTreeMask_" + i + "' class='zTreeMask' style='top:" + r[1] + "px; left:" + r[0] + "px; width:" + obj.offsetWidth + "px; height:" + obj.offsetHeight + "px;'></div>", setting);
+ dragMask.appendTo($$("body", setting));
+ root.dragMaskList.push(dragMask);
+ }
+ }
+ }
+ },
+ //method of operate ztree dom
+ _view = {
+ addEditBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRenameBtn, [setting.treeId, node], setting.edit.showRenameBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ editStr = "<span class='" + consts.className.BUTTON + " edit' id='" + node.tId + consts.id.EDIT + "' title='"+tools.apply(setting.edit.renameTitle, [setting.treeId, node], setting.edit.renameTitle)+"' treeNode"+consts.id.EDIT+" style='display:none;'></span>";
+ aObj.append(editStr);
+
+ $$(node, consts.id.EDIT, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false;
+ view.editNode(setting, node);
+ return false;
+ }
+ ).show();
+ },
+ addRemoveBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRemoveBtn, [setting.treeId, node], setting.edit.showRemoveBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ removeStr = "<span class='" + consts.className.BUTTON + " remove' id='" + node.tId + consts.id.REMOVE + "' title='"+tools.apply(setting.edit.removeTitle, [setting.treeId, node], setting.edit.removeTitle)+"' treeNode"+consts.id.REMOVE+" style='display:none;'></span>";
+ aObj.append(removeStr);
+
+ $$(node, consts.id.REMOVE, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false;
+ view.removeNode(setting, node);
+ setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ return false;
+ }
+ ).bind('mousedown',
+ function(eventMouseDown) {
+ return true;
+ }
+ ).show();
+ },
+ addHoverDom: function(setting, node) {
+ if (data.getRoots().showHoverDom) {
+ node.isHover = true;
+ if (setting.edit.enable) {
+ //view.addEditBtn(setting, node);
+ view.addRemoveBtn(setting, node);
+ view.addEditBtn(setting, node);
+ }
+ tools.apply(setting.view.addHoverDom, [setting.treeId, node]);
+ }
+ },
+ cancelCurEditNode: function (setting, forceName, isCancel) {
+ var root = data.getRoot(setting),
+ nameKey = setting.data.key.name,
+ node = root.curEditNode;
+
+ if (node) {
+ var inputObj = root.curEditInput,
+ newName = forceName ? forceName:(isCancel ? node[nameKey]: inputObj.val());
+ if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) {
+ return false;
+ } else {
+ node[nameKey] = newName;
+ setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]);
+ }
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.removeClass(consts.node.CURSELECTED_EDIT);
+ inputObj.unbind();
+ view.setNodeName(setting, node);
+ node.editNameFlag = false;
+ root.curEditNode = null;
+ root.curEditInput = null;
+ view.selectNode(setting, node, false);
+ }
+ root.noSelection = true;
+ return true;
+ },
+ editNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ view.editNodeBlur = false;
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ setTimeout(function() {tools.inputFocus(root.curEditInput);}, 0);
+ return;
+ }
+ var nameKey = setting.data.key.name;
+ node.editNameFlag = true;
+ view.removeTreeDom(setting, node);
+ view.cancelCurEditNode(setting);
+ view.selectNode(setting, node, false);
+ $$(node, consts.id.SPAN, setting).html("<input type=text class='rename' id='" + node.tId + consts.id.INPUT + "' treeNode" + consts.id.INPUT + " >");
+ var inputObj = $$(node, consts.id.INPUT, setting);
+ inputObj.attr("value", node[nameKey]);
+ if (setting.edit.editNameSelectAll) {
+ tools.inputSelect(inputObj);
+ } else {
+ tools.inputFocus(inputObj);
+ }
+
+ inputObj.bind('blur', function(event) {
+ if (!view.editNodeBlur) {
+ view.cancelCurEditNode(setting);
+ }
+ }).bind('keydown', function(event) {
+ if (event.keyCode=="13") {
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+ } else if (event.keyCode=="27") {
+ view.cancelCurEditNode(setting, null, true);
+ }
+ }).bind('click', function(event) {
+ return false;
+ }).bind('dblclick', function(event) {
+ return false;
+ });
+
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT);
+ root.curEditInput = inputObj;
+ root.noSelection = false;
+ root.curEditNode = node;
+ },
+ moveNode: function(setting, targetNode, node, moveType, animateFlag, isSilent) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (targetNode == node) return;
+ if (setting.data.keep.leaf && targetNode && !targetNode.isParent && moveType == consts.move.TYPE_INNER) return;
+ var oldParentNode = (node.parentTId ? node.getParentNode(): root),
+ targetNodeIsRoot = (targetNode === null || targetNode == root);
+ if (targetNodeIsRoot && targetNode === null) targetNode = root;
+ if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER;
+ var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root);
+
+ if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) {
+ moveType = consts.move.TYPE_INNER;
+ }
+
+ if (moveType == consts.move.TYPE_INNER) {
+ if (targetNodeIsRoot) {
+ //parentTId of root node is null
+ node.parentTId = null;
+ } else {
+ if (!targetNode.isParent) {
+ targetNode.isParent = true;
+ targetNode.open = !!targetNode.open;
+ view.setNodeLineIcos(setting, targetNode);
+ }
+ node.parentTId = targetNode.tId;
+ }
+ }
+
+ //move node Dom
+ var targetObj, target_ulObj;
+ if (targetNodeIsRoot) {
+ targetObj = setting.treeObj;
+ target_ulObj = targetObj;
+ } else {
+ if (!isSilent && moveType == consts.move.TYPE_INNER) {
+ view.expandCollapseNode(setting, targetNode, true, false);
+ } else if (!isSilent) {
+ view.expandCollapseNode(setting, targetNode.getParentNode(), true, false);
+ }
+ targetObj = $$(targetNode, setting);
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ if (!!targetObj.get(0) && !target_ulObj.get(0)) {
+ var ulstr = [];
+ view.makeUlHtml(setting, targetNode, ulstr, '');
+ targetObj.append(ulstr.join(''));
+ }
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ }
+ var nodeDom = $$(node, setting);
+ if (!nodeDom.get(0)) {
+ nodeDom = view.appendNodes(setting, node.level, [node], null, false, true).join('');
+ } else if (!targetObj.get(0)) {
+ nodeDom.remove();
+ }
+ if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) {
+ target_ulObj.append(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) {
+ targetObj.before(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) {
+ targetObj.after(nodeDom);
+ }
+
+ //repair the data after move
+ var i,l,
+ tmpSrcIndex = -1,
+ tmpTargetIndex = 0,
+ oldNeighbor = null,
+ newNeighbor = null,
+ oldLevel = node.level;
+ if (node.isFirstNode) {
+ tmpSrcIndex = 0;
+ if (oldParentNode[childKey].length > 1 ) {
+ oldNeighbor = oldParentNode[childKey][1];
+ oldNeighbor.isFirstNode = true;
+ }
+ } else if (node.isLastNode) {
+ tmpSrcIndex = oldParentNode[childKey].length -1;
+ oldNeighbor = oldParentNode[childKey][tmpSrcIndex - 1];
+ oldNeighbor.isLastNode = true;
+ } else {
+ for (i = 0, l = oldParentNode[childKey].length; i < l; i++) {
+ if (oldParentNode[childKey][i].tId == node.tId) {
+ tmpSrcIndex = i;
+ break;
+ }
+ }
+ }
+ if (tmpSrcIndex >= 0) {
+ oldParentNode[childKey].splice(tmpSrcIndex, 1);
+ }
+ if (moveType != consts.move.TYPE_INNER) {
+ for (i = 0, l = targetParentNode[childKey].length; i < l; i++) {
+ if (targetParentNode[childKey][i].tId == targetNode.tId) tmpTargetIndex = i;
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ if (!targetNode[childKey]) targetNode[childKey] = new Array();
+ if (targetNode[childKey].length > 0) {
+ newNeighbor = targetNode[childKey][targetNode[childKey].length - 1];
+ newNeighbor.isLastNode = false;
+ }
+ targetNode[childKey].splice(targetNode[childKey].length, 0, node);
+ node.isLastNode = true;
+ node.isFirstNode = (targetNode[childKey].length == 1);
+ } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isFirstNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = true;
+ node.isLastNode = false;
+
+ } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isLastNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = true;
+
+ } else {
+ if (moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ } else {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ }
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ }
+ data.fixPIdKeyValue(setting, node);
+ data.setSonNodeLevel(setting, node.getParentNode(), node);
+
+ //repair node what been moved
+ view.setNodeLineIcos(setting, node);
+ view.repairNodeLevelClass(setting, node, oldLevel)
+
+ //repair node's old parentNode dom
+ if (!setting.data.keep.parent && oldParentNode[childKey].length < 1) {
+ //old parentNode has no child nodes
+ oldParentNode.isParent = false;
+ oldParentNode.open = false;
+ var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting),
+ tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (oldNeighbor) {
+ //old neigbor node
+ view.setNodeLineIcos(setting, oldNeighbor);
+ }
+
+ //new neigbor node
+ if (newNeighbor) {
+ view.setNodeLineIcos(setting, newNeighbor);
+ }
+
+ //repair checkbox / radio
+ if (!!setting.check && setting.check.enable && view.repairChkClass) {
+ view.repairChkClass(setting, oldParentNode);
+ view.repairParentChkClassWithSelf(setting, oldParentNode);
+ if (oldParentNode != node.parent)
+ view.repairParentChkClassWithSelf(setting, node);
+ }
+
+ //expand parents after move
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag);
+ }
+ },
+ removeEditBtn: function(setting, node) {
+ $$(node, consts.id.EDIT, setting).unbind().remove();
+ },
+ removeRemoveBtn: function(setting, node) {
+ $$(node, consts.id.REMOVE, setting).unbind().remove();
+ },
+ removeTreeDom: function(setting, node) {
+ node.isHover = false;
+ view.removeEditBtn(setting, node);
+ view.removeRemoveBtn(setting, node);
+ tools.apply(setting.view.removeHoverDom, [setting.treeId, node]);
+ },
+ repairNodeLevelClass: function(setting, node, oldLevel) {
+ if (oldLevel === node.level) return;
+ var liObj = $$(node, setting),
+ aObj = $$(node, consts.id.A, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ oldClass = consts.className.LEVEL + oldLevel,
+ newClass = consts.className.LEVEL + node.level;
+ liObj.removeClass(oldClass);
+ liObj.addClass(newClass);
+ aObj.removeClass(oldClass);
+ aObj.addClass(newClass);
+ ulObj.removeClass(oldClass);
+ ulObj.addClass(newClass);
+ },
+ selectNodes : function(setting, nodes) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ view.selectNode(setting, nodes[i], i>0);
+ }
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy);
+ data.addInitRoot(_initRoot);
+ data.addZTreeTools(_zTreeTools);
+
+ var _cancelPreSelectedNode = view.cancelPreSelectedNode;
+ view.cancelPreSelectedNode = function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length; i<j; i++) {
+ if (!node || node === list[i]) {
+ view.removeTreeDom(setting, list[i]);
+ if (node) break;
+ }
+ }
+ if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments);
+ }
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) {
+ _createNodes.apply(view, arguments);
+ }
+ if (!nodes) return;
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ }
+
+ var _makeNodeUrl = view.makeNodeUrl;
+ view.makeNodeUrl = function(setting, node) {
+ return setting.edit.enable ? null : (_makeNodeUrl.apply(view, arguments));
+ }
+
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var root = data.getRoot(setting);
+ if (root.curEditNode === node) root.curEditNode = null;
+ if (_removeNode) {
+ _removeNode.apply(view, arguments);
+ }
+ }
+
+ var _selectNode = view.selectNode;
+ view.selectNode = function(setting, node, addFlag) {
+ var root = data.getRoot(setting);
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ return false;
+ }
+ if (_selectNode) _selectNode.apply(view, arguments);
+ view.addHoverDom(setting, node);
+ return true;
+ }
+
+ var _uCanDo = tools.uCanDo;
+ tools.uCanDo = function(setting, e) {
+ var root = data.getRoot(setting);
+ if (e && (tools.eqs(e.type, "mouseover") || tools.eqs(e.type, "mouseout") || tools.eqs(e.type, "mousedown") || tools.eqs(e.type, "mouseup"))) {
+ return true;
+ }
+ if (root.curEditNode) {
+ view.editNodeBlur = false;
+ root.curEditInput.focus();
+ }
+ return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true);
+ }
+})(jQuery);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.min.js
new file mode 100644
index 00000000..0677d9ed
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.all.min.js
@@ -0,0 +1,160 @@
+
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
+e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
+"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
+"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
+(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
+treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
+addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
+h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
+getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
+getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
+getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
+null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
+getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
+removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
+F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
+for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
+return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
+doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
+[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
+[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
+L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
+Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
+c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
+f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
+0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
+d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
+f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
+!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
+a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
+a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
+f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
+g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
+a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
+d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
+a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
+"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
+c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
+" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
+i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
+h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
+f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
+a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
+a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
+k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
+a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
+NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
+"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
+a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
+a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
+a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
+c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
+b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
+a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
+0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
+
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c,
+a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled===
+!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var g=f.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=g.length-1;d>=0;d--)b=g[d],b[l]&&b!=a&&(b[l]=!1,g.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!=
+a.parentTId&&e.repairParentChkClassWithSelf(c,b));g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);for(d=0,h=g[i].length;d<h;d++)b=g[i][d],b[l]&&b!=a&&(b[l]=!1,e.setChkClass(c,n(b,j.id.CHECK,c),b))}else if(c.check.radioType==b.TYPE_ALL)for(d=0,h=g.length;d<h;d++)if(a==g[d]){g.splice(d,1);break}}else a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,
+a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+
+"_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=f.getRoot(c),i=0,l=h[d].length;i<l;i++){var g=h[d][i];g.nocheck!==!0&&g.chkDisabled!==!0&&(g[b]=a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b=n(a,j.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,
+a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=c.data.key.children;a[b]&&a[b].length>0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i<l;i++)e.repairSonChkDisabled(c,a[h][i],b,d)}},repairParentChkDisabled:function(c,
+a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.removeClass(),a.addClass(e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(a[i]=b,e.setChkClass(c,l,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(j.event.CHECK,
+[null,c.treeId,a]));if(a.parentTId){l=!0;if(!b)for(var h=a.getParentNode()[h],g=0,k=h.length;g<k;g++)if(h[g].nocheck!==!0&&h[g].chkDisabled!==!0&&h[g][i]||(h[g].nocheck===!0||h[g].chkDisabled===!0)&&h[g].check_Child_State>0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var g=!1;if(a[h])for(var k=0,m=a[h].length;k<m&&a.chkDisabled!==!0;k++){var o=a[h][k];e.setSonNodeCheckBox(c,
+o,b,d);o.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(a[i]=b,!g)a.check_Child_State=a[h]&&a[h].length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c,
+a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=c.data.key.checked;return{checked:a[b],half:a.halfCheck?a.halfCheck:c.check.chkStyle==j.radio.STYLE?a.check_Child_State===2:a[b]?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL,
+d=!d?[]:d,g=0,k=a.length;g<k;g++){if(a[g].nocheck!==!0&&a[g].chkDisabled!==!0&&a[g][i]==b&&(d.push(a[g]),e))break;f.getTreeCheckedNodes(c,a[g][h],b,d);if(e&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i<e;i++)a[i].nocheck!==!0&&a[i].chkDisabled!==!0&&a[i][h]!=a[i].checkedOld&&b.push(a[i]),f.getTreeChangeCheckedNodes(c,a[i][d],b);return b},makeChkFlag:function(c,a){if(a){var b=c.data.key.children,
+d=c.data.key.checked,h=-1;if(a[b])for(var i=0,e=a[b].length;i<e;i++){var g=a[b][i],f=-1;if(c.check.chkStyle==j.radio.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?2:g[d]?2:g.check_Child_State>0?2:0,f==2){h=2;break}else f==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?1:g[d]?g.check_Child_State===-1||g.check_Child_State===2?2:1:g.check_Child_State>0?1:0,f===1){h=1;break}else if(f===
+2&&h>-1&&i>0&&f!==h){h=1;break}else if(h===2&&f>-1&&f<2){h=1;break}else f>-1&&(h=f)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,f=m._z.data,n=k.$;f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});f.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]=
+k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,
+b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=
+k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=f.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});
+f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,j.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",j.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,f){var g=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[g]),f=!!f,(a[g]!==b||c)&&!(f&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&&
+a.nocheck!==!0))a[g]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),f&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return f.getTreeCheckedNodes(this.setting,f.getRoot(this.setting)[b],a!==!1)};
+a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return f.getTreeChangeCheckedNodes(this.setting,f.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===
+j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&f.makeChkFlag(c,
+d);return j}})(jQuery);
+
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(w){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},x={onHoverOverNode:function(b,a){var c=m.getSetting(b.data.treeId),d=m.getRoot(c);if(d.curHoverNode!=a)x.onHoverOutNode(b);d.curHoverNode=a;f.addHoverDom(c,a)},onHoverOutNode:function(b){var b=
+m.getSetting(b.data.treeId),a=m.getRoot(b);if(a.curHoverNode&&!m.isSelectedNode(b,a.curHoverNode))f.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(C.dragFlag==0&&Math.abs(N-b.clientX)<e.edit.drag.minMoveSize&&Math.abs(O-b.clientY)<e.edit.drag.minMoveSize)return!0;var a,c,n,k,i;i=e.data.key.children;M.css("cursor","pointer");if(C.dragFlag==0){if(g.apply(e.callback.beforeDrag,[e.treeId,l],!0)==!1)return r(b),!0;for(a=0,c=l.length;a<c;a++){if(a==0)C.dragNodeShowBefore=
+[];n=l[a];n.isParent&&n.open?(f.expandCollapseNode(e,n,!n.open),C.dragNodeShowBefore[n.tId]=!0):C.dragNodeShowBefore[n.tId]=!1}C.dragFlag=1;t.showHoverDom=!1;g.showIfameMask(e,!0);n=!0;k=-1;if(l.length>1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a<c;a++)if(C.dragNodeShowBefore[j[a].tId]!==void 0&&(n&&k>-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("<ul class='zTreeDragUL'></ul>",
+e);for(a=0,c=l.length;a<c;a++)n=l[a],n.editNameFlag=!1,f.selectNode(e,n,a>0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("<li id='"+n.tId+"_tmp'></li>",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("<li id='"+n.tId+"_moretmp'><a> ... </a></li>",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);B=o("<span class='tmpzTreeMove_arrow'></span>",
+e);B.attr("id","zTreeMove_arrow_tmp");B.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(C.dragFlag==1){s&&B.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>w("#"+u+d.id.A,s).offset().left?(n=w("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));
+u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||w(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=c<e.edit.drag.borderMax&&c>e.edit.drag.borderMin;var j=p<e.edit.drag.borderMax&&
+p>e.edit.drag.borderMin,K=q<e.edit.drag.borderMax&&q>e.edit.drag.borderMin,G=x<e.edit.drag.borderMax&&x>e.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!=
+h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a<c;a++)if(n=l[a],E.id===n.tId){S=!1;break}else if(o(n,e).find("#"+E.id).length>0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=w(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+
+10);s&&s!=h.treeObj&&s.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+s.offset().left-h.treeObj.offset().left)}D.css({top:b.clientY+y+3+"px",left:b.clientX+k+3+"px"});i=a=0;if(s&&s.attr("id")!=h.treeId){var z=u==null?null:m.getNodeCache(h,u);c=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;a=!!(H&&u===H.tId);i=!!(R&&u===R.tId);k=n.parentTId&&n.parentTId==u;n=(c||!i)&&g.apply(h.edit.drag.prev,[h.treeId,l,z],
+!!h.edit.drag.prev);a=(c||!a)&&g.apply(h.edit.drag.next,[h.treeId,l,z],!!h.edit.drag.next);G=(c||!k)&&!(h.data.keep.leaf&&!z.isParent)&&g.apply(h.edit.drag.inner,[h.treeId,l,z],!!h.edit.drag.inner);if(!n&&!a&&!G){if(s=null,u="",v=d.move.TYPE_INNER,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null}else{c=w("#"+u+d.id.A,s);i=z.isLastNode?null:w("#"+z.getNextNode().tId+d.id.A,s.next());j=c.offset().top;k=c.offset().left;K=n?G?0.25:a?
+0.5:1:-1;G=a?G?0.75:n?0.5:0:-1;y=(b.clientY+y-j)/c.height();(K==1||y<=K&&y>=-0.2)&&n?(a=1-B.width(),i=j-B.height()/2,v=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-B.width(),i=i==null||z.isParent&&z.open?j+c.height()-B.height()/2:i.offset().top-B.height()/2,v=d.move.TYPE_NEXT):(a=5-B.width(),i=j,v=d.move.TYPE_INNER);B.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(T!=u||U!=v)L=(new Date).getTime();if(z&&z.isParent&&v==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&&
+window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50),
+window.zTreeMoveTargetNodeTId=z.tId}}else if(v=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=v;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c);
+F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(C.dragFlag!=0){C.dragFlag=0;var a,i,j;for(a=0,i=l.length;a<i;a++)j=l[a],j.isParent&&C.dragNodeShowBefore[j.tId]&&!j.open&&(f.expandCollapseNode(e,j,!j.open),
+delete C.dragNodeShowBefore[j.tId]);D&&D.remove();B&&B.remove();var p=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;!p&&s&&u&&l[0].parentTId&&u==l[0].parentTId&&v==d.move.TYPE_INNER&&(s=null);if(s){var q=u==null?null:m.getNodeCache(h,u);if(g.apply(e.callback.beforeDrop,[h.treeId,l,q,v,p],!0)==!1)f.selectNodes(x,l);else{var A=p?g.clone(l):l;a=function(){if(J){if(!p)for(var a=0,c=l.length;a<c;a++)f.removeNode(e,l[a]);if(v==d.move.TYPE_INNER)f.addNodes(h,
+q,A);else if(f.addNodes(h,q.getParentNode(),A),v==d.move.TYPE_PREV)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1)}else if(p&&v==d.move.TYPE_INNER)f.addNodes(h,q,A);else if(p&&f.addNodes(h,q.getParentNode(),A),v!=d.move.TYPE_NEXT)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1);f.selectNodes(h,A);o(A[0],e).focus().blur();e.treeObj.trigger(d.event.DROP,[b,h.treeId,A,q,
+v,p])};v==d.move.TYPE_INNER&&g.canAsync(h,q)?f.asyncNode(h,q,!1,a):a()}}else f.selectNodes(x,l),e.treeObj.trigger(d.event.DROP,[b,e.treeId,l,null,null,null])}}function k(){return!1}var i,j,e=m.getSetting(b.data.treeId),C=m.getRoot(e),t=m.getRoots();if(b.button==2||!e.edit.enable||!e.edit.drag.isCopy&&!e.edit.drag.isMove)return!0;var p=b.target,q=m.getRoot(e).curSelectedList,l=[];if(m.isSelectedNode(e,a))for(i=0,j=q.length;i<j;i++){if(q[i].editNameFlag&&g.eqs(p.tagName,"input")&&p.getAttribute("treeNode"+
+d.id.INPUT)!==null)return!0;l.push(q[i]);if(l[0].parentTId!==q[i].parentTId){l=[a];break}}else l=[a];f.editNodeBlur=!0;f.cancelCurEditNode(e);var F=w(e.treeObj.get(0).ownerDocument),M=w(e.treeObj.get(0).ownerDocument.body),D,B,s,J=!1,h=e,x=e,H,R,T=null,U=null,u=null,v=d.move.TYPE_INNER,N=b.clientX,O=b.clientY,L=(new Date).getTime();g.uCanDo(e)&&F.bind("mousemove",c);F.bind("mouseup",r);F.bind("selectstart",k);b.preventDefault&&b.preventDefault();return!0}};w.extend(!0,w.fn.zTree.consts,I);w.extend(!0,
+w.fn.zTree._z,{tools:{getAbs:function(b){b=b.getBoundingClientRect();return[b.left+(document.body.scrollLeft+document.documentElement.scrollLeft),b.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(b){b.get(0)&&(b.focus(),g.setCursorPosition(b.get(0),b.val().length))},inputSelect:function(b){b.get(0)&&(b.focus(),b.select())},setCursorPosition:function(b,a){if(b.setSelectionRange)b.focus(),b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();
+c.collapse(!0);c.moveEnd("character",a);c.moveStart("character",a);c.select()}},showIfameMask:function(b,a){for(var c=m.getRoot(b);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f<i;f++){var j=d.get(f),e=g.getAbs(j),j=o("<div id='zTreeMask_"+f+"' class='zTreeMask' style='top:"+e[1]+"px; left:"+e[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b,
+a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" edit' id='"+a.tId+d.id.EDIT+"' title='"+g.apply(b.edit.renameTitle,[b.treeId,a],b.edit.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}},
+addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" remove' id='"+a.tId+d.id.REMOVE+"' title='"+g.apply(b.edit.removeTitle,[b.treeId,a],b.edit.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b,
+a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;else i[k]=a,b.treeObj.trigger(d.event.RENAME,
+[b.treeId,i,c]);o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT);j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1)}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("<input type=text class='rename' id='"+
+a.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection=
+!1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p;
+t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,w=0,x=null,t=null,D=c.level;if(c.isFirstNode){if(l=
+0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p<q;p++)if(g[e][p].tId==c.tId){l=p;break}l>=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p<q;p++)j[e][p].tId==a.tId&&(w=p);if(r==d.move.TYPE_INNER){a[e]||(a[e]=[]);if(a[e].length>0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV?(j[e].splice(w,
+0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(w+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(w,0,c):j[e].splice(w+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length<1?(g.isParent=!1,
+g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()},removeRemoveBtn:function(b,
+a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c<d;c++)f.selectNode(b,a[c],c>0)}},event:{},
+data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a<f;a++)c[d][a]&&m.setSonNodeLevel(b,c,c[d][a])}}}});var H=w.fn.zTree,g=H._z.tools,d=H.consts,f=H._z.view,m=H._z.data,o=g.$;m.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0,minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,
+autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});m.addInitBind(function(b){var a=b.treeObj,c=d.event;a.bind(c.RENAME,function(a,c,d,f){g.apply(b.callback.onRename,[a,c,d,f])});a.bind(c.DRAG,function(a,c,d,f){g.apply(b.callback.onDrag,[c,d,f])});a.bind(c.DRAGMOVE,function(a,c,d,f){g.apply(b.callback.onDragMove,[c,d,f])});a.bind(c.DROP,
+function(a,c,d,f,e,m,o){g.apply(b.callback.onDrop,[c,d,f,e,m,o])})});m.addInitUnBind(function(b){var b=b.treeObj,a=d.event;b.unbind(a.RENAME);b.unbind(a.DRAG);b.unbind(a.DRAGMOVE);b.unbind(a.DROP)});m.addInitCache(function(){});m.addInitNode(function(b,a,c){if(c)c.isHover=!1,c.editNameFlag=!1});m.addInitProxy(function(b){var a=b.target,c=m.getSetting(b.data.treeId),f=b.relatedTarget,k="",i=null,j="",e=null,o=null;if(g.eqs(b.type,"mouseover")){if(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}]))k=
+g.getNodeMainDom(o).id,j="hoverOverNode"}else if(g.eqs(b.type,"mouseout"))o=g.getMDom(c,f,[{tagName:"a",attrName:"treeNode"+d.id.A}]),o||(k="remove",j="hoverOutNode");else if(g.eqs(b.type,"mousedown")&&(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}])))k=g.getNodeMainDom(o).id,j="mousedownNode";if(k.length>0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e=x.onHoverOutNode}return{stop:!1,
+node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null;if(a&&!a.isParent&&this.setting.data.keep.leaf&&
+k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(),!0),f.editNode(this.setting,a))};a.moveNode=
+function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}});var N=f.cancelPreSelectedNode;
+f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d<g;d++)if(!a||a===c[d])if(f.removeTreeDom(b,c[d]),a)break;N&&N.apply(f,arguments)};var O=f.createNodes;f.createNodes=function(b,a,c,d){O&&O.apply(f,arguments);c&&f.repairParentChkClassWithSelf&&f.repairParentChkClassWithSelf(b,d)};var V=f.makeNodeUrl;f.makeNodeUrl=function(b,a){return b.edit.enable?null:V.apply(f,arguments)};var L=f.removeNode;f.removeNode=function(b,a){var c=m.getRoot(b);if(c.curEditNode===
+a)c.curEditNode=null;L&&L.apply(f,arguments)};var P=f.selectNode;f.selectNode=function(b,a,c){var d=m.getRoot(b);if(m.isSelectedNode(b,a)&&d.curEditNode==a&&a.editNameFlag)return!1;P&&P.apply(f,arguments);f.addHoverDom(b,a);return!0};var Q=g.uCanDo;g.uCanDo=function(b,a){var c=m.getRoot(b);if(a&&(g.eqs(a.type,"mouseover")||g.eqs(a.type,"mouseout")||g.eqs(a.type,"mousedown")||g.eqs(a.type,"mouseup")))return!0;if(c.curEditNode)f.editNodeBlur=!1,c.curEditInput.focus();return!c.curEditNode&&(Q?Q.apply(f,
+arguments):!0)}})(jQuery);
+
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.js
new file mode 100644
index 00000000..7dd93c6b
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.js
@@ -0,0 +1,1684 @@
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ var settings = {}, roots = {}, caches = {},
+ //default consts of core
+ _consts = {
+ className: {
+ BUTTON: "button",
+ LEVEL: "level",
+ ICO_LOADING: "ico_loading",
+ SWITCH: "switch"
+ },
+ event: {
+ NODECREATED: "ztree_nodeCreated",
+ CLICK: "ztree_click",
+ EXPAND: "ztree_expand",
+ COLLAPSE: "ztree_collapse",
+ ASYNC_SUCCESS: "ztree_async_success",
+ ASYNC_ERROR: "ztree_async_error",
+ REMOVE: "ztree_remove"
+ },
+ id: {
+ A: "_a",
+ ICON: "_ico",
+ SPAN: "_span",
+ SWITCH: "_switch",
+ UL: "_ul"
+ },
+ line: {
+ ROOT: "root",
+ ROOTS: "roots",
+ CENTER: "center",
+ BOTTOM: "bottom",
+ NOLINE: "noline",
+ LINE: "line"
+ },
+ folder: {
+ OPEN: "open",
+ CLOSE: "close",
+ DOCU: "docu"
+ },
+ node: {
+ CURSELECTED: "curSelectedNode"
+ }
+ },
+ //default setting of core
+ _setting = {
+ treeId: "",
+ treeObj: null,
+ view: {
+ addDiyDom: null,
+ autoCancelSelected: true,
+ dblClickExpand: true,
+ expandSpeed: "fast",
+ fontCss: {},
+ nameIsHTML: false,
+ selectedMulti: true,
+ showIcon: true,
+ showLine: true,
+ showTitle: true,
+ txtSelectedEnable: false
+ },
+ data: {
+ key: {
+ children: "children",
+ name: "name",
+ title: "",
+ url: "url"
+ },
+ simpleData: {
+ enable: false,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: null
+ },
+ keep: {
+ parent: false,
+ leaf: false
+ }
+ },
+ async: {
+ enable: false,
+ contentType: "application/x-www-form-urlencoded",
+ type: "post",
+ dataType: "text",
+ url: "",
+ autoParam: [],
+ otherParam: [],
+ dataFilter: null
+ },
+ callback: {
+ beforeAsync:null,
+ beforeClick:null,
+ beforeDblClick:null,
+ beforeRightClick:null,
+ beforeMouseDown:null,
+ beforeMouseUp:null,
+ beforeExpand:null,
+ beforeCollapse:null,
+ beforeRemove:null,
+
+ onAsyncError:null,
+ onAsyncSuccess:null,
+ onNodeCreated:null,
+ onClick:null,
+ onDblClick:null,
+ onRightClick:null,
+ onMouseDown:null,
+ onMouseUp:null,
+ onExpand:null,
+ onCollapse:null,
+ onRemove:null
+ }
+ },
+ //default root of core
+ //zTree use root to save full data
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ if (!r) {
+ r = {};
+ data.setRoot(setting, r);
+ }
+ r[setting.data.key.children] = [];
+ r.expandTriggerFlag = false;
+ r.curSelectedList = [];
+ r.noSelection = true;
+ r.createdNodes = [];
+ r.zId = 0;
+ r._ver = (new Date()).getTime();
+ },
+ //default cache of core
+ _initCache = function(setting) {
+ var c = data.getCache(setting);
+ if (!c) {
+ c = {};
+ data.setCache(setting, c);
+ }
+ c.nodes = [];
+ c.doms = [];
+ },
+ //default bindEvent of core
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.NODECREATED, function (event, treeId, node) {
+ tools.apply(setting.callback.onNodeCreated, [event, treeId, node]);
+ });
+
+ o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) {
+ tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]);
+ });
+
+ o.bind(c.EXPAND, function (event, treeId, node) {
+ tools.apply(setting.callback.onExpand, [event, treeId, node]);
+ });
+
+ o.bind(c.COLLAPSE, function (event, treeId, node) {
+ tools.apply(setting.callback.onCollapse, [event, treeId, node]);
+ });
+
+ o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) {
+ tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]);
+ });
+
+ o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) {
+ tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ });
+
+ o.bind(c.REMOVE, function (event, treeId, treeNode) {
+ tools.apply(setting.callback.onRemove, [event, treeId, treeNode]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.NODECREATED)
+ .unbind(c.CLICK)
+ .unbind(c.EXPAND)
+ .unbind(c.COLLAPSE)
+ .unbind(c.ASYNC_SUCCESS)
+ .unbind(c.ASYNC_ERROR)
+ .unbind(c.REMOVE);
+ },
+ //default event proxy of core
+ _eventProxy = function(event) {
+ var target = event.target,
+ setting = data.getSetting(event.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(event.type, "mousedown")) {
+ treeEventType = "mousedown";
+ } else if (tools.eqs(event.type, "mouseup")) {
+ treeEventType = "mouseup";
+ } else if (tools.eqs(event.type, "contextmenu")) {
+ treeEventType = "contextmenu";
+ } else if (tools.eqs(event.type, "click")) {
+ if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.SWITCH) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "switchNode";
+ } else {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "clickNode";
+ }
+ }
+ } else if (tools.eqs(event.type, "dblclick")) {
+ treeEventType = "dblclick";
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "switchNode";
+ }
+ }
+ if (treeEventType.length > 0 && tId.length == 0) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {tId = tools.getNodeMainDom(tmp).id;}
+ }
+ // event to node
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "switchNode" :
+ if (!node.isParent) {
+ nodeEventType = "";
+ } else if (tools.eqs(event.type, "click")
+ || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) {
+ nodeEventCallback = handler.onSwitchNode;
+ } else {
+ nodeEventType = "";
+ }
+ break;
+ case "clickNode" :
+ nodeEventCallback = handler.onClickNode;
+ break;
+ }
+ }
+ // event to zTree
+ switch (treeEventType) {
+ case "mousedown" :
+ treeEventCallback = handler.onZTreeMousedown;
+ break;
+ case "mouseup" :
+ treeEventCallback = handler.onZTreeMouseup;
+ break;
+ case "dblclick" :
+ treeEventCallback = handler.onZTreeDblclick;
+ break;
+ case "contextmenu" :
+ treeEventCallback = handler.onZTreeContextmenu;
+ break;
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of core
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var r = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ n.level = level;
+ n.tId = setting.treeId + "_" + (++r.zId);
+ n.parentTId = parentNode ? parentNode.tId : null;
+ n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open;
+ if (n[childKey] && n[childKey].length > 0) {
+ n.isParent = true;
+ n.zAsync = true;
+ } else {
+ n.isParent = (typeof n.isParent == "string") ? tools.eqs(n.isParent, "true") : !!n.isParent;
+ n.open = (n.isParent && !setting.async.enable) ? n.open : false;
+ n.zAsync = !n.isParent;
+ }
+ n.isFirstNode = isFirstNode;
+ n.isLastNode = isLastNode;
+ n.getParentNode = function() {return data.getNodeCache(setting, n.parentTId);};
+ n.getPreNode = function() {return data.getPreNode(setting, n);};
+ n.getNextNode = function() {return data.getNextNode(setting, n);};
+ n.isAjaxing = false;
+ data.fixPIdKeyValue(setting, n);
+ },
+ _init = {
+ bind: [_bindEvent],
+ unbind: [_unbindEvent],
+ caches: [_initCache],
+ nodes: [_initNode],
+ proxys: [_eventProxy],
+ roots: [_initRoot],
+ beforeA: [],
+ afterA: [],
+ innerBeforeA: [],
+ innerAfterA: [],
+ zTreeTools: []
+ },
+ //method of operate data
+ data = {
+ addNodeCache: function(setting, node) {
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node;
+ },
+ getNodeCacheId: function(tId) {
+ return tId.substring(tId.lastIndexOf("_")+1);
+ },
+ addAfterA: function(afterA) {
+ _init.afterA.push(afterA);
+ },
+ addBeforeA: function(beforeA) {
+ _init.beforeA.push(beforeA);
+ },
+ addInnerAfterA: function(innerAfterA) {
+ _init.innerAfterA.push(innerAfterA);
+ },
+ addInnerBeforeA: function(innerBeforeA) {
+ _init.innerBeforeA.push(innerBeforeA);
+ },
+ addInitBind: function(bindEvent) {
+ _init.bind.push(bindEvent);
+ },
+ addInitUnBind: function(unbindEvent) {
+ _init.unbind.push(unbindEvent);
+ },
+ addInitCache: function(initCache) {
+ _init.caches.push(initCache);
+ },
+ addInitNode: function(initNode) {
+ _init.nodes.push(initNode);
+ },
+ addInitProxy: function(initProxy, isFirst) {
+ if (!!isFirst) {
+ _init.proxys.splice(0,0,initProxy);
+ } else {
+ _init.proxys.push(initProxy);
+ }
+ },
+ addInitRoot: function(initRoot) {
+ _init.roots.push(initRoot);
+ },
+ addNodesData: function(setting, parentNode, nodes) {
+ var childKey = setting.data.key.children;
+ if (!parentNode[childKey]) parentNode[childKey] = [];
+ if (parentNode[childKey].length > 0) {
+ parentNode[childKey][parentNode[childKey].length - 1].isLastNode = false;
+ view.setNodeLineIcos(setting, parentNode[childKey][parentNode[childKey].length - 1]);
+ }
+ parentNode.isParent = true;
+ parentNode[childKey] = parentNode[childKey].concat(nodes);
+ },
+ addSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ if (!data.isSelectedNode(setting, node)) {
+ root.curSelectedList.push(node);
+ }
+ },
+ addCreatedNode: function(setting, node) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ root.createdNodes.push(node);
+ }
+ },
+ addZTreeTools: function(zTreeTools) {
+ _init.zTreeTools.push(zTreeTools);
+ },
+ exSetting: function(s) {
+ $.extend(true, _setting, s);
+ },
+ fixPIdKeyValue: function(setting, node) {
+ if (setting.data.simpleData.enable) {
+ node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId;
+ }
+ },
+ getAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.afterA.length; i<j; i++) {
+ _init.afterA[i].apply(this, arguments);
+ }
+ },
+ getBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.beforeA.length; i<j; i++) {
+ _init.beforeA[i].apply(this, arguments);
+ }
+ },
+ getInnerAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.innerAfterA.length; i<j; i++) {
+ _init.innerAfterA[i].apply(this, arguments);
+ }
+ },
+ getInnerBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.innerBeforeA.length; i<j; i++) {
+ _init.innerBeforeA[i].apply(this, arguments);
+ }
+ },
+ getCache: function(setting) {
+ return caches[setting.treeId];
+ },
+ getNextNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length-1; i<=l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==l ? null : p[childKey][i+1]);
+ }
+ }
+ return null;
+ },
+ getNodeByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return null;
+ var childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ return nodes[i];
+ }
+ var tmp = data.getNodeByParam(setting, nodes[i][childKey], key, value);
+ if (tmp) return tmp;
+ }
+ return null;
+ },
+ getNodeCache: function(setting, tId) {
+ if (!tId) return null;
+ var n = caches[setting.treeId].nodes[data.getNodeCacheId(tId)];
+ return n ? n : null;
+ },
+ getNodeName: function(setting, node) {
+ var nameKey = setting.data.key.name;
+ return "" + node[nameKey];
+ },
+ getNodeTitle: function(setting, node) {
+ var t = setting.data.key.title === "" ? setting.data.key.name : setting.data.key.title;
+ return "" + node[t];
+ },
+ getNodes: function(setting) {
+ return data.getRoot(setting)[setting.data.key.children];
+ },
+ getNodesByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParam(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByParamFuzzy: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ value = value.toLowerCase();
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (typeof nodes[i][key] == "string" && nodes[i][key].toLowerCase().indexOf(value)>-1) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParamFuzzy(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByFilter: function(setting, nodes, filter, isSingle, invokeParam) {
+ if (!nodes) return (isSingle ? null : []);
+ var childKey = setting.data.key.children,
+ result = isSingle ? null : [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (tools.apply(filter, [nodes[i], invokeParam], false)) {
+ if (isSingle) {return nodes[i];}
+ result.push(nodes[i]);
+ }
+ var tmpResult = data.getNodesByFilter(setting, nodes[i][childKey], filter, isSingle, invokeParam);
+ if (isSingle && !!tmpResult) {return tmpResult;}
+ result = isSingle ? tmpResult : result.concat(tmpResult);
+ }
+ return result;
+ },
+ getPreNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length; i<l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==0 ? null : p[childKey][i-1]);
+ }
+ }
+ return null;
+ },
+ getRoot: function(setting) {
+ return setting ? roots[setting.treeId] : null;
+ },
+ getRoots: function() {
+ return roots;
+ },
+ getSetting: function(treeId) {
+ return settings[treeId];
+ },
+ getSettings: function() {
+ return settings;
+ },
+ getZTreeTools: function(treeId) {
+ var r = this.getRoot(this.getSetting(treeId));
+ return r ? r.treeTools : null;
+ },
+ initCache: function(setting) {
+ for (var i=0, j=_init.caches.length; i<j; i++) {
+ _init.caches[i].apply(this, arguments);
+ }
+ },
+ initNode: function(setting, level, node, parentNode, preNode, nextNode) {
+ for (var i=0, j=_init.nodes.length; i<j; i++) {
+ _init.nodes[i].apply(this, arguments);
+ }
+ },
+ initRoot: function(setting) {
+ for (var i=0, j=_init.roots.length; i<j; i++) {
+ _init.roots[i].apply(this, arguments);
+ }
+ },
+ isSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i]) return true;
+ }
+ return false;
+ },
+ removeNodeCache: function(setting, node) {
+ var childKey = setting.data.key.children;
+ if (node[childKey]) {
+ for (var i=0, l=node[childKey].length; i<l; i++) {
+ arguments.callee(setting, node[childKey][i]);
+ }
+ }
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = null;
+ },
+ removeSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i] || !data.getNodeCache(setting, root.curSelectedList[i].tId)) {
+ root.curSelectedList.splice(i, 1);
+ i--;j--;
+ }
+ }
+ },
+ setCache: function(setting, cache) {
+ caches[setting.treeId] = cache;
+ },
+ setRoot: function(setting, root) {
+ roots[setting.treeId] = root;
+ },
+ setZTreeTools: function(setting, zTreeTools) {
+ for (var i=0, j=_init.zTreeTools.length; i<j; i++) {
+ _init.zTreeTools[i].apply(this, arguments);
+ }
+ },
+ transformToArrayFormat: function (setting, nodes) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ r = [];
+ if (tools.isArray(nodes)) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ r.push(nodes[i]);
+ if (nodes[i][childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[i][childKey]));
+ }
+ } else {
+ r.push(nodes);
+ if (nodes[childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[childKey]));
+ }
+ return r;
+ },
+ transformTozTreeFormat: function(setting, sNodes) {
+ var i,l,
+ key = setting.data.simpleData.idKey,
+ parentKey = setting.data.simpleData.pIdKey,
+ childKey = setting.data.key.children;
+ if (!key || key=="" || !sNodes) return [];
+
+ if (tools.isArray(sNodes)) {
+ var r = [];
+ var tmpMap = [];
+ for (i=0, l=sNodes.length; i<l; i++) {
+ tmpMap[sNodes[i][key]] = sNodes[i];
+ }
+ for (i=0, l=sNodes.length; i<l; i++) {
+ if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
+ if (!tmpMap[sNodes[i][parentKey]][childKey])
+ tmpMap[sNodes[i][parentKey]][childKey] = [];
+ tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
+ } else {
+ r.push(sNodes[i]);
+ }
+ }
+ return r;
+ }else {
+ return [sNodes];
+ }
+ }
+ },
+ //method of event proxy
+ event = {
+ bindEvent: function(setting) {
+ for (var i=0, j=_init.bind.length; i<j; i++) {
+ _init.bind[i].apply(this, arguments);
+ }
+ },
+ unbindEvent: function(setting) {
+ for (var i=0, j=_init.unbind.length; i<j; i++) {
+ _init.unbind[i].apply(this, arguments);
+ }
+ },
+ bindTree: function(setting) {
+ var eventParam = {
+ treeId: setting.treeId
+ },
+ o = setting.treeObj;
+ if (!setting.view.txtSelectedEnable) {
+ // for can't select text
+ o.bind('selectstart', function(e){
+ var node
+ var n = e.originalEvent.srcElement.nodeName.toLowerCase();
+ return (n === "input" || n === "textarea" );
+ }).css({
+ "-moz-user-select":"-moz-none"
+ });
+ }
+ o.bind('click', eventParam, event.proxy);
+ o.bind('dblclick', eventParam, event.proxy);
+ o.bind('mouseover', eventParam, event.proxy);
+ o.bind('mouseout', eventParam, event.proxy);
+ o.bind('mousedown', eventParam, event.proxy);
+ o.bind('mouseup', eventParam, event.proxy);
+ o.bind('contextmenu', eventParam, event.proxy);
+ },
+ unbindTree: function(setting) {
+ var o = setting.treeObj;
+ o.unbind('click', event.proxy)
+ .unbind('dblclick', event.proxy)
+ .unbind('mouseover', event.proxy)
+ .unbind('mouseout', event.proxy)
+ .unbind('mousedown', event.proxy)
+ .unbind('mouseup', event.proxy)
+ .unbind('contextmenu', event.proxy);
+ },
+ doProxy: function(e) {
+ var results = [];
+ for (var i=0, j=_init.proxys.length; i<j; i++) {
+ var proxyResult = _init.proxys[i].apply(this, arguments);
+ results.push(proxyResult);
+ if (proxyResult.stop) {
+ break;
+ }
+ }
+ return results;
+ },
+ proxy: function(e) {
+ var setting = data.getSetting(e.data.treeId);
+ if (!tools.uCanDo(setting, e)) return true;
+ var results = event.doProxy(e),
+ r = true, x = false;
+ for (var i=0, l=results.length; i<l; i++) {
+ var proxyResult = results[i];
+ if (proxyResult.nodeEventCallback) {
+ x = true;
+ r = proxyResult.nodeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ if (proxyResult.treeEventCallback) {
+ x = true;
+ r = proxyResult.treeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ }
+ return r;
+ }
+ },
+ //method of event handler
+ handler = {
+ onSwitchNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (node.open) {
+ if (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ } else {
+ if (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ }
+ return true;
+ },
+ onClickNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ clickFlag = ( (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey)) && data.isSelectedNode(setting, node)) ? 0 : (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey) && setting.view.selectedMulti) ? 2 : 1;
+ if (tools.apply(setting.callback.beforeClick, [setting.treeId, node, clickFlag], true) == false) return true;
+ if (clickFlag === 0) {
+ view.cancelPreSelectedNode(setting, node);
+ } else {
+ view.selectNode(setting, node, clickFlag === 2);
+ }
+ setting.treeObj.trigger(consts.event.CLICK, [event, setting.treeId, node, clickFlag]);
+ return true;
+ },
+ onZTreeMousedown: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseDown, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseDown, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeMouseup: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseUp, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseUp, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeDblclick: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeDblClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onDblClick, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeContextmenu: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeRightClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onRightClick, [event, setting.treeId, node]);
+ }
+ return (typeof setting.callback.onRightClick) != "function";
+ }
+ },
+ //method of tools for zTree
+ tools = {
+ apply: function(fun, param, defaultValue) {
+ if ((typeof fun) == "function") {
+ return fun.apply(zt, param?param:[]);
+ }
+ return defaultValue;
+ },
+ canAsync: function(setting, node) {
+ var childKey = setting.data.key.children;
+ return (setting.async.enable && node && node.isParent && !(node.zAsync || (node[childKey] && node[childKey].length > 0)));
+ },
+ clone: function (obj){
+ if (obj === null) return null;
+ var o = tools.isArray(obj) ? [] : {};
+ for(var i in obj){
+ o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? arguments.callee(obj[i]) : obj[i]);
+ }
+ return o;
+ },
+ eqs: function(str1, str2) {
+ return str1.toLowerCase() === str2.toLowerCase();
+ },
+ isArray: function(arr) {
+ return Object.prototype.toString.apply(arr) === "[object Array]";
+ },
+ $: function(node, exp, setting) {
+ if (!!exp && typeof exp != "string") {
+ setting = exp;
+ exp = "";
+ }
+ if (typeof node == "string") {
+ return $(node, setting ? setting.treeObj.get(0).ownerDocument : null);
+ } else {
+ return $("#" + node.tId + exp, setting ? setting.treeObj : null);
+ }
+ },
+ getMDom: function (setting, curDom, targetExpr) {
+ if (!curDom) return null;
+ while (curDom && curDom.id !== setting.treeId) {
+ for (var i=0, l=targetExpr.length; curDom.tagName && i<l; i++) {
+ if (tools.eqs(curDom.tagName, targetExpr[i].tagName) && curDom.getAttribute(targetExpr[i].attrName) !== null) {
+ return curDom;
+ }
+ }
+ curDom = curDom.parentNode;
+ }
+ return null;
+ },
+ getNodeMainDom:function(target) {
+ return ($(target).parent("li").get(0) || $(target).parentsUntil("li").parent().get(0));
+ },
+ isChildOrSelf: function(dom, parentId) {
+ return ( $(dom).closest("#" + parentId).length> 0 );
+ },
+ uCanDo: function(setting, e) {
+ return true;
+ }
+ },
+ //method of operate ztree dom
+ view = {
+ addNodes: function(setting, parentNode, newNodes, isSilent) {
+ if (setting.data.keep.leaf && parentNode && !parentNode.isParent) {
+ return;
+ }
+ if (!tools.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+ if (setting.data.simpleData.enable) {
+ newNodes = data.transformTozTreeFormat(setting, newNodes);
+ }
+ if (parentNode) {
+ var target_switchObj = $$(parentNode, consts.id.SWITCH, setting),
+ target_icoObj = $$(parentNode, consts.id.ICON, setting),
+ target_ulObj = $$(parentNode, consts.id.UL, setting);
+
+ if (!parentNode.open) {
+ view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE);
+ parentNode.open = false;
+ target_ulObj.css({
+ "display": "none"
+ });
+ }
+
+ data.addNodesData(setting, parentNode, newNodes);
+ view.createNodes(setting, parentNode.level + 1, newNodes, parentNode);
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, parentNode, true);
+ }
+ } else {
+ data.addNodesData(setting, data.getRoot(setting), newNodes);
+ view.createNodes(setting, 0, newNodes, null);
+ }
+ },
+ appendNodes: function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ if (!nodes) return [];
+ var html = [],
+ childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ var node = nodes[i];
+ if (initFlag) {
+ var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
+ tmpPChild = tmpPNode[childKey],
+ isFirstNode = ((tmpPChild.length == nodes.length) && (i == 0)),
+ isLastNode = (i == (nodes.length - 1));
+ data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag);
+ data.addNodeCache(setting, node);
+ }
+
+ var childHtml = [];
+ if (node[childKey] && node[childKey].length > 0) {
+ //make child html first, because checkType
+ childHtml = view.appendNodes(setting, level + 1, node[childKey], node, initFlag, openFlag && node.open);
+ }
+ if (openFlag) {
+
+ view.makeDOMNodeMainBefore(html, setting, node);
+ view.makeDOMNodeLine(html, setting, node);
+ data.getBeforeA(setting, node, html);
+ view.makeDOMNodeNameBefore(html, setting, node);
+ data.getInnerBeforeA(setting, node, html);
+ view.makeDOMNodeIcon(html, setting, node);
+ data.getInnerAfterA(setting, node, html);
+ view.makeDOMNodeNameAfter(html, setting, node);
+ data.getAfterA(setting, node, html);
+ if (node.isParent && node.open) {
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ }
+ view.makeDOMNodeMainAfter(html, setting, node);
+ data.addCreatedNode(setting, node);
+ }
+ }
+ return html;
+ },
+ appendParentULDom: function(setting, node) {
+ var html = [],
+ nObj = $$(node, setting);
+ if (!nObj.get(0) && !!node.parentTId) {
+ view.appendParentULDom(setting, node.getParentNode());
+ nObj = $$(node, setting);
+ }
+ var ulObj = $$(node, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.remove();
+ }
+ var childKey = setting.data.key.children,
+ childHtml = view.appendNodes(setting, node.level+1, node[childKey], node, false, true);
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ nObj.append(html.join(''));
+ },
+ asyncNode: function(setting, node, isSilent, callback) {
+ var i, l;
+ if (node && !node.isParent) {
+ tools.apply(callback);
+ return false;
+ } else if (node && node.isAjaxing) {
+ return false;
+ } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) {
+ tools.apply(callback);
+ return false;
+ }
+ if (node) {
+ node.isAjaxing = true;
+ var icoObj = $$(node, consts.id.ICON, setting);
+ icoObj.attr({"style":"", "class":consts.className.BUTTON + " " + consts.className.ICO_LOADING});
+ }
+
+ var tmpParam = {};
+ for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) {
+ var pKey = setting.async.autoParam[i].split("="), spKey = pKey;
+ if (pKey.length>1) {
+ spKey = pKey[1];
+ pKey = pKey[0];
+ }
+ tmpParam[spKey] = node[pKey];
+ }
+ if (tools.isArray(setting.async.otherParam)) {
+ for (i = 0, l = setting.async.otherParam.length; i < l; i += 2) {
+ tmpParam[setting.async.otherParam[i]] = setting.async.otherParam[i + 1];
+ }
+ } else {
+ for (var p in setting.async.otherParam) {
+ tmpParam[p] = setting.async.otherParam[p];
+ }
+ }
+
+ var _tmpV = data.getRoot(setting)._ver;
+ $.ajax({
+ contentType: setting.async.contentType,
+ type: setting.async.type,
+ url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
+ data: tmpParam,
+ dataType: setting.async.dataType,
+ success: function(msg) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ var newNodes = [];
+ try {
+ if (!msg || msg.length == 0) {
+ newNodes = [];
+ } else if (typeof msg == "string") {
+ newNodes = eval("(" + msg + ")");
+ } else {
+ newNodes = msg;
+ }
+ } catch(err) {
+ newNodes = msg;
+ }
+
+ if (node) {
+ node.isAjaxing = null;
+ node.zAsync = true;
+ }
+ view.setNodeLineIcos(setting, node);
+ if (newNodes && newNodes !== "") {
+ newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes);
+ view.addNodes(setting, node, !!newNodes ? tools.clone(newNodes) : [], !!isSilent);
+ } else {
+ view.addNodes(setting, node, [], !!isSilent);
+ }
+ setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]);
+ tools.apply(callback);
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ if (node) node.isAjaxing = null;
+ view.setNodeLineIcos(setting, node);
+ setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ }
+ });
+ return true;
+ },
+ cancelPreSelectedNode: function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length-1; j>=i; j--) {
+ if (!node || node === list[j]) {
+ $$(list[j], consts.id.A, setting).removeClass(consts.node.CURSELECTED);
+ if (node) {
+ data.removeSelectedNode(setting, node);
+ break;
+ }
+ }
+ }
+ if (!node) data.getRoot(setting).curSelectedList = [];
+ },
+ createNodeCallback: function(setting) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ while (root.createdNodes.length>0) {
+ var node = root.createdNodes.shift();
+ tools.apply(setting.view.addDiyDom, [setting.treeId, node]);
+ if (!!setting.callback.onNodeCreated) {
+ setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]);
+ }
+ }
+ }
+ },
+ createNodes: function(setting, level, nodes, parentNode) {
+ if (!nodes || nodes.length == 0) return;
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ openFlag = !parentNode || parentNode.open || !!$$(parentNode[childKey][0], setting).get(0);
+ root.createdNodes = [];
+ var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, true, openFlag);
+ if (!parentNode) {
+ setting.treeObj.append(zTreeHtml.join(''));
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.append(zTreeHtml.join(''));
+ }
+ }
+ view.createNodeCallback(setting);
+ },
+ destroy: function(setting) {
+ if (!setting) return;
+ data.initCache(setting);
+ data.initRoot(setting);
+ event.unbindTree(setting);
+ event.unbindEvent(setting);
+ setting.treeObj.empty();
+ delete settings[setting.treeId];
+ },
+ expandCollapseNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (!node) {
+ tools.apply(callback, []);
+ return;
+ }
+ if (root.expandTriggerFlag) {
+ var _callback = callback;
+ callback = function(){
+ if (_callback) _callback();
+ if (node.open) {
+ setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]);
+ } else {
+ setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]);
+ }
+ };
+ root.expandTriggerFlag = false;
+ }
+ if (!node.open && node.isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (node[childKey] && node[childKey].length>0 && !$$(node[childKey][0], setting).get(0)))) {
+ view.appendParentULDom(setting, node);
+ view.createNodeCallback(setting);
+ }
+ if (node.open == expandFlag) {
+ tools.apply(callback, []);
+ return;
+ }
+ var ulObj = $$(node, consts.id.UL, setting),
+ switchObj = $$(node, consts.id.SWITCH, setting),
+ icoObj = $$(node, consts.id.ICON, setting);
+
+ if (node.isParent) {
+ node.open = !node.open;
+ if (node.iconOpen && node.iconClose) {
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ }
+
+ if (node.open) {
+ view.replaceSwitchClass(node, switchObj, consts.folder.OPEN);
+ view.replaceIcoClass(node, icoObj, consts.folder.OPEN);
+ if (animateFlag == false || setting.view.expandSpeed == "") {
+ ulObj.show();
+ tools.apply(callback, []);
+ } else {
+ if (node[childKey] && node[childKey].length > 0) {
+ ulObj.slideDown(setting.view.expandSpeed, callback);
+ } else {
+ ulObj.show();
+ tools.apply(callback, []);
+ }
+ }
+ } else {
+ view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(node, icoObj, consts.folder.CLOSE);
+ if (animateFlag == false || setting.view.expandSpeed == "" || !(node[childKey] && node[childKey].length > 0)) {
+ ulObj.hide();
+ tools.apply(callback, []);
+ } else {
+ ulObj.slideUp(setting.view.expandSpeed, callback);
+ }
+ }
+ } else {
+ tools.apply(callback, []);
+ }
+ },
+ expandCollapseParentNode: function(setting, node, expandFlag, animateFlag, callback) {
+ if (!node) return;
+ if (!node.parentTId) {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback);
+ return;
+ } else {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag);
+ }
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback);
+ }
+ },
+ expandCollapseSonNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ treeNodes = (node) ? node[childKey]: root[childKey],
+ selfAnimateSign = (node) ? false : animateFlag,
+ expandTriggerFlag = data.getRoot(setting).expandTriggerFlag;
+ data.getRoot(setting).expandTriggerFlag = false;
+ if (treeNodes) {
+ for (var i = 0, l = treeNodes.length; i < l; i++) {
+ if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign);
+ }
+ }
+ data.getRoot(setting).expandTriggerFlag = expandTriggerFlag;
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback );
+ },
+ makeDOMNodeIcon: function(html, setting, node) {
+ var nameStr = data.getNodeName(setting, node),
+ name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+ html.push("<span id='", node.tId, consts.id.ICON,
+ "' title='' treeNode", consts.id.ICON," class='", view.makeNodeIcoClass(setting, node),
+ "' style='", view.makeNodeIcoStyle(setting, node), "'></span><span id='", node.tId, consts.id.SPAN,
+ "'>",name,"</span>");
+ },
+ makeDOMNodeLine: function(html, setting, node) {
+ html.push("<span id='", node.tId, consts.id.SWITCH, "' title='' class='", view.makeNodeLineClass(setting, node), "' treeNode", consts.id.SWITCH,"></span>");
+ },
+ makeDOMNodeMainAfter: function(html, setting, node) {
+ html.push("</li>");
+ },
+ makeDOMNodeMainBefore: function(html, setting, node) {
+ html.push("<li id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
+ },
+ makeDOMNodeNameAfter: function(html, setting, node) {
+ html.push("</a>");
+ },
+ makeDOMNodeNameBefore: function(html, setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ url = view.makeNodeUrl(setting, node),
+ fontcss = view.makeNodeFontCss(setting, node),
+ fontStyle = [];
+ for (var f in fontcss) {
+ fontStyle.push(f, ":", fontcss[f], ";");
+ }
+ html.push("<a id='", node.tId, consts.id.A, "' class='", consts.className.LEVEL, node.level,"' treeNode", consts.id.A," onclick=\"", (node.click || ''),
+ "\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='",view.makeNodeTarget(node),"' style='", fontStyle.join(''),
+ "'");
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) {html.push("title='", title.replace(/'/g,"&#39;").replace(/</g,'&lt;').replace(/>/g,'&gt;'),"'");}
+ html.push(">");
+ },
+ makeNodeFontCss: function(setting, node) {
+ var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss);
+ return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {};
+ },
+ makeNodeIcoClass: function(setting, node) {
+ var icoCss = ["ico"];
+ if (!node.isAjaxing) {
+ icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0];
+ if (node.isParent) {
+ icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ icoCss.push(consts.folder.DOCU);
+ }
+ }
+ return consts.className.BUTTON + " " + icoCss.join('_');
+ },
+ makeNodeIcoStyle: function(setting, node) {
+ var icoStyle = [];
+ if (!node.isAjaxing) {
+ var icon = (node.isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node.icon;
+ if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;");
+ if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) {
+ icoStyle.push("width:0px;height:0px;");
+ }
+ }
+ return icoStyle.join('');
+ },
+ makeNodeLineClass: function(setting, node) {
+ var lineClass = [];
+ if (setting.view.showLine) {
+ if (node.level == 0 && node.isFirstNode && node.isLastNode) {
+ lineClass.push(consts.line.ROOT);
+ } else if (node.level == 0 && node.isFirstNode) {
+ lineClass.push(consts.line.ROOTS);
+ } else if (node.isLastNode) {
+ lineClass.push(consts.line.BOTTOM);
+ } else {
+ lineClass.push(consts.line.CENTER);
+ }
+ } else {
+ lineClass.push(consts.line.NOLINE);
+ }
+ if (node.isParent) {
+ lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ lineClass.push(consts.folder.DOCU);
+ }
+ return view.makeNodeLineClassEx(node) + lineClass.join('_');
+ },
+ makeNodeLineClassEx: function(node) {
+ return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " ";
+ },
+ makeNodeTarget: function(node) {
+ return (node.target || "_blank");
+ },
+ makeNodeUrl: function(setting, node) {
+ var urlKey = setting.data.key.url;
+ return node[urlKey] ? node[urlKey] : null;
+ },
+ makeUlHtml: function(setting, node, html, content) {
+ html.push("<ul id='", node.tId, consts.id.UL, "' class='", consts.className.LEVEL, node.level, " ", view.makeUlLineClass(setting, node), "' style='display:", (node.open ? "block": "none"),"'>");
+ html.push(content);
+ html.push("</ul>");
+ },
+ makeUlLineClass: function(setting, node) {
+ return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : "");
+ },
+ removeChildNodes: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ if (!nodes) return;
+
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ data.removeNodeCache(setting, nodes[i]);
+ }
+ data.removeSelectedNode(setting);
+ delete node[childKey];
+
+ if (!setting.data.keep.parent) {
+ node.isParent = false;
+ node.open = false;
+ var tmp_switchObj = $$(node, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(node, consts.id.ICON, setting);
+ view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU);
+ $$(node, consts.id.UL, setting).remove();
+ } else {
+ $$(node, consts.id.UL, setting).empty();
+ }
+ },
+ setFirstNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][0].isFirstNode = true;
+ }
+ },
+ setLastNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][childLength - 1].isLastNode = true;
+ }
+ },
+ removeNode: function(setting, node) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : root;
+
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ node.getPreNode = function() {return null;};
+ node.getNextNode = function() {return null;};
+
+ if (!data.getNodeCache(setting, node.tId)) {
+ return;
+ }
+
+ $$(node, setting).remove();
+ data.removeNodeCache(setting, node);
+ data.removeSelectedNode(setting, node);
+
+ for (var i = 0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i].tId == node.tId) {
+ parentNode[childKey].splice(i, 1);
+ break;
+ }
+ }
+ view.setFirstNode(setting, parentNode);
+ view.setLastNode(setting, parentNode);
+
+ var tmp_ulObj,tmp_switchObj,tmp_icoObj,
+ childLength = parentNode[childKey].length;
+
+ //repair nodes old parent
+ if (!setting.data.keep.parent && childLength == 0) {
+ //old parentNode has no child nodes
+ parentNode.isParent = false;
+ parentNode.open = false;
+ tmp_ulObj = $$(parentNode, consts.id.UL, setting);
+ tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(parentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (setting.view.showLine && childLength > 0) {
+ //old parentNode has child nodes
+ var newLast = parentNode[childKey][childLength - 1];
+ tmp_ulObj = $$(newLast, consts.id.UL, setting);
+ tmp_switchObj = $$(newLast, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(newLast, consts.id.ICON, setting);
+ if (parentNode == root) {
+ if (parentNode[childKey].length == 1) {
+ //node was root, and ztree has only one root after move node
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT);
+ } else {
+ var tmp_first_switchObj = $$(parentNode[childKey][0], consts.id.SWITCH, setting);
+ view.replaceSwitchClass(parentNode[childKey][0], tmp_first_switchObj, consts.line.ROOTS);
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ } else {
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ tmp_ulObj.removeClass(consts.line.LINE);
+ }
+ },
+ replaceIcoClass: function(node, obj, newName) {
+ if (!obj || node.isAjaxing) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[tmpList.length-1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ },
+ replaceSwitchClass: function(node, obj, newName) {
+ if (!obj) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.line.ROOT:
+ case consts.line.ROOTS:
+ case consts.line.CENTER:
+ case consts.line.BOTTOM:
+ case consts.line.NOLINE:
+ tmpList[0] = view.makeNodeLineClassEx(node) + newName;
+ break;
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ if (newName !== consts.folder.DOCU) {
+ obj.removeAttr("disabled");
+ } else {
+ obj.attr("disabled", "disabled");
+ }
+ },
+ selectNode: function(setting, node, addFlag) {
+ if (!addFlag) {
+ view.cancelPreSelectedNode(setting);
+ }
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED);
+ data.addSelectedNode(setting, node);
+ },
+ setNodeFontCss: function(setting, treeNode) {
+ var aObj = $$(treeNode, consts.id.A, setting),
+ fontCss = view.makeNodeFontCss(setting, treeNode);
+ if (fontCss) {
+ aObj.css(fontCss);
+ }
+ },
+ setNodeLineIcos: function(setting, node) {
+ if (!node) return;
+ var switchObj = $$(node, consts.id.SWITCH, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ icoObj = $$(node, consts.id.ICON, setting),
+ ulLine = view.makeUlLineClass(setting, node);
+ if (ulLine.length==0) {
+ ulObj.removeClass(consts.line.LINE);
+ } else {
+ ulObj.addClass(ulLine);
+ }
+ switchObj.attr("class", view.makeNodeLineClass(setting, node));
+ if (node.isParent) {
+ switchObj.removeAttr("disabled");
+ } else {
+ switchObj.attr("disabled", "disabled");
+ }
+ icoObj.removeAttr("style");
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ icoObj.attr("class", view.makeNodeIcoClass(setting, node));
+ },
+ setNodeName: function(setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ nObj = $$(node, consts.id.SPAN, setting);
+ nObj.empty();
+ if (setting.view.nameIsHTML) {
+ nObj.html(data.getNodeName(setting, node));
+ } else {
+ nObj.text(data.getNodeName(setting, node));
+ }
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("title", !title ? "" : title);
+ }
+ },
+ setNodeTarget: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("target", view.makeNodeTarget(node));
+ },
+ setNodeUrl: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting),
+ url = view.makeNodeUrl(setting, node);
+ if (url == null || url.length == 0) {
+ aObj.removeAttr("href");
+ } else {
+ aObj.attr("href", url);
+ }
+ },
+ switchNode: function(setting, node) {
+ if (node.open || !tools.canAsync(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ } else if (setting.async.enable) {
+ if (!view.asyncNode(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ return;
+ }
+ } else if (node) {
+ view.expandCollapseNode(setting, node, !node.open);
+ }
+ }
+ };
+ // zTree defind
+ $.fn.zTree = {
+ consts : _consts,
+ _z : {
+ tools: tools,
+ view: view,
+ event: event,
+ data: data
+ },
+ getZTreeObj: function(treeId) {
+ var o = data.getZTreeTools(treeId);
+ return o ? o : null;
+ },
+ destroy: function(treeId) {
+ if (!!treeId && treeId.length > 0) {
+ view.destroy(data.getSetting(treeId));
+ } else {
+ for(var s in settings) {
+ view.destroy(settings[s]);
+ }
+ }
+ },
+ init: function(obj, zSetting, zNodes) {
+ var setting = tools.clone(_setting);
+ $.extend(true, setting, zSetting);
+ setting.treeId = obj.attr("id");
+ setting.treeObj = obj;
+ setting.treeObj.empty();
+ settings[setting.treeId] = setting;
+ //For some older browser,(e.g., ie6)
+ if(typeof document.body.style.maxHeight === "undefined") {
+ setting.view.expandSpeed = "";
+ }
+ data.initRoot(setting);
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ zNodes = zNodes ? tools.clone(tools.isArray(zNodes)? zNodes : [zNodes]) : [];
+ if (setting.data.simpleData.enable) {
+ root[childKey] = data.transformTozTreeFormat(setting, zNodes);
+ } else {
+ root[childKey] = zNodes;
+ }
+
+ data.initCache(setting);
+ event.unbindTree(setting);
+ event.bindTree(setting);
+ event.unbindEvent(setting);
+ event.bindEvent(setting);
+
+ var zTreeTools = {
+ setting : setting,
+ addNodes : function(parentNode, newNodes, isSilent) {
+ if (!newNodes) return null;
+ if (!parentNode) parentNode = null;
+ if (parentNode && !parentNode.isParent && setting.data.keep.leaf) return null;
+ var xNewNodes = tools.clone(tools.isArray(newNodes)? newNodes: [newNodes]);
+ function addCallback() {
+ view.addNodes(setting, parentNode, xNewNodes, (isSilent==true));
+ }
+
+ if (tools.canAsync(setting, parentNode)) {
+ view.asyncNode(setting, parentNode, isSilent, addCallback);
+ } else {
+ addCallback();
+ }
+ return xNewNodes;
+ },
+ cancelSelectedNode : function(node) {
+ view.cancelPreSelectedNode(setting, node);
+ },
+ destroy : function() {
+ view.destroy(setting);
+ },
+ expandAll : function(expandFlag) {
+ expandFlag = !!expandFlag;
+ view.expandCollapseSonNode(setting, null, expandFlag, true);
+ return expandFlag;
+ },
+ expandNode : function(node, expandFlag, sonSign, focus, callbackFlag) {
+ if (!node || !node.isParent) return null;
+ if (expandFlag !== true && expandFlag !== false) {
+ expandFlag = !node.open;
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) {
+ return null;
+ } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) {
+ return null;
+ }
+ if (expandFlag && node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false);
+ }
+ if (expandFlag === node.open && !sonSign) {
+ return null;
+ }
+
+ data.getRoot(setting).expandTriggerFlag = callbackFlag;
+ if (!tools.canAsync(setting, node) && sonSign) {
+ view.expandCollapseSonNode(setting, node, expandFlag, true, function() {
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ });
+ } else {
+ node.open = !expandFlag;
+ view.switchNode(this.setting, node);
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ }
+ return expandFlag;
+ },
+ getNodes : function() {
+ return data.getNodes(setting);
+ },
+ getNodeByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodeByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodeByTId : function(tId) {
+ return data.getNodeCache(setting, tId);
+ },
+ getNodesByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByParamFuzzy : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParamFuzzy(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByFilter: function(filter, isSingle, parentNode, invokeParam) {
+ isSingle = !!isSingle;
+ if (!filter || (typeof filter != "function")) return (isSingle ? null : []);
+ return data.getNodesByFilter(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), filter, isSingle, invokeParam);
+ },
+ getNodeIndex : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i] == node) return i;
+ }
+ return -1;
+ },
+ getSelectedNodes : function() {
+ var r = [], list = data.getRoot(setting).curSelectedList;
+ for (var i=0, l=list.length; i<l; i++) {
+ r.push(list[i]);
+ }
+ return r;
+ },
+ isSelectedNode : function(node) {
+ return data.isSelectedNode(setting, node);
+ },
+ reAsyncChildNodes : function(parentNode, reloadType, isSilent) {
+ if (!this.setting.async.enable) return;
+ var isRoot = !parentNode;
+ if (isRoot) {
+ parentNode = data.getRoot(setting);
+ }
+ if (reloadType=="refresh") {
+ var childKey = this.setting.data.key.children;
+ for (var i = 0, l = parentNode[childKey] ? parentNode[childKey].length : 0; i < l; i++) {
+ data.removeNodeCache(setting, parentNode[childKey][i]);
+ }
+ data.removeSelectedNode(setting);
+ parentNode[childKey] = [];
+ if (isRoot) {
+ this.setting.treeObj.empty();
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ ulObj.empty();
+ }
+ }
+ view.asyncNode(this.setting, isRoot? null:parentNode, !!isSilent);
+ },
+ refresh : function() {
+ this.setting.treeObj.empty();
+ var root = data.getRoot(setting),
+ nodes = root[setting.data.key.children]
+ data.initRoot(setting);
+ root[setting.data.key.children] = nodes
+ data.initCache(setting);
+ view.createNodes(setting, 0, root[setting.data.key.children]);
+ },
+ removeChildNodes : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ view.removeChildNodes(setting, node);
+ return nodes ? nodes : null;
+ },
+ removeNode : function(node, callbackFlag) {
+ if (!node) return;
+ callbackFlag = !!callbackFlag;
+ if (callbackFlag && tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return;
+ view.removeNode(setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ }
+ },
+ selectNode : function(node, addFlag) {
+ if (!node) return;
+ if (tools.uCanDo(setting)) {
+ addFlag = setting.view.selectedMulti && addFlag;
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, false, function() {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ });
+ } else {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ }
+ view.selectNode(setting, node, addFlag);
+ }
+ },
+ transformTozTreeNodes : function(simpleNodes) {
+ return data.transformTozTreeFormat(setting, simpleNodes);
+ },
+ transformToArray : function(nodes) {
+ return data.transformToArrayFormat(setting, nodes);
+ },
+ updateNode : function(node, checkTypeFlag) {
+ if (!node) return;
+ var nObj = $$(node, setting);
+ if (nObj.get(0) && tools.uCanDo(setting)) {
+ view.setNodeName(setting, node);
+ view.setNodeTarget(setting, node);
+ view.setNodeUrl(setting, node);
+ view.setNodeLineIcos(setting, node);
+ view.setNodeFontCss(setting, node);
+ }
+ }
+ }
+ root.treeTools = zTreeTools;
+ data.setZTreeTools(setting, zTreeTools);
+
+ if (root[childKey] && root[childKey].length > 0) {
+ view.createNodes(setting, 0, root[childKey]);
+ } else if (setting.async.enable && setting.async.url && setting.async.url !== '') {
+ view.asyncNode(setting);
+ }
+ return zTreeTools;
+ }
+ };
+
+ var zt = $.fn.zTree,
+ $$ = tools.$,
+ consts = zt.consts;
+})(jQuery); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.min.js
new file mode 100644
index 00000000..705bdb4f
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.core.min.js
@@ -0,0 +1,69 @@
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
+e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
+"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
+"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
+(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
+treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
+addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
+h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
+getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
+getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
+getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
+null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
+getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
+removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
+F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
+for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
+return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
+doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
+[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
+[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
+L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
+Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
+c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
+f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
+0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
+d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
+f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
+!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
+a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
+a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
+f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
+g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
+a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
+d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
+a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
+"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
+c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
+" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
+i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
+h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
+f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
+a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
+a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
+k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
+a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
+NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
+"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
+a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
+a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
+a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
+c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
+b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
+a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
+0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.js
new file mode 100644
index 00000000..1374c525
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.js
@@ -0,0 +1,629 @@
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of excheck
+ var _consts = {
+ event: {
+ CHECK: "ztree_check"
+ },
+ id: {
+ CHECK: "_check"
+ },
+ checkbox: {
+ STYLE: "checkbox",
+ DEFAULT: "chk",
+ DISABLED: "disable",
+ FALSE: "false",
+ TRUE: "true",
+ FULL: "full",
+ PART: "part",
+ FOCUS: "focus"
+ },
+ radio: {
+ STYLE: "radio",
+ TYPE_ALL: "all",
+ TYPE_LEVEL: "level"
+ }
+ },
+ //default setting of excheck
+ _setting = {
+ check: {
+ enable: false,
+ autoCheckTrigger: false,
+ chkStyle: _consts.checkbox.STYLE,
+ nocheckInherit: false,
+ chkDisabledInherit: false,
+ radioType: _consts.radio.TYPE_LEVEL,
+ chkboxType: {
+ "Y": "ps",
+ "N": "ps"
+ }
+ },
+ data: {
+ key: {
+ checked: "checked"
+ }
+ },
+ callback: {
+ beforeCheck:null,
+ onCheck:null
+ }
+ },
+ //default root of excheck
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList = [];
+ },
+ //default cache of excheck
+ _initCache = function(treeId) {},
+ //default bind event of excheck
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.CHECK, function (event, srcEvent, treeId, node) {
+ event.srcEvent = srcEvent;
+ tools.apply(setting.callback.onCheck, [event, treeId, node]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.CHECK);
+ },
+ //default event proxy of excheck
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoverCheck";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoutCheck";
+ }
+ } else if (tools.eqs(e.type, "click")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "checkNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "checkNode" :
+ nodeEventCallback = _handler.onCheckNode;
+ break;
+ case "mouseoverCheck" :
+ nodeEventCallback = _handler.onMouseoverCheck;
+ break;
+ case "mouseoutCheck" :
+ nodeEventCallback = _handler.onMouseoutCheck;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: nodeEventType === "checkNode",
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of excheck
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var checkedKey = setting.data.key.checked;
+ if (typeof n[checkedKey] == "string") n[checkedKey] = tools.eqs(n[checkedKey], "true");
+ n[checkedKey] = !!n[checkedKey];
+ n.checkedOld = n[checkedKey];
+ if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true");
+ n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck);
+ if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true");
+ n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled);
+ if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true");
+ n.halfCheck = !!n.halfCheck;
+ n.check_Child_State = -1;
+ n.check_Focus = false;
+ n.getCheckStatus = function() {return data.getCheckStatus(setting, n);};
+
+ if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && n[checkedKey] ) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList.push(n);
+ }
+ },
+ //add dom for check
+ _beforeA = function(setting, node, html) {
+ var checkedKey = setting.data.key.checked;
+ if (setting.check.enable) {
+ data.makeChkFlag(setting, node);
+ html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true?" style='display:none;'":""),"></span>");
+ }
+ },
+ //update zTreeObj, add method of check
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
+ var checkedKey = this.setting.data.key.checked;
+ if (node.chkDisabled === true) return;
+ if (checked !== true && checked !== false) {
+ checked = !node[checkedKey];
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (node[checkedKey] === checked && !checkTypeFlag) {
+ return;
+ } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) {
+ return;
+ }
+ if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) {
+ node[checkedKey] = checked;
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]);
+ }
+ }
+ }
+
+ zTreeTools.checkAllNodes = function(checked) {
+ view.repairAllChk(this.setting, !!checked);
+ }
+
+ zTreeTools.getCheckedNodes = function(checked) {
+ var childKey = this.setting.data.key.children;
+ checked = (checked !== false);
+ return data.getTreeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey], checked);
+ }
+
+ zTreeTools.getChangeCheckedNodes = function() {
+ var childKey = this.setting.data.key.children;
+ return data.getTreeChangeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey]);
+ }
+
+ zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) {
+ disabled = !!disabled;
+ inheritParent = !!inheritParent;
+ inheritChildren = !!inheritChildren;
+ view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren);
+ view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent);
+ }
+
+ var _updateNode = zTreeTools.updateNode;
+ zTreeTools.updateNode = function(node, checkTypeFlag) {
+ if (_updateNode) _updateNode.apply(zTreeTools, arguments);
+ if (!node || !this.setting.check.enable) return;
+ var nObj = $$(node, this.setting);
+ if (nObj.get(0) && tools.uCanDo(this.setting)) {
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ }
+ }
+ },
+ //method of operate data
+ _data = {
+ getRadioCheckedList: function(setting) {
+ var checkedList = data.getRoot(setting).radioCheckedList;
+ for (var i=0, j=checkedList.length; i<j; i++) {
+ if(!data.getNodeCache(setting, checkedList[i].tId)) {
+ checkedList.splice(i, 1);
+ i--; j--;
+ }
+ }
+ return checkedList;
+ },
+ getCheckStatus: function(setting, node) {
+ if (!setting.check.enable || node.nocheck || node.chkDisabled) return null;
+ var checkedKey = setting.data.key.checked,
+ r = {
+ checked: node[checkedKey],
+ half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (node[checkedKey] ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0)))
+ };
+ return r;
+ },
+ getTreeCheckedNodes: function(setting, nodes, checked, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL);
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] == checked) {
+ results.push(nodes[i]);
+ if(onlyOne) {
+ break;
+ }
+ }
+ data.getTreeCheckedNodes(setting, nodes[i][childKey], checked, results);
+ if(onlyOne && results.length > 0) {
+ break;
+ }
+ }
+ return results;
+ },
+ getTreeChangeCheckedNodes: function(setting, nodes, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked;
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] != nodes[i].checkedOld) {
+ results.push(nodes[i]);
+ }
+ data.getTreeChangeCheckedNodes(setting, nodes[i][childKey], results);
+ }
+ return results;
+ },
+ makeChkFlag: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ chkFlag = -1;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var cNode = node[childKey][i];
+ var tmp = -1;
+ if (setting.check.chkStyle == consts.radio.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 2;
+ } else if (cNode[checkedKey]) {
+ tmp = 2;
+ } else {
+ tmp = cNode.check_Child_State > 0 ? 2:0;
+ }
+ if (tmp == 2) {
+ chkFlag = 2; break;
+ } else if (tmp == 0){
+ chkFlag = 0;
+ }
+ } else if (setting.check.chkStyle == consts.checkbox.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 1;
+ } else if (cNode[checkedKey] ) {
+ tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1;
+ } else {
+ tmp = (cNode.check_Child_State > 0) ? 1 : 0;
+ }
+ if (tmp === 1) {
+ chkFlag = 1; break;
+ } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) {
+ chkFlag = 1; break;
+ } else if (chkFlag === 2 && tmp > -1 && tmp < 2) {
+ chkFlag = 1; break;
+ } else if (tmp > -1) {
+ chkFlag = tmp;
+ }
+ }
+ }
+ }
+ node.check_Child_State = chkFlag;
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onCheckNode: function (event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkedKey = setting.data.key.checked;
+ if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true;
+ node[checkedKey] = !node[checkedKey];
+ view.checkNodeRelation(setting, node);
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ view.repairParentChkClassWithSelf(setting, node);
+ setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]);
+ return true;
+ },
+ onMouseoverCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = true;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ },
+ onMouseoutCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = false;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+
+ },
+ //method of operate ztree dom
+ _view = {
+ checkNodeRelation: function(setting, node) {
+ var pNode, i, l,
+ childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ r = consts.radio;
+ if (setting.check.chkStyle == r.STYLE) {
+ var checkedList = data.getRadioCheckedList(setting);
+ if (node[checkedKey]) {
+ if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = checkedList.length-1; i >= 0; i--) {
+ pNode = checkedList[i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ checkedList.splice(i, 1);
+
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ if (pNode.parentTId != node.parentTId) {
+ view.repairParentChkClassWithSelf(setting, pNode);
+ }
+ }
+ }
+ checkedList.push(node);
+ } else {
+ var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (i = 0, l = parentNode[childKey].length; i < l; i++) {
+ pNode = parentNode[childKey][i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ }
+ }
+ }
+ } else if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = 0, l = checkedList.length; i < l; i++) {
+ if (node == checkedList[i]) {
+ checkedList.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ } else {
+ if (node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, false);
+ }
+ if (node[checkedKey] && setting.check.chkboxType.Y.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && setting.check.chkboxType.N.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, false);
+ }
+ }
+ },
+ makeChkClass: function(setting, node) {
+ var checkedKey = setting.data.key.checked,
+ c = consts.checkbox, r = consts.radio,
+ fullStyle = "";
+ if (node.chkDisabled === true) {
+ fullStyle = c.DISABLED;
+ } else if (node.halfCheck) {
+ fullStyle = c.PART;
+ } else if (setting.check.chkStyle == r.STYLE) {
+ fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART;
+ } else {
+ fullStyle = node[checkedKey] ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL:c.PART) : ((node.check_Child_State < 1)? c.FULL:c.PART);
+ }
+ var chkName = setting.check.chkStyle + "_" + (node[checkedKey] ? c.TRUE : c.FALSE) + "_" + fullStyle;
+ chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName;
+ return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName;
+ },
+ repairAllChk: function(setting, checked) {
+ if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) {
+ var checkedKey = setting.data.key.checked,
+ childKey = setting.data.key.children,
+ root = data.getRoot(setting);
+ for (var i = 0, l = root[childKey].length; i<l ; i++) {
+ var node = root[childKey][i];
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = checked;
+ }
+ view.setSonNodeCheckBox(setting, node, checked);
+ }
+ }
+ },
+ repairChkClass: function(setting, node) {
+ if (!node) return;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true) {
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ }
+ },
+ repairParentChkClass: function(setting, node) {
+ if (!node || !node.parentTId) return;
+ var pNode = node.getParentNode();
+ view.repairChkClass(setting, pNode);
+ view.repairParentChkClass(setting, pNode);
+ },
+ repairParentChkClassWithSelf: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node[childKey] && node[childKey].length > 0) {
+ view.repairParentChkClass(setting, node[childKey][0]);
+ } else {
+ view.repairParentChkClass(setting, node);
+ }
+ },
+ repairSonChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node.chkDisabled != chkDisabled) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ if (node[childKey] && inherit) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var sNode = node[childKey][i];
+ view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit);
+ }
+ }
+ },
+ repairParentChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ if (node.chkDisabled != chkDisabled && inherit) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit);
+ },
+ setChkClass: function(setting, obj, node) {
+ if (!obj) return;
+ if (node.nocheck === true) {
+ obj.hide();
+ } else {
+ obj.show();
+ }
+ obj.removeClass();
+ obj.addClass(view.makeChkClass(setting, node));
+ },
+ setParentNodeCheckBox: function(setting, node, value, srcNode) {
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+ if (node.parentTId) {
+ var pSign = true;
+ if (!value) {
+ var pNodes = node.getParentNode()[childKey];
+ for (var i = 0, l = pNodes.length; i < l; i++) {
+ if ((pNodes[i].nocheck !== true && pNodes[i].chkDisabled !== true && pNodes[i][checkedKey])
+ || ((pNodes[i].nocheck === true || pNodes[i].chkDisabled === true) && pNodes[i].check_Child_State > 0)) {
+ pSign = false;
+ break;
+ }
+ }
+ }
+ if (pSign) {
+ view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode);
+ }
+ }
+ },
+ setSonNodeCheckBox: function(setting, node, value, srcNode) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+
+ var hasDisable = false;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l && node.chkDisabled !== true; i++) {
+ var sNode = node[childKey][i];
+ view.setSonNodeCheckBox(setting, sNode, value, srcNode);
+ if (sNode.chkDisabled === true) hasDisable = true;
+ }
+ }
+
+ if (node != data.getRoot(setting) && node.chkDisabled !== true) {
+ if (hasDisable && node.nocheck !== true) {
+ data.makeChkFlag(setting, node);
+ }
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ if (!hasDisable) node.check_Child_State = (node[childKey] && node[childKey].length > 0) ? (value ? 2 : 0) : -1;
+ } else {
+ node.check_Child_State = -1;
+ }
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy, true);
+ data.addInitRoot(_initRoot);
+ data.addBeforeA(_beforeA);
+ data.addZTreeTools(_zTreeTools);
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) _createNodes.apply(view, arguments);
+ if (!nodes) return;
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var parentNode = node.getParentNode();
+ if (_removeNode) _removeNode.apply(view, arguments);
+ if (!node || !parentNode) return;
+ view.repairChkClass(setting, parentNode);
+ view.repairParentChkClass(setting, parentNode);
+ }
+
+ var _appendNodes = view.appendNodes;
+ view.appendNodes = function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ var html = "";
+ if (_appendNodes) {
+ html = _appendNodes.apply(view, arguments);
+ }
+ if (parentNode) {
+ data.makeChkFlag(setting, parentNode);
+ }
+ return html;
+ }
+})(jQuery); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.min.js
new file mode 100644
index 00000000..9c56f461
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.excheck.min.js
@@ -0,0 +1,34 @@
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c,
+a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled===
+!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var g=f.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=g.length-1;d>=0;d--)b=g[d],b[l]&&b!=a&&(b[l]=!1,g.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!=
+a.parentTId&&e.repairParentChkClassWithSelf(c,b));g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);for(d=0,h=g[i].length;d<h;d++)b=g[i][d],b[l]&&b!=a&&(b[l]=!1,e.setChkClass(c,n(b,j.id.CHECK,c),b))}else if(c.check.radioType==b.TYPE_ALL)for(d=0,h=g.length;d<h;d++)if(a==g[d]){g.splice(d,1);break}}else a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,
+a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+
+"_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=f.getRoot(c),i=0,l=h[d].length;i<l;i++){var g=h[d][i];g.nocheck!==!0&&g.chkDisabled!==!0&&(g[b]=a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b=n(a,j.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,
+a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=c.data.key.children;a[b]&&a[b].length>0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i<l;i++)e.repairSonChkDisabled(c,a[h][i],b,d)}},repairParentChkDisabled:function(c,
+a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.removeClass(),a.addClass(e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(a[i]=b,e.setChkClass(c,l,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(j.event.CHECK,
+[null,c.treeId,a]));if(a.parentTId){l=!0;if(!b)for(var h=a.getParentNode()[h],g=0,k=h.length;g<k;g++)if(h[g].nocheck!==!0&&h[g].chkDisabled!==!0&&h[g][i]||(h[g].nocheck===!0||h[g].chkDisabled===!0)&&h[g].check_Child_State>0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var g=!1;if(a[h])for(var k=0,m=a[h].length;k<m&&a.chkDisabled!==!0;k++){var o=a[h][k];e.setSonNodeCheckBox(c,
+o,b,d);o.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(a[i]=b,!g)a.check_Child_State=a[h]&&a[h].length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c,
+a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=c.data.key.checked;return{checked:a[b],half:a.halfCheck?a.halfCheck:c.check.chkStyle==j.radio.STYLE?a.check_Child_State===2:a[b]?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL,
+d=!d?[]:d,g=0,k=a.length;g<k;g++){if(a[g].nocheck!==!0&&a[g].chkDisabled!==!0&&a[g][i]==b&&(d.push(a[g]),e))break;f.getTreeCheckedNodes(c,a[g][h],b,d);if(e&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i<e;i++)a[i].nocheck!==!0&&a[i].chkDisabled!==!0&&a[i][h]!=a[i].checkedOld&&b.push(a[i]),f.getTreeChangeCheckedNodes(c,a[i][d],b);return b},makeChkFlag:function(c,a){if(a){var b=c.data.key.children,
+d=c.data.key.checked,h=-1;if(a[b])for(var i=0,e=a[b].length;i<e;i++){var g=a[b][i],f=-1;if(c.check.chkStyle==j.radio.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?2:g[d]?2:g.check_Child_State>0?2:0,f==2){h=2;break}else f==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?1:g[d]?g.check_Child_State===-1||g.check_Child_State===2?2:1:g.check_Child_State>0?1:0,f===1){h=1;break}else if(f===
+2&&h>-1&&i>0&&f!==h){h=1;break}else if(h===2&&f>-1&&f<2){h=1;break}else f>-1&&(h=f)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,f=m._z.data,n=k.$;f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});f.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]=
+k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,
+b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=
+k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=f.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});
+f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,j.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",j.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,f){var g=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[g]),f=!!f,(a[g]!==b||c)&&!(f&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&&
+a.nocheck!==!0))a[g]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),f&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return f.getTreeCheckedNodes(this.setting,f.getRoot(this.setting)[b],a!==!1)};
+a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return f.getTreeChangeCheckedNodes(this.setting,f.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===
+j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&f.makeChkFlag(c,
+d);return j}})(jQuery);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.js
new file mode 100644
index 00000000..70a20936
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.js
@@ -0,0 +1,1191 @@
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of exedit
+ var _consts = {
+ event: {
+ DRAG: "ztree_drag",
+ DROP: "ztree_drop",
+ RENAME: "ztree_rename",
+ DRAGMOVE:"ztree_dragmove"
+ },
+ id: {
+ EDIT: "_edit",
+ INPUT: "_input",
+ REMOVE: "_remove"
+ },
+ move: {
+ TYPE_INNER: "inner",
+ TYPE_PREV: "prev",
+ TYPE_NEXT: "next"
+ },
+ node: {
+ CURSELECTED_EDIT: "curSelectedNode_Edit",
+ TMPTARGET_TREE: "tmpTargetzTree",
+ TMPTARGET_NODE: "tmpTargetNode"
+ }
+ },
+ //default setting of exedit
+ _setting = {
+ edit: {
+ enable: false,
+ editNameSelectAll: false,
+ showRemoveBtn: true,
+ showRenameBtn: true,
+ removeTitle: "remove",
+ renameTitle: "rename",
+ drag: {
+ autoExpandTrigger: false,
+ isCopy: true,
+ isMove: true,
+ prev: true,
+ next: true,
+ inner: true,
+ minMoveSize: 5,
+ borderMax: 10,
+ borderMin: -5,
+ maxShowNodeNum: 5,
+ autoOpenTime: 500
+ }
+ },
+ view: {
+ addHoverDom: null,
+ removeHoverDom: null
+ },
+ callback: {
+ beforeDrag:null,
+ beforeDragOpen:null,
+ beforeDrop:null,
+ beforeEditName:null,
+ beforeRename:null,
+ onDrag:null,
+ onDragMove:null,
+ onDrop:null,
+ onRename:null
+ }
+ },
+ //default root of exedit
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting), rs = data.getRoots();
+ r.curEditNode = null;
+ r.curEditInput = null;
+ r.curHoverNode = null;
+ r.dragFlag = 0;
+ r.dragNodeShowBefore = [];
+ r.dragMaskList = new Array();
+ rs.showHoverDom = true;
+ },
+ //default cache of exedit
+ _initCache = function(treeId) {},
+ //default bind event of exedit
+ _bindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) {
+ tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]);
+ });
+
+ o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) {
+ tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DRAGMOVE,function(event, srcEvent, treeId, treeNodes){
+ tools.apply(setting.callback.onDragMove,[srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) {
+ tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.unbind(c.RENAME);
+ o.unbind(c.DRAG);
+ o.unbind(c.DRAGMOVE);
+ o.unbind(c.DROP);
+ },
+ //default event proxy of exedit
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ relatedTarget = e.relatedTarget,
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "hoverOverNode";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ tmp = tools.getMDom(setting, relatedTarget, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (!tmp) {
+ tId = "remove";
+ nodeEventType = "hoverOutNode";
+ }
+ } else if (tools.eqs(e.type, "mousedown")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "mousedownNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "mousedownNode" :
+ nodeEventCallback = _handler.onMousedownNode;
+ break;
+ case "hoverOverNode" :
+ nodeEventCallback = _handler.onHoverOverNode;
+ break;
+ case "hoverOutNode" :
+ nodeEventCallback = _handler.onHoverOutNode;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of exedit
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ n.isHover = false;
+ n.editNameFlag = false;
+ },
+ //update zTreeObj, add method of edit
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.cancelEditName = function(newName) {
+ var root = data.getRoot(this.setting);
+ if (!root.curEditNode) return;
+ view.cancelCurEditNode(this.setting, newName?newName:null, true);
+ }
+ zTreeTools.copyNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return null;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null;
+ var _this = this,
+ newNode = tools.clone(node);
+ if (!targetNode) {
+ targetNode = null;
+ moveType = consts.move.TYPE_INNER;
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ function copyCallback() {
+ view.addNodes(_this.setting, targetNode, [newNode], isSilent);
+ }
+
+ if (tools.canAsync(this.setting, targetNode)) {
+ view.asyncNode(this.setting, targetNode, isSilent, copyCallback);
+ } else {
+ copyCallback();
+ }
+ } else {
+ view.addNodes(this.setting, targetNode.parentNode, [newNode], isSilent);
+ view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent);
+ }
+ return newNode;
+ }
+ zTreeTools.editName = function(node) {
+ if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return;
+ if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true);
+ view.editNode(this.setting, node)
+ }
+ zTreeTools.moveNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return node;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) {
+ return null;
+ } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) {
+ return null;
+ } else if (!targetNode) {
+ targetNode = null;
+ }
+ var _this = this;
+ function moveCallback() {
+ view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent);
+ }
+ if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) {
+ view.asyncNode(this.setting, targetNode, isSilent, moveCallback);
+ } else {
+ moveCallback();
+ }
+ return node;
+ }
+ zTreeTools.setEditable = function(editable) {
+ this.setting.edit.enable = editable;
+ return this.refresh();
+ }
+ },
+ //method of operate data
+ _data = {
+ setSonNodeLevel: function(setting, parentNode, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ node.level = (parentNode)? parentNode.level + 1 : 0;
+ if (!node[childKey]) return;
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ if (node[childKey][i]) data.setSonNodeLevel(setting, node, node[childKey][i]);
+ }
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onHoverOverNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode != node) {
+ _handler.onHoverOutNode(event);
+ }
+ root.curHoverNode = node;
+ view.addHoverDom(setting, node);
+ },
+ onHoverOutNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) {
+ view.removeTreeDom(setting, root.curHoverNode);
+ root.curHoverNode = null;
+ }
+ },
+ onMousedownNode: function(eventMouseDown, _node) {
+ var i,l,
+ setting = data.getSetting(eventMouseDown.data.treeId),
+ root = data.getRoot(setting), roots = data.getRoots();
+ //right click can't drag & drop
+ if (eventMouseDown.button == 2 || !setting.edit.enable || (!setting.edit.drag.isCopy && !setting.edit.drag.isMove)) return true;
+
+ //input of edit node name can't drag & drop
+ var target = eventMouseDown.target,
+ _nodes = data.getRoot(setting).curSelectedList,
+ nodes = [];
+ if (!data.isSelectedNode(setting, _node)) {
+ nodes = [_node];
+ } else {
+ for (i=0, l=_nodes.length; i<l; i++) {
+ if (_nodes[i].editNameFlag && tools.eqs(target.tagName, "input") && target.getAttribute("treeNode"+consts.id.INPUT) !== null) {
+ return true;
+ }
+ nodes.push(_nodes[i]);
+ if (nodes[0].parentTId !== _nodes[i].parentTId) {
+ nodes = [_node];
+ break;
+ }
+ }
+ }
+
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+
+ var doc = $(setting.treeObj.get(0).ownerDocument),
+ body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget,
+ isOtherTree = false,
+ targetSetting = setting,
+ sourceSetting = setting,
+ preNode, nextNode,
+ preTmpTargetNodeId = null,
+ preTmpMoveType = null,
+ tmpTargetNodeId = null,
+ moveType = consts.move.TYPE_INNER,
+ mouseDownX = eventMouseDown.clientX,
+ mouseDownY = eventMouseDown.clientY,
+ startTime = (new Date()).getTime();
+
+ if (tools.uCanDo(setting)) {
+ doc.bind("mousemove", _docMouseMove);
+ }
+ function _docMouseMove(event) {
+ //avoid start drag after click node
+ if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.edit.drag.minMoveSize
+ && Math.abs(mouseDownY - event.clientY) < setting.edit.drag.minMoveSize) {
+ return true;
+ }
+ var i, l, tmpNode, tmpDom, tmpNodes,
+ childKey = setting.data.key.children;
+ body.css("cursor", "pointer");
+
+ if (root.dragFlag == 0) {
+ if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) {
+ _docMouseUp(event);
+ return true;
+ }
+
+ for (i=0, l=nodes.length; i<l; i++) {
+ if (i==0) {
+ root.dragNodeShowBefore = [];
+ }
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ root.dragNodeShowBefore[tmpNode.tId] = true;
+ } else {
+ root.dragNodeShowBefore[tmpNode.tId] = false;
+ }
+ }
+
+ root.dragFlag = 1;
+ roots.showHoverDom = false;
+ tools.showIfameMask(setting, true);
+
+ //sort
+ var isOrder = true, lastIndex = -1;
+ if (nodes.length>1) {
+ var pNodes = nodes[0].parentTId ? nodes[0].getParentNode()[childKey] : data.getNodes(setting);
+ tmpNodes = [];
+ for (i=0, l=pNodes.length; i<l; i++) {
+ if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) {
+ if (isOrder && lastIndex > -1 && (lastIndex+1) !== i) {
+ isOrder = false;
+ }
+ tmpNodes.push(pNodes[i]);
+ lastIndex = i;
+ }
+ if (nodes.length === tmpNodes.length) {
+ nodes = tmpNodes;
+ break;
+ }
+ }
+ }
+ if (isOrder) {
+ preNode = nodes[0].getPreNode();
+ nextNode = nodes[nodes.length-1].getNextNode();
+ }
+
+ //set node in selected
+ curNode = $$("<ul class='zTreeDragUL'></ul>", setting);
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ tmpNode.editNameFlag = false;
+ view.selectNode(setting, tmpNode, i>0);
+ view.removeTreeDom(setting, tmpNode);
+
+ if (i > setting.edit.drag.maxShowNodeNum-1) {
+ continue;
+ }
+
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_tmp'></li>", setting);
+ tmpDom.append($$(tmpNode, consts.id.A, setting).clone());
+ tmpDom.css("padding", "0");
+ tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED);
+ curNode.append(tmpDom);
+ if (i == setting.edit.drag.maxShowNodeNum-1) {
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_moretmp'><a> ... </a></li>", setting);
+ curNode.append(tmpDom);
+ }
+ }
+ curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp");
+ curNode.addClass(setting.treeObj.attr("class"));
+ curNode.appendTo(body);
+
+ tmpArrow = $$("<span class='tmpzTreeMove_arrow'></span>", setting);
+ tmpArrow.attr("id", "zTreeMove_arrow_tmp");
+ tmpArrow.appendTo(body);
+
+ setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]);
+ }
+
+ if (root.dragFlag == 1) {
+ if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft()+2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) {
+ var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget);
+ event.target = (xT.length > 0) ? xT.get(0) : event.target;
+ } else if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tmpTarget = null;
+ tmpTargetNodeId = null;
+
+ //judge drag & drop in multi ztree
+ isOtherTree = false;
+ targetSetting = setting;
+ var settings = data.getSettings();
+ for (var s in settings) {
+ if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId
+ && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length>0)) {
+ isOtherTree = true;
+ targetSetting = settings[s];
+ }
+ }
+
+ var docScrollTop = doc.scrollTop(),
+ docScrollLeft = doc.scrollLeft(),
+ treeOffset = targetSetting.treeObj.offset(),
+ scrollHeight = targetSetting.treeObj.get(0).scrollHeight,
+ scrollWidth = targetSetting.treeObj.get(0).scrollWidth,
+ dTop = (event.clientY + docScrollTop - treeOffset.top),
+ dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop),
+ dLeft = (event.clientX + docScrollLeft - treeOffset.left),
+ dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft),
+ isTop = (dTop < setting.edit.drag.borderMax && dTop > setting.edit.drag.borderMin),
+ isBottom = (dBottom < setting.edit.drag.borderMax && dBottom > setting.edit.drag.borderMin),
+ isLeft = (dLeft < setting.edit.drag.borderMax && dLeft > setting.edit.drag.borderMin),
+ isRight = (dRight < setting.edit.drag.borderMax && dRight > setting.edit.drag.borderMin),
+ isTreeInner = dTop > setting.edit.drag.borderMin && dBottom > setting.edit.drag.borderMin && dLeft > setting.edit.drag.borderMin && dRight > setting.edit.drag.borderMin,
+ isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0),
+ isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height()+10) >= scrollHeight),
+ isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0),
+ isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width()+10) >= scrollWidth);
+
+ if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //get node <li> dom
+ var targetObj = event.target;
+ while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) {
+ targetObj = targetObj.parentNode;
+ }
+
+ var canMove = true;
+ //don't move to self or children of self
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (targetObj.id === tmpNode.tId) {
+ canMove = false;
+ break;
+ } else if ($$(tmpNode, setting).find("#" + targetObj.id).length > 0) {
+ canMove = false;
+ break;
+ }
+ }
+ if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) {
+ tmpTarget = $(targetObj);
+ tmpTargetNodeId = targetObj.id;
+ }
+ }
+
+ //the mouse must be in zTree
+ tmpNode = nodes[0];
+ if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //judge mouse move in root of ztree
+ if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) {
+ tmpTarget = targetSetting.treeObj;
+ }
+ //auto scroll top
+ if (isTop) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()-10);
+ } else if (isBottom) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()+10);
+ }
+ if (isLeft) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()-10);
+ } else if (isRight) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+10);
+ }
+ //auto scroll left
+ if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+ tmpTarget.offset().left - targetSetting.treeObj.offset().left);
+ }
+ }
+
+ curNode.css({
+ "top": (event.clientY + docScrollTop + 3) + "px",
+ "left": (event.clientX + docScrollLeft + 3) + "px"
+ });
+
+ var dX = 0;
+ var dY = 0;
+ if (tmpTarget && tmpTarget.attr("id")!=targetSetting.treeId) {
+ var tmpTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId),
+ isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy),
+ isPrev = !!(preNode && tmpTargetNodeId === preNode.tId),
+ isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId),
+ isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId),
+ canPrev = (isCopy || !isNext) && tools.apply(targetSetting.edit.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.prev),
+ canNext = (isCopy || !isPrev) && tools.apply(targetSetting.edit.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.next),
+ canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !tmpTargetNode.isParent) && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.inner);
+ if (!canPrev && !canNext && !canInner) {
+ tmpTarget = null;
+ tmpTargetNodeId = "";
+ moveType = consts.move.TYPE_INNER;
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null
+ }
+ } else {
+ var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget),
+ tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()),
+ tmpTop = tmpTargetA.offset().top,
+ tmpLeft = tmpTargetA.offset().left,
+ prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1) ) : -1,
+ nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0) ) : -1,
+ dY_percent = (event.clientY + docScrollTop - tmpTop)/tmpTargetA.height();
+ if ((prevPercent==1 ||dY_percent<=prevPercent && dY_percent>=-.2) && canPrev) {
+ dX = 1 - tmpArrow.width();
+ dY = tmpTop - tmpArrow.height()/2;
+ moveType = consts.move.TYPE_PREV;
+ } else if ((nextPercent==0 || dY_percent>=nextPercent && dY_percent<=1.2) && canNext) {
+ dX = 1 - tmpArrow.width();
+ dY = (tmpNextA == null || (tmpTargetNode.isParent && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height()/2) : (tmpNextA.offset().top - tmpArrow.height()/2);
+ moveType = consts.move.TYPE_NEXT;
+ }else {
+ dX = 5 - tmpArrow.width();
+ dY = tmpTop;
+ moveType = consts.move.TYPE_INNER;
+ }
+ tmpArrow.css({
+ "display":"block",
+ "top": dY + "px",
+ "left": (tmpLeft + dX) + "px"
+ });
+ tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType);
+
+ if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) {
+ startTime = (new Date()).getTime();
+ }
+ if (tmpTargetNode && tmpTargetNode.isParent && moveType == consts.move.TYPE_INNER) {
+ var startTimer = true;
+ if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) {
+ startTimer = false;
+ }
+ if (startTimer) {
+ window.zTreeMoveTimer = setTimeout(function() {
+ if (moveType != consts.move.TYPE_INNER) return;
+ if (tmpTargetNode && tmpTargetNode.isParent && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.edit.drag.autoOpenTime
+ && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) {
+ view.switchNode(targetSetting, tmpTargetNode);
+ if (targetSetting.edit.drag.autoExpandTrigger) {
+ targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]);
+ }
+ }
+ }, targetSetting.edit.drag.autoOpenTime+50);
+ window.zTreeMoveTargetNodeTId = tmpTargetNode.tId;
+ }
+ }
+ }
+ } else {
+ moveType = consts.move.TYPE_INNER;
+ if (tmpTarget && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.edit.drag.inner)) {
+ tmpTarget.addClass(consts.node.TMPTARGET_TREE);
+ } else {
+ tmpTarget = null;
+ }
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ }
+ preTmpTargetNodeId = tmpTargetNodeId;
+ preTmpMoveType = moveType;
+
+ setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]);
+ }
+ return false;
+ }
+
+ doc.bind("mouseup", _docMouseUp);
+ function _docMouseUp(event) {
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ preTmpTargetNodeId = null;
+ preTmpMoveType = null;
+ doc.unbind("mousemove", _docMouseMove);
+ doc.unbind("mouseup", _docMouseUp);
+ doc.unbind("selectstart", _docSelect);
+ body.css("cursor", "auto");
+ if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tools.showIfameMask(setting, false);
+
+ roots.showHoverDom = true;
+ if (root.dragFlag == 0) return;
+ root.dragFlag = 0;
+
+ var i, l, tmpNode;
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ delete root.dragNodeShowBefore[tmpNode.tId];
+ }
+ }
+
+ if (curNode) curNode.remove();
+ if (tmpArrow) tmpArrow.remove();
+
+ var isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy);
+ if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId==nodes[0].parentTId && moveType == consts.move.TYPE_INNER) {
+ tmpTarget = null;
+ }
+ if (tmpTarget) {
+ var dragTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId);
+ if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) {
+ view.selectNodes(sourceSetting, nodes);
+ return;
+ }
+ var newNodes = isCopy ? tools.clone(nodes) : nodes;
+
+ function dropCallback() {
+ if (isOtherTree) {
+ if (!isCopy) {
+ for(var i=0, l=nodes.length; i<l; i++) {
+ view.removeNode(setting, nodes[i]);
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ if (moveType == consts.move.TYPE_PREV) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ } else {
+ if (isCopy && moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ if (isCopy) {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ }
+ if (moveType != consts.move.TYPE_NEXT) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ }
+ view.selectNodes(targetSetting, newNodes);
+ $$(newNodes[0], setting).focus().blur();
+
+ setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]);
+ }
+
+ if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) {
+ view.asyncNode(targetSetting, dragTargetNode, false, dropCallback);
+ } else {
+ dropCallback();
+ }
+
+ } else {
+ view.selectNodes(sourceSetting, nodes);
+ setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]);
+ }
+ }
+
+ doc.bind("selectstart", _docSelect);
+ function _docSelect() {
+ return false;
+ }
+
+ //Avoid FireFox's Bug
+ //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error.
+ if(eventMouseDown.preventDefault) {
+ eventMouseDown.preventDefault();
+ }
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+ getAbs: function (obj) {
+ var oRect = obj.getBoundingClientRect(),
+ scrollTop = document.body.scrollTop+document.documentElement.scrollTop,
+ scrollLeft = document.body.scrollLeft+document.documentElement.scrollLeft;
+ return [oRect.left+scrollLeft,oRect.top+scrollTop];
+ },
+ inputFocus: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ tools.setCursorPosition(inputObj.get(0), inputObj.val().length);
+ }
+ },
+ inputSelect: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ inputObj.select();
+ }
+ },
+ setCursorPosition: function(obj, pos){
+ if(obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos,pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+ showIfameMask: function(setting, showSign) {
+ var root = data.getRoot(setting);
+ //clear full mask
+ while (root.dragMaskList.length > 0) {
+ root.dragMaskList[0].remove();
+ root.dragMaskList.shift();
+ }
+ if (showSign) {
+ //show mask
+ var iframeList = $$("iframe", setting);
+ for (var i = 0, l = iframeList.length; i < l; i++) {
+ var obj = iframeList.get(i),
+ r = tools.getAbs(obj),
+ dragMask = $$("<div id='zTreeMask_" + i + "' class='zTreeMask' style='top:" + r[1] + "px; left:" + r[0] + "px; width:" + obj.offsetWidth + "px; height:" + obj.offsetHeight + "px;'></div>", setting);
+ dragMask.appendTo($$("body", setting));
+ root.dragMaskList.push(dragMask);
+ }
+ }
+ }
+ },
+ //method of operate ztree dom
+ _view = {
+ addEditBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRenameBtn, [setting.treeId, node], setting.edit.showRenameBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ editStr = "<span class='" + consts.className.BUTTON + " edit' id='" + node.tId + consts.id.EDIT + "' title='"+tools.apply(setting.edit.renameTitle, [setting.treeId, node], setting.edit.renameTitle)+"' treeNode"+consts.id.EDIT+" style='display:none;'></span>";
+ aObj.append(editStr);
+
+ $$(node, consts.id.EDIT, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false;
+ view.editNode(setting, node);
+ return false;
+ }
+ ).show();
+ },
+ addRemoveBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRemoveBtn, [setting.treeId, node], setting.edit.showRemoveBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ removeStr = "<span class='" + consts.className.BUTTON + " remove' id='" + node.tId + consts.id.REMOVE + "' title='"+tools.apply(setting.edit.removeTitle, [setting.treeId, node], setting.edit.removeTitle)+"' treeNode"+consts.id.REMOVE+" style='display:none;'></span>";
+ aObj.append(removeStr);
+
+ $$(node, consts.id.REMOVE, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false;
+ view.removeNode(setting, node);
+ setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ return false;
+ }
+ ).bind('mousedown',
+ function(eventMouseDown) {
+ return true;
+ }
+ ).show();
+ },
+ addHoverDom: function(setting, node) {
+ if (data.getRoots().showHoverDom) {
+ node.isHover = true;
+ if (setting.edit.enable) {
+ view.addEditBtn(setting, node);
+ view.addRemoveBtn(setting, node);
+ }
+ tools.apply(setting.view.addHoverDom, [setting.treeId, node]);
+ }
+ },
+ cancelCurEditNode: function (setting, forceName, isCancel) {
+ var root = data.getRoot(setting),
+ nameKey = setting.data.key.name,
+ node = root.curEditNode;
+
+ if (node) {
+ var inputObj = root.curEditInput,
+ newName = forceName ? forceName:(isCancel ? node[nameKey]: inputObj.val());
+ if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) {
+ return false;
+ } else {
+ node[nameKey] = newName;
+ setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]);
+ }
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.removeClass(consts.node.CURSELECTED_EDIT);
+ inputObj.unbind();
+ view.setNodeName(setting, node);
+ node.editNameFlag = false;
+ root.curEditNode = null;
+ root.curEditInput = null;
+ view.selectNode(setting, node, false);
+ }
+ root.noSelection = true;
+ return true;
+ },
+ editNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ view.editNodeBlur = false;
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ setTimeout(function() {tools.inputFocus(root.curEditInput);}, 0);
+ return;
+ }
+ var nameKey = setting.data.key.name;
+ node.editNameFlag = true;
+ view.removeTreeDom(setting, node);
+ view.cancelCurEditNode(setting);
+ view.selectNode(setting, node, false);
+ $$(node, consts.id.SPAN, setting).html("<input type=text class='rename' id='" + node.tId + consts.id.INPUT + "' treeNode" + consts.id.INPUT + " >");
+ var inputObj = $$(node, consts.id.INPUT, setting);
+ inputObj.attr("value", node[nameKey]);
+ if (setting.edit.editNameSelectAll) {
+ tools.inputSelect(inputObj);
+ } else {
+ tools.inputFocus(inputObj);
+ }
+
+ inputObj.bind('blur', function(event) {
+ if (!view.editNodeBlur) {
+ view.cancelCurEditNode(setting);
+ }
+ }).bind('keydown', function(event) {
+ if (event.keyCode=="13") {
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+ } else if (event.keyCode=="27") {
+ view.cancelCurEditNode(setting, null, true);
+ }
+ }).bind('click', function(event) {
+ return false;
+ }).bind('dblclick', function(event) {
+ return false;
+ });
+
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT);
+ root.curEditInput = inputObj;
+ root.noSelection = false;
+ root.curEditNode = node;
+ },
+ moveNode: function(setting, targetNode, node, moveType, animateFlag, isSilent) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (targetNode == node) return;
+ if (setting.data.keep.leaf && targetNode && !targetNode.isParent && moveType == consts.move.TYPE_INNER) return;
+ var oldParentNode = (node.parentTId ? node.getParentNode(): root),
+ targetNodeIsRoot = (targetNode === null || targetNode == root);
+ if (targetNodeIsRoot && targetNode === null) targetNode = root;
+ if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER;
+ var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root);
+
+ if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) {
+ moveType = consts.move.TYPE_INNER;
+ }
+
+ if (moveType == consts.move.TYPE_INNER) {
+ if (targetNodeIsRoot) {
+ //parentTId of root node is null
+ node.parentTId = null;
+ } else {
+ if (!targetNode.isParent) {
+ targetNode.isParent = true;
+ targetNode.open = !!targetNode.open;
+ view.setNodeLineIcos(setting, targetNode);
+ }
+ node.parentTId = targetNode.tId;
+ }
+ }
+
+ //move node Dom
+ var targetObj, target_ulObj;
+ if (targetNodeIsRoot) {
+ targetObj = setting.treeObj;
+ target_ulObj = targetObj;
+ } else {
+ if (!isSilent && moveType == consts.move.TYPE_INNER) {
+ view.expandCollapseNode(setting, targetNode, true, false);
+ } else if (!isSilent) {
+ view.expandCollapseNode(setting, targetNode.getParentNode(), true, false);
+ }
+ targetObj = $$(targetNode, setting);
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ if (!!targetObj.get(0) && !target_ulObj.get(0)) {
+ var ulstr = [];
+ view.makeUlHtml(setting, targetNode, ulstr, '');
+ targetObj.append(ulstr.join(''));
+ }
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ }
+ var nodeDom = $$(node, setting);
+ if (!nodeDom.get(0)) {
+ nodeDom = view.appendNodes(setting, node.level, [node], null, false, true).join('');
+ } else if (!targetObj.get(0)) {
+ nodeDom.remove();
+ }
+ if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) {
+ target_ulObj.append(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) {
+ targetObj.before(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) {
+ targetObj.after(nodeDom);
+ }
+
+ //repair the data after move
+ var i,l,
+ tmpSrcIndex = -1,
+ tmpTargetIndex = 0,
+ oldNeighbor = null,
+ newNeighbor = null,
+ oldLevel = node.level;
+ if (node.isFirstNode) {
+ tmpSrcIndex = 0;
+ if (oldParentNode[childKey].length > 1 ) {
+ oldNeighbor = oldParentNode[childKey][1];
+ oldNeighbor.isFirstNode = true;
+ }
+ } else if (node.isLastNode) {
+ tmpSrcIndex = oldParentNode[childKey].length -1;
+ oldNeighbor = oldParentNode[childKey][tmpSrcIndex - 1];
+ oldNeighbor.isLastNode = true;
+ } else {
+ for (i = 0, l = oldParentNode[childKey].length; i < l; i++) {
+ if (oldParentNode[childKey][i].tId == node.tId) {
+ tmpSrcIndex = i;
+ break;
+ }
+ }
+ }
+ if (tmpSrcIndex >= 0) {
+ oldParentNode[childKey].splice(tmpSrcIndex, 1);
+ }
+ if (moveType != consts.move.TYPE_INNER) {
+ for (i = 0, l = targetParentNode[childKey].length; i < l; i++) {
+ if (targetParentNode[childKey][i].tId == targetNode.tId) tmpTargetIndex = i;
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ if (!targetNode[childKey]) targetNode[childKey] = new Array();
+ if (targetNode[childKey].length > 0) {
+ newNeighbor = targetNode[childKey][targetNode[childKey].length - 1];
+ newNeighbor.isLastNode = false;
+ }
+ targetNode[childKey].splice(targetNode[childKey].length, 0, node);
+ node.isLastNode = true;
+ node.isFirstNode = (targetNode[childKey].length == 1);
+ } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isFirstNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = true;
+ node.isLastNode = false;
+
+ } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isLastNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = true;
+
+ } else {
+ if (moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ } else {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ }
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ }
+ data.fixPIdKeyValue(setting, node);
+ data.setSonNodeLevel(setting, node.getParentNode(), node);
+
+ //repair node what been moved
+ view.setNodeLineIcos(setting, node);
+ view.repairNodeLevelClass(setting, node, oldLevel)
+
+ //repair node's old parentNode dom
+ if (!setting.data.keep.parent && oldParentNode[childKey].length < 1) {
+ //old parentNode has no child nodes
+ oldParentNode.isParent = false;
+ oldParentNode.open = false;
+ var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting),
+ tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (oldNeighbor) {
+ //old neigbor node
+ view.setNodeLineIcos(setting, oldNeighbor);
+ }
+
+ //new neigbor node
+ if (newNeighbor) {
+ view.setNodeLineIcos(setting, newNeighbor);
+ }
+
+ //repair checkbox / radio
+ if (!!setting.check && setting.check.enable && view.repairChkClass) {
+ view.repairChkClass(setting, oldParentNode);
+ view.repairParentChkClassWithSelf(setting, oldParentNode);
+ if (oldParentNode != node.parent)
+ view.repairParentChkClassWithSelf(setting, node);
+ }
+
+ //expand parents after move
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag);
+ }
+ },
+ removeEditBtn: function(setting, node) {
+ $$(node, consts.id.EDIT, setting).unbind().remove();
+ },
+ removeRemoveBtn: function(setting, node) {
+ $$(node, consts.id.REMOVE, setting).unbind().remove();
+ },
+ removeTreeDom: function(setting, node) {
+ node.isHover = false;
+ view.removeEditBtn(setting, node);
+ view.removeRemoveBtn(setting, node);
+ tools.apply(setting.view.removeHoverDom, [setting.treeId, node]);
+ },
+ repairNodeLevelClass: function(setting, node, oldLevel) {
+ if (oldLevel === node.level) return;
+ var liObj = $$(node, setting),
+ aObj = $$(node, consts.id.A, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ oldClass = consts.className.LEVEL + oldLevel,
+ newClass = consts.className.LEVEL + node.level;
+ liObj.removeClass(oldClass);
+ liObj.addClass(newClass);
+ aObj.removeClass(oldClass);
+ aObj.addClass(newClass);
+ ulObj.removeClass(oldClass);
+ ulObj.addClass(newClass);
+ },
+ selectNodes : function(setting, nodes) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ view.selectNode(setting, nodes[i], i>0);
+ }
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy);
+ data.addInitRoot(_initRoot);
+ data.addZTreeTools(_zTreeTools);
+
+ var _cancelPreSelectedNode = view.cancelPreSelectedNode;
+ view.cancelPreSelectedNode = function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length; i<j; i++) {
+ if (!node || node === list[i]) {
+ view.removeTreeDom(setting, list[i]);
+ if (node) break;
+ }
+ }
+ if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments);
+ }
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) {
+ _createNodes.apply(view, arguments);
+ }
+ if (!nodes) return;
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ }
+
+ var _makeNodeUrl = view.makeNodeUrl;
+ view.makeNodeUrl = function(setting, node) {
+ return setting.edit.enable ? null : (_makeNodeUrl.apply(view, arguments));
+ }
+
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var root = data.getRoot(setting);
+ if (root.curEditNode === node) root.curEditNode = null;
+ if (_removeNode) {
+ _removeNode.apply(view, arguments);
+ }
+ }
+
+ var _selectNode = view.selectNode;
+ view.selectNode = function(setting, node, addFlag) {
+ var root = data.getRoot(setting);
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ return false;
+ }
+ if (_selectNode) _selectNode.apply(view, arguments);
+ view.addHoverDom(setting, node);
+ return true;
+ }
+
+ var _uCanDo = tools.uCanDo;
+ tools.uCanDo = function(setting, e) {
+ var root = data.getRoot(setting);
+ if (e && (tools.eqs(e.type, "mouseover") || tools.eqs(e.type, "mouseout") || tools.eqs(e.type, "mousedown") || tools.eqs(e.type, "mouseup"))) {
+ return true;
+ }
+ if (root.curEditNode) {
+ view.editNodeBlur = false;
+ root.curEditInput.focus();
+ }
+ return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true);
+ }
+})(jQuery); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.min.js
new file mode 100644
index 00000000..2e748326
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exedit.min.js
@@ -0,0 +1,53 @@
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(w){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},x={onHoverOverNode:function(b,a){var c=m.getSetting(b.data.treeId),d=m.getRoot(c);if(d.curHoverNode!=a)x.onHoverOutNode(b);d.curHoverNode=a;f.addHoverDom(c,a)},onHoverOutNode:function(b){var b=
+m.getSetting(b.data.treeId),a=m.getRoot(b);if(a.curHoverNode&&!m.isSelectedNode(b,a.curHoverNode))f.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(C.dragFlag==0&&Math.abs(N-b.clientX)<e.edit.drag.minMoveSize&&Math.abs(O-b.clientY)<e.edit.drag.minMoveSize)return!0;var a,c,n,k,i;i=e.data.key.children;M.css("cursor","pointer");if(C.dragFlag==0){if(g.apply(e.callback.beforeDrag,[e.treeId,l],!0)==!1)return r(b),!0;for(a=0,c=l.length;a<c;a++){if(a==0)C.dragNodeShowBefore=
+[];n=l[a];n.isParent&&n.open?(f.expandCollapseNode(e,n,!n.open),C.dragNodeShowBefore[n.tId]=!0):C.dragNodeShowBefore[n.tId]=!1}C.dragFlag=1;t.showHoverDom=!1;g.showIfameMask(e,!0);n=!0;k=-1;if(l.length>1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a<c;a++)if(C.dragNodeShowBefore[j[a].tId]!==void 0&&(n&&k>-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("<ul class='zTreeDragUL'></ul>",
+e);for(a=0,c=l.length;a<c;a++)n=l[a],n.editNameFlag=!1,f.selectNode(e,n,a>0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("<li id='"+n.tId+"_tmp'></li>",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("<li id='"+n.tId+"_moretmp'><a> ... </a></li>",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);B=o("<span class='tmpzTreeMove_arrow'></span>",
+e);B.attr("id","zTreeMove_arrow_tmp");B.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(C.dragFlag==1){s&&B.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>w("#"+u+d.id.A,s).offset().left?(n=w("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));
+u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||w(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=c<e.edit.drag.borderMax&&c>e.edit.drag.borderMin;var j=p<e.edit.drag.borderMax&&
+p>e.edit.drag.borderMin,K=q<e.edit.drag.borderMax&&q>e.edit.drag.borderMin,G=x<e.edit.drag.borderMax&&x>e.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!=
+h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a<c;a++)if(n=l[a],E.id===n.tId){S=!1;break}else if(o(n,e).find("#"+E.id).length>0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=w(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+
+10);s&&s!=h.treeObj&&s.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+s.offset().left-h.treeObj.offset().left)}D.css({top:b.clientY+y+3+"px",left:b.clientX+k+3+"px"});i=a=0;if(s&&s.attr("id")!=h.treeId){var z=u==null?null:m.getNodeCache(h,u);c=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;a=!!(H&&u===H.tId);i=!!(R&&u===R.tId);k=n.parentTId&&n.parentTId==u;n=(c||!i)&&g.apply(h.edit.drag.prev,[h.treeId,l,z],
+!!h.edit.drag.prev);a=(c||!a)&&g.apply(h.edit.drag.next,[h.treeId,l,z],!!h.edit.drag.next);G=(c||!k)&&!(h.data.keep.leaf&&!z.isParent)&&g.apply(h.edit.drag.inner,[h.treeId,l,z],!!h.edit.drag.inner);if(!n&&!a&&!G){if(s=null,u="",v=d.move.TYPE_INNER,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null}else{c=w("#"+u+d.id.A,s);i=z.isLastNode?null:w("#"+z.getNextNode().tId+d.id.A,s.next());j=c.offset().top;k=c.offset().left;K=n?G?0.25:a?
+0.5:1:-1;G=a?G?0.75:n?0.5:0:-1;y=(b.clientY+y-j)/c.height();(K==1||y<=K&&y>=-0.2)&&n?(a=1-B.width(),i=j-B.height()/2,v=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-B.width(),i=i==null||z.isParent&&z.open?j+c.height()-B.height()/2:i.offset().top-B.height()/2,v=d.move.TYPE_NEXT):(a=5-B.width(),i=j,v=d.move.TYPE_INNER);B.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(T!=u||U!=v)L=(new Date).getTime();if(z&&z.isParent&&v==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&&
+window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50),
+window.zTreeMoveTargetNodeTId=z.tId}}else if(v=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=v;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c);
+F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(C.dragFlag!=0){C.dragFlag=0;var a,i,j;for(a=0,i=l.length;a<i;a++)j=l[a],j.isParent&&C.dragNodeShowBefore[j.tId]&&!j.open&&(f.expandCollapseNode(e,j,!j.open),
+delete C.dragNodeShowBefore[j.tId]);D&&D.remove();B&&B.remove();var p=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;!p&&s&&u&&l[0].parentTId&&u==l[0].parentTId&&v==d.move.TYPE_INNER&&(s=null);if(s){var q=u==null?null:m.getNodeCache(h,u);if(g.apply(e.callback.beforeDrop,[h.treeId,l,q,v,p],!0)==!1)f.selectNodes(x,l);else{var A=p?g.clone(l):l;a=function(){if(J){if(!p)for(var a=0,c=l.length;a<c;a++)f.removeNode(e,l[a]);if(v==d.move.TYPE_INNER)f.addNodes(h,
+q,A);else if(f.addNodes(h,q.getParentNode(),A),v==d.move.TYPE_PREV)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1)}else if(p&&v==d.move.TYPE_INNER)f.addNodes(h,q,A);else if(p&&f.addNodes(h,q.getParentNode(),A),v!=d.move.TYPE_NEXT)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1);f.selectNodes(h,A);o(A[0],e).focus().blur();e.treeObj.trigger(d.event.DROP,[b,h.treeId,A,q,
+v,p])};v==d.move.TYPE_INNER&&g.canAsync(h,q)?f.asyncNode(h,q,!1,a):a()}}else f.selectNodes(x,l),e.treeObj.trigger(d.event.DROP,[b,e.treeId,l,null,null,null])}}function k(){return!1}var i,j,e=m.getSetting(b.data.treeId),C=m.getRoot(e),t=m.getRoots();if(b.button==2||!e.edit.enable||!e.edit.drag.isCopy&&!e.edit.drag.isMove)return!0;var p=b.target,q=m.getRoot(e).curSelectedList,l=[];if(m.isSelectedNode(e,a))for(i=0,j=q.length;i<j;i++){if(q[i].editNameFlag&&g.eqs(p.tagName,"input")&&p.getAttribute("treeNode"+
+d.id.INPUT)!==null)return!0;l.push(q[i]);if(l[0].parentTId!==q[i].parentTId){l=[a];break}}else l=[a];f.editNodeBlur=!0;f.cancelCurEditNode(e);var F=w(e.treeObj.get(0).ownerDocument),M=w(e.treeObj.get(0).ownerDocument.body),D,B,s,J=!1,h=e,x=e,H,R,T=null,U=null,u=null,v=d.move.TYPE_INNER,N=b.clientX,O=b.clientY,L=(new Date).getTime();g.uCanDo(e)&&F.bind("mousemove",c);F.bind("mouseup",r);F.bind("selectstart",k);b.preventDefault&&b.preventDefault();return!0}};w.extend(!0,w.fn.zTree.consts,I);w.extend(!0,
+w.fn.zTree._z,{tools:{getAbs:function(b){b=b.getBoundingClientRect();return[b.left+(document.body.scrollLeft+document.documentElement.scrollLeft),b.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(b){b.get(0)&&(b.focus(),g.setCursorPosition(b.get(0),b.val().length))},inputSelect:function(b){b.get(0)&&(b.focus(),b.select())},setCursorPosition:function(b,a){if(b.setSelectionRange)b.focus(),b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();
+c.collapse(!0);c.moveEnd("character",a);c.moveStart("character",a);c.select()}},showIfameMask:function(b,a){for(var c=m.getRoot(b);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f<i;f++){var j=d.get(f),e=g.getAbs(j),j=o("<div id='zTreeMask_"+f+"' class='zTreeMask' style='top:"+e[1]+"px; left:"+e[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b,
+a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" edit' id='"+a.tId+d.id.EDIT+"' title='"+g.apply(b.edit.renameTitle,[b.treeId,a],b.edit.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}},
+addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" remove' id='"+a.tId+d.id.REMOVE+"' title='"+g.apply(b.edit.removeTitle,[b.treeId,a],b.edit.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b,
+a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;else i[k]=a,b.treeObj.trigger(d.event.RENAME,
+[b.treeId,i,c]);o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT);j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1)}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("<input type=text class='rename' id='"+
+a.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection=
+!1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p;
+t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,w=0,x=null,t=null,D=c.level;if(c.isFirstNode){if(l=
+0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p<q;p++)if(g[e][p].tId==c.tId){l=p;break}l>=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p<q;p++)j[e][p].tId==a.tId&&(w=p);if(r==d.move.TYPE_INNER){a[e]||(a[e]=[]);if(a[e].length>0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV?(j[e].splice(w,
+0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(w+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(w,0,c):j[e].splice(w+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length<1?(g.isParent=!1,
+g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()},removeRemoveBtn:function(b,
+a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c<d;c++)f.selectNode(b,a[c],c>0)}},event:{},
+data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a<f;a++)c[d][a]&&m.setSonNodeLevel(b,c,c[d][a])}}}});var H=w.fn.zTree,g=H._z.tools,d=H.consts,f=H._z.view,m=H._z.data,o=g.$;m.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0,minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,
+autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});m.addInitBind(function(b){var a=b.treeObj,c=d.event;a.bind(c.RENAME,function(a,c,d,f){g.apply(b.callback.onRename,[a,c,d,f])});a.bind(c.DRAG,function(a,c,d,f){g.apply(b.callback.onDrag,[c,d,f])});a.bind(c.DRAGMOVE,function(a,c,d,f){g.apply(b.callback.onDragMove,[c,d,f])});a.bind(c.DROP,
+function(a,c,d,f,e,m,o){g.apply(b.callback.onDrop,[c,d,f,e,m,o])})});m.addInitUnBind(function(b){var b=b.treeObj,a=d.event;b.unbind(a.RENAME);b.unbind(a.DRAG);b.unbind(a.DRAGMOVE);b.unbind(a.DROP)});m.addInitCache(function(){});m.addInitNode(function(b,a,c){if(c)c.isHover=!1,c.editNameFlag=!1});m.addInitProxy(function(b){var a=b.target,c=m.getSetting(b.data.treeId),f=b.relatedTarget,k="",i=null,j="",e=null,o=null;if(g.eqs(b.type,"mouseover")){if(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}]))k=
+g.getNodeMainDom(o).id,j="hoverOverNode"}else if(g.eqs(b.type,"mouseout"))o=g.getMDom(c,f,[{tagName:"a",attrName:"treeNode"+d.id.A}]),o||(k="remove",j="hoverOutNode");else if(g.eqs(b.type,"mousedown")&&(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}])))k=g.getNodeMainDom(o).id,j="mousedownNode";if(k.length>0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e=x.onHoverOutNode}return{stop:!1,
+node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null;if(a&&!a.isParent&&this.setting.data.keep.leaf&&
+k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(),!0),f.editNode(this.setting,a))};a.moveNode=
+function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}});var N=f.cancelPreSelectedNode;
+f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d<g;d++)if(!a||a===c[d])if(f.removeTreeDom(b,c[d]),a)break;N&&N.apply(f,arguments)};var O=f.createNodes;f.createNodes=function(b,a,c,d){O&&O.apply(f,arguments);c&&f.repairParentChkClassWithSelf&&f.repairParentChkClassWithSelf(b,d)};var V=f.makeNodeUrl;f.makeNodeUrl=function(b,a){return b.edit.enable?null:V.apply(f,arguments)};var L=f.removeNode;f.removeNode=function(b,a){var c=m.getRoot(b);if(c.curEditNode===
+a)c.curEditNode=null;L&&L.apply(f,arguments)};var P=f.selectNode;f.selectNode=function(b,a,c){var d=m.getRoot(b);if(m.isSelectedNode(b,a)&&d.curEditNode==a&&a.editNameFlag)return!1;P&&P.apply(f,arguments);f.addHoverDom(b,a);return!0};var Q=g.uCanDo;g.uCanDo=function(b,a){var c=m.getRoot(b);if(a&&(g.eqs(a.type,"mouseover")||g.eqs(a.type,"mouseout")||g.eqs(a.type,"mousedown")||g.eqs(a.type,"mouseup")))return!0;if(c.curEditNode)f.editNodeBlur=!1,c.curEditInput.focus();return!c.curEditNode&&(Q?Q.apply(f,
+arguments):!0)}})(jQuery);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.js
new file mode 100644
index 00000000..05a5bfb7
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.js
@@ -0,0 +1,363 @@
+/*
+ * JQuery zTree exHideNodes v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default init node of exLib
+ var _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (typeof n.isHidden == "string") n.isHidden = tools.eqs(n.isHidden, "true");
+ n.isHidden = !!n.isHidden;
+ data.initHideForExCheck(setting, n);
+ },
+ //add dom for check
+ _beforeA = function(setting, node, html) {},
+ //update zTreeObj, add method of exLib
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.showNodes = function(nodes, options) {
+ view.showNodes(setting, nodes, options);
+ }
+ zTreeTools.showNode = function(node, options) {
+ if (!node) {
+ return;
+ }
+ view.showNodes(setting, [node], options);
+ }
+ zTreeTools.hideNodes = function(nodes, options) {
+ view.hideNodes(setting, nodes, options);
+ }
+ zTreeTools.hideNode = function(node, options) {
+ if (!node) {
+ return;
+ }
+ view.hideNodes(setting, [node], options);
+ }
+
+ var _checkNode = zTreeTools.checkNode;
+ if (_checkNode) {
+ zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _checkNode.apply(zTreeTools, arguments);
+ }
+ }
+ },
+ //method of operate data
+ _data = {
+ initHideForExCheck: function(setting, n) {
+ if (n.isHidden && setting.check && setting.check.enable) {
+ if(typeof n._nocheck == "undefined") {
+ n._nocheck = !!n.nocheck
+ n.nocheck = true;
+ }
+ n.check_Child_State = -1;
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, n);
+ }
+ }
+ },
+ initShowForExCheck: function(setting, n) {
+ if (!n.isHidden && setting.check && setting.check.enable) {
+ if(typeof n._nocheck != "undefined") {
+ n.nocheck = n._nocheck;
+ delete n._nocheck;
+ }
+ if (view.setChkClass) {
+ var checkObj = $$(n, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, n);
+ }
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, n);
+ }
+ }
+ }
+ },
+ //method of operate ztree dom
+ _view = {
+ clearOldFirstNode: function(setting, node) {
+ var n = node.getNextNode();
+ while(!!n){
+ if (n.isFirstNode) {
+ n.isFirstNode = false;
+ view.setNodeLineIcos(setting, n);
+ break;
+ }
+ if (n.isLastNode) {
+ break;
+ }
+ n = n.getNextNode();
+ }
+ },
+ clearOldLastNode: function(setting, node) {
+ var n = node.getPreNode();
+ while(!!n){
+ if (n.isLastNode) {
+ n.isLastNode = false;
+ view.setNodeLineIcos(setting, n);
+ break;
+ }
+ if (n.isFirstNode) {
+ break;
+ }
+ n = n.getPreNode();
+ }
+ },
+ makeDOMNodeMainBefore: function(html, setting, node) {
+ html.push("<li ", (node.isHidden ? "style='display:none;' " : ""), "id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
+ },
+ showNode: function(setting, node, options) {
+ node.isHidden = false;
+ data.initShowForExCheck(setting, node);
+ $$(node, setting).show();
+ },
+ showNodes: function(setting, nodes, options) {
+ if (!nodes || nodes.length == 0) {
+ return;
+ }
+ var pList = {}, i, j;
+ for (i=0, j=nodes.length; i<j; i++) {
+ var n = nodes[i];
+ if (!pList[n.parentTId]) {
+ var pn = n.getParentNode();
+ pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
+ }
+ view.showNode(setting, n, options);
+ }
+ for (var tId in pList) {
+ var children = pList[tId][setting.data.key.children];
+ view.setFirstNodeForShow(setting, children);
+ view.setLastNodeForShow(setting, children);
+ }
+ },
+ hideNode: function(setting, node, options) {
+ node.isHidden = true;
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ data.initHideForExCheck(setting, node);
+ view.cancelPreSelectedNode(setting, node);
+ $$(node, setting).hide();
+ },
+ hideNodes: function(setting, nodes, options) {
+ if (!nodes || nodes.length == 0) {
+ return;
+ }
+ var pList = {}, i, j;
+ for (i=0, j=nodes.length; i<j; i++) {
+ var n = nodes[i];
+ if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) {
+ var pn = n.getParentNode();
+ pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
+ }
+ view.hideNode(setting, n, options);
+ }
+ for (var tId in pList) {
+ var children = pList[tId][setting.data.key.children];
+ view.setFirstNodeForHide(setting, children);
+ view.setLastNodeForHide(setting, children);
+ }
+ },
+ setFirstNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if (childLength > 0 && !parentNode[childKey][0].isHidden) {
+ parentNode[childKey][0].isFirstNode = true;
+ } else if (childLength > 0) {
+ view.setFirstNodeForHide(setting, parentNode[childKey]);
+ }
+ },
+ setLastNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if (childLength > 0 && !parentNode[childKey][0].isHidden) {
+ parentNode[childKey][childLength - 1].isLastNode = true;
+ } else if (childLength > 0) {
+ view.setLastNodeForHide(setting, parentNode[childKey]);
+ }
+ },
+ setFirstNodeForHide: function(setting, nodes) {
+ var n,i,j;
+ for (i=0, j=nodes.length; i<j; i++) {
+ n = nodes[i];
+ if (n.isFirstNode) {
+ break;
+ }
+ if (!n.isHidden && !n.isFirstNode) {
+ n.isFirstNode = true;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return n;
+ },
+ setFirstNodeForShow: function(setting, nodes) {
+ var n,i,j, first, old;
+ for(i=0, j=nodes.length; i<j; i++) {
+ n = nodes[i];
+ if (!first && !n.isHidden && n.isFirstNode) {
+ first = n;
+ break;
+ } else if (!first && !n.isHidden && !n.isFirstNode) {
+ n.isFirstNode = true;
+ first = n;
+ view.setNodeLineIcos(setting, n);
+ } else if (first && n.isFirstNode) {
+ n.isFirstNode = false;
+ old = n;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return {"new":first, "old":old};
+ },
+ setLastNodeForHide: function(setting, nodes) {
+ var n,i;
+ for (i=nodes.length-1; i>=0; i--) {
+ n = nodes[i];
+ if (n.isLastNode) {
+ break;
+ }
+ if (!n.isHidden && !n.isLastNode) {
+ n.isLastNode = true;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return n;
+ },
+ setLastNodeForShow: function(setting, nodes) {
+ var n,i,j, last, old;
+ for (i=nodes.length-1; i>=0; i--) {
+ n = nodes[i];
+ if (!last && !n.isHidden && n.isLastNode) {
+ last = n;
+ break;
+ } else if (!last && !n.isHidden && !n.isLastNode) {
+ n.isLastNode = true;
+ last = n;
+ view.setNodeLineIcos(setting, n);
+ } else if (last && n.isLastNode) {
+ n.isLastNode = false;
+ old = n;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return {"new":last, "old":old};
+ }
+ },
+
+ _z = {
+ view: _view,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.addInitNode(_initNode);
+ data.addBeforeA(_beforeA);
+ data.addZTreeTools(_zTreeTools);
+
+// Override method in core
+ var _dInitNode = data.initNode;
+ data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) {
+ var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
+ children = tmpPNode[setting.data.key.children];
+ data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children);
+ data.tmpHideLastNode = view.setLastNodeForHide(setting, children);
+ view.setNodeLineIcos(setting, data.tmpHideFirstNode);
+ view.setNodeLineIcos(setting, data.tmpHideLastNode);
+ isFirstNode = (data.tmpHideFirstNode === node);
+ isLastNode = (data.tmpHideLastNode === node);
+ if (_dInitNode) _dInitNode.apply(data, arguments);
+ if (isLastNode) {
+ view.clearOldLastNode(setting, node);
+ }
+ };
+
+ var _makeChkFlag = data.makeChkFlag;
+ if (!!_makeChkFlag) {
+ data.makeChkFlag = function(setting, node) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _makeChkFlag.apply(data, arguments);
+ }
+ }
+
+ var _getTreeCheckedNodes = data.getTreeCheckedNodes;
+ if (!!_getTreeCheckedNodes) {
+ data.getTreeCheckedNodes = function(setting, nodes, checked, results) {
+ if (!!nodes && nodes.length > 0) {
+ var p = nodes[0].getParentNode();
+ if (!!p && !!p.isHidden) {
+ return [];
+ }
+ }
+ return _getTreeCheckedNodes.apply(data, arguments);
+ }
+ }
+
+ var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes;
+ if (!!_getTreeChangeCheckedNodes) {
+ data.getTreeChangeCheckedNodes = function(setting, nodes, results) {
+ if (!!nodes && nodes.length > 0) {
+ var p = nodes[0].getParentNode();
+ if (!!p && !!p.isHidden) {
+ return [];
+ }
+ }
+ return _getTreeChangeCheckedNodes.apply(data, arguments);
+ }
+ }
+
+ var _expandCollapseSonNode = view.expandCollapseSonNode;
+ if (!!_expandCollapseSonNode) {
+ view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _expandCollapseSonNode.apply(view, arguments);
+ }
+ }
+
+ var _setSonNodeCheckBox = view.setSonNodeCheckBox;
+ if (!!_setSonNodeCheckBox) {
+ view.setSonNodeCheckBox = function(setting, node, value, srcNode) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _setSonNodeCheckBox.apply(view, arguments);
+ }
+ }
+
+ var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf;
+ if (!!_repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf = function(setting, node) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _repairParentChkClassWithSelf.apply(view, arguments);
+ }
+ }
+})(jQuery); \ No newline at end of file
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.min.js b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.min.js
new file mode 100644
index 00000000..f1dce5bd
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/js/jquery.ztree.exhide.min.js
@@ -0,0 +1,22 @@
+/*
+ * JQuery zTree exHideNodes v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(i){i.extend(!0,i.fn.zTree._z,{view:{clearOldFirstNode:function(c,a){for(var b=a.getNextNode();b;){if(b.isFirstNode){b.isFirstNode=!1;d.setNodeLineIcos(c,b);break}if(b.isLastNode)break;b=b.getNextNode()}},clearOldLastNode:function(c,a){for(var b=a.getPreNode();b;){if(b.isLastNode){b.isLastNode=!1;d.setNodeLineIcos(c,b);break}if(b.isFirstNode)break;b=b.getPreNode()}},makeDOMNodeMainBefore:function(c,a,b){c.push("<li ",b.isHidden?"style='display:none;' ":"","id='",b.tId,"' class='",l.className.LEVEL,
+b.level,"' tabindex='0' hidefocus='true' treenode>")},showNode:function(c,a){a.isHidden=!1;f.initShowForExCheck(c,a);j(a,c).show()},showNodes:function(c,a,b){if(a&&a.length!=0){var e={},g,k;for(g=0,k=a.length;g<k;g++){var h=a[g];if(!e[h.parentTId]){var i=h.getParentNode();e[h.parentTId]=i===null?f.getRoot(c):h.getParentNode()}d.showNode(c,h,b)}for(var j in e)a=e[j][c.data.key.children],d.setFirstNodeForShow(c,a),d.setLastNodeForShow(c,a)}},hideNode:function(c,a){a.isHidden=!0;a.isFirstNode=!1;a.isLastNode=
+!1;f.initHideForExCheck(c,a);d.cancelPreSelectedNode(c,a);j(a,c).hide()},hideNodes:function(c,a,b){if(a&&a.length!=0){var e={},g,k;for(g=0,k=a.length;g<k;g++){var h=a[g];if((h.isFirstNode||h.isLastNode)&&!e[h.parentTId]){var i=h.getParentNode();e[h.parentTId]=i===null?f.getRoot(c):h.getParentNode()}d.hideNode(c,h,b)}for(var j in e)a=e[j][c.data.key.children],d.setFirstNodeForHide(c,a),d.setLastNodeForHide(c,a)}},setFirstNode:function(c,a){var b=c.data.key.children,e=a[b].length;e>0&&!a[b][0].isHidden?
+a[b][0].isFirstNode=!0:e>0&&d.setFirstNodeForHide(c,a[b])},setLastNode:function(c,a){var b=c.data.key.children,e=a[b].length;e>0&&!a[b][0].isHidden?a[b][e-1].isLastNode=!0:e>0&&d.setLastNodeForHide(c,a[b])},setFirstNodeForHide:function(c,a){var b,e,g;for(e=0,g=a.length;e<g;e++){b=a[e];if(b.isFirstNode)break;if(!b.isHidden&&!b.isFirstNode){b.isFirstNode=!0;d.setNodeLineIcos(c,b);break}else b=null}return b},setFirstNodeForShow:function(c,a){var b,e,g,f,h;for(e=0,g=a.length;e<g;e++)if(b=a[e],!f&&!b.isHidden&&
+b.isFirstNode){f=b;break}else if(!f&&!b.isHidden&&!b.isFirstNode)b.isFirstNode=!0,f=b,d.setNodeLineIcos(c,b);else if(f&&b.isFirstNode){b.isFirstNode=!1;h=b;d.setNodeLineIcos(c,b);break}return{"new":f,old:h}},setLastNodeForHide:function(c,a){var b,e;for(e=a.length-1;e>=0;e--){b=a[e];if(b.isLastNode)break;if(!b.isHidden&&!b.isLastNode){b.isLastNode=!0;d.setNodeLineIcos(c,b);break}else b=null}return b},setLastNodeForShow:function(c,a){var b,e,g,f;for(e=a.length-1;e>=0;e--)if(b=a[e],!g&&!b.isHidden&&
+b.isLastNode){g=b;break}else if(!g&&!b.isHidden&&!b.isLastNode)b.isLastNode=!0,g=b,d.setNodeLineIcos(c,b);else if(g&&b.isLastNode){b.isLastNode=!1;f=b;d.setNodeLineIcos(c,b);break}return{"new":g,old:f}}},data:{initHideForExCheck:function(c,a){if(a.isHidden&&c.check&&c.check.enable){if(typeof a._nocheck=="undefined")a._nocheck=!!a.nocheck,a.nocheck=!0;a.check_Child_State=-1;d.repairParentChkClassWithSelf&&d.repairParentChkClassWithSelf(c,a)}},initShowForExCheck:function(c,a){if(!a.isHidden&&c.check&&
+c.check.enable){if(typeof a._nocheck!="undefined")a.nocheck=a._nocheck,delete a._nocheck;if(d.setChkClass){var b=j(a,l.id.CHECK,c);d.setChkClass(c,b,a)}d.repairParentChkClassWithSelf&&d.repairParentChkClassWithSelf(c,a)}}}});var i=i.fn.zTree,m=i._z.tools,l=i.consts,d=i._z.view,f=i._z.data,j=m.$;f.addInitNode(function(c,a,b){if(typeof b.isHidden=="string")b.isHidden=m.eqs(b.isHidden,"true");b.isHidden=!!b.isHidden;f.initHideForExCheck(c,b)});f.addBeforeA(function(){});f.addZTreeTools(function(c,a){a.showNodes=
+function(a,b){d.showNodes(c,a,b)};a.showNode=function(a,b){a&&d.showNodes(c,[a],b)};a.hideNodes=function(a,b){d.hideNodes(c,a,b)};a.hideNode=function(a,b){a&&d.hideNodes(c,[a],b)};var b=a.checkNode;if(b)a.checkNode=function(c,d,f,h){(!c||!c.isHidden)&&b.apply(a,arguments)}});var n=f.initNode;f.initNode=function(c,a,b,e,g,i,h){var j=(e?e:f.getRoot(c))[c.data.key.children];f.tmpHideFirstNode=d.setFirstNodeForHide(c,j);f.tmpHideLastNode=d.setLastNodeForHide(c,j);d.setNodeLineIcos(c,f.tmpHideFirstNode);
+d.setNodeLineIcos(c,f.tmpHideLastNode);g=f.tmpHideFirstNode===b;i=f.tmpHideLastNode===b;n&&n.apply(f,arguments);i&&d.clearOldLastNode(c,b)};var o=f.makeChkFlag;if(o)f.makeChkFlag=function(c,a){(!a||!a.isHidden)&&o.apply(f,arguments)};var p=f.getTreeCheckedNodes;if(p)f.getTreeCheckedNodes=function(c,a,b,e){if(a&&a.length>0){var d=a[0].getParentNode();if(d&&d.isHidden)return[]}return p.apply(f,arguments)};var q=f.getTreeChangeCheckedNodes;if(q)f.getTreeChangeCheckedNodes=function(c,a,b){if(a&&a.length>
+0){var d=a[0].getParentNode();if(d&&d.isHidden)return[]}return q.apply(f,arguments)};var r=d.expandCollapseSonNode;if(r)d.expandCollapseSonNode=function(c,a,b,e,f){(!a||!a.isHidden)&&r.apply(d,arguments)};var s=d.setSonNodeCheckBox;if(s)d.setSonNodeCheckBox=function(c,a,b,e){(!a||!a.isHidden)&&s.apply(d,arguments)};var t=d.repairParentChkClassWithSelf;if(t)d.repairParentChkClassWithSelf=function(c,a){(!a||!a.isHidden)&&t.apply(d,arguments)}})(jQuery);
diff --git a/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/zTree.v3.jquery.json b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/zTree.v3.jquery.json
new file mode 100644
index 00000000..ef26b102
--- /dev/null
+++ b/openo-portal/portal-common/src/main/webapp/common/thirdparty/zTree/zTree.v3.jquery.json
@@ -0,0 +1,35 @@
+{
+ "name": "zTree.v3",
+ "title": "zTree.v3",
+ "description": "jquery tree plugin",
+ "keywords": [
+ "tree",
+ "ui"
+ ],
+ "version": "3.5.16",
+ "author": {
+ "name": "Zhang QiGang",
+ "email":"hunter.z@263.net",
+ "url": "https://github.com/zTree/zTree_v3"
+ },
+ "maintainers": [
+ {
+ "name": "Zhang QiGang",
+ "email":"hunter.z@263.net",
+ "url": "http://www.ztree.me/"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.ztree.me/v3/main.php#_license"
+ }
+ ],
+ "bugs": "https://github.com/zTree/zTree_v3/issues",
+ "homepage": "http://www.ztree.me/",
+ "demo": "http://www.ztree.me/v3/demo.php",
+ "docs": "http://www.ztree.me/v3/api.php",
+ "dependencies": {
+ "jquery": ">=1.4.4"
+ }
+}