From 72b4699871ccbd0f3f1a1550532ec0afad4885c4 Mon Sep 17 00:00:00 2001 From: "cagette@ct8" Date: Sat, 26 Sep 2020 18:25:18 +0000 Subject: [PATCH] code from amapei --- .gitignore | 37 + LICENSE | 340 + Makefile.dist | 93 + README.md | 19 +- build/travis-ci-apache | 11 + cagette-php.hxml | 22 + cagette.hxml | 18 + cagetteAllPlugins.hxml | 26 + cagetteAllPlugins.hxproj | 76 + cagetteAllPluginsJs.hxml | 17 + cagetteJs.hxml | 13 + common/Common.hx | 472 + common/Formatting.hx | 73 + data/productTaxonomy.json | 4322 ++ js/App.hx | 262 + js/ShopCart.hx | 445 + js/Tagger.hx | 151 + js/Tuto.hx | 131 + js/libs/libs.js | 28 + js/react/DateTimeField.hx | 7 + js/react/Error.hx | 29 + js/react/Message.hx | 26 + js/react/ReportHeader.hx | 94 + js/react/Typeahead.hx | 17 + js/react/VATBox.hx | 125 + js/react/map/GroupMap.hx | 252 + js/react/map/GroupMapRoot.hx | 312 + js/react/order/InsertOrder.hx | 112 + js/react/order/Order.hx | 179 + js/react/order/OrderBox.hx | 224 + js/react/product/ComposerApp.hx | 104 + js/react/product/Product.hx | 39 + js/react/product/ProductInput.hx | 168 + js/react/product/ProductSelect.hx | 41 + js/react/store/Cart.hx | 103 + js/react/store/Filters.hx | 45 + js/react/store/Product.hx | 65 + js/react/store/ProductList.hx | 73 + js/react/store/Store.hx | 229 + js/react/user/LoginBox.hx | 139 + js/react/user/RegisterBox.hx | 165 + js/test/TestAll.hx | 20 + js/test/mocks.json | 44 + js/test/utils/TestCartUtils.hx | 58 + js/utils/CartUtils.hx | 64 + js/utils/HttpUtil.hx | 115 + lang/de/tmp/README.md | 1 + lang/en/tmp/README.md | 1 + lang/master/tmp/README.md | 1 + lang/master/tpl/account/payments.mtt | 105 + lang/master/tpl/admin/cssDemo.mtt | 53 + lang/master/tpl/admin/default.mtt | 10 + lang/master/tpl/admin/design.mtt | 36 + lang/master/tpl/admin/emails.mtt | 50 + lang/master/tpl/admin/errors.mtt | 100 + lang/master/tpl/admin/graph.mtt | 56 + lang/master/tpl/admin/plugins/default.mtt | 33 + lang/master/tpl/admin/taxo.mtt | 31 + lang/master/tpl/amap/default.mtt | 78 + lang/master/tpl/amapadmin/addimage.mtt | 32 + lang/master/tpl/amapadmin/default.mtt | 50 + lang/master/tpl/amapadmin/design.mtt | 39 + lang/master/tpl/amapadmin/rights.mtt | 40 + lang/master/tpl/base.mtt | 129 + lang/master/tpl/block/modal.mtt | 11 + lang/master/tpl/blocks/user.mtt_removeme | 12 + lang/master/tpl/categories/default.mtt | 48 + lang/master/tpl/contract/default.mtt | 260 + lang/master/tpl/contract/insertChoose.mtt | 37 + lang/master/tpl/contract/order.mtt | 139 + lang/master/tpl/contract/orderAndPay.mtt | 137 + lang/master/tpl/contract/orderByDate.mtt | 75 + lang/master/tpl/contract/view.mtt | 137 + lang/master/tpl/contractadmin/calendar.mtt | 56 + lang/master/tpl/contractadmin/contract.mtt | 57 + lang/master/tpl/contractadmin/default.mtt | 149 + lang/master/tpl/contractadmin/deliveries.mtt | 82 + lang/master/tpl/contractadmin/design.mtt | 44 + .../tpl/contractadmin/distributionp.mtt | 60 + lang/master/tpl/contractadmin/edit.mtt | 148 + lang/master/tpl/contractadmin/orders.mtt | 214 + .../master/tpl/contractadmin/ordersByDate.mtt | 172 + .../tpl/contractadmin/ordersByProduct.mtt | 70 + .../tpl/contractadmin/ordersByProductList.mtt | 89 + .../tpl/contractadmin/ordersByTimeFrame.mtt | 146 + lang/master/tpl/contractadmin/products.mtt | 156 + .../tpl/contractadmin/selectDistrib.mtt | 53 + lang/master/tpl/contractadmin/stats.mtt | 63 + lang/master/tpl/contractadmin/stocks.mtt | 27 + .../tpl/contractadmin/vendorsByDate.mtt | 61 + .../tpl/contractadmin/vendorsByTimeFrame.mtt | 68 + lang/master/tpl/contractadmin/view.mtt | 70 + lang/master/tpl/cssDemo.mtt | 194 + lang/master/tpl/design.mtt | 269 + lang/master/tpl/distribution/list.mtt | 156 + lang/master/tpl/distribution/listByDate.mtt | 252 + .../tpl/distribution/listByDateOnePage.mtt | 163 + .../listByDateOnePageContract.mtt | 178 + .../tpl/distribution/listByDateShort.mtt | 115 + .../tpl/distribution/listByProductUser.mtt | 91 + lang/master/tpl/distribution/planning.mtt | 110 + lang/master/tpl/distribution/validate.mtt | 92 + lang/master/tpl/empty.mtt | 1 + lang/master/tpl/error.mtt | 31 + lang/master/tpl/form.mtt | 14 + lang/master/tpl/group/map.mtt | 13 + lang/master/tpl/group/place.mtt | 17 + lang/master/tpl/group/view.mtt | 195 + lang/master/tpl/home.mtt | 353 + lang/master/tpl/install/default.mtt | 35 + lang/master/tpl/macros.mtt | 312 + lang/master/tpl/mail/design.mtt | 40 + lang/master/tpl/mail/forgottenPassword.mtt | 16 + lang/master/tpl/mail/invitation.mtt | 45 + lang/master/tpl/mail/message.mtt | 8 + lang/master/tpl/mail/newPasswordConfirmed.mtt | 17 + .../master/tpl/mail/orderSummaryForMember.mtt | 74 + lang/master/tpl/mail/ordersByProduct.mtt | 69 + lang/master/tpl/maintain.mtt | 17 + lang/master/tpl/member/balance.mtt | 63 + lang/master/tpl/member/default.mtt | 164 + lang/master/tpl/member/import.mtt | 118 + lang/master/tpl/member/lastMessages.mtt | 30 + lang/master/tpl/member/payments.mtt | 121 + lang/master/tpl/member/view.mtt | 223 + lang/master/tpl/member/waiting.mtt | 47 + lang/master/tpl/membership/default.mtt | 32 + lang/master/tpl/messages/default.mtt | 55 + lang/master/tpl/messages/message.mtt | 77 + lang/master/tpl/place/view.mtt | 25 + lang/master/tpl/product/addimage.mtt | 34 + lang/master/tpl/product/categorize.mtt | 57 + lang/master/tpl/product/compose.mtt | 20 + lang/master/tpl/product/import.mtt | 111 + lang/master/tpl/shop/choose.mtt | 108 + lang/master/tpl/shop/default.mtt | 205 + lang/master/tpl/shop/default2.mtt | 8 + lang/master/tpl/shop/needLogin.mtt | 43 + lang/master/tpl/shop/productInfo.mtt | 111 + lang/master/tpl/stats/default.mtt | 30 + lang/master/tpl/transaction/cash.mtt | 35 + lang/master/tpl/transaction/check.mtt | 42 + lang/master/tpl/transaction/moneypot.mtt | 42 + lang/master/tpl/transaction/pay.mtt | 60 + lang/master/tpl/transaction/transfer.mtt | 40 + lang/master/tpl/transaction/view.mtt | 81 + lang/master/tpl/user/choose.mtt | 108 + lang/master/tpl/user/default.mtt | 11 + lang/master/tpl/user/definePassword.mtt | 39 + lang/master/tpl/user/forgottenPassword.mtt | 42 + lang/master/tpl/user/insert.mtt | 35 + lang/master/tpl/user/login.mtt | 8 + lang/master/tpl/user/register.mtt | 11 + lang/master/tpl/validate/user.mtt | 284 + lang/master/tpl/vendor/addimage.mtt | 38 + lang/master/tpl/vendor/default.mtt | 54 + lang/master/tpl/vendor/view.mtt | 22 + package-lock.json | 6149 +++ package.json | 52 + potGeneration.hxml | 21 + src/App.hx | 306 + src/Calendar.hx | 83 + src/MultiDistrib.hx | 385 + src/MyMacros.hx | 82 + src/View.hx | 318 + src/controller/Account.hx | 100 + src/controller/Amap.hx | 53 + src/controller/AmapAdmin.hx | 367 + src/controller/Api.hx | 111 + src/controller/Categories.hx | 160 + src/controller/Contract.hx | 619 + src/controller/ContractAdmin.hx | 1027 + src/controller/Controller.hx | 28 + src/controller/Cron.hx | 477 + src/controller/Distribution.hx | 577 + src/controller/Group.hx | 368 + src/controller/Install.hx | 273 + src/controller/Main.hx | 261 + src/controller/Member.hx | 741 + src/controller/Membership.hx | 73 + src/controller/Messages.hx | 211 + src/controller/Place.hx | 87 + src/controller/Plugin.hx | 39 + src/controller/Product.hx | 339 + src/controller/Shop.hx | 264 + src/controller/Stats.hx | 18 + src/controller/Transaction.hx | 294 + src/controller/User.hx | 255 + src/controller/Validate.hx | 154 + src/controller/Vendor.hx | 124 + src/controller/admin/Admin.hx | 223 + src/controller/admin/Plugins.hx | 32 + src/controller/api/Group.hx | 80 + src/controller/api/Order.hx | 142 + src/controller/api/Product.hx | 20 + src/controller/api/Shop.hx | 209 + src/controller/api/User.hx | 57 + src/db/Amap.hx | 373 + src/db/Basket.hx | 130 + src/db/Category.hx | 22 + src/db/CategoryGroup.hx | 47 + src/db/Contract.hx | 285 + src/db/Distribution.hx | 271 + src/db/DistributionCycle.hx | 54 + src/db/Graph.hx | 45 + src/db/Membership.hx | 24 + src/db/Message.hx | 28 + src/db/Operation.hx | 431 + src/db/Place.hx | 87 + src/db/Product.hx | 206 + src/db/ProductCategory.hx | 27 + src/db/TxpCategory.hx | 23 + src/db/TxpProduct.hx | 27 + src/db/TxpSubCategory.hx | 26 + src/db/User.hx | 574 + src/db/UserAmap.hx | 128 + src/db/UserContract.hx | 200 + src/db/Vendor.hx | 61 + src/db/WaitingList.hx | 20 + src/form/ColorRadioGroup.hx | 46 + src/form/ProductTypeRadioGroup.hx | 50 + src/form/UnitQuantity.hx | 27 + src/payment/Cash.hx | 22 + src/payment/Check.hx | 24 + src/payment/MoneyPot.hx | 22 + src/payment/Payment.hx | 15 + src/payment/Transfer.hx | 21 + src/plugin/Tutorial.hx | 109 + src/service/DistributionService.hx | 423 + src/service/GroupService.hx | 81 + src/service/OrderService.hx | 468 + src/service/PaymentService.hx | 182 + src/service/PlaceService.hx | 29 + src/service/ProductService.hx | 57 + src/service/ReportService.hx | 115 + src/service/UserService.hx | 120 + src/service/WaitingListService.hx | 140 + src/test/TestDistributions.hx | 299 + src/test/TestOrders.hx | 473 + src/test/TestPayments.hx | 64 + src/test/TestReports.hx | 171 + src/test/TestSuite.hx | 413 + src/test/TestTools.hx | 92 + src/test/TestUser.hx | 48 + src/tools/ArrayTool.hx | 51 + src/tools/DateTool.hx | 52 + src/tools/FloatTool.hx | 24 + src/tools/ObjectListTool.hx | 142 + src/tools/StockTool.hx | 36 + tests.hxml | 17 + testsJS.hxml | 9 + testsPlugins.hxml | 21 + www/.htaccess | 8 + www/adherents.xls | Bin 0 -> 10752 bytes www/bower.json | 21 + .../.bower.json | 47 + .../CONTRIBUTING.md | 32 + .../Gruntfile.js | 194 + .../eonasdan-bootstrap-datetimepicker/LICENSE | 21 + .../README.md | 25 + .../bower.json | 37 + .../build/css/bootstrap-datetimepicker.css | 366 + .../css/bootstrap-datetimepicker.min.css | 366 + .../build/js/bootstrap-datetimepicker.min.js | 8 + .../Bootstrap.v3.Datetimepicker.4.0.0.nupkg | Bin 0 -> 23451 bytes ...ootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg | Bin 0 -> 24328 bytes .../component.json | 9 + .../composer.json | 31 + .../package.json | 35 + .../src/js/bootstrap-datetimepicker.js | 2051 + .../src/less/_bootstrap-datetimepicker.less | 343 + .../less/bootstrap-datetimepicker-build.less | 17 + .../Bootstrap.v3.Datetimepicker.CSS.nuspec | 30 + .../nuget/Bootstrap.v3.Datetimepicker.nuspec | 30 + .../src/nuget/NuGet.exe | Bin 0 -> 1662976 bytes .../src/nuget/install.ps1 | 2 + .../tasks/bump_version.js | 88 + www/bower_components/jquery/.bower.json | 25 + www/bower_components/jquery/AUTHORS.txt | 295 + www/bower_components/jquery/LICENSE.txt | 36 + www/bower_components/jquery/MIT-LICENSE.txt | 21 + www/bower_components/jquery/README.md | 65 + www/bower_components/jquery/bower.json | 14 + www/bower_components/jquery/dist/core.js | 481 + www/bower_components/jquery/dist/jquery.js | 10074 ++++ .../jquery/dist/jquery.min.js | 4 + .../jquery/dist/jquery.slim.js | 7966 ++++ .../jquery/dist/jquery.slim.min.js | 4 + .../jquery/external/sizzle/LICENSE.txt | 36 + .../jquery/external/sizzle/dist/sizzle.js | 2217 + .../jquery/external/sizzle/dist/sizzle.min.js | 3 + www/bower_components/jquery/src/.eslintrc | 18 + www/bower_components/jquery/src/ajax.js | 855 + www/bower_components/jquery/src/ajax/jsonp.js | 102 + www/bower_components/jquery/src/ajax/load.js | 75 + .../jquery/src/ajax/parseJSON.js | 13 + .../jquery/src/ajax/parseXML.js | 30 + .../jquery/src/ajax/script.js | 77 + .../jquery/src/ajax/var/location.js | 5 + .../jquery/src/ajax/var/nonce.js | 7 + .../jquery/src/ajax/var/rquery.js | 5 + www/bower_components/jquery/src/ajax/xhr.js | 169 + www/bower_components/jquery/src/attributes.js | 13 + .../jquery/src/attributes/attr.js | 137 + .../jquery/src/attributes/classes.js | 179 + .../jquery/src/attributes/prop.js | 128 + .../jquery/src/attributes/support.js | 33 + .../jquery/src/attributes/val.js | 184 + www/bower_components/jquery/src/callbacks.js | 234 + www/bower_components/jquery/src/core.js | 481 + .../jquery/src/core/DOMEval.js | 16 + .../jquery/src/core/access.js | 67 + www/bower_components/jquery/src/core/init.js | 127 + .../jquery/src/core/parseHTML.js | 65 + .../jquery/src/core/ready-no-deferred.js | 111 + www/bower_components/jquery/src/core/ready.js | 95 + .../jquery/src/core/readyException.js | 13 + .../jquery/src/core/support.js | 20 + .../jquery/src/core/var/rsingleTag.js | 6 + www/bower_components/jquery/src/css.js | 424 + .../jquery/src/css/addGetHookIf.js | 26 + .../jquery/src/css/adjustCSS.js | 71 + www/bower_components/jquery/src/css/curCSS.js | 59 + .../jquery/src/css/defaultDisplay.js | 70 + .../jquery/src/css/hiddenVisibleSelectors.js | 15 + .../jquery/src/css/showHide.js | 105 + .../jquery/src/css/support.js | 89 + www/bower_components/jquery/src/css/swap.js | 28 + .../jquery/src/css/var/cssExpand.js | 5 + .../jquery/src/css/var/getStyles.js | 17 + .../jquery/src/css/var/isHidden.js | 13 + .../jquery/src/css/var/isHiddenWithinTree.js | 34 + .../jquery/src/css/var/rmargin.js | 5 + .../jquery/src/css/var/rnumnonpx.js | 7 + .../jquery/src/css/var/swap.js | 26 + www/bower_components/jquery/src/data.js | 161 + www/bower_components/jquery/src/data/Data.js | 161 + .../jquery/src/data/accepts.js | 20 + .../jquery/src/data/var/acceptData.js | 19 + .../jquery/src/data/var/dataPriv.js | 7 + .../jquery/src/data/var/dataUser.js | 7 + .../jquery/src/data/var/data_priv.js | 5 + .../jquery/src/data/var/data_user.js | 5 + www/bower_components/jquery/src/deferred.js | 389 + .../jquery/src/deferred/exceptionHook.js | 21 + www/bower_components/jquery/src/deprecated.js | 30 + www/bower_components/jquery/src/dimensions.js | 56 + www/bower_components/jquery/src/effects.js | 688 + .../jquery/src/effects/Tween.js | 123 + .../jquery/src/effects/animatedSelector.js | 15 + www/bower_components/jquery/src/event.js | 726 + www/bower_components/jquery/src/event/ajax.js | 22 + .../jquery/src/event/alias.js | 29 + .../jquery/src/event/focusin.js | 55 + .../jquery/src/event/support.js | 11 + .../jquery/src/event/trigger.js | 185 + .../jquery/src/exports/amd.js | 26 + .../jquery/src/exports/global.js | 34 + www/bower_components/jquery/src/intro.js | 44 + www/bower_components/jquery/src/jquery.js | 40 + .../jquery/src/manipulation.js | 486 + .../jquery/src/manipulation/_evalUrl.js | 23 + .../jquery/src/manipulation/buildFragment.js | 104 + .../jquery/src/manipulation/getAll.js | 23 + .../jquery/src/manipulation/setGlobalEval.js | 22 + .../jquery/src/manipulation/support.js | 35 + .../src/manipulation/var/rcheckableType.js | 5 + .../src/manipulation/var/rscriptType.js | 5 + .../jquery/src/manipulation/var/rtagName.js | 5 + .../jquery/src/manipulation/wrapMap.js | 29 + www/bower_components/jquery/src/offset.js | 232 + www/bower_components/jquery/src/outro.js | 1 + www/bower_components/jquery/src/queue.js | 145 + .../jquery/src/queue/delay.js | 24 + .../jquery/src/selector-native.js | 237 + .../jquery/src/selector-sizzle.js | 19 + www/bower_components/jquery/src/selector.js | 3 + www/bower_components/jquery/src/serialize.js | 126 + .../jquery/src/sizzle/dist/sizzle.js | 2067 + .../jquery/src/sizzle/dist/sizzle.min.js | 3 + www/bower_components/jquery/src/traversing.js | 178 + .../jquery/src/traversing/findFilter.js | 99 + .../jquery/src/traversing/var/dir.js | 22 + .../src/traversing/var/rneedsContext.js | 8 + .../jquery/src/traversing/var/siblings.js | 17 + .../jquery/src/var/ObjectFunctionString.js | 7 + www/bower_components/jquery/src/var/arr.js | 5 + .../jquery/src/var/class2type.js | 6 + www/bower_components/jquery/src/var/concat.js | 7 + .../jquery/src/var/document.js | 5 + .../jquery/src/var/documentElement.js | 7 + .../jquery/src/var/fnToString.js | 7 + .../jquery/src/var/getProto.js | 5 + www/bower_components/jquery/src/var/hasOwn.js | 7 + .../jquery/src/var/indexOf.js | 7 + www/bower_components/jquery/src/var/pnum.js | 5 + www/bower_components/jquery/src/var/push.js | 7 + .../jquery/src/var/rcssNum.js | 9 + .../jquery/src/var/rnotwhite.js | 5 + www/bower_components/jquery/src/var/slice.js | 7 + .../jquery/src/var/strundefined.js | 3 + .../jquery/src/var/support.js | 6 + .../jquery/src/var/toString.js | 7 + www/bower_components/jquery/src/wrap.js | 77 + www/bower_components/moment/.bower.json | 30 + www/bower_components/moment/CHANGELOG.md | 435 + www/bower_components/moment/LICENSE | 22 + www/bower_components/moment/Moment.js.nuspec | 28 + www/bower_components/moment/README.md | 55 + .../moment/benchmarks/clone.js | 10 + www/bower_components/moment/bower.json | 20 + www/bower_components/moment/locale/af.js | 72 + www/bower_components/moment/locale/ar-ma.js | 58 + www/bower_components/moment/locale/ar-sa.js | 102 + www/bower_components/moment/locale/ar-tn.js | 56 + www/bower_components/moment/locale/ar.js | 135 + www/bower_components/moment/locale/az.js | 103 + www/bower_components/moment/locale/be.js | 146 + www/bower_components/moment/locale/bg.js | 89 + www/bower_components/moment/locale/bn.js | 112 + www/bower_components/moment/locale/bo.js | 109 + www/bower_components/moment/locale/br.js | 106 + www/bower_components/moment/locale/bs.js | 140 + www/bower_components/moment/locale/ca.js | 78 + www/bower_components/moment/locale/cs.js | 156 + www/bower_components/moment/locale/cv.js | 62 + www/bower_components/moment/locale/cy.js | 78 + www/bower_components/moment/locale/da.js | 59 + www/bower_components/moment/locale/de-at.js | 75 + www/bower_components/moment/locale/de.js | 74 + www/bower_components/moment/locale/dv.js | 99 + www/bower_components/moment/locale/el.js | 93 + www/bower_components/moment/locale/en-au.js | 65 + www/bower_components/moment/locale/en-ca.js | 62 + www/bower_components/moment/locale/en-gb.js | 66 + www/bower_components/moment/locale/en-ie.js | 67 + www/bower_components/moment/locale/en-nz.js | 66 + www/bower_components/moment/locale/eo.js | 72 + www/bower_components/moment/locale/es-do.js | 80 + www/bower_components/moment/locale/es.js | 78 + www/bower_components/moment/locale/et.js | 79 + www/bower_components/moment/locale/eu.js | 63 + www/bower_components/moment/locale/fa.js | 104 + www/bower_components/moment/locale/fi.js | 106 + www/bower_components/moment/locale/fo.js | 59 + www/bower_components/moment/locale/fr-ca.js | 57 + www/bower_components/moment/locale/fr-ch.js | 64 + www/bower_components/moment/locale/fr.js | 61 + www/bower_components/moment/locale/fy.js | 70 + www/bower_components/moment/locale/gd.js | 76 + www/bower_components/moment/locale/gl.js | 74 + www/bower_components/moment/locale/he.js | 81 + www/bower_components/moment/locale/hi.js | 122 + www/bower_components/moment/locale/hr.js | 139 + www/bower_components/moment/locale/hu.js | 108 + www/bower_components/moment/locale/hy-am.js | 110 + www/bower_components/moment/locale/id.js | 82 + www/bower_components/moment/locale/is.js | 126 + www/bower_components/moment/locale/it.js | 69 + www/bower_components/moment/locale/ja.js | 64 + www/bower_components/moment/locale/jv.js | 83 + www/bower_components/moment/locale/ka.js | 102 + www/bower_components/moment/locale/kk.js | 87 + www/bower_components/moment/locale/km.js | 57 + www/bower_components/moment/locale/ko.js | 67 + www/bower_components/moment/locale/ky.js | 88 + www/bower_components/moment/locale/lb.js | 133 + www/bower_components/moment/locale/lo.js | 70 + www/bower_components/moment/locale/lt.js | 114 + www/bower_components/moment/locale/lv.js | 78 + www/bower_components/moment/locale/me.js | 111 + www/bower_components/moment/locale/mk.js | 89 + www/bower_components/moment/locale/ml.js | 70 + www/bower_components/moment/locale/mr.js | 120 + www/bower_components/moment/locale/ms-my.js | 81 + www/bower_components/moment/locale/ms.js | 82 + www/bower_components/moment/locale/my.js | 91 + www/bower_components/moment/locale/nb.js | 60 + www/bower_components/moment/locale/ne.js | 122 + www/bower_components/moment/locale/nl.js | 70 + www/bower_components/moment/locale/nn.js | 59 + www/bower_components/moment/locale/pa-in.js | 124 + www/bower_components/moment/locale/pl.js | 99 + www/bower_components/moment/locale/pt-br.js | 59 + www/bower_components/moment/locale/pt.js | 63 + www/bower_components/moment/locale/ro.js | 73 + www/bower_components/moment/locale/ru.js | 163 + www/bower_components/moment/locale/se.js | 61 + www/bower_components/moment/locale/si.js | 71 + www/bower_components/moment/locale/sk.js | 157 + www/bower_components/moment/locale/sl.js | 146 + www/bower_components/moment/locale/sq.js | 68 + www/bower_components/moment/locale/sr-cyrl.js | 107 + www/bower_components/moment/locale/sr.js | 107 + www/bower_components/moment/locale/ss.js | 89 + www/bower_components/moment/locale/sv.js | 66 + www/bower_components/moment/locale/sw.js | 59 + www/bower_components/moment/locale/ta.js | 94 + www/bower_components/moment/locale/te.js | 89 + www/bower_components/moment/locale/th.js | 64 + www/bower_components/moment/locale/tl-ph.js | 61 + www/bower_components/moment/locale/tlh.js | 120 + www/bower_components/moment/locale/tr.js | 89 + www/bower_components/moment/locale/tzl.js | 91 + .../moment/locale/tzm-latn.js | 57 + www/bower_components/moment/locale/tzm.js | 57 + www/bower_components/moment/locale/uk.js | 152 + www/bower_components/moment/locale/uz.js | 57 + www/bower_components/moment/locale/vi.js | 65 + .../moment/locale/x-pseudo.js | 68 + www/bower_components/moment/locale/zh-cn.js | 126 + www/bower_components/moment/locale/zh-tw.js | 100 + www/bower_components/moment/meteor/README.md | 25 + www/bower_components/moment/meteor/export.js | 3 + www/bower_components/moment/meteor/test.js | 5 + www/bower_components/moment/min/locales.js | 6372 +++ .../moment/min/locales.min.js | 77 + .../moment/min/moment-with-locales.js | 9449 ++++ .../moment/min/moment-with-locales.min.js | 79 + www/bower_components/moment/min/moment.min.js | 7 + www/bower_components/moment/min/tests.js | 38220 ++++++++++++++++ www/bower_components/moment/moment.d.ts | 536 + www/bower_components/moment/moment.js | 3083 ++ .../moment/scripts/npm_prepublish.sh | 43 + .../moment/src/lib/create/check-overflow.js | 27 + .../moment/src/lib/create/date-from-array.js | 19 + .../src/lib/create/default-parsing-flags.js | 15 + .../moment/src/lib/create/from-anything.js | 93 + .../moment/src/lib/create/from-array.js | 123 + .../moment/src/lib/create/from-object.js | 13 + .../src/lib/create/from-string-and-array.js | 51 + .../src/lib/create/from-string-and-format.js | 99 + .../moment/src/lib/create/from-string.js | 82 + .../moment/src/lib/create/local.js | 5 + .../moment/src/lib/create/parsing-flags.js | 24 + .../moment/src/lib/create/utc.js | 5 + .../moment/src/lib/create/valid.js | 34 + .../moment/src/lib/duration/abs.js | 18 + .../moment/src/lib/duration/add-subtract.js | 21 + .../moment/src/lib/duration/as.js | 55 + .../moment/src/lib/duration/bubble.js | 54 + .../moment/src/lib/duration/constructor.js | 41 + .../moment/src/lib/duration/create.js | 113 + .../moment/src/lib/duration/duration.js | 12 + .../moment/src/lib/duration/get.js | 25 + .../moment/src/lib/duration/humanize.js | 64 + .../moment/src/lib/duration/iso-string.js | 28 + .../moment/src/lib/duration/prototype.js | 48 + .../moment/src/lib/format/format.js | 95 + .../moment/src/lib/locale/base-config.js | 44 + .../moment/src/lib/locale/calendar.js | 13 + .../moment/src/lib/locale/constructor.js | 2 + .../moment/src/lib/locale/en.js | 15 + .../moment/src/lib/locale/formats.js | 19 + .../moment/src/lib/locale/invalid.js | 5 + .../moment/src/lib/locale/lists.js | 48 + .../moment/src/lib/locale/locale.js | 35 + .../moment/src/lib/locale/locales.js | 119 + .../moment/src/lib/locale/ordinal.js | 7 + .../moment/src/lib/locale/pre-post-format.js | 3 + .../moment/src/lib/locale/prototype.js | 70 + .../moment/src/lib/locale/relative.js | 27 + .../moment/src/lib/locale/set.js | 14 + .../moment/src/lib/moment/add-subtract.js | 46 + .../moment/src/lib/moment/calendar.js | 17 + .../moment/src/lib/moment/clone.js | 5 + .../moment/src/lib/moment/compare.js | 43 + .../moment/src/lib/moment/constructor.js | 72 + .../moment/src/lib/moment/creation-data.js | 9 + .../moment/src/lib/moment/diff.js | 49 + .../moment/src/lib/moment/format.js | 27 + .../moment/src/lib/moment/from.js | 10 + .../moment/src/lib/moment/get-set.js | 39 + .../moment/src/lib/moment/locale.js | 34 + .../moment/src/lib/moment/min-max.js | 54 + .../moment/src/lib/moment/moment.js | 26 + .../moment/src/lib/moment/now.js | 3 + .../moment/src/lib/moment/prototype.js | 141 + .../moment/src/lib/moment/start-end-of.js | 52 + .../moment/src/lib/moment/to-type.js | 16 + .../moment/src/lib/moment/to.js | 17 + .../moment/src/lib/moment/valid.js | 14 + .../moment/src/lib/parse/regex.js | 44 + .../moment/src/lib/parse/token.js | 32 + .../moment/src/lib/units/aliases.js | 29 + .../moment/src/lib/units/constants.js | 7 + .../moment/src/lib/units/day-of-month.js | 32 + .../moment/src/lib/units/day-of-week.js | 133 + .../moment/src/lib/units/day-of-year.js | 49 + .../moment/src/lib/units/hour.js | 76 + .../moment/src/lib/units/millisecond.js | 42 + .../moment/src/lib/units/minute.js | 24 + .../moment/src/lib/units/month.js | 128 + .../moment/src/lib/units/offset.js | 206 + .../moment/src/lib/units/priorities.js | 16 + .../moment/src/lib/units/quarter.js | 27 + .../moment/src/lib/units/second.js | 24 + .../moment/src/lib/units/timestamp.js | 20 + .../moment/src/lib/units/timezone.js | 16 + .../moment/src/lib/units/units.js | 20 + .../src/lib/units/week-calendar-utils.js | 65 + .../moment/src/lib/units/week-year.js | 78 + .../moment/src/lib/units/week.js | 88 + .../moment/src/lib/units/year.js | 60 + .../moment/src/lib/utils/abs-ceil.js | 7 + .../moment/src/lib/utils/abs-floor.js | 7 + .../moment/src/lib/utils/abs-round.js | 7 + .../moment/src/lib/utils/compare-arrays.js | 16 + .../moment/src/lib/utils/defaults.js | 10 + .../moment/src/lib/utils/deprecate.js | 31 + .../moment/src/lib/utils/extend.js | 19 + .../moment/src/lib/utils/has-own-prop.js | 3 + .../moment/src/lib/utils/hooks.js | 13 + .../moment/src/lib/utils/index-of.js | 18 + .../moment/src/lib/utils/is-array.js | 3 + .../moment/src/lib/utils/is-date.js | 3 + .../moment/src/lib/utils/is-function.js | 3 + .../moment/src/lib/utils/is-object-empty.js | 8 + .../moment/src/lib/utils/is-object.js | 3 + .../moment/src/lib/utils/is-undefined.js | 3 + .../moment/src/lib/utils/keys.js | 19 + .../moment/src/lib/utils/map.js | 7 + .../moment/src/lib/utils/some.js | 19 + .../moment/src/lib/utils/to-int.js | 14 + .../moment/src/lib/utils/zero-fill.js | 9 + www/bower_components/moment/src/locale/af.js | 63 + .../moment/src/locale/ar-ma.js | 50 + .../moment/src/locale/ar-sa.js | 94 + .../moment/src/locale/ar-tn.js | 48 + www/bower_components/moment/src/locale/ar.js | 127 + www/bower_components/moment/src/locale/az.js | 95 + www/bower_components/moment/src/locale/be.js | 138 + www/bower_components/moment/src/locale/bg.js | 81 + www/bower_components/moment/src/locale/bn.js | 104 + www/bower_components/moment/src/locale/bo.js | 101 + www/bower_components/moment/src/locale/br.js | 98 + www/bower_components/moment/src/locale/bs.js | 132 + www/bower_components/moment/src/locale/ca.js | 70 + www/bower_components/moment/src/locale/cs.js | 148 + www/bower_components/moment/src/locale/cv.js | 54 + www/bower_components/moment/src/locale/cy.js | 70 + www/bower_components/moment/src/locale/da.js | 51 + .../moment/src/locale/de-at.js | 67 + www/bower_components/moment/src/locale/de.js | 66 + www/bower_components/moment/src/locale/dv.js | 89 + www/bower_components/moment/src/locale/el.js | 85 + .../moment/src/locale/en-au.js | 57 + .../moment/src/locale/en-ca.js | 54 + .../moment/src/locale/en-gb.js | 58 + .../moment/src/locale/en-ie.js | 58 + .../moment/src/locale/en-nz.js | 56 + www/bower_components/moment/src/locale/eo.js | 64 + .../moment/src/locale/es-do.js | 71 + www/bower_components/moment/src/locale/es.js | 70 + www/bower_components/moment/src/locale/et.js | 71 + www/bower_components/moment/src/locale/eu.js | 55 + www/bower_components/moment/src/locale/fa.js | 96 + www/bower_components/moment/src/locale/fi.js | 98 + www/bower_components/moment/src/locale/fo.js | 51 + .../moment/src/locale/fr-ca.js | 49 + .../moment/src/locale/fr-ch.js | 55 + www/bower_components/moment/src/locale/fr.js | 53 + www/bower_components/moment/src/locale/fy.js | 62 + www/bower_components/moment/src/locale/gd.js | 67 + www/bower_components/moment/src/locale/gl.js | 66 + www/bower_components/moment/src/locale/he.js | 73 + www/bower_components/moment/src/locale/hi.js | 114 + www/bower_components/moment/src/locale/hr.js | 131 + www/bower_components/moment/src/locale/hu.js | 100 + .../moment/src/locale/hy-am.js | 102 + www/bower_components/moment/src/locale/id.js | 74 + www/bower_components/moment/src/locale/is.js | 118 + www/bower_components/moment/src/locale/it.js | 61 + www/bower_components/moment/src/locale/ja.js | 56 + www/bower_components/moment/src/locale/jv.js | 73 + www/bower_components/moment/src/locale/ka.js | 94 + www/bower_components/moment/src/locale/kk.js | 77 + www/bower_components/moment/src/locale/km.js | 49 + www/bower_components/moment/src/locale/ko.js | 59 + www/bower_components/moment/src/locale/ky.js | 78 + www/bower_components/moment/src/locale/lb.js | 125 + www/bower_components/moment/src/locale/lo.js | 61 + www/bower_components/moment/src/locale/lt.js | 106 + www/bower_components/moment/src/locale/lv.js | 70 + www/bower_components/moment/src/locale/me.js | 101 + www/bower_components/moment/src/locale/mk.js | 81 + www/bower_components/moment/src/locale/ml.js | 62 + www/bower_components/moment/src/locale/mr.js | 112 + .../moment/src/locale/ms-my.js | 73 + www/bower_components/moment/src/locale/ms.js | 73 + www/bower_components/moment/src/locale/my.js | 83 + www/bower_components/moment/src/locale/nb.js | 52 + www/bower_components/moment/src/locale/ne.js | 114 + www/bower_components/moment/src/locale/nl.js | 62 + www/bower_components/moment/src/locale/nn.js | 51 + .../moment/src/locale/pa-in.js | 115 + www/bower_components/moment/src/locale/pl.js | 91 + .../moment/src/locale/pt-br.js | 51 + www/bower_components/moment/src/locale/pt.js | 55 + www/bower_components/moment/src/locale/ro.js | 65 + www/bower_components/moment/src/locale/ru.js | 155 + www/bower_components/moment/src/locale/se.js | 51 + www/bower_components/moment/src/locale/si.js | 61 + www/bower_components/moment/src/locale/sk.js | 149 + www/bower_components/moment/src/locale/sl.js | 138 + www/bower_components/moment/src/locale/sq.js | 60 + .../moment/src/locale/sr-cyrl.js | 99 + www/bower_components/moment/src/locale/sr.js | 99 + www/bower_components/moment/src/locale/ss.js | 80 + www/bower_components/moment/src/locale/sv.js | 58 + www/bower_components/moment/src/locale/sw.js | 50 + www/bower_components/moment/src/locale/ta.js | 86 + www/bower_components/moment/src/locale/te.js | 79 + www/bower_components/moment/src/locale/th.js | 56 + .../moment/src/locale/tl-ph.js | 53 + www/bower_components/moment/src/locale/tlh.js | 110 + www/bower_components/moment/src/locale/tr.js | 81 + www/bower_components/moment/src/locale/tzl.js | 82 + .../moment/src/locale/tzm-latn.js | 49 + www/bower_components/moment/src/locale/tzm.js | 49 + www/bower_components/moment/src/locale/uk.js | 144 + www/bower_components/moment/src/locale/uz.js | 49 + www/bower_components/moment/src/locale/vi.js | 57 + .../moment/src/locale/x-pseudo.js | 58 + .../moment/src/locale/zh-cn.js | 118 + .../moment/src/locale/zh-tw.js | 92 + www/bower_components/moment/src/moment.js | 68 + .../moment/templates/amd-named.js | 7 + www/bower_components/moment/templates/amd.js | 7 + .../moment/templates/default.js | 5 + .../moment/templates/globals.js | 5 + .../moment/templates/locale-header.js | 5 + .../moment/templates/test-header.js | 5 + www/bower_components/typeahead.js/.bower.json | 24 + www/bower_components/typeahead.js/.gitignore | 16 + www/bower_components/typeahead.js/.jshintrc | 16 + www/bower_components/typeahead.js/.travis.yml | 29 + .../typeahead.js/CHANGELOG.md | 249 + .../typeahead.js/CONTRIBUTING.md | 120 + .../typeahead.js/Gruntfile.js | 330 + www/bower_components/typeahead.js/LICENSE | 19 + www/bower_components/typeahead.js/README.md | 188 + www/bower_components/typeahead.js/bower.json | 13 + .../typeahead.js/composer.json | 17 + .../typeahead.js/dist/bloodhound.js | 918 + .../typeahead.js/dist/bloodhound.min.js | 7 + .../typeahead.js/dist/typeahead.bundle.js | 2451 + .../typeahead.js/dist/typeahead.bundle.min.js | 8 + .../typeahead.js/dist/typeahead.jquery.js | 1538 + .../typeahead.js/dist/typeahead.jquery.min.js | 7 + .../typeahead.js/doc/bloodhound.md | 277 + .../typeahead.js/doc/jquery_typeahead.md | 288 + .../typeahead.js/doc/migration/0.10.0.md | 234 + .../typeahead.js/karma.conf.js | 50 + .../typeahead.js/package.json | 68 + .../typeahead.js/src/bloodhound/bloodhound.js | 192 + .../typeahead.js/src/bloodhound/lru_cache.js | 101 + .../src/bloodhound/options_parser.js | 195 + .../src/bloodhound/persistent_storage.js | 147 + .../typeahead.js/src/bloodhound/prefetch.js | 91 + .../typeahead.js/src/bloodhound/remote.js | 58 + .../src/bloodhound/search_index.js | 191 + .../typeahead.js/src/bloodhound/tokenizers.js | 44 + .../typeahead.js/src/bloodhound/transport.js | 130 + .../typeahead.js/src/bloodhound/version.js | 7 + .../typeahead.js/src/common/utils.js | 164 + .../typeahead.js/src/typeahead/dataset.js | 330 + .../src/typeahead/default_menu.js | 75 + .../typeahead.js/src/typeahead/event_bus.js | 78 + .../src/typeahead/event_emitter.js | 119 + .../typeahead.js/src/typeahead/highlight.js | 84 + .../typeahead.js/src/typeahead/input.js | 339 + .../typeahead.js/src/typeahead/menu.js | 217 + .../typeahead.js/src/typeahead/plugin.js | 291 + .../typeahead.js/src/typeahead/typeahead.js | 438 + .../typeahead.js/src/typeahead/www.js | 113 + .../test/bloodhound/bloodhound_spec.js | 299 + .../test/bloodhound/lru_cache_spec.js | 43 + .../test/bloodhound/options_parser_spec.js | 194 + .../bloodhound/persistent_storage_spec.js | 194 + .../test/bloodhound/prefetch_spec.js | 182 + .../test/bloodhound/remote_spec.js | 73 + .../test/bloodhound/search_index_spec.js | 72 + .../test/bloodhound/tokenizers_spec.js | 74 + .../test/bloodhound/transport_spec.js | 175 + www/bower_components/typeahead.js/test/ci | 12 + .../test/fixtures/ajax_responses.js | 19 + .../typeahead.js/test/fixtures/data.js | 128 + .../typeahead.js/test/fixtures/html.js | 13 + .../test/helpers/typeahead_mocks.js | 78 + .../typeahead.js/test/integration/test.html | 108 + .../typeahead.js/test/integration/test.js | 395 + .../typeahead.js/test/playground.html | 346 + .../test/typeahead/dataset_spec.js | 469 + .../test/typeahead/default_results_spec.js | 103 + .../test/typeahead/event_bus_spec.js | 42 + .../test/typeahead/event_emitter_spec.js | 111 + .../test/typeahead/highlight_spec.js | 117 + .../typeahead.js/test/typeahead/input_spec.js | 538 + .../test/typeahead/plugin_spec.js | 197 + .../test/typeahead/results_spec.js | 332 + .../test/typeahead/typeahead_spec.js | 1412 + .../typeahead.js/typeahead.js.jquery.json | 40 + www/css/_map.scss | 125 + www/css/_shop.scss | 129 + www/css/bs3_variables.less | 872 + www/css/lemonway.scss | 40 + www/css/print.scss | 57 + www/css/style.scss | 1145 + www/favicon.ico | Bin 0 -> 1150 bytes www/fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes www/fonts/glyphicons-halflings-regular.svg | 288 + www/fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes www/fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes www/fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes www/img/AB.png | Bin 0 -> 3955 bytes www/img/AMAPéi-micro.png | Bin 0 -> 27907 bytes www/img/alilo-trans-black.png | Bin 0 -> 2180 bytes www/img/alilo-trans-white.png | Bin 0 -> 1985 bytes www/img/facebook-16.png | Bin 0 -> 927 bytes www/img/facebook-32.png | Bin 0 -> 991 bytes www/img/go.png | Bin 0 -> 2378 bytes www/img/home.svg | 37 + www/img/home2.svg | 37 + www/img/icons/Thumbs.db | Bin 0 -> 1093632 bytes www/img/icons/accept.png | Bin 0 -> 781 bytes www/img/icons/add.png | Bin 0 -> 733 bytes www/img/icons/anchor.png | Bin 0 -> 523 bytes www/img/icons/application.png | Bin 0 -> 464 bytes www/img/icons/application_add.png | Bin 0 -> 619 bytes www/img/icons/application_cascade.png | Bin 0 -> 524 bytes www/img/icons/application_delete.png | Bin 0 -> 610 bytes www/img/icons/application_double.png | Bin 0 -> 533 bytes www/img/icons/application_edit.png | Bin 0 -> 703 bytes www/img/icons/application_error.png | Bin 0 -> 656 bytes www/img/icons/application_form.png | Bin 0 -> 467 bytes www/img/icons/application_form_add.png | Bin 0 -> 592 bytes www/img/icons/application_form_delete.png | Bin 0 -> 605 bytes www/img/icons/application_form_edit.png | Bin 0 -> 714 bytes www/img/icons/application_form_magnify.png | Bin 0 -> 612 bytes www/img/icons/application_get.png | Bin 0 -> 581 bytes www/img/icons/application_go.png | Bin 0 -> 634 bytes www/img/icons/application_home.png | Bin 0 -> 685 bytes www/img/icons/application_key.png | Bin 0 -> 670 bytes www/img/icons/application_lightning.png | Bin 0 -> 656 bytes www/img/icons/application_link.png | Bin 0 -> 701 bytes www/img/icons/application_osx.png | Bin 0 -> 487 bytes www/img/icons/application_osx_terminal.png | Bin 0 -> 525 bytes www/img/icons/application_put.png | Bin 0 -> 585 bytes www/img/icons/application_side_boxes.png | Bin 0 -> 478 bytes www/img/icons/application_side_contract.png | Bin 0 -> 547 bytes www/img/icons/application_side_expand.png | Bin 0 -> 581 bytes www/img/icons/application_side_list.png | Bin 0 -> 510 bytes www/img/icons/application_side_tree.png | Bin 0 -> 483 bytes www/img/icons/application_split.png | Bin 0 -> 520 bytes www/img/icons/application_tile_horizontal.png | Bin 0 -> 432 bytes www/img/icons/application_tile_vertical.png | Bin 0 -> 492 bytes www/img/icons/application_view_columns.png | Bin 0 -> 493 bytes www/img/icons/application_view_detail.png | Bin 0 -> 576 bytes www/img/icons/application_view_gallery.png | Bin 0 -> 555 bytes www/img/icons/application_view_icons.png | Bin 0 -> 476 bytes www/img/icons/application_view_list.png | Bin 0 -> 473 bytes www/img/icons/application_view_tile.png | Bin 0 -> 465 bytes www/img/icons/application_xp.png | Bin 0 -> 426 bytes www/img/icons/application_xp_terminal.png | Bin 0 -> 507 bytes www/img/icons/arrow_branch.png | Bin 0 -> 582 bytes www/img/icons/arrow_divide.png | Bin 0 -> 677 bytes www/img/icons/arrow_down.png | Bin 0 -> 379 bytes www/img/icons/arrow_in.png | Bin 0 -> 600 bytes www/img/icons/arrow_inout.png | Bin 0 -> 551 bytes www/img/icons/arrow_join.png | Bin 0 -> 626 bytes www/img/icons/arrow_left.png | Bin 0 -> 345 bytes www/img/icons/arrow_merge.png | Bin 0 -> 484 bytes www/img/icons/arrow_out.png | Bin 0 -> 594 bytes www/img/icons/arrow_redo.png | Bin 0 -> 625 bytes www/img/icons/arrow_refresh.png | Bin 0 -> 685 bytes www/img/icons/arrow_refresh_small.png | Bin 0 -> 506 bytes www/img/icons/arrow_right.png | Bin 0 -> 349 bytes www/img/icons/arrow_rotate_anticlockwise.png | Bin 0 -> 608 bytes www/img/icons/arrow_rotate_clockwise.png | Bin 0 -> 602 bytes www/img/icons/arrow_switch.png | Bin 0 -> 683 bytes www/img/icons/arrow_turn_left.png | Bin 0 -> 516 bytes www/img/icons/arrow_turn_right.png | Bin 0 -> 489 bytes www/img/icons/arrow_undo.png | Bin 0 -> 631 bytes www/img/icons/arrow_up.png | Bin 0 -> 372 bytes www/img/icons/asterisk_orange.png | Bin 0 -> 760 bytes www/img/icons/asterisk_yellow.png | Bin 0 -> 743 bytes www/img/icons/attach.png | Bin 0 -> 391 bytes www/img/icons/award_star_add.png | Bin 0 -> 853 bytes www/img/icons/award_star_bronze_1.png | Bin 0 -> 733 bytes www/img/icons/award_star_bronze_2.png | Bin 0 -> 755 bytes www/img/icons/award_star_bronze_3.png | Bin 0 -> 754 bytes www/img/icons/award_star_delete.png | Bin 0 -> 849 bytes www/img/icons/award_star_gold_1.png | Bin 0 -> 753 bytes www/img/icons/award_star_gold_2.png | Bin 0 -> 770 bytes www/img/icons/award_star_gold_3.png | Bin 0 -> 781 bytes www/img/icons/award_star_silver_1.png | Bin 0 -> 714 bytes www/img/icons/award_star_silver_2.png | Bin 0 -> 734 bytes www/img/icons/award_star_silver_3.png | Bin 0 -> 738 bytes www/img/icons/basket.png | Bin 0 -> 669 bytes www/img/icons/basket_add.png | Bin 0 -> 752 bytes www/img/icons/basket_delete.png | Bin 0 -> 773 bytes www/img/icons/basket_edit.png | Bin 0 -> 811 bytes www/img/icons/basket_error.png | Bin 0 -> 794 bytes www/img/icons/basket_go.png | Bin 0 -> 777 bytes www/img/icons/basket_put.png | Bin 0 -> 733 bytes www/img/icons/basket_remove.png | Bin 0 -> 738 bytes www/img/icons/bell.png | Bin 0 -> 789 bytes www/img/icons/bell_add.png | Bin 0 -> 816 bytes www/img/icons/bell_delete.png | Bin 0 -> 824 bytes www/img/icons/bell_error.png | Bin 0 -> 813 bytes www/img/icons/bell_go.png | Bin 0 -> 836 bytes www/img/icons/bell_link.png | Bin 0 -> 850 bytes www/img/icons/bin.png | Bin 0 -> 476 bytes www/img/icons/bin_closed.png | Bin 0 -> 363 bytes www/img/icons/bin_empty.png | Bin 0 -> 475 bytes www/img/icons/bomb.png | Bin 0 -> 793 bytes www/img/icons/book.png | Bin 0 -> 593 bytes www/img/icons/book_add.png | Bin 0 -> 714 bytes www/img/icons/book_addresses.png | Bin 0 -> 770 bytes www/img/icons/book_delete.png | Bin 0 -> 719 bytes www/img/icons/book_edit.png | Bin 0 -> 813 bytes www/img/icons/book_error.png | Bin 0 -> 734 bytes www/img/icons/book_go.png | Bin 0 -> 745 bytes www/img/icons/book_key.png | Bin 0 -> 779 bytes www/img/icons/book_link.png | Bin 0 -> 789 bytes www/img/icons/book_next.png | Bin 0 -> 702 bytes www/img/icons/book_open.png | Bin 0 -> 622 bytes www/img/icons/book_previous.png | Bin 0 -> 680 bytes www/img/icons/box.png | Bin 0 -> 555 bytes www/img/icons/brick.png | Bin 0 -> 452 bytes www/img/icons/brick_add.png | Bin 0 -> 729 bytes www/img/icons/brick_delete.png | Bin 0 -> 745 bytes www/img/icons/brick_edit.png | Bin 0 -> 775 bytes www/img/icons/brick_error.png | Bin 0 -> 798 bytes www/img/icons/brick_go.png | Bin 0 -> 790 bytes www/img/icons/brick_link.png | Bin 0 -> 764 bytes www/img/icons/bricks.png | Bin 0 -> 825 bytes www/img/icons/briefcase.png | Bin 0 -> 793 bytes www/img/icons/bug.png | Bin 0 -> 774 bytes www/img/icons/bug_add.png | Bin 0 -> 806 bytes www/img/icons/bug_delete.png | Bin 0 -> 836 bytes www/img/icons/bug_edit.png | Bin 0 -> 873 bytes www/img/icons/bug_error.png | Bin 0 -> 841 bytes www/img/icons/bug_go.png | Bin 0 -> 831 bytes www/img/icons/bug_link.png | Bin 0 -> 847 bytes www/img/icons/building.png | Bin 0 -> 556 bytes www/img/icons/building_add.png | Bin 0 -> 631 bytes www/img/icons/building_delete.png | Bin 0 -> 633 bytes www/img/icons/building_edit.png | Bin 0 -> 731 bytes www/img/icons/building_error.png | Bin 0 -> 653 bytes www/img/icons/building_go.png | Bin 0 -> 665 bytes www/img/icons/building_key.png | Bin 0 -> 705 bytes www/img/icons/building_link.png | Bin 0 -> 668 bytes www/img/icons/bullet_add.png | Bin 0 -> 286 bytes www/img/icons/bullet_arrow_bottom.png | Bin 0 -> 229 bytes www/img/icons/bullet_arrow_down.png | Bin 0 -> 201 bytes www/img/icons/bullet_arrow_top.png | Bin 0 -> 230 bytes www/img/icons/bullet_arrow_up.png | Bin 0 -> 201 bytes www/img/icons/bullet_black.png | Bin 0 -> 211 bytes www/img/icons/bullet_blue.png | Bin 0 -> 289 bytes www/img/icons/bullet_delete.png | Bin 0 -> 308 bytes www/img/icons/bullet_disk.png | Bin 0 -> 483 bytes www/img/icons/bullet_error.png | Bin 0 -> 454 bytes www/img/icons/bullet_feed.png | Bin 0 -> 262 bytes www/img/icons/bullet_go.png | Bin 0 -> 410 bytes www/img/icons/bullet_green.png | Bin 0 -> 295 bytes www/img/icons/bullet_key.png | Bin 0 -> 436 bytes www/img/icons/bullet_orange.png | Bin 0 -> 283 bytes www/img/icons/bullet_picture.png | Bin 0 -> 470 bytes www/img/icons/bullet_pink.png | Bin 0 -> 286 bytes www/img/icons/bullet_purple.png | Bin 0 -> 294 bytes www/img/icons/bullet_red.png | Bin 0 -> 287 bytes www/img/icons/bullet_star.png | Bin 0 -> 331 bytes www/img/icons/bullet_toggle_minus.png | Bin 0 -> 207 bytes www/img/icons/bullet_toggle_plus.png | Bin 0 -> 209 bytes www/img/icons/bullet_white.png | Bin 0 -> 201 bytes www/img/icons/bullet_wrench.png | Bin 0 -> 448 bytes www/img/icons/bullet_yellow.png | Bin 0 -> 287 bytes www/img/icons/cake.png | Bin 0 -> 676 bytes www/img/icons/calculator.png | Bin 0 -> 543 bytes www/img/icons/calculator_add.png | Bin 0 -> 660 bytes www/img/icons/calculator_delete.png | Bin 0 -> 692 bytes www/img/icons/calculator_edit.png | Bin 0 -> 767 bytes www/img/icons/calculator_error.png | Bin 0 -> 731 bytes www/img/icons/calculator_link.png | Bin 0 -> 723 bytes www/img/icons/calendar.png | Bin 0 -> 675 bytes www/img/icons/calendar_add.png | Bin 0 -> 723 bytes www/img/icons/calendar_delete.png | Bin 0 -> 742 bytes www/img/icons/calendar_edit.png | Bin 0 -> 777 bytes www/img/icons/calendar_link.png | Bin 0 -> 795 bytes www/img/icons/calendar_view_day.png | Bin 0 -> 572 bytes www/img/icons/calendar_view_month.png | Bin 0 -> 595 bytes www/img/icons/calendar_view_week.png | Bin 0 -> 480 bytes www/img/icons/camera.png | Bin 0 -> 665 bytes www/img/icons/camera_add.png | Bin 0 -> 800 bytes www/img/icons/camera_delete.png | Bin 0 -> 797 bytes www/img/icons/camera_edit.png | Bin 0 -> 872 bytes www/img/icons/camera_error.png | Bin 0 -> 835 bytes www/img/icons/camera_go.png | Bin 0 -> 809 bytes www/img/icons/camera_link.png | Bin 0 -> 839 bytes www/img/icons/camera_small.png | Bin 0 -> 489 bytes www/img/icons/cancel.png | Bin 0 -> 587 bytes www/img/icons/car.png | Bin 0 -> 610 bytes www/img/icons/car_add.png | Bin 0 -> 677 bytes www/img/icons/car_delete.png | Bin 0 -> 689 bytes www/img/icons/cart.png | Bin 0 -> 421 bytes www/img/icons/cart_add.png | Bin 0 -> 711 bytes www/img/icons/cart_delete.png | Bin 0 -> 742 bytes www/img/icons/cart_edit.png | Bin 0 -> 789 bytes www/img/icons/cart_error.png | Bin 0 -> 790 bytes www/img/icons/cart_go.png | Bin 0 -> 763 bytes www/img/icons/cart_put.png | Bin 0 -> 763 bytes www/img/icons/cart_remove.png | Bin 0 -> 769 bytes www/img/icons/cd.png | Bin 0 -> 673 bytes www/img/icons/cd_add.png | Bin 0 -> 758 bytes www/img/icons/cd_burn.png | Bin 0 -> 756 bytes www/img/icons/cd_delete.png | Bin 0 -> 767 bytes www/img/icons/cd_edit.png | Bin 0 -> 790 bytes www/img/icons/cd_eject.png | Bin 0 -> 786 bytes www/img/icons/cd_go.png | Bin 0 -> 793 bytes www/img/icons/chart_bar.png | Bin 0 -> 541 bytes www/img/icons/chart_bar_add.png | Bin 0 -> 626 bytes www/img/icons/chart_bar_delete.png | Bin 0 -> 636 bytes www/img/icons/chart_bar_edit.png | Bin 0 -> 754 bytes www/img/icons/chart_bar_error.png | Bin 0 -> 671 bytes www/img/icons/chart_bar_link.png | Bin 0 -> 712 bytes www/img/icons/chart_curve.png | Bin 0 -> 710 bytes www/img/icons/chart_curve_add.png | Bin 0 -> 761 bytes www/img/icons/chart_curve_delete.png | Bin 0 -> 782 bytes www/img/icons/chart_curve_edit.png | Bin 0 -> 822 bytes www/img/icons/chart_curve_error.png | Bin 0 -> 837 bytes www/img/icons/chart_curve_go.png | Bin 0 -> 823 bytes www/img/icons/chart_curve_link.png | Bin 0 -> 829 bytes www/img/icons/chart_line.png | Bin 0 -> 526 bytes www/img/icons/chart_line_add.png | Bin 0 -> 655 bytes www/img/icons/chart_line_delete.png | Bin 0 -> 675 bytes www/img/icons/chart_line_edit.png | Bin 0 -> 718 bytes www/img/icons/chart_line_error.png | Bin 0 -> 741 bytes www/img/icons/chart_line_link.png | Bin 0 -> 749 bytes www/img/icons/chart_organisation.png | Bin 0 -> 444 bytes www/img/icons/chart_organisation_add.png | Bin 0 -> 551 bytes www/img/icons/chart_organisation_delete.png | Bin 0 -> 563 bytes www/img/icons/chart_pie.png | Bin 0 -> 918 bytes www/img/icons/chart_pie_add.png | Bin 0 -> 975 bytes www/img/icons/chart_pie_delete.png | Bin 0 -> 983 bytes www/img/icons/chart_pie_edit.png | Bin 0 -> 986 bytes www/img/icons/chart_pie_error.png | Bin 0 -> 989 bytes www/img/icons/chart_pie_link.png | Bin 0 -> 1021 bytes www/img/icons/clock.png | Bin 0 -> 882 bytes www/img/icons/clock_add.png | Bin 0 -> 925 bytes www/img/icons/clock_delete.png | Bin 0 -> 952 bytes www/img/icons/clock_edit.png | Bin 0 -> 967 bytes www/img/icons/clock_error.png | Bin 0 -> 953 bytes www/img/icons/clock_go.png | Bin 0 -> 959 bytes www/img/icons/clock_link.png | Bin 0 -> 961 bytes www/img/icons/clock_pause.png | Bin 0 -> 927 bytes www/img/icons/clock_play.png | Bin 0 -> 943 bytes www/img/icons/clock_red.png | Bin 0 -> 889 bytes www/img/icons/clock_stop.png | Bin 0 -> 922 bytes www/img/icons/cog.png | Bin 0 -> 512 bytes www/img/icons/cog_add.png | Bin 0 -> 814 bytes www/img/icons/cog_delete.png | Bin 0 -> 847 bytes www/img/icons/cog_edit.png | Bin 0 -> 865 bytes www/img/icons/cog_error.png | Bin 0 -> 869 bytes www/img/icons/cog_go.png | Bin 0 -> 859 bytes www/img/icons/coins.png | Bin 0 -> 732 bytes www/img/icons/coins_add.png | Bin 0 -> 789 bytes www/img/icons/coins_delete.png | Bin 0 -> 775 bytes www/img/icons/color_swatch.png | Bin 0 -> 209 bytes www/img/icons/color_wheel.png | Bin 0 -> 892 bytes www/img/icons/comment.png | Bin 0 -> 413 bytes www/img/icons/comment_add.png | Bin 0 -> 530 bytes www/img/icons/comment_delete.png | Bin 0 -> 548 bytes www/img/icons/comment_edit.png | Bin 0 -> 644 bytes www/img/icons/comments.png | Bin 0 -> 557 bytes www/img/icons/comments_add.png | Bin 0 -> 648 bytes www/img/icons/comments_delete.png | Bin 0 -> 670 bytes www/img/icons/compress.png | Bin 0 -> 766 bytes www/img/icons/computer.png | Bin 0 -> 667 bytes www/img/icons/computer_add.png | Bin 0 -> 781 bytes www/img/icons/computer_delete.png | Bin 0 -> 775 bytes www/img/icons/computer_edit.png | Bin 0 -> 792 bytes www/img/icons/computer_error.png | Bin 0 -> 784 bytes www/img/icons/computer_go.png | Bin 0 -> 777 bytes www/img/icons/computer_key.png | Bin 0 -> 771 bytes www/img/icons/computer_link.png | Bin 0 -> 792 bytes www/img/icons/connect.png | Bin 0 -> 748 bytes www/img/icons/contrast.png | Bin 0 -> 434 bytes www/img/icons/contrast_decrease.png | Bin 0 -> 695 bytes www/img/icons/contrast_high.png | Bin 0 -> 435 bytes www/img/icons/contrast_increase.png | Bin 0 -> 717 bytes www/img/icons/contrast_low.png | Bin 0 -> 421 bytes www/img/icons/control_eject.png | Bin 0 -> 603 bytes www/img/icons/control_eject_blue.png | Bin 0 -> 727 bytes www/img/icons/control_end.png | Bin 0 -> 621 bytes www/img/icons/control_end_blue.png | Bin 0 -> 737 bytes www/img/icons/control_equalizer.png | Bin 0 -> 432 bytes www/img/icons/control_equalizer_blue.png | Bin 0 -> 764 bytes www/img/icons/control_fastforward.png | Bin 0 -> 607 bytes www/img/icons/control_fastforward_blue.png | Bin 0 -> 736 bytes www/img/icons/control_pause.png | Bin 0 -> 598 bytes www/img/icons/control_pause_blue.png | Bin 0 -> 721 bytes www/img/icons/control_play.png | Bin 0 -> 592 bytes www/img/icons/control_play_blue.png | Bin 0 -> 717 bytes www/img/icons/control_repeat.png | Bin 0 -> 422 bytes www/img/icons/control_repeat_blue.png | Bin 0 -> 750 bytes www/img/icons/control_rewind.png | Bin 0 -> 614 bytes www/img/icons/control_rewind_blue.png | Bin 0 -> 745 bytes www/img/icons/control_start.png | Bin 0 -> 604 bytes www/img/icons/control_start_blue.png | Bin 0 -> 720 bytes www/img/icons/control_stop.png | Bin 0 -> 403 bytes www/img/icons/control_stop_blue.png | Bin 0 -> 695 bytes www/img/icons/controller.png | Bin 0 -> 666 bytes www/img/icons/controller_add.png | Bin 0 -> 759 bytes www/img/icons/controller_delete.png | Bin 0 -> 770 bytes www/img/icons/controller_error.png | Bin 0 -> 815 bytes www/img/icons/creditcards.png | Bin 0 -> 693 bytes www/img/icons/cross.png | Bin 0 -> 655 bytes www/img/icons/css.png | Bin 0 -> 524 bytes www/img/icons/css_add.png | Bin 0 -> 666 bytes www/img/icons/css_delete.png | Bin 0 -> 654 bytes www/img/icons/css_go.png | Bin 0 -> 655 bytes www/img/icons/css_valid.png | Bin 0 -> 661 bytes www/img/icons/cup.png | Bin 0 -> 633 bytes www/img/icons/cup_add.png | Bin 0 -> 715 bytes www/img/icons/cup_delete.png | Bin 0 -> 731 bytes www/img/icons/cup_edit.png | Bin 0 -> 778 bytes www/img/icons/cup_error.png | Bin 0 -> 790 bytes www/img/icons/cup_go.png | Bin 0 -> 780 bytes www/img/icons/cup_key.png | Bin 0 -> 776 bytes www/img/icons/cup_link.png | Bin 0 -> 760 bytes www/img/icons/cursor.png | Bin 0 -> 354 bytes www/img/icons/cut.png | Bin 0 -> 648 bytes www/img/icons/cut_red.png | Bin 0 -> 650 bytes www/img/icons/database.png | Bin 0 -> 390 bytes www/img/icons/database_add.png | Bin 0 -> 658 bytes www/img/icons/database_connect.png | Bin 0 -> 763 bytes www/img/icons/database_delete.png | Bin 0 -> 659 bytes www/img/icons/database_edit.png | Bin 0 -> 767 bytes www/img/icons/database_error.png | Bin 0 -> 682 bytes www/img/icons/database_gear.png | Bin 0 -> 468 bytes www/img/icons/database_go.png | Bin 0 -> 698 bytes www/img/icons/database_key.png | Bin 0 -> 764 bytes www/img/icons/database_lightning.png | Bin 0 -> 775 bytes www/img/icons/database_link.png | Bin 0 -> 679 bytes www/img/icons/database_refresh.png | Bin 0 -> 770 bytes www/img/icons/database_save.png | Bin 0 -> 755 bytes www/img/icons/database_table.png | Bin 0 -> 726 bytes www/img/icons/date.png | Bin 0 -> 626 bytes www/img/icons/date_add.png | Bin 0 -> 703 bytes www/img/icons/date_delete.png | Bin 0 -> 716 bytes www/img/icons/date_edit.png | Bin 0 -> 799 bytes www/img/icons/date_error.png | Bin 0 -> 753 bytes www/img/icons/date_go.png | Bin 0 -> 753 bytes www/img/icons/date_link.png | Bin 0 -> 764 bytes www/img/icons/date_magnify.png | Bin 0 -> 711 bytes www/img/icons/date_next.png | Bin 0 -> 688 bytes www/img/icons/date_previous.png | Bin 0 -> 720 bytes www/img/icons/delete.png | Bin 0 -> 715 bytes www/img/icons/disconnect.png | Bin 0 -> 796 bytes www/img/icons/disk.png | Bin 0 -> 620 bytes www/img/icons/disk_multiple.png | Bin 0 -> 691 bytes www/img/icons/door.png | Bin 0 -> 412 bytes www/img/icons/door_in.png | Bin 0 -> 693 bytes www/img/icons/door_open.png | Bin 0 -> 508 bytes www/img/icons/door_out.png | Bin 0 -> 688 bytes www/img/icons/drink.png | Bin 0 -> 692 bytes www/img/icons/drink_empty.png | Bin 0 -> 433 bytes www/img/icons/drive.png | Bin 0 -> 346 bytes www/img/icons/drive_add.png | Bin 0 -> 623 bytes www/img/icons/drive_burn.png | Bin 0 -> 608 bytes www/img/icons/drive_cd.png | Bin 0 -> 734 bytes www/img/icons/drive_cd_empty.png | Bin 0 -> 341 bytes www/img/icons/drive_delete.png | Bin 0 -> 628 bytes www/img/icons/drive_disk.png | Bin 0 -> 695 bytes www/img/icons/drive_edit.png | Bin 0 -> 714 bytes www/img/icons/drive_error.png | Bin 0 -> 705 bytes www/img/icons/drive_go.png | Bin 0 -> 661 bytes www/img/icons/drive_key.png | Bin 0 -> 681 bytes www/img/icons/drive_link.png | Bin 0 -> 679 bytes www/img/icons/drive_magnify.png | Bin 0 -> 641 bytes www/img/icons/drive_network.png | Bin 0 -> 585 bytes www/img/icons/drive_rename.png | Bin 0 -> 494 bytes www/img/icons/drive_user.png | Bin 0 -> 712 bytes www/img/icons/drive_web.png | Bin 0 -> 686 bytes www/img/icons/dvd.png | Bin 0 -> 764 bytes www/img/icons/dvd_add.png | Bin 0 -> 788 bytes www/img/icons/dvd_delete.png | Bin 0 -> 800 bytes www/img/icons/dvd_edit.png | Bin 0 -> 844 bytes www/img/icons/dvd_error.png | Bin 0 -> 854 bytes www/img/icons/dvd_go.png | Bin 0 -> 854 bytes www/img/icons/dvd_key.png | Bin 0 -> 816 bytes www/img/icons/dvd_link.png | Bin 0 -> 819 bytes www/img/icons/email.png | Bin 0 -> 641 bytes www/img/icons/email_add.png | Bin 0 -> 761 bytes www/img/icons/email_attach.png | Bin 0 -> 793 bytes www/img/icons/email_delete.png | Bin 0 -> 756 bytes www/img/icons/email_edit.png | Bin 0 -> 756 bytes www/img/icons/email_error.png | Bin 0 -> 792 bytes www/img/icons/email_go.png | Bin 0 -> 754 bytes www/img/icons/email_link.png | Bin 0 -> 821 bytes www/img/icons/email_open.png | Bin 0 -> 783 bytes www/img/icons/email_open_image.png | Bin 0 -> 811 bytes www/img/icons/emoticon_evilgrin.png | Bin 0 -> 727 bytes www/img/icons/emoticon_grin.png | Bin 0 -> 714 bytes www/img/icons/emoticon_happy.png | Bin 0 -> 731 bytes www/img/icons/emoticon_smile.png | Bin 0 -> 725 bytes www/img/icons/emoticon_surprised.png | Bin 0 -> 741 bytes www/img/icons/emoticon_tongue.png | Bin 0 -> 727 bytes www/img/icons/emoticon_unhappy.png | Bin 0 -> 723 bytes www/img/icons/emoticon_waii.png | Bin 0 -> 737 bytes www/img/icons/emoticon_wink.png | Bin 0 -> 712 bytes www/img/icons/error.png | Bin 0 -> 666 bytes www/img/icons/error_add.png | Bin 0 -> 710 bytes www/img/icons/error_delete.png | Bin 0 -> 729 bytes www/img/icons/error_go.png | Bin 0 -> 734 bytes www/img/icons/exclamation.png | Bin 0 -> 701 bytes www/img/icons/eye.png | Bin 0 -> 750 bytes www/img/icons/feed.png | Bin 0 -> 691 bytes www/img/icons/feed_add.png | Bin 0 -> 763 bytes www/img/icons/feed_delete.png | Bin 0 -> 746 bytes www/img/icons/feed_disk.png | Bin 0 -> 738 bytes www/img/icons/feed_edit.png | Bin 0 -> 801 bytes www/img/icons/feed_error.png | Bin 0 -> 770 bytes www/img/icons/feed_go.png | Bin 0 -> 761 bytes www/img/icons/feed_key.png | Bin 0 -> 771 bytes www/img/icons/feed_link.png | Bin 0 -> 806 bytes www/img/icons/feed_magnify.png | Bin 0 -> 737 bytes www/img/icons/female.png | Bin 0 -> 590 bytes www/img/icons/film.png | Bin 0 -> 653 bytes www/img/icons/film_add.png | Bin 0 -> 739 bytes www/img/icons/film_delete.png | Bin 0 -> 730 bytes www/img/icons/film_edit.png | Bin 0 -> 855 bytes www/img/icons/film_error.png | Bin 0 -> 800 bytes www/img/icons/film_go.png | Bin 0 -> 813 bytes www/img/icons/film_key.png | Bin 0 -> 835 bytes www/img/icons/film_link.png | Bin 0 -> 830 bytes www/img/icons/film_save.png | Bin 0 -> 806 bytes www/img/icons/find.png | Bin 0 -> 659 bytes www/img/icons/flag_blue.png | Bin 0 -> 671 bytes www/img/icons/flag_green.png | Bin 0 -> 672 bytes www/img/icons/flag_orange.png | Bin 0 -> 669 bytes www/img/icons/flag_pink.png | Bin 0 -> 651 bytes www/img/icons/flag_purple.png | Bin 0 -> 656 bytes www/img/icons/flag_red.png | Bin 0 -> 665 bytes www/img/icons/flag_yellow.png | Bin 0 -> 671 bytes www/img/icons/folder.png | Bin 0 -> 537 bytes www/img/icons/folder_add.png | Bin 0 -> 668 bytes www/img/icons/folder_bell.png | Bin 0 -> 781 bytes www/img/icons/folder_brick.png | Bin 0 -> 735 bytes www/img/icons/folder_bug.png | Bin 0 -> 829 bytes www/img/icons/folder_camera.png | Bin 0 -> 729 bytes www/img/icons/folder_database.png | Bin 0 -> 687 bytes www/img/icons/folder_delete.png | Bin 0 -> 666 bytes www/img/icons/folder_edit.png | Bin 0 -> 733 bytes www/img/icons/folder_error.png | Bin 0 -> 727 bytes www/img/icons/folder_explore.png | Bin 0 -> 679 bytes www/img/icons/folder_feed.png | Bin 0 -> 691 bytes www/img/icons/folder_find.png | Bin 0 -> 795 bytes www/img/icons/folder_go.png | Bin 0 -> 694 bytes www/img/icons/folder_heart.png | Bin 0 -> 741 bytes www/img/icons/folder_image.png | Bin 0 -> 677 bytes www/img/icons/folder_key.png | Bin 0 -> 720 bytes www/img/icons/folder_lightbulb.png | Bin 0 -> 741 bytes www/img/icons/folder_link.png | Bin 0 -> 785 bytes www/img/icons/folder_magnify.png | Bin 0 -> 686 bytes www/img/icons/folder_page.png | Bin 0 -> 688 bytes www/img/icons/folder_page_white.png | Bin 0 -> 639 bytes www/img/icons/folder_palette.png | Bin 0 -> 822 bytes www/img/icons/folder_picture.png | Bin 0 -> 713 bytes www/img/icons/folder_star.png | Bin 0 -> 755 bytes www/img/icons/folder_table.png | Bin 0 -> 675 bytes www/img/icons/folder_user.png | Bin 0 -> 730 bytes www/img/icons/folder_wrench.png | Bin 0 -> 740 bytes www/img/icons/font.png | Bin 0 -> 567 bytes www/img/icons/font_add.png | Bin 0 -> 634 bytes www/img/icons/font_delete.png | Bin 0 -> 661 bytes www/img/icons/font_go.png | Bin 0 -> 700 bytes www/img/icons/group.png | Bin 0 -> 753 bytes www/img/icons/group_add.png | Bin 0 -> 807 bytes www/img/icons/group_delete.png | Bin 0 -> 827 bytes www/img/icons/group_edit.png | Bin 0 -> 785 bytes www/img/icons/group_error.png | Bin 0 -> 842 bytes www/img/icons/group_gear.png | Bin 0 -> 824 bytes www/img/icons/group_go.png | Bin 0 -> 842 bytes www/img/icons/group_key.png | Bin 0 -> 813 bytes www/img/icons/group_link.png | Bin 0 -> 858 bytes www/img/icons/heart.png | Bin 0 -> 749 bytes www/img/icons/heart_add.png | Bin 0 -> 820 bytes www/img/icons/heart_delete.png | Bin 0 -> 823 bytes www/img/icons/help.png | Bin 0 -> 786 bytes www/img/icons/hourglass.png | Bin 0 -> 744 bytes www/img/icons/hourglass_add.png | Bin 0 -> 814 bytes www/img/icons/hourglass_delete.png | Bin 0 -> 829 bytes www/img/icons/hourglass_go.png | Bin 0 -> 866 bytes www/img/icons/hourglass_link.png | Bin 0 -> 871 bytes www/img/icons/house.png | Bin 0 -> 806 bytes www/img/icons/house_go.png | Bin 0 -> 861 bytes www/img/icons/house_link.png | Bin 0 -> 868 bytes www/img/icons/html.png | Bin 0 -> 578 bytes www/img/icons/html_add.png | Bin 0 -> 698 bytes www/img/icons/html_delete.png | Bin 0 -> 688 bytes www/img/icons/html_go.png | Bin 0 -> 692 bytes www/img/icons/html_valid.png | Bin 0 -> 704 bytes www/img/icons/image.png | Bin 0 -> 516 bytes www/img/icons/image_add.png | Bin 0 -> 653 bytes www/img/icons/image_delete.png | Bin 0 -> 653 bytes www/img/icons/image_edit.png | Bin 0 -> 783 bytes www/img/icons/image_link.png | Bin 0 -> 773 bytes www/img/icons/images.png | Bin 0 -> 661 bytes www/img/icons/index_abc.png | Bin 0 -> 963864 bytes www/img/icons/information.png | Bin 0 -> 778 bytes www/img/icons/ipod.png | Bin 0 -> 463 bytes www/img/icons/ipod_cast.png | Bin 0 -> 711 bytes www/img/icons/ipod_cast_add.png | Bin 0 -> 796 bytes www/img/icons/ipod_cast_delete.png | Bin 0 -> 809 bytes www/img/icons/ipod_sound.png | Bin 0 -> 678 bytes www/img/icons/joystick.png | Bin 0 -> 559 bytes www/img/icons/joystick_add.png | Bin 0 -> 669 bytes www/img/icons/joystick_delete.png | Bin 0 -> 671 bytes www/img/icons/joystick_error.png | Bin 0 -> 711 bytes www/img/icons/key.png | Bin 0 -> 612 bytes www/img/icons/key_add.png | Bin 0 -> 703 bytes www/img/icons/key_delete.png | Bin 0 -> 724 bytes www/img/icons/key_go.png | Bin 0 -> 744 bytes www/img/icons/keyboard.png | Bin 0 -> 570 bytes www/img/icons/keyboard_add.png | Bin 0 -> 683 bytes www/img/icons/keyboard_delete.png | Bin 0 -> 681 bytes www/img/icons/keyboard_magnify.png | Bin 0 -> 651 bytes www/img/icons/layers.png | Bin 0 -> 597 bytes www/img/icons/layout.png | Bin 0 -> 480 bytes www/img/icons/layout_add.png | Bin 0 -> 577 bytes www/img/icons/layout_content.png | Bin 0 -> 519 bytes www/img/icons/layout_delete.png | Bin 0 -> 608 bytes www/img/icons/layout_edit.png | Bin 0 -> 716 bytes www/img/icons/layout_error.png | Bin 0 -> 666 bytes www/img/icons/layout_header.png | Bin 0 -> 500 bytes www/img/icons/layout_link.png | Bin 0 -> 660 bytes www/img/icons/layout_sidebar.png | Bin 0 -> 479 bytes www/img/icons/lightbulb.png | Bin 0 -> 782 bytes www/img/icons/lightbulb_add.png | Bin 0 -> 839 bytes www/img/icons/lightbulb_delete.png | Bin 0 -> 857 bytes www/img/icons/lightbulb_off.png | Bin 0 -> 700 bytes www/img/icons/lightning.png | Bin 0 -> 634 bytes www/img/icons/lightning_add.png | Bin 0 -> 746 bytes www/img/icons/lightning_delete.png | Bin 0 -> 745 bytes www/img/icons/lightning_go.png | Bin 0 -> 739 bytes www/img/icons/link.png | Bin 0 -> 343 bytes www/img/icons/link_add.png | Bin 0 -> 570 bytes www/img/icons/link_break.png | Bin 0 -> 657 bytes www/img/icons/link_delete.png | Bin 0 -> 600 bytes www/img/icons/link_edit.png | Bin 0 -> 703 bytes www/img/icons/link_error.png | Bin 0 -> 698 bytes www/img/icons/link_go.png | Bin 0 -> 655 bytes www/img/icons/lock.png | Bin 0 -> 749 bytes www/img/icons/lock_add.png | Bin 0 -> 824 bytes www/img/icons/lock_break.png | Bin 0 -> 771 bytes www/img/icons/lock_delete.png | Bin 0 -> 815 bytes www/img/icons/lock_edit.png | Bin 0 -> 861 bytes www/img/icons/lock_go.png | Bin 0 -> 829 bytes www/img/icons/lock_open.png | Bin 0 -> 727 bytes www/img/icons/lorry.png | Bin 0 -> 582 bytes www/img/icons/lorry_add.png | Bin 0 -> 689 bytes www/img/icons/lorry_delete.png | Bin 0 -> 683 bytes www/img/icons/lorry_error.png | Bin 0 -> 739 bytes www/img/icons/lorry_flatbed.png | Bin 0 -> 450 bytes www/img/icons/lorry_go.png | Bin 0 -> 699 bytes www/img/icons/lorry_link.png | Bin 0 -> 775 bytes www/img/icons/magifier_zoom_out.png | Bin 0 -> 657 bytes www/img/icons/magnifier.png | Bin 0 -> 615 bytes www/img/icons/magnifier_zoom_in.png | Bin 0 -> 680 bytes www/img/icons/male.png | Bin 0 -> 629 bytes www/img/icons/map.png | Bin 0 -> 804 bytes www/img/icons/map_add.png | Bin 0 -> 836 bytes www/img/icons/map_delete.png | Bin 0 -> 835 bytes www/img/icons/map_edit.png | Bin 0 -> 876 bytes www/img/icons/map_go.png | Bin 0 -> 842 bytes www/img/icons/map_magnify.png | Bin 0 -> 797 bytes www/img/icons/medal_bronze_1.png | Bin 0 -> 640 bytes www/img/icons/medal_bronze_2.png | Bin 0 -> 654 bytes www/img/icons/medal_bronze_3.png | Bin 0 -> 646 bytes www/img/icons/medal_bronze_add.png | Bin 0 -> 747 bytes www/img/icons/medal_bronze_delete.png | Bin 0 -> 730 bytes www/img/icons/medal_gold_1.png | Bin 0 -> 629 bytes www/img/icons/medal_gold_2.png | Bin 0 -> 641 bytes www/img/icons/medal_gold_3.png | Bin 0 -> 634 bytes www/img/icons/medal_gold_add.png | Bin 0 -> 733 bytes www/img/icons/medal_gold_delete.png | Bin 0 -> 724 bytes www/img/icons/medal_silver_1.png | Bin 0 -> 589 bytes www/img/icons/medal_silver_2.png | Bin 0 -> 600 bytes www/img/icons/medal_silver_3.png | Bin 0 -> 597 bytes www/img/icons/medal_silver_add.png | Bin 0 -> 727 bytes www/img/icons/medal_silver_delete.png | Bin 0 -> 714 bytes www/img/icons/money.png | Bin 0 -> 738 bytes www/img/icons/money_add.png | Bin 0 -> 784 bytes www/img/icons/money_delete.png | Bin 0 -> 806 bytes www/img/icons/money_dollar.png | Bin 0 -> 630 bytes www/img/icons/money_euro.png | Bin 0 -> 605 bytes www/img/icons/money_pound.png | Bin 0 -> 565 bytes www/img/icons/money_yen.png | Bin 0 -> 562 bytes www/img/icons/monitor.png | Bin 0 -> 612 bytes www/img/icons/monitor_add.png | Bin 0 -> 692 bytes www/img/icons/monitor_delete.png | Bin 0 -> 691 bytes www/img/icons/monitor_edit.png | Bin 0 -> 769 bytes www/img/icons/monitor_error.png | Bin 0 -> 714 bytes www/img/icons/monitor_go.png | Bin 0 -> 696 bytes www/img/icons/monitor_lightning.png | Bin 0 -> 768 bytes www/img/icons/monitor_link.png | Bin 0 -> 736 bytes www/img/icons/mouse.png | Bin 0 -> 634 bytes www/img/icons/mouse_add.png | Bin 0 -> 729 bytes www/img/icons/mouse_delete.png | Bin 0 -> 741 bytes www/img/icons/mouse_error.png | Bin 0 -> 790 bytes www/img/icons/music.png | Bin 0 -> 385 bytes www/img/icons/new.png | Bin 0 -> 378 bytes www/img/icons/newspaper.png | Bin 0 -> 658 bytes www/img/icons/newspaper_add.png | Bin 0 -> 750 bytes www/img/icons/newspaper_delete.png | Bin 0 -> 775 bytes www/img/icons/newspaper_go.png | Bin 0 -> 779 bytes www/img/icons/newspaper_link.png | Bin 0 -> 787 bytes www/img/icons/note.png | Bin 0 -> 500 bytes www/img/icons/note_add.png | Bin 0 -> 641 bytes www/img/icons/note_delete.png | Bin 0 -> 631 bytes www/img/icons/note_edit.png | Bin 0 -> 731 bytes www/img/icons/note_error.png | Bin 0 -> 680 bytes www/img/icons/note_go.png | Bin 0 -> 661 bytes www/img/icons/overlays.png | Bin 0 -> 716 bytes www/img/icons/package.png | Bin 0 -> 853 bytes www/img/icons/package_add.png | Bin 0 -> 899 bytes www/img/icons/package_delete.png | Bin 0 -> 891 bytes www/img/icons/package_go.png | Bin 0 -> 898 bytes www/img/icons/package_green.png | Bin 0 -> 896 bytes www/img/icons/package_link.png | Bin 0 -> 939 bytes www/img/icons/page.png | Bin 0 -> 635 bytes www/img/icons/page_add.png | Bin 0 -> 739 bytes www/img/icons/page_attach.png | Bin 0 -> 794 bytes www/img/icons/page_code.png | Bin 0 -> 818 bytes www/img/icons/page_copy.png | Bin 0 -> 663 bytes www/img/icons/page_delete.png | Bin 0 -> 740 bytes www/img/icons/page_edit.png | Bin 0 -> 807 bytes www/img/icons/page_error.png | Bin 0 -> 793 bytes www/img/icons/page_excel.png | Bin 0 -> 817 bytes www/img/icons/page_find.png | Bin 0 -> 879 bytes www/img/icons/page_gear.png | Bin 0 -> 833 bytes www/img/icons/page_go.png | Bin 0 -> 779 bytes www/img/icons/page_green.png | Bin 0 -> 621 bytes www/img/icons/page_key.png | Bin 0 -> 801 bytes www/img/icons/page_lightning.png | Bin 0 -> 839 bytes www/img/icons/page_link.png | Bin 0 -> 830 bytes www/img/icons/page_paintbrush.png | Bin 0 -> 813 bytes www/img/icons/page_paste.png | Bin 0 -> 703 bytes www/img/icons/page_red.png | Bin 0 -> 641 bytes www/img/icons/page_refresh.png | Bin 0 -> 858 bytes www/img/icons/page_save.png | Bin 0 -> 774 bytes www/img/icons/page_white.png | Bin 0 -> 294 bytes www/img/icons/page_white_acrobat.png | Bin 0 -> 591 bytes www/img/icons/page_white_actionscript.png | Bin 0 -> 664 bytes www/img/icons/page_white_add.png | Bin 0 -> 512 bytes www/img/icons/page_white_c.png | Bin 0 -> 587 bytes www/img/icons/page_white_camera.png | Bin 0 -> 656 bytes www/img/icons/page_white_cd.png | Bin 0 -> 666 bytes www/img/icons/page_white_code.png | Bin 0 -> 603 bytes www/img/icons/page_white_code_red.png | Bin 0 -> 587 bytes www/img/icons/page_white_coldfusion.png | Bin 0 -> 592 bytes www/img/icons/page_white_compressed.png | Bin 0 -> 724 bytes www/img/icons/page_white_copy.png | Bin 0 -> 309 bytes www/img/icons/page_white_cplusplus.png | Bin 0 -> 621 bytes www/img/icons/page_white_csharp.png | Bin 0 -> 700 bytes www/img/icons/page_white_cup.png | Bin 0 -> 639 bytes www/img/icons/page_white_database.png | Bin 0 -> 579 bytes www/img/icons/page_white_delete.png | Bin 0 -> 536 bytes www/img/icons/page_white_dvd.png | Bin 0 -> 638 bytes www/img/icons/page_white_edit.png | Bin 0 -> 618 bytes www/img/icons/page_white_error.png | Bin 0 -> 623 bytes www/img/icons/page_white_excel.png | Bin 0 -> 663 bytes www/img/icons/page_white_find.png | Bin 0 -> 676 bytes www/img/icons/page_white_flash.png | Bin 0 -> 582 bytes www/img/icons/page_white_freehand.png | Bin 0 -> 639 bytes www/img/icons/page_white_gear.png | Bin 0 -> 402 bytes www/img/icons/page_white_get.png | Bin 0 -> 516 bytes www/img/icons/page_white_go.png | Bin 0 -> 612 bytes www/img/icons/page_white_h.png | Bin 0 -> 603 bytes www/img/icons/page_white_horizontal.png | Bin 0 -> 296 bytes www/img/icons/page_white_key.png | Bin 0 -> 616 bytes www/img/icons/page_white_lightning.png | Bin 0 -> 669 bytes www/img/icons/page_white_link.png | Bin 0 -> 614 bytes www/img/icons/page_white_magnify.png | Bin 0 -> 554 bytes www/img/icons/page_white_medal.png | Bin 0 -> 706 bytes www/img/icons/page_white_office.png | Bin 0 -> 779 bytes www/img/icons/page_white_paint.png | Bin 0 -> 688 bytes www/img/icons/page_white_paintbrush.png | Bin 0 -> 618 bytes www/img/icons/page_white_paste.png | Bin 0 -> 620 bytes www/img/icons/page_white_php.png | Bin 0 -> 538 bytes www/img/icons/page_white_picture.png | Bin 0 -> 650 bytes www/img/icons/page_white_powerpoint.png | Bin 0 -> 588 bytes www/img/icons/page_white_put.png | Bin 0 -> 523 bytes www/img/icons/page_white_ruby.png | Bin 0 -> 626 bytes www/img/icons/page_white_stack.png | Bin 0 -> 317 bytes www/img/icons/page_white_star.png | Bin 0 -> 565 bytes www/img/icons/page_white_swoosh.png | Bin 0 -> 634 bytes www/img/icons/page_white_text.png | Bin 0 -> 342 bytes www/img/icons/page_white_text_width.png | Bin 0 -> 315 bytes www/img/icons/page_white_tux.png | Bin 0 -> 668 bytes www/img/icons/page_white_vector.png | Bin 0 -> 644 bytes www/img/icons/page_white_visualstudio.png | Bin 0 -> 702 bytes www/img/icons/page_white_width.png | Bin 0 -> 309 bytes www/img/icons/page_white_word.png | Bin 0 -> 651 bytes www/img/icons/page_white_world.png | Bin 0 -> 734 bytes www/img/icons/page_white_wrench.png | Bin 0 -> 613 bytes www/img/icons/page_white_zip.png | Bin 0 -> 386 bytes www/img/icons/page_word.png | Bin 0 -> 777 bytes www/img/icons/page_world.png | Bin 0 -> 903 bytes www/img/icons/paintbrush.png | Bin 0 -> 548 bytes www/img/icons/paintcan.png | Bin 0 -> 707 bytes www/img/icons/palette.png | Bin 0 -> 856 bytes www/img/icons/paste_plain.png | Bin 0 -> 605 bytes www/img/icons/paste_word.png | Bin 0 -> 701 bytes www/img/icons/pencil.png | Bin 0 -> 450 bytes www/img/icons/pencil_add.png | Bin 0 -> 589 bytes www/img/icons/pencil_delete.png | Bin 0 -> 603 bytes www/img/icons/pencil_go.png | Bin 0 -> 666 bytes www/img/icons/phone.png | Bin 0 -> 488 bytes www/img/icons/phone_add.png | Bin 0 -> 621 bytes www/img/icons/phone_delete.png | Bin 0 -> 615 bytes www/img/icons/phone_sound.png | Bin 0 -> 703 bytes www/img/icons/photo.png | Bin 0 -> 589 bytes www/img/icons/photo_add.png | Bin 0 -> 707 bytes www/img/icons/photo_delete.png | Bin 0 -> 703 bytes www/img/icons/photo_link.png | Bin 0 -> 784 bytes www/img/icons/photos.png | Bin 0 -> 647 bytes www/img/icons/picture.png | Bin 0 -> 606 bytes www/img/icons/picture_add.png | Bin 0 -> 745 bytes www/img/icons/picture_delete.png | Bin 0 -> 744 bytes www/img/icons/picture_edit.png | Bin 0 -> 826 bytes www/img/icons/picture_empty.png | Bin 0 -> 463 bytes www/img/icons/picture_error.png | Bin 0 -> 755 bytes www/img/icons/picture_go.png | Bin 0 -> 758 bytes www/img/icons/picture_key.png | Bin 0 -> 794 bytes www/img/icons/picture_link.png | Bin 0 -> 835 bytes www/img/icons/picture_save.png | Bin 0 -> 755 bytes www/img/icons/pictures.png | Bin 0 -> 704 bytes www/img/icons/pilcrow.png | Bin 0 -> 361 bytes www/img/icons/pill.png | Bin 0 -> 719 bytes www/img/icons/pill_add.png | Bin 0 -> 797 bytes www/img/icons/pill_delete.png | Bin 0 -> 805 bytes www/img/icons/pill_go.png | Bin 0 -> 817 bytes www/img/icons/plugin.png | Bin 0 -> 591 bytes www/img/icons/plugin_add.png | Bin 0 -> 691 bytes www/img/icons/plugin_delete.png | Bin 0 -> 692 bytes www/img/icons/plugin_disabled.png | Bin 0 -> 347 bytes www/img/icons/plugin_edit.png | Bin 0 -> 746 bytes www/img/icons/plugin_error.png | Bin 0 -> 702 bytes www/img/icons/plugin_go.png | Bin 0 -> 694 bytes www/img/icons/plugin_link.png | Bin 0 -> 759 bytes www/img/icons/printer.png | Bin 0 -> 731 bytes www/img/icons/printer_add.png | Bin 0 -> 782 bytes www/img/icons/printer_delete.png | Bin 0 -> 792 bytes www/img/icons/printer_empty.png | Bin 0 -> 350 bytes www/img/icons/printer_error.png | Bin 0 -> 854 bytes www/img/icons/rainbow.png | Bin 0 -> 655 bytes www/img/icons/report.png | Bin 0 -> 649 bytes www/img/icons/report_add.png | Bin 0 -> 714 bytes www/img/icons/report_delete.png | Bin 0 -> 729 bytes www/img/icons/report_disk.png | Bin 0 -> 760 bytes www/img/icons/report_edit.png | Bin 0 -> 762 bytes www/img/icons/report_go.png | Bin 0 -> 756 bytes www/img/icons/report_key.png | Bin 0 -> 760 bytes www/img/icons/report_link.png | Bin 0 -> 754 bytes www/img/icons/report_magnify.png | Bin 0 -> 738 bytes www/img/icons/report_picture.png | Bin 0 -> 733 bytes www/img/icons/report_user.png | Bin 0 -> 785 bytes www/img/icons/report_word.png | Bin 0 -> 731 bytes www/img/icons/resultset_first.png | Bin 0 -> 522 bytes www/img/icons/resultset_last.png | Bin 0 -> 524 bytes www/img/icons/resultset_next.png | Bin 0 -> 395 bytes www/img/icons/resultset_previous.png | Bin 0 -> 389 bytes www/img/icons/rosette.png | Bin 0 -> 673 bytes www/img/icons/rss.png | Bin 0 -> 530 bytes www/img/icons/rss_add.png | Bin 0 -> 649 bytes www/img/icons/rss_delete.png | Bin 0 -> 633 bytes www/img/icons/rss_go.png | Bin 0 -> 635 bytes www/img/icons/rss_valid.png | Bin 0 -> 660 bytes www/img/icons/ruby.png | Bin 0 -> 592 bytes www/img/icons/ruby_add.png | Bin 0 -> 691 bytes www/img/icons/ruby_delete.png | Bin 0 -> 704 bytes www/img/icons/ruby_gear.png | Bin 0 -> 716 bytes www/img/icons/ruby_get.png | Bin 0 -> 692 bytes www/img/icons/ruby_go.png | Bin 0 -> 720 bytes www/img/icons/ruby_key.png | Bin 0 -> 732 bytes www/img/icons/ruby_link.png | Bin 0 -> 767 bytes www/img/icons/ruby_put.png | Bin 0 -> 694 bytes www/img/icons/script.png | Bin 0 -> 748 bytes www/img/icons/script_add.png | Bin 0 -> 811 bytes www/img/icons/script_code.png | Bin 0 -> 859 bytes www/img/icons/script_code_red.png | Bin 0 -> 868 bytes www/img/icons/script_delete.png | Bin 0 -> 811 bytes www/img/icons/script_edit.png | Bin 0 -> 880 bytes www/img/icons/script_error.png | Bin 0 -> 861 bytes www/img/icons/script_gear.png | Bin 0 -> 861 bytes www/img/icons/script_go.png | Bin 0 -> 839 bytes www/img/icons/script_key.png | Bin 0 -> 853 bytes www/img/icons/script_lightning.png | Bin 0 -> 879 bytes www/img/icons/script_link.png | Bin 0 -> 876 bytes www/img/icons/script_palette.png | Bin 0 -> 917 bytes www/img/icons/script_save.png | Bin 0 -> 804 bytes www/img/icons/server.png | Bin 0 -> 530 bytes www/img/icons/server_add.png | Bin 0 -> 676 bytes www/img/icons/server_chart.png | Bin 0 -> 673 bytes www/img/icons/server_compressed.png | Bin 0 -> 721 bytes www/img/icons/server_connect.png | Bin 0 -> 755 bytes www/img/icons/server_database.png | Bin 0 -> 666 bytes www/img/icons/server_delete.png | Bin 0 -> 668 bytes www/img/icons/server_edit.png | Bin 0 -> 749 bytes www/img/icons/server_error.png | Bin 0 -> 678 bytes www/img/icons/server_go.png | Bin 0 -> 706 bytes www/img/icons/server_key.png | Bin 0 -> 746 bytes www/img/icons/server_lightning.png | Bin 0 -> 729 bytes www/img/icons/server_link.png | Bin 0 -> 706 bytes www/img/icons/server_uncompressed.png | Bin 0 -> 669 bytes www/img/icons/shading.png | Bin 0 -> 225 bytes www/img/icons/shape_align_bottom.png | Bin 0 -> 398 bytes www/img/icons/shape_align_center.png | Bin 0 -> 384 bytes www/img/icons/shape_align_left.png | Bin 0 -> 402 bytes www/img/icons/shape_align_middle.png | Bin 0 -> 414 bytes www/img/icons/shape_align_right.png | Bin 0 -> 401 bytes www/img/icons/shape_align_top.png | Bin 0 -> 406 bytes www/img/icons/shape_flip_horizontal.png | Bin 0 -> 403 bytes www/img/icons/shape_flip_vertical.png | Bin 0 -> 418 bytes www/img/icons/shape_group.png | Bin 0 -> 553 bytes www/img/icons/shape_handles.png | Bin 0 -> 538 bytes www/img/icons/shape_move_back.png | Bin 0 -> 395 bytes www/img/icons/shape_move_backwards.png | Bin 0 -> 358 bytes www/img/icons/shape_move_forwards.png | Bin 0 -> 381 bytes www/img/icons/shape_move_front.png | Bin 0 -> 435 bytes www/img/icons/shape_rotate_anticlockwise.png | Bin 0 -> 657 bytes www/img/icons/shape_rotate_clockwise.png | Bin 0 -> 673 bytes www/img/icons/shape_square.png | Bin 0 -> 353 bytes www/img/icons/shape_square_add.png | Bin 0 -> 539 bytes www/img/icons/shape_square_delete.png | Bin 0 -> 537 bytes www/img/icons/shape_square_edit.png | Bin 0 -> 660 bytes www/img/icons/shape_square_error.png | Bin 0 -> 570 bytes www/img/icons/shape_square_go.png | Bin 0 -> 566 bytes www/img/icons/shape_square_key.png | Bin 0 -> 607 bytes www/img/icons/shape_square_link.png | Bin 0 -> 642 bytes www/img/icons/shape_ungroup.png | Bin 0 -> 666 bytes www/img/icons/shield.png | Bin 0 -> 702 bytes www/img/icons/shield_add.png | Bin 0 -> 758 bytes www/img/icons/shield_delete.png | Bin 0 -> 768 bytes www/img/icons/shield_go.png | Bin 0 -> 775 bytes www/img/icons/sitemap.png | Bin 0 -> 278 bytes www/img/icons/sitemap_color.png | Bin 0 -> 406 bytes www/img/icons/sound.png | Bin 0 -> 610 bytes www/img/icons/sound_add.png | Bin 0 -> 684 bytes www/img/icons/sound_delete.png | Bin 0 -> 711 bytes www/img/icons/sound_low.png | Bin 0 -> 524 bytes www/img/icons/sound_mute.png | Bin 0 -> 474 bytes www/img/icons/sound_none.png | Bin 0 -> 417 bytes www/img/icons/spellcheck.png | Bin 0 -> 603 bytes www/img/icons/sport_8ball.png | Bin 0 -> 490 bytes www/img/icons/sport_basketball.png | Bin 0 -> 977 bytes www/img/icons/sport_football.png | Bin 0 -> 875 bytes www/img/icons/sport_golf.png | Bin 0 -> 504 bytes www/img/icons/sport_raquet.png | Bin 0 -> 719 bytes www/img/icons/sport_shuttlecock.png | Bin 0 -> 683 bytes www/img/icons/sport_soccer.png | Bin 0 -> 517 bytes www/img/icons/sport_tennis.png | Bin 0 -> 884 bytes www/img/icons/star.png | Bin 0 -> 670 bytes www/img/icons/status_away.png | Bin 0 -> 794 bytes www/img/icons/status_busy.png | Bin 0 -> 751 bytes www/img/icons/status_offline.png | Bin 0 -> 422 bytes www/img/icons/status_online.png | Bin 0 -> 722 bytes www/img/icons/stop.png | Bin 0 -> 700 bytes www/img/icons/style.png | Bin 0 -> 813 bytes www/img/icons/style_add.png | Bin 0 -> 844 bytes www/img/icons/style_delete.png | Bin 0 -> 865 bytes www/img/icons/style_edit.png | Bin 0 -> 927 bytes www/img/icons/style_go.png | Bin 0 -> 862 bytes www/img/icons/sum.png | Bin 0 -> 289 bytes www/img/icons/tab.png | Bin 0 -> 323 bytes www/img/icons/tab_add.png | Bin 0 -> 488 bytes www/img/icons/tab_delete.png | Bin 0 -> 493 bytes www/img/icons/tab_edit.png | Bin 0 -> 580 bytes www/img/icons/tab_go.png | Bin 0 -> 552 bytes www/img/icons/table.png | Bin 0 -> 566 bytes www/img/icons/table_add.png | Bin 0 -> 663 bytes www/img/icons/table_delete.png | Bin 0 -> 660 bytes www/img/icons/table_edit.png | Bin 0 -> 744 bytes www/img/icons/table_error.png | Bin 0 -> 687 bytes www/img/icons/table_gear.png | Bin 0 -> 714 bytes www/img/icons/table_go.png | Bin 0 -> 683 bytes www/img/icons/table_key.png | Bin 0 -> 746 bytes www/img/icons/table_lightning.png | Bin 0 -> 736 bytes www/img/icons/table_link.png | Bin 0 -> 728 bytes www/img/icons/table_multiple.png | Bin 0 -> 612 bytes www/img/icons/table_refresh.png | Bin 0 -> 795 bytes www/img/icons/table_relationship.png | Bin 0 -> 663 bytes www/img/icons/table_row_delete.png | Bin 0 -> 629 bytes www/img/icons/table_row_insert.png | Bin 0 -> 641 bytes www/img/icons/table_save.png | Bin 0 -> 723 bytes www/img/icons/table_sort.png | Bin 0 -> 678 bytes www/img/icons/tag.png | Bin 0 -> 389 bytes www/img/icons/tag_blue.png | Bin 0 -> 586 bytes www/img/icons/tag_blue_add.png | Bin 0 -> 671 bytes www/img/icons/tag_blue_delete.png | Bin 0 -> 701 bytes www/img/icons/tag_blue_edit.png | Bin 0 -> 748 bytes www/img/icons/tag_green.png | Bin 0 -> 613 bytes www/img/icons/tag_orange.png | Bin 0 -> 586 bytes www/img/icons/tag_pink.png | Bin 0 -> 579 bytes www/img/icons/tag_purple.png | Bin 0 -> 599 bytes www/img/icons/tag_red.png | Bin 0 -> 592 bytes www/img/icons/tag_yellow.png | Bin 0 -> 586 bytes www/img/icons/telephone.png | Bin 0 -> 791 bytes www/img/icons/telephone_add.png | Bin 0 -> 860 bytes www/img/icons/telephone_delete.png | Bin 0 -> 856 bytes www/img/icons/telephone_edit.png | Bin 0 -> 893 bytes www/img/icons/telephone_error.png | Bin 0 -> 884 bytes www/img/icons/telephone_go.png | Bin 0 -> 865 bytes www/img/icons/telephone_key.png | Bin 0 -> 881 bytes www/img/icons/telephone_link.png | Bin 0 -> 909 bytes www/img/icons/television.png | Bin 0 -> 696 bytes www/img/icons/television_add.png | Bin 0 -> 809 bytes www/img/icons/television_delete.png | Bin 0 -> 810 bytes www/img/icons/text_align_center.png | Bin 0 -> 234 bytes www/img/icons/text_align_justify.png | Bin 0 -> 209 bytes www/img/icons/text_align_left.png | Bin 0 -> 209 bytes www/img/icons/text_align_right.png | Bin 0 -> 209 bytes www/img/icons/text_allcaps.png | Bin 0 -> 284 bytes www/img/icons/text_bold.png | Bin 0 -> 304 bytes www/img/icons/text_columns.png | Bin 0 -> 246 bytes www/img/icons/text_dropcaps.png | Bin 0 -> 314 bytes www/img/icons/text_heading_1.png | Bin 0 -> 276 bytes www/img/icons/text_heading_2.png | Bin 0 -> 304 bytes www/img/icons/text_heading_3.png | Bin 0 -> 306 bytes www/img/icons/text_heading_4.png | Bin 0 -> 293 bytes www/img/icons/text_heading_5.png | Bin 0 -> 304 bytes www/img/icons/text_heading_6.png | Bin 0 -> 310 bytes www/img/icons/text_horizontalrule.png | Bin 0 -> 317 bytes www/img/icons/text_indent.png | Bin 0 -> 353 bytes www/img/icons/text_indent_remove.png | Bin 0 -> 351 bytes www/img/icons/text_italic.png | Bin 0 -> 223 bytes www/img/icons/text_kerning.png | Bin 0 -> 495 bytes www/img/icons/text_letter_omega.png | Bin 0 -> 541 bytes www/img/icons/text_letterspacing.png | Bin 0 -> 503 bytes www/img/icons/text_linespacing.png | Bin 0 -> 363 bytes www/img/icons/text_list_bullets.png | Bin 0 -> 344 bytes www/img/icons/text_list_numbers.png | Bin 0 -> 357 bytes www/img/icons/text_lowercase.png | Bin 0 -> 709 bytes www/img/icons/text_padding_bottom.png | Bin 0 -> 237 bytes www/img/icons/text_padding_left.png | Bin 0 -> 271 bytes www/img/icons/text_padding_right.png | Bin 0 -> 271 bytes www/img/icons/text_padding_top.png | Bin 0 -> 236 bytes www/img/icons/text_replace.png | Bin 0 -> 691 bytes www/img/icons/text_signature.png | Bin 0 -> 524 bytes www/img/icons/text_smallcaps.png | Bin 0 -> 260 bytes www/img/icons/text_strikethrough.png | Bin 0 -> 269 bytes www/img/icons/text_subscript.png | Bin 0 -> 422 bytes www/img/icons/text_superscript.png | Bin 0 -> 421 bytes www/img/icons/text_underline.png | Bin 0 -> 273 bytes www/img/icons/text_uppercase.png | Bin 0 -> 747 bytes www/img/icons/textfield.png | Bin 0 -> 153 bytes www/img/icons/textfield_add.png | Bin 0 -> 321 bytes www/img/icons/textfield_delete.png | Bin 0 -> 335 bytes www/img/icons/textfield_key.png | Bin 0 -> 455 bytes www/img/icons/textfield_rename.png | Bin 0 -> 273 bytes www/img/icons/thumb_down.png | Bin 0 -> 601 bytes www/img/icons/thumb_up.png | Bin 0 -> 619 bytes www/img/icons/tick.png | Bin 0 -> 537 bytes www/img/icons/time.png | Bin 0 -> 793 bytes www/img/icons/time_add.png | Bin 0 -> 827 bytes www/img/icons/time_delete.png | Bin 0 -> 853 bytes www/img/icons/time_go.png | Bin 0 -> 882 bytes www/img/icons/timeline_marker.png | Bin 0 -> 327 bytes www/img/icons/transmit.png | Bin 0 -> 749 bytes www/img/icons/transmit_add.png | Bin 0 -> 803 bytes www/img/icons/transmit_blue.png | Bin 0 -> 814 bytes www/img/icons/transmit_delete.png | Bin 0 -> 827 bytes www/img/icons/transmit_edit.png | Bin 0 -> 848 bytes www/img/icons/transmit_error.png | Bin 0 -> 883 bytes www/img/icons/transmit_go.png | Bin 0 -> 842 bytes www/img/icons/tux.png | Bin 0 -> 696 bytes www/img/icons/user.png | Bin 0 -> 741 bytes www/img/icons/user_add.png | Bin 0 -> 746 bytes www/img/icons/user_comment.png | Bin 0 -> 743 bytes www/img/icons/user_delete.png | Bin 0 -> 767 bytes www/img/icons/user_edit.png | Bin 0 -> 833 bytes www/img/icons/user_female.png | Bin 0 -> 663 bytes www/img/icons/user_go.png | Bin 0 -> 793 bytes www/img/icons/user_gray.png | Bin 0 -> 706 bytes www/img/icons/user_green.png | Bin 0 -> 722 bytes www/img/icons/user_orange.png | Bin 0 -> 723 bytes www/img/icons/user_red.png | Bin 0 -> 717 bytes www/img/icons/user_suit.png | Bin 0 -> 748 bytes www/img/icons/vcard.png | Bin 0 -> 533 bytes www/img/icons/vcard_add.png | Bin 0 -> 661 bytes www/img/icons/vcard_delete.png | Bin 0 -> 651 bytes www/img/icons/vcard_edit.png | Bin 0 -> 775 bytes www/img/icons/vector.png | Bin 0 -> 481 bytes www/img/icons/vector_add.png | Bin 0 -> 616 bytes www/img/icons/vector_delete.png | Bin 0 -> 635 bytes www/img/icons/wand.png | Bin 0 -> 570 bytes www/img/icons/weather_clouds.png | Bin 0 -> 581 bytes www/img/icons/weather_cloudy.png | Bin 0 -> 694 bytes www/img/icons/weather_lightning.png | Bin 0 -> 641 bytes www/img/icons/weather_rain.png | Bin 0 -> 626 bytes www/img/icons/weather_snow.png | Bin 0 -> 341 bytes www/img/icons/weather_sun.png | Bin 0 -> 623 bytes www/img/icons/webcam.png | Bin 0 -> 728 bytes www/img/icons/webcam_add.png | Bin 0 -> 786 bytes www/img/icons/webcam_delete.png | Bin 0 -> 805 bytes www/img/icons/webcam_error.png | Bin 0 -> 821 bytes www/img/icons/world.png | Bin 0 -> 923 bytes www/img/icons/world_add.png | Bin 0 -> 940 bytes www/img/icons/world_delete.png | Bin 0 -> 945 bytes www/img/icons/world_edit.png | Bin 0 -> 945 bytes www/img/icons/world_go.png | Bin 0 -> 944 bytes www/img/icons/world_link.png | Bin 0 -> 957 bytes www/img/icons/wrench.png | Bin 0 -> 610 bytes www/img/icons/wrench_orange.png | Bin 0 -> 584 bytes www/img/icons/xhtml.png | Bin 0 -> 595 bytes www/img/icons/xhtml_add.png | Bin 0 -> 703 bytes www/img/icons/xhtml_delete.png | Bin 0 -> 696 bytes www/img/icons/xhtml_go.png | Bin 0 -> 697 bytes www/img/icons/xhtml_valid.png | Bin 0 -> 718 bytes www/img/icons/zoom.png | Bin 0 -> 692 bytes www/img/icons/zoom_in.png | Bin 0 -> 725 bytes www/img/icons/zoom_out.png | Bin 0 -> 708 bytes www/img/loader.gif | Bin 0 -> 1737 bytes www/img/logo.png | Bin 0 -> 17112 bytes www/img/logo2.png | Bin 0 -> 26464 bytes www/img/logo3.png | Bin 0 -> 27451 bytes www/img/logo4.png | Bin 0 -> 29249 bytes www/img/marker.svg | 21 + www/img/order.png | Bin 0 -> 10020 bytes www/img/taxo/cat1.png | Bin 0 -> 26023 bytes www/img/taxo/cat10.png | Bin 0 -> 57871 bytes www/img/taxo/cat14.png | Bin 0 -> 38480 bytes www/img/taxo/cat3.png | Bin 0 -> 21372 bytes www/img/taxo/cat4.png | Bin 0 -> 27026 bytes www/img/taxo/cat5.png | Bin 0 -> 26847 bytes www/img/taxo/cat6.png | Bin 0 -> 37057 bytes www/img/taxo/cat7.png | Bin 0 -> 42850 bytes www/img/taxo/cat8.png | Bin 0 -> 36527 bytes www/img/taxo/cat9.png | Bin 0 -> 23805 bytes www/img/tick_no.png | Bin 0 -> 265 bytes www/img/tick_ok.png | Bin 0 -> 481 bytes www/img/tick_ok_me.png | Bin 0 -> 579 bytes www/img/unknown.png | Bin 0 -> 4536 bytes www/img/weight.png | Bin 0 -> 3503 bytes www/js/rgraph/RGraph.bar.js | 2563 ++ www/js/rgraph/RGraph.common.core.js | 2670 ++ www/js/skins/lightgray/content.inline.min.css | 1 + www/js/skins/lightgray/content.min.css | 1 + www/js/skins/lightgray/fonts/readme.md | 1 + .../lightgray/fonts/tinymce-small.dev.svg | 175 + .../skins/lightgray/fonts/tinymce-small.eot | Bin 0 -> 10316 bytes .../skins/lightgray/fonts/tinymce-small.svg | 62 + .../skins/lightgray/fonts/tinymce-small.ttf | Bin 0 -> 10128 bytes .../skins/lightgray/fonts/tinymce-small.woff | Bin 0 -> 7848 bytes www/js/skins/lightgray/fonts/tinymce.dev.svg | 153 + www/js/skins/lightgray/fonts/tinymce.eot | Bin 0 -> 10024 bytes www/js/skins/lightgray/fonts/tinymce.svg | 63 + www/js/skins/lightgray/fonts/tinymce.ttf | Bin 0 -> 9860 bytes www/js/skins/lightgray/fonts/tinymce.woff | Bin 0 -> 7664 bytes www/js/skins/lightgray/img/anchor.gif | Bin 0 -> 53 bytes www/js/skins/lightgray/img/loader.gif | Bin 0 -> 2608 bytes www/js/skins/lightgray/img/object.gif | Bin 0 -> 152 bytes www/js/skins/lightgray/img/trans.gif | Bin 0 -> 43 bytes www/js/skins/lightgray/skin.ie7.min.css | 1 + www/js/skins/lightgray/skin.min.css | 1 + www/js/themes/modern/theme.min.js | 1 + www/js/tinymce/langs/de.js | 260 + www/js/tinymce/langs/en.js | 230 + www/js/tinymce/langs/es.js | 253 + www/js/tinymce/langs/fr.js | 219 + www/js/tinymce/plugins/advlist/plugin.min.js | 1 + www/js/tinymce/plugins/anchor/plugin.min.js | 1 + www/js/tinymce/plugins/autolink/plugin.min.js | 1 + .../tinymce/plugins/autoresize/plugin.min.js | 1 + www/js/tinymce/plugins/autosave/plugin.min.js | 1 + www/js/tinymce/plugins/bbcode/plugin.min.js | 1 + www/js/tinymce/plugins/charmap/plugin.min.js | 1 + www/js/tinymce/plugins/code/plugin.min.js | 1 + .../tinymce/plugins/codesample/css/prism.css | 138 + .../tinymce/plugins/codesample/plugin.min.js | 1 + .../tinymce/plugins/colorpicker/plugin.min.js | 1 + .../tinymce/plugins/contextmenu/plugin.min.js | 1 + .../plugins/directionality/plugin.min.js | 1 + .../plugins/emoticons/img/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emoticons/img/smiley-cry.gif | Bin 0 -> 329 bytes .../emoticons/img/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emoticons/img/smiley-foot-in-mouth.gif | Bin 0 -> 342 bytes .../plugins/emoticons/img/smiley-frown.gif | Bin 0 -> 340 bytes .../plugins/emoticons/img/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emoticons/img/smiley-kiss.gif | Bin 0 -> 338 bytes .../plugins/emoticons/img/smiley-laughing.gif | Bin 0 -> 343 bytes .../emoticons/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emoticons/img/smiley-sealed.gif | Bin 0 -> 323 bytes .../plugins/emoticons/img/smiley-smile.gif | Bin 0 -> 344 bytes .../emoticons/img/smiley-surprised.gif | Bin 0 -> 338 bytes .../emoticons/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../emoticons/img/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emoticons/img/smiley-wink.gif | Bin 0 -> 350 bytes .../plugins/emoticons/img/smiley-yell.gif | Bin 0 -> 336 bytes .../tinymce/plugins/emoticons/plugin.min.js | 1 + www/js/tinymce/plugins/example/dialog.html | 8 + www/js/tinymce/plugins/example/plugin.min.js | 1 + .../plugins/example_dependency/plugin.min.js | 1 + www/js/tinymce/plugins/fullpage/plugin.min.js | 1 + .../tinymce/plugins/fullscreen/plugin.min.js | 1 + www/js/tinymce/plugins/hr/plugin.min.js | 1 + www/js/tinymce/plugins/image/plugin.min.js | 1 + .../tinymce/plugins/imagetools/plugin.min.js | 1 + .../tinymce/plugins/importcss/plugin.min.js | 1 + .../plugins/insertdatetime/plugin.min.js | 1 + www/js/tinymce/plugins/layer/plugin.min.js | 1 + .../plugins/legacyoutput/plugin.min.js | 1 + www/js/tinymce/plugins/link/plugin.min.js | 1 + www/js/tinymce/plugins/lists/plugin.min.js | 1 + www/js/tinymce/plugins/media/moxieplayer.swf | Bin 0 -> 20017 bytes www/js/tinymce/plugins/media/plugin.min.js | 1 + .../tinymce/plugins/nonbreaking/plugin.min.js | 1 + .../tinymce/plugins/noneditable/plugin.min.js | 1 + .../tinymce/plugins/pagebreak/plugin.min.js | 1 + www/js/tinymce/plugins/paste/plugin.min.js | 1 + www/js/tinymce/plugins/preview/plugin.min.js | 1 + www/js/tinymce/plugins/print/plugin.min.js | 1 + www/js/tinymce/plugins/save/plugin.min.js | 1 + .../plugins/searchreplace/plugin.min.js | 1 + .../plugins/spellchecker/plugin.min.js | 1 + www/js/tinymce/plugins/tabfocus/plugin.min.js | 1 + www/js/tinymce/plugins/table/plugin.min.js | 2 + www/js/tinymce/plugins/template/plugin.min.js | 1 + .../tinymce/plugins/textcolor/plugin.min.js | 1 + .../tinymce/plugins/textpattern/plugin.min.js | 1 + .../plugins/visualblocks/css/visualblocks.css | 135 + .../plugins/visualblocks/plugin.min.js | 1 + .../tinymce/plugins/visualchars/plugin.min.js | 1 + .../tinymce/plugins/wordcount/plugin.min.js | 1 + .../skins/lightgray/content.inline.min.css | 1 + .../tinymce/skins/lightgray/content.min.css | 1 + .../skins/lightgray/fonts/tinymce-small.eot | Bin 0 -> 9492 bytes .../skins/lightgray/fonts/tinymce-small.svg | 63 + .../skins/lightgray/fonts/tinymce-small.ttf | Bin 0 -> 9304 bytes .../skins/lightgray/fonts/tinymce-small.woff | Bin 0 -> 9380 bytes .../tinymce/skins/lightgray/fonts/tinymce.eot | Bin 0 -> 17292 bytes .../tinymce/skins/lightgray/fonts/tinymce.svg | 129 + .../tinymce/skins/lightgray/fonts/tinymce.ttf | Bin 0 -> 17128 bytes .../skins/lightgray/fonts/tinymce.woff | Bin 0 -> 17204 bytes www/js/tinymce/skins/lightgray/img/anchor.gif | Bin 0 -> 53 bytes www/js/tinymce/skins/lightgray/img/loader.gif | Bin 0 -> 2608 bytes www/js/tinymce/skins/lightgray/img/object.gif | Bin 0 -> 152 bytes www/js/tinymce/skins/lightgray/img/trans.gif | Bin 0 -> 43 bytes .../tinymce/skins/lightgray/skin.ie7.min.css | 1 + www/js/tinymce/skins/lightgray/skin.min.css | 1 + www/js/tinymce/themes/inlite/theme.min.js | 1 + www/js/tinymce/themes/modern/theme.min.js | 1 + www/js/tinymce/tinymce.min.js | 58 + www/lang/allTexts.pot | 4308 ++ www/lang/texts_ast.po | 4118 ++ www/lang/texts_de.po | 5431 +++ www/lang/texts_en.po | 4522 ++ www/lang/texts_es.po | 4735 ++ www/lang/texts_fr.po | 6222 +++ www/lang/texts_it.po | 4515 ++ www/lang/texts_nl.po | 4511 ++ www/produits.xls | Bin 0 -> 8704 bytes 1966 files changed, 220437 insertions(+), 2 deletions(-) create mode 100755 .gitignore create mode 100755 LICENSE create mode 100644 Makefile.dist mode change 100644 => 100755 README.md create mode 100644 build/travis-ci-apache create mode 100644 cagette-php.hxml create mode 100644 cagette.hxml create mode 100755 cagetteAllPlugins.hxml create mode 100755 cagetteAllPlugins.hxproj create mode 100644 cagetteAllPluginsJs.hxml create mode 100644 cagetteJs.hxml create mode 100755 common/Common.hx create mode 100644 common/Formatting.hx create mode 100644 data/productTaxonomy.json create mode 100755 js/App.hx create mode 100644 js/ShopCart.hx create mode 100755 js/Tagger.hx create mode 100644 js/Tuto.hx create mode 100644 js/libs/libs.js create mode 100644 js/react/DateTimeField.hx create mode 100644 js/react/Error.hx create mode 100644 js/react/Message.hx create mode 100644 js/react/ReportHeader.hx create mode 100644 js/react/Typeahead.hx create mode 100644 js/react/VATBox.hx create mode 100644 js/react/map/GroupMap.hx create mode 100644 js/react/map/GroupMapRoot.hx create mode 100644 js/react/order/InsertOrder.hx create mode 100644 js/react/order/Order.hx create mode 100644 js/react/order/OrderBox.hx create mode 100644 js/react/product/ComposerApp.hx create mode 100644 js/react/product/Product.hx create mode 100644 js/react/product/ProductInput.hx create mode 100644 js/react/product/ProductSelect.hx create mode 100644 js/react/store/Cart.hx create mode 100644 js/react/store/Filters.hx create mode 100644 js/react/store/Product.hx create mode 100644 js/react/store/ProductList.hx create mode 100644 js/react/store/Store.hx create mode 100644 js/react/user/LoginBox.hx create mode 100644 js/react/user/RegisterBox.hx create mode 100644 js/test/TestAll.hx create mode 100644 js/test/mocks.json create mode 100644 js/test/utils/TestCartUtils.hx create mode 100644 js/utils/CartUtils.hx create mode 100644 js/utils/HttpUtil.hx create mode 100644 lang/de/tmp/README.md create mode 100644 lang/en/tmp/README.md create mode 100644 lang/master/tmp/README.md create mode 100644 lang/master/tpl/account/payments.mtt create mode 100644 lang/master/tpl/admin/cssDemo.mtt create mode 100644 lang/master/tpl/admin/default.mtt create mode 100644 lang/master/tpl/admin/design.mtt create mode 100644 lang/master/tpl/admin/emails.mtt create mode 100644 lang/master/tpl/admin/errors.mtt create mode 100644 lang/master/tpl/admin/graph.mtt create mode 100644 lang/master/tpl/admin/plugins/default.mtt create mode 100644 lang/master/tpl/admin/taxo.mtt create mode 100644 lang/master/tpl/amap/default.mtt create mode 100644 lang/master/tpl/amapadmin/addimage.mtt create mode 100644 lang/master/tpl/amapadmin/default.mtt create mode 100644 lang/master/tpl/amapadmin/design.mtt create mode 100644 lang/master/tpl/amapadmin/rights.mtt create mode 100644 lang/master/tpl/base.mtt create mode 100644 lang/master/tpl/block/modal.mtt create mode 100644 lang/master/tpl/blocks/user.mtt_removeme create mode 100644 lang/master/tpl/categories/default.mtt create mode 100644 lang/master/tpl/contract/default.mtt create mode 100644 lang/master/tpl/contract/insertChoose.mtt create mode 100644 lang/master/tpl/contract/order.mtt create mode 100644 lang/master/tpl/contract/orderAndPay.mtt create mode 100644 lang/master/tpl/contract/orderByDate.mtt create mode 100644 lang/master/tpl/contract/view.mtt create mode 100644 lang/master/tpl/contractadmin/calendar.mtt create mode 100644 lang/master/tpl/contractadmin/contract.mtt create mode 100644 lang/master/tpl/contractadmin/default.mtt create mode 100644 lang/master/tpl/contractadmin/deliveries.mtt create mode 100644 lang/master/tpl/contractadmin/design.mtt create mode 100644 lang/master/tpl/contractadmin/distributionp.mtt create mode 100644 lang/master/tpl/contractadmin/edit.mtt create mode 100644 lang/master/tpl/contractadmin/orders.mtt create mode 100644 lang/master/tpl/contractadmin/ordersByDate.mtt create mode 100644 lang/master/tpl/contractadmin/ordersByProduct.mtt create mode 100644 lang/master/tpl/contractadmin/ordersByProductList.mtt create mode 100644 lang/master/tpl/contractadmin/ordersByTimeFrame.mtt create mode 100644 lang/master/tpl/contractadmin/products.mtt create mode 100644 lang/master/tpl/contractadmin/selectDistrib.mtt create mode 100644 lang/master/tpl/contractadmin/stats.mtt create mode 100644 lang/master/tpl/contractadmin/stocks.mtt create mode 100644 lang/master/tpl/contractadmin/vendorsByDate.mtt create mode 100644 lang/master/tpl/contractadmin/vendorsByTimeFrame.mtt create mode 100644 lang/master/tpl/contractadmin/view.mtt create mode 100644 lang/master/tpl/cssDemo.mtt create mode 100644 lang/master/tpl/design.mtt create mode 100644 lang/master/tpl/distribution/list.mtt create mode 100644 lang/master/tpl/distribution/listByDate.mtt create mode 100644 lang/master/tpl/distribution/listByDateOnePage.mtt create mode 100644 lang/master/tpl/distribution/listByDateOnePageContract.mtt create mode 100644 lang/master/tpl/distribution/listByDateShort.mtt create mode 100644 lang/master/tpl/distribution/listByProductUser.mtt create mode 100644 lang/master/tpl/distribution/planning.mtt create mode 100644 lang/master/tpl/distribution/validate.mtt create mode 100644 lang/master/tpl/empty.mtt create mode 100644 lang/master/tpl/error.mtt create mode 100644 lang/master/tpl/form.mtt create mode 100644 lang/master/tpl/group/map.mtt create mode 100644 lang/master/tpl/group/place.mtt create mode 100644 lang/master/tpl/group/view.mtt create mode 100644 lang/master/tpl/home.mtt create mode 100644 lang/master/tpl/install/default.mtt create mode 100644 lang/master/tpl/macros.mtt create mode 100644 lang/master/tpl/mail/design.mtt create mode 100644 lang/master/tpl/mail/forgottenPassword.mtt create mode 100644 lang/master/tpl/mail/invitation.mtt create mode 100644 lang/master/tpl/mail/message.mtt create mode 100644 lang/master/tpl/mail/newPasswordConfirmed.mtt create mode 100644 lang/master/tpl/mail/orderSummaryForMember.mtt create mode 100644 lang/master/tpl/mail/ordersByProduct.mtt create mode 100644 lang/master/tpl/maintain.mtt create mode 100644 lang/master/tpl/member/balance.mtt create mode 100644 lang/master/tpl/member/default.mtt create mode 100644 lang/master/tpl/member/import.mtt create mode 100644 lang/master/tpl/member/lastMessages.mtt create mode 100644 lang/master/tpl/member/payments.mtt create mode 100644 lang/master/tpl/member/view.mtt create mode 100644 lang/master/tpl/member/waiting.mtt create mode 100644 lang/master/tpl/membership/default.mtt create mode 100644 lang/master/tpl/messages/default.mtt create mode 100644 lang/master/tpl/messages/message.mtt create mode 100644 lang/master/tpl/place/view.mtt create mode 100644 lang/master/tpl/product/addimage.mtt create mode 100644 lang/master/tpl/product/categorize.mtt create mode 100644 lang/master/tpl/product/compose.mtt create mode 100644 lang/master/tpl/product/import.mtt create mode 100644 lang/master/tpl/shop/choose.mtt create mode 100644 lang/master/tpl/shop/default.mtt create mode 100644 lang/master/tpl/shop/default2.mtt create mode 100644 lang/master/tpl/shop/needLogin.mtt create mode 100644 lang/master/tpl/shop/productInfo.mtt create mode 100644 lang/master/tpl/stats/default.mtt create mode 100644 lang/master/tpl/transaction/cash.mtt create mode 100644 lang/master/tpl/transaction/check.mtt create mode 100644 lang/master/tpl/transaction/moneypot.mtt create mode 100644 lang/master/tpl/transaction/pay.mtt create mode 100644 lang/master/tpl/transaction/transfer.mtt create mode 100644 lang/master/tpl/transaction/view.mtt create mode 100644 lang/master/tpl/user/choose.mtt create mode 100644 lang/master/tpl/user/default.mtt create mode 100644 lang/master/tpl/user/definePassword.mtt create mode 100644 lang/master/tpl/user/forgottenPassword.mtt create mode 100644 lang/master/tpl/user/insert.mtt create mode 100644 lang/master/tpl/user/login.mtt create mode 100644 lang/master/tpl/user/register.mtt create mode 100644 lang/master/tpl/validate/user.mtt create mode 100644 lang/master/tpl/vendor/addimage.mtt create mode 100644 lang/master/tpl/vendor/default.mtt create mode 100644 lang/master/tpl/vendor/view.mtt create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 potGeneration.hxml create mode 100755 src/App.hx create mode 100644 src/Calendar.hx create mode 100644 src/MultiDistrib.hx create mode 100644 src/MyMacros.hx create mode 100755 src/View.hx create mode 100755 src/controller/Account.hx create mode 100755 src/controller/Amap.hx create mode 100755 src/controller/AmapAdmin.hx create mode 100644 src/controller/Api.hx create mode 100755 src/controller/Categories.hx create mode 100755 src/controller/Contract.hx create mode 100755 src/controller/ContractAdmin.hx create mode 100755 src/controller/Controller.hx create mode 100755 src/controller/Cron.hx create mode 100755 src/controller/Distribution.hx create mode 100644 src/controller/Group.hx create mode 100644 src/controller/Install.hx create mode 100755 src/controller/Main.hx create mode 100755 src/controller/Member.hx create mode 100755 src/controller/Membership.hx create mode 100755 src/controller/Messages.hx create mode 100755 src/controller/Place.hx create mode 100755 src/controller/Plugin.hx create mode 100755 src/controller/Product.hx create mode 100755 src/controller/Shop.hx create mode 100755 src/controller/Stats.hx create mode 100644 src/controller/Transaction.hx create mode 100755 src/controller/User.hx create mode 100644 src/controller/Validate.hx create mode 100755 src/controller/Vendor.hx create mode 100755 src/controller/admin/Admin.hx create mode 100755 src/controller/admin/Plugins.hx create mode 100644 src/controller/api/Group.hx create mode 100644 src/controller/api/Order.hx create mode 100644 src/controller/api/Product.hx create mode 100644 src/controller/api/Shop.hx create mode 100644 src/controller/api/User.hx create mode 100755 src/db/Amap.hx create mode 100644 src/db/Basket.hx create mode 100755 src/db/Category.hx create mode 100755 src/db/CategoryGroup.hx create mode 100755 src/db/Contract.hx create mode 100755 src/db/Distribution.hx create mode 100755 src/db/DistributionCycle.hx create mode 100644 src/db/Graph.hx create mode 100755 src/db/Membership.hx create mode 100755 src/db/Message.hx create mode 100644 src/db/Operation.hx create mode 100755 src/db/Place.hx create mode 100755 src/db/Product.hx create mode 100755 src/db/ProductCategory.hx create mode 100644 src/db/TxpCategory.hx create mode 100644 src/db/TxpProduct.hx create mode 100644 src/db/TxpSubCategory.hx create mode 100755 src/db/User.hx create mode 100755 src/db/UserAmap.hx create mode 100755 src/db/UserContract.hx create mode 100755 src/db/Vendor.hx create mode 100644 src/db/WaitingList.hx create mode 100755 src/form/ColorRadioGroup.hx create mode 100755 src/form/ProductTypeRadioGroup.hx create mode 100644 src/form/UnitQuantity.hx create mode 100644 src/payment/Cash.hx create mode 100644 src/payment/Check.hx create mode 100644 src/payment/MoneyPot.hx create mode 100644 src/payment/Payment.hx create mode 100644 src/payment/Transfer.hx create mode 100644 src/plugin/Tutorial.hx create mode 100644 src/service/DistributionService.hx create mode 100644 src/service/GroupService.hx create mode 100644 src/service/OrderService.hx create mode 100644 src/service/PaymentService.hx create mode 100644 src/service/PlaceService.hx create mode 100644 src/service/ProductService.hx create mode 100644 src/service/ReportService.hx create mode 100644 src/service/UserService.hx create mode 100644 src/service/WaitingListService.hx create mode 100644 src/test/TestDistributions.hx create mode 100644 src/test/TestOrders.hx create mode 100644 src/test/TestPayments.hx create mode 100644 src/test/TestReports.hx create mode 100644 src/test/TestSuite.hx create mode 100644 src/test/TestTools.hx create mode 100644 src/test/TestUser.hx create mode 100644 src/tools/ArrayTool.hx create mode 100644 src/tools/DateTool.hx create mode 100644 src/tools/FloatTool.hx create mode 100644 src/tools/ObjectListTool.hx create mode 100644 src/tools/StockTool.hx create mode 100644 tests.hxml create mode 100644 testsJS.hxml create mode 100644 testsPlugins.hxml create mode 100755 www/.htaccess create mode 100755 www/adherents.xls create mode 100755 www/bower.json create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/.bower.json create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/CONTRIBUTING.md create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/Gruntfile.js create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/LICENSE create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/README.md create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/bower.json create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/build/nuget/Bootstrap.v3.Datetimepicker.4.0.0.nupkg create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/build/nuget/Bootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/component.json create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/composer.json create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/package.json create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/_bootstrap-datetimepicker.less create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.nuspec create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/NuGet.exe create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/install.ps1 create mode 100755 www/bower_components/eonasdan-bootstrap-datetimepicker/tasks/bump_version.js create mode 100755 www/bower_components/jquery/.bower.json create mode 100644 www/bower_components/jquery/AUTHORS.txt create mode 100644 www/bower_components/jquery/LICENSE.txt create mode 100755 www/bower_components/jquery/MIT-LICENSE.txt create mode 100644 www/bower_components/jquery/README.md create mode 100755 www/bower_components/jquery/bower.json create mode 100644 www/bower_components/jquery/dist/core.js create mode 100755 www/bower_components/jquery/dist/jquery.js create mode 100755 www/bower_components/jquery/dist/jquery.min.js create mode 100644 www/bower_components/jquery/dist/jquery.slim.js create mode 100644 www/bower_components/jquery/dist/jquery.slim.min.js create mode 100644 www/bower_components/jquery/external/sizzle/LICENSE.txt create mode 100644 www/bower_components/jquery/external/sizzle/dist/sizzle.js create mode 100644 www/bower_components/jquery/external/sizzle/dist/sizzle.min.js create mode 100644 www/bower_components/jquery/src/.eslintrc create mode 100755 www/bower_components/jquery/src/ajax.js create mode 100755 www/bower_components/jquery/src/ajax/jsonp.js create mode 100755 www/bower_components/jquery/src/ajax/load.js create mode 100755 www/bower_components/jquery/src/ajax/parseJSON.js create mode 100755 www/bower_components/jquery/src/ajax/parseXML.js create mode 100755 www/bower_components/jquery/src/ajax/script.js create mode 100644 www/bower_components/jquery/src/ajax/var/location.js create mode 100755 www/bower_components/jquery/src/ajax/var/nonce.js create mode 100755 www/bower_components/jquery/src/ajax/var/rquery.js create mode 100755 www/bower_components/jquery/src/ajax/xhr.js create mode 100755 www/bower_components/jquery/src/attributes.js create mode 100755 www/bower_components/jquery/src/attributes/attr.js create mode 100755 www/bower_components/jquery/src/attributes/classes.js create mode 100755 www/bower_components/jquery/src/attributes/prop.js create mode 100755 www/bower_components/jquery/src/attributes/support.js create mode 100755 www/bower_components/jquery/src/attributes/val.js create mode 100755 www/bower_components/jquery/src/callbacks.js create mode 100755 www/bower_components/jquery/src/core.js create mode 100644 www/bower_components/jquery/src/core/DOMEval.js create mode 100755 www/bower_components/jquery/src/core/access.js create mode 100755 www/bower_components/jquery/src/core/init.js create mode 100755 www/bower_components/jquery/src/core/parseHTML.js create mode 100644 www/bower_components/jquery/src/core/ready-no-deferred.js create mode 100755 www/bower_components/jquery/src/core/ready.js create mode 100644 www/bower_components/jquery/src/core/readyException.js create mode 100644 www/bower_components/jquery/src/core/support.js create mode 100755 www/bower_components/jquery/src/core/var/rsingleTag.js create mode 100755 www/bower_components/jquery/src/css.js create mode 100755 www/bower_components/jquery/src/css/addGetHookIf.js create mode 100644 www/bower_components/jquery/src/css/adjustCSS.js create mode 100755 www/bower_components/jquery/src/css/curCSS.js create mode 100755 www/bower_components/jquery/src/css/defaultDisplay.js create mode 100755 www/bower_components/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 www/bower_components/jquery/src/css/showHide.js create mode 100755 www/bower_components/jquery/src/css/support.js create mode 100755 www/bower_components/jquery/src/css/swap.js create mode 100755 www/bower_components/jquery/src/css/var/cssExpand.js create mode 100755 www/bower_components/jquery/src/css/var/getStyles.js create mode 100755 www/bower_components/jquery/src/css/var/isHidden.js create mode 100644 www/bower_components/jquery/src/css/var/isHiddenWithinTree.js create mode 100755 www/bower_components/jquery/src/css/var/rmargin.js create mode 100755 www/bower_components/jquery/src/css/var/rnumnonpx.js create mode 100644 www/bower_components/jquery/src/css/var/swap.js create mode 100755 www/bower_components/jquery/src/data.js create mode 100755 www/bower_components/jquery/src/data/Data.js create mode 100755 www/bower_components/jquery/src/data/accepts.js create mode 100644 www/bower_components/jquery/src/data/var/acceptData.js create mode 100644 www/bower_components/jquery/src/data/var/dataPriv.js create mode 100644 www/bower_components/jquery/src/data/var/dataUser.js create mode 100755 www/bower_components/jquery/src/data/var/data_priv.js create mode 100755 www/bower_components/jquery/src/data/var/data_user.js create mode 100755 www/bower_components/jquery/src/deferred.js create mode 100644 www/bower_components/jquery/src/deferred/exceptionHook.js create mode 100755 www/bower_components/jquery/src/deprecated.js create mode 100755 www/bower_components/jquery/src/dimensions.js create mode 100755 www/bower_components/jquery/src/effects.js create mode 100755 www/bower_components/jquery/src/effects/Tween.js create mode 100755 www/bower_components/jquery/src/effects/animatedSelector.js create mode 100755 www/bower_components/jquery/src/event.js create mode 100755 www/bower_components/jquery/src/event/ajax.js create mode 100755 www/bower_components/jquery/src/event/alias.js create mode 100644 www/bower_components/jquery/src/event/focusin.js create mode 100755 www/bower_components/jquery/src/event/support.js create mode 100644 www/bower_components/jquery/src/event/trigger.js create mode 100755 www/bower_components/jquery/src/exports/amd.js create mode 100755 www/bower_components/jquery/src/exports/global.js create mode 100755 www/bower_components/jquery/src/intro.js create mode 100755 www/bower_components/jquery/src/jquery.js create mode 100755 www/bower_components/jquery/src/manipulation.js create mode 100755 www/bower_components/jquery/src/manipulation/_evalUrl.js create mode 100644 www/bower_components/jquery/src/manipulation/buildFragment.js create mode 100644 www/bower_components/jquery/src/manipulation/getAll.js create mode 100644 www/bower_components/jquery/src/manipulation/setGlobalEval.js create mode 100755 www/bower_components/jquery/src/manipulation/support.js create mode 100755 www/bower_components/jquery/src/manipulation/var/rcheckableType.js create mode 100644 www/bower_components/jquery/src/manipulation/var/rscriptType.js create mode 100644 www/bower_components/jquery/src/manipulation/var/rtagName.js create mode 100644 www/bower_components/jquery/src/manipulation/wrapMap.js create mode 100755 www/bower_components/jquery/src/offset.js create mode 100755 www/bower_components/jquery/src/outro.js create mode 100755 www/bower_components/jquery/src/queue.js create mode 100755 www/bower_components/jquery/src/queue/delay.js create mode 100755 www/bower_components/jquery/src/selector-native.js create mode 100755 www/bower_components/jquery/src/selector-sizzle.js create mode 100755 www/bower_components/jquery/src/selector.js create mode 100755 www/bower_components/jquery/src/serialize.js create mode 100755 www/bower_components/jquery/src/sizzle/dist/sizzle.js create mode 100755 www/bower_components/jquery/src/sizzle/dist/sizzle.min.js create mode 100755 www/bower_components/jquery/src/traversing.js create mode 100755 www/bower_components/jquery/src/traversing/findFilter.js create mode 100644 www/bower_components/jquery/src/traversing/var/dir.js create mode 100755 www/bower_components/jquery/src/traversing/var/rneedsContext.js create mode 100644 www/bower_components/jquery/src/traversing/var/siblings.js create mode 100644 www/bower_components/jquery/src/var/ObjectFunctionString.js create mode 100755 www/bower_components/jquery/src/var/arr.js create mode 100755 www/bower_components/jquery/src/var/class2type.js create mode 100755 www/bower_components/jquery/src/var/concat.js create mode 100644 www/bower_components/jquery/src/var/document.js create mode 100644 www/bower_components/jquery/src/var/documentElement.js create mode 100644 www/bower_components/jquery/src/var/fnToString.js create mode 100644 www/bower_components/jquery/src/var/getProto.js create mode 100755 www/bower_components/jquery/src/var/hasOwn.js create mode 100755 www/bower_components/jquery/src/var/indexOf.js create mode 100755 www/bower_components/jquery/src/var/pnum.js create mode 100755 www/bower_components/jquery/src/var/push.js create mode 100644 www/bower_components/jquery/src/var/rcssNum.js create mode 100755 www/bower_components/jquery/src/var/rnotwhite.js create mode 100755 www/bower_components/jquery/src/var/slice.js create mode 100755 www/bower_components/jquery/src/var/strundefined.js create mode 100755 www/bower_components/jquery/src/var/support.js create mode 100755 www/bower_components/jquery/src/var/toString.js create mode 100755 www/bower_components/jquery/src/wrap.js create mode 100755 www/bower_components/moment/.bower.json create mode 100755 www/bower_components/moment/CHANGELOG.md create mode 100755 www/bower_components/moment/LICENSE create mode 100755 www/bower_components/moment/Moment.js.nuspec create mode 100755 www/bower_components/moment/README.md create mode 100755 www/bower_components/moment/benchmarks/clone.js create mode 100755 www/bower_components/moment/bower.json create mode 100755 www/bower_components/moment/locale/af.js create mode 100755 www/bower_components/moment/locale/ar-ma.js create mode 100755 www/bower_components/moment/locale/ar-sa.js create mode 100755 www/bower_components/moment/locale/ar-tn.js create mode 100755 www/bower_components/moment/locale/ar.js create mode 100755 www/bower_components/moment/locale/az.js create mode 100755 www/bower_components/moment/locale/be.js create mode 100755 www/bower_components/moment/locale/bg.js create mode 100755 www/bower_components/moment/locale/bn.js create mode 100755 www/bower_components/moment/locale/bo.js create mode 100755 www/bower_components/moment/locale/br.js create mode 100755 www/bower_components/moment/locale/bs.js create mode 100755 www/bower_components/moment/locale/ca.js create mode 100755 www/bower_components/moment/locale/cs.js create mode 100755 www/bower_components/moment/locale/cv.js create mode 100755 www/bower_components/moment/locale/cy.js create mode 100755 www/bower_components/moment/locale/da.js create mode 100755 www/bower_components/moment/locale/de-at.js create mode 100755 www/bower_components/moment/locale/de.js create mode 100644 www/bower_components/moment/locale/dv.js create mode 100755 www/bower_components/moment/locale/el.js create mode 100755 www/bower_components/moment/locale/en-au.js create mode 100755 www/bower_components/moment/locale/en-ca.js create mode 100755 www/bower_components/moment/locale/en-gb.js create mode 100644 www/bower_components/moment/locale/en-ie.js create mode 100644 www/bower_components/moment/locale/en-nz.js create mode 100755 www/bower_components/moment/locale/eo.js create mode 100644 www/bower_components/moment/locale/es-do.js create mode 100755 www/bower_components/moment/locale/es.js create mode 100755 www/bower_components/moment/locale/et.js create mode 100755 www/bower_components/moment/locale/eu.js create mode 100755 www/bower_components/moment/locale/fa.js create mode 100755 www/bower_components/moment/locale/fi.js create mode 100755 www/bower_components/moment/locale/fo.js create mode 100755 www/bower_components/moment/locale/fr-ca.js create mode 100644 www/bower_components/moment/locale/fr-ch.js create mode 100755 www/bower_components/moment/locale/fr.js create mode 100755 www/bower_components/moment/locale/fy.js create mode 100644 www/bower_components/moment/locale/gd.js create mode 100755 www/bower_components/moment/locale/gl.js create mode 100755 www/bower_components/moment/locale/he.js create mode 100755 www/bower_components/moment/locale/hi.js create mode 100755 www/bower_components/moment/locale/hr.js create mode 100755 www/bower_components/moment/locale/hu.js create mode 100755 www/bower_components/moment/locale/hy-am.js create mode 100755 www/bower_components/moment/locale/id.js create mode 100755 www/bower_components/moment/locale/is.js create mode 100755 www/bower_components/moment/locale/it.js create mode 100755 www/bower_components/moment/locale/ja.js create mode 100644 www/bower_components/moment/locale/jv.js create mode 100755 www/bower_components/moment/locale/ka.js create mode 100644 www/bower_components/moment/locale/kk.js create mode 100755 www/bower_components/moment/locale/km.js create mode 100755 www/bower_components/moment/locale/ko.js create mode 100644 www/bower_components/moment/locale/ky.js create mode 100755 www/bower_components/moment/locale/lb.js create mode 100644 www/bower_components/moment/locale/lo.js create mode 100755 www/bower_components/moment/locale/lt.js create mode 100755 www/bower_components/moment/locale/lv.js create mode 100644 www/bower_components/moment/locale/me.js create mode 100755 www/bower_components/moment/locale/mk.js create mode 100755 www/bower_components/moment/locale/ml.js create mode 100755 www/bower_components/moment/locale/mr.js create mode 100755 www/bower_components/moment/locale/ms-my.js create mode 100644 www/bower_components/moment/locale/ms.js create mode 100755 www/bower_components/moment/locale/my.js create mode 100755 www/bower_components/moment/locale/nb.js create mode 100755 www/bower_components/moment/locale/ne.js create mode 100755 www/bower_components/moment/locale/nl.js create mode 100755 www/bower_components/moment/locale/nn.js create mode 100644 www/bower_components/moment/locale/pa-in.js create mode 100755 www/bower_components/moment/locale/pl.js create mode 100755 www/bower_components/moment/locale/pt-br.js create mode 100755 www/bower_components/moment/locale/pt.js create mode 100755 www/bower_components/moment/locale/ro.js create mode 100755 www/bower_components/moment/locale/ru.js create mode 100644 www/bower_components/moment/locale/se.js create mode 100644 www/bower_components/moment/locale/si.js create mode 100755 www/bower_components/moment/locale/sk.js create mode 100755 www/bower_components/moment/locale/sl.js create mode 100755 www/bower_components/moment/locale/sq.js create mode 100755 www/bower_components/moment/locale/sr-cyrl.js create mode 100755 www/bower_components/moment/locale/sr.js create mode 100644 www/bower_components/moment/locale/ss.js create mode 100755 www/bower_components/moment/locale/sv.js create mode 100644 www/bower_components/moment/locale/sw.js create mode 100755 www/bower_components/moment/locale/ta.js create mode 100644 www/bower_components/moment/locale/te.js create mode 100755 www/bower_components/moment/locale/th.js create mode 100755 www/bower_components/moment/locale/tl-ph.js create mode 100644 www/bower_components/moment/locale/tlh.js create mode 100755 www/bower_components/moment/locale/tr.js create mode 100644 www/bower_components/moment/locale/tzl.js create mode 100755 www/bower_components/moment/locale/tzm-latn.js create mode 100755 www/bower_components/moment/locale/tzm.js create mode 100755 www/bower_components/moment/locale/uk.js create mode 100755 www/bower_components/moment/locale/uz.js create mode 100755 www/bower_components/moment/locale/vi.js create mode 100644 www/bower_components/moment/locale/x-pseudo.js create mode 100755 www/bower_components/moment/locale/zh-cn.js create mode 100755 www/bower_components/moment/locale/zh-tw.js create mode 100755 www/bower_components/moment/meteor/README.md create mode 100755 www/bower_components/moment/meteor/export.js create mode 100755 www/bower_components/moment/meteor/test.js create mode 100755 www/bower_components/moment/min/locales.js create mode 100755 www/bower_components/moment/min/locales.min.js create mode 100755 www/bower_components/moment/min/moment-with-locales.js create mode 100755 www/bower_components/moment/min/moment-with-locales.min.js create mode 100755 www/bower_components/moment/min/moment.min.js create mode 100755 www/bower_components/moment/min/tests.js create mode 100644 www/bower_components/moment/moment.d.ts create mode 100755 www/bower_components/moment/moment.js create mode 100755 www/bower_components/moment/scripts/npm_prepublish.sh create mode 100755 www/bower_components/moment/src/lib/create/check-overflow.js create mode 100755 www/bower_components/moment/src/lib/create/date-from-array.js create mode 100755 www/bower_components/moment/src/lib/create/default-parsing-flags.js create mode 100755 www/bower_components/moment/src/lib/create/from-anything.js create mode 100755 www/bower_components/moment/src/lib/create/from-array.js create mode 100755 www/bower_components/moment/src/lib/create/from-object.js create mode 100755 www/bower_components/moment/src/lib/create/from-string-and-array.js create mode 100755 www/bower_components/moment/src/lib/create/from-string-and-format.js create mode 100755 www/bower_components/moment/src/lib/create/from-string.js create mode 100755 www/bower_components/moment/src/lib/create/local.js create mode 100644 www/bower_components/moment/src/lib/create/parsing-flags.js create mode 100755 www/bower_components/moment/src/lib/create/utc.js create mode 100755 www/bower_components/moment/src/lib/create/valid.js create mode 100755 www/bower_components/moment/src/lib/duration/abs.js create mode 100755 www/bower_components/moment/src/lib/duration/add-subtract.js create mode 100755 www/bower_components/moment/src/lib/duration/as.js create mode 100755 www/bower_components/moment/src/lib/duration/bubble.js create mode 100755 www/bower_components/moment/src/lib/duration/constructor.js create mode 100755 www/bower_components/moment/src/lib/duration/create.js create mode 100755 www/bower_components/moment/src/lib/duration/duration.js create mode 100755 www/bower_components/moment/src/lib/duration/get.js create mode 100755 www/bower_components/moment/src/lib/duration/humanize.js create mode 100755 www/bower_components/moment/src/lib/duration/iso-string.js create mode 100755 www/bower_components/moment/src/lib/duration/prototype.js create mode 100755 www/bower_components/moment/src/lib/format/format.js create mode 100644 www/bower_components/moment/src/lib/locale/base-config.js create mode 100755 www/bower_components/moment/src/lib/locale/calendar.js create mode 100755 www/bower_components/moment/src/lib/locale/constructor.js create mode 100755 www/bower_components/moment/src/lib/locale/en.js create mode 100755 www/bower_components/moment/src/lib/locale/formats.js create mode 100755 www/bower_components/moment/src/lib/locale/invalid.js create mode 100755 www/bower_components/moment/src/lib/locale/lists.js create mode 100755 www/bower_components/moment/src/lib/locale/locale.js create mode 100755 www/bower_components/moment/src/lib/locale/locales.js create mode 100755 www/bower_components/moment/src/lib/locale/ordinal.js create mode 100755 www/bower_components/moment/src/lib/locale/pre-post-format.js create mode 100755 www/bower_components/moment/src/lib/locale/prototype.js create mode 100755 www/bower_components/moment/src/lib/locale/relative.js create mode 100755 www/bower_components/moment/src/lib/locale/set.js create mode 100755 www/bower_components/moment/src/lib/moment/add-subtract.js create mode 100755 www/bower_components/moment/src/lib/moment/calendar.js create mode 100755 www/bower_components/moment/src/lib/moment/clone.js create mode 100755 www/bower_components/moment/src/lib/moment/compare.js create mode 100755 www/bower_components/moment/src/lib/moment/constructor.js create mode 100644 www/bower_components/moment/src/lib/moment/creation-data.js create mode 100755 www/bower_components/moment/src/lib/moment/diff.js create mode 100755 www/bower_components/moment/src/lib/moment/format.js create mode 100755 www/bower_components/moment/src/lib/moment/from.js create mode 100755 www/bower_components/moment/src/lib/moment/get-set.js create mode 100755 www/bower_components/moment/src/lib/moment/locale.js create mode 100755 www/bower_components/moment/src/lib/moment/min-max.js create mode 100755 www/bower_components/moment/src/lib/moment/moment.js create mode 100644 www/bower_components/moment/src/lib/moment/now.js create mode 100755 www/bower_components/moment/src/lib/moment/prototype.js create mode 100755 www/bower_components/moment/src/lib/moment/start-end-of.js create mode 100755 www/bower_components/moment/src/lib/moment/to-type.js create mode 100644 www/bower_components/moment/src/lib/moment/to.js create mode 100755 www/bower_components/moment/src/lib/moment/valid.js create mode 100755 www/bower_components/moment/src/lib/parse/regex.js create mode 100755 www/bower_components/moment/src/lib/parse/token.js create mode 100755 www/bower_components/moment/src/lib/units/aliases.js create mode 100755 www/bower_components/moment/src/lib/units/constants.js create mode 100755 www/bower_components/moment/src/lib/units/day-of-month.js create mode 100755 www/bower_components/moment/src/lib/units/day-of-week.js create mode 100755 www/bower_components/moment/src/lib/units/day-of-year.js create mode 100755 www/bower_components/moment/src/lib/units/hour.js create mode 100755 www/bower_components/moment/src/lib/units/millisecond.js create mode 100755 www/bower_components/moment/src/lib/units/minute.js create mode 100755 www/bower_components/moment/src/lib/units/month.js create mode 100755 www/bower_components/moment/src/lib/units/offset.js create mode 100644 www/bower_components/moment/src/lib/units/priorities.js create mode 100755 www/bower_components/moment/src/lib/units/quarter.js create mode 100755 www/bower_components/moment/src/lib/units/second.js create mode 100755 www/bower_components/moment/src/lib/units/timestamp.js create mode 100755 www/bower_components/moment/src/lib/units/timezone.js create mode 100755 www/bower_components/moment/src/lib/units/units.js create mode 100644 www/bower_components/moment/src/lib/units/week-calendar-utils.js create mode 100755 www/bower_components/moment/src/lib/units/week-year.js create mode 100755 www/bower_components/moment/src/lib/units/week.js create mode 100755 www/bower_components/moment/src/lib/units/year.js create mode 100644 www/bower_components/moment/src/lib/utils/abs-ceil.js create mode 100755 www/bower_components/moment/src/lib/utils/abs-floor.js create mode 100644 www/bower_components/moment/src/lib/utils/abs-round.js create mode 100755 www/bower_components/moment/src/lib/utils/compare-arrays.js create mode 100755 www/bower_components/moment/src/lib/utils/defaults.js create mode 100755 www/bower_components/moment/src/lib/utils/deprecate.js create mode 100755 www/bower_components/moment/src/lib/utils/extend.js create mode 100755 www/bower_components/moment/src/lib/utils/has-own-prop.js create mode 100755 www/bower_components/moment/src/lib/utils/hooks.js create mode 100644 www/bower_components/moment/src/lib/utils/index-of.js create mode 100755 www/bower_components/moment/src/lib/utils/is-array.js create mode 100755 www/bower_components/moment/src/lib/utils/is-date.js create mode 100644 www/bower_components/moment/src/lib/utils/is-function.js create mode 100644 www/bower_components/moment/src/lib/utils/is-object-empty.js create mode 100644 www/bower_components/moment/src/lib/utils/is-object.js create mode 100644 www/bower_components/moment/src/lib/utils/is-undefined.js create mode 100644 www/bower_components/moment/src/lib/utils/keys.js create mode 100755 www/bower_components/moment/src/lib/utils/map.js create mode 100644 www/bower_components/moment/src/lib/utils/some.js create mode 100755 www/bower_components/moment/src/lib/utils/to-int.js create mode 100755 www/bower_components/moment/src/lib/utils/zero-fill.js create mode 100755 www/bower_components/moment/src/locale/af.js create mode 100755 www/bower_components/moment/src/locale/ar-ma.js create mode 100755 www/bower_components/moment/src/locale/ar-sa.js create mode 100755 www/bower_components/moment/src/locale/ar-tn.js create mode 100755 www/bower_components/moment/src/locale/ar.js create mode 100755 www/bower_components/moment/src/locale/az.js create mode 100755 www/bower_components/moment/src/locale/be.js create mode 100755 www/bower_components/moment/src/locale/bg.js create mode 100755 www/bower_components/moment/src/locale/bn.js create mode 100755 www/bower_components/moment/src/locale/bo.js create mode 100755 www/bower_components/moment/src/locale/br.js create mode 100755 www/bower_components/moment/src/locale/bs.js create mode 100755 www/bower_components/moment/src/locale/ca.js create mode 100755 www/bower_components/moment/src/locale/cs.js create mode 100755 www/bower_components/moment/src/locale/cv.js create mode 100755 www/bower_components/moment/src/locale/cy.js create mode 100755 www/bower_components/moment/src/locale/da.js create mode 100755 www/bower_components/moment/src/locale/de-at.js create mode 100755 www/bower_components/moment/src/locale/de.js create mode 100644 www/bower_components/moment/src/locale/dv.js create mode 100755 www/bower_components/moment/src/locale/el.js create mode 100755 www/bower_components/moment/src/locale/en-au.js create mode 100755 www/bower_components/moment/src/locale/en-ca.js create mode 100755 www/bower_components/moment/src/locale/en-gb.js create mode 100644 www/bower_components/moment/src/locale/en-ie.js create mode 100644 www/bower_components/moment/src/locale/en-nz.js create mode 100755 www/bower_components/moment/src/locale/eo.js create mode 100644 www/bower_components/moment/src/locale/es-do.js create mode 100755 www/bower_components/moment/src/locale/es.js create mode 100755 www/bower_components/moment/src/locale/et.js create mode 100755 www/bower_components/moment/src/locale/eu.js create mode 100755 www/bower_components/moment/src/locale/fa.js create mode 100755 www/bower_components/moment/src/locale/fi.js create mode 100755 www/bower_components/moment/src/locale/fo.js create mode 100755 www/bower_components/moment/src/locale/fr-ca.js create mode 100644 www/bower_components/moment/src/locale/fr-ch.js create mode 100755 www/bower_components/moment/src/locale/fr.js create mode 100755 www/bower_components/moment/src/locale/fy.js create mode 100644 www/bower_components/moment/src/locale/gd.js create mode 100755 www/bower_components/moment/src/locale/gl.js create mode 100755 www/bower_components/moment/src/locale/he.js create mode 100755 www/bower_components/moment/src/locale/hi.js create mode 100755 www/bower_components/moment/src/locale/hr.js create mode 100755 www/bower_components/moment/src/locale/hu.js create mode 100755 www/bower_components/moment/src/locale/hy-am.js create mode 100755 www/bower_components/moment/src/locale/id.js create mode 100755 www/bower_components/moment/src/locale/is.js create mode 100755 www/bower_components/moment/src/locale/it.js create mode 100755 www/bower_components/moment/src/locale/ja.js create mode 100644 www/bower_components/moment/src/locale/jv.js create mode 100755 www/bower_components/moment/src/locale/ka.js create mode 100644 www/bower_components/moment/src/locale/kk.js create mode 100755 www/bower_components/moment/src/locale/km.js create mode 100755 www/bower_components/moment/src/locale/ko.js create mode 100644 www/bower_components/moment/src/locale/ky.js create mode 100755 www/bower_components/moment/src/locale/lb.js create mode 100644 www/bower_components/moment/src/locale/lo.js create mode 100755 www/bower_components/moment/src/locale/lt.js create mode 100755 www/bower_components/moment/src/locale/lv.js create mode 100644 www/bower_components/moment/src/locale/me.js create mode 100755 www/bower_components/moment/src/locale/mk.js create mode 100755 www/bower_components/moment/src/locale/ml.js create mode 100755 www/bower_components/moment/src/locale/mr.js create mode 100755 www/bower_components/moment/src/locale/ms-my.js create mode 100644 www/bower_components/moment/src/locale/ms.js create mode 100755 www/bower_components/moment/src/locale/my.js create mode 100755 www/bower_components/moment/src/locale/nb.js create mode 100755 www/bower_components/moment/src/locale/ne.js create mode 100755 www/bower_components/moment/src/locale/nl.js create mode 100755 www/bower_components/moment/src/locale/nn.js create mode 100644 www/bower_components/moment/src/locale/pa-in.js create mode 100755 www/bower_components/moment/src/locale/pl.js create mode 100755 www/bower_components/moment/src/locale/pt-br.js create mode 100755 www/bower_components/moment/src/locale/pt.js create mode 100755 www/bower_components/moment/src/locale/ro.js create mode 100755 www/bower_components/moment/src/locale/ru.js create mode 100644 www/bower_components/moment/src/locale/se.js create mode 100644 www/bower_components/moment/src/locale/si.js create mode 100755 www/bower_components/moment/src/locale/sk.js create mode 100755 www/bower_components/moment/src/locale/sl.js create mode 100755 www/bower_components/moment/src/locale/sq.js create mode 100755 www/bower_components/moment/src/locale/sr-cyrl.js create mode 100755 www/bower_components/moment/src/locale/sr.js create mode 100644 www/bower_components/moment/src/locale/ss.js create mode 100755 www/bower_components/moment/src/locale/sv.js create mode 100644 www/bower_components/moment/src/locale/sw.js create mode 100755 www/bower_components/moment/src/locale/ta.js create mode 100644 www/bower_components/moment/src/locale/te.js create mode 100755 www/bower_components/moment/src/locale/th.js create mode 100755 www/bower_components/moment/src/locale/tl-ph.js create mode 100644 www/bower_components/moment/src/locale/tlh.js create mode 100755 www/bower_components/moment/src/locale/tr.js create mode 100644 www/bower_components/moment/src/locale/tzl.js create mode 100755 www/bower_components/moment/src/locale/tzm-latn.js create mode 100755 www/bower_components/moment/src/locale/tzm.js create mode 100755 www/bower_components/moment/src/locale/uk.js create mode 100755 www/bower_components/moment/src/locale/uz.js create mode 100755 www/bower_components/moment/src/locale/vi.js create mode 100644 www/bower_components/moment/src/locale/x-pseudo.js create mode 100755 www/bower_components/moment/src/locale/zh-cn.js create mode 100755 www/bower_components/moment/src/locale/zh-tw.js create mode 100755 www/bower_components/moment/src/moment.js create mode 100755 www/bower_components/moment/templates/amd-named.js create mode 100755 www/bower_components/moment/templates/amd.js create mode 100644 www/bower_components/moment/templates/default.js create mode 100755 www/bower_components/moment/templates/globals.js create mode 100755 www/bower_components/moment/templates/locale-header.js create mode 100755 www/bower_components/moment/templates/test-header.js create mode 100644 www/bower_components/typeahead.js/.bower.json create mode 100644 www/bower_components/typeahead.js/.gitignore create mode 100644 www/bower_components/typeahead.js/.jshintrc create mode 100644 www/bower_components/typeahead.js/.travis.yml create mode 100644 www/bower_components/typeahead.js/CHANGELOG.md create mode 100644 www/bower_components/typeahead.js/CONTRIBUTING.md create mode 100644 www/bower_components/typeahead.js/Gruntfile.js create mode 100644 www/bower_components/typeahead.js/LICENSE create mode 100644 www/bower_components/typeahead.js/README.md create mode 100644 www/bower_components/typeahead.js/bower.json create mode 100644 www/bower_components/typeahead.js/composer.json create mode 100644 www/bower_components/typeahead.js/dist/bloodhound.js create mode 100644 www/bower_components/typeahead.js/dist/bloodhound.min.js create mode 100644 www/bower_components/typeahead.js/dist/typeahead.bundle.js create mode 100644 www/bower_components/typeahead.js/dist/typeahead.bundle.min.js create mode 100644 www/bower_components/typeahead.js/dist/typeahead.jquery.js create mode 100644 www/bower_components/typeahead.js/dist/typeahead.jquery.min.js create mode 100644 www/bower_components/typeahead.js/doc/bloodhound.md create mode 100644 www/bower_components/typeahead.js/doc/jquery_typeahead.md create mode 100644 www/bower_components/typeahead.js/doc/migration/0.10.0.md create mode 100644 www/bower_components/typeahead.js/karma.conf.js create mode 100644 www/bower_components/typeahead.js/package.json create mode 100644 www/bower_components/typeahead.js/src/bloodhound/bloodhound.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/lru_cache.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/options_parser.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/persistent_storage.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/prefetch.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/remote.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/search_index.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/tokenizers.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/transport.js create mode 100644 www/bower_components/typeahead.js/src/bloodhound/version.js create mode 100644 www/bower_components/typeahead.js/src/common/utils.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/dataset.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/default_menu.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/event_bus.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/event_emitter.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/highlight.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/input.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/menu.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/plugin.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/typeahead.js create mode 100644 www/bower_components/typeahead.js/src/typeahead/www.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/bloodhound_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/lru_cache_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/options_parser_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/persistent_storage_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/prefetch_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/remote_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/search_index_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/tokenizers_spec.js create mode 100644 www/bower_components/typeahead.js/test/bloodhound/transport_spec.js create mode 100644 www/bower_components/typeahead.js/test/ci create mode 100644 www/bower_components/typeahead.js/test/fixtures/ajax_responses.js create mode 100644 www/bower_components/typeahead.js/test/fixtures/data.js create mode 100644 www/bower_components/typeahead.js/test/fixtures/html.js create mode 100644 www/bower_components/typeahead.js/test/helpers/typeahead_mocks.js create mode 100644 www/bower_components/typeahead.js/test/integration/test.html create mode 100644 www/bower_components/typeahead.js/test/integration/test.js create mode 100644 www/bower_components/typeahead.js/test/playground.html create mode 100644 www/bower_components/typeahead.js/test/typeahead/dataset_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/default_results_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/event_bus_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/event_emitter_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/highlight_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/input_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/plugin_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/results_spec.js create mode 100644 www/bower_components/typeahead.js/test/typeahead/typeahead_spec.js create mode 100644 www/bower_components/typeahead.js/typeahead.js.jquery.json create mode 100644 www/css/_map.scss create mode 100644 www/css/_shop.scss create mode 100644 www/css/bs3_variables.less create mode 100644 www/css/lemonway.scss create mode 100644 www/css/print.scss create mode 100644 www/css/style.scss create mode 100644 www/favicon.ico create mode 100644 www/fonts/glyphicons-halflings-regular.eot create mode 100644 www/fonts/glyphicons-halflings-regular.svg create mode 100644 www/fonts/glyphicons-halflings-regular.ttf create mode 100644 www/fonts/glyphicons-halflings-regular.woff create mode 100644 www/fonts/glyphicons-halflings-regular.woff2 create mode 100644 www/img/AB.png create mode 100644 www/img/AMAPéi-micro.png create mode 100644 www/img/alilo-trans-black.png create mode 100644 www/img/alilo-trans-white.png create mode 100755 www/img/facebook-16.png create mode 100755 www/img/facebook-32.png create mode 100755 www/img/go.png create mode 100644 www/img/home.svg create mode 100644 www/img/home2.svg create mode 100755 www/img/icons/Thumbs.db create mode 100755 www/img/icons/accept.png create mode 100755 www/img/icons/add.png create mode 100755 www/img/icons/anchor.png create mode 100755 www/img/icons/application.png create mode 100755 www/img/icons/application_add.png create mode 100755 www/img/icons/application_cascade.png create mode 100755 www/img/icons/application_delete.png create mode 100755 www/img/icons/application_double.png create mode 100755 www/img/icons/application_edit.png create mode 100755 www/img/icons/application_error.png create mode 100755 www/img/icons/application_form.png create mode 100755 www/img/icons/application_form_add.png create mode 100755 www/img/icons/application_form_delete.png create mode 100755 www/img/icons/application_form_edit.png create mode 100755 www/img/icons/application_form_magnify.png create mode 100755 www/img/icons/application_get.png create mode 100755 www/img/icons/application_go.png create mode 100755 www/img/icons/application_home.png create mode 100755 www/img/icons/application_key.png create mode 100755 www/img/icons/application_lightning.png create mode 100755 www/img/icons/application_link.png create mode 100755 www/img/icons/application_osx.png create mode 100755 www/img/icons/application_osx_terminal.png create mode 100755 www/img/icons/application_put.png create mode 100755 www/img/icons/application_side_boxes.png create mode 100755 www/img/icons/application_side_contract.png create mode 100755 www/img/icons/application_side_expand.png create mode 100755 www/img/icons/application_side_list.png create mode 100755 www/img/icons/application_side_tree.png create mode 100755 www/img/icons/application_split.png create mode 100755 www/img/icons/application_tile_horizontal.png create mode 100755 www/img/icons/application_tile_vertical.png create mode 100755 www/img/icons/application_view_columns.png create mode 100755 www/img/icons/application_view_detail.png create mode 100755 www/img/icons/application_view_gallery.png create mode 100755 www/img/icons/application_view_icons.png create mode 100755 www/img/icons/application_view_list.png create mode 100755 www/img/icons/application_view_tile.png create mode 100755 www/img/icons/application_xp.png create mode 100755 www/img/icons/application_xp_terminal.png create mode 100755 www/img/icons/arrow_branch.png create mode 100755 www/img/icons/arrow_divide.png create mode 100755 www/img/icons/arrow_down.png create mode 100755 www/img/icons/arrow_in.png create mode 100755 www/img/icons/arrow_inout.png create mode 100755 www/img/icons/arrow_join.png create mode 100755 www/img/icons/arrow_left.png create mode 100755 www/img/icons/arrow_merge.png create mode 100755 www/img/icons/arrow_out.png create mode 100755 www/img/icons/arrow_redo.png create mode 100755 www/img/icons/arrow_refresh.png create mode 100755 www/img/icons/arrow_refresh_small.png create mode 100755 www/img/icons/arrow_right.png create mode 100755 www/img/icons/arrow_rotate_anticlockwise.png create mode 100755 www/img/icons/arrow_rotate_clockwise.png create mode 100755 www/img/icons/arrow_switch.png create mode 100755 www/img/icons/arrow_turn_left.png create mode 100755 www/img/icons/arrow_turn_right.png create mode 100755 www/img/icons/arrow_undo.png create mode 100755 www/img/icons/arrow_up.png create mode 100755 www/img/icons/asterisk_orange.png create mode 100755 www/img/icons/asterisk_yellow.png create mode 100755 www/img/icons/attach.png create mode 100755 www/img/icons/award_star_add.png create mode 100755 www/img/icons/award_star_bronze_1.png create mode 100755 www/img/icons/award_star_bronze_2.png create mode 100755 www/img/icons/award_star_bronze_3.png create mode 100755 www/img/icons/award_star_delete.png create mode 100755 www/img/icons/award_star_gold_1.png create mode 100755 www/img/icons/award_star_gold_2.png create mode 100755 www/img/icons/award_star_gold_3.png create mode 100755 www/img/icons/award_star_silver_1.png create mode 100755 www/img/icons/award_star_silver_2.png create mode 100755 www/img/icons/award_star_silver_3.png create mode 100755 www/img/icons/basket.png create mode 100755 www/img/icons/basket_add.png create mode 100755 www/img/icons/basket_delete.png create mode 100755 www/img/icons/basket_edit.png create mode 100755 www/img/icons/basket_error.png create mode 100755 www/img/icons/basket_go.png create mode 100755 www/img/icons/basket_put.png create mode 100755 www/img/icons/basket_remove.png create mode 100755 www/img/icons/bell.png create mode 100755 www/img/icons/bell_add.png create mode 100755 www/img/icons/bell_delete.png create mode 100755 www/img/icons/bell_error.png create mode 100755 www/img/icons/bell_go.png create mode 100755 www/img/icons/bell_link.png create mode 100755 www/img/icons/bin.png create mode 100755 www/img/icons/bin_closed.png create mode 100755 www/img/icons/bin_empty.png create mode 100755 www/img/icons/bomb.png create mode 100755 www/img/icons/book.png create mode 100755 www/img/icons/book_add.png create mode 100755 www/img/icons/book_addresses.png create mode 100755 www/img/icons/book_delete.png create mode 100755 www/img/icons/book_edit.png create mode 100755 www/img/icons/book_error.png create mode 100755 www/img/icons/book_go.png create mode 100755 www/img/icons/book_key.png create mode 100755 www/img/icons/book_link.png create mode 100755 www/img/icons/book_next.png create mode 100755 www/img/icons/book_open.png create mode 100755 www/img/icons/book_previous.png create mode 100755 www/img/icons/box.png create mode 100755 www/img/icons/brick.png create mode 100755 www/img/icons/brick_add.png create mode 100755 www/img/icons/brick_delete.png create mode 100755 www/img/icons/brick_edit.png create mode 100755 www/img/icons/brick_error.png create mode 100755 www/img/icons/brick_go.png create mode 100755 www/img/icons/brick_link.png create mode 100755 www/img/icons/bricks.png create mode 100755 www/img/icons/briefcase.png create mode 100755 www/img/icons/bug.png create mode 100755 www/img/icons/bug_add.png create mode 100755 www/img/icons/bug_delete.png create mode 100755 www/img/icons/bug_edit.png create mode 100755 www/img/icons/bug_error.png create mode 100755 www/img/icons/bug_go.png create mode 100755 www/img/icons/bug_link.png create mode 100755 www/img/icons/building.png create mode 100755 www/img/icons/building_add.png create mode 100755 www/img/icons/building_delete.png create mode 100755 www/img/icons/building_edit.png create mode 100755 www/img/icons/building_error.png create mode 100755 www/img/icons/building_go.png create mode 100755 www/img/icons/building_key.png create mode 100755 www/img/icons/building_link.png create mode 100755 www/img/icons/bullet_add.png create mode 100755 www/img/icons/bullet_arrow_bottom.png create mode 100755 www/img/icons/bullet_arrow_down.png create mode 100755 www/img/icons/bullet_arrow_top.png create mode 100755 www/img/icons/bullet_arrow_up.png create mode 100755 www/img/icons/bullet_black.png create mode 100755 www/img/icons/bullet_blue.png create mode 100755 www/img/icons/bullet_delete.png create mode 100755 www/img/icons/bullet_disk.png create mode 100755 www/img/icons/bullet_error.png create mode 100755 www/img/icons/bullet_feed.png create mode 100755 www/img/icons/bullet_go.png create mode 100755 www/img/icons/bullet_green.png create mode 100755 www/img/icons/bullet_key.png create mode 100755 www/img/icons/bullet_orange.png create mode 100755 www/img/icons/bullet_picture.png create mode 100755 www/img/icons/bullet_pink.png create mode 100755 www/img/icons/bullet_purple.png create mode 100755 www/img/icons/bullet_red.png create mode 100755 www/img/icons/bullet_star.png create mode 100755 www/img/icons/bullet_toggle_minus.png create mode 100755 www/img/icons/bullet_toggle_plus.png create mode 100755 www/img/icons/bullet_white.png create mode 100755 www/img/icons/bullet_wrench.png create mode 100755 www/img/icons/bullet_yellow.png create mode 100755 www/img/icons/cake.png create mode 100755 www/img/icons/calculator.png create mode 100755 www/img/icons/calculator_add.png create mode 100755 www/img/icons/calculator_delete.png create mode 100755 www/img/icons/calculator_edit.png create mode 100755 www/img/icons/calculator_error.png create mode 100755 www/img/icons/calculator_link.png create mode 100755 www/img/icons/calendar.png create mode 100755 www/img/icons/calendar_add.png create mode 100755 www/img/icons/calendar_delete.png create mode 100755 www/img/icons/calendar_edit.png create mode 100755 www/img/icons/calendar_link.png create mode 100755 www/img/icons/calendar_view_day.png create mode 100755 www/img/icons/calendar_view_month.png create mode 100755 www/img/icons/calendar_view_week.png create mode 100755 www/img/icons/camera.png create mode 100755 www/img/icons/camera_add.png create mode 100755 www/img/icons/camera_delete.png create mode 100755 www/img/icons/camera_edit.png create mode 100755 www/img/icons/camera_error.png create mode 100755 www/img/icons/camera_go.png create mode 100755 www/img/icons/camera_link.png create mode 100755 www/img/icons/camera_small.png create mode 100755 www/img/icons/cancel.png create mode 100755 www/img/icons/car.png create mode 100755 www/img/icons/car_add.png create mode 100755 www/img/icons/car_delete.png create mode 100755 www/img/icons/cart.png create mode 100755 www/img/icons/cart_add.png create mode 100755 www/img/icons/cart_delete.png create mode 100755 www/img/icons/cart_edit.png create mode 100755 www/img/icons/cart_error.png create mode 100755 www/img/icons/cart_go.png create mode 100755 www/img/icons/cart_put.png create mode 100755 www/img/icons/cart_remove.png create mode 100755 www/img/icons/cd.png create mode 100755 www/img/icons/cd_add.png create mode 100755 www/img/icons/cd_burn.png create mode 100755 www/img/icons/cd_delete.png create mode 100755 www/img/icons/cd_edit.png create mode 100755 www/img/icons/cd_eject.png create mode 100755 www/img/icons/cd_go.png create mode 100755 www/img/icons/chart_bar.png create mode 100755 www/img/icons/chart_bar_add.png create mode 100755 www/img/icons/chart_bar_delete.png create mode 100755 www/img/icons/chart_bar_edit.png create mode 100755 www/img/icons/chart_bar_error.png create mode 100755 www/img/icons/chart_bar_link.png create mode 100755 www/img/icons/chart_curve.png create mode 100755 www/img/icons/chart_curve_add.png create mode 100755 www/img/icons/chart_curve_delete.png create mode 100755 www/img/icons/chart_curve_edit.png create mode 100755 www/img/icons/chart_curve_error.png create mode 100755 www/img/icons/chart_curve_go.png create mode 100755 www/img/icons/chart_curve_link.png create mode 100755 www/img/icons/chart_line.png create mode 100755 www/img/icons/chart_line_add.png create mode 100755 www/img/icons/chart_line_delete.png create mode 100755 www/img/icons/chart_line_edit.png create mode 100755 www/img/icons/chart_line_error.png create mode 100755 www/img/icons/chart_line_link.png create mode 100755 www/img/icons/chart_organisation.png create mode 100755 www/img/icons/chart_organisation_add.png create mode 100755 www/img/icons/chart_organisation_delete.png create mode 100755 www/img/icons/chart_pie.png create mode 100755 www/img/icons/chart_pie_add.png create mode 100755 www/img/icons/chart_pie_delete.png create mode 100755 www/img/icons/chart_pie_edit.png create mode 100755 www/img/icons/chart_pie_error.png create mode 100755 www/img/icons/chart_pie_link.png create mode 100755 www/img/icons/clock.png create mode 100755 www/img/icons/clock_add.png create mode 100755 www/img/icons/clock_delete.png create mode 100755 www/img/icons/clock_edit.png create mode 100755 www/img/icons/clock_error.png create mode 100755 www/img/icons/clock_go.png create mode 100755 www/img/icons/clock_link.png create mode 100755 www/img/icons/clock_pause.png create mode 100755 www/img/icons/clock_play.png create mode 100755 www/img/icons/clock_red.png create mode 100755 www/img/icons/clock_stop.png create mode 100755 www/img/icons/cog.png create mode 100755 www/img/icons/cog_add.png create mode 100755 www/img/icons/cog_delete.png create mode 100755 www/img/icons/cog_edit.png create mode 100755 www/img/icons/cog_error.png create mode 100755 www/img/icons/cog_go.png create mode 100755 www/img/icons/coins.png create mode 100755 www/img/icons/coins_add.png create mode 100755 www/img/icons/coins_delete.png create mode 100755 www/img/icons/color_swatch.png create mode 100755 www/img/icons/color_wheel.png create mode 100755 www/img/icons/comment.png create mode 100755 www/img/icons/comment_add.png create mode 100755 www/img/icons/comment_delete.png create mode 100755 www/img/icons/comment_edit.png create mode 100755 www/img/icons/comments.png create mode 100755 www/img/icons/comments_add.png create mode 100755 www/img/icons/comments_delete.png create mode 100755 www/img/icons/compress.png create mode 100755 www/img/icons/computer.png create mode 100755 www/img/icons/computer_add.png create mode 100755 www/img/icons/computer_delete.png create mode 100755 www/img/icons/computer_edit.png create mode 100755 www/img/icons/computer_error.png create mode 100755 www/img/icons/computer_go.png create mode 100755 www/img/icons/computer_key.png create mode 100755 www/img/icons/computer_link.png create mode 100755 www/img/icons/connect.png create mode 100755 www/img/icons/contrast.png create mode 100755 www/img/icons/contrast_decrease.png create mode 100755 www/img/icons/contrast_high.png create mode 100755 www/img/icons/contrast_increase.png create mode 100755 www/img/icons/contrast_low.png create mode 100755 www/img/icons/control_eject.png create mode 100755 www/img/icons/control_eject_blue.png create mode 100755 www/img/icons/control_end.png create mode 100755 www/img/icons/control_end_blue.png create mode 100755 www/img/icons/control_equalizer.png create mode 100755 www/img/icons/control_equalizer_blue.png create mode 100755 www/img/icons/control_fastforward.png create mode 100755 www/img/icons/control_fastforward_blue.png create mode 100755 www/img/icons/control_pause.png create mode 100755 www/img/icons/control_pause_blue.png create mode 100755 www/img/icons/control_play.png create mode 100755 www/img/icons/control_play_blue.png create mode 100755 www/img/icons/control_repeat.png create mode 100755 www/img/icons/control_repeat_blue.png create mode 100755 www/img/icons/control_rewind.png create mode 100755 www/img/icons/control_rewind_blue.png create mode 100755 www/img/icons/control_start.png create mode 100755 www/img/icons/control_start_blue.png create mode 100755 www/img/icons/control_stop.png create mode 100755 www/img/icons/control_stop_blue.png create mode 100755 www/img/icons/controller.png create mode 100755 www/img/icons/controller_add.png create mode 100755 www/img/icons/controller_delete.png create mode 100755 www/img/icons/controller_error.png create mode 100755 www/img/icons/creditcards.png create mode 100755 www/img/icons/cross.png create mode 100755 www/img/icons/css.png create mode 100755 www/img/icons/css_add.png create mode 100755 www/img/icons/css_delete.png create mode 100755 www/img/icons/css_go.png create mode 100755 www/img/icons/css_valid.png create mode 100755 www/img/icons/cup.png create mode 100755 www/img/icons/cup_add.png create mode 100755 www/img/icons/cup_delete.png create mode 100755 www/img/icons/cup_edit.png create mode 100755 www/img/icons/cup_error.png create mode 100755 www/img/icons/cup_go.png create mode 100755 www/img/icons/cup_key.png create mode 100755 www/img/icons/cup_link.png create mode 100755 www/img/icons/cursor.png create mode 100755 www/img/icons/cut.png create mode 100755 www/img/icons/cut_red.png create mode 100755 www/img/icons/database.png create mode 100755 www/img/icons/database_add.png create mode 100755 www/img/icons/database_connect.png create mode 100755 www/img/icons/database_delete.png create mode 100755 www/img/icons/database_edit.png create mode 100755 www/img/icons/database_error.png create mode 100755 www/img/icons/database_gear.png create mode 100755 www/img/icons/database_go.png create mode 100755 www/img/icons/database_key.png create mode 100755 www/img/icons/database_lightning.png create mode 100755 www/img/icons/database_link.png create mode 100755 www/img/icons/database_refresh.png create mode 100755 www/img/icons/database_save.png create mode 100755 www/img/icons/database_table.png create mode 100755 www/img/icons/date.png create mode 100755 www/img/icons/date_add.png create mode 100755 www/img/icons/date_delete.png create mode 100755 www/img/icons/date_edit.png create mode 100755 www/img/icons/date_error.png create mode 100755 www/img/icons/date_go.png create mode 100755 www/img/icons/date_link.png create mode 100755 www/img/icons/date_magnify.png create mode 100755 www/img/icons/date_next.png create mode 100755 www/img/icons/date_previous.png create mode 100755 www/img/icons/delete.png create mode 100755 www/img/icons/disconnect.png create mode 100755 www/img/icons/disk.png create mode 100755 www/img/icons/disk_multiple.png create mode 100755 www/img/icons/door.png create mode 100755 www/img/icons/door_in.png create mode 100755 www/img/icons/door_open.png create mode 100755 www/img/icons/door_out.png create mode 100755 www/img/icons/drink.png create mode 100755 www/img/icons/drink_empty.png create mode 100755 www/img/icons/drive.png create mode 100755 www/img/icons/drive_add.png create mode 100755 www/img/icons/drive_burn.png create mode 100755 www/img/icons/drive_cd.png create mode 100755 www/img/icons/drive_cd_empty.png create mode 100755 www/img/icons/drive_delete.png create mode 100755 www/img/icons/drive_disk.png create mode 100755 www/img/icons/drive_edit.png create mode 100755 www/img/icons/drive_error.png create mode 100755 www/img/icons/drive_go.png create mode 100755 www/img/icons/drive_key.png create mode 100755 www/img/icons/drive_link.png create mode 100755 www/img/icons/drive_magnify.png create mode 100755 www/img/icons/drive_network.png create mode 100755 www/img/icons/drive_rename.png create mode 100755 www/img/icons/drive_user.png create mode 100755 www/img/icons/drive_web.png create mode 100755 www/img/icons/dvd.png create mode 100755 www/img/icons/dvd_add.png create mode 100755 www/img/icons/dvd_delete.png create mode 100755 www/img/icons/dvd_edit.png create mode 100755 www/img/icons/dvd_error.png create mode 100755 www/img/icons/dvd_go.png create mode 100755 www/img/icons/dvd_key.png create mode 100755 www/img/icons/dvd_link.png create mode 100755 www/img/icons/email.png create mode 100755 www/img/icons/email_add.png create mode 100755 www/img/icons/email_attach.png create mode 100755 www/img/icons/email_delete.png create mode 100755 www/img/icons/email_edit.png create mode 100755 www/img/icons/email_error.png create mode 100755 www/img/icons/email_go.png create mode 100755 www/img/icons/email_link.png create mode 100755 www/img/icons/email_open.png create mode 100755 www/img/icons/email_open_image.png create mode 100755 www/img/icons/emoticon_evilgrin.png create mode 100755 www/img/icons/emoticon_grin.png create mode 100755 www/img/icons/emoticon_happy.png create mode 100755 www/img/icons/emoticon_smile.png create mode 100755 www/img/icons/emoticon_surprised.png create mode 100755 www/img/icons/emoticon_tongue.png create mode 100755 www/img/icons/emoticon_unhappy.png create mode 100755 www/img/icons/emoticon_waii.png create mode 100755 www/img/icons/emoticon_wink.png create mode 100755 www/img/icons/error.png create mode 100755 www/img/icons/error_add.png create mode 100755 www/img/icons/error_delete.png create mode 100755 www/img/icons/error_go.png create mode 100755 www/img/icons/exclamation.png create mode 100755 www/img/icons/eye.png create mode 100755 www/img/icons/feed.png create mode 100755 www/img/icons/feed_add.png create mode 100755 www/img/icons/feed_delete.png create mode 100755 www/img/icons/feed_disk.png create mode 100755 www/img/icons/feed_edit.png create mode 100755 www/img/icons/feed_error.png create mode 100755 www/img/icons/feed_go.png create mode 100755 www/img/icons/feed_key.png create mode 100755 www/img/icons/feed_link.png create mode 100755 www/img/icons/feed_magnify.png create mode 100755 www/img/icons/female.png create mode 100755 www/img/icons/film.png create mode 100755 www/img/icons/film_add.png create mode 100755 www/img/icons/film_delete.png create mode 100755 www/img/icons/film_edit.png create mode 100755 www/img/icons/film_error.png create mode 100755 www/img/icons/film_go.png create mode 100755 www/img/icons/film_key.png create mode 100755 www/img/icons/film_link.png create mode 100755 www/img/icons/film_save.png create mode 100755 www/img/icons/find.png create mode 100755 www/img/icons/flag_blue.png create mode 100755 www/img/icons/flag_green.png create mode 100755 www/img/icons/flag_orange.png create mode 100755 www/img/icons/flag_pink.png create mode 100755 www/img/icons/flag_purple.png create mode 100755 www/img/icons/flag_red.png create mode 100755 www/img/icons/flag_yellow.png create mode 100755 www/img/icons/folder.png create mode 100755 www/img/icons/folder_add.png create mode 100755 www/img/icons/folder_bell.png create mode 100755 www/img/icons/folder_brick.png create mode 100755 www/img/icons/folder_bug.png create mode 100755 www/img/icons/folder_camera.png create mode 100755 www/img/icons/folder_database.png create mode 100755 www/img/icons/folder_delete.png create mode 100755 www/img/icons/folder_edit.png create mode 100755 www/img/icons/folder_error.png create mode 100755 www/img/icons/folder_explore.png create mode 100755 www/img/icons/folder_feed.png create mode 100755 www/img/icons/folder_find.png create mode 100755 www/img/icons/folder_go.png create mode 100755 www/img/icons/folder_heart.png create mode 100755 www/img/icons/folder_image.png create mode 100755 www/img/icons/folder_key.png create mode 100755 www/img/icons/folder_lightbulb.png create mode 100755 www/img/icons/folder_link.png create mode 100755 www/img/icons/folder_magnify.png create mode 100755 www/img/icons/folder_page.png create mode 100755 www/img/icons/folder_page_white.png create mode 100755 www/img/icons/folder_palette.png create mode 100755 www/img/icons/folder_picture.png create mode 100755 www/img/icons/folder_star.png create mode 100755 www/img/icons/folder_table.png create mode 100755 www/img/icons/folder_user.png create mode 100755 www/img/icons/folder_wrench.png create mode 100755 www/img/icons/font.png create mode 100755 www/img/icons/font_add.png create mode 100755 www/img/icons/font_delete.png create mode 100755 www/img/icons/font_go.png create mode 100755 www/img/icons/group.png create mode 100755 www/img/icons/group_add.png create mode 100755 www/img/icons/group_delete.png create mode 100755 www/img/icons/group_edit.png create mode 100755 www/img/icons/group_error.png create mode 100755 www/img/icons/group_gear.png create mode 100755 www/img/icons/group_go.png create mode 100755 www/img/icons/group_key.png create mode 100755 www/img/icons/group_link.png create mode 100755 www/img/icons/heart.png create mode 100755 www/img/icons/heart_add.png create mode 100755 www/img/icons/heart_delete.png create mode 100755 www/img/icons/help.png create mode 100755 www/img/icons/hourglass.png create mode 100755 www/img/icons/hourglass_add.png create mode 100755 www/img/icons/hourglass_delete.png create mode 100755 www/img/icons/hourglass_go.png create mode 100755 www/img/icons/hourglass_link.png create mode 100755 www/img/icons/house.png create mode 100755 www/img/icons/house_go.png create mode 100755 www/img/icons/house_link.png create mode 100755 www/img/icons/html.png create mode 100755 www/img/icons/html_add.png create mode 100755 www/img/icons/html_delete.png create mode 100755 www/img/icons/html_go.png create mode 100755 www/img/icons/html_valid.png create mode 100755 www/img/icons/image.png create mode 100755 www/img/icons/image_add.png create mode 100755 www/img/icons/image_delete.png create mode 100755 www/img/icons/image_edit.png create mode 100755 www/img/icons/image_link.png create mode 100755 www/img/icons/images.png create mode 100755 www/img/icons/index_abc.png create mode 100755 www/img/icons/information.png create mode 100755 www/img/icons/ipod.png create mode 100755 www/img/icons/ipod_cast.png create mode 100755 www/img/icons/ipod_cast_add.png create mode 100755 www/img/icons/ipod_cast_delete.png create mode 100755 www/img/icons/ipod_sound.png create mode 100755 www/img/icons/joystick.png create mode 100755 www/img/icons/joystick_add.png create mode 100755 www/img/icons/joystick_delete.png create mode 100755 www/img/icons/joystick_error.png create mode 100755 www/img/icons/key.png create mode 100755 www/img/icons/key_add.png create mode 100755 www/img/icons/key_delete.png create mode 100755 www/img/icons/key_go.png create mode 100755 www/img/icons/keyboard.png create mode 100755 www/img/icons/keyboard_add.png create mode 100755 www/img/icons/keyboard_delete.png create mode 100755 www/img/icons/keyboard_magnify.png create mode 100755 www/img/icons/layers.png create mode 100755 www/img/icons/layout.png create mode 100755 www/img/icons/layout_add.png create mode 100755 www/img/icons/layout_content.png create mode 100755 www/img/icons/layout_delete.png create mode 100755 www/img/icons/layout_edit.png create mode 100755 www/img/icons/layout_error.png create mode 100755 www/img/icons/layout_header.png create mode 100755 www/img/icons/layout_link.png create mode 100755 www/img/icons/layout_sidebar.png create mode 100755 www/img/icons/lightbulb.png create mode 100755 www/img/icons/lightbulb_add.png create mode 100755 www/img/icons/lightbulb_delete.png create mode 100755 www/img/icons/lightbulb_off.png create mode 100755 www/img/icons/lightning.png create mode 100755 www/img/icons/lightning_add.png create mode 100755 www/img/icons/lightning_delete.png create mode 100755 www/img/icons/lightning_go.png create mode 100755 www/img/icons/link.png create mode 100755 www/img/icons/link_add.png create mode 100755 www/img/icons/link_break.png create mode 100755 www/img/icons/link_delete.png create mode 100755 www/img/icons/link_edit.png create mode 100755 www/img/icons/link_error.png create mode 100755 www/img/icons/link_go.png create mode 100755 www/img/icons/lock.png create mode 100755 www/img/icons/lock_add.png create mode 100755 www/img/icons/lock_break.png create mode 100755 www/img/icons/lock_delete.png create mode 100755 www/img/icons/lock_edit.png create mode 100755 www/img/icons/lock_go.png create mode 100755 www/img/icons/lock_open.png create mode 100755 www/img/icons/lorry.png create mode 100755 www/img/icons/lorry_add.png create mode 100755 www/img/icons/lorry_delete.png create mode 100755 www/img/icons/lorry_error.png create mode 100755 www/img/icons/lorry_flatbed.png create mode 100755 www/img/icons/lorry_go.png create mode 100755 www/img/icons/lorry_link.png create mode 100755 www/img/icons/magifier_zoom_out.png create mode 100755 www/img/icons/magnifier.png create mode 100755 www/img/icons/magnifier_zoom_in.png create mode 100755 www/img/icons/male.png create mode 100755 www/img/icons/map.png create mode 100755 www/img/icons/map_add.png create mode 100755 www/img/icons/map_delete.png create mode 100755 www/img/icons/map_edit.png create mode 100755 www/img/icons/map_go.png create mode 100755 www/img/icons/map_magnify.png create mode 100755 www/img/icons/medal_bronze_1.png create mode 100755 www/img/icons/medal_bronze_2.png create mode 100755 www/img/icons/medal_bronze_3.png create mode 100755 www/img/icons/medal_bronze_add.png create mode 100755 www/img/icons/medal_bronze_delete.png create mode 100755 www/img/icons/medal_gold_1.png create mode 100755 www/img/icons/medal_gold_2.png create mode 100755 www/img/icons/medal_gold_3.png create mode 100755 www/img/icons/medal_gold_add.png create mode 100755 www/img/icons/medal_gold_delete.png create mode 100755 www/img/icons/medal_silver_1.png create mode 100755 www/img/icons/medal_silver_2.png create mode 100755 www/img/icons/medal_silver_3.png create mode 100755 www/img/icons/medal_silver_add.png create mode 100755 www/img/icons/medal_silver_delete.png create mode 100755 www/img/icons/money.png create mode 100755 www/img/icons/money_add.png create mode 100755 www/img/icons/money_delete.png create mode 100755 www/img/icons/money_dollar.png create mode 100755 www/img/icons/money_euro.png create mode 100755 www/img/icons/money_pound.png create mode 100755 www/img/icons/money_yen.png create mode 100755 www/img/icons/monitor.png create mode 100755 www/img/icons/monitor_add.png create mode 100755 www/img/icons/monitor_delete.png create mode 100755 www/img/icons/monitor_edit.png create mode 100755 www/img/icons/monitor_error.png create mode 100755 www/img/icons/monitor_go.png create mode 100755 www/img/icons/monitor_lightning.png create mode 100755 www/img/icons/monitor_link.png create mode 100755 www/img/icons/mouse.png create mode 100755 www/img/icons/mouse_add.png create mode 100755 www/img/icons/mouse_delete.png create mode 100755 www/img/icons/mouse_error.png create mode 100755 www/img/icons/music.png create mode 100755 www/img/icons/new.png create mode 100755 www/img/icons/newspaper.png create mode 100755 www/img/icons/newspaper_add.png create mode 100755 www/img/icons/newspaper_delete.png create mode 100755 www/img/icons/newspaper_go.png create mode 100755 www/img/icons/newspaper_link.png create mode 100755 www/img/icons/note.png create mode 100755 www/img/icons/note_add.png create mode 100755 www/img/icons/note_delete.png create mode 100755 www/img/icons/note_edit.png create mode 100755 www/img/icons/note_error.png create mode 100755 www/img/icons/note_go.png create mode 100755 www/img/icons/overlays.png create mode 100755 www/img/icons/package.png create mode 100755 www/img/icons/package_add.png create mode 100755 www/img/icons/package_delete.png create mode 100755 www/img/icons/package_go.png create mode 100755 www/img/icons/package_green.png create mode 100755 www/img/icons/package_link.png create mode 100755 www/img/icons/page.png create mode 100755 www/img/icons/page_add.png create mode 100755 www/img/icons/page_attach.png create mode 100755 www/img/icons/page_code.png create mode 100755 www/img/icons/page_copy.png create mode 100755 www/img/icons/page_delete.png create mode 100755 www/img/icons/page_edit.png create mode 100755 www/img/icons/page_error.png create mode 100755 www/img/icons/page_excel.png create mode 100755 www/img/icons/page_find.png create mode 100755 www/img/icons/page_gear.png create mode 100755 www/img/icons/page_go.png create mode 100755 www/img/icons/page_green.png create mode 100755 www/img/icons/page_key.png create mode 100755 www/img/icons/page_lightning.png create mode 100755 www/img/icons/page_link.png create mode 100755 www/img/icons/page_paintbrush.png create mode 100755 www/img/icons/page_paste.png create mode 100755 www/img/icons/page_red.png create mode 100755 www/img/icons/page_refresh.png create mode 100755 www/img/icons/page_save.png create mode 100755 www/img/icons/page_white.png create mode 100755 www/img/icons/page_white_acrobat.png create mode 100755 www/img/icons/page_white_actionscript.png create mode 100755 www/img/icons/page_white_add.png create mode 100755 www/img/icons/page_white_c.png create mode 100755 www/img/icons/page_white_camera.png create mode 100755 www/img/icons/page_white_cd.png create mode 100755 www/img/icons/page_white_code.png create mode 100755 www/img/icons/page_white_code_red.png create mode 100755 www/img/icons/page_white_coldfusion.png create mode 100755 www/img/icons/page_white_compressed.png create mode 100755 www/img/icons/page_white_copy.png create mode 100755 www/img/icons/page_white_cplusplus.png create mode 100755 www/img/icons/page_white_csharp.png create mode 100755 www/img/icons/page_white_cup.png create mode 100755 www/img/icons/page_white_database.png create mode 100755 www/img/icons/page_white_delete.png create mode 100755 www/img/icons/page_white_dvd.png create mode 100755 www/img/icons/page_white_edit.png create mode 100755 www/img/icons/page_white_error.png create mode 100755 www/img/icons/page_white_excel.png create mode 100755 www/img/icons/page_white_find.png create mode 100755 www/img/icons/page_white_flash.png create mode 100755 www/img/icons/page_white_freehand.png create mode 100755 www/img/icons/page_white_gear.png create mode 100755 www/img/icons/page_white_get.png create mode 100755 www/img/icons/page_white_go.png create mode 100755 www/img/icons/page_white_h.png create mode 100755 www/img/icons/page_white_horizontal.png create mode 100755 www/img/icons/page_white_key.png create mode 100755 www/img/icons/page_white_lightning.png create mode 100755 www/img/icons/page_white_link.png create mode 100755 www/img/icons/page_white_magnify.png create mode 100755 www/img/icons/page_white_medal.png create mode 100755 www/img/icons/page_white_office.png create mode 100755 www/img/icons/page_white_paint.png create mode 100755 www/img/icons/page_white_paintbrush.png create mode 100755 www/img/icons/page_white_paste.png create mode 100755 www/img/icons/page_white_php.png create mode 100755 www/img/icons/page_white_picture.png create mode 100755 www/img/icons/page_white_powerpoint.png create mode 100755 www/img/icons/page_white_put.png create mode 100755 www/img/icons/page_white_ruby.png create mode 100755 www/img/icons/page_white_stack.png create mode 100755 www/img/icons/page_white_star.png create mode 100755 www/img/icons/page_white_swoosh.png create mode 100755 www/img/icons/page_white_text.png create mode 100755 www/img/icons/page_white_text_width.png create mode 100755 www/img/icons/page_white_tux.png create mode 100755 www/img/icons/page_white_vector.png create mode 100755 www/img/icons/page_white_visualstudio.png create mode 100755 www/img/icons/page_white_width.png create mode 100755 www/img/icons/page_white_word.png create mode 100755 www/img/icons/page_white_world.png create mode 100755 www/img/icons/page_white_wrench.png create mode 100755 www/img/icons/page_white_zip.png create mode 100755 www/img/icons/page_word.png create mode 100755 www/img/icons/page_world.png create mode 100755 www/img/icons/paintbrush.png create mode 100755 www/img/icons/paintcan.png create mode 100755 www/img/icons/palette.png create mode 100755 www/img/icons/paste_plain.png create mode 100755 www/img/icons/paste_word.png create mode 100755 www/img/icons/pencil.png create mode 100755 www/img/icons/pencil_add.png create mode 100755 www/img/icons/pencil_delete.png create mode 100755 www/img/icons/pencil_go.png create mode 100755 www/img/icons/phone.png create mode 100755 www/img/icons/phone_add.png create mode 100755 www/img/icons/phone_delete.png create mode 100755 www/img/icons/phone_sound.png create mode 100755 www/img/icons/photo.png create mode 100755 www/img/icons/photo_add.png create mode 100755 www/img/icons/photo_delete.png create mode 100755 www/img/icons/photo_link.png create mode 100755 www/img/icons/photos.png create mode 100755 www/img/icons/picture.png create mode 100755 www/img/icons/picture_add.png create mode 100755 www/img/icons/picture_delete.png create mode 100755 www/img/icons/picture_edit.png create mode 100755 www/img/icons/picture_empty.png create mode 100755 www/img/icons/picture_error.png create mode 100755 www/img/icons/picture_go.png create mode 100755 www/img/icons/picture_key.png create mode 100755 www/img/icons/picture_link.png create mode 100755 www/img/icons/picture_save.png create mode 100755 www/img/icons/pictures.png create mode 100755 www/img/icons/pilcrow.png create mode 100755 www/img/icons/pill.png create mode 100755 www/img/icons/pill_add.png create mode 100755 www/img/icons/pill_delete.png create mode 100755 www/img/icons/pill_go.png create mode 100755 www/img/icons/plugin.png create mode 100755 www/img/icons/plugin_add.png create mode 100755 www/img/icons/plugin_delete.png create mode 100755 www/img/icons/plugin_disabled.png create mode 100755 www/img/icons/plugin_edit.png create mode 100755 www/img/icons/plugin_error.png create mode 100755 www/img/icons/plugin_go.png create mode 100755 www/img/icons/plugin_link.png create mode 100755 www/img/icons/printer.png create mode 100755 www/img/icons/printer_add.png create mode 100755 www/img/icons/printer_delete.png create mode 100755 www/img/icons/printer_empty.png create mode 100755 www/img/icons/printer_error.png create mode 100755 www/img/icons/rainbow.png create mode 100755 www/img/icons/report.png create mode 100755 www/img/icons/report_add.png create mode 100755 www/img/icons/report_delete.png create mode 100755 www/img/icons/report_disk.png create mode 100755 www/img/icons/report_edit.png create mode 100755 www/img/icons/report_go.png create mode 100755 www/img/icons/report_key.png create mode 100755 www/img/icons/report_link.png create mode 100755 www/img/icons/report_magnify.png create mode 100755 www/img/icons/report_picture.png create mode 100755 www/img/icons/report_user.png create mode 100755 www/img/icons/report_word.png create mode 100755 www/img/icons/resultset_first.png create mode 100755 www/img/icons/resultset_last.png create mode 100755 www/img/icons/resultset_next.png create mode 100755 www/img/icons/resultset_previous.png create mode 100755 www/img/icons/rosette.png create mode 100755 www/img/icons/rss.png create mode 100755 www/img/icons/rss_add.png create mode 100755 www/img/icons/rss_delete.png create mode 100755 www/img/icons/rss_go.png create mode 100755 www/img/icons/rss_valid.png create mode 100755 www/img/icons/ruby.png create mode 100755 www/img/icons/ruby_add.png create mode 100755 www/img/icons/ruby_delete.png create mode 100755 www/img/icons/ruby_gear.png create mode 100755 www/img/icons/ruby_get.png create mode 100755 www/img/icons/ruby_go.png create mode 100755 www/img/icons/ruby_key.png create mode 100755 www/img/icons/ruby_link.png create mode 100755 www/img/icons/ruby_put.png create mode 100755 www/img/icons/script.png create mode 100755 www/img/icons/script_add.png create mode 100755 www/img/icons/script_code.png create mode 100755 www/img/icons/script_code_red.png create mode 100755 www/img/icons/script_delete.png create mode 100755 www/img/icons/script_edit.png create mode 100755 www/img/icons/script_error.png create mode 100755 www/img/icons/script_gear.png create mode 100755 www/img/icons/script_go.png create mode 100755 www/img/icons/script_key.png create mode 100755 www/img/icons/script_lightning.png create mode 100755 www/img/icons/script_link.png create mode 100755 www/img/icons/script_palette.png create mode 100755 www/img/icons/script_save.png create mode 100755 www/img/icons/server.png create mode 100755 www/img/icons/server_add.png create mode 100755 www/img/icons/server_chart.png create mode 100755 www/img/icons/server_compressed.png create mode 100755 www/img/icons/server_connect.png create mode 100755 www/img/icons/server_database.png create mode 100755 www/img/icons/server_delete.png create mode 100755 www/img/icons/server_edit.png create mode 100755 www/img/icons/server_error.png create mode 100755 www/img/icons/server_go.png create mode 100755 www/img/icons/server_key.png create mode 100755 www/img/icons/server_lightning.png create mode 100755 www/img/icons/server_link.png create mode 100755 www/img/icons/server_uncompressed.png create mode 100755 www/img/icons/shading.png create mode 100755 www/img/icons/shape_align_bottom.png create mode 100755 www/img/icons/shape_align_center.png create mode 100755 www/img/icons/shape_align_left.png create mode 100755 www/img/icons/shape_align_middle.png create mode 100755 www/img/icons/shape_align_right.png create mode 100755 www/img/icons/shape_align_top.png create mode 100755 www/img/icons/shape_flip_horizontal.png create mode 100755 www/img/icons/shape_flip_vertical.png create mode 100755 www/img/icons/shape_group.png create mode 100755 www/img/icons/shape_handles.png create mode 100755 www/img/icons/shape_move_back.png create mode 100755 www/img/icons/shape_move_backwards.png create mode 100755 www/img/icons/shape_move_forwards.png create mode 100755 www/img/icons/shape_move_front.png create mode 100755 www/img/icons/shape_rotate_anticlockwise.png create mode 100755 www/img/icons/shape_rotate_clockwise.png create mode 100755 www/img/icons/shape_square.png create mode 100755 www/img/icons/shape_square_add.png create mode 100755 www/img/icons/shape_square_delete.png create mode 100755 www/img/icons/shape_square_edit.png create mode 100755 www/img/icons/shape_square_error.png create mode 100755 www/img/icons/shape_square_go.png create mode 100755 www/img/icons/shape_square_key.png create mode 100755 www/img/icons/shape_square_link.png create mode 100755 www/img/icons/shape_ungroup.png create mode 100755 www/img/icons/shield.png create mode 100755 www/img/icons/shield_add.png create mode 100755 www/img/icons/shield_delete.png create mode 100755 www/img/icons/shield_go.png create mode 100755 www/img/icons/sitemap.png create mode 100755 www/img/icons/sitemap_color.png create mode 100755 www/img/icons/sound.png create mode 100755 www/img/icons/sound_add.png create mode 100755 www/img/icons/sound_delete.png create mode 100755 www/img/icons/sound_low.png create mode 100755 www/img/icons/sound_mute.png create mode 100755 www/img/icons/sound_none.png create mode 100755 www/img/icons/spellcheck.png create mode 100755 www/img/icons/sport_8ball.png create mode 100755 www/img/icons/sport_basketball.png create mode 100755 www/img/icons/sport_football.png create mode 100755 www/img/icons/sport_golf.png create mode 100755 www/img/icons/sport_raquet.png create mode 100755 www/img/icons/sport_shuttlecock.png create mode 100755 www/img/icons/sport_soccer.png create mode 100755 www/img/icons/sport_tennis.png create mode 100755 www/img/icons/star.png create mode 100755 www/img/icons/status_away.png create mode 100755 www/img/icons/status_busy.png create mode 100755 www/img/icons/status_offline.png create mode 100755 www/img/icons/status_online.png create mode 100755 www/img/icons/stop.png create mode 100755 www/img/icons/style.png create mode 100755 www/img/icons/style_add.png create mode 100755 www/img/icons/style_delete.png create mode 100755 www/img/icons/style_edit.png create mode 100755 www/img/icons/style_go.png create mode 100755 www/img/icons/sum.png create mode 100755 www/img/icons/tab.png create mode 100755 www/img/icons/tab_add.png create mode 100755 www/img/icons/tab_delete.png create mode 100755 www/img/icons/tab_edit.png create mode 100755 www/img/icons/tab_go.png create mode 100755 www/img/icons/table.png create mode 100755 www/img/icons/table_add.png create mode 100755 www/img/icons/table_delete.png create mode 100755 www/img/icons/table_edit.png create mode 100755 www/img/icons/table_error.png create mode 100755 www/img/icons/table_gear.png create mode 100755 www/img/icons/table_go.png create mode 100755 www/img/icons/table_key.png create mode 100755 www/img/icons/table_lightning.png create mode 100755 www/img/icons/table_link.png create mode 100755 www/img/icons/table_multiple.png create mode 100755 www/img/icons/table_refresh.png create mode 100755 www/img/icons/table_relationship.png create mode 100755 www/img/icons/table_row_delete.png create mode 100755 www/img/icons/table_row_insert.png create mode 100755 www/img/icons/table_save.png create mode 100755 www/img/icons/table_sort.png create mode 100755 www/img/icons/tag.png create mode 100755 www/img/icons/tag_blue.png create mode 100755 www/img/icons/tag_blue_add.png create mode 100755 www/img/icons/tag_blue_delete.png create mode 100755 www/img/icons/tag_blue_edit.png create mode 100755 www/img/icons/tag_green.png create mode 100755 www/img/icons/tag_orange.png create mode 100755 www/img/icons/tag_pink.png create mode 100755 www/img/icons/tag_purple.png create mode 100755 www/img/icons/tag_red.png create mode 100755 www/img/icons/tag_yellow.png create mode 100755 www/img/icons/telephone.png create mode 100755 www/img/icons/telephone_add.png create mode 100755 www/img/icons/telephone_delete.png create mode 100755 www/img/icons/telephone_edit.png create mode 100755 www/img/icons/telephone_error.png create mode 100755 www/img/icons/telephone_go.png create mode 100755 www/img/icons/telephone_key.png create mode 100755 www/img/icons/telephone_link.png create mode 100755 www/img/icons/television.png create mode 100755 www/img/icons/television_add.png create mode 100755 www/img/icons/television_delete.png create mode 100755 www/img/icons/text_align_center.png create mode 100755 www/img/icons/text_align_justify.png create mode 100755 www/img/icons/text_align_left.png create mode 100755 www/img/icons/text_align_right.png create mode 100755 www/img/icons/text_allcaps.png create mode 100755 www/img/icons/text_bold.png create mode 100755 www/img/icons/text_columns.png create mode 100755 www/img/icons/text_dropcaps.png create mode 100755 www/img/icons/text_heading_1.png create mode 100755 www/img/icons/text_heading_2.png create mode 100755 www/img/icons/text_heading_3.png create mode 100755 www/img/icons/text_heading_4.png create mode 100755 www/img/icons/text_heading_5.png create mode 100755 www/img/icons/text_heading_6.png create mode 100755 www/img/icons/text_horizontalrule.png create mode 100755 www/img/icons/text_indent.png create mode 100755 www/img/icons/text_indent_remove.png create mode 100755 www/img/icons/text_italic.png create mode 100755 www/img/icons/text_kerning.png create mode 100755 www/img/icons/text_letter_omega.png create mode 100755 www/img/icons/text_letterspacing.png create mode 100755 www/img/icons/text_linespacing.png create mode 100755 www/img/icons/text_list_bullets.png create mode 100755 www/img/icons/text_list_numbers.png create mode 100755 www/img/icons/text_lowercase.png create mode 100755 www/img/icons/text_padding_bottom.png create mode 100755 www/img/icons/text_padding_left.png create mode 100755 www/img/icons/text_padding_right.png create mode 100755 www/img/icons/text_padding_top.png create mode 100755 www/img/icons/text_replace.png create mode 100755 www/img/icons/text_signature.png create mode 100755 www/img/icons/text_smallcaps.png create mode 100755 www/img/icons/text_strikethrough.png create mode 100755 www/img/icons/text_subscript.png create mode 100755 www/img/icons/text_superscript.png create mode 100755 www/img/icons/text_underline.png create mode 100755 www/img/icons/text_uppercase.png create mode 100755 www/img/icons/textfield.png create mode 100755 www/img/icons/textfield_add.png create mode 100755 www/img/icons/textfield_delete.png create mode 100755 www/img/icons/textfield_key.png create mode 100755 www/img/icons/textfield_rename.png create mode 100755 www/img/icons/thumb_down.png create mode 100755 www/img/icons/thumb_up.png create mode 100755 www/img/icons/tick.png create mode 100755 www/img/icons/time.png create mode 100755 www/img/icons/time_add.png create mode 100755 www/img/icons/time_delete.png create mode 100755 www/img/icons/time_go.png create mode 100755 www/img/icons/timeline_marker.png create mode 100755 www/img/icons/transmit.png create mode 100755 www/img/icons/transmit_add.png create mode 100755 www/img/icons/transmit_blue.png create mode 100755 www/img/icons/transmit_delete.png create mode 100755 www/img/icons/transmit_edit.png create mode 100755 www/img/icons/transmit_error.png create mode 100755 www/img/icons/transmit_go.png create mode 100755 www/img/icons/tux.png create mode 100755 www/img/icons/user.png create mode 100755 www/img/icons/user_add.png create mode 100755 www/img/icons/user_comment.png create mode 100755 www/img/icons/user_delete.png create mode 100755 www/img/icons/user_edit.png create mode 100755 www/img/icons/user_female.png create mode 100755 www/img/icons/user_go.png create mode 100755 www/img/icons/user_gray.png create mode 100755 www/img/icons/user_green.png create mode 100755 www/img/icons/user_orange.png create mode 100755 www/img/icons/user_red.png create mode 100755 www/img/icons/user_suit.png create mode 100755 www/img/icons/vcard.png create mode 100755 www/img/icons/vcard_add.png create mode 100755 www/img/icons/vcard_delete.png create mode 100755 www/img/icons/vcard_edit.png create mode 100755 www/img/icons/vector.png create mode 100755 www/img/icons/vector_add.png create mode 100755 www/img/icons/vector_delete.png create mode 100755 www/img/icons/wand.png create mode 100755 www/img/icons/weather_clouds.png create mode 100755 www/img/icons/weather_cloudy.png create mode 100755 www/img/icons/weather_lightning.png create mode 100755 www/img/icons/weather_rain.png create mode 100755 www/img/icons/weather_snow.png create mode 100755 www/img/icons/weather_sun.png create mode 100755 www/img/icons/webcam.png create mode 100755 www/img/icons/webcam_add.png create mode 100755 www/img/icons/webcam_delete.png create mode 100755 www/img/icons/webcam_error.png create mode 100755 www/img/icons/world.png create mode 100755 www/img/icons/world_add.png create mode 100755 www/img/icons/world_delete.png create mode 100755 www/img/icons/world_edit.png create mode 100755 www/img/icons/world_go.png create mode 100755 www/img/icons/world_link.png create mode 100755 www/img/icons/wrench.png create mode 100755 www/img/icons/wrench_orange.png create mode 100755 www/img/icons/xhtml.png create mode 100755 www/img/icons/xhtml_add.png create mode 100755 www/img/icons/xhtml_delete.png create mode 100755 www/img/icons/xhtml_go.png create mode 100755 www/img/icons/xhtml_valid.png create mode 100755 www/img/icons/zoom.png create mode 100755 www/img/icons/zoom_in.png create mode 100755 www/img/icons/zoom_out.png create mode 100644 www/img/loader.gif create mode 100755 www/img/logo.png create mode 100644 www/img/logo2.png create mode 100644 www/img/logo3.png create mode 100644 www/img/logo4.png create mode 100644 www/img/marker.svg create mode 100755 www/img/order.png create mode 100644 www/img/taxo/cat1.png create mode 100644 www/img/taxo/cat10.png create mode 100644 www/img/taxo/cat14.png create mode 100644 www/img/taxo/cat3.png create mode 100644 www/img/taxo/cat4.png create mode 100644 www/img/taxo/cat5.png create mode 100644 www/img/taxo/cat6.png create mode 100644 www/img/taxo/cat7.png create mode 100644 www/img/taxo/cat8.png create mode 100644 www/img/taxo/cat9.png create mode 100755 www/img/tick_no.png create mode 100755 www/img/tick_ok.png create mode 100755 www/img/tick_ok_me.png create mode 100755 www/img/unknown.png create mode 100644 www/img/weight.png create mode 100755 www/js/rgraph/RGraph.bar.js create mode 100755 www/js/rgraph/RGraph.common.core.js create mode 100755 www/js/skins/lightgray/content.inline.min.css create mode 100755 www/js/skins/lightgray/content.min.css create mode 100755 www/js/skins/lightgray/fonts/readme.md create mode 100755 www/js/skins/lightgray/fonts/tinymce-small.dev.svg create mode 100755 www/js/skins/lightgray/fonts/tinymce-small.eot create mode 100755 www/js/skins/lightgray/fonts/tinymce-small.svg create mode 100755 www/js/skins/lightgray/fonts/tinymce-small.ttf create mode 100755 www/js/skins/lightgray/fonts/tinymce-small.woff create mode 100755 www/js/skins/lightgray/fonts/tinymce.dev.svg create mode 100755 www/js/skins/lightgray/fonts/tinymce.eot create mode 100755 www/js/skins/lightgray/fonts/tinymce.svg create mode 100755 www/js/skins/lightgray/fonts/tinymce.ttf create mode 100755 www/js/skins/lightgray/fonts/tinymce.woff create mode 100755 www/js/skins/lightgray/img/anchor.gif create mode 100755 www/js/skins/lightgray/img/loader.gif create mode 100755 www/js/skins/lightgray/img/object.gif create mode 100755 www/js/skins/lightgray/img/trans.gif create mode 100755 www/js/skins/lightgray/skin.ie7.min.css create mode 100755 www/js/skins/lightgray/skin.min.css create mode 100755 www/js/themes/modern/theme.min.js create mode 100644 www/js/tinymce/langs/de.js create mode 100644 www/js/tinymce/langs/en.js create mode 100644 www/js/tinymce/langs/es.js create mode 100644 www/js/tinymce/langs/fr.js create mode 100644 www/js/tinymce/plugins/advlist/plugin.min.js create mode 100644 www/js/tinymce/plugins/anchor/plugin.min.js create mode 100644 www/js/tinymce/plugins/autolink/plugin.min.js create mode 100644 www/js/tinymce/plugins/autoresize/plugin.min.js create mode 100644 www/js/tinymce/plugins/autosave/plugin.min.js create mode 100644 www/js/tinymce/plugins/bbcode/plugin.min.js create mode 100644 www/js/tinymce/plugins/charmap/plugin.min.js create mode 100644 www/js/tinymce/plugins/code/plugin.min.js create mode 100644 www/js/tinymce/plugins/codesample/css/prism.css create mode 100644 www/js/tinymce/plugins/codesample/plugin.min.js create mode 100644 www/js/tinymce/plugins/colorpicker/plugin.min.js create mode 100644 www/js/tinymce/plugins/contextmenu/plugin.min.js create mode 100644 www/js/tinymce/plugins/directionality/plugin.min.js create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-cool.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-cry.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-frown.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-innocent.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-kiss.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-laughing.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-sealed.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-smile.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-surprised.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-undecided.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-wink.gif create mode 100644 www/js/tinymce/plugins/emoticons/img/smiley-yell.gif create mode 100644 www/js/tinymce/plugins/emoticons/plugin.min.js create mode 100644 www/js/tinymce/plugins/example/dialog.html create mode 100644 www/js/tinymce/plugins/example/plugin.min.js create mode 100644 www/js/tinymce/plugins/example_dependency/plugin.min.js create mode 100644 www/js/tinymce/plugins/fullpage/plugin.min.js create mode 100644 www/js/tinymce/plugins/fullscreen/plugin.min.js create mode 100644 www/js/tinymce/plugins/hr/plugin.min.js create mode 100644 www/js/tinymce/plugins/image/plugin.min.js create mode 100644 www/js/tinymce/plugins/imagetools/plugin.min.js create mode 100644 www/js/tinymce/plugins/importcss/plugin.min.js create mode 100644 www/js/tinymce/plugins/insertdatetime/plugin.min.js create mode 100644 www/js/tinymce/plugins/layer/plugin.min.js create mode 100644 www/js/tinymce/plugins/legacyoutput/plugin.min.js create mode 100644 www/js/tinymce/plugins/link/plugin.min.js create mode 100644 www/js/tinymce/plugins/lists/plugin.min.js create mode 100644 www/js/tinymce/plugins/media/moxieplayer.swf create mode 100644 www/js/tinymce/plugins/media/plugin.min.js create mode 100644 www/js/tinymce/plugins/nonbreaking/plugin.min.js create mode 100644 www/js/tinymce/plugins/noneditable/plugin.min.js create mode 100644 www/js/tinymce/plugins/pagebreak/plugin.min.js create mode 100644 www/js/tinymce/plugins/paste/plugin.min.js create mode 100644 www/js/tinymce/plugins/preview/plugin.min.js create mode 100644 www/js/tinymce/plugins/print/plugin.min.js create mode 100644 www/js/tinymce/plugins/save/plugin.min.js create mode 100644 www/js/tinymce/plugins/searchreplace/plugin.min.js create mode 100644 www/js/tinymce/plugins/spellchecker/plugin.min.js create mode 100644 www/js/tinymce/plugins/tabfocus/plugin.min.js create mode 100644 www/js/tinymce/plugins/table/plugin.min.js create mode 100644 www/js/tinymce/plugins/template/plugin.min.js create mode 100644 www/js/tinymce/plugins/textcolor/plugin.min.js create mode 100644 www/js/tinymce/plugins/textpattern/plugin.min.js create mode 100644 www/js/tinymce/plugins/visualblocks/css/visualblocks.css create mode 100644 www/js/tinymce/plugins/visualblocks/plugin.min.js create mode 100644 www/js/tinymce/plugins/visualchars/plugin.min.js create mode 100644 www/js/tinymce/plugins/wordcount/plugin.min.js create mode 100644 www/js/tinymce/skins/lightgray/content.inline.min.css create mode 100644 www/js/tinymce/skins/lightgray/content.min.css create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce-small.eot create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce-small.svg create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce-small.woff create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce.eot create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce.svg create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce.ttf create mode 100644 www/js/tinymce/skins/lightgray/fonts/tinymce.woff create mode 100644 www/js/tinymce/skins/lightgray/img/anchor.gif create mode 100644 www/js/tinymce/skins/lightgray/img/loader.gif create mode 100644 www/js/tinymce/skins/lightgray/img/object.gif create mode 100644 www/js/tinymce/skins/lightgray/img/trans.gif create mode 100644 www/js/tinymce/skins/lightgray/skin.ie7.min.css create mode 100644 www/js/tinymce/skins/lightgray/skin.min.css create mode 100644 www/js/tinymce/themes/inlite/theme.min.js create mode 100644 www/js/tinymce/themes/modern/theme.min.js create mode 100644 www/js/tinymce/tinymce.min.js create mode 100644 www/lang/allTexts.pot create mode 100644 www/lang/texts_ast.po create mode 100644 www/lang/texts_de.po create mode 100644 www/lang/texts_en.po create mode 100644 www/lang/texts_es.po create mode 100644 www/lang/texts_fr.po create mode 100644 www/lang/texts_it.po create mode 100644 www/lang/texts_nl.po create mode 100755 www/produits.xls diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..2e05db2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +*.n +*.php +config.xml +www/plugin/* +Makefile +tmp/* +*node_modules* +*.map +.haxelib +html +.temp +*.tar + +lang/master/tpl/plugin/* + +lang/fr/tpl/* +lang/en/tpl/* +lang/de/tpl/* +lang/es/tpl/* + +lang/fr/tmp/*.n +lang/en/tmp/*.n +lang/de/tmp/*.n +lang/es/tmp/*.n + +www/lang/*.mo + +www/file/* + +www/js/app.js +www/js/libs.js + + +www/css/.sass-cache +www/css/*.css + + diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..d6a9326 --- /dev/null +++ b/LICENSE @@ -0,0 +1,340 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + diff --git a/Makefile.dist b/Makefile.dist new file mode 100644 index 0000000..9a121c3 --- /dev/null +++ b/Makefile.dist @@ -0,0 +1,93 @@ +ROPTS=-zav --no-p --chmod=u=rw,g=rw,o=r --delete --exclude=www/.htaccess --exclude=.svn --exclude=.git --exclude=*.mtt --exclude=tpl/css --exclude=www/file --exclude=*node_modules* --exclude=*.php --exclude=tests.n +LANG=fr +PLUGINS?=0 +ENV?="dev" + +#To compile project with plugins, add PLUGINS=1 or type `export PLUGINS=1` + +install: + #copy config file from template + cp config.xml.dist config.xml + @if [ $(ENV) = "dev" ]; then \ + make install_dev; \ + fi + +#setup dev environnement from source +install_dev: + #set config file to debug=1 + @sed -e 's?debug=.*?debug="1"?g' --in-place config.xml + #install haxe dependencies in .haxelib + haxelib newrepo + haxelib -always install cagette.hxml + haxelib -always install cagetteJs.hxml + #template tools + haxelib run templo + sudo mv temploc2 /usr/bin + #extra plugins + @if [ $(PLUGINS) = 1 ]; then \ + haxelib git cagette-pro git@bitbucket.org:bubar/cagette-pro.git; \ + haxelib git cagette-hosted git@bitbucket.org:bubar/cagette-hosted.git; \ + haxelib git cagette-wholesale-order git@github.com:bablukid/cagette-wholesale-order.git; \ + fi + #install npm dependencies + npm install + npm run libs:dev + npm run build:js + #compile + @make css + @make compile + @make frontend + @echo "Well, it looks like everything is fine : librairies are installed, backend and frontend has been compiled !" + + +#compile backend to Neko +compile: + @if [ $(PLUGINS) = 1 ]; then \ + echo "compile Cagette.net with plugins"; \ + haxe cagetteAllPlugins.hxml; \ + else \ + echo "compile Cagette.net core"; \ + haxe cagette.hxml; \ + fi + + +#compile SASS files to CSS +css: + npm run build:sass + +#compile frontend to JS +frontend: + @if [ $(PLUGINS) = 1 ]; then \ + haxe cagetteAllPluginsJs.hxml; \ + else \ + haxe cagetteJs.hxml; \ + fi + +#update POT file from source +i18n: + haxe potGeneration.hxml + +#compile templates in each language, required for production env. +templates: + haxe cagette.hxml -D i18n_generation + @make LANG=fr ctemplates + @make LANG=en ctemplates + @make LANG=de ctemplates + +ctemplates: + (cd lang/$(LANG)/tpl; temploc2 -macros macros.mtt -output ../tmp/ *.mtt */*.mtt */*/*.mtt */*/*/*.mtt */*/*/*/*.mtt) + +#Compile and run unit tests +tests: + @if [ $(PLUGINS) = 1 ]; then \ + haxe testsPlugins.hxml; \ + else \ + haxe tests.hxml; \ + fi + @docker-compose run --workdir="/var/www/www" neko neko tests.n mysql://root:root@mysql/tests + +cp_plugin: + cp -R .haxelib/cagette-hosted/git/tpl/* lang/master/tpl/plugin/hosted/ + cp -R .haxelib/cagette-pro/git/tpl/* lang/master/tpl/plugin/pro/ + cp -R .haxelib/cagette-wholesale-order/git/tpl/* lang/master/tpl/plugin/who/ + diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 67e863e..422b4dd --- a/README.md +++ b/README.md @@ -1,2 +1,17 @@ -CAGETTE from Artcode -==================== +# Cagette.net +Le logiciel libre des circuits courts. + +[![Build Status](https://travis-ci.org/bablukid/cagette.svg?branch=master)](https://travis-ci.org/bablukid/cagette) + +http://www.cagette.net + +Documentation : http://www.cagette.net/wiki + +English : + +Cagette.net is an open source web app to help people build a better and sustainable food system. +Some people call it a "foodhub" : A mix between a groupware and a marketplace, helping consumers to order food from local farmers and producers. + +## Build & install + +Read the Developer page on the wiki to know more about this : http://wiki.cagette.net/dev:index diff --git a/build/travis-ci-apache b/build/travis-ci-apache new file mode 100644 index 0000000..c6ebf18 --- /dev/null +++ b/build/travis-ci-apache @@ -0,0 +1,11 @@ + + ServerName cagette + DirectoryIndex index.n + DocumentRoot %TRAVIS_BUILD_DIR%/www + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + \ No newline at end of file diff --git a/cagette-php.hxml b/cagette-php.hxml new file mode 100644 index 0000000..28ed845 --- /dev/null +++ b/cagette-php.hxml @@ -0,0 +1,22 @@ +-lib dbadmin +-lib templo +-lib weblog +-lib sugoi +-lib hxevents +-lib cagette-hosted +-lib hscript +-lib ufront-mail +-cp common +-cp src +-php www/ +-D spod_macro +-main App +-D debugip=localhost:18080 +-D weblogid=cagette +--next +-dce no +-cp common +-cp js +-lib sugoi +-main App +-js www/js/app.js diff --git a/cagette.hxml b/cagette.hxml new file mode 100644 index 0000000..aecc8ef --- /dev/null +++ b/cagette.hxml @@ -0,0 +1,18 @@ +-lib templo:3.0.0 +-lib hxevents:0.4.0 +-lib thx.semver:0.2.2 +-lib thx.csv:0.2.0 +-lib datetime:3.1.1 +-lib hscript:2.3.0 +-lib smtpmailer:0.4.0 +-lib tink_json:0.9.0 + +-lib sugoi:git:git@artcode.re:cagette/sugoi.git +-lib record-macros:git:git@artcode.re:cagette/record-macros.git +-lib dbadmin:git:git@artcode.re:cagette/dbadmin.git + +-cp common +-cp src +-cp lang/master/tpl +-neko www/index.n +-main App diff --git a/cagetteAllPlugins.hxml b/cagetteAllPlugins.hxml new file mode 100755 index 0000000..6762dc0 --- /dev/null +++ b/cagetteAllPlugins.hxml @@ -0,0 +1,26 @@ +-lib templo +-lib hxevents +-lib thx.semver +-lib thx.csv +-lib datetime +-lib hscript +-lib smtpmailer +-lib tink_json + +-lib sugoi:git:https://github.com/bablukid/sugoi#master +-lib record-macros:git:https://github.com/HaxeFoundation/record-macros#master +-lib dbadmin:git:https://github.com/ncannasse/dbadmin.git#master + +-lib cagette-pro:git:https://bubar@bitbucket.org/bubar/cagette-pro.git#master +-lib cagette-hosted:git:https://bubar@bitbucket.org/bubar/cagette-hosted.git#master +-lib cagette-wholesale-order:git:https://github.com/bablukid/cagette-wholesale-order.git#master + +-cp common +-cp src +-cp lang/master/tpl + +-D plugins + + +-neko www/index.n +-main App \ No newline at end of file diff --git a/cagetteAllPlugins.hxproj b/cagetteAllPlugins.hxproj new file mode 100755 index 0000000..f6f1362 --- /dev/null +++ b/cagetteAllPlugins.hxproj @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cagetteAllPluginsJs.hxml b/cagetteAllPluginsJs.hxml new file mode 100644 index 0000000..0e7469f --- /dev/null +++ b/cagetteAllPluginsJs.hxml @@ -0,0 +1,17 @@ +-dce no +-cp common +-cp js +-lib sugoi:git:https://github.com/bablukid/sugoi#i18n +-lib hxleaflet:git:https://github.com/bablukid/hxleaflet +-lib cagette-hosted +-lib react +-lib react-router-4 +-lib modular +-lib tink_json + +-D plugins +-D no-deprecation-warnings + +-main App +-js www/js/app.js + diff --git a/cagetteJs.hxml b/cagetteJs.hxml new file mode 100644 index 0000000..2484546 --- /dev/null +++ b/cagetteJs.hxml @@ -0,0 +1,13 @@ +-dce no +-cp common +-cp js +-lib sugoi:git:git@artcode.re:cagette/sugoi.git +-lib hxleaflet:git:git@artcode.re:cagette/hxleaflet.git +-lib react:1.4.0 +-lib react-router-4:0.2.3 +-lib modular:0.10.15 +-lib tink_json:0.9.0 +-main App +-debug +-js www/js/app.js +-D no-deprecation-warnings diff --git a/common/Common.hx b/common/Common.hx new file mode 100755 index 0000000..7c1849d --- /dev/null +++ b/common/Common.hx @@ -0,0 +1,472 @@ +/** + * Common.hx : Shared entities between server and client + */ + +@:keep +typedef OrderSimple = { + products: Array<{ + product:ProductInfo, + quantity:Int + }>, + total:Float +} + +//A temporary order, waiting for being paid and definitely recorded. +@:keep +typedef OrderInSession = { + products:Array <{ + productId:Int, + quantity:Float, + #if !js + ?product:db.Product, + ?distributionId:Int, + #end + } > , + ?userId:Int, + total:Float, //price to pay + ?paymentOp:Int, //payment operation ID +} + +@:keep +typedef ProductInfo = { + id : Int, + name : String, + ref : Null, + image : Null, + contractId : Int, + price : Float, + vat : Null, //VAT rate + vatValue : Null, //amount of VAT included in the price + contractTax : Null, //pourcentage de commission défini dans le contrat + contractTaxName : Null, //label pour la commission : ex: "frais divers" + desc : Null, + categories : Null>, //used in old shop + subcategories : Null>, //used in new shop + orderable : Bool, //can be currently ordered + stock: Null, //available stock + hasFloatQt : Bool, + qt:Null, + unitType:Null, + organic:Bool, + variablePrice:Bool, + wholesale:Bool, + active:Bool, + ?distributionId:Null, //in the context of a distrib +} + +@:keep +typedef ProductWithQuantity = { + product: ProductInfo, + quantity: Int +} + +enum Unit{ + Piece; + Kilogram; + Gram; + Litre; + Centilitre; +} + +typedef CategoryInfo = { + id:Int, + name:String, + ?subcategories:Array +} + +/** + * datas used with the "tagger" ajax class + */ +@:keep +typedef TaggerInfos = { + products:Array<{product:ProductInfo,categories:Array}>,//tagged products + categories : Array<{id:Int,categoryGroupName:String,color:String,tags:Array<{id:Int,name:String}>}>, //groupe de categories + tags +} + +/** + * Links in navbars for plugins + */ +typedef Link = { + id:String, + link:String, + name:String, + ?icon:String, +} + +typedef Block = { + id:String, + title:String, + ?icon:String, + html:String +} + +typedef UserOrder = { + id:Int, + userId:Int, + userName:String, + ?userEmail : String, + + ?userId2:Int, + ?userName2:String, + ?userEmail2:String, + + //deprecated + ?productId:Int, + ?productRef:String, + ?productName:String, + ?productPrice:Float, + ?productImage:String, + ?productQt:Float, + ?productUnit:Unit, + + ?productHasFloatQt:Bool, + ?productHasVariablePrice:Bool, + + //new way + ?product:ProductInfo, + + quantity:Float, + smartQt:String, + subTotal:Float, + + fees:Null, + percentageName:Null, + percentageValue:Null, + total:Float, + + //flags + paid:Bool, + invertSharedOrder:Bool, + canceled:Bool, + canModify:Bool, + + contractId:Int, + contractName:String, +} + + + +typedef PlaceInfos = { + id:Int, + name:String, + address1:String, + address2:String, + zipCode:String, + city:String, + latitude:Float, + longitude:Float +} + +typedef UserInfo = { + id:Int, + name:String, + email:String, + +} + + +typedef GroupOnMap = { + id:Int, + name:String, + image:String, + place:PlaceInfos, +} + +enum OrderFlags { + InvertSharedOrder; //invert order when there is a shared/alternated order + //Canceled; //flag for cancelled orders, qt should always be 0 +} + + +typedef OrderByProduct = { + quantity:Float, + smartQt:String, + pid:Int, + pname:String, + ref:String, + priceHT:Float, + priceTTC:Float, + vat:Float, + totalHT:Float, + totalTTC:Float, + weightOrVolume:String, +}; +typedef OrderByEndDate = {date: String,contracts: Array}; + +/** + Event enum used for plugins. + + As in most CMS event systems, + the events (or "triggers") can be caught by plugins + to perform an action or modifiy data carried by the event. + +**/ +enum Event { + + Page(uri:String); //a page is displayed + Nav(nav:Array, name:String, ?id:Int); //a navigation is displayed, optionnal object id if needed + Blocks(blocks:Array, name:String, ?context:Dynamic); //HTML blocks that can be displayed on a page + + #if sys + SendEmail(message : sugoi.mail.Mail); //an email is sent + NewMember(user:db.User,group:db.Amap); //a new member is added to a group + NewGroup(group:db.Amap, author:db.User); //a new group is created + + //Distributions + PreNewDistrib(contract:db.Contract); //when displaying the insert distribution form + NewDistrib(distrib:db.Distribution); //when a new distrinbution is created + PreEditDistrib(distrib:db.Distribution); + EditDistrib(distrib:db.Distribution); + DeleteDistrib(distrib:db.Distribution); + PreNewDistribCycle(cycle:db.DistributionCycle); + NewDistribCycle(cycle:db.DistributionCycle); + MultiDistribEvent(md:MultiDistrib); + + //Products + PreNewProduct(contract:db.Contract); //when displaying the insert distribution form + NewProduct(product:db.Product); //when a new product is created + PreEditProduct(product:db.Product); + EditProduct(product:db.Product); + DeleteProduct(product:db.Product); + BatchEnableProducts(data:{pids:Array,enable:Bool}); + ProductInfosEvent(p:ProductInfo,?d:db.Distribution); //when infos about a product are displayed + + //Contracts + EditContract(contract:db.Contract,form:sugoi.form.Form); + DuplicateContract(contract:db.Contract); + DeleteContract(contract:db.Contract); + + //crons + DailyCron; + HourlyCron; + MinutelyCron; + + //orders + MakeOrder(orders:Array); + StockMove(order:{product:db.Product, move:Float}); //when a stock is modified + + //payments + GetPaymentTypes(data:{types:Array}); + NewOperation(op:db.Operation); + + #end + +} + + +/* + * Product Taxonomy structure + */ +typedef TxpDictionnary = { + products:Map, + categories:Map, + subCategories:Map, + +} + + +/* + * Tutorials + */ +enum TutoAction { + TAPage(uri:String); + TANext; + +} +enum TutoPlacement { + TPTop; + TPBottom; + TPLeft; + TPRight; +} + +class TutoDatas { + + public static var TUTOS; + + #if js + //async + public static function get(tuto:String, callback:Dynamic->Void){ + #if !test + sugoi.i18n.Locale.init(App.instance.LANG, function(t:sugoi.i18n.GetText){ + App.instance.t = t; + init(t); + var tuto = TUTOS.get(tuto); + callback(tuto); + }); + #end + } + #else + //sync + public static function get(tuto:String):{name:String, steps:Array<{element:String,text:String,action:TutoAction,placement:TutoPlacement}>} + { + sugoi.i18n.Locale.init(App.current.getLang()); + init(sugoi.i18n.Locale.texts); + return TUTOS.get(tuto); + } + #end + + static function init(t:sugoi.i18n.GetText){ + + TUTOS = [ + "intro" => { + name:t._("Guided tour for the coordinator"), + steps:[ + { + element:null, + text:t._("

In order to better discover Cagette.net, we propose to do a guided tour of the user interface of the software.
You will then have a global overview on the different tools that are available to you.

You will be able to stop and start again this tutorial whenever you want.

"), + action: TANext, + placement : null + }, + { + element:"ul.nav.navbar-left", + text:t._( "This part of the navigation bar is visible by all members.
It allows to access to the three main pages:
  • The home page which displays orders and the delivery planning.
  • On the My account page, you can update your personal information and check your orders history
  • On the Farmers page, you can see all farmers and coordinators of the group
"), + action: TANext, + placement : TPBottom + }, + { + element:"ul.nav.navbar-right", + text:t._("This part is for coordinators only.Here you will be able to manage the register of members, orders, products, etc.

Now click on the Members section

"), + action: TAPage("/member"), + placement : TPBottom + + },{ + element:".article .table td:first", + text:t._("The purpose of this section is to administrate the list of your members.
Every time that you register a new membrer, an account will be created for him/her. Now the member can join you at Cagette.net and order or consult the planning of the deliveries.

Now click on a member in the list

"), + action: TAPage("/member/view/*"), + placement : TPRight + },{ + element:".article:first", + text:t._("This is the page of a member. Here you can :
  • see and change their contact details
  • manage the membership fee of your group
  • see a summary of their orders
"), + action: TANext, + placement : TPRight + },{ + element:"ul.nav #contractadmin", + text:t._("Now let's have a look at the contracts section which is very important for coordinators."), + action: TAPage("/contractAdmin"), + placement : TPBottom + },{ + element:"#contracts", + text:t._("Here you find the list of contracts.They inculde a start date, a end date, and represent your relationship with a farmer.

Here you can manage :

  • the list of products of this farmer
  • the orders of members for this farmer
  • and plan the delivery schedule

"), + action: TANext, + placement : TPBottom + + },{ + element:"#places", + text:t._("Here you can manage the list of delivery places.
Don't forget to key-in the complete address as a map will be displayed based on this address"), + action: TANext, + placement : TPTop + + },{ + element:"#contracts table .btn:first", + text:t._("Let's look closer at how to manage a contract. Click on this button"), + action: TAPage("/contractAdmin/view/*"), + placement : TPBottom + + },{ + element:".table.table-bordered:first", + text:t._("Here is a summary of the contract.
There are two types of contracts:
  • Constant contracts: the member commits on buying the same products during the whole duration of the contract
  • Variable contracts: the member can choose what he buys for each delivery.
"), + action: TANext, + placement : TPRight + + },{ + element:"#subnav #products", + text:t._("Let's see now the page Products"), + action : TAPage("/contractAdmin/products/*"), + placement:TPRight + },{ + element:".article .table", + text:t._("On this page, you can manage the list of products offered by this supplier.
Define at least the name and the price of products. It is also possible to add a description and a picture."), + action: TANext, + placement : TPTop + + },{ + element:"#subnav #deliveries", + text:t._("Let's see the deliveries page"), + action : TAPage("/contractAdmin/distributions/*"), + placement:TPRight + },{ + element:".article .table", + text:t._("Here we can manage the list of deliveries for this supplier.
In the software, a delivery has a date, a start time, and an end time. The location of the delivery must also be defined, by using the list that we have already seen."), + action: TANext, + placement : TPLeft + + },{ + element:"#subnav #orders", + text:t._("Let's see now the Orders page"), + action : TAPage("/contractAdmin/orders/*"), //can fail if the contract is variable because the uri is different + placement:TPRight + },{ + element:".article .table", + text:t._("Here we can manage the list of orders for this supplier.
If you choose to \"open orders\" to members, they will be able to make their orders online themselves.
This page will centralize automatically the orders for this supplier. Otherwise, as a coordinator, you will be able to enter orders on behalf of a member."), + action: TANext, + placement : TPLeft + + },{ + element:"ul.nav #messages", + text:t._("

We have seen the main features related to contracts.

Let's see the messaging section.

"), + action: TAPage("/messages"), + placement : TPBottom + + },{ + element:null, + text:t._("

The messaging section allows you to send e-mails to different lists of members. It is not necessary anymore to maintain a lot of lists of e-mails depending on contracts, as all these lists are automatically generated.

E-mails are sent with your e-mail address as sender, so you will receive answers in your own mailbox.

"), + action: TANext, + placement : null + + },{ + element:"ul.nav #amapadmin", + text:t._("Click here now on this page"), + action : TAPage("/amapadmin"), + placement : TPBottom, + },{ + element:"#subnav", + text:t._("

In this last page, you can configure everything that is related to your group.

The page Access rights is important as it is where you can define other coordinators among members. They will then be able to manage one or many contracts, send emails, etc.

"), + action:TANext, + placement : TPBottom + },{ + element:"#footer", + text:t._("

This is the last step of this tutorial. I hope that it gave you a good overview of this software.
To go further, do not hesitate to look at the documentation. The link is always available at the bottom of the screen.

"), + action:TANext, + placement : TPBottom + } + ] + }, + ]; + + } + + + +} + +/** + * Order Reports + */ +enum OrdersReportGroupOption{ + ByMember; + ByProduct; +} + +enum OrdersReportFormatOption{ + Table; + Csv; + PrintableList; //list de distrib ? +} + + +//Report Options : should be usable in an URL, an API call... +typedef OrdersReportOptions = { + //time scope + startDate:Date, + endDate:Date, + + //formatting + ?groupBy:OrdersReportGroupOption, //group order by... + ?format:OrdersReportFormatOption, //table , csv ? + + //filters : + ?groups:Array, + ?contracts:Array, //which contracts + ?distributions:Array, +} diff --git a/common/Formatting.hx b/common/Formatting.hx new file mode 100644 index 0000000..4465dcb --- /dev/null +++ b/common/Formatting.hx @@ -0,0 +1,73 @@ +package; +import Common; + +/** + * Formatting tools used on both client and server side. + * + * @author fbarbut + */ +class Formatting +{ + + /** smart quantity filter : display easier-to-read quantity when it's floats + * + * 0.33 x Lemon 12kg => 2kg Lemon + */ + public static function smartQt(orderQt:Float,productQt:Float,unit:Unit):String{ + return formatNum(orderQt * productQt) + " " + Formatting.unit(unit); + } + + public static function formatNum(n:Float):String { + if (n == null) return ""; + + //arrondi a 2 apres virgule + var out = Std.string(roundTo(n, 2)); + + //ajout un zéro, 1,8-->1,80 + if (out.indexOf(".")!=-1 && out.split(".")[1].length == 1) out = out +"0"; + + //virgule et pas point + return out.split(".").join(","); + } + + + /** + * Round a number to r digits after coma. + */ + public static function roundTo(n:Float, r:Int):Float { + return Math.round(n * Math.pow(10,r)) / Math.pow(10,r) ; + } + + public static function parseFloat(s:String):Float{ + if(s.indexOf(",")>0){ + return Std.parseFloat(StringTools.replace(s,",",".")); + }else{ + return Std.parseFloat(s); + } + } + + /** + * Display a unit + * @param u - + */ + public static function unit(u:Unit):String{ + /*t = sugoi.i18n.Locale.texts; + if(u==null) return t._("piece||unit of a product)"); + return switch(u){ + case Kilogram: t._("Kg.||kilogramms"); + case Gram: t._("g.||gramms"); + case Piece: t._("piece||unit of a product)"); + case Litre: t._("L.||liter"); + case Centilitre: t._("cl.||centiliter"); + }*/ + if(u==null) return "pièce(s)"; + return switch(u){ + case Kilogram: "Kg."; + case Gram: "g."; + case Piece: "pièce(s)"; + case Litre: "L."; + case Centilitre:"cl."; + } + + } +} \ No newline at end of file diff --git a/data/productTaxonomy.json b/data/productTaxonomy.json new file mode 100644 index 0000000..c500760 --- /dev/null +++ b/data/productTaxonomy.json @@ -0,0 +1,4322 @@ +{ + "products": [ + { + "name": "Vin Rouge", + "id": 447, + "subCategory": 11, + "category": 9 + }, + { + "name": "Vin Rosé", + "id": 446, + "subCategory": 11, + "category": 9 + }, + { + "name": "Vin Blanc", + "id": 445, + "subCategory": 11, + "category": 9 + }, + { + "name": "Pain à l'épeautre", + "id": 444, + "subCategory": 32, + "category": 7 + }, + { + "name": "Pain à l'engrain", + "id": 443, + "subCategory": 32, + "category": 7 + }, + { + "name": "Pain tournesol", + "id": 442, + "subCategory": 32, + "category": 7 + }, + { + "name": "Palet breton", + "id": 441, + "subCategory": 9, + "category": 7 + }, + { + "name": "Meringue", + "id": 440, + "subCategory": 9, + "category": 7 + }, + { + "name": "Vin mousseux ou Crémant", + "id": 439, + "subCategory": 11, + "category": 9 + }, + { + "name": "Sauternes", + "id": 438, + "subCategory": 11, + "category": 9 + }, + { + "name": "Avocat", + "id": 437, + "subCategory": 33, + "category": 6 + }, + { + "name": "Salade", + "id": 436, + "subCategory": 33, + "category": 6 + }, + { + "name": "Ratatouille", + "id": 435, + "subCategory": 30, + "category": 6 + }, + { + "name": "Cake", + "id": 434, + "subCategory": 9, + "category": 7 + }, + { + "name": "Soupe (rascasse, vive, etc)", + "id": 433, + "subCategory": 44, + "category": 1 + }, + { + "name": "Biscuits", + "id": 432, + "subCategory": 9, + "category": 7 + }, + { + "name": "Conserves de légumes", + "id": 431, + "subCategory": 30, + "category": 6 + }, + { + "name": "Soupe de tomates", + "id": 430, + "subCategory": 30, + "category": 6 + }, + { + "name": "Soupe de légumes", + "id": 429, + "subCategory": 30, + "category": 6 + }, + { + "name": "Soupe", + "id": 428, + "subCategory": 30, + "category": 6 + }, + { + "name": "Biscuit rose", + "id": 427, + "subCategory": 9, + "category": 7 + }, + { + "name": "Spécialités fromagères", + "id": 426, + "subCategory": 26, + "category": 8 + }, + { + "name": "Crème fraîche", + "id": 425, + "subCategory": 10, + "category": 8 + }, + { + "name": "Haricot beurre", + "id": 424, + "subCategory": 33, + "category": 6 + }, + { + "name": "Curcuma", + "id": 423, + "subCategory": 38, + "category": 14 + }, + { + "name": "Huile d'arachide", + "id": 422, + "subCategory": 51, + "category": 14 + }, + { + "name": "Cookie", + "id": 421, + "subCategory": 9, + "category": 7 + }, + { + "name": "Sirop", + "id": 420, + "subCategory": 55, + "category": 9 + }, + { + "name": "Sardine", + "id": 419, + "subCategory": 1, + "category": 1 + }, + { + "name": "Huile de noisettes", + "id": 418, + "subCategory": 51, + "category": 14 + }, + { + "name": "Huile de lin", + "id": 417, + "subCategory": 51, + "category": 14 + }, + { + "name": "Huile de colza", + "id": 416, + "subCategory": 51, + "category": 14 + }, + { + "name": "Huile d'argan", + "id": 415, + "subCategory": 51, + "category": 14 + }, + { + "name": "Pollen", + "id": 414, + "subCategory": 42, + "category": 14 + }, + { + "name": "Pétillant de pomme", + "id": 413, + "subCategory": 53, + "category": 9 + }, + { + "name": "Nectar", + "id": 412, + "subCategory": 28, + "category": 9 + }, + { + "name": "Limonade", + "id": 411, + "subCategory": 53, + "category": 9 + }, + { + "name": "Jus de Raisin", + "id": 410, + "subCategory": 28, + "category": 9 + }, + { + "name": "Jus de Griotte", + "id": 409, + "subCategory": 28, + "category": 9 + }, + { + "name": "Jus de Fruits rouges", + "id": 408, + "subCategory": 28, + "category": 9 + }, + { + "name": "Vanille", + "id": 407, + "subCategory": 38, + "category": 14 + }, + { + "name": "Vaisselle", + "id": 406, + "subCategory": 6, + "category": 5 + }, + { + "name": "Parfum d'intérieur", + "id": 405, + "subCategory": 6, + "category": 5 + }, + { + "name": "Huile de noix", + "id": 404, + "subCategory": 51, + "category": 14 + }, + { + "name": "Autres huiles", + "id": 403, + "subCategory": 51, + "category": 14 + }, + { + "name": "Lait de jument", + "id": 402, + "subCategory": 54, + "category": 8 + }, + { + "name": "Bouquet des champs", + "id": 401, + "subCategory": 7, + "category": 5 + }, + { + "name": "Lait d'ânesse (alimentaire)", + "id": 400, + "subCategory": 54, + "category": 8 + }, + { + "name": "Lait", + "id": 399, + "subCategory": 54, + "category": 8 + }, + { + "name": "Haricot", + "id": 398, + "subCategory": 52, + "category": 6 + }, + { + "name": "Jus d'Abricot", + "id": 397, + "subCategory": 28, + "category": 9 + }, + { + "name": "Cola", + "id": 396, + "subCategory": 53, + "category": 9 + }, + { + "name": "Boisson végétale", + "id": 395, + "subCategory": 53, + "category": 9 + }, + { + "name": "Jus de Kiwi", + "id": 394, + "subCategory": 28, + "category": 9 + }, + { + "name": "Pickles", + "id": 393, + "subCategory": 38, + "category": 14 + }, + { + "name": "Pesto", + "id": 392, + "subCategory": 47, + "category": 14 + }, + { + "name": "Câpres", + "id": 391, + "subCategory": 38, + "category": 14 + }, + { + "name": "Mayonnaise", + "id": 390, + "subCategory": 47, + "category": 14 + }, + { + "name": "Distillat (aromatique)", + "id": 389, + "subCategory": 38, + "category": 14 + }, + { + "name": "Vinaigrette", + "id": 388, + "subCategory": 51, + "category": 14 + }, + { + "name": "Jus d'Orange", + "id": 387, + "subCategory": 28, + "category": 9 + }, + { + "name": "Jus de Tomate", + "id": 386, + "subCategory": 28, + "category": 9 + }, + { + "name": "Jus de Pomme", + "id": 385, + "subCategory": 28, + "category": 9 + }, + { + "name": "Jus de Poire", + "id": 384, + "subCategory": 28, + "category": 9 + }, + { + "name": "Jus de Fraise", + "id": 383, + "subCategory": 28, + "category": 9 + }, + { + "name": "Savon", + "id": 382, + "subCategory": 3, + "category": 3 + }, + { + "name": "Huile de tournesol oléique", + "id": 381, + "subCategory": 51, + "category": 14 + }, + { + "name": "Moutarde", + "id": 380, + "subCategory": 38, + "category": 14 + }, + { + "name": "Paprika", + "id": 379, + "subCategory": 38, + "category": 14 + }, + { + "name": "Crème de cuisine végétale (à l'avoine)", + "id": 378, + "subCategory": 38, + "category": 14 + }, + { + "name": "Huile d'olive", + "id": 377, + "subCategory": 51, + "category": 14 + }, + { + "name": "Petit-beurre", + "id": 376, + "subCategory": 9, + "category": 7 + }, + { + "name": "Fleur alimentaire", + "id": 375, + "subCategory": 8, + "category": 6 + }, + { + "name": "Eau florale (non alimentaire)", + "id": 374, + "subCategory": 5, + "category": 3 + }, + { + "name": "Cive", + "id": 373, + "subCategory": 33, + "category": 6 + }, + { + "name": "Ortie", + "id": 372, + "subCategory": 8, + "category": 6 + }, + { + "name": "Myrtillier", + "id": 371, + "subCategory": 8, + "category": 6 + }, + { + "name": "Romarin", + "id": 370, + "subCategory": 8, + "category": 6 + }, + { + "name": "Potiron", + "id": 369, + "subCategory": 33, + "category": 6 + }, + { + "name": "Persil tubéreux", + "id": 368, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pâtisson", + "id": 367, + "subCategory": 33, + "category": 6 + }, + { + "name": "Manioc", + "id": 366, + "subCategory": 33, + "category": 6 + }, + { + "name": "Madère", + "id": 365, + "subCategory": 33, + "category": 6 + }, + { + "name": "Sauge", + "id": 364, + "subCategory": 8, + "category": 6 + }, + { + "name": "Cébette", + "id": 363, + "subCategory": 33, + "category": 6 + }, + { + "name": "Salsifis", + "id": 362, + "subCategory": 33, + "category": 6 + }, + { + "name": "Cresson", + "id": 361, + "subCategory": 33, + "category": 6 + }, + { + "name": "Poireau", + "id": 360, + "subCategory": 33, + "category": 6 + }, + { + "name": "Piment végétarien", + "id": 359, + "subCategory": 33, + "category": 6 + }, + { + "name": "Patate douce", + "id": 358, + "subCategory": 33, + "category": 6 + }, + { + "name": "Panais", + "id": 357, + "subCategory": 33, + "category": 6 + }, + { + "name": "Oignon", + "id": 356, + "subCategory": 33, + "category": 6 + }, + { + "name": "Lentilles", + "id": 355, + "subCategory": 52, + "category": 6 + }, + { + "name": "Céleri rave", + "id": 354, + "subCategory": 33, + "category": 6 + }, + { + "name": "Huile de cameline", + "id": 353, + "subCategory": 51, + "category": 14 + }, + { + "name": "Coriandre", + "id": 352, + "subCategory": 8, + "category": 6 + }, + { + "name": "Chou palmiste", + "id": 351, + "subCategory": 33, + "category": 6 + }, + { + "name": "Panier de fruits", + "id": 350, + "subCategory": 37, + "category": 6 + }, + { + "name": "Huile de pépins de raisins", + "id": 349, + "subCategory": 51, + "category": 14 + }, + { + "name": "Huile de chanvre", + "id": 348, + "subCategory": 51, + "category": 14 + }, + { + "name": "Huile aromatisée", + "id": 347, + "subCategory": 51, + "category": 14 + }, + { + "name": "Sel au céleri", + "id": 346, + "subCategory": 38, + "category": 14 + }, + { + "name": "Confits", + "id": 345, + "subCategory": 34, + "category": 14 + }, + { + "name": "Plat cuisiné à consommer sur place", + "id": 344, + "subCategory": 4, + "category": 4 + }, + { + "name": "Angélique", + "id": 343, + "subCategory": 8, + "category": 6 + }, + { + "name": "Barquette au marrons", + "id": 342, + "subCategory": 9, + "category": 7 + }, + { + "name": "Aloe vera", + "id": 341, + "subCategory": 8, + "category": 6 + }, + { + "name": "Camomille romaine", + "id": 340, + "subCategory": 8, + "category": 6 + }, + { + "name": "Camomille matricaire", + "id": 339, + "subCategory": 8, + "category": 6 + }, + { + "name": "Bruyère", + "id": 338, + "subCategory": 8, + "category": 6 + }, + { + "name": "Pied de sapin", + "id": 337, + "subCategory": 7, + "category": 5 + }, + { + "name": "Lombricomposteur", + "id": 336, + "subCategory": 7, + "category": 5 + }, + { + "name": "Oeufs", + "id": 335, + "subCategory": 50, + "category": 8 + }, + { + "name": "Panier composé avec contenant", + "id": 334, + "subCategory": 20, + "category": 13 + }, + { + "name": "Thon", + "id": 333, + "subCategory": 1, + "category": 1 + }, + { + "name": "Sorbet", + "id": 332, + "subCategory": 19, + "category": 8 + }, + { + "name": "Sole", + "id": 331, + "subCategory": 1, + "category": 1 + }, + { + "name": "Purée de fruit ou compote", + "id": 330, + "subCategory": 34, + "category": 14 + }, + { + "name": "Pâte à tartiner", + "id": 329, + "subCategory": 34, + "category": 14 + }, + { + "name": "Truite fumée", + "id": 328, + "subCategory": 46, + "category": 1 + }, + { + "name": "Soin du linge", + "id": 327, + "subCategory": 6, + "category": 5 + }, + { + "name": "Tarte salée", + "id": 326, + "subCategory": 4, + "category": 4 + }, + { + "name": "Terreau", + "id": 325, + "subCategory": 7, + "category": 5 + }, + { + "name": "Saumon fumé", + "id": 324, + "subCategory": 46, + "category": 1 + }, + { + "name": "Pizza", + "id": 323, + "subCategory": 4, + "category": 4 + }, + { + "name": "Autres", + "id": 322, + "subCategory": 27, + "category": 12 + }, + { + "name": "Kit tarte", + "id": 321, + "subCategory": 4, + "category": 4 + }, + { + "name": "Aide à la pâtisserie", + "id": 320, + "subCategory": 4, + "category": 4 + }, + { + "name": "Serviette hygiénique", + "id": 319, + "subCategory": 3, + "category": 3 + }, + { + "name": "Atelier de fabrication", + "id": 318, + "subCategory": 22, + "category": 12 + }, + { + "name": "Atelier", + "id": 317, + "subCategory": 22, + "category": 12 + }, + { + "name": "Seiche", + "id": 316, + "subCategory": 1, + "category": 1 + }, + { + "name": "Saurel", + "id": 315, + "subCategory": 1, + "category": 1 + }, + { + "name": "Saumon de fontaine", + "id": 314, + "subCategory": 1, + "category": 1 + }, + { + "name": "Saumon", + "id": 313, + "subCategory": 1, + "category": 1 + }, + { + "name": "Artisanat et culture", + "id": 312, + "subCategory": 49, + "category": 12 + }, + { + "name": "Activité pédagogique et culturelle", + "id": 311, + "subCategory": 22, + "category": 12 + }, + { + "name": "Seiche", + "id": 310, + "subCategory": 12, + "category": 1 + }, + { + "name": "Bois et dérivés de bois", + "id": 309, + "subCategory": 6, + "category": 5 + }, + { + "name": "Truffe", + "id": 308, + "subCategory": 33, + "category": 6 + }, + { + "name": "Abricot séché", + "id": 307, + "subCategory": 40, + "category": 6 + }, + { + "name": "Tamarin des Indes", + "id": 306, + "subCategory": 39, + "category": 6 + }, + { + "name": "Autres fruits séchés", + "id": 305, + "subCategory": 40, + "category": 6 + }, + { + "name": "Nèfle", + "id": 304, + "subCategory": 39, + "category": 6 + }, + { + "name": "Engrais", + "id": 303, + "subCategory": 7, + "category": 5 + }, + { + "name": "Carambole", + "id": 302, + "subCategory": 39, + "category": 6 + }, + { + "name": "Conte", + "id": 301, + "subCategory": 21, + "category": 12 + }, + { + "name": "Pitaya", + "id": 300, + "subCategory": 39, + "category": 6 + }, + { + "name": "Jacque", + "id": 299, + "subCategory": 39, + "category": 6 + }, + { + "name": "Bougie naturelle", + "id": 298, + "subCategory": 18, + "category": 12 + }, + { + "name": "Tourte", + "id": 297, + "subCategory": 4, + "category": 4 + }, + { + "name": "Icaque", + "id": 296, + "subCategory": 39, + "category": 6 + }, + { + "name": "Grenadille", + "id": 295, + "subCategory": 39, + "category": 6 + }, + { + "name": "Grenadelle", + "id": 294, + "subCategory": 39, + "category": 6 + }, + { + "name": "Céramique", + "id": 293, + "subCategory": 18, + "category": 12 + }, + { + "name": "Cacao (fèves)", + "id": 292, + "subCategory": 48, + "category": 14 + }, + { + "name": "Goyavier", + "id": 291, + "subCategory": 39, + "category": 6 + }, + { + "name": "Litière et foin", + "id": 290, + "subCategory": 17, + "category": 11 + }, + { + "name": "Graines pour volaille", + "id": 289, + "subCategory": 17, + "category": 11 + }, + { + "name": "Cire d'abeille", + "id": 288, + "subCategory": 18, + "category": 12 + }, + { + "name": "Cassoulet", + "id": 287, + "subCategory": 4, + "category": 4 + }, + { + "name": "Aliment pour Chiens", + "id": 286, + "subCategory": 17, + "category": 11 + }, + { + "name": "Aliment pour Chats", + "id": 285, + "subCategory": 17, + "category": 11 + }, + { + "name": "Bougie", + "id": 284, + "subCategory": 18, + "category": 12 + }, + { + "name": "Ardoise", + "id": 283, + "subCategory": 18, + "category": 12 + }, + { + "name": "Turbot", + "id": 282, + "subCategory": 1, + "category": 1 + }, + { + "name": "Truite", + "id": 281, + "subCategory": 1, + "category": 1 + }, + { + "name": "Miel fleur d'été", + "id": 280, + "subCategory": 34, + "category": 14 + }, + { + "name": "Origan", + "id": 279, + "subCategory": 8, + "category": 6 + }, + { + "name": "Nashis", + "id": 278, + "subCategory": 39, + "category": 6 + }, + { + "name": "Rhubarbe", + "id": 277, + "subCategory": 39, + "category": 6 + }, + { + "name": "Nectarine", + "id": 276, + "subCategory": 39, + "category": 6 + }, + { + "name": "Litchi", + "id": 275, + "subCategory": 39, + "category": 6 + }, + { + "name": "Kiwano", + "id": 274, + "subCategory": 39, + "category": 6 + }, + { + "name": "Figue", + "id": 273, + "subCategory": 40, + "category": 6 + }, + { + "name": "Banane", + "id": 272, + "subCategory": 39, + "category": 6 + }, + { + "name": "Miel fleur de printemps", + "id": 271, + "subCategory": 34, + "category": 14 + }, + { + "name": "Myrtilles", + "id": 270, + "subCategory": 39, + "category": 6 + }, + { + "name": "Abricot", + "id": 269, + "subCategory": 39, + "category": 6 + }, + { + "name": "Framboise", + "id": 268, + "subCategory": 39, + "category": 6 + }, + { + "name": "Sablé", + "id": 267, + "subCategory": 9, + "category": 7 + }, + { + "name": "Rochers à la noix de coco", + "id": 266, + "subCategory": 9, + "category": 7 + }, + { + "name": "Miel de sapin", + "id": 265, + "subCategory": 34, + "category": 14 + }, + { + "name": "Ketchup", + "id": 264, + "subCategory": 47, + "category": 14 + }, + { + "name": "Fraise", + "id": 263, + "subCategory": 39, + "category": 6 + }, + { + "name": "Figue", + "id": 262, + "subCategory": 39, + "category": 6 + }, + { + "name": "Lotion", + "id": 261, + "subCategory": 5, + "category": 3 + }, + { + "name": "Sapin de Noël", + "id": 260, + "subCategory": 7, + "category": 5 + }, + { + "name": "Gommage", + "id": 259, + "subCategory": 5, + "category": 3 + }, + { + "name": "Chérimole", + "id": 258, + "subCategory": 39, + "category": 6 + }, + { + "name": "Cerise", + "id": 257, + "subCategory": 39, + "category": 6 + }, + { + "name": "Lingettes", + "id": 256, + "subCategory": 3, + "category": 3 + }, + { + "name": "Coupe menstruelle", + "id": 255, + "subCategory": 3, + "category": 3 + }, + { + "name": "Couches", + "id": 254, + "subCategory": 3, + "category": 3 + }, + { + "name": "Compote", + "id": 253, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mandarine", + "id": 252, + "subCategory": 39, + "category": 6 + }, + { + "name": "Arbousier", + "id": 251, + "subCategory": 39, + "category": 6 + }, + { + "name": "Kaki", + "id": 250, + "subCategory": 39, + "category": 6 + }, + { + "name": "Murex (coquillage)", + "id": 249, + "subCategory": 12, + "category": 1 + }, + { + "name": "Moule", + "id": 248, + "subCategory": 12, + "category": 1 + }, + { + "name": "Groseille", + "id": 247, + "subCategory": 39, + "category": 6 + }, + { + "name": "Longani", + "id": 246, + "subCategory": 39, + "category": 6 + }, + { + "name": "Carpe", + "id": 245, + "subCategory": 1, + "category": 1 + }, + { + "name": "Brochet", + "id": 244, + "subCategory": 1, + "category": 1 + }, + { + "name": "Nettoyant sols et surfaces", + "id": 243, + "subCategory": 6, + "category": 5 + }, + { + "name": "Papier toilette", + "id": 242, + "subCategory": 6, + "category": 5 + }, + { + "name": "Pomme de lait", + "id": 241, + "subCategory": 39, + "category": 6 + }, + { + "name": "Amandes", + "id": 240, + "subCategory": 40, + "category": 6 + }, + { + "name": "Bonite", + "id": 239, + "subCategory": 1, + "category": 1 + }, + { + "name": "Acérola", + "id": 238, + "subCategory": 39, + "category": 6 + }, + { + "name": "Feijoa", + "id": 237, + "subCategory": 39, + "category": 6 + }, + { + "name": "Combava", + "id": 236, + "subCategory": 39, + "category": 6 + }, + { + "name": "Coing", + "id": 235, + "subCategory": 39, + "category": 6 + }, + { + "name": "Attier", + "id": 234, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mangue", + "id": 233, + "subCategory": 39, + "category": 6 + }, + { + "name": "Anguille", + "id": 232, + "subCategory": 46, + "category": 1 + }, + { + "name": "Homard", + "id": 231, + "subCategory": 12, + "category": 1 + }, + { + "name": "Écrevisse", + "id": 230, + "subCategory": 12, + "category": 1 + }, + { + "name": "Fleur de sel", + "id": 229, + "subCategory": 38, + "category": 14 + }, + { + "name": "Crevettes", + "id": 228, + "subCategory": 12, + "category": 1 + }, + { + "name": "Flocons d'avoine", + "id": 227, + "subCategory": 35, + "category": 14 + }, + { + "name": "Farine", + "id": 226, + "subCategory": 35, + "category": 14 + }, + { + "name": "Produits à tartiner", + "id": 225, + "subCategory": 41, + "category": 14 + }, + { + "name": "Crabe", + "id": 224, + "subCategory": 12, + "category": 1 + }, + { + "name": "Coquilles Saint-Jacques", + "id": 223, + "subCategory": 12, + "category": 1 + }, + { + "name": "Mangoustan", + "id": 222, + "subCategory": 39, + "category": 6 + }, + { + "name": "Prune de Cythère", + "id": 221, + "subCategory": 39, + "category": 6 + }, + { + "name": "Tamarin", + "id": 220, + "subCategory": 39, + "category": 6 + }, + { + "name": "Clémentines", + "id": 219, + "subCategory": 39, + "category": 6 + }, + { + "name": "Corossol", + "id": 218, + "subCategory": 39, + "category": 6 + }, + { + "name": "Cassis", + "id": 217, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mûre", + "id": 216, + "subCategory": 39, + "category": 6 + }, + { + "name": "Raisin", + "id": 215, + "subCategory": 39, + "category": 6 + }, + { + "name": "Myrobolan", + "id": 214, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mombin", + "id": 213, + "subCategory": 39, + "category": 6 + }, + { + "name": "Prune", + "id": 212, + "subCategory": 39, + "category": 6 + }, + { + "name": "Ramboutan", + "id": 211, + "subCategory": 39, + "category": 6 + }, + { + "name": "Raisins", + "id": 210, + "subCategory": 40, + "category": 6 + }, + { + "name": "Barbadine", + "id": 658, + "subCategory": 39, + "category": 6 + }, + { + "name": "Pomme de lait", + "id": 209, + "subCategory": 39, + "category": 6 + }, + { + "name": "Durian", + "id": 657, + "subCategory": 39, + "category": 6 + }, + { + "name": "Noix de coco", + "id": 208, + "subCategory": 39, + "category": 6 + }, + { + "name": "Fruits rouges", + "id": 656, + "subCategory": 39, + "category": 6 + }, + { + "name": "Tomate arbuste (Tamarillo)", + "id": 207, + "subCategory": 39, + "category": 6 + }, + { + "name": "Datte", + "id": 655, + "subCategory": 40, + "category": 6 + }, + { + "name": "Pamplemousse", + "id": 206, + "subCategory": 39, + "category": 6 + }, + { + "name": "Châtaigne", + "id": 654, + "subCategory": 39, + "category": 6 + }, + { + "name": "Ananas", + "id": 205, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mirabelle", + "id": 653, + "subCategory": 39, + "category": 6 + }, + { + "name": "Pomme", + "id": 204, + "subCategory": 39, + "category": 6 + }, + { + "name": "Pomme de cajou", + "id": 652, + "subCategory": 39, + "category": 6 + }, + { + "name": "Pruneau", + "id": 203, + "subCategory": 40, + "category": 6 + }, + { + "name": "Noix de cajou", + "id": 651, + "subCategory": 40, + "category": 6 + }, + { + "name": "Pomme liane", + "id": 202, + "subCategory": 39, + "category": 6 + }, + { + "name": "Noix", + "id": 650, + "subCategory": 40, + "category": 6 + }, + { + "name": "Physalis", + "id": 201, + "subCategory": 39, + "category": 6 + }, + { + "name": "Achards", + "id": 649, + "subCategory": 30, + "category": 6 + }, + { + "name": "Cachiman", + "id": 200, + "subCategory": 39, + "category": 6 + }, + { + "name": "Fruit de la passion", + "id": 648, + "subCategory": 39, + "category": 6 + }, + { + "name": "Poire", + "id": 199, + "subCategory": 39, + "category": 6 + }, + { + "name": "Orange", + "id": 647, + "subCategory": 39, + "category": 6 + }, + { + "name": "Cerise de Cayenne", + "id": 198, + "subCategory": 39, + "category": 6 + }, + { + "name": "Melon", + "id": 646, + "subCategory": 39, + "category": 6 + }, + { + "name": "Sapotille", + "id": 197, + "subCategory": 39, + "category": 6 + }, + { + "name": "Pastèque", + "id": 645, + "subCategory": 39, + "category": 6 + }, + { + "name": "Terrine", + "id": 196, + "subCategory": 36, + "category": 10 + }, + { + "name": "Abricot des Antilles", + "id": 644, + "subCategory": 39, + "category": 6 + }, + { + "name": "Rillettes et Pâtés", + "id": 195, + "subCategory": 45, + "category": 10 + }, + { + "name": "Pêche", + "id": 643, + "subCategory": 39, + "category": 6 + }, + { + "name": "Rillettes de canard", + "id": 194, + "subCategory": 36, + "category": 10 + }, + { + "name": "Pistache", + "id": 642, + "subCategory": 40, + "category": 6 + }, + { + "name": "Rillettes de truite", + "id": 193, + "subCategory": 44, + "category": 1 + }, + { + "name": "Papaye", + "id": 641, + "subCategory": 39, + "category": 6 + }, + { + "name": "Rillettes de saumon", + "id": 192, + "subCategory": 44, + "category": 1 + }, + { + "name": "Quenette", + "id": 640, + "subCategory": 39, + "category": 6 + }, + { + "name": "Rillettes", + "id": 191, + "subCategory": 36, + "category": 10 + }, + { + "name": "Mélange", + "id": 639, + "subCategory": 40, + "category": 6 + }, + { + "name": "Rillette", + "id": 190, + "subCategory": 36, + "category": 10 + }, + { + "name": "Prêle", + "id": 638, + "subCategory": 8, + "category": 6 + }, + { + "name": "Assortiment de viandes", + "id": 189, + "subCategory": 14, + "category": 10 + }, + { + "name": "Rougail", + "id": 637, + "subCategory": 30, + "category": 6 + }, + { + "name": "Infusion", + "id": 188, + "subCategory": 43, + "category": 14 + }, + { + "name": "Eau florale (alimentaire)", + "id": 636, + "subCategory": 8, + "category": 6 + }, + { + "name": "Miel de Tilleul", + "id": 187, + "subCategory": 34, + "category": 14 + }, + { + "name": "Ciboulette", + "id": 635, + "subCategory": 8, + "category": 6 + }, + { + "name": "Guarana", + "id": 186, + "subCategory": 42, + "category": 14 + }, + { + "name": "Choux", + "id": 634, + "subCategory": 33, + "category": 6 + }, + { + "name": "Miel de Forêt", + "id": 185, + "subCategory": 34, + "category": 14 + }, + { + "name": "Oseille", + "id": 633, + "subCategory": 8, + "category": 6 + }, + { + "name": "Oeufs de poisson", + "id": 184, + "subCategory": 1, + "category": 1 + }, + { + "name": "Millepertuis", + "id": 632, + "subCategory": 8, + "category": 6 + }, + { + "name": "Sapote", + "id": 183, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mélisse", + "id": 631, + "subCategory": 8, + "category": 6 + }, + { + "name": "Citron vert", + "id": 182, + "subCategory": 39, + "category": 6 + }, + { + "name": "Mélange", + "id": 630, + "subCategory": 8, + "category": 6 + }, + { + "name": "Citrons", + "id": 181, + "subCategory": 39, + "category": 6 + }, + { + "name": "Marjolaine", + "id": 629, + "subCategory": 8, + "category": 6 + }, + { + "name": "Kumquat", + "id": 180, + "subCategory": 39, + "category": 6 + }, + { + "name": "Coriandre", + "id": 628, + "subCategory": 8, + "category": 6 + }, + { + "name": "Kiwi", + "id": 179, + "subCategory": 39, + "category": 6 + }, + { + "name": "Pomme de terre", + "id": 627, + "subCategory": 33, + "category": 6 + }, + { + "name": "Brugnon", + "id": 178, + "subCategory": 39, + "category": 6 + }, + { + "name": "Achillée", + "id": 626, + "subCategory": 8, + "category": 6 + }, + { + "name": "Bigarade", + "id": 177, + "subCategory": 39, + "category": 6 + }, + { + "name": "Consoude", + "id": 625, + "subCategory": 8, + "category": 6 + }, + { + "name": "Produits vétérinaires", + "id": 176, + "subCategory": 17, + "category": 11 + }, + { + "name": "Cassis feuille", + "id": 624, + "subCategory": 8, + "category": 6 + }, + { + "name": "Miel de chataîgnier", + "id": 175, + "subCategory": 34, + "category": 14 + }, + { + "name": "Baies de Genévrier", + "id": 623, + "subCategory": 8, + "category": 6 + }, + { + "name": "Chips", + "id": 174, + "subCategory": 41, + "category": 14 + }, + { + "name": "Galette végétale", + "id": 622, + "subCategory": 33, + "category": 6 + }, + { + "name": "Poivre", + "id": 173, + "subCategory": 38, + "category": 14 + }, + { + "name": "Ronce", + "id": 621, + "subCategory": 8, + "category": 6 + }, + { + "name": "Piment", + "id": 172, + "subCategory": 38, + "category": 14 + }, + { + "name": "Céleri vivace (livèche)", + "id": 620, + "subCategory": 8, + "category": 6 + }, + { + "name": "Noisette", + "id": 171, + "subCategory": 40, + "category": 6 + }, + { + "name": "Cardon", + "id": 619, + "subCategory": 33, + "category": 6 + }, + { + "name": "Poulpe", + "id": 170, + "subCategory": 12, + "category": 1 + }, + { + "name": "Navets", + "id": 618, + "subCategory": 33, + "category": 6 + }, + { + "name": "Nèfle du Japon", + "id": 169, + "subCategory": 39, + "category": 6 + }, + { + "name": "Lavande", + "id": 617, + "subCategory": 8, + "category": 6 + }, + { + "name": "Epeautre", + "id": 168, + "subCategory": 35, + "category": 14 + }, + { + "name": "Curry nain (helichrysum)", + "id": 616, + "subCategory": 8, + "category": 6 + }, + { + "name": "Perche", + "id": 167, + "subCategory": 1, + "category": 1 + }, + { + "name": "Framboisier", + "id": 615, + "subCategory": 8, + "category": 6 + }, + { + "name": "Goyave", + "id": 166, + "subCategory": 39, + "category": 6 + }, + { + "name": "Igname", + "id": 614, + "subCategory": 33, + "category": 6 + }, + { + "name": "Glace individuelle à l'unité < 200ml", + "id": 165, + "subCategory": 19, + "category": 8 + }, + { + "name": "Butternut", + "id": 613, + "subCategory": 33, + "category": 6 + }, + { + "name": "Graines moulues", + "id": 164, + "subCategory": 35, + "category": 14 + }, + { + "name": "Houblon", + "id": 612, + "subCategory": 8, + "category": 6 + }, + { + "name": "Graines germées", + "id": 163, + "subCategory": 35, + "category": 14 + }, + { + "name": "Huile essentielle alimentaire", + "id": 611, + "subCategory": 8, + "category": 6 + }, + { + "name": "Graines à germer", + "id": 162, + "subCategory": 35, + "category": 14 + }, + { + "name": "Bonbon", + "id": 610, + "subCategory": 48, + "category": 14 + }, + { + "name": "Aigre-doux", + "id": 161, + "subCategory": 38, + "category": 14 + }, + { + "name": "Cerfeuil", + "id": 609, + "subCategory": 8, + "category": 6 + }, + { + "name": "Miel de Montagne", + "id": 160, + "subCategory": 34, + "category": 14 + }, + { + "name": "Coquelicot", + "id": 608, + "subCategory": 8, + "category": 6 + }, + { + "name": "Soupe déshydratée", + "id": 159, + "subCategory": 30, + "category": 6 + }, + { + "name": "Pois cassés", + "id": 607, + "subCategory": 52, + "category": 6 + }, + { + "name": "Panier de légumes", + "id": 158, + "subCategory": 37, + "category": 6 + }, + { + "name": "Lamier blanc", + "id": 606, + "subCategory": 8, + "category": 6 + }, + { + "name": "Panier de fruits et légumes", + "id": 157, + "subCategory": 37, + "category": 6 + }, + { + "name": "Fenugrec", + "id": 605, + "subCategory": 8, + "category": 6 + }, + { + "name": "Pâté de canard", + "id": 156, + "subCategory": 36, + "category": 10 + }, + { + "name": "Fenouil", + "id": 604, + "subCategory": 8, + "category": 6 + }, + { + "name": "Pâté", + "id": 155, + "subCategory": 36, + "category": 10 + }, + { + "name": "Estragon", + "id": 603, + "subCategory": 8, + "category": 6 + }, + { + "name": "Sels de bain", + "id": 154, + "subCategory": 5, + "category": 3 + }, + { + "name": "Citronnelle", + "id": 602, + "subCategory": 8, + "category": 6 + }, + { + "name": "Baume de beauté précieux visage", + "id": 153, + "subCategory": 5, + "category": 3 + }, + { + "name": "Fève", + "id": 601, + "subCategory": 33, + "category": 6 + }, + { + "name": "Baume", + "id": 152, + "subCategory": 5, + "category": 3 + }, + { + "name": "Fève", + "id": 600, + "subCategory": 52, + "category": 6 + }, + { + "name": "Argile", + "id": 151, + "subCategory": 5, + "category": 3 + }, + { + "name": "Fenouil", + "id": 599, + "subCategory": 33, + "category": 6 + }, + { + "name": "Tiramisu", + "id": 150, + "subCategory": 9, + "category": 7 + }, + { + "name": "Brocolis", + "id": 598, + "subCategory": 33, + "category": 6 + }, + { + "name": "Viennoiserie", + "id": 149, + "subCategory": 13, + "category": 7 + }, + { + "name": "Pois chiches", + "id": 597, + "subCategory": 52, + "category": 6 + }, + { + "name": "Tous pains", + "id": 148, + "subCategory": 32, + "category": 7 + }, + { + "name": "Autres plantes sauvages", + "id": 596, + "subCategory": 8, + "category": 6 + }, + { + "name": "Crêpe", + "id": 147, + "subCategory": 31, + "category": 7 + }, + { + "name": "Aneth", + "id": 595, + "subCategory": 8, + "category": 6 + }, + { + "name": "Boulghour", + "id": 146, + "subCategory": 35, + "category": 14 + }, + { + "name": "Chocolat", + "id": 594, + "subCategory": 48, + "category": 14 + }, + { + "name": "Germe de blé", + "id": 145, + "subCategory": 35, + "category": 14 + }, + { + "name": "Confiserie", + "id": 593, + "subCategory": 48, + "category": 14 + }, + { + "name": "Pâté en croute", + "id": 144, + "subCategory": 4, + "category": 4 + }, + { + "name": "Sureau", + "id": 592, + "subCategory": 8, + "category": 6 + }, + { + "name": "Riz", + "id": 143, + "subCategory": 35, + "category": 14 + }, + { + "name": "Gombo", + "id": 591, + "subCategory": 33, + "category": 6 + }, + { + "name": "Madeleine", + "id": 142, + "subCategory": 9, + "category": 7 + }, + { + "name": "Endives", + "id": 590, + "subCategory": 33, + "category": 6 + }, + { + "name": "Gelée royale", + "id": 141, + "subCategory": 34, + "category": 14 + }, + { + "name": "Échalote", + "id": 589, + "subCategory": 33, + "category": 6 + }, + { + "name": "Gelée", + "id": 140, + "subCategory": 34, + "category": 14 + }, + { + "name": "Champignon", + "id": 588, + "subCategory": 33, + "category": 6 + }, + { + "name": "Dessert", + "id": 139, + "subCategory": 4, + "category": 4 + }, + { + "name": "Confiserie à base de chocolat", + "id": 587, + "subCategory": 48, + "category": 14 + }, + { + "name": "Confiture", + "id": 138, + "subCategory": 34, + "category": 14 + }, + { + "name": "Tablette de chocolat", + "id": 586, + "subCategory": 48, + "category": 14 + }, + { + "name": "Miel", + "id": 137, + "subCategory": 34, + "category": 14 + }, + { + "name": "Crosne", + "id": 585, + "subCategory": 33, + "category": 6 + }, + { + "name": "Yaourt", + "id": 136, + "subCategory": 29, + "category": 8 + }, + { + "name": "Courgettes", + "id": 584, + "subCategory": 33, + "category": 6 + }, + { + "name": "Brèdes", + "id": 135, + "subCategory": 33, + "category": 6 + }, + { + "name": "Giraumon", + "id": 583, + "subCategory": 33, + "category": 6 + }, + { + "name": "Lapin", + "id": 134, + "subCategory": 14, + "category": 10 + }, + { + "name": "Fruit à pain", + "id": 582, + "subCategory": 33, + "category": 6 + }, + { + "name": "Palourde", + "id": 133, + "subCategory": 12, + "category": 1 + }, + { + "name": "Banane Poyo", + "id": 581, + "subCategory": 33, + "category": 6 + }, + { + "name": "Soin du visage", + "id": 132, + "subCategory": 5, + "category": 3 + }, + { + "name": "Banane plantain", + "id": 580, + "subCategory": 33, + "category": 6 + }, + { + "name": "Oursin", + "id": 131, + "subCategory": 12, + "category": 1 + }, + { + "name": "Nougat", + "id": 579, + "subCategory": 48, + "category": 14 + }, + { + "name": "Marbré", + "id": 130, + "subCategory": 1, + "category": 1 + }, + { + "name": "Vigne rouge", + "id": 578, + "subCategory": 8, + "category": 6 + }, + { + "name": "Pain demi-complet", + "id": 129, + "subCategory": 32, + "category": 7 + }, + { + "name": "Verveine citronnelle", + "id": 577, + "subCategory": 8, + "category": 6 + }, + { + "name": "Pain de campagne", + "id": 128, + "subCategory": 32, + "category": 7 + }, + { + "name": "Tilleul", + "id": 576, + "subCategory": 8, + "category": 6 + }, + { + "name": "Pain complet", + "id": 127, + "subCategory": 32, + "category": 7 + }, + { + "name": "Pois gourmands", + "id": 575, + "subCategory": 33, + "category": 6 + }, + { + "name": "Quatre-quarts", + "id": 126, + "subCategory": 9, + "category": 7 + }, + { + "name": "Chocolat en poudre", + "id": 574, + "subCategory": 48, + "category": 14 + }, + { + "name": "Pain aux raisins", + "id": 125, + "subCategory": 32, + "category": 7 + }, + { + "name": "Petits pois", + "id": 573, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pain aux graines de courge", + "id": 124, + "subCategory": 32, + "category": 7 + }, + { + "name": "Poivron", + "id": 572, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pain au noix", + "id": 123, + "subCategory": 32, + "category": 7 + }, + { + "name": "Carottes", + "id": 571, + "subCategory": 33, + "category": 6 + }, + { + "name": "Marbré", + "id": 122, + "subCategory": 9, + "category": 7 + }, + { + "name": "Betterave", + "id": 570, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pain sésame", + "id": 121, + "subCategory": 32, + "category": 7 + }, + { + "name": "Epinards", + "id": 569, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pain nature", + "id": 120, + "subCategory": 32, + "category": 7 + }, + { + "name": "Cornichons", + "id": 568, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pain multigraines", + "id": 119, + "subCategory": 32, + "category": 7 + }, + { + "name": "Aubergine", + "id": 567, + "subCategory": 33, + "category": 6 + }, + { + "name": "Pain lin pavot", + "id": 118, + "subCategory": 32, + "category": 7 + }, + { + "name": "Asperge", + "id": 566, + "subCategory": 33, + "category": 6 + }, + { + "name": "Muffin", + "id": 117, + "subCategory": 9, + "category": 7 + }, + { + "name": "Artichaut", + "id": 565, + "subCategory": 33, + "category": 6 + }, + { + "name": "Macarons", + "id": 116, + "subCategory": 9, + "category": 7 + }, + { + "name": "Concombres", + "id": 564, + "subCategory": 33, + "category": 6 + }, + { + "name": "Gaufre", + "id": 115, + "subCategory": 9, + "category": 7 + }, + { + "name": "Blette", + "id": 563, + "subCategory": 33, + "category": 6 + }, + { + "name": "Galette de blé noir", + "id": 114, + "subCategory": 31, + "category": 7 + }, + { + "name": "Ail", + "id": 562, + "subCategory": 33, + "category": 6 + }, + { + "name": "Dessert végétal", + "id": 113, + "subCategory": 9, + "category": 7 + }, + { + "name": "Sarriette", + "id": 561, + "subCategory": 8, + "category": 6 + }, + { + "name": "Compote", + "id": 112, + "subCategory": 9, + "category": 7 + }, + { + "name": "Topinambour", + "id": 560, + "subCategory": 33, + "category": 6 + }, + { + "name": "Cannelé", + "id": 111, + "subCategory": 9, + "category": 7 + }, + { + "name": "Tomate", + "id": 559, + "subCategory": 33, + "category": 6 + }, + { + "name": "Brownie", + "id": 110, + "subCategory": 9, + "category": 7 + }, + { + "name": "Potimarron", + "id": 558, + "subCategory": 33, + "category": 6 + }, + { + "name": "Financier", + "id": 109, + "subCategory": 9, + "category": 7 + }, + { + "name": "Reine des prés", + "id": 557, + "subCategory": 8, + "category": 6 + }, + { + "name": "Biscuit de Savoie", + "id": 108, + "subCategory": 9, + "category": 7 + }, + { + "name": "Pensée sauvage", + "id": 556, + "subCategory": 8, + "category": 6 + }, + { + "name": "Fruits au sirop", + "id": 107, + "subCategory": 30, + "category": 6 + }, + { + "name": "Courges", + "id": 555, + "subCategory": 33, + "category": 6 + }, + { + "name": "Dessert glacé", + "id": 106, + "subCategory": 19, + "category": 8 + }, + { + "name": "Céleri branche", + "id": 554, + "subCategory": 33, + "category": 6 + }, + { + "name": "Lait fermenté", + "id": 105, + "subCategory": 29, + "category": 8 + }, + { + "name": "Persil", + "id": 553, + "subCategory": 8, + "category": 6 + }, + { + "name": "Fromage blanc", + "id": 104, + "subCategory": 29, + "category": 8 + }, + { + "name": "Radis", + "id": 552, + "subCategory": 33, + "category": 6 + }, + { + "name": "Faisselle", + "id": 103, + "subCategory": 29, + "category": 8 + }, + { + "name": "Olive", + "id": 551, + "subCategory": 33, + "category": 6 + }, + { + "name": "Essaim", + "id": 102, + "subCategory": 17, + "category": 11 + }, + { + "name": "Haricot vert", + "id": 550, + "subCategory": 33, + "category": 6 + }, + { + "name": "Jus de fruit à consommation immédiate TVA 10%", + "id": 101, + "subCategory": 28, + "category": 9 + }, + { + "name": "Menthe", + "id": 549, + "subCategory": 8, + "category": 6 + }, + { + "name": "Eau de vie", + "id": 100, + "subCategory": 11, + "category": 9 + }, + { + "name": "Maïs", + "id": 548, + "subCategory": 33, + "category": 6 + }, + { + "name": "Huître", + "id": 99, + "subCategory": 12, + "category": 1 + }, + { + "name": "Aspérule Odorante", + "id": 547, + "subCategory": 8, + "category": 6 + }, + { + "name": "Tarte sucrée", + "id": 98, + "subCategory": 9, + "category": 7 + }, + { + "name": "Ail des ours", + "id": 546, + "subCategory": 8, + "category": 6 + }, + { + "name": "Tartelette aux fruits", + "id": 97, + "subCategory": 9, + "category": 7 + }, + { + "name": "Hysope", + "id": 545, + "subCategory": 8, + "category": 6 + }, + { + "name": "Vannerie", + "id": 96, + "subCategory": 18, + "category": 12 + }, + { + "name": "Souci", + "id": 544, + "subCategory": 8, + "category": 6 + }, + { + "name": "Visite à la ferme", + "id": 95, + "subCategory": 22, + "category": 12 + }, + { + "name": "Eglantier", + "id": 543, + "subCategory": 8, + "category": 6 + }, + { + "name": "Vêtement pour enfant", + "id": 94, + "subCategory": 27, + "category": 12 + }, + { + "name": "Frêne", + "id": 542, + "subCategory": 8, + "category": 6 + }, + { + "name": "Tissu et textile", + "id": 93, + "subCategory": 18, + "category": 12 + }, + { + "name": "Thym", + "id": 541, + "subCategory": 8, + "category": 6 + }, + { + "name": "Tee-shirt", + "id": 92, + "subCategory": 27, + "category": 12 + }, + { + "name": "Christophine (Chouchou, Chayotte)", + "id": 540, + "subCategory": 33, + "category": 6 + }, + { + "name": "Jouet en tissu", + "id": 91, + "subCategory": 25, + "category": 12 + }, + { + "name": "Rutabaga", + "id": 539, + "subCategory": 33, + "category": 6 + }, + { + "name": "Mouton", + "id": 90, + "subCategory": 14, + "category": 10 + }, + { + "name": "chocolat blanc", + "id": 538, + "subCategory": 48, + "category": 14 + }, + { + "name": "Crème de cassis", + "id": 89, + "subCategory": 11, + "category": 9 + }, + { + "name": "Sel", + "id": 537, + "subCategory": 38, + "category": 14 + }, + { + "name": "Cidre", + "id": 88, + "subCategory": 11, + "category": 9 + }, + { + "name": "Semoule de blé", + "id": 536, + "subCategory": 35, + "category": 14 + }, + { + "name": "Telline", + "id": 87, + "subCategory": 12, + "category": 1 + }, + { + "name": "Aromates", + "id": 535, + "subCategory": 38, + "category": 14 + }, + { + "name": "Champagne", + "id": 86, + "subCategory": 11, + "category": 9 + }, + { + "name": "Sauce tomate", + "id": 534, + "subCategory": 47, + "category": 14 + }, + { + "name": "Bière triple", + "id": 85, + "subCategory": 11, + "category": 9 + }, + { + "name": "Safran", + "id": 533, + "subCategory": 38, + "category": 14 + }, + { + "name": "Pageot", + "id": 84, + "subCategory": 1, + "category": 1 + }, + { + "name": "Sauce pour salade", + "id": 532, + "subCategory": 47, + "category": 14 + }, + { + "name": "Fromage", + "id": 83, + "subCategory": 26, + "category": 8 + }, + { + "name": "Sauce d'accompagnement", + "id": 531, + "subCategory": 47, + "category": 14 + }, + { + "name": "Muge", + "id": 82, + "subCategory": 1, + "category": 1 + }, + { + "name": "Rouille", + "id": 530, + "subCategory": 47, + "category": 14 + }, + { + "name": "Jouet en bois", + "id": 81, + "subCategory": 25, + "category": 12 + }, + { + "name": "Biscuit apéritif", + "id": 529, + "subCategory": 41, + "category": 14 + }, + { + "name": "Information", + "id": 80, + "subCategory": 24, + "category": 12 + }, + { + "name": "Poudre de noix", + "id": 528, + "subCategory": 38, + "category": 14 + }, + { + "name": "Chevreau", + "id": 79, + "subCategory": 14, + "category": 10 + }, + { + "name": "Poudre de noisettes", + "id": 527, + "subCategory": 38, + "category": 14 + }, + { + "name": "Cheval", + "id": 78, + "subCategory": 14, + "category": 10 + }, + { + "name": "Propolis", + "id": 526, + "subCategory": 42, + "category": 14 + }, + { + "name": "Merlan", + "id": 77, + "subCategory": 1, + "category": 1 + }, + { + "name": "Tapenade", + "id": 525, + "subCategory": 38, + "category": 14 + }, + { + "name": "Lamproie", + "id": 76, + "subCategory": 1, + "category": 1 + }, + { + "name": "Spiruline", + "id": 524, + "subCategory": 42, + "category": 14 + }, + { + "name": "Daurade", + "id": 75, + "subCategory": 1, + "category": 1 + }, + { + "name": "Confit d'échalote", + "id": 523, + "subCategory": 38, + "category": 14 + }, + { + "name": "Cabillaud", + "id": 74, + "subCategory": 1, + "category": 1 + }, + { + "name": "abats", + "id": 522, + "subCategory": 14, + "category": 10 + }, + { + "name": "Bar", + "id": 73, + "subCategory": 1, + "category": 1 + }, + { + "name": "Confit d'oignons", + "id": 521, + "subCategory": 58, + "category": 10 + }, + { + "name": "Cognac", + "id": 72, + "subCategory": 11, + "category": 9 + }, + { + "name": "Veau", + "id": 520, + "subCategory": 62, + "category": 10 + }, + { + "name": "Boissons sans alcool", + "id": 71, + "subCategory": 23, + "category": 9 + }, + { + "name": "Saucisson", + "id": 519, + "subCategory": 60, + "category": 10 + }, + { + "name": "Cours de cuisine", + "id": 70, + "subCategory": 22, + "category": 12 + }, + { + "name": "Saucisse", + "id": 518, + "subCategory": 60, + "category": 10 + }, + { + "name": "Cours de jardinage", + "id": 69, + "subCategory": 22, + "category": 12 + }, + { + "name": "Rosette", + "id": 517, + "subCategory": 60, + "category": 10 + }, + { + "name": "Meubles et décoration", + "id": 68, + "subCategory": 18, + "category": 12 + }, + { + "name": "Pancetta", + "id": 516, + "subCategory": 60, + "category": 10 + }, + { + "name": "Livres", + "id": 67, + "subCategory": 21, + "category": 12 + }, + { + "name": "Jambonneau", + "id": 515, + "subCategory": 60, + "category": 10 + }, + { + "name": "Plat cuisiné", + "id": 66, + "subCategory": 4, + "category": 4 + }, + { + "name": "Jambon cru", + "id": 514, + "subCategory": 60, + "category": 10 + }, + { + "name": "CD", + "id": 65, + "subCategory": 21, + "category": 12 + }, + { + "name": "Jambon", + "id": 513, + "subCategory": 60, + "category": 10 + }, + { + "name": "Palmier", + "id": 64, + "subCategory": 9, + "category": 7 + }, + { + "name": "Coppa", + "id": 512, + "subCategory": 60, + "category": 10 + }, + { + "name": "Bouquet ou composition florale", + "id": 63, + "subCategory": 7, + "category": 5 + }, + { + "name": "Boudin", + "id": 511, + "subCategory": 60, + "category": 10 + }, + { + "name": "Plant", + "id": 62, + "subCategory": 7, + "category": 5 + }, + { + "name": "Andouille", + "id": 510, + "subCategory": 60, + "category": 10 + }, + { + "name": "Panier de produits du terroir", + "id": 61, + "subCategory": 20, + "category": 13 + }, + { + "name": "Pâté", + "id": 509, + "subCategory": 58, + "category": 10 + }, + { + "name": "Panier de condiments", + "id": 60, + "subCategory": 20, + "category": 13 + }, + { + "name": "Mousse de foie gras", + "id": 508, + "subCategory": 58, + "category": 10 + }, + { + "name": "Condiments", + "id": 59, + "subCategory": 20, + "category": 13 + }, + { + "name": "Poulet", + "id": 507, + "subCategory": 56, + "category": 10 + }, + { + "name": "Pâtisserie au chocolat", + "id": 58, + "subCategory": 9, + "category": 7 + }, + { + "name": "Poule", + "id": 506, + "subCategory": 56, + "category": 10 + }, + { + "name": "Bière ambrée", + "id": 57, + "subCategory": 11, + "category": 9 + }, + { + "name": "Poularde", + "id": 505, + "subCategory": 56, + "category": 10 + }, + { + "name": "Apéritif", + "id": 56, + "subCategory": 11, + "category": 9 + }, + { + "name": "Porc", + "id": 504, + "subCategory": 61, + "category": 10 + }, + { + "name": "Ustensile de cuisine", + "id": 55, + "subCategory": 6, + "category": 5 + }, + { + "name": "Cerfs & Biches", + "id": 503, + "subCategory": 56, + "category": 10 + }, + { + "name": "Glace", + "id": 54, + "subCategory": 19, + "category": 8 + }, + { + "name": "Poitrine fumée", + "id": 502, + "subCategory": 60, + "category": 10 + }, + { + "name": "Pain d'épices", + "id": 53, + "subCategory": 9, + "category": 7 + }, + { + "name": "Magret", + "id": 501, + "subCategory": 58, + "category": 10 + }, + { + "name": "Bière blonde", + "id": 52, + "subCategory": 11, + "category": 9 + }, + { + "name": "Agneau", + "id": 500, + "subCategory": 59, + "category": 10 + }, + { + "name": "Bière brune", + "id": 51, + "subCategory": 11, + "category": 9 + }, + { + "name": "Dinde", + "id": 499, + "subCategory": 56, + "category": 10 + }, + { + "name": "Champagne rosé", + "id": 50, + "subCategory": 11, + "category": 9 + }, + { + "name": "Pintade", + "id": 498, + "subCategory": 56, + "category": 10 + }, + { + "name": "Pommeau", + "id": 49, + "subCategory": 11, + "category": 9 + }, + { + "name": "Perdrix", + "id": 497, + "subCategory": 56, + "category": 10 + }, + { + "name": "Loup", + "id": 48, + "subCategory": 1, + "category": 1 + }, + { + "name": "Foie gras entier", + "id": 496, + "subCategory": 58, + "category": 10 + }, + { + "name": "Poiré", + "id": 47, + "subCategory": 11, + "category": 9 + }, + { + "name": "Oie", + "id": 495, + "subCategory": 56, + "category": 10 + }, + { + "name": "Lieu Noir", + "id": 46, + "subCategory": 1, + "category": 1 + }, + { + "name": "Foie gras", + "id": 494, + "subCategory": 58, + "category": 10 + }, + { + "name": "Hareng", + "id": 45, + "subCategory": 1, + "category": 1 + }, + { + "name": "Chapon", + "id": 493, + "subCategory": 56, + "category": 10 + }, + { + "name": "Galet", + "id": 44, + "subCategory": 1, + "category": 1 + }, + { + "name": "Géline", + "id": 492, + "subCategory": 56, + "category": 10 + }, + { + "name": "Sar", + "id": 43, + "subCategory": 1, + "category": 1 + }, + { + "name": "Faisan", + "id": 491, + "subCategory": 56, + "category": 10 + }, + { + "name": "Rouget", + "id": 42, + "subCategory": 1, + "category": 1 + }, + { + "name": "Coquelet", + "id": 490, + "subCategory": 56, + "category": 10 + }, + { + "name": "Colin", + "id": 41, + "subCategory": 1, + "category": 1 + }, + { + "name": "Canard", + "id": 489, + "subCategory": 56, + "category": 10 + }, + { + "name": "Pétillant de raisin", + "id": 40, + "subCategory": 11, + "category": 9 + }, + { + "name": "Confit d'oie", + "id": 488, + "subCategory": 58, + "category": 10 + }, + { + "name": "Hydromel", + "id": 39, + "subCategory": 11, + "category": 9 + }, + { + "name": "Confit de canard", + "id": 487, + "subCategory": 58, + "category": 10 + }, + { + "name": "Morue", + "id": 38, + "subCategory": 1, + "category": 1 + }, + { + "name": "Confit", + "id": 486, + "subCategory": 58, + "category": 10 + }, + { + "name": "Digestif ou liqueur", + "id": 37, + "subCategory": 11, + "category": 9 + }, + { + "name": "Caille", + "id": 485, + "subCategory": 56, + "category": 10 + }, + { + "name": "Maquereau", + "id": 36, + "subCategory": 1, + "category": 1 + }, + { + "name": "Boeuf", + "id": 484, + "subCategory": 57, + "category": 10 + }, + { + "name": "Lotte", + "id": 35, + "subCategory": 1, + "category": 1 + }, + { + "name": "Autruche", + "id": 483, + "subCategory": 56, + "category": 10 + }, + { + "name": "Vaisselle en bois", + "id": 34, + "subCategory": 18, + "category": 12 + }, + { + "name": "Pigeon", + "id": 482, + "subCategory": 56, + "category": 10 + }, + { + "name": "Graines pour oiseaux", + "id": 33, + "subCategory": 17, + "category": 11 + }, + { + "name": "Miel de Lavande", + "id": 481, + "subCategory": 34, + "category": 14 + }, + { + "name": "Limande", + "id": 32, + "subCategory": 1, + "category": 1 + }, + { + "name": "Miel d'acacia", + "id": 480, + "subCategory": 34, + "category": 14 + }, + { + "name": "Féra (corégone)", + "id": 31, + "subCategory": 1, + "category": 1 + }, + { + "name": "Café", + "id": 479, + "subCategory": 43, + "category": 14 + }, + { + "name": "Eglefin", + "id": 30, + "subCategory": 1, + "category": 1 + }, + { + "name": "Baies roses", + "id": 478, + "subCategory": 38, + "category": 14 + }, + { + "name": "Escargots", + "id": 29, + "subCategory": 16, + "category": 10 + }, + { + "name": "Algues", + "id": 477, + "subCategory": 42, + "category": 14 + }, + { + "name": "Germoir", + "id": 28, + "subCategory": 7, + "category": 5 + }, + { + "name": "Laurier", + "id": 476, + "subCategory": 8, + "category": 6 + }, + { + "name": "Panier de poissons", + "id": 27, + "subCategory": 1, + "category": 1 + }, + { + "name": "Pâtes", + "id": 475, + "subCategory": 35, + "category": 14 + }, + { + "name": "Caviar", + "id": 26, + "subCategory": 1, + "category": 1 + }, + { + "name": "Muesli", + "id": 474, + "subCategory": 35, + "category": 14 + }, + { + "name": "Seitan", + "id": 25, + "subCategory": 4, + "category": 4 + }, + { + "name": "Chips de légume", + "id": 473, + "subCategory": 41, + "category": 14 + }, + { + "name": "Poissons et crustacés", + "id": 24, + "subCategory": 15, + "category": 1 + }, + { + "name": "Macération solaire (alimentaire)", + "id": 472, + "subCategory": 51, + "category": 14 + }, + { + "name": "Bison", + "id": 23, + "subCategory": 14, + "category": 10 + }, + { + "name": "Lait de coco", + "id": 471, + "subCategory": 38, + "category": 14 + }, + { + "name": "Brioche", + "id": 22, + "subCategory": 13, + "category": 7 + }, + { + "name": "Coulis de tomates", + "id": 470, + "subCategory": 47, + "category": 14 + }, + { + "name": "Bulot", + "id": 21, + "subCategory": 12, + "category": 1 + }, + { + "name": "Coulis de fruits rouges", + "id": 469, + "subCategory": 38, + "category": 14 + }, + { + "name": "Aubépine", + "id": 20, + "subCategory": 8, + "category": 6 + }, + { + "name": "Coulis de fruit", + "id": 468, + "subCategory": 38, + "category": 14 + }, + { + "name": "Bouleau", + "id": 19, + "subCategory": 8, + "category": 6 + }, + { + "name": "Vinaigre balsamique", + "id": 467, + "subCategory": 38, + "category": 14 + }, + { + "name": "Calvados", + "id": 18, + "subCategory": 11, + "category": 9 + }, + { + "name": "Vinaigre alcoolisé", + "id": 466, + "subCategory": 38, + "category": 14 + }, + { + "name": "Bière", + "id": 17, + "subCategory": 11, + "category": 9 + }, + { + "name": "Vinaigre", + "id": 465, + "subCategory": 38, + "category": 14 + }, + { + "name": "Beurre", + "id": 16, + "subCategory": 10, + "category": 8 + }, + { + "name": "Aloe vera", + "id": 464, + "subCategory": 42, + "category": 14 + }, + { + "name": "Pâtes", + "id": 15, + "subCategory": 9, + "category": 7 + }, + { + "name": "Huile d'olive", + "id": 463, + "subCategory": 51, + "category": 14 + }, + { + "name": "Gâteau", + "id": 14, + "subCategory": 9, + "category": 7 + }, + { + "name": "Huile de tournesol", + "id": 462, + "subCategory": 51, + "category": 14 + }, + { + "name": "Basilic", + "id": 13, + "subCategory": 8, + "category": 6 + }, + { + "name": "Huile de soja", + "id": 461, + "subCategory": 51, + "category": 14 + }, + { + "name": "Semences", + "id": 12, + "subCategory": 7, + "category": 5 + }, + { + "name": "Huile de ricin", + "id": 460, + "subCategory": 51, + "category": 14 + }, + { + "name": "Linge de Maison", + "id": 11, + "subCategory": 6, + "category": 5 + }, + { + "name": "Gingembre", + "id": 459, + "subCategory": 38, + "category": 14 + }, + { + "name": "Démaquillant", + "id": 10, + "subCategory": 5, + "category": 3 + }, + { + "name": "Graines à cuire", + "id": 458, + "subCategory": 35, + "category": 14 + }, + { + "name": "Soin du corps", + "id": 9, + "subCategory": 5, + "category": 3 + }, + { + "name": "Graines à croquer", + "id": 457, + "subCategory": 35, + "category": 14 + }, + { + "name": "Soin des cheveux", + "id": 8, + "subCategory": 5, + "category": 3 + }, + { + "name": "Lin", + "id": 456, + "subCategory": 35, + "category": 14 + }, + { + "name": "Macération solaire (non alimentaire)", + "id": 7, + "subCategory": 5, + "category": 3 + }, + { + "name": "Quinoa", + "id": 455, + "subCategory": 35, + "category": 14 + }, + { + "name": "Huile de soin", + "id": 6, + "subCategory": 5, + "category": 3 + }, + { + "name": "Mélange d'épices", + "id": 454, + "subCategory": 38, + "category": 14 + }, + { + "name": "Lait d'ânesse (cosmétique)", + "id": 5, + "subCategory": 5, + "category": 3 + }, + { + "name": "Chutney", + "id": 453, + "subCategory": 38, + "category": 14 + }, + { + "name": "Tofu", + "id": 4, + "subCategory": 4, + "category": 4 + }, + { + "name": "Tisane", + "id": 452, + "subCategory": 43, + "category": 14 + }, + { + "name": "Savon liquide", + "id": 3, + "subCategory": 3, + "category": 3 + }, + { + "name": "Thé", + "id": 451, + "subCategory": 43, + "category": 14 + }, + { + "name": "Livraison à domicile", + "id": 2, + "subCategory": 2, + "category": 2 + }, + { + "name": "Sucre", + "id": 450, + "subCategory": 38, + "category": 14 + }, + { + "name": "Carrelet", + "id": 1, + "subCategory": 1, + "category": 1 + }, + { + "name": "Huile essentielle", + "id": 449, + "subCategory": 8, + "category": 6 + }, + { + "name": "Sauge", + "id": 448, + "subCategory": 8, + "category": 6 + } + ], + "categories": [ + { + "name": "Traiteur", + "id": 4 + }, + { + "name": "Maison & Jardin", + "id": 5 + }, + { + "name": "Boulangerie & Pâtisserie", + "id": 7 + }, + { + "name": "Viandes", + "id": 10 + }, + { + "name": "Artisanat & Loisirs", + "id": 12 + }, + { + "name": "Produits de la mer", + "id": 1 + }, + { + "name": "Beauté & soins", + "id": 3 + }, + { + "name": "Animaux", + "id": 11 + }, + { + "name": "Épicerie", + "id": 14 + }, + { + "name": "Fruits & Légumes", + "id": 6 + }, + { + "name": "Crèmerie", + "id": 8 + }, + { + "name": "Paniers et Coffrets", + "id": 13 + }, + { + "name": "Livraison à domicile", + "id": 2 + }, + { + "name": "Boissons", + "id": 9 + } + ], + "subCategories": [ + { + "name": "Traiteur", + "id": 4, + "category": 4 + }, + { + "name": "Boissons alcoolisées", + "id": 11, + "category": 9 + }, + { + "name": "Porc", + "id": 61, + "category": 10 + }, + { + "name": "Hygiène", + "id": 3, + "category": 3 + }, + { + "name": "Veau", + "id": 62, + "category": 10 + }, + { + "name": "Habillement", + "id": 27, + "category": 12 + }, + { + "name": "Boeuf", + "id": 57, + "category": 10 + }, + { + "name": "Escargots", + "id": 16, + "category": 10 + }, + { + "name": "Confiseries & Chocolat", + "id": 48, + "category": 14 + }, + { + "name": "Glaces & Sorbets", + "id": 19, + "category": 8 + }, + { + "name": "Fruits", + "id": 39, + "category": 6 + }, + { + "name": "Pains", + "id": 32, + "category": 7 + }, + { + "name": "Poissons", + "id": 1, + "category": 1 + }, + { + "name": "Atelier, Cours et Visite", + "id": 22, + "category": 12 + }, + { + "name": "Jus de Fruits", + "id": 28, + "category": 9 + }, + { + "name": "Livraison à domicile", + "id": 2, + "category": 2 + }, + { + "name": "Autres Viandes", + "id": 14, + "category": 10 + }, + { + "name": "Viennoiseries", + "id": 13, + "category": 7 + }, + { + "name": "Sirop", + "id": 55, + "category": 9 + }, + { + "name": "Jouets", + "id": 25, + "category": 12 + }, + { + "name": "Artisanat et culture", + "id": 49, + "category": 12 + }, + { + "name": "Information", + "id": 24, + "category": 12 + }, + { + "name": "Maison et Entretien", + "id": 6, + "category": 5 + }, + { + "name": "Boissons fraîches", + "id": 53, + "category": 9 + }, + { + "name": "Céréales / Farines / Graines", + "id": 35, + "category": 14 + }, + { + "name": "Rillettes et Pâtés", + "id": 36, + "category": 10 + }, + { + "name": "Rillettes et Pâtés", + "id": 45, + "category": 10 + }, + { + "name": "Fruits de mer", + "id": 12, + "category": 1 + }, + { + "name": "Fruits secs", + "id": 40, + "category": 6 + }, + { + "name": "Artisanat", + "id": 18, + "category": 12 + }, + { + "name": "Lait", + "id": 54, + "category": 8 + }, + { + "name": "Poissons fumés", + "id": 46, + "category": 1 + }, + { + "name": "Charcuterie", + "id": 60, + "category": 10 + }, + { + "name": "Jardin & Potager", + "id": 7, + "category": 5 + }, + { + "name": "Légumes", + "id": 33, + "category": 6 + }, + { + "name": "Condiments, épices, sucres", + "id": 38, + "category": 14 + }, + { + "name": "Objets culturels", + "id": 21, + "category": 12 + }, + { + "name": "Yaourts & Fromages Frais", + "id": 29, + "category": 8 + }, + { + "name": "Soupes et Rillettes", + "id": 44, + "category": 1 + }, + { + "name": "Poissons et crustacés", + "id": 15, + "category": 1 + }, + { + "name": "Boissons sans alcool", + "id": 23, + "category": 9 + }, + { + "name": "Confitures, miel, compotes", + "id": 34, + "category": 14 + }, + { + "name": "Fromage", + "id": 26, + "category": 8 + }, + { + "name": "Café, thé et infusions", + "id": 43, + "category": 14 + }, + { + "name": "Légumes secs", + "id": 52, + "category": 6 + }, + { + "name": "Œufs", + "id": 50, + "category": 8 + }, + { + "name": "Foie Gras et Confits", + "id": 58, + "category": 10 + }, + { + "name": "Animaux", + "id": 17, + "category": 11 + }, + { + "name": "Beurre & Crème Fraîche", + "id": 10, + "category": 8 + }, + { + "name": "Herbes et Plantes", + "id": 8, + "category": 6 + }, + { + "name": "Compléments alimentaires", + "id": 42, + "category": 14 + }, + { + "name": "Paniers composés", + "id": 20, + "category": 13 + }, + { + "name": "Pâtisserie", + "id": 9, + "category": 7 + }, + { + "name": "Soupes et Conserves", + "id": 30, + "category": 6 + }, + { + "name": "Sauces", + "id": 47, + "category": 14 + }, + { + "name": "Galettes et Crêpes", + "id": 31, + "category": 7 + }, + { + "name": "Cosmétiques", + "id": 5, + "category": 3 + }, + { + "name": "Paniers composés", + "id": 37, + "category": 6 + }, + { + "name": "Huiles", + "id": 51, + "category": 14 + }, + { + "name": "Volailles et gibiers", + "id": 56, + "category": 10 + }, + { + "name": "Apéritif", + "id": 41, + "category": 14 + }, + { + "name": "Agneau", + "id": 59, + "category": 10 + } + ] +} \ No newline at end of file diff --git a/js/App.hx b/js/App.hx new file mode 100755 index 0000000..0b1372a --- /dev/null +++ b/js/App.hx @@ -0,0 +1,262 @@ +//React lib +import react.ReactMacro.jsx; +import react.ReactDOM; +import react.*; +import react.router.*; +//custom components +import react.order.*; +import react.product.*; +import react.store.*; +import react.map.*; +import react.user.*; + +//require bootstrap JS since it's bundled with browserify +//@:jsRequire('bootstrap') extern class Bootstrap{} +//@:jsRequire('jquery') extern class JQ extends js.jquery.JQuery{} + +class App { + + public static var instance : App; + public var LANG : String; + public var currency : String; //currency symbol like € or $ + public var t : sugoi.i18n.GetText;//gettext translator + + //i dont want to use redux now... saved state from react.OrderBox + public static var SAVED_ORDER_STATE : Dynamic; + + function new(?lang="fr",?currency="€") { + //singleton + instance = this; + if(lang!=null) this.LANG = lang; + this.currency = currency; + } + + /** + * Returns a jquery object like $() in javascript + * @deprecated + */ + public static inline function j(r:Dynamic):js.JQuery { + return new js.JQuery(r); + } + + public static inline function jq(r:Dynamic):js.jquery.JQuery{ + return new js.jquery.JQuery(r); + } + + /** + * The JS App will be available as "_" in the document. + */ + public static function main() { + + //untyped js.Browser.window.$ = js.Lib.require("jQuery"); + untyped js.Browser.window._ = new App(); + } + + public function getCart() { + return new ShopCart(); + } + + public function getTagger(cid:Int ) { + return new Tagger(cid); + } + + public function getTuto(name:String, step:Int) { + new Tuto(name,step); + } + + /** + * remove method for IE compat + */ + public function remove(el:js.html.Element){ + if (el == null) return; + el.parentElement.removeChild(el); + } + + public function getVATBox(ttcprice:Float,currency:String,rates:String,vat:Float,formName:String){ + + var input = js.Browser.document.querySelector('form input[name="${formName}_price"]'); + + remove( js.Browser.document.querySelector('form input[name="${formName}_vat"]').parentElement.parentElement ); + + ReactDOM.render(jsx('<$VATBox ttc="$ttcprice" currency="$currency" vatRates="$rates" vat="$vat" formName="$formName"/>'), input.parentElement); + + //remove(input); + + } + + /*public function getProductComposer(){ + //js.Browser.document.addEventListener("DOMContentLoaded", function(event) { + //ReactDOM.render(jsx('<$ComposerApp/>'), js.Browser.document.getElementById("app")); + //}); + }*/ + + /** + * Removes the form element and replace it by a react js component + * @param divId + * @param productName + * @param txpProductId + * @param formName + */ + public function getProductInput(divId:String, productName:String, txpProductId:String, formName:String ){ + + js.Browser.document.addEventListener("DOMContentLoaded", function(event) { + + //dirty stuff to remove "real" input, and replace it by the react one + App.j("form input[name='"+formName+"_name']").parent().parent().remove(); + App.j("form select[name='" + formName+"_txpProductId']").parent().parent().remove(); + + if (txpProductId == null) txpProductId = ""; + + ReactDOM.render(jsx('<$ProductInput productName="$productName" txpProductId="$txpProductId" formName="$formName"/>'), js.Browser.document.getElementById(divId)); + }); + } + + public function initReportHeader(){ + ReactDOM.render(jsx('<$ReportHeader />'), js.Browser.document.querySelector('div.reportHeaderContainer')); + } + + public function initOrderBox(userId:Int, distributionId:Int, contractId:Int, contractType:Int, date:String, place:String, userName:String, currency:String, hasPayments:Bool,callbackUrl:String){ + + untyped App.j("#myModal").modal(); + var onValidate = function() js.Browser.location.href = callbackUrl; + var node = js.Browser.document.querySelector('#myModal .modal-body'); + ReactDOM.unmountComponentAtNode(node); //the previous modal DOM element is still there, so we need to destroy it + ReactDOM.render(jsx('<$OrderBox userId="$userId" distributionId="$distributionId" + contractId="$contractId" contractType="$contractType" date="$date" place="$place" userName="$userName" + onValidate=$onValidate currency=$currency hasPayments=$hasPayments />'),node,postReact); + + } + + function postReact(){ + trace("post react"); + haxe.Timer.delay(function(){ + untyped jq('[data-toggle="tooltip"]').tooltip(); + untyped jq('[data-toggle="popover"]').popover(); + },500); + + } + + public static function roundTo(n:Float, r:Int):Float { + return Math.round(n * Math.pow(10,r)) / Math.pow(10,r) ; + } + + + /** + * Ajax loads a page and display it in a modal window + * @param url + * @param title + */ + public function overlay(url:String,?title,?large=true) { + + if (title != null) title = StringTools.urlDecode(title); + + var r = new haxe.Http(url); + r.onData = function(data) { + + //setup body and title + var m = App.j("#myModal"); + m.find(".modal-body").html(data); + if (title != null) m.find(".modal-title").html(title); + + if (!large) m.find(".modal-dialog").removeClass("modal-lg"); + + + untyped App.j('#myModal').modal(); //bootstrap 3 modal window + + } + r.request(); + } + + /** + * Displays a login box + */ + public function loginBox(redirectUrl:String,?message:String,?phoneRequired=false) { + var m = App.j("#myModal"); + m.find(".modal-title").html("S'identifier"); + m.find(".modal-dialog").removeClass("modal-lg"); + untyped m.modal(); + ReactDOM.render(jsx('<$LoginBox redirectUrl="$redirectUrl" message=$message phoneRequired="$phoneRequired"/>'), js.Browser.document.querySelector('#myModal .modal-body')); + return false; + } + + /** + * Displays a sign up box + */ + public function registerBox(redirectUrl:String,?message:String,?phoneRequired=false) { + var m = App.j("#myModal"); + m.find(".modal-title").html("S'inscrire"); + m.find(".modal-dialog").removeClass("modal-lg"); + untyped m.modal(); + ReactDOM.render(jsx('<$RegisterBox redirectUrl="$redirectUrl" message=$message phoneRequired="$phoneRequired"/>'), js.Browser.document.querySelector('#myModal .modal-body')); + return false; + } + + public function shop(place:Int, date:String) { + ReactDOM.render(jsx('<$Store date=$date place=$place/>'), js.Browser.document.querySelector('#shop')); + } + + public function groupMap(lat:String,lng:String,address:String) { + ReactDOM.render(jsx('<$GroupMapRoot lat="$lat" lng="$lng" address="$address"/>'), js.Browser.document.querySelector('#map')); + } + + /** + * Helper to get values of a bunch of checked checkboxes + * @param formSelector + */ + public function getCheckboxesId(formSelector:String):Array{ + var out = []; + var checkboxes = js.Browser.document.querySelectorAll(formSelector + " input[type=checkbox]"); + for ( input in checkboxes ){ + var input : js.html.InputElement = cast input; + if ( input.checked ) out.push(input.value); + } + return out; + } + + + #if plugins + public function getHostedPlugin(){ + return new hosted.js.App(); + } + #end + + /** + * set up a warning message when leaving the page + */ + public function setWarningOnUnload(active:Bool, ?msg:String){ + if (active){ + js.Browser.window.addEventListener("beforeunload", warn); + }else{ + js.Browser.window.removeEventListener("beforeunload", warn); + } + + } + + function warn(e:js.html.Event) { + var msg = "Voulez vous vraiment quitter cette page ?"; + //js.Browser.window.confirm(msg); + untyped e.returnValue = msg; //Gecko + IE + e.preventDefault(); + return msg; //Gecko + Webkit, Safari, Chrome etc. + } + + /** + * Anti Doubleclick with btn elements. + * Can be bypassed by adding a .btn-noAntiDoubleClick class + */ + public function antiDoubleClick(){ + + for( n in js.Browser.document.querySelectorAll(".btn:not(.btn-noAntiDoubleClick)") ){ + n.addEventListener("click",function(e:js.html.MouseEvent){ + var x = untyped e.target; + x.classList.add("disabled"); + haxe.Timer.delay(function(){ + x.classList.remove("disabled"); + },1000); + }); + } + + } +} + + diff --git a/js/ShopCart.hx b/js/ShopCart.hx new file mode 100644 index 0000000..9013a18 --- /dev/null +++ b/js/ShopCart.hx @@ -0,0 +1,445 @@ +import Common; +import js.JQuery; +/** + * JS Shopping Cart + * + * @author fbarbut + */ +class ShopCart +{ + + public var products : Map; //product db + public var productsArray : Array; //to keep order of products + public var categories : Array<{name:String,pinned:Bool,categs:Array}>; //categ db + public var pinnedCategories : Array<{name:String,pinned:Bool,categs:Array}>; //categ db + public var order : OrderInSession; + + var loader : JQuery; //ajax loader gif + + //for scroll mgmt + var cartTop : Int; + var cartLeft : Int; + var cartWidth : Int; + var jWindow : JQuery; + var cartContainer : JQuery; + + var date : String; + var place : Int; + + + public function new() + { + products = new Map(); + productsArray = []; + + order = cast { products:[] }; + categories = []; + pinnedCategories = []; + } + + + + public function add(pid:Int) { + loader.show(); + + var q = App.j('#productQt' + pid).val(); + var qt = 0.0; + var p = this.products.get(pid); + if (p.hasFloatQt) { + q = StringTools.replace(q, ",", "."); + qt = Std.parseFloat(q); + }else { + qt = Std.parseInt(q); + } + + if (qt == null) { + qt = 1; + } + //trace("qté : "+qt); + + //add server side + var r = new haxe.Http('/shop/add/$pid/$qt'); + + r.onData = function(data:String) { + + loader.hide(); + + var d = haxe.Json.parse(data); + if (!d.success) js.Browser.alert("Erreur : "+d); + + //add locally + subAdd(pid, qt); + render(); + + + } + r.request(); + + } + + + function subAdd(pid, qt:Float ) { + + for ( p in order.products) { + if (p.productId == pid) { + + p.quantity += qt; + render(); + return; + } + } + + order.products.push( { productId:pid, quantity:qt } ); + } + + /** + * Render the shopping cart and total + */ + function render() { + var c = App.j("#cart"); + c.empty(); + + //render items in shopping cart + c.append( Lambda.map(order.products, function( x ) { + var p = this.products.get(x.productId); + if (p == null) { + //the product may have been disabled by an admin + return ""; + } + + var btn = " "; + return "
+
" + x.quantity + " x " + p.name+"
+
"+btn+"
+
"; + }).join("\n") ); + + + //compute total price + var total = 0.0; + for (p in order.products) { + var pinfo = products.get(p.productId); + if (pinfo == null) continue; + total += p.quantity * pinfo.price; + } + var ffilter = new sugoi.form.filters.FloatFilter(); + + var total = ffilter.filterString(Std.string(App.roundTo(total,2))); + c.append("
TOTAL : " + total + "
"); + + + if (order.products.length > 0){ + App.instance.setWarningOnUnload(true,"Vous avez une commande en cours. Si vous quittez cette page sans confirmer, votre commande sera perdue."); + }else{ + App.instance.setWarningOnUnload(false); + } + } + + + function findCategoryName(cid:Int):String{ + + for ( cg in this.categories ){ + for (c in cg.categs){ + if (cid == c.id) { + return c.name; + } + } + } + for ( cg in this.pinnedCategories ){ + for (c in cg.categs){ + if (cid == c.id) { + return c.name; + } + } + } + return null; + } + + /** + * Dynamically sort products by categories + */ + public function sortProductsBy(){ + + //store products by groups + var groups = new Map}>(); + var pinned = new Map}>(); + + var firstCategGroup = this.categories[0].categs; + + //trace(firstCategGroup); + //trace(pinnedCategories); + + var pList = this.productsArray.copy(); + + //for ( p in pList) trace(p.name+" : " + p.categories); + //trace("----------------"); + + //sort by categs + for ( p in pList.copy() ){ + //trace(p.name+" : " + p.categories); + untyped p.element.remove(); + + for ( categ in p.categories){ + + if (Lambda.find(firstCategGroup, function(c) return c.id == categ) != null){ + + //is in this category group + var g = groups.get(categ); + if ( g == null){ + var name = findCategoryName(categ); + g = {name:name,products:[]}; + } + g.products.push(p); + //trace("remove " + p.name); + pList.remove(p); + groups.set(categ, g); + + } + else{ + // is in pinned group ? + var isInPinnedCateg = false; + for ( cg in pinnedCategories){ + if (Lambda.find(cg.categs, function(c) return c.id == categ) != null){ + isInPinnedCateg = true; + break; + } + } + + if (isInPinnedCateg){ + + var c = pinned.get(categ); + if ( c == null){ + + var name = findCategoryName(categ); + c = {name:name,products:[]}; + } + c.products.push(p); + //trace( "add " + p.name+" in PINNED"); + pList.remove(p); + pinned.set(categ, c); + + + }else{ + //not in the selected categ nor in pinned groups + continue; + } + } + } + } + + //if some untagged products remain + if (pList.length > 0){ + groups.set(0,{name:"Autres",products:pList}); + } + //trace("----------------"); + //render + var container = App.j(".shop .body"); + //render firts "pinned" groups , then "groups" + for ( source in [pinned, groups]){ + + for (o in source){ + + if (o.products.length == 0) continue; + container.append("
" + o.name + "
"); + for ( p in o.products){ + //trace("GROUP "+o.name+" : "+p.name); + //if the element has already been inserted, we need to clone it + if (untyped p.element.parent().length == 0){ + container.append( untyped p.element ); + }else{ + var clone = untyped p.element.clone(); + container.append( clone ); + } + + + } + } + } + App.j(".product").show(); + + + } + + /** + * is shopping cart empty ? + */ + public function isEmpty(){ + return order.products.length == 0; + + } + + /** + * submit cart + */ + public function submit() { + + var req = new haxe.Http("/shop/submit"); + req.onData = function(d) { + App.instance.setWarningOnUnload(false); + js.Browser.location.href = "/shop/validate/"+place+"/"+date; + + } + req.addParameter("data", haxe.Json.stringify(order)); + req.request(true); + + } + + /** + * filter products by category + */ + public function filter(cat:Int) { + + //icone sur bouton + App.j(".tag").removeClass("active").children().remove("span");//clean + + var bt = App.j("#tag" + cat); + bt.addClass("active").prepend(" "); + + + //affiche/masque produits + for (p in products) { + if (cat==0 || Lambda.has(p.categories, cat)) { + App.j(".shop .product" + p.id).fadeIn(300); + }else { + App.j(".shop .product" + p.id).fadeOut(300); + } + } + + + + + } + + /** + * remove a product from cart + * @param pid + */ + public function remove(pid:Int ) { + + loader.show(); + + //add server side + var r = new haxe.Http('/shop/remove/$pid'); + + r.onData = function(data:String) { + + loader.hide(); + + var d = haxe.Json.parse(data); + if (!d.success) js.Browser.alert("Erreur : "+d); + + //remove locally + for ( p in order.products.copy()) { + if (p.productId == pid) { + order.products.remove(p); + render(); + return; + } + } + render(); + + + } + r.request(); + + + + + } + + /** + * loads products DB and existing cart in ajax + */ + public function init(place:Int,date:String) { + + this.place = place; + this.date = date; + + loader = App.j("#cartContainer #loader"); + + var req = new haxe.Http("/shop/init/"+place+"/"+date); + req.onData = function(data) { + loader.hide(); + + var data : { + products:Array, + categories:Array<{name:String,pinned:Bool,categs:Array}>, + order:OrderInSession } = haxe.Unserializer.run(data); + + //populate local categories lists + for ( cg in data.categories){ + if (cg.pinned){ + pinnedCategories.push(cg); + }else{ + categories.push(cg); + } + } + + //product DB + for (p in data.products) { + //catch dom element for further usage + untyped p.element = App.j(".product"+p.id); + + var id : Int = p.id; + //var id : Int = p.id; + //id = id + 1; + this.products.set(id, p); + this.productsArray.push(p); + //trace(p.name+" : " + p.categories); + } + + //existing order + for ( p in data.order.products) { + subAdd(p.productId,p.quantity ); + } + + render(); + + sortProductsBy(); + + } + req.request(); + + //DISABLED : pb quand le panier est plus haut que l'ecran + //scroll mgmt, only for large screens. Otherwise let the cart on page bottom. + /*if (js.Browser.window.matchMedia("(min-width: 1024px)").matches) { + + jWindow = App.j(js.Browser.window); + cartContainer = App.j("#cartContainer"); + cartTop = cartContainer.position().top; + cartLeft = cartContainer.position().left; + cartWidth = cartContainer.width(); + jWindow.scroll(onScroll); + + }*/ + + + } + + /** + * keep the cart on top when scrolling + * @param e + */ + public function onScroll(e:Dynamic) { + + //cart container top position + + if (jWindow.scrollTop() > cartTop) { + //trace("absolute !"); + cartContainer.addClass("scrolled"); + cartContainer.css('left', Std.string(cartLeft) + "px"); + cartContainer.css('top', Std.string(/*cartTop*/10) + "px"); + cartContainer.css('width', Std.string(cartWidth) + "px"); + + }else { + cartContainer.removeClass("scrolled"); + cartContainer.css('left',""); + cartContainer.css('top', ""); + cartContainer.css('width', ""); + } + + + + } + +} \ No newline at end of file diff --git a/js/Tagger.hx b/js/Tagger.hx new file mode 100755 index 0000000..60a4f37 --- /dev/null +++ b/js/Tagger.hx @@ -0,0 +1,151 @@ +package ; +import Common; +import js.JQuery; +/** + * + * Tag products with categories + * + * @author fbarbut + */ +@:keep +class Tagger +{ + + var contractId : Int; + var data:TaggerInfos; + var pids : Array; //selected product Ids + + public function new(cid:Int) + { + contractId = cid; + pids = []; + } + + public function init() { + var req = new haxe.Http("/product/categorizeInit/"+contractId); + req.onData = function(_data) { + data = haxe.Json.parse(_data); + render(); + } + req.request(); + + } + + function render() { + + var html = new StringBuf(); + + html.add(""); + for (p in data.products) { + html.add(""); + var checked = Lambda.has(pids,p.product.id) ? "checked" : ""; + html.add(''); + html.add(""); + var tags = []; + + //trace('product tags ${p.categories} from tags ${data.categories}'); + + for (c in p.categories) { + //trouve le nom du tag + var name = ""; + var color = ""; + for (gc in data.categories) { + for ( t in gc.tags) { + if (c == t.id) { + name = t.name; + color = gc.color; + break; + } + } + } + //var bt = App.jq("[X]") + tags.push(""+name+""); + } + + html.add(""); + html.add(""); + } + html.add("
" + p.product.name+""+ tags.join(" ") +"
"); + App.jq("#tagger").html(html.toString()); + App.jq("#tagger .tag").click(function(e) { + + var el : js.html.Element = cast e.currentTarget; + + //find tag Id + var tid = Std.parseInt(el.getAttribute('class').split(" ")[1].substr(1)); + + //find product Id + var pid = Std.parseInt(el.parentElement.parentElement.getAttribute('class').substr(1)); + + //remove element + el.remove(); + + //datas + remove(tid,pid); + }); + + } + + public function add() { + var tagId = Std.parseInt(App.jq("#tag").val()); + + if (tagId == 0) js.Browser.alert("Impossible de trouver la catégorie selectionnée"); + + pids = []; + for ( e in App.jq("#tagger input:checked").elements() ) { + pids.push(Std.parseInt(e.attr("name").substr(1))); + } + if (pids.length == 0) js.Browser.alert("Sélectionnez un produit afin de pouvoir lui attribuer une catégorie"); + + for (p in pids) { + addTag(tagId, p); + } + + render(); + } + + public function remove(tagId:Int,productId:Int) { + //data + for ( p in data.products) { + if (p.product.id == productId) { + for ( t in p.categories) { + if (t == tagId) p.categories.remove(t); + } + } + } + } + + function addTag(tagId:Int, productId:Int) { + + //check for doubles + for ( p in data.products) { + if (p.product.id == productId) { + for (t in p.categories) { + if (t == tagId) return; + } + } + } + + //data + for ( p in data.products) { + if (p.product.id == productId) { + p.categories.push(tagId); + break; + } + } + + } + + public function submit() { + + var req = new haxe.Http("/product/categorizeSubmit/" + contractId); + req.addParameter("data", haxe.Json.stringify(data)); + req.onData = function(_data) { + + js.Browser.alert(_data); + } + req.request(true); + + } + +} \ No newline at end of file diff --git a/js/Tuto.hx b/js/Tuto.hx new file mode 100644 index 0000000..589a841 --- /dev/null +++ b/js/Tuto.hx @@ -0,0 +1,131 @@ +package; +import Common; + +/** + * Tutorial javascript widget + * @author fbarbut + */ +class Tuto +{ + var name:String; + var step:Int; + + static var LAST_ELEMENT :String = null; //last hightlit element + + public function new(name:String, step:Int){ + + this.name = name; + this.step = step; + + TutoDatas.get(name, init); + } + + /** + * asyn init + * @param tuto + */ + function init(tuto) + { + + var s = tuto.steps[step]; + + //close previous popovers + var p = App.jq(".popover"); + untyped p.popover('hide'); + + var t = App.instance.t; + if (t == null) trace("Gettext translator is null"); + + if (s == null) { + /** + * tutorial is finished : display a modal window + */ + var m = App.jq('#myModal'); + untyped m.modal('show'); + m.addClass("help"); + m.find(".modal-header").html(" "+tuto.name); + m.find(".modal-body").html(" "+t._("This tutorial is over.")); + var bt = App.jq(" "+t._("Come back to tutorials page")+""); + bt.click(function(?_) { + untyped m.modal('hide'); + js.Browser.location.href = "/contract?stopTuto=1"; + }); + m.find(".modal-footer").append(bt); + m.find(".modal-dialog").removeClass("modal-lg"); //small window pls + + }else if (s.element == null) { + + /** + * no element, make a modal window (usually its the first step of the tutorial) + */ + var m = App.jq('#myModal'); + untyped m.modal('show'); + m.addClass("help"); + m.find(".modal-body").html(s.text); + m.find(".modal-header").html(" "+tuto.name); + + var bt = App.jq(" "+t._("OK")+""); + bt.click(function(?_) { + untyped m.modal('hide'); + new Tuto(name, step + 1); + }); + m.find(".modal-footer").append(bt); + m.find(".modal-dialog").removeClass("modal-lg"); //small window pls + + }else { + + //prepare Bootstrap "popover" + var x = App.jq(s.element).first().attr("title", tuto.name+"
"+(step+1)+"/"+tuto.steps.length+"
"); + var text = "

" + s.text + "

"; + var bt = null; + switch(s.action) { + case TANext : + + bt = App.jq("

"+t._("Next")+"

"); + bt.click(function(?_) { + //untyped m.modal('hide'); + new Tuto(name, step + 1); + if(LAST_ELEMENT!=null) App.jq(s.element).removeClass("highlight"); + }); + + default: + } + + //configure and open popover + var p = switch(s.placement) { + case TPTop: "top"; + case TPBottom : "bottom"; + case TPLeft : "left"; + case TPRight : "right"; + default : null; + } + var options = { container:"body", content:text, html:true , placement:p}; + untyped x.popover(options).popover('show'); + + + //add a footer + var footer = App.jq(""); + + if (bt != null) footer.find(".pull-right").append(bt); + footer.find(".pull-left").append(makeCloseButton(t._('Stop'))); + + App.jq(".popover .popover-content").append(footer); + + //highlight + App.jq(s.element).first().addClass("highlight"); + LAST_ELEMENT = s.element; + } + } + + /** + * Make a "close" bt + */ + function makeCloseButton(?text) { + var bt = App.jq(" "+(text==null?"":text)+""); + bt.click(function(?_) { + js.Browser.location.href = "/contract?stopTuto=1"; + }); + return bt; + } + +} \ No newline at end of file diff --git a/js/libs/libs.js b/js/libs/libs.js new file mode 100644 index 0000000..eb7a3f0 --- /dev/null +++ b/js/libs/libs.js @@ -0,0 +1,28 @@ +// +// npm dependencies library +// +(function(scope) { + 'use-strict'; + scope.__registry__ = Object.assign({}, scope.__registry__, { + // + // list npm modules required in Haxe + // + 'bootstrap': require('bootstrap'), + 'react': require('react'), + 'react-dom': require('react-dom'), + 'react-bootstrap-typeahead': require('react-bootstrap-typeahead'), + 'react-datetime': require('react-datetime'), + 'leaflet': require('leaflet'), + 'react-leaflet': require('react-leaflet'), + 'react-places-autocomplete': require('react-places-autocomplete'), + 'geolib': require('geolib'), + 'react-router':require('react-router'), + 'react-router-dom':require('react-router-dom'), + }); + + if (process.env.NODE_ENV !== 'production') { + // enable React hot-reload + require('haxe-modular'); + } + +})(typeof $hx_scope != "undefined" ? $hx_scope : $hx_scope = {}); diff --git a/js/react/DateTimeField.hx b/js/react/DateTimeField.hx new file mode 100644 index 0000000..f687510 --- /dev/null +++ b/js/react/DateTimeField.hx @@ -0,0 +1,7 @@ +package react; + +/** + * @doc https://www.npmjs.com/package/react-bootstrap-datetimepicker + */ +@:jsRequire('react-bootstrap-datetimepicker') +extern class DateTimeField extends react.ReactComponent {} diff --git a/js/react/Error.hx b/js/react/Error.hx new file mode 100644 index 0000000..2676aa6 --- /dev/null +++ b/js/react/Error.hx @@ -0,0 +1,29 @@ +package react; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +/** + * A Error Div + */ +class Error extends react.ReactComponentOfProps<{error:String}> +{ + + public function new(props:Dynamic) + { + super(props); + } + + + override public function render(){ + + if (props.error == null) return null; + + return jsx('
+ ${props.error} +
+ '); + } + + +} \ No newline at end of file diff --git a/js/react/Message.hx b/js/react/Message.hx new file mode 100644 index 0000000..c9a3478 --- /dev/null +++ b/js/react/Message.hx @@ -0,0 +1,26 @@ +package react; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +/** + * A message Div + */ +class Message extends react.ReactComponentOfProps<{message:String}> +{ + + public function new(props:Dynamic) + { + super(props); + } + + override public function render(){ + + if (props.message == null) return null; + + return jsx('
+ ${props.message} +
+ '); + } +} \ No newline at end of file diff --git a/js/react/ReportHeader.hx b/js/react/ReportHeader.hx new file mode 100644 index 0000000..7236766 --- /dev/null +++ b/js/react/ReportHeader.hx @@ -0,0 +1,94 @@ +package react; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +//datepicker broken if called like this //import react.DateTimeField.*; +//@:jsRequire('react-bootstrap-datetimepicker') +//extern class DateTimeField extends react.ReactComponent {} + + +/** + * @doc https://github.com/YouCanBookMe/react-datetime + */ +@:jsRequire('react-datetime') +extern class DateTime extends react.ReactComponent {} + + + + +/** + * ... + * @author fbarbut + */ +class ReportHeader extends react.ReactComponentOfState +{ + + public function new() + { + super(); + state = {startDate:null, endDate:null, groupBy:null, contracts:[]}; + + //load fr locale of moment.js + var moment = js.Lib.require('moment'); + js.Lib.require('moment/locale/fr'); + + } + + override public function render(){ + + return jsx('
+
+
+ + + + +
+ +
+ +
+ +
+ +
+ +
+
+ Afficher +
+
'); + + } + + function onDateChange(e:js.html.Event){ + trace("onDateChange"); + //var name :String = untyped e.target.name; + //var value :String = untyped e.target.value; + //trace('$name $value'); + trace(e); + //e.preventDefault(); + } + + /** + * @doc https://facebook.github.io/react/docs/forms.html + */ + function onGroupByChange(e:js.html.Event){ + e.preventDefault(); + trace("onGRoupByChange"); + var name :String = untyped e.target.name; + var value :String = untyped e.target.value; + if (value == "ByMember"){ + state.groupBy = ByMember; + }else{ + state.groupBy = ByProduct; + } + trace(state); + setState(state); + } + +} \ No newline at end of file diff --git a/js/react/Typeahead.hx b/js/react/Typeahead.hx new file mode 100644 index 0000000..b09ffbf --- /dev/null +++ b/js/react/Typeahead.hx @@ -0,0 +1,17 @@ +package react; + +/** + * + * Use the 1.4.x version. The 2.x version is still buggy + * + * @doc https://www.npmjs.com/package/react-bootstrap-typeahead + */ +@:jsRequire('react-bootstrap-typeahead', 'Typeahead') +extern class Typeahead extends react.ReactComponent{} + +/** + * @doc https://github.com/ericgio/react-bootstrap-typeahead/blob/803f61c1c8d0c943106233ed3c9306acc19b5b2b/docs/API.md#asynctypeahead + * Async component is needed when options and searches are managed asynchronously + */ +@:jsRequire('react-bootstrap-typeahead', 'AsyncTypeahead') +extern class AsyncTypeahead extends react.ReactComponent{} \ No newline at end of file diff --git a/js/react/VATBox.hx b/js/react/VATBox.hx new file mode 100644 index 0000000..4d30aad --- /dev/null +++ b/js/react/VATBox.hx @@ -0,0 +1,125 @@ +package react; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +// I need to store also the "input" because of https://stackoverflow.com/questions/29140354/how-to-handle-decimal-values-in-reacts-onchange-event-for-input +typedef VATBoxState = {ht:Float, ttc:Float, vat:Float, htInput:String, ttcInput:String,lastEdited:String}; + + +/** + * A box to manage prices with and without VAT + * @author fbarbut + */ +class VATBox extends react.ReactComponentOfPropsAndState<{ttc:Float,currency:String,vatRates:String,vat:Float,formName:String},VATBoxState> +{ + + public function new(props) + { + super(props); + //trace(props); + + this.state = { + ht : round(props.ttc/(1+props.vat/100)), + htInput : Std.string(round(props.ttc/(1+props.vat/100))), + ttc : round(props.ttc), + ttcInput : Std.string(round(props.ttc)), + vat:props.vat, + lastEdited:null + }; + + + } + + override public function render(){ + + var rates :Array= props.vatRates.split("|").map(Std.parseFloat); + + var options = [for (r in rates) jsx('') ]; + var priceInputName = props.formName+"_price"; + var vatInputName = props.formName+"_vat"; + + return jsx('
+ +
+
Hors taxe
+
Taux de TVA
+
TTC
+
+ +
+
+
+ +
${props.currency}
+
+
+ +
+ +
+ +
+
+ +
${props.currency}
+
+
+
+ + + + +
+ '); + } + + + /** + * Recompute prices + */ + function onChange(e:js.html.Event){ + + e.preventDefault(); + var name :String = untyped e.target.name; + var input : String = Std.string(untyped e.target.value); + if (input == null || input == "") input = "0"; + input = StringTools.replace(input, ",", "."); + var value : Float = Std.parseFloat(input); + if (value == null) value = 0; + + var rate = 1 + (state.vat / 100); + //trace('name:$name - raw:' + untyped e.target.value+' - input:$input - value:$value '); + + switch(name){ + case "htInput": + + this.setState(cast {ht:value , htInput:input , ttc: round(value * rate), ttcInput:round(value * rate) , lastEdited:"htInput"}); + + case "ttcInput": + this.setState(cast {ht: round(value / rate), htInput : round(value/rate), ttcInput:input , ttc:value , lastEdited:"ttcInput"}); + + case "vat": + rate = 1 + (value / 100); + if (state.lastEdited == "htInput"){ + //compute ttc from ht + this.setState(cast { vat:value, ht:state.ht, htInput:state.ht, ttc:round(state.ht * rate) , ttcInput:round(state.ht * rate)} ); + }else{ + //compute ht from ttc + this.setState(cast { vat:value, ht: round( state.ttc/rate ), htInput: round( state.ttc/rate ), ttc:state.ttc , ttcInput:state.ttc} ); + } + default: + + } + + + } + + inline function round(f:Float):Float{ + return Math.round(f * 100) / 100; + } + + +} \ No newline at end of file diff --git a/js/react/map/GroupMap.hx b/js/react/map/GroupMap.hx new file mode 100644 index 0000000..70e36af --- /dev/null +++ b/js/react/map/GroupMap.hx @@ -0,0 +1,252 @@ +package react.map; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; +import leaflet.L; + +using Lambda; + + +/** + * Externs for react-leaflet + * @doc https://react-leaflet.js.org/docs/en/intro.html + */ +@:jsRequire('react-leaflet', 'Map') +extern class LeafMap extends ReactComponent {} +@:jsRequire('react-leaflet', 'TileLayer') +extern class TileLayer extends ReactComponent {} +@:jsRequire('react-leaflet', 'Marker') +extern class Marker extends ReactComponent {} +@:jsRequire('react-leaflet', 'CircleMarker') +extern class CircleMarker extends ReactComponent {} +@:jsRequire('react-leaflet', 'Popup') +extern class Popup extends ReactComponent {} +@:jsRequire('react-leaflet', 'FeatureGroup') +extern class FeatureGroup extends ReactComponent {} +@:jsRequire('react-leaflet', 'LayerGroup') +extern class LayerGroup extends ReactComponent {} + + +/* +extern class L2 { + static function icon(a:Dynamic):Dynamic; + static function latLng(lat:Float, lng:Float):Dynamic; +}*/ + +/** + * GroupItem + * @author rcrestey + */ +typedef GroupMapProps = { + var addressCoord:Dynamic; + var groups:Array; + var fetchGroupsInsideBox:Box->Void; + var groupFocusedId:Int; +}; + +typedef GroupMapState = { + var isFitting:Bool; + var focusedMarker:Dynamic; +}; + +typedef Box = { + var minLat:Float; + var maxLat:Float; + var minLng:Float; + var maxLng:Float; +}; + +class GroupMap extends ReactComponentOfPropsAndState { + static inline var DEFAULT_LAT = 46.52863469527167; // center of France + static inline var DEFAULT_LNG = 2.43896484375; // center of France + static inline var INIT_ZOOM = 6; + static inline var DEFAULT_ZOOM = 13; + + var map:Dynamic; + var featureGroup:Dynamic; + var markerMap = new Map(); + + var groupIcon = L.icon({ + iconUrl: '/img/marker.svg', + iconSize: [40, 40], + iconAnchor: [20, 40], + popupAnchor: [0, -30], + className: 'icon' + }); + + var homeIcon = L.icon({ + iconUrl: '/img/home.svg', + iconSize: [40, 40], + iconAnchor: [20, 20], + popupAnchor: [0, -30], + className: 'icon' + }); + + function new() { + super(); + state = { + isFitting: false, + focusedMarker: null + }; + } + + function getMap(element:Dynamic):Void { + map = element.leafletElement; + } + + function getFeatureGroup(element:Dynamic):Void { + featureGroup = element.leafletElement; + setState({ + isFitting: true + }, fitBounds); + } + + function getMarker(element:Dynamic, id:Int):Void { + if (element != null) + markerMap.set(id, element.leafletElement); + } + + + /** + * Call API to get groups in the current bounding box + */ + function getGroups() { + var bounds = map.getBounds(); + var southWest = bounds.getSouthWest(); + var northEast = bounds.getNorthEast(); + + props.fetchGroupsInsideBox({ + minLat: southWest.lat, + maxLat: northEast.lat, + minLng: southWest.lng, + maxLng: northEast.lng + }); + } + + function fitBounds() { + map.fitBounds(featureGroup.getBounds(), { + padding: [30, 30] + }); + } + + function handleMoveEnd() { + if ( + props.addressCoord != null && + !Lambda.empty(props.groups) && + map.distance(map.getCenter(), props.addressCoord) == 0 + ) + setState({ + isFitting: true + }, fitBounds); + else if (state.isFitting) + setState({ + isFitting: false + }); + else + getGroups(); + } + + override public function componentDidMount() { + if (props.addressCoord == null) + getGroups(); + } + + override public function shouldComponentUpdate(nextProps:GroupMapProps, nextState:GroupMapState) { + if (nextState.focusedMarker != state.focusedMarker) + return false; + return true; + } + + override public function componentDidUpdate(prevProps:GroupMapProps, prevState:GroupMapState) { + if (props.groupFocusedId != null) { + if ( + prevProps.groupFocusedId != props.groupFocusedId + || state.focusedMarker == null + ) { + if (state.focusedMarker != null) + state.focusedMarker.closePopup(); + + var focusedMarker = markerMap.get(props.groupFocusedId); + focusedMarker.openPopup(); + + setState({ + focusedMarker: focusedMarker + }); + } + } + else if (prevProps.groupFocusedId != null && state.focusedMarker != null) { + state.focusedMarker.closePopup(); + + setState({ + focusedMarker: null + }); + } + } + + override public function render() { + var center = props.addressCoord == null + ? L.latLng(DEFAULT_LAT, DEFAULT_LNG) + : props.addressCoord; + + var zoom = props.addressCoord == null + ? INIT_ZOOM + : DEFAULT_ZOOM; + + return jsx(' + + + + ${renderGroupMarkers()} + ${renderHomeMarker()} + + + '); + } + + function renderGroupMarkers() { + var markers = props.groups.map(function(group) { + var coord = [group.place.latitude, group.place.longitude]; + + function markerGetter(e:Dynamic) { + getMarker(e, group.place.id); + } + + var image = group.image==null ? null : jsx(''); + + return jsx(' + + + + + + '); + }); + + return jsx('
${markers}
'); + } + + function renderHomeMarker() { + if (props.addressCoord != null) + return jsx(''); + return null; + } +} diff --git a/js/react/map/GroupMapRoot.hx b/js/react/map/GroupMapRoot.hx new file mode 100644 index 0000000..55367c6 --- /dev/null +++ b/js/react/map/GroupMapRoot.hx @@ -0,0 +1,312 @@ +package react.map; +import js.Promise; +import react.ReactComponent; +import react.ReactMacro.jsx; +import utils.HttpUtil; +import leaflet.L; +import Common; +using Lambda; + +@:jsRequire('react-places-autocomplete', 'default') +extern class Autocomplete extends ReactComponent {} + +@:jsRequire('react-places-autocomplete') +extern class GeoUtil { + static function geocodeByAddress(address:Dynamic):Promise; +} + +@:jsRequire('geolib') +extern class Geolib { + static function getDistance(start:Dynamic, end:Dynamic):Float; +} + +/** + * Groups Map + * @author rcrestey + */ + +typedef GroupMapRootState = { + var point:Dynamic; + var address:String; + var groups:Array; + var groupFocusedId:Int; + var isInit:Bool; +}; + +typedef GroupMapRootProps = { + var lat:Float; + var lng:Float; + var address:String; +}; + +class GroupMapRoot extends ReactComponentOfState{ + + static inline var GROUP_MAP_URL = '/api/group/map'; + + var distanceMap = new Map(); + + public function new(props) + { + super(props); + + state = { + point: L.latLng(props.lat, props.lng), + address: props.address, + groups: [], + groupFocusedId: null, + isInit: false + }; + } + + function onChange(address) { + setState({ + address: address + }); + } + + function openPopup(group:Dynamic) { + setState({ + groupFocusedId: group.place.id + }); + } + + function closePopup() { + setState({ + groupFocusedId: null + }); + } + + function geocodeByAddress(address:String):Promise { + return GeoUtil.geocodeByAddress(address) + .then(function(results) { + var lat = results[0].geometry.location.lat(); + var lng = results[0].geometry.location.lng(); + + return {lat: lat, lng: lng}; + }); + } + + /** + * Call API to find groups at $lat and $lng + * @param lat - + * @param lng - + */ + function fetchGroups(lat:Float, lng:Float) { + HttpUtil.fetch(GROUP_MAP_URL, GET, {lat: lat, lng: lng}, JSON) + .then(function(results) { + setState({ + point: L.latLng(lat, lng), + groups: results.groups, + isInit: true + }, fillDistanceMap); + }) + .catchError(function(error) { + trace('Error', error); + }); + } + + /** + * Call API to look for groups in the defined bounding box + */ + var wait : Bool; + function fetchGroupsInsideBox(newBox) { + + switch(wait){ + case null,false : wait = true; + case true : trace("stop"); return; + } + + HttpUtil.fetch(GROUP_MAP_URL, GET, newBox, JSON) + .then(function(results) { + wait = false; + setState({ + groups: results.groups + }, fillDistanceMap); + }); + /*.catchError(function(error) { + trace('Error', error + " stack:"+haxe.CallStack.toString(haxe.CallStack.exceptionStack())) ; + wait = false; + });*/ + } + + function getGroupDistance(group:GroupOnMap):Float { + if (state.point == null) + return null; + + var start = { + latitude: state.point.lat, + longitude: state.point.lng + }; + var end = { + latitude: group.place.latitude, + longitude: group.place.longitude + }; + + return Geolib.getDistance(start, end); + } + + function fillDistanceMap() { + for (group in state.groups) { + distanceMap.set(group.place.id, getGroupDistance(group)); + } + + orderGroupsByDistance(state.groups); + + setState({ + groups: state.groups + }); + } + + function orderGroupsByDistance(groups:Array) { + groups.sort(function(a, b) { + return distanceMap.get(a.place.id) - distanceMap.get(b.place.id); + }); + } + + function convertDistance(distance:Int):String { // to test + if (distance > 10000) + return Math.floor(distance / 1000) + ' km'; + if (distance > 1000) + return Math.floor(distance / 100) / 10 + ' km'; + return distance + ' m'; + } + + function handleSelect(address:String) { + setState({ + address: address + }); + + geocodeByAddress(address) + .then(function(coord) { + fetchGroups(coord.lat, coord.lng); + }) + .catchError(function(error) { + trace('Error', error); + }); + } + + override public function componentDidMount() { + if (state.point != null) + fetchGroups(state.point.lat, state.point.lng); + else if (state.address != '') + handleSelect(state.address); + } + + function renderSuggestion(obj:Dynamic) { + return jsx(' +
+ + ${obj.formattedSuggestion.mainText}  + ${obj.formattedSuggestion.secondaryText} +
+ '); + } + + override public function render() { + var inputProps = { + value: state.address, + onChange: onChange + }; + + var cssClasses = { + root: 'form-group', + input: 'autocomplete-input', + autocompleteContainer: 'autocomplete-results', + }; + + return jsx(' +
+
+ +
+
+ Trouvez un groupe Cagette près de chez vous   + +
+
+
+
+
${renderGroupList()}
+
${renderGroupMap()}
+
+
'); + } + + function renderGroupMap() { + if (!state.isInit) + return null; + + return jsx(' + + '); + } + + function renderGroupList() { + var groups = state.groups.map(function(group) { + return renderGroup(group); + }); + + return jsx(' +
+ ${groups} +
+ '); + } + + /** + * Renders a group in the left list + */ + function renderGroup(group:GroupOnMap) { + var address = [ + group.place.address1, + group.place.address2, + [group.place.zipCode, group.place.city].join(" "), + ]; + + var addressBlock = Lambda.array(address.mapi(function(index, element) { + if (element != null){ + return jsx('
$element
'); + }else{ + return null; + } + })); + + var distance = null; + if (distanceMap.get(group.place.id) != null) + distance = jsx('
${convertDistance(distanceMap.get(group.place.id))}
'); + + var classNames = ['clickable groupBlock']; + if (group.place.id == state.groupFocusedId) + classNames.push('focused'); + + var img = if(group.image==null) { + null; + }else{ + jsx(''); + } + + return jsx(' + $img +

${group.name}

+
${addressBlock}
+ ${distance} +
'); + } +} diff --git a/js/react/order/InsertOrder.hx b/js/react/order/InsertOrder.hx new file mode 100644 index 0000000..976558b --- /dev/null +++ b/js/react/order/InsertOrder.hx @@ -0,0 +1,112 @@ +package react.order; +import react.ReactDOM; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; +import utils.HttpUtil; +import react.product.ProductSelect; +import react.router.Redirect; +import react.router.Link; + + +/** + * A box to add an order to a member + * @author fbarbut + */ +class InsertOrder extends react.ReactComponentOfPropsAndState<{contractId:Int,userId:Int,distributionId:Int,onInsert:UserOrder->Void},{products:Array,error:String,selected:Int}> +{ + + public function new(props) + { + super(props); + state = {products:[],error:null,selected:null}; + } + + override function componentDidMount() + { + //load product list + HttpUtil.fetch("/api/product/get/", GET, {contractId:props.contractId},PLAIN_TEXT) + .then(function(data:String) { + + /*var data : {products:Array} = haxe.Json.parse(data); + for( p in data.products) { + p.unitType = Type.createEnumIndex(UnitType,untyped p.unitType); + }*/ + + var data : {products:Array} = tink.Json.parse(data); + setState({products:data.products, error:null,selected:null}); + + }).catchError(function(data) { + var data = Std.string(data); + trace("Error",data); + if(data.substr(0,1)=="{"){ + //json error from server + var data : ErrorInfos = haxe.Json.parse(data); + setState(cast {error:data.error.message} ); + }else{ + //js error + setState(cast {error:data} ); + } + }); + } + + override public function render(){ + //redirect to orderBox if a product is selected + var redirect = if(state.selected!=null) jsx('<$Redirect to="/" />') else null; + + return jsx(' +
+ $redirect +

Choisissez le produit à ajouter

+ <$Link className="btn btn-default" to="/"> Retour + <$Error error="${state.error}" /> +
+ <$ProductSelect onSelect=$onSelectProduct products=${state.products} /> +
+ '); + } + + function onSelectProduct(p:ProductInfo){ + var uo : UserOrder = cast { + id:null, + product:p, + quantity:1, + productId:p.id, + productPrice:p.price, + paid:false, + invert:false, + user2:null + }; + props.onInsert(uo); + setState(cast {selected:p.id}); + + //do not insert order now, just warn the OrderBox +/* + //insert order + var data = [{id:null,productId:p.id,qt:1,paid:false,invert:false,user2:null} ]; + var req = { + orders:haxe.Json.stringify(data), + distributionId : props.distributionId, + contractId : props.contractId + }; + var r = HttpUtil.fetch("/api/order/update/"+props.userId, POST, req, JSON); + r.then(function(d:Dynamic) { + + if (Reflect.hasField(d, "error")) { + setState(cast {error:d.error.message}); + }else{ + //WOOT + //trace("OK"); + //go to OrderBox with a redirect + setState(cast {selected:p.id}); + } + }).catchError(function(d) { + trace("PROMISE ERROR", d); + setState(cast {error:d.error.message}); + }); +*/ + } + + + +} \ No newline at end of file diff --git a/js/react/order/Order.hx b/js/react/order/Order.hx new file mode 100644 index 0000000..87259e5 --- /dev/null +++ b/js/react/order/Order.hx @@ -0,0 +1,179 @@ +package react.order; +import react.ReactDOM; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; +import react.product.Product; + +/** + * A User order + * @author fbarbut + */ +class Order extends react.ReactComponentOfPropsAndState<{order:UserOrder,onUpdate:UserOrder->Void,parentBox:react.order.OrderBox},{order:UserOrder,inputValue:String}> +{ + var hasPayments :Bool; + var currency : String; + + public function new(props) + { + super(props); + state = {order:props.order,inputValue:null}; + hasPayments = props.parentBox.props.hasPayments; + currency = props.parentBox.props.currency; + + if (state.order.productUnit == null) state.order.productUnit = Piece; + if (state.order.productQt == null) state.order.productQt = 1; + + state.inputValue = if ( isSmartQtInput(state.order) ){ + Std.string(round(state.order.quantity * state.order.productQt)); + }else{ + Std.string(state.order.quantity); + } + } + + override public function render(){ + var o = state.order; + /*var unit = if (o.productHasFloatQt || o.productHasVariablePrice){ + jsx('
${Formatting.unit(o.productUnit)}
'); + }else{ + jsx('
'); + }*/ + + /* + //use smart qt only if hasFloatQt + var productName = if (o.productHasFloatQt || o.productHasVariablePrice){ + jsx('
${o.productName}
'); + }else{ + jsx('
${o.productName} ${o.productQt} ${Formatting.unit(o.productUnit)}
'); + } + */ + /*var productName = if (o.productHasFloatQt || o.productHasVariablePrice){ + jsx('
${o.productName}
');*/ + + var input = if (isSmartQtInput(o)){ + jsx('
+ +
${Formatting.unit(o.productUnit)}
+
'); + }else{ + jsx('
+ +
'); + } + + var alternated = if(props.parentBox.props.contractType==0 && props.parentBox.state.users!=null){ + //constant orders + var options = props.parentBox.state.users.map(function(x) return jsx('') ); + + var checkbox = if(o.invertSharedOrder){ + jsx(''); + }else{ + jsx(''); + } + + jsx('
+ + $checkbox +
'); + }else{ + null; + } + + return jsx('
+
+ <$Product productInfo=${o.product} /> +
+ +
+ ${o.productRef} +
+ +
+ ${round(o.quantity * o.productPrice)} ${currency} +
+ +
+ $input + ${makeInfos()} +
+ + ${paidInput()} + +
$alternated
+ +
'); + } + + function round(f){ + return Formatting.formatNum(f); + } + + function paidInput(){ + if(hasPayments) return null; + if(state.order.paid){ + return jsx('
'); + }else{ + return jsx('
'); + } + } + + function makeInfos(){ + var o = state.order; + return if ( isSmartQtInput(o) ){ + jsx('
+ ${round(o.quantity)} x ${o.productQt} ${Formatting.unit(o.productUnit)} ${o.productName} +
'); + }else{ + null; + } + } + + function isSmartQtInput(o:UserOrder):Bool{ + return o.product.hasFloatQt || o.product.variablePrice || o.product.wholesale; + } + + function onChange(e:js.html.Event){ + e.preventDefault(); + var value :String = untyped (e.target.value == "") ? "0" : e.target.value; + state.inputValue = value; + var v = Formatting.parseFloat(value); + var o = state.order; + if ( isSmartQtInput(o) ){ + //the value is a smart qt, so we need re-compute the quantity + o.quantity = v / o.productQt; + }else{ + o.quantity = v; + } + + this.setState(state); + if (props.onUpdate != null) props.onUpdate(state.order); + } + + function onChangePaid(e:js.html.Event){ + state.order.paid = untyped e.target.checked; + this.setState(state); + if (props.onUpdate != null) props.onUpdate(state.order); + } + + function onChangeInvert(e:js.html.Event){ + state.order.invertSharedOrder = untyped e.target.checked; + this.setState(state); + if (props.onUpdate != null) props.onUpdate(state.order); + } + + function onChangeUser2(e:js.html.Event){ + var v = Std.parseInt(untyped e.target.value); + state.order.userId2 = v==0 ? null : v; + this.setState(state); + if (props.onUpdate != null) props.onUpdate(state.order); + } + + function onKeyPress(event:js.html.KeyboardEvent){ + /*if(event.key == 'Enter'){ + trace('enter !'); + }*/ + } +} \ No newline at end of file diff --git a/js/react/order/OrderBox.hx b/js/react/order/OrderBox.hx new file mode 100644 index 0000000..3f10ee5 --- /dev/null +++ b/js/react/order/OrderBox.hx @@ -0,0 +1,224 @@ +package react.order; +import react.ReactDOM; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; +import utils.HttpUtil; +import react.router.HashRouter; +import react.router.Route; +import react.router.Switch; +import react.router.Link; + +typedef OrderBoxState = { + orders:Array, + error:String, + users:Null>, +}; +typedef OrderBoxProps = { + userId:Int, + distributionId:Int, + contractId:Int, + contractType:Int, + date:String, + place:String, + userName:String, + onValidate:Void->Void, + currency:String, + hasPayments:Bool +}; + +/** + * A box to edit/add orders of a member + * @author fbarbut + */ +class OrderBox extends react.ReactComponentOfPropsAndState +{ + + public function new(props) + { + super(props); + state = { orders : [], error : null, users:null }; + } + + override function componentDidMount() + { + + //request api avec user + distrib + HttpUtil.fetch("/api/order/get/"+props.userId, GET, {distributionId:props.distributionId,contractId:props.contractId}, PLAIN_TEXT) + .then(function(data:String) { + + var data : {orders:Array} = tink.Json.parse(data); + /*for( o in orders){ + //convert ints to enums, enums have been lost in json serialization + o.productUnit = Type.createEnumIndex(Unit, cast o.productUnit ); + }*/ + setState({orders:data.orders, error:null}); + + if(props.contractType==0) loadUsers(); + + }).catchError(function(data) { + var data = Std.string(data); + trace("Error",data); + if(data.substr(0,1)=="{"){ + //json error from server + var data : ErrorInfos = haxe.Json.parse(data); + setState( cast {error:data.error.message} ); + }else{ + //js error + setState( cast {error:data} ); + } + }); + } + + /** + * load user list when contract is constant orders + */ + function loadUsers(){ + HttpUtil.fetch("/api/user/getFromGroup/", GET, {}, PLAIN_TEXT) + .then(function(data:String) { + + var data : {users:Array} = tink.Json.parse(data); + setState({users:data.users, error:null}); + + }).catchError(function(data) { + + var data = Std.string(data); + if(data.substr(0,1)=="{"){ + //json error from server + var data : ErrorInfos = haxe.Json.parse(data); + setState( cast {error:data.error.message} ); + }else{ + //js error + setState( cast {error:data} ); + } + }); + } + + override public function render(){ + + //edit orders + + + var renderOrders = this.state.orders.map(function(o){ + var k :String = if(o.id!=null) { + Std.string(o.id); + } else { + o.productId+"-"+Std.random(99999); + }; + return jsx('<$Order key="$k" order="$o" onUpdate=$onUpdate parentBox=${this} />') ; + } ); + + + var delivery = if(props.date==null){ + null; + }else{ + jsx('

Pour la livraison du ${props.date} à ${props.place}

'); + } + + var renderOrderBox = function() return jsx(' +
+

Commandes de ${props.userName}

+ $delivery + <$Error error="${state.error}" /> +
+
+
Produit
+
Ref.
+
Prix
+
Qté
+
Payé
+
Alterné avec
+
+ ${renderOrders} +
+ + Valider + +   + <$Link className="btn btn-default" to="/insert"> Ajouter un produit +
+
+ '); + + + var onProductSelected = function(uo:UserOrder){ + + var existingOrder = Lambda.find(state.orders,function(x) return x.productId==uo.productId ); + if(existingOrder!=null){ + existingOrder.quantity += uo.quantity; + this.setState(this.state); + }else{ + this.state.orders.push(uo); + this.setState(this.state); + } + + }; + + + //insert product box + var renderInsertBox = function(){ + return jsx('<$InsertOrder contractId="${props.contractId}" userId="${props.userId}" distributionId="${props.distributionId}" onInsert=$onProductSelected/>'); + } + + return jsx('<$HashRouter> + <$Switch> + <$Route path="/" exact=$true render=$renderOrderBox /> + <$Route path="/insert" exact=$true render=$renderInsertBox /> + + '); + + } + + /** + * called when an order is updated + */ + function onUpdate(data:UserOrder){ + /*trace("ON UPDATE : " + data); + for ( o in state.orders){ + if (o.id == data.id) { + o.quantity = data.quantity; + o.paid = data.paid; + break; + } + } + setState(this.state);*/ + } + + /** + * submit updated orders to the API + */ + function onClick(?_){ + + var data = new Array<{id:Int,productId:Int,qt:Float,paid:Bool,invertSharedOrder:Bool,userId2:Int}>(); + for ( o in state.orders) data.push({id:o.id, productId : o.productId, qt: o.quantity, paid : o.paid, invertSharedOrder:o.invertSharedOrder, userId2:o.userId2}); + + var req = { orders:data }; + + var p = HttpUtil.fetch("/api/order/update/"+props.userId+"?distributionId="+props.distributionId+"&contractId="+props.contractId, POST, req, JSON); + p.then(function(data:Dynamic) { + + //WOOT + if (props.onValidate != null) props.onValidate(); + + }).catchError(function(data) { + var data = Std.string(data); + trace("Error",data); + if(data.substr(0,1)=="{"){ + //json error from server + var data : ErrorInfos = haxe.Json.parse(data); + setState( cast {error:data.error.message} ); + }else{ + //js error + setState( cast {error:data} ); + } + }); + + } + + function onKeyPress(e:js.html.KeyboardEvent){ + if(e.key=="Enter") onClick(); + } + + + +} \ No newline at end of file diff --git a/js/react/product/ComposerApp.hx b/js/react/product/ComposerApp.hx new file mode 100644 index 0000000..376b4db --- /dev/null +++ b/js/react/product/ComposerApp.hx @@ -0,0 +1,104 @@ +package react; + +import api.react.ReactMacro.jsx; +import js.html.InputElement; +import Common; + +typedef ComposerAppState = { + products:Array<{id:Int,name:String,qt:Float,unit:UnitType}> +} + +typedef ComposerAppRefs = { + pi:ProductInput, + productContainer:js.html.DivElement, + qt:InputElement, + unit:js.html.SelectElement, +} + +/** + * Composite product composer + * + */ +class ComposerApp extends ReactComponentOfStateAndRefs +{ + /*var products:Array<{id:Int,name:String,?qt:Float,?unit:UnitType}>; + + + public function new(props:Dynamic) + { + + super(props); + products = [{id:1,name:"pipo"},{id:2,name:"Loclac"}]; + } + + override public function render(){ + return jsx(' +
+ +
+ + + + + + + + + Ajouter + + + +
+ +
+ ${createChildren()} +
+ +
+ '); + + } + + function onChange(){ + + } + + function getUnits(){ + var out = []; + for ( c in Unit.createAll()){ + + out.push(jsx( '')); + + } + + return out; + } + + function createChildren() + { + + + return [for (p in products) jsx('')]; + } + + function addItem(){ + var text :String = refs.pi.refs.input.value; + if (text.length > 0) + { + trace("add " + text); + trace("qt " + this.refs.qt.value); + trace("unit " + this.refs.unit.selectedIndex); + + var qt = Std.parseFloat(this.refs.qt.value); + var unit = UnitType.createByIndex(this.refs.unit.selectedIndex); + var id = Std.random(999); + products.push( {id:id, name:text,qt:qt,unit:unit}); + + setState({products:[{id:id,name:text, qt:qt, unit:unit}]}); + //this.forceUpdate(); + } + }*/ + +} \ No newline at end of file diff --git a/js/react/product/Product.hx b/js/react/product/Product.hx new file mode 100644 index 0000000..8f62937 --- /dev/null +++ b/js/react/product/Product.hx @@ -0,0 +1,39 @@ +package react.product; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +/** + * A Product + * @author fbarbut + */ +class Product extends react.ReactComponentOfProps<{productInfo:ProductInfo}> +{ + + public function new(props) + { + super(props); + } + + override public function render(){ + var p :ProductInfo = props.productInfo; + + //convert int to enum + //p.unitType = Type.createEnumIndex(Common.Unit,cast p.unit); + + //var unit = ; + var imgStyle = {width:'64px',height:'64px','backgroundImage':'url("${p.image}")'}; + var divStyle = p.active ? {} : {opacity: 0.4}; + + return jsx('
+
+
+
+
+ ${p.name} ${p.qt} ${Formatting.unit(p.unitType)}
+ ${p.price} € +
+
'); + } + +} \ No newline at end of file diff --git a/js/react/product/ProductInput.hx b/js/react/product/ProductInput.hx new file mode 100644 index 0000000..ca8919e --- /dev/null +++ b/js/react/product/ProductInput.hx @@ -0,0 +1,168 @@ +package react.product; +import react.ReactDOM; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; +import react.Typeahead; + +typedef ProductInputProps = { + formName:String, + txpProductId:Int, + productName:String, +} +typedef ProductInputState = { + txpProductId:Int, + productName:String, + categoryId:Int, + breadcrumb:String, +} + + +/** + * Product Text Input with autocompletion + * + * @author fbarbut + */ +class ProductInput extends react.ReactComponentOfPropsAndState +{ + + public static var DICO : TxpDictionnary = null; + var options : Array<{id:Int,label:String}>; + + public function new(props:ProductInputProps) + { + super(props); + options = []; + this.state = { + txpProductId : props.txpProductId, + productName : props.productName, + categoryId : 0, + breadcrumb : "" + }; + + } + + override public function render(){ + var inputName :String = props.formName+"_name"; + var txpProductInputName :String = props.formName+"_txpProductId"; + + return jsx(' +
+ +
+ +
${state.breadcrumb}
+ + + +
+ +
+ +
+ +
+ '); + } + + /** + * Called when typing is stopped + * @param o + */ + function onSearch(o){ + //trace("on search : "+o); + } + + /** + * Each time a single letter change in the input + * @param input + */ + function onInputChange(input:String){ + trace('on input change $input'); + this.setState({productName:input}); + } + + /** + * Called when an item is selected in suggestions + */ + function onChange(selection:Array<{label:String,id:Int}>){ + + if (selection == null || selection.length == 0) return; + + trace("on change "+selection[0]); + + var product = Lambda.find(DICO.products, function(x) return x.id == selection[0].id); + setTaxo(product); + this.setState({productName:selection[0].label}); + } + + /** + * init typeahead auto-completion features when component is mounted + */ + override function componentDidMount(){ + + //get dictionnary + if (DICO == null){ + + var r = new haxe.Http("/product/getTaxo"); + r.onData = function(data){ + //load dico + DICO = haxe.Unserializer.run(data); + + for ( p in DICO.products){ + options.push({label:p.name,id:p.id}); + } + + //default values of input + if (props.txpProductId != null){ + var txp = Lambda.find(DICO.products, function(x) return x.id == props.txpProductId); + setTaxo(txp); + } + }; + r.request(); + } + } + + function setTaxo(txp:{id:Int, name:String, category:Int, subCategory:Int}){ + + if (txp == null) return; + + //trace(txp); + + this.setState({ + categoryId:txp.category, + txpProductId:txp.id, + breadcrumb:getBreadcrumb(txp)/*, + productName:product.name //do not override product name ! */ + }); + + this.refs.image.src="/img/taxo/cat"+txp.category+".png"; + } + + /** + * generate string like "fruits & vegetables / vegetables / carrots" + * @param name + */ + function getBreadcrumb(product){ + //cat + var str = DICO.categories.get(product.category).name; + if (product.subCategory != null){ + str += " / " + DICO.subCategories.get(product.subCategory).name; + } + str += " / " + product.name; + return str; + } + + + +} \ No newline at end of file diff --git a/js/react/product/ProductSelect.hx b/js/react/product/ProductSelect.hx new file mode 100644 index 0000000..98b3dc6 --- /dev/null +++ b/js/react/product/ProductSelect.hx @@ -0,0 +1,41 @@ +package react.product; +import react.ReactDOM; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; +import utils.HttpUtil; + +/** + * A Product selector + * @author fbarbut + */ +class ProductSelect extends react.ReactComponentOfPropsAndState<{onSelect:ProductInfo->Void,products:Array},{selected:Int}> +{ + + public function new(props) + { + super(props); + state = { selected : null }; + } + + override public function render(){ + + var products = props.products.map(function(info){ + //var selector = info.id==state.selected ? jsx(''):jsx('
<$Product productInfo=$info />
'); + return jsx('
+
<$Product productInfo=$info />
+
'); + }); + + return jsx('
${products}
'); + } + + function onClick(i:Int){ + this.setState(cast {selected:i}); + if(props.onSelect!=null){ + var p = Lambda.find(props.products,function(x) return x.id==i); + props.onSelect(p); + } + } + +} \ No newline at end of file diff --git a/js/react/store/Cart.hx b/js/react/store/Cart.hx new file mode 100644 index 0000000..eef8958 --- /dev/null +++ b/js/react/store/Cart.hx @@ -0,0 +1,103 @@ +package react.store; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +typedef CartProps = { + var order:OrderSimple; + var addToCart:ProductInfo -> Int -> Void; + var removeFromCart:ProductInfo -> ?Int -> Void; + var submitOrder:OrderSimple -> Void; +}; + +class Cart extends react.ReactComponentOfProps +{ + + function addToCart(product:ProductInfo, quantity:Int):Void { + props.addToCart(product, quantity); + } + + function removeFromCart(product:ProductInfo, quantity:Int):Void { + props.removeFromCart(product, quantity); + } + + function removeAllFromCart(product:ProductInfo):Void { + props.removeFromCart(product); + } + + function submitOrder():Void { + props.submitOrder(props.order); + } + + override public function render(){ + return jsx(' +
+

Ma Commande

+ ${renderProducts()} + ${renderFooter()} +
+ '); + } + + function renderProducts() { + var productsToOrder = props.order.products.map(function(product:ProductWithQuantity) { + var quantity = product.quantity; + var product = product.product; + + return jsx(' +
+
${product.name}
+
$quantity
+
+
+ + +
+
+ - +
+
+ x +
+
+
+ '); + }); + + return jsx(' +
+ ${productsToOrder} +
+ '); + } + + function renderFooter() { + var buttonClasses = ["order-button"]; + var submit = submitOrder; + + if (props.order.products.length == 0) { + buttonClasses.push("order-button--disabled"); + submit = null; + } + + return jsx(' +
+
+ Total +
${props.order.total} €
+
+
Commander
+
+ '); + } +} + + + + + diff --git a/js/react/store/Filters.hx b/js/react/store/Filters.hx new file mode 100644 index 0000000..63e7e43 --- /dev/null +++ b/js/react/store/Filters.hx @@ -0,0 +1,45 @@ +package react.store; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +using Lambda; + +typedef FiltersProps = { + var categories:Array; + var filters:Array; + var toggleFilter:String -> Void; +}; + +class Filters extends react.ReactComponentOfProps +{ + override public function render(){ + return jsx(' +
+

Filtres

+ ${renderFilters()} +
+ '); + } + + function renderFilters() { + return props.categories.map(function(category) { + var classNames = ["filter"]; + if (props.filters.has(category.name)) + classNames.push("active"); + + return jsx(' +
+ ${category.name} +
+ '); + }); + } +} + diff --git a/js/react/store/Product.hx b/js/react/store/Product.hx new file mode 100644 index 0000000..8cc4158 --- /dev/null +++ b/js/react/store/Product.hx @@ -0,0 +1,65 @@ +package react.store; + +import js.Browser.window; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +typedef ProductProps = { + var product:ProductInfo; + var addToCart:ProductInfo -> Int -> Void; +}; + +typedef ProductState = { + var quantity:Int; +}; + +class Product extends react.ReactComponentOfPropsAndState +{ + static inline var OVERLAY_URL = '/shop/productInfo'; + static inline var IMAGE_WIDTH = 120; + static inline var IMAGE_HEIGHT = 120; + + public function new() { + super(); + state = { + quantity: 1 + }; + } + + function openOverlay() { + untyped window._.overlay('$OVERLAY_URL/${props.product.id}', props.product.name); + } + + function updateQuantity(event:Dynamic) { + var quantity = Std.parseInt(event.target.value); + + if (Std.is(quantity, Int) && quantity > 0) + setState({ + quantity: Std.int(quantity) + }); + } + + function addToCart() { + props.addToCart(props.product, state.quantity); + } + + override public function render(){ + var product = props.product; + + return jsx(' +
+ {product.name} +
+ + ${product.name} + +
${product.price} €
+ +
Ajouter
+
+
+ '); + } +} + diff --git a/js/react/store/ProductList.hx b/js/react/store/ProductList.hx new file mode 100644 index 0000000..098bf93 --- /dev/null +++ b/js/react/store/ProductList.hx @@ -0,0 +1,73 @@ +package react.store; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +using Lambda; + +typedef ProductListProps = { + var categories:Array; + var productsBySubcategoryIdMap:Map>; + var filters:Array; + var addToCart:ProductInfo -> Int -> Void; +}; + +class ProductList extends react.ReactComponentOfProps +{ + override public function render(){ + return jsx(' +
+ ${renderCategories()} +
+ '); + } + + function renderCategories() { + return props.categories.map(function(category) { + if (!props.filters.has(category.name)) + return null; + + return jsx(' +
+

${category.name}

+
+ ${renderSubCategories(category)} +
+
+ '); + }); + } + + function renderSubCategories(category) { + var subCategories = category.subcategories.map(function(category) { + if (!props.productsBySubcategoryIdMap.exists(category.id)) + return jsx('
Loading...
'); + + var products = props.productsBySubcategoryIdMap.get(category.id); + + return jsx(' +
+

${category.name}

+
+ ${renderProducts(products)} +
+
+ '); + }); + + return jsx(' +
+ $subCategories +
+ '); + } + + function renderProducts(products) { + return products.map(function(product) { + return jsx(' + + '); + }); + } +} + diff --git a/js/react/store/Store.hx b/js/react/store/Store.hx new file mode 100644 index 0000000..e2a420c --- /dev/null +++ b/js/react/store/Store.hx @@ -0,0 +1,229 @@ +package react.store; +import react.ReactComponent; +import react.ReactMacro.jsx; +import haxe.Json; + +using Lambda; + +import Common; +import utils.CartUtils; +import utils.HttpUtil; + +typedef StoreProps = { + var place:Int; + var date:String; +}; + +typedef StoreState = { + var place:PlaceInfos; + var orderByEndDates:Array; + var categories:Array; + var productsBySubcategoryIdMap:Map>; + var order:OrderSimple; + var filters:Array; +}; + +class Store extends react.ReactComponentOfPropsAndState +{ + static inline var CATEGORY_URL = '/api/shop/categories'; + static inline var PRODUCT_URL = '/api/shop/products'; + static inline var INIT_URL = '/api/shop/init'; + static inline var VIEW_URL = '/place/view'; + + public function new() { + super(); + state = { + place: null, + orderByEndDates: [], + categories: [], + filters: [], + productsBySubcategoryIdMap: new Map(), + order: { + products: [], + total: 0 + } + }; + } + + override function componentDidMount() { + var categoriesRequest = HttpUtil.fetch(CATEGORY_URL, GET, {date: props.date, place: props.place}, JSON); + var initRequest = HttpUtil.fetch(INIT_URL, GET, {date: props.date, place: props.place}, JSON); + + initRequest.then(function(infos:Dynamic) { + setState({ + place: infos.place, + orderByEndDates: infos.orderEndDates + }); + }) + .catchError(function(error) { + trace("ERROR", error); + }); + + categoriesRequest.then(function(categories:Dynamic) { + var categories:Array = categories.categories; + var subCategories = []; + + for (category in categories) { + subCategories = subCategories.concat(category.subcategories); + } + + setState({ + categories: categories, + filters: categories.map(function(category) { + return category.name; + }) + }); + + subCategories.map(function(category:CategoryInfo) { + return HttpUtil.fetch(PRODUCT_URL, GET, {date: props.date, place: props.place, subcategory: category.id}, JSON) + .then(function(result) { + var productsBySubcategoryIdMapCopy = [ + for (key in state.productsBySubcategoryIdMap.keys()) + key => state.productsBySubcategoryIdMap.get(key) + ]; + productsBySubcategoryIdMapCopy.set(category.id, result.products); + + setState({ + productsBySubcategoryIdMap: productsBySubcategoryIdMapCopy + }); + }); + }); + }) + .catchError(function(error) { + trace("ERROR", error); + }); + } + + function toggleFilter(category:String) { + var filters = state.filters.copy(); + + if (state.filters.find(function(categoryInFilter) { + return category == categoryInFilter; + }) != null) + filters.remove(category); + else + filters.push(category); + + if (filters.length == 0) + filters = state.categories.map(function(category) { + return category.name; + }); + + setState({ + filters: filters + }); + } + + function addToCart(productToAdd:ProductInfo, quantity:Int):Void { + setState({ + order: CartUtils.addToCart(state.order, productToAdd, quantity) + }); + } + + function removeFromCart(productToRemove:ProductInfo, ?quantity:Int):Void { + setState({ + order: CartUtils.removeFromCart(state.order, productToRemove, quantity) + }); + } + + function submitOrder(order:OrderSimple) { + var orderInSession = { + total: order.total, + products: order.products.map(function(p:ProductWithQuantity){ + return { + productId: p.product.id, + quantity: p.quantity + }; + }) + } + trace('Order', orderInSession); + } + + override public function render(){ + return jsx(' +
+ ${renderHeader()} + + + +
+ '); + } + + function renderHeader() { + if (state.orderByEndDates == null || state.orderByEndDates.length == 0) + return null; + + var endDates; + + if (state.orderByEndDates.length == 1) { + var orderEndDate = state.orderByEndDates[0].date; + endDates = [jsx('
La commande fermera le $orderEndDate
')]; + } + else { + endDates = state.orderByEndDates.map(function(order) { + if (order.contracts.length == 1) + return jsx(' +
+ La commande ${order.contracts[0]} fermera le: ${order.date} +
+ '); + + return jsx(' +
+ Les autres commandes fermeront: ${order.date} +
+ '); + }); + } + + var viewUrl = '$VIEW_URL/${props.place}'; + var addressBlock = Lambda.array([ + state.place.address1, + state.place.address2, + [state.place.zipCode, state.place.city].join(" "), + ].mapi(function(index, element) { + if (element == null) + return null; + return jsx('
$element
'); + })); + + return jsx(' +
+
+
+ Distribution le ${props.date} +
+ +
+ $endDates +
+
+
+ + + ${state.place.name} + +
+ $addressBlock +
+
+
+ '); + } +} + diff --git a/js/react/user/LoginBox.hx b/js/react/user/LoginBox.hx new file mode 100644 index 0000000..0db3a9f --- /dev/null +++ b/js/react/user/LoginBox.hx @@ -0,0 +1,139 @@ +package react.user; +import react.ReactComponent; +import react.ReactMacro.jsx; +import Common; + +typedef LoginBoxProps = { + redirectUrl:String, + message:String, + ?phoneRequired:Bool +} + +typedef LoginBoxState = { + email:String, + password:String, + error:String +} + +/** + * Login Box + * @author fbarbut + */ +class LoginBox extends react.ReactComponentOfPropsAndState +{ + + public function new(props:LoginBoxProps) + { + if (props.redirectUrl == null) props.redirectUrl = "/"; + if (props.message == "") props.message = null; + super(props); + this.state = {email:"", password:"", error:null}; + } + + function setError(err:String){ + this.setState(cast {error:err}); + } + + override public function render(){ + + return jsx('
+ <$Error error="${state.error}" /> + <$Message message="${props.message}" /> +
+
+ +
+ +
+
+
+ +
+ +
+
+

+ S\'identifier +
+
+ Mot de passe oublié ? +

+
+ +
'); + } + + /** + * @doc https://facebook.github.io/react/docs/forms.html + */ + function onChange(e:js.html.Event){ + e.preventDefault(); + + var name :String = untyped e.target.name; + var value :String = untyped /*(e.target.value == "") ? null :*/ e.target.value; + Reflect.setField(state, name, value); + this.setState(this.state); + } + + /** + * displays a registerBox + */ + public function registerBox(){ + + var body = js.Browser.document.querySelector('#myModal .modal-body'); + ReactDOM.unmountComponentAtNode( body ); + + js.Browser.document.querySelector("#myModal .modal-title").innerHTML = "Inscription"; + ReactDOM.render(jsx('<$RegisterBox redirectUrl="${props.redirectUrl}" phoneRequired="${props.phoneRequired}"/>'), body ); + } + + public function submit(?e:js.html.Event){ + + if (state.email == ""){ + setError("Veuillez saisir votre email"); + return; + } + if (state.password == ""){ + setError("Veuillez saisir votre mot de passe"); + return; + } + + //lock button + var el: js.html.Element = null; + if(e!=null){ + el = cast e.target; + el.classList.add("disabled"); + } + + + var req = new haxe.Http("/api/user/login"); + req.addParameter("email", state.email); + req.addParameter("password", state.password); + req.addParameter("redirecturl", props.redirectUrl); + + req.onData = req.onError = function(d){ + + var d = req.responseData; + + if(e!=null) el.classList.remove("disabled"); + + var d = haxe.Json.parse(d); + if (Reflect.hasField(d, "error")) setError(d.error.message); + if (Reflect.hasField(d, "success")) js.Browser.window.location.href = props.redirectUrl; + } + req.request(true); + } + + function onKeyPress(e:js.html.KeyboardEvent){ + if(e.key=="Enter") submit(); + } + + + +} \ No newline at end of file diff --git a/js/react/user/RegisterBox.hx b/js/react/user/RegisterBox.hx new file mode 100644 index 0000000..1be1a4e --- /dev/null +++ b/js/react/user/RegisterBox.hx @@ -0,0 +1,165 @@ +package react.user; +import react.ReactDOM; +import react.ReactComponent; +import react.ReactMacro.jsx; + +typedef RegisterBoxState = {firstName:String, lastName:String, email:String, password:String, error:String, phone:String}; +typedef RegisterBoxProps = {redirectUrl:String,message:String,phoneRequired:Bool}; + + +/** + * Registration box ( sign up ) + * @author fbarbut + */ +class RegisterBox extends react.ReactComponentOfPropsAndState +{ + + + public function new(props:RegisterBoxProps) + { + if (props.redirectUrl == null) props.redirectUrl = "/"; + super(props); + this.state = {firstName:"",lastName:"",email:"",password:"",error:null,phone:""}; + } + + + override public function render(){ + + //tips for conditionnal rendering : https://github.com/massiveinteractive/haxe-react#gotchas + var phone = null; + if (props.phoneRequired){ + phone = jsx('
+ +
+ +
+
'); + } + + return jsx(' +
+ <$Error error="${state.error}" /> + <$Message message="${props.message}" /> +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + ${phone} + +
+ +
+ +
+
+

+ Inscription +

+
+
+

+ Déjà inscrit ? + Connectez-vous ici +

+
+ + '); + } + + /** + * @doc https://facebook.github.io/react/docs/forms.html + */ + function onChange(e:js.html.Event){ + + e.preventDefault(); + var name :String = untyped e.target.name; + var value :String = untyped e.target.value; + //trace('onChange : $name = $value'); + Reflect.setField(state, name, value); + this.setState(this.state); + } + + /** + * displays a login box + */ + public function loginBox(){ + + var body = js.Browser.document.querySelector('#myModal .modal-body'); + ReactDOM.unmountComponentAtNode( body ); + + js.Browser.document.querySelector("#myModal .modal-title").innerHTML = "Connexion"; + ReactDOM.render(jsx('<$LoginBox redirectUrl="${props.redirectUrl}" />'), body ); + } + + + public function submit(e:js.html.Event ){ + + if (state.email == ""){ + setError("Veuillez saisir votre email"); + return; + } + + if (state.password == ""){ + setError("Veuillez saisir un mot de passe"); + return; + } + + if (state.firstName == ""){ + setError("Veuillez saisir votre prénom"); + return; + } + + if (state.lastName == ""){ + setError("Veuillez saisir votre nom de famille"); + return; + } + + if (state.phone == "" && props.phoneRequired){ + setError("Veuillez saisir votre numéro de téléphone"); + return; + } + + //lock button + var el : js.html.Element = cast e.target; + el.classList.add("disabled"); + + var req = new haxe.Http("/api/user/register"); + req.addParameter("firstName", state.firstName); + req.addParameter("lastName", state.lastName); + req.addParameter("email", state.email); + req.addParameter("password", state.password); + req.addParameter("redirecturl", props.redirectUrl); + if(props.phoneRequired) req.addParameter("phone", state.phone); + + req.onData = req.onError = function(d){ + var d = req.responseData; + el.classList.remove("disabled"); + var d = haxe.Json.parse(d); + if (Reflect.hasField(d, "error")) setError(d.error.message); + if (Reflect.hasField(d, "success")) js.Browser.window.location.href = props.redirectUrl; + } + + req.request(true); + } + + function setError(err:String){ + this.setState(cast {error:err}); + } + +} \ No newline at end of file diff --git a/js/test/TestAll.hx b/js/test/TestAll.hx new file mode 100644 index 0000000..c7cab2a --- /dev/null +++ b/js/test/TestAll.hx @@ -0,0 +1,20 @@ +package test; + +import js.Browser; +import utest.Runner; +import utest.ui.Report; +import test.utils.TestCartUtils; + +class TestAll +{ + public static function main() + { + var runner = new Runner(); + + // Utils + runner.addCase(new TestCartUtils()); + + Report.create(runner); + runner.run(); + } +} diff --git a/js/test/mocks.json b/js/test/mocks.json new file mode 100644 index 0000000..5aac6b5 --- /dev/null +++ b/js/test/mocks.json @@ -0,0 +1,44 @@ +[ + { + "contractTaxName": null, + "desc": "Des grattons fait avec du cochon gascon, élevé en plein air et selon les préceptes de l'agriculture biologique. Meilleur que des rillettes!", + "vatValue": 0.234597156398104, + "price": 4.5, + "name": "Gratton de porc noir", + "type": 0, + "contractTax": null, + "contractId": 4672, + "orderable": true, + "hasFloatQt": false, + "id": 56610, + "qt": 190, + "unitType": 2, + "ref": "GRA-1", + "vat": 5.5, + "categories": null, + "stock": null, + "organic": false, + "image": "/img/taxo/cat10.png" + }, + { + "contractTaxName": null, + "desc": "Un pâté savoureux qui se mange sans modération! Date de péremption : 1 Avril 2019 Lot : L16AV01P Poids : 200gr Ingrédients : Viande de porc issue de l’agriculture biologique, Sel, Poivre", + "vatValue": 0.297156398104265, + "price": 5.7, + "name": "Pâté de porc noir", + "type": 0, + "contractTax": null, + "contractId": 4672, + "orderable": true, + "hasFloatQt": false, + "id": 56611, + "qt": 1, + "unitType": 0, + "ref": "PAPN-1", + "vat": 5.5, + "categories": null, + "stock": null, + "organic": false, + "image": "/file/2521_6a77c954191e5a2d8cd5a5d8cade4f6b.PNG" + } +] diff --git a/js/test/utils/TestCartUtils.hx b/js/test/utils/TestCartUtils.hx new file mode 100644 index 0000000..08f62e3 --- /dev/null +++ b/js/test/utils/TestCartUtils.hx @@ -0,0 +1,58 @@ +package test.utils; + +import sys.io.File.getContent; +import haxe.Json.parse; +import utest.Assert; +import utils.CartUtils; +import Common; + +class TestCartUtils +{ + static var products:Array; + public function new() { + var http = new haxe.Http("localhost/js/test/mocks.json?format=json"); + + products = parse(getContent("js/test/mocks.json")); + } + + public function testAddToCart() + { + var order = { + products: [{ + product: products[0], + quantity: 1 + }], + total: products[0].price + }; + + var newProduct = products[1]; + + order = CartUtils.addToCart(order, newProduct, 1); + Assert.equals(order.products.length, 2); + Assert.equals(order.total, products[0].price + products[1].price); + order = CartUtils.addToCart(order, newProduct, 3); + Assert.equals(order.products[1].quantity, 4); + Assert.equals(order.total, products[0].price + 4 * products[1].price); + } + + public function testRemoveFromCart() + { + var order = { + products: [{ + product: products[0], + quantity: 5 + }, { + product: products[1], + quantity: 3 + }], + total: 5 * products[0].price + 3 * products[1].price + }; + + order = CartUtils.removeFromCart(order, products[0], 2); + Assert.equals(order.products[0].quantity, 3); + Assert.equals(order.total, 3 * products[0].price + 3 * products[1].price); + order = CartUtils.removeFromCart(order, products[1]); + Assert.equals(order.products.length, 1); + Assert.equals(order.total, 3 * products[0].price); + } +} diff --git a/js/utils/CartUtils.hx b/js/utils/CartUtils.hx new file mode 100644 index 0000000..71f744d --- /dev/null +++ b/js/utils/CartUtils.hx @@ -0,0 +1,64 @@ +package utils; + +import Math; +using Lambda; + +import Common; + +class CartUtils { + public static function addToCart(order:OrderSimple, productToAdd:ProductInfo, quantity:Int):OrderSimple { + var products = order.products.copy(); + var total = order.total; + + var existingProduct = products.find(function(p) { + return p.product.id == productToAdd.id; + }); + + if (existingProduct == null) + products.push({ + product: productToAdd, + quantity: quantity + }); + else + existingProduct.quantity += quantity; + + total += quantity * productToAdd.price; + total = Math.round(total * 100) / 100; // to avoid calculation errors + + return { + products: products, + total: total + }; + } + + public static function removeFromCart(order:OrderSimple, productToRemove:ProductInfo, ?quantity:Int):OrderSimple { + var products = order.products.copy(); + var total = order.total; + + var existingProduct = products.find(function(p) { + return p.product.id == productToRemove.id; + }); + + if (quantity == null) + quantity = existingProduct.quantity; + + if (existingProduct == null) + throw "Can't remove a non existing product"; + else if (quantity >= existingProduct.quantity) + products.remove(existingProduct) + else + existingProduct.quantity -= quantity; + + if (products.length == 0) + total = 0; + else { + total -= Math.min(quantity, existingProduct.quantity) * productToRemove.price; + total = Math.round(total * 100) / 100; // to avoid calculation errors + } + + return { + products: products, + total: total + }; + } +} diff --git a/js/utils/HttpUtil.hx b/js/utils/HttpUtil.hx new file mode 100644 index 0000000..3851fdb --- /dev/null +++ b/js/utils/HttpUtil.hx @@ -0,0 +1,115 @@ +package utils; + +import haxe.Json; +import js.Promise; +import js.html.XMLHttpRequest; + +@:enum abstract HttpMethod(String) to String { + var POST = 'POST'; + var GET = 'GET'; + var HEAD = 'HEAD'; + var PUT = 'PUT'; + var DELETE = 'DELETE'; + var TRACE = 'TRACE'; + var OPTIONS = 'OPTIONS'; + var CONNECT = 'CONNECT'; + var PATCH = 'GET'; +} + +@:enum abstract FetchFormat(String) from String to String { + var PLAIN_TEXT = "text/plain"; + var JSON = "application/json"; +} + +//json version of a tink.core.Error +typedef ErrorInfos = {error:{code:Int,message:String,stack:String}} + +/** + * Manage HTTP request to a REST API. + * + * POST requests can only have a single JSON object (payload) + */ +class HttpUtil +{ + static public function fetch( + url: String, + ?method: HttpMethod = GET, + ?params: Dynamic = null, + ?accept: FetchFormat = PLAIN_TEXT, + ?contentType: String = JSON + ): Promise { + + return new Promise(function(resolve: Dynamic->Void, reject) { + var data: String = null; + if (params != null) + { + if (params.body != null){ + data = Json.stringify(params.body); + } else if(method==POST) { + data = Json.stringify(params); + } else { + url += (url.indexOf('?') > -1) ? '&' : '?'; + url += objToString(params); + } + } + + var http = new XMLHttpRequest(); + http.open(method, url, true); + + if (contentType != null && contentType.length > 0) + http.setRequestHeader("Content-type", contentType); + + if (accept != null) + http.setRequestHeader("Accept", accept); + + http.onreadystatechange = function() { + //trace("readystate",http.readyState, http.status); + if (http.readyState == 4){ + switch (http.status){ + case 200: + switch (accept){ + case JSON: + try { + var json = Json.parse(http.responseText); + resolve(json); + } catch (err: Dynamic){ + reject(err); + } + default: + resolve(http.responseText); + } + + case 204: + resolve(true); + + default: + reject(http.responseText); + } + } + }; + + http.send(data); + }); + } + + static public function objToString(obj: Dynamic): String + { + var str = ""; + var cpt = 0; + for (key in Reflect.fields(obj)) + { + var value: Dynamic = Reflect.field(obj, key); + if (value == null) continue; + + if (cpt++ > 0) + str += "&"; + + if (Std.is(value, Array) && value.length > 0) + str += '$key=${value.join(";")}'; + else if (Std.string(value) != "") // String / Int / Float + str += '$key=${StringTools.trim(Std.string(value))}'; + } + return str; + } + +} diff --git a/lang/de/tmp/README.md b/lang/de/tmp/README.md new file mode 100644 index 0000000..246660c --- /dev/null +++ b/lang/de/tmp/README.md @@ -0,0 +1 @@ +This is where the compiled templates are. \ No newline at end of file diff --git a/lang/en/tmp/README.md b/lang/en/tmp/README.md new file mode 100644 index 0000000..246660c --- /dev/null +++ b/lang/en/tmp/README.md @@ -0,0 +1 @@ +This is where the compiled templates are. \ No newline at end of file diff --git a/lang/master/tmp/README.md b/lang/master/tmp/README.md new file mode 100644 index 0000000..246660c --- /dev/null +++ b/lang/master/tmp/README.md @@ -0,0 +1 @@ +This is where the compiled templates are. \ No newline at end of file diff --git a/lang/master/tpl/account/payments.mtt b/lang/master/tpl/account/payments.mtt new file mode 100644 index 0000000..41674f9 --- /dev/null +++ b/lang/master/tpl/account/payments.mtt @@ -0,0 +1,105 @@ +::use 'design.mtt':: + +
+

Coordonnées

+
+ +
::member.firstName:: ::member.lastName:: + ::if member.firstName2!=null && member.lastName2!=null:: + & ::member.firstName2:: ::member.lastName2:: + + ::end::
+ + $$nullSafe(::member.address1::)
+ $$nullSafe(::member.address2::)
+ $$nullSafe(::member.zipCode::) + $$nullSafe(::member.city::)
+
+ + ::if member.phone!=null:: + Tel : ::member.phone::
+ ::end:: + + ::if member.email!=null:: + E-mail : ::member.email::
+ ::end:: + + ::if member.email2!=null:: + E-mail : ::member.email2::
+ ::end:: + + +
+ +
+ +
+

::_("Payments")::

+
+ + + + + + + ::if balance<0:: + ::set color = "C00":: + ::else:: + ::set color = "0C0":: + ::end:: + + + + + + ::foreach t rb.current():: + + $$operation(::t::) + + ::end:: + + + + + +
::_("Balance"):: : + ::if balance<0:: + - + ::end:: + + ::Math.abs(balance):: ::currency():: + +
+
    + ::if rb.paginationStartPage != 1:: +
  • + + + +
  • + ::end:: + ::foreach i loopList(rb.paginationStartPage,rb.paginationEndPage):: + ::if rb.page==i:: +
  • ::i::
  • + ::else:: +
  • ::i::
  • + ::end:: + ::end:: + ::if rb.paginationEndPage < rb.pages + 1:: +
  • + + + +
  • + ::end:: +
+
+ + +
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/admin/cssDemo.mtt b/lang/master/tpl/admin/cssDemo.mtt new file mode 100644 index 0000000..0496fac --- /dev/null +++ b/lang/master/tpl/admin/cssDemo.mtt @@ -0,0 +1,53 @@ +::use 'admin/design.mtt':: + +
+
+
+

H1 Title

+

H2 Title

+

H3 Title

+

H4 Title

+
+
+ +
+
+

+ Titre H2 +

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Donec ullamcorper venenatis augue, vitae tempor quam viverra at. + Sed faucibus ipsum sit amet turpis consectetur finibus. Nulla facilisi. + Vivamus consequat vestibulum blandit. Nunc laoreet tellus ac lorem commodo hendrerit. +

+

+ Nulla gravida, libero et scelerisque convallis, nibh nisi ultrices nulla, sed faucibus sapien augue et turpis. + Nunc quis tempor dolor. Duis elementum nisl eu dolor malesuada convallis. + Sed id tellus euismod, eleifend neque ac, iaculis odio. Cras euismod odio quis elit elementum rhoncus. + Mauris in elementum ex, ut scelerisque leo. Suspendisse viverra mi non neque vulputate, in fermentum sapien sodales. + Sed in laoreet ante. Suspendisse non velit sit amet lectus consequat ornare sit amet quis ipsum. +

+ + +
+ Nulla gravida, libero et scelerisque convallis, nibh nisi ultrices nulla, sed faucibus sapien augue et turpis. + Nunc quis tempor dolor. Duis elementum nisl eu dolor malesuada convallis. +
+ Big Button + Big Button +
+ +
+
+
+ +
+
+
Panel heading without title
+
+ Panel content +
+
+
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/admin/default.mtt b/lang/master/tpl/admin/default.mtt new file mode 100644 index 0000000..4be3e8d --- /dev/null +++ b/lang/master/tpl/admin/default.mtt @@ -0,0 +1,10 @@ +::use 'admin/design.mtt':: + + +

Console d'administration de Cagette.net

+

+ ::hDate(now):: +

+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/admin/design.mtt b/lang/master/tpl/admin/design.mtt new file mode 100644 index 0000000..39d894d --- /dev/null +++ b/lang/master/tpl/admin/design.mtt @@ -0,0 +1,36 @@ +::use 'design.mtt':: +
+ +
+ + + + +
+ + +
+ +
+
+ ::raw __content__:: +
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/admin/emails.mtt b/lang/master/tpl/admin/emails.mtt new file mode 100644 index 0000000..1b30cc3 --- /dev/null +++ b/lang/master/tpl/admin/emails.mtt @@ -0,0 +1,50 @@ +::use 'admin/design.mtt':: +
+
+

Emails

+ +

::_("Emails are temporarily stored in a buffer, waiting to be sent by the cron")::

+

+

::num:: unsent emails

+

+ + ::set url = "/admin/emails":: + + $$browse(::browser::,::url::) + + + + + + + + + + + + + + ::if(e.tries==0):: + + ::else:: + + ::end:: + + + + + +
iddatetriestitlehtmlstatus
::e.id::::e.cdate::::e.tries::::e.tries::::e.title:: + ::if e.htmlBody != null:: + [show] +
+ ::raw e.htmlBody:: +
+ ::end:: +
::e.rawStatus::
+ + $$browse(::browser::,::url::) +
+
+::end:: + diff --git a/lang/master/tpl/admin/errors.mtt b/lang/master/tpl/admin/errors.mtt new file mode 100644 index 0000000..764b5b3 --- /dev/null +++ b/lang/master/tpl/admin/errors.mtt @@ -0,0 +1,100 @@ +::use 'admin/design.mtt':: +
+
+

Errors

+ +
+
+ User : +
+ + Error : +
+ + +
+
+ +
+ Date serveur : ::now::
+ + Vider la table + +
+ + + + + [No canvas support] + + + ::set url = "/admin/errors":: + + $$browse(::browser::,::url::) + + + + + + + + + + + + + + ::set e = r.error.split('Called'):: + + + + + +
iddateErrorinfosuser idURL
::r.id::::r.date:: + ::e.shift():: + ::if e.length > 0:: + [stack] +
+
Called::e.join("Called")::
+
+ ::end:: +
+ [infos] +
+ IP: ::r.ip::
+ User-Agent: ::r.userAgent:: +
+
+ + ::r._user.getName():: + + ::r.url::
+ $$browse(::browser::,::url::) +
+
+::end:: + diff --git a/lang/master/tpl/admin/graph.mtt b/lang/master/tpl/admin/graph.mtt new file mode 100644 index 0000000..3108f32 --- /dev/null +++ b/lang/master/tpl/admin/graph.mtt @@ -0,0 +1,56 @@ +::use 'admin/design.mtt':: + + +

::key::

+

+ Du ::hDate(from):: au ::hDate(to)::
+ Total : ::total::
+ Moyenne : ::averageValue:: + +

+

+ + + [No canvas support] + + +

+

+ + + ::foreach d data:: + + + + + ::end:: +
::hDate(d.date)::::d.value::
+ +

+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/admin/plugins/default.mtt b/lang/master/tpl/admin/plugins/default.mtt new file mode 100644 index 0000000..3f81e2d --- /dev/null +++ b/lang/master/tpl/admin/plugins/default.mtt @@ -0,0 +1,33 @@ +::use 'admin/design.mtt':: + +

Plugins

+

+ L'installation des plugins se fait sur la machine de développement. +

+ + + +::foreach p plugins:: + + + + + + + + + +::end:: + +
NomInstallé
::p.name:: + ::set i = p.isInstalled():: + $$bool(::i::) + + ::if i==false:: + Installer + ::end:: + + +
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/admin/taxo.mtt b/lang/master/tpl/admin/taxo.mtt new file mode 100644 index 0000000..e8146cf --- /dev/null +++ b/lang/master/tpl/admin/taxo.mtt @@ -0,0 +1,31 @@ +::use 'admin/design.mtt':: + +

Dictionnaire de produits

+ +

+ Cagette.net inclut maintenant un dictionnaire de produits qui permet d'identifier + facilement les produits que vous saisissez. +

+ +
+ + ::foreach c categ:: + + + +

#::c.id:: ::c.name::

+ ::foreach sc c.getSubCategories():: +

+ ::sc.name:: +
+ ::foreach p sc.getProducts():: + ::p.name::, + ::end:: + +

+ ::end:: + ::end:: + + +::end:: + diff --git a/lang/master/tpl/amap/default.mtt b/lang/master/tpl/amap/default.mtt new file mode 100644 index 0000000..bf83a83 --- /dev/null +++ b/lang/master/tpl/amap/default.mtt @@ -0,0 +1,78 @@ +::use 'design.mtt':: + + +
+ +
+ +

+ ::user._amap.name:: +

+ + ::if user._amap._image!=null:: + ::if user._amap.extUrl!=null && user._amap.extUrl!="":: +
+ ::else:: +
+ ::end:: + ::end:: + + ::raw nl2br(user.getAmap().txtIntro):: +
+ ::if user.isAmapManager():: + $$edit(::_("Edit")::,amap/edit) + ::end:: + +
+ +
+ ::_("Main contact"):: :
+ $$contact(::user.getAmap()._contact::) +
+ +
+ +
+
+ + ::foreach c contracts:: +
+
+
+
+
+

+ ::c._vendor.name::
+ ::c._vendor.city:: (::c._vendor.zipCode::) +

+
+ +
+

::c.name::

+ +
+ ::foreach p c.getProductsPreview(5):: +
+ ::end:: +
+ +
+ +
+ ::if c._contact!=null:: + ::_("Coordinator"):: : +
+ $$contact(::c._contact::) + ::end:: +
+ +
+
+
+ ::end:: + + +
+
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/amapadmin/addimage.mtt b/lang/master/tpl/amapadmin/addimage.mtt new file mode 100644 index 0000000..84c1800 --- /dev/null +++ b/lang/master/tpl/amapadmin/addimage.mtt @@ -0,0 +1,32 @@ +::use 'amapadmin/design.mtt':: + + +

::_("Choose a logo")::

+ + +
+ +
+
+ + +
+ ::_("Format : JPG, GIF or PNG")::
+
+ + +
+
+ +
+ +
+ + +
+ +
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/amapadmin/default.mtt b/lang/master/tpl/amapadmin/default.mtt new file mode 100644 index 0000000..276cf06 --- /dev/null +++ b/lang/master/tpl/amapadmin/default.mtt @@ -0,0 +1,50 @@ +::use 'amapadmin/design.mtt':: + +

::user._amap.name::

+ +
+ +
+

+ ::membersNum:: ::_("members")::.
+ ::contractsNum:: ::_("contracts in progress")::.
+ +


+ + $$edit(::_("Edit properties")::,/amap/edit) + +  ::_("Choose a logo"):: +

+ +
+ +

+ ::raw _("Your group has a public page, You can use it as a micro-website.
Copy-paste the address of this page and share it !"):: +
+

+ + +

+ + http://::HOST::/group/::user._amap.id:: + +

+ +

+   ::_("Display"):: +

+ + +
+ +
+ + ::if user._amap._image!=null:: + + ::end:: +
+ +
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/amapadmin/design.mtt b/lang/master/tpl/amapadmin/design.mtt new file mode 100644 index 0000000..db4da2b --- /dev/null +++ b/lang/master/tpl/amapadmin/design.mtt @@ -0,0 +1,39 @@ +::use 'design.mtt':: +
+ +
+ + + + +
+ +
+ + +
+
+ ::raw __content__:: +
+ + + + +
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/amapadmin/rights.mtt b/lang/master/tpl/amapadmin/rights.mtt new file mode 100644 index 0000000..f116f99 --- /dev/null +++ b/lang/master/tpl/amapadmin/rights.mtt @@ -0,0 +1,40 @@ +::use 'amapadmin/design.mtt':: + +

::_("Management of rights and access")::

+ + $$insert(::_("Add a right")::,/amapadmin/editRight) + + + + + + + + + ::foreach u users:: + + + + + + + + + + ::end:: +
::_("Name")::::_("Rights")::::_("Actions")::
+ ::u._user.getName():: + +
    + ::foreach r u._rights:: +
  • ::u.getRightName(r)::
  • + ::end:: +
+
+ $$insert(::_("Modify")::,/amapadmin/editRight/::u.userId::) +
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/base.mtt b/lang/master/tpl/base.mtt new file mode 100644 index 0000000..b0af0c9 --- /dev/null +++ b/lang/master/tpl/base.mtt @@ -0,0 +1,129 @@ + + + + + + + ::if pageTitle!=null:: + ::pageTitle:: + ::else:: + ::NAME:: + ::end:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ::if container==null:: ::set container="container":: ::end:: + + + ::if DEBUG:: +
DEBUG ::session.lang::
+ ::end:: + + ::if HOST.substr(0,3)=="pp.":: +
PREPROD
+ ::end:: + + + + + ::raw __content__:: + + + + + diff --git a/lang/master/tpl/block/modal.mtt b/lang/master/tpl/block/modal.mtt new file mode 100644 index 0000000..de3cd10 --- /dev/null +++ b/lang/master/tpl/block/modal.mtt @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/lang/master/tpl/blocks/user.mtt_removeme b/lang/master/tpl/blocks/user.mtt_removeme new file mode 100644 index 0000000..ba3c5fe --- /dev/null +++ b/lang/master/tpl/blocks/user.mtt_removeme @@ -0,0 +1,12 @@ +
+ ::if user!=null:: + ::_("Hello"):: ::user.getName()::
+ + ::_("Log out"):: + ::else:: + + ::raw _("You already have an account?
+ Click here to log in")::
+ ::_("Log in"):: + ::end:: +
\ No newline at end of file diff --git a/lang/master/tpl/categories/default.mtt b/lang/master/tpl/categories/default.mtt new file mode 100644 index 0000000..d732963 --- /dev/null +++ b/lang/master/tpl/categories/default.mtt @@ -0,0 +1,48 @@ +::use 'amapadmin/design.mtt':: + +

::_("Categories")::

+ +

+ ::raw _("Categories allow to sort your products per category, for example \"vegetables, meet, backery, etc.\"
It is possible to create many groups of categories in order to sort products as we wish."):: +

+

+ ::_("You currently have no category. Would you like to create the list of categories by default ?"):: + ::_("Create the list of default categories"):: +

+ +::foreach g groups:: + + + + + + + ::foreach c g.getCategories():: + + + + + + ::end:: + + + + + +
+ Groupe "::g.name::" + + ::_("Modify group"):: + ::_("Remove group"):: +
+ ::c.name:: + + ::_("Modify"):: + ::_("Remove"):: +
+ ::_("Add a category in this group"):: +
+::end:: + +::_("Add a group"):: +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contract/default.mtt b/lang/master/tpl/contract/default.mtt new file mode 100644 index 0000000..0e192fc --- /dev/null +++ b/lang/master/tpl/contract/default.mtt @@ -0,0 +1,260 @@ +::use 'design.mtt':: +
+

::_("Last orders")::

+ + ::if constOrders.length>0:: +
+ + + +

::_("CSA Contracts")::

+ + ::foreach c constOrders:: + +

::c.contract.name::

+ + + + + + + + + + + ::set total = 0:: + ::foreach m c.orders:: + + + + + + + + + + + ::end:: + + + + +
::_("Qty||short version for quantity")::::_("Product")::::_("U.P||short version of price per unit")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Paid")::
+ ::raw m.smartQt:: + + + + ::m.productName:: + + ::if m.userName2 != null:: +
::_("Order alternated with"):: + ::if user.id == m.userId:: + ::m.userName2:: + ::else:: + ::m.userName:: + ::end:: + ::end:: + +
+ ::formatNum(m.productPrice):: ::currency():: + + ::formatNum(m.subTotal):: ::currency():: + + + ::if m.percentageValue!=null:: + + ::formatNum(m.fees):: ::currency():: + + ::end:: + + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: + + ::if m.paid==true:: + ::_("Paid"):: + ::else:: + ::_("Unpaid"):: + ::end:: +
+ Total : + ::formatNum(total):: ::currency():: + + ::set d = c.contract.getDistribs(false,null).length:: + ( soit ::formatNum(d*total):: ::currency():: pour ::d:: livraisons ) +
+ ::end:: + +
+ ::end:: + + + ::if count(varOrders)>0:: +
+ + ::foreach d varOrders:: +

::_("Order delivered on"):: ::hDate(d.date)::

+ + + + + + + + + + + ::set total = 0:: + ::foreach o d.orders:: + + + + + + + + + + + ::end:: + + + + + +
::_("Qty||short version for quantity")::::_("Product")::::_("U.P||short version of price per unit")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Paid")::
+ ::raw o.smartQt:: + + + + ::o.productName:: + + + ::formatNum(o.productPrice):: ::currency():: + + ::formatNum(o.subTotal):: ::currency():: + + $$nullSafe(::formatNum(o.fees)::) + + ::formatNum(o.total):: ::currency():: + ::set total = total + o.total:: + + ::if o.paid==true:: + ::_("Paid"):: + ::else:: + ::_("Unpaid"):: + ::end:: +
+ ::if !user._amap.hasPayments():: + $$edit(Modifier cette commande,/contract/editOrderByDate/::d.date::) + ::end:: + + TOTAL::formatNum(total):: ::currency()::
+ ::end:: +
+ ::end:: + + +
+
+

::_("Profile")::

+
+ +

+ $$contact(::user::) +

+ + + + + $$edit(::_("Edit")::,/account/edit) + +
+ + ::if user.getAmap().hasPayments():: +

::_("Payments")::

+
+ + ::_("Balance"):: : + ::if userAmap.balance<0:: + ::set color = "C00":: + ::else:: + ::set color = "0C0":: + ::end:: + + ::userAmap.balance:: ::currency():: + + + + + + + ::_("Payments details"):: + + +
+ ::end:: + + + ::if user.isAmapManager():: +

::_("Tutorials")::

+
+ + + ::foreach t tutos:: + + + + + ::end:: + +
::t.name:: + ::if t.completion==null:: + + ::_("Start"):: + + ::else:: + + + ::_("Stop"):: + + ::end:: +
+ + ::if stopTuto:: +
+ + ::end:: +
+ ::end:: + +

::_("Language")::

+
+ ::_("Display the interface in another language"):: (beta) + : +
    + + ::raw langLinks:: + +
+

+ ::_("Current language is"):: + + ::langText:: + +

+
+ +
+ + +::end:: diff --git a/lang/master/tpl/contract/insertChoose.mtt b/lang/master/tpl/contract/insertChoose.mtt new file mode 100644 index 0000000..27451e8 --- /dev/null +++ b/lang/master/tpl/contract/insertChoose.mtt @@ -0,0 +1,37 @@ +::use 'design.mtt':: + +

::_("Choose a type of contract:")::

+ +
+
+ + + +

+ ::_("It is a contract with a duration of one year or for one season. Products are always the same at each delivery"):: +

+

+ ::raw _("Example: there is a contract for vegetables that is 1 year long. Jean takes a basket that costs 10€ per delivery, and Brigitte takes a basket that costs 15€ per delivery."):: +

+
+
+ +
+
+ + + +

+ ::_("It is a contract in which members can change their orders at each delivery. There is a different order for each delivery."):: +

+

+ ::raw _("Example: Jean orders a basket that costs 10€ for the first delivery, then nothing for the second delivery, then a basket for 20€ etc."):: +

+
+
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contract/order.mtt b/lang/master/tpl/contract/order.mtt new file mode 100644 index 0000000..e904efc --- /dev/null +++ b/lang/master/tpl/contract/order.mtt @@ -0,0 +1,139 @@ +::use 'design.mtt':: +
+
+

::_("Order"):: ::c.name::

+ + ::if distribution!=null:: + ::_("For the delivery of the"):: ::hDate(distribution.date):: + ::end:: + +

+ ::raw _("As long as orders are open, you can come back on this page and modify your order.
You can check any time your current orders on the following page my account."):: +

+ +
+ + + ::if distribution!=null:: + + ::end:: + + + + + + ::foreach d userOrders:: + ::if d.distrib==null:: + + ::else:: + + ::end:: + ::end:: + + + + + ::if userOrders.length>0:: + + ::foreach uo userOrders[0].datas:: + + + + + + + ::set i = repeat.uo.index:: + + ::foreach d userOrders:: + + ::end:: + + + ::end:: + + ::else:: + + + + ::end:: + + + + + + ::foreach d userOrders:: + + + + ::end:: + +
::_("Product")::::_("Price")::::_("Qty")::::dDate(d.distrib.date)::
+ + + +   + + + ::uo.product.getName():: + + + ::set price = uo.product.price + uo.product._contract.computeFees(uo.product.price):: + ::formatNum(price):: ::currency():: + + + ::set o = d.datas[i]:: + + ::if o.order==null:: + ::set q = "":: + ::else:: + ::set q = o.order.quantity:: + ::end:: + + + ::if d.distrib==null:: + + + ::else:: + + ::end:: + + +
::_("There is currently no open order")::
Total + + ::set total=0:: + ::foreach o d.datas:: + + ::if o.order!=null:: + ::set q = o.order.quantity:: + ::set price = o.product.price + o.product._contract.computeFees(o.product.price):: + + ::set total = total+(q*price):: + + ::end:: + + ::end:: + + ::formatNum(total):: ::currency():: +
+ + ::_("Tip: to remove an order please key-in the quantity 0")::

+ + + +
+ +
+
+
+
+ ::_("Supplier:"):: ::c._vendor.name:: +
+
+ ::_("Contact in charge:"):: $$contact(::c._contact::) +
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contract/orderAndPay.mtt b/lang/master/tpl/contract/orderAndPay.mtt new file mode 100644 index 0000000..b1ae969 --- /dev/null +++ b/lang/master/tpl/contract/orderAndPay.mtt @@ -0,0 +1,137 @@ +::use 'design.mtt':: +
+
+

::_("Order"):: ::c.name::

+ + +

+ ::raw _("Key-in here your orders in advance for this supplier.
You can check your current orders any time on the following page my account.
Tip: to remove an order please key-in the quantity 0"):: +

+ +
+ + + + + + + + + + ::foreach d userOrders:: + ::if d.distrib==null:: + + ::else:: + + ::end:: + ::end:: + + + + + ::if userOrders.length>0:: + + ::foreach uo userOrders[0].datas:: + + + + + + + ::set i = repeat.uo.index:: + + ::foreach d userOrders:: + + ::end:: + + + ::end:: + + ::else:: + + + + ::end:: + + + + + + ::foreach d userOrders:: + + + + ::end:: + +
::_("Product")::::_("Price")::::_("Qty")::::dDate(d.distrib.date)::
+ + + +   + + + ::uo.product.getName():: + + + ::set price = uo.product.price + uo.product._contract.computeFees(uo.product.price):: + ::formatNum(price):: ::currency():: + + + ::set o = d.datas[i]:: + + ::if o.order==null:: + ::if d.distrib==null:: + + + ::else:: + + ::end:: + ::else:: + ::o.order.quantity:: + ::end:: + +
::_("There is currently no open order")::
Total + + ::set total=0:: + ::foreach o d.datas:: + + ::if o.order!=null:: + ::set q = o.order.quantity:: + ::set price = o.product.price + o.product._contract.computeFees(o.product.price):: + + ::set total = total+(q*price):: + + ::end:: + + ::end:: + + ::formatNum(total):: ::currency():: +
+ + + +
+ +
+
+
+
+

+ ::_("Supplier:"):: ::c._vendor.name:: +

+

+ ::_("Contact in charge:"):: $$contact(::c._contact::) +

+ +
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contract/orderByDate.mtt b/lang/master/tpl/contract/orderByDate.mtt new file mode 100644 index 0000000..e7d5a01 --- /dev/null +++ b/lang/master/tpl/contract/orderByDate.mtt @@ -0,0 +1,75 @@ +::use 'design.mtt':: +
+
+

+ ::__("Modify the order delivered on ::date::",{date:hDate(date)}):: +

+ +

+ ::raw _("You can modify here an existing order. If you would like to remove a product, just key-in the quantity 0.
You may not be able to modify all elements as the order could be closed for some suppliers"):: +

+ +
+ + + + + + + + + + + + + ::set total = 0:: + ::foreach o orders:: + + + + + + + + + ::set total = total + o.total:: + + ::end:: + + + + + + + + +
::_("Product")::::_("U.P.")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Quantity")::
+ + + ::o.quantity:: x ::o.productName:: + + + ::formatNum(o.productPrice):: ::currency():: + + ::formatNum(o.subTotal):: ::currency():: + + $$nullSafe(::formatNum(o.fees)::) + + ::formatNum(o.total):: ::currency():: + + ::if o.canModify:: + + ::else:: + ::_("Order closed or already paid"):: + ::end:: +
::_("TOTAL")::::roundTo(total,2)::::currency()::
+ + + +
+ +
+
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contract/view.mtt b/lang/master/tpl/contract/view.mtt new file mode 100644 index 0000000..0ad9a7b --- /dev/null +++ b/lang/master/tpl/contract/view.mtt @@ -0,0 +1,137 @@ +::use 'design.mtt':: +
+
+ +

::c.name::

+ +
+ +
+ ::if c.description!=null:: + ::raw nl2br(c.description):: + ::end:: +
+ +
+ +
+ +
+ ::foreach p c.getProducts(true):: +
+ + + + + +
+ + +
+ +
+

+ ::p.getName():: +

+ ::formatNum(p.getPrice()):: ::currency():: + + +
+
+ ::end:: +
+ +
+ +
+ ::set vendor = c._vendor:: +
+ + + +
+
+ +

::vendor.name::

+ + ::vendor.city:: (::vendor.zipCode::) + +

+ ::raw nl2br(vendor.desc):: +

+ + ::if vendor.linkUrl!=null:: +

+ ::if vendor.linkText!=null:: + ::vendor.linkText:: + ::else:: + ::_("Read more"):: + ::end:: +

+ ::end:: + +
+
+

::_("Coordinator")::

+ ::if c._contact!=null:: + ::c._contact.firstName:: ::c._contact.lastName::
+ ::c._contact.email::
+ ::c._contact.phone::
+ ::end:: +
+ +
+ +
+
+
+ + +
+

::_("Next distributions")::

+ + ::set distribs = c.getDistribs(true,null):: +
    + ::foreach d distribs:: +
  • + + ::dDate(d.date):: +
    ::d._place.name:: + +

    + ::if user._amap.hasShopMode():: + ::_("Order"):: + ::end:: +

    +
  • + ::end:: +
+ + ::if distribs.length==0:: +

+ ::_("No planned distributions."):: +

+ ::else:: +

+ ::_("Order"):: +

+ ::end:: + + +
+

+ ::_("You can check your previous orders in 'my account' section"):: +

+ + +
+ + + + +
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/calendar.mtt b/lang/master/tpl/contractadmin/calendar.mtt new file mode 100644 index 0000000..d75f155 --- /dev/null +++ b/lang/master/tpl/contractadmin/calendar.mtt @@ -0,0 +1,56 @@ +::use 'design.mtt':: + + + +
+
+ +

Calendrier

+ +
+ + ::foreach c calendar:: + + ::if c.d.getTime() < now:: + ::set col="0.3":: + ::else:: + ::set col="1":: + ::end:: + +
+ + ::hDate(c.d)::
+ ::foreach e c.events:: +
::e.name::
+ ::end:: +
+ + ::end:: +
+ + +
+
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/contract.mtt b/lang/master/tpl/contractadmin/contract.mtt new file mode 100644 index 0000000..c0b5194 --- /dev/null +++ b/lang/master/tpl/contractadmin/contract.mtt @@ -0,0 +1,57 @@ +::use 'design.mtt':: +::set c = contract:: + + + + +
+
+ + ::c.name:: - ::c._vendor.name:: + +
+
+ Produits + + ::foreach p c.getProducts():: + + + + + ::end:: +
::p.name::$$edit(modifier,/product/edit/::p.id::)
+ $$insert(Nouveau produit,/product/insert) + +
+ +
+ ::_("Deliveries"):: + + ::foreach d c.getDistribs():: + + + + + ::end:: +
::d.date.toString()::$$edit(modifier,/distribution/edit/::d.id::)
+ $$insert(Nouvelle livraison,/distribution/insert) +
+
+
+ +
+
+ + + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/default.mtt b/lang/master/tpl/contractadmin/default.mtt new file mode 100644 index 0000000..fead074 --- /dev/null +++ b/lang/master/tpl/contractadmin/default.mtt @@ -0,0 +1,149 @@ +::use 'design.mtt':: + +
+ + +
0:: style="max-height:400px;overflow-y: auto;"> +

::_("Distributions to validate")::

+ +

::_("You need to validate these distributions which took place recently")::

+ + ::foreach m multidistribs:: +

+ ::if(!m.isConfirmed()):: + + ::dDate(m.getDate())::, ::m.getPlace().name:: + + ::if (isAdmin):: + Admin : Autovalidate + ::end:: + ::elseif(isAdmin):: + + ::dDate(m.getDate())::, ::m.getPlace().name:: + + Admin : Unvalidate + ::end:: +

+ ::end:: + +
+ +
+

+ ::if getParam("old"):: + ::_("Old contracts"):: + ::else:: + ::_("Contracts"):: + ::end:: +

+ + ::foreach c contracts:: + ::if c.endDate!=null && c.endDate.getTime() < Date.now().getTime():: + ::set class = "disabled":: + ::elseif c.startDate!=null && c.startDate.getTime() > Date.now().getTime():: + ::set class = "disabled":: + ::else:: + ::set class = "":: + ::end:: + + + + + + + + ::end:: +
+ ::if c._vendor._image!=null:: +
+ ::end:: +
::c._vendor.name:: + ::c.name:: + + du ::hDate(c.startDate)::
+ au ::hDate(c.endDate):: +
+ +
+ $$edit(::_("Manage")::,/contractAdmin/view/::c.id::) + + ::if user.canManageAllContracts():: + $$delete(::_("Del.||short version of delete")::,/contract/delete/::c.id::?token=::token::) + ::end:: +
+ +
+ + + ::if user.canManageAllContracts():: + $$insert(::_("New contract")::,/contract/insert/) + ::end:: + ::_("Old contracts"):: + ::_("Calendar"):: + + +
+ +
+ + + +
+
+

::_("Farmers")::

+ + ::foreach v vendors:: + + + + + + ::end:: +
+ ::if v._image!=null:: +
+ ::end:: +
::v.name:: +
+ $$edit(::_("Edit")::,/vendor/edit/::v.id::) + ::_("Picture"):: + ::if user.isAmapManager():: $$delete(,/vendor/delete/::v.id::?token=::token::) ::end:: +
+
+ $$insert(::_("New farmer")::,/vendor/insert/) + +
+
+ +
+
+ +

::_("Delivery places")::

+ + ::foreach p places:: + + + + + ::end:: +
::p.name:: + $$edit(::_("Edit")::,/place/edit/::p.id::) + ::if user.isAmapManager():: $$delete(::_("Del.||short version for delete")::,/place/delete/::p.id::?token=::token::) ::end:: +
+ $$insert(::_("New delivery place")::,/place/insert/) +
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/deliveries.mtt b/lang/master/tpl/contractadmin/deliveries.mtt new file mode 100644 index 0000000..9dc5e89 --- /dev/null +++ b/lang/master/tpl/contractadmin/deliveries.mtt @@ -0,0 +1,82 @@ +::use 'contractadmin/design.mtt':: + +

::_("Distributions")::

+ + + ::foreach d deliveries:: + + ::if d.date!=null && d.date.getTime() < Date.now().getTime():: + ::set style = "opacity:0.5;":: + ::else:: + ::set style = "":: + ::end:: + + + + + + + + ::end:: +
+ ::if d.distributionCycleId!=null:: + + ::end:: + + ::set da = getDate(d.date):: + + ::if d.end!=null:: + + ::set e = getDate(d.end):: + ::end:: + + ::da.dow:: ::da.d:: ::da.m:: de ::da.h+":"+da.i:: + + ::if d.end!=null:: + à ::e.h+":"+e.i:: + ::end:: + + ::d._place.name:: + +
+ $$edit(::_("Edit")::,/distribution/edit/::d.id::) + $$delete(::_("Delete")::,/distribution/delete/::d.id::) +  ::_("Distribution list"):: +
+
+ + + 0:: class="table"> + + + + + ::foreach c cycles:: + + + + + ::end:: +
::_("Distribution cycle")::
+ ::switch c.cycleType:: + ::case:: ::_("Weekly"):: + ::case:: ::_("Monthly"):: + ::case:: ::_("Every 2 weeks"):: + ::case:: ::_("Every 3 weeks"):: + ::end:: + + : Du ::hDate(c.startDate):: au ::hDate(c.endDate):: + + $$delete(::_("Del.")::,::"/distribution/deleteCycle/"+c.id::) +
+ + $$insert(::_("One time distribution")::,/distribution/insert/::c.id::) + $$insert(::_("Distribution cycle")::,/distribution/insertCycle/::c.id::) + + + ::_("Distributions engagement"):: + + + ::_("Old distributions"):: + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/design.mtt b/lang/master/tpl/contractadmin/design.mtt new file mode 100644 index 0000000..a48c196 --- /dev/null +++ b/lang/master/tpl/contractadmin/design.mtt @@ -0,0 +1,44 @@ +::use 'design.mtt':: + +
+

::c.name:: - ::c._vendor.name::

+
+ +
+
+ +
+
+ + +
+
+ ::raw __content__:: +
+
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/distributionp.mtt b/lang/master/tpl/contractadmin/distributionp.mtt new file mode 100644 index 0000000..e9a59d4 --- /dev/null +++ b/lang/master/tpl/contractadmin/distributionp.mtt @@ -0,0 +1,60 @@ +::use 'contractadmin/design.mtt':: +

::_("Participate to deliveries")::

+ +
+ ::_("This page allows to see if members have participated to deliveries enough."):: +
+ +
+ ::raw __("::distribs:: deliveries requiring ::distributorNum:: person(s)",{distribs:distribs,distributorNum:distributorNum})::,
+ ::users:: ::_("person(s) using this contract")::
+ = ::num:: ::_("participations to deliveries to do per family.")::
+
+ + + + + + + + + ::foreach p participations:: + + + + + + + ::end:: +
::_("Suscriber")::::raw _("Number of attendances to deliveries")::
+ ::p.user.getCoupleName():: + + ::p.count:: + + ::if p.count>=numRounded:: + OK + ::else:: + ::_("Insufficient"):: + ::end:: +
+ + ::if(extParticipations.length>0):: +
+ + + + + + + + ::foreach p extParticipations:: + + + + + + ::end:: +
::_("Member without order in this contract")::::raw _("Number of attendances to deliveries")::
::p.user.getCoupleName()::::p.count::
+ ::end:: + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/edit.mtt b/lang/master/tpl/contractadmin/edit.mtt new file mode 100644 index 0000000..46fe73b --- /dev/null +++ b/lang/master/tpl/contractadmin/edit.mtt @@ -0,0 +1,148 @@ +::use 'contractadmin/design.mtt':: + + + ::if u==null:: +

::_("Key-in an order")::

+ ::else:: +

::_("Key-in an order for"):: ::u.getCoupleName()::

+ ::end:: + + ::if distribution!=null:: +

::_("For the delivery of the"):: ::hDate(distribution.date)::

+ ::end:: + +
+ + ::if distribution!=null:: + + ::end:: + + ::if u==null :: +
+ +
+ +
+
+ ::end:: + +
+ + + + + + + + + ::if distribution==null::::end:: + + ::set total = 0:: + ::foreach uo userOrders:: + + + + + + + + + + + + + ::end:: + + ::set extra = 0:: + + ::if c.hasPercentageOnOrders():: + + + + + + + + + + + ::set extra = total*(c.percentageValue/100):: + + + + + + ::end:: + + + + + + + + + +
::_("Product")::::_("Price")::::_("Quantity")::::_("Status")::::_("Alternately with :")::
+ ::if uo.product.active==false:: + + ::else:: + + ::end:: + + ::if uo.product.active==false:: + ::uo.product.getName():: ::_("(inactive)"):: + ::else:: + ::uo.product.getName():: + ::end:: + + + ::formatNum(uo.product.price):: ::currency():: + + ::if uo.order==null:: + ::set q = 0:: + ::else:: + ::set q = uo.order.quantity:: + ::end:: + + ::set total = total+(q*uo.product.price):: + + + + + + +
::_("Total order")::::total::::currency()::
::c.percentageName:: (::c.percentageValue::%)::extra::::currency()::
::_("Total")::::total+extra::::currency():: + ::_("Check all"):: + +
+ + + +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/orders.mtt b/lang/master/tpl/contractadmin/orders.mtt new file mode 100644 index 0000000..91ca1c3 --- /dev/null +++ b/lang/master/tpl/contractadmin/orders.mtt @@ -0,0 +1,214 @@ +::use 'contractadmin/design.mtt':: + +

::_("Orders")::

+ + ::if distribution!=null:: + ::_("Delivery of the"):: ::hDate(distribution.date):: + ::end:: + +
+ +
+ + ::if distribution!=null:: + ::_("New order"):: + ::else:: + ::_("New order"):: + ::end:: + + ::if distribution!=null:: + $$export(/contractAdmin/orders/::c.id::?csv=1&d=::distribution.id::) + + ::_("Summary by products"):: + + + + + ::else:: + $$export(/contractAdmin/orders/::c.id::?csv=1) + + ::_("Summary by products"):: + ::end:: +
+ + ::if disabledProducts > 0:: + $$alert( ::raw __("Be careful, there are ::disabledProducts:: order(s) containing disabled products.",{disabledProducts:disabledProducts}):: ) + ::end:: + + + + + ::set total = 0:: + ::set totalAdh = 0:: + + ::set name = "":: + ::set name2 = "":: + + ::foreach m orders:: + + ::if m.userName != name || m.userName2 != name2:: + + + + + + + + + + + + + + + + + ::end:: + + + ::if m.disabled==true:: + ::set class="danger":: + ::else:: + ::set class="":: + ::end:: + + + + + + + + + + + + + ::end:: + + + + + + + + + + + + +
+ + ::if distribution!=null:: + ::set basket = getBasket(m.userId,distribution._place.id,distribution.date):: +
+ N°::basket.num:: +
+ ::end:: + + ::m.userName:: + ::if m.userName2!=null:: + ::_("alternated with"):: ::m.userName2:: + ::end:: + + ::set name = m.userName :: + ::set name2 = m.userName2 :: + ::set totalAdh = totalAdh+1:: +
+ + + + ::if distribution!=null:: + + + ::_("Edit"):: + + ::else:: + + + ::_("Edit"):: + + ::end:: + + +
::_("Prod. ID")::::_("Qty")::::_("Product")::::_("U.P||price per unit")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Paid")::
+ $$nullSafe(::m.productRef::) + + ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + + ::m.productName:: + + ::formatNum(m.productPrice):: ::currency():: + + ::formatNum(m.subTotal):: ::currency():: + + + ::if m.percentageValue!=null:: + + ::formatNum(m.fees):: ::currency():: + + ::end:: + + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: + + ::if !m.canceled && m.quantity!=0:: + ::if m.paid==true:: + ::_("Paid"):: + ::else:: + ::_("Not paid"):: + ::end:: + ::end:: + + ::if(m.quantity==0):: +      + ::if distribution==null:: + + + ::_("Delete"):: + + ::else:: + + + ::_("Delete"):: + + ::end:: + + ::end:: + +
::_("Total")::::formatNum(total):: ::currency()::
+ + +
+ ::raw __("::totalAdh:: member(s) in this distribution.",{totalAdh:totalAdh}):: +
+ +::end:: diff --git a/lang/master/tpl/contractadmin/ordersByDate.mtt b/lang/master/tpl/contractadmin/ordersByDate.mtt new file mode 100644 index 0000000..5d4b812 --- /dev/null +++ b/lang/master/tpl/contractadmin/ordersByDate.mtt @@ -0,0 +1,172 @@ +::use 'design.mtt':: + + + + +
+
+ +
+

+ Distribution du ::hDate(date):: +

+

::place::

+
+ +
+ + + + +
+ + + + ::set total = 0:: + ::set subtotal = 0:: + ::set contractTotal = 0:: + + ::foreach m orders:: + + ::set i = repeat.m.index:: + + + ::if orders[i-1]==null || m.userName != orders[i-1].userName || m.userName2 != orders[i-1].userName2:: + + + + + + + + + + + + + + + + + ::end:: + + + + + + + + + + + + + + + + + ::if ctotal && (orders[i+1]==null || m.contractName != orders[i+1].contractName || m.userName != orders[i+1].userName ):: + + + + + + ::set contractTotal = 0:: + + ::end:: + + + ::if (orders[i+1]==null || m.userName != orders[i+1].userName) :: + + ::if subtotal!=0:: + + + + + ::set subtotal = 0:: + + ::end:: + ::end:: + + + ::end:: + + + + + + + + + +
+ + ::set basket = getBasket(m.userId,place.id,date):: + +
+ ::_("Num"):: ::basket.num:: +
+ + ::m.userName:: + ::if m.userName2!=null:: + ::_("alternately with"):: ::m.userName2:: + ::end:: + ::set contractTotal = 0:: +
::_("Contract")::::_("Qty")::::_("Ref")::::_("Product")::::_("U.P.")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Paid")::
+ + ::short(m.contractName,40):: + + + ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + + $$nullSafe(::m.productRef::) + + ::short(m.productName,40):: + + ::formatNum(m.productPrice):: ::currency():: + + ::formatNum(m.subTotal):: ::currency():: + + + ::if m.percentageValue!=null:: + + ::formatNum(m.fees):: ::currency():: + + ::end:: + + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: + ::set subtotal = subtotal + m.total:: + ::set contractTotal = contractTotal + m.total:: + + ::if m.paid==true:: + ::_("Paid"):: + ::else:: + ::_("Not paid"):: + ::end:: +
Total ::m.contractName::::formatNum(contractTotal):: ::currency()::
::_("Total member")::::formatNum(subtotal):: ::currency()::
::_("Total of all orders:"):: ::formatNum(total):: ::currency()::
+
+ +
+ +::end:: diff --git a/lang/master/tpl/contractadmin/ordersByProduct.mtt b/lang/master/tpl/contractadmin/ordersByProduct.mtt new file mode 100644 index 0000000..7d8682c --- /dev/null +++ b/lang/master/tpl/contractadmin/ordersByProduct.mtt @@ -0,0 +1,70 @@ +::use 'contractadmin/design.mtt':: + +

::_("Summary table per product")::

+ + ::if distribution!=null:: +

+ ::set date = hDate(distribution.date):: + ::raw __("Delivery of the ::date::",{date:date}):: +

+ ::end:: + +

+ ::_("Be careful, if the price of the product was modified during the sale, every order of a member is taken into account with the price as it was at the time of the creation of the order"):: +

+ ::set total = 0:: + + + + + + + + + + + ::foreach m orders:: + + + + + + + + + + + ::end:: + + + + + + +
::_("Weight/Vol.")::::_("Quantities")::::_("Product")::::_("Reference")::::_("Unit Price incl. VAT")::::_("Total")::
+ ::raw m.weightOrVolume:: + + ::formatNum(m.quantity):: + + ::m.pname:: + + $$nullSafe(::m.ref::) + + ::formatNum(m.priceTTC):: ::currency():: + + ::formatNum(m.totalTTC):: ::currency():: + ::set total = total + m.totalTTC:: +
Total::formatNum(total):: ::currency()::
+ + ::if distribution!=null:: + $$export(/contractAdmin/ordersByProduct/::c.id::?csv=1&d=::distribution.id::) + + ::_("Order form"):: + ::else:: + $$export(/contractAdmin/ordersByProduct/::c.id::?csv=1) + + ::_("Order form"):: + ::end:: + + +::end:: diff --git a/lang/master/tpl/contractadmin/ordersByProductList.mtt b/lang/master/tpl/contractadmin/ordersByProductList.mtt new file mode 100644 index 0000000..7bc91ad --- /dev/null +++ b/lang/master/tpl/contractadmin/ordersByProductList.mtt @@ -0,0 +1,89 @@ + + + + + Bon de commande + + + + + + + + + +
+ ::if group._image!=null:: + + ::end:: + +

::group.name::

+ ::if distribution!=null:: +

Livraison du ::hDate(distribution.date)::

+ ::end:: +

::c.name:: - ::c._vendor.name::

+
+ ::set cv = c._vendor:: + ::if cv._image!=null:: + + ::end:: +
+ +

+ ::set cc = c._contact:: + ::set cv = c._vendor:: + Responsable contrat : ::cc.firstName:: ::cc.lastName::, ::cc.email::, + ::if cc.phone!=null :: ::cc.phone:: ::end:: +

+

+ Producteur : ::cv.name:: , + ::if cv.email!=null :: ::cv.email:: ::end::, + ::if cv.phone!=null :: ::cv.phone:: ::end:: +

+ +

+

::_("Summary table per product")::

+ ::_("Be careful, if the price of the product was modified during the sale, every order of a member is taken into account with the price as it was at the time of the creation of the order"):: +

+ ::set total = 0:: + + + + + + + + + + ::foreach m orders:: + + + + + + + + + ::end:: + + + + + +
::_("Weight/Vol.")::::_("Quantities")::::_("Product")::::_("Reference")::::_("Unit price incl. VAT")::::_("Total")::
+ ::raw m.weightOrVolume:: + + ::formatNum(m.quantity):: + + ::m.pname:: + + $$nullSafe(::m.ref::) + + ::formatNum(m.priceTTC):: ::currency():: + + ::formatNum(m.totalTTC):: ::currency():: + ::set total = total + m.totalTTC:: +
::_("Total")::::formatNum(total):: ::currency()::
+ + + diff --git a/lang/master/tpl/contractadmin/ordersByTimeFrame.mtt b/lang/master/tpl/contractadmin/ordersByTimeFrame.mtt new file mode 100644 index 0000000..c11cf68 --- /dev/null +++ b/lang/master/tpl/contractadmin/ordersByTimeFrame.mtt @@ -0,0 +1,146 @@ +::use 'design.mtt':: + +
+
+ +
+

::_("Orders from the"):: ::hDate(from):: ::_("to"):: ::hDate(to)::

+
+ + ::set uri = from.toString().substr(0,10)+"/"+to.toString().substr(0,10):: + + +
+ + + + ::set total = 0:: + ::set subtotal = 0:: + ::set contractTotal = 0:: + + ::foreach m orders:: + + ::set i = repeat.m.index:: + + + ::if orders[i-1]==null || m.userName != orders[i-1].userName || m.userName2 != orders[i-1].userName2:: + + + + + + + + + + + + + + + + + ::end:: + + + + + + + + + + + + + + + + + ::if ctotal && (orders[i+1]==null || m.contractName != orders[i+1].contractName || m.userName != orders[i+1].userName ):: + + + + + + ::set contractTotal = 0:: + + ::end:: + + + ::if (orders[i+1]==null || m.userName != orders[i+1].userName) :: + + ::if subtotal!=0:: + + + + + ::set subtotal = 0:: + + ::end:: + ::end:: + + + ::end:: + + + + + + + + + +
+ ::m.userName:: + ::if m.userName2!=null:: + en alternance avec ::m.userName2:: + ::end:: + ::set contractTotal = 0:: +
::_("Contract")::::_("Qty")::::_("Ref")::::_("Product")::::_("U.P.")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Paid")::
+ + ::short(m.contractName,40):: + + + ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + + $$nullSafe(::m.productRef::) + + ::short(m.productName,40):: + + ::formatNum(m.productPrice):: ::currency():: + + ::formatNum(m.subTotal):: ::currency():: + + + ::if m.percentageValue!=null:: + + ::formatNum(m.fees):: ::currency():: + + ::end:: + + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: + ::set subtotal = subtotal + m.total:: + ::set contractTotal = contractTotal + m.total:: + + ::if m.paid==true:: + ::_("Paid"):: + ::else:: + ::_("Not paid"):: + ::end:: +
Total ::m.contractName::::formatNum(contractTotal):: ::currency()::
::_("Total member")::::formatNum(subtotal):: ::currency()::
::_("Total of all orders:"):: ::formatNum(total):: ::currency()::
+
+ +
+ +::end:: diff --git a/lang/master/tpl/contractadmin/products.mtt b/lang/master/tpl/contractadmin/products.mtt new file mode 100644 index 0000000..99d2296 --- /dev/null +++ b/lang/master/tpl/contractadmin/products.mtt @@ -0,0 +1,156 @@ +::use 'contractadmin/design.mtt':: + +

::_("Products")::

+ +
+

+ $$insert(::_("New product")::,/product/insert/::c.id::) + ::_("Import from Excel/CSV"):: + + ::if !c._amap.hasTaxonomy():: + ::_("Categories"):: + ::end:: + +

+
+ + + +
+ + + + + + + + + ::if c.hasStockManagement():: + + ::end:: + + + + ::foreach p c.getProducts(false):: + + ::if p.active==false:: + ::set opacity=0.4:: + ::else:: + ::set opacity=1:: + ::end:: + + + + + + + + + + + ::end:: +
::_("Product ID||id or reference of a product")::::_("Name")::::_("Price")::::_("Stock")::
+ + + + $$nullSafe(::p.ref::) + ::p.name:: + + ::if p._unitType!=null && p.qt!=null:: + ::p.qt:: ::unit(p._unitType,false):: + ::end:: + + ::if !c._amap.hasTaxonomy():: +
+ ::foreach c p.getCategories():: + ::c.name:: + ::end:: +
+ ::else:: +
+ ::p.getFullCategorization().join(" / "):: +
+ ::end:: +
+ ::if p.organic ::::end:: + ::if p.variablePrice ::::end:: +
+
::formatNum(p.price):: ::currency():: + ::if c.hasStockManagement() :: + ::if p.stock==null:: + - + ::else:: + ::if p.stock <= 10:: + + ::p.stock:: + + ::else:: + ::p.stock:: + ::end:: + ::end:: + ::end:: + +
+ $$edit(::_("Edit")::,/product/edit/::p.id::) + ::_("Picture"):: + $$delete(::_("Del.")::,/product/delete/::p.id::?token=::token::) +
+
+ +
+ + +

+

+ + + +

+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/selectDistrib.mtt b/lang/master/tpl/contractadmin/selectDistrib.mtt new file mode 100644 index 0000000..29aff6e --- /dev/null +++ b/lang/master/tpl/contractadmin/selectDistrib.mtt @@ -0,0 +1,53 @@ +::use 'contractadmin/design.mtt':: + + ::if distributions.length>0:: + +

::_("Orders")::

+ + + + + + + + ::foreach d distributions:: + + ::if d.date!=null && d.date.getTime() < Date.now().getTime():: + ::set style = "opacity:0.5;":: + ::else:: + ::set style = "":: + ::end:: + + + + + + + ::end:: +
::_("Date")::::_("Location")::
::hDate(d.date)::::d._place.name:: + + + ::_("Orders"):: + + +
+ + ::else:: +
+ + Aucune distribution prochainement.
+ ::_("Click here to manage deliveries"):: +
+ ::end:: + + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/stats.mtt b/lang/master/tpl/contractadmin/stats.mtt new file mode 100644 index 0000000..fca38d7 --- /dev/null +++ b/lang/master/tpl/contractadmin/stats.mtt @@ -0,0 +1,63 @@ +::use 'contractadmin/design.mtt':: + + + + ::if stat==0:: +

+ ::__("Seniority of subscribers of ::contract::",{contract:c.name}):: + +

+ + + + + + ::foreach a anciennete:: + + + + + ::end:: +
::_("Number")::::_("Year")::
::a.cnt::::a.uyear::
+ ::end:: + + ::if stat==1:: +

::_("Sharing between orders of"):: "::c.name::"

+ + + + + + + + + ::foreach r repartition:: + + + + + + + + + ::end:: + + + + + + +
::_("Quantity")::::_("Product")::::_("Total price")::::_("% of orders")::
::r.quantity::::r.name::::r.quantity*r.price:: ::currency()::::r.percent:: %
Total: ::totalQuantity:: ::_("products")::::totalPrice:: ::currency()::
+ + + $$export(/contractAdmin/stats/::c.id::?csv=1&stat=1) + ::end:: +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/stocks.mtt b/lang/master/tpl/contractadmin/stocks.mtt new file mode 100644 index 0000000..0a134a8 --- /dev/null +++ b/lang/master/tpl/contractadmin/stocks.mtt @@ -0,0 +1,27 @@ +::use 'contractadmin/design.mtt':: + + +

::_("Products")::

+ + + ::foreach p c.getProducts():: + + + + + + + + + + ::end:: +
+ + + + $$nullSafe(::p.ref::)::p.name::::p.stock:: + $$edit(modifier,/product/edit/::p.id::) +
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/vendorsByDate.mtt b/lang/master/tpl/contractadmin/vendorsByDate.mtt new file mode 100644 index 0000000..fa603be --- /dev/null +++ b/lang/master/tpl/contractadmin/vendorsByDate.mtt @@ -0,0 +1,61 @@ +::use 'design.mtt':: + +
+
+ +

::_("Global view of orders - delivery of"):: ::hDate(date)::

+
+ + ::foreach o orders:: + + ::set total = 0:: + + + + + + + + + + + + + ::foreach m o.orders:: + + + + + + + + ::end:: + + + + + +
+ +

::o.contract.name:: - ::o.contract._vendor.name::

+ +
::_("Quantities")::::_("Product")::::_("Reference")::::_("Unit price incl. VAT")::::_("Total")::
+ ::m.quantity:: + + ::m.pname:: + + $$nullSafe(::m.ref::) + + ::formatNum(m.priceTTC):: ::currency():: + + ::formatNum(m.totalTTC):: ::currency():: + ::set total = total + m.totalTTC:: +
Total::formatNum(total):: ::currency()::
+ + ::end:: + +
+ +
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/vendorsByTimeFrame.mtt b/lang/master/tpl/contractadmin/vendorsByTimeFrame.mtt new file mode 100644 index 0000000..a75be4c --- /dev/null +++ b/lang/master/tpl/contractadmin/vendorsByTimeFrame.mtt @@ -0,0 +1,68 @@ +::use 'design.mtt':: + +
+
+ +

::_("Global view of orders - from"):: ::hDate(from):: ::_("to"):: ::hDate(to)::

+ +
+ $$export(/contractAdmin/vendorsByTimeFrame/::from.toString().substr(0,10)::/::to.toString().substr(0,10)::?csv=1) +
+ +
+ ::foreach o orders:: + + ::set total = 0:: + + + + + + + + + + + + + + ::foreach m o.orders:: + + + + + + + + ::set total = total + m.totalTTC:: + + ::end:: + + + + + +
+ +

::o.contract.name:: - ::o.contract._vendor.name::

+
::_("Quantities")::::_("Product")::::_("Reference")::::_("Unit price incl. VAT")::::_("Total HT")::::_("Total TTC")::
+ ::formatNum(m.quantity):: + + ::m.pname:: + + $$nullSafe(::m.ref::) + + ::formatNum(m.priceTTC):: ::currency():: + + ::formatNum(m.totalHT):: ::currency():: + + ::formatNum(m.totalTTC):: ::currency():: +
::_("Total")::::formatNum(total):: ::currency()::
+ + ::end:: + +
+ +
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/contractadmin/view.mtt b/lang/master/tpl/contractadmin/view.mtt new file mode 100644 index 0000000..61750cf --- /dev/null +++ b/lang/master/tpl/contractadmin/view.mtt @@ -0,0 +1,70 @@ +::use 'contractadmin/design.mtt':: + +

::_("Summary")::

+ + + + + + + + + + + + + + +
+ ::_("Contract type"):: + + ::if contract.type==0:: + ::_("CSA Contract"):: + ::else:: + ::_("Variable order contract"):: + ::end:: +
::_("Start date")::::hDate(contract.startDate)::
::_("End date")::::hDate(contract.endDate)::
+ +
+ $$edit(::_("Edit")::,/contract/edit/::c.id::) + + ::if user.isAmapManager():: + $$edit(::_("Duplicate")::,/contractAdmin/duplicate/::c.id::) + ::end:: +
+ +
+ +

::_("Farmer")::

+ + + + + + + + + + + + + +
::_("Name")::::contract._vendor.name::
::_("Email")::$$nullSafe(::contract._vendor.email::)
::_("Phone")::$$nullSafe(::contract._vendor.phone::)
+ + +

::_("Products")::

+
+ + ::foreach p contract.getProducts(true):: + + + + + + ::end:: +
::p.getName()::::formatNum(p.price):: ::currency()::
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/cssDemo.mtt b/lang/master/tpl/cssDemo.mtt new file mode 100644 index 0000000..42ffda0 --- /dev/null +++ b/lang/master/tpl/cssDemo.mtt @@ -0,0 +1,194 @@ +::use 'design.mtt':: + +
+ +
+
+
+ + Hou là là ! +
+ +
+
+ +
+
+ +
+ + Todo bem +
+ +
+
+ +
+
+ +
+

Boutons large

+ + + + + + + + +
+ +
+

Boutons default

+ + + + + + + + + + + + + + + + + + + +
+ + +
+

Boutons small

+ + + + + + + +
+ +
+

Boutons XS

+ + + + + + + +
+ + + +
+

H1 Title

+

H2 Title

+

H3 Title

+

H4 Title

+ +
+ +
+ +
+
+

Panel title

+
+
+

+ Type : Gratuit jusqu'à 20 foyers ( actuellement 1 foyers dans votre groupe) +

+

+ +

+ +
+
+ +
+ +
+ + + + + + +
+ + + +
+
+ + + + +
+ + + Le Lorem Ipsum est simplement du faux texte employé dans la composition + et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, + quand un peintre anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. + Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. + + + +
+ +
+

Permanences

+ +

N'oubliez pas de vous inscrire pour aider lors des livraisons

+ +
    +
  • Liste 1
  • +
  • Liste 2
  • +
+
+ +
+

+ Attention, vous n'avez défini aucun mot de passe pour votre compte ! +

+ Définir un mot de passe + +
+ + $$today(Mercredi,15,Décembre,19,90,::user._amap._mainPlace::) + + $$date(Mercredi,15,Décembre,19,::user._amap._mainPlace::) + + +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/design.mtt b/lang/master/tpl/design.mtt new file mode 100644 index 0000000..6b4814d --- /dev/null +++ b/lang/master/tpl/design.mtt @@ -0,0 +1,269 @@ +::use 'base.mtt':: + + ::if getParam('__redirect')!=null:: + + + ::end:: + +
+
+ ::set groupName = getCurrentGroup():: + ::if groupName!=null && noGroup!=true:: +

::groupName::

+ ::else:: +
+ + ::NAME:: + +
+ ::end:: +
+ + +
+ + + ::if user != null && noGroup!=true:: + + + + ::end:: + + +
+
+ ::foreach notification getMessages():: +
+ ::if notification.error:: + + ::else:: + + ::end:: + + ::raw notification.text:: +
+ ::end:: +
+
+ + + ::if extraNotifBlock!=null:: + ::raw extraNotifBlock:: + ::end:: + +
+ ::raw __content__:: +
+ + + + + +
+ + version ::VERSION::-::getPlatform():: +
+ +
+
+ + + ::foreach r sqlLog:: + + + + + + + + ::end:: +
::r.t::ms::r.length::ExpStack::r.sql::
+
+
+ + ::if (false && user!=null && user.isAmapManager()):: + + ::end:: +::end:: diff --git a/lang/master/tpl/distribution/list.mtt b/lang/master/tpl/distribution/list.mtt new file mode 100644 index 0000000..0335dca --- /dev/null +++ b/lang/master/tpl/distribution/list.mtt @@ -0,0 +1,156 @@ + + + + + ::_("Attendance sheet"):: + + + +

+ ::contract._amap.name:: - + ::__("Distribution of the ::date::, from ::from:: to ::to::",{date:dDate(distrib.date),from:hHour(distrib.date),to:hHour(distrib.end)}):: +

+

+ ::distrib._contract.name:: - ::distrib._contract._vendor.name:: +

+ +

+ ::_("Place"):: : + ::distrib._place.toString()::, ::distrib._place.getAddress():: +

+

+ ::set c = contract._contact:: + ::set v = contract._vendor:: + ::_("Contact in charge of the contract") : ::c.firstName:: ::c.lastName::, ::c.email::, ::c.phone:: +

+

+ ::_("Farmer"):: : + ::v.name:: , + ::if v.email!=null :: ::v.email:: ::end::, + ::if v.phone!=null :: ::v.phone:: ::end:: +

+

+ ::_("Members on duty"):: : + ::if distrib._distributor1!=null:: ::distrib._distributor1.getName()::, ::end:: + ::if distrib._distributor2!=null:: ::distrib._distributor2.getName()::, ::end:: + ::if distrib._distributor3!=null:: ::distrib._distributor3.getName()::, ::end:: + ::if distrib._distributor4!=null:: ::distrib._distributor4.getName():: ::end:: +

+ +

::raw nl2br(distrib._contract._amap.txtDistrib)::

+ + + ::set total = 0:: + ::set subtotal = 0:: + + ::foreach m orders:: + + ::set i = repeat.m.index:: + + + ::if orders[i-1]==null || m.userName != orders[i-1].userName || m.userName2 != orders[i-1].userName2:: + + + + + + + + + + + + + + + ::end:: + + + + + + + + + + + + + + + ::if (orders[i+1]==null || m.userName != orders[i+1].userName || m.userName2 != orders[i+1].userName2) :: + ::if subtotal!=0:: + + + + + + ::set subtotal = 0:: + + ::end:: + ::end:: + ::end:: + + + + + + + +
+ + ::set basket = getBasket(m.userId,distrib._place.id,distrib.date):: + N°::basket.num:: - + + ::m.userName:: + + + ::set u = getUser(m.userId):: + + ::if u !=null && u.phone!=null:: + - Tél. $$nullSafe(::u.phone::) + ::end:: + + ::if m.userName2 != null:: + ::_("alternately with"):: + + ::m.userName2:: + + + ::set u = getUser(m.userId2): + ::if u !=null:: + - Tél. $$nullSafe(::u.phone::) + ::end:: + ::end:: +
::_("Qty")::::_("Ref")::::_("Product")::::_("U.P.")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Signature")::
+ ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + + $$nullSafe(::m.productRef::) + + ::m.productName:: + + ::formatNum(m.productPrice):: ::currency():: + + ::formatNum(m.subTotal):: ::currency():: + + + ::if m.percentageValue!=null:: + ::formatNum(m.fees):: ::currency():: + ::end:: + + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: + ::set subtotal = subtotal + m.total:: + +
::_("TOTAL")::::formatNum(subtotal):: ::currency()::
::_("Total order:"):: ::formatNum(total):: ::currency()::
+ + + + + + diff --git a/lang/master/tpl/distribution/listByDate.mtt b/lang/master/tpl/distribution/listByDate.mtt new file mode 100644 index 0000000..153e327 --- /dev/null +++ b/lang/master/tpl/distribution/listByDate.mtt @@ -0,0 +1,252 @@ + + + + + ::_("Attendance sheet"):: + + + + +

::user._amap.name::

+

Livraison du ::hDate(date)::

+ + + ::set name = "":: + ::set name2 = "":: + ::set total = 0:: + ::set productNum = 0:: + + + + + + + + + + + + ::foreach m orders:: + + + ::if m.userName != name || m.userName2 != name2:: + ::set class="name":: + ::else:: + ::set class="":: + ::end:: + + + + ::set name = m.userName :: + ::set name2 = m.userName2 :: + + + + + + + + + + + ::set next = orders[repeat.m.index+1]:: + ::if next==null || next.userName!=name || next.userName2!=name2:: + + + + + + + + + + + + + + + + ::if (user._amap.hasShopMode()):: + + + + + + + ::else:: + + + ::set ua = u.getUserAmap(user._amap):: + ::set balance = ua.balance:: + + + ::end:: + + + + ::end:: + ::end:: + +
::_("Name")::::_("Contact details")::::_("Qty")::::_("Product")::::_("U.P.")::::_("Fees")::::_("Total")::::_("Signature")::
+ ::if m.userName != name || m.userName2 != name2:: + + ::set basket = getBasket(m.userId,place.id,date):: + ::_("Num"):: ::basket.num:: - + + ::m.userName:: + ::if m.userName2 != null:: +
::_("alternately with"):: ::m.userName2:: + ::end:: + ::set total = 0:: + ::set productNum = 0:: + ::end:: +
+ ::if m.userName != name || m.userName2 != name2:: + ::set u = getUser(m.userId): + ::if u !=null:: + $$nullSafe(::u.phone::) + ::end:: + + ::if m.userName2 != null:: + ::set u = getUser(m.userId2): + ::if u !=null:: +
$$nullSafe(::u.phone::) + ::end:: + ::end:: + ::end:: + +
+ ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + + ::set productNum = productNum+m.quantity:: + + ::m.productName:: + + ::formatNum(m.productPrice):: ::currency():: + + ::if m.fees!=null:: + ::formatNum(m.fees):: ::currency():: + ::end:: + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: +
::formatNum(productNum)::::_("TOTAL")::::formatNum(total):: ::currency()::
::_("Payment:"):: + + ::if(basket!=null):: + ::set tpaid=0:: + ::set op = basket.getOrderOperation(false):: + ::if op!=null:: + ::foreach p op.getRelatedPayments():: + + + + + + ::end:: + ::end:: + + + ::set total = numClean(total):: + ::set tpaid = numClean(tpaid):: + + ::if(total!=tpaid):: + + + + + + + ::end:: + ::end:: +
+ ::if(p.pending==true):: + + ::else:: + + ::end:: + + ::formatNum(p.amount):: ::currency():: + ::set tpaid = p.amount+tpaid:: + + ::p.name:: +
::formatNum(total-tpaid):: ::currency():: + ::if(total>tpaid):: + ::_("To be paid"):: ::formatNum(total-tpaid):: ::currency():: + ::else:: + ::_("Pay back"):: ::formatNum(tpaid-total):: ::currency():: + ::end:: +
+
::_("Balance of the member:"):: ::ua.balance:: ::currency():: + ::set pending = 0:: + + + + ::foreach p ua.getLastOperations(5):: + ::if p.type==2 && p.pending==true:: + + + + + ::end:: + ::end:: + + + + ::if(balance<0 && balance+pending!=0):: + + + + + ::end:: + +
+ ::if(p.pending==true):: + + ::else:: + + ::end:: + + ::formatNum(p.amount):: ::currency():: + - ::p.name:: + + ::set pending = pending + p.amount:: + +
+ ::if(balance+pending<0):: + ::_("To be paid"):: ::formatNum(abs(balance+pending)):: ::currency():: pour équilibrer le solde + ::else:: + ::_("Pay back"):: ::formatNum(balance+pending):: ::currency():: pour équilibrer le solde + ::end:: +
+ + + +
+ +

::raw nl2br(user.getAmap().txtDistrib)::

+ + + + + + + ::foreach r sqlLog:: + + + + + + + + ::end:: +
::r.t::ms::r.length::ExpStack::r.sql::
+ + + + diff --git a/lang/master/tpl/distribution/listByDateOnePage.mtt b/lang/master/tpl/distribution/listByDateOnePage.mtt new file mode 100644 index 0000000..e22140f --- /dev/null +++ b/lang/master/tpl/distribution/listByDateOnePage.mtt @@ -0,0 +1,163 @@ + + + + + ::_("Attendance sheet"):: + + + + + ::fill head:: + +

::user._amap.name::

+

::_("Delivery of the"):: ::hDate(date)::

+ + ::end:: + + + ::fill tableHeader:: + + ::_("Qty"):: + ::_("Product"):: + ::_("U.P."):: + ::_("Fees"):: + ::_("Total"):: + + ::_("Signature"):: + + ::end:: + + ::set name = "":: + ::set name2 = "":: + ::set total = 0:: + ::set productNum = 0:: + + ::foreach m orders:: + + ::if m.userName != name || m.userName2 != name2:: + + ::if name != "":: + ::raw "
":: + ::end:: + + ::raw "" :: + + + + + + + + + + + ::raw "
+ + + ::set basket = getBasket(m.userId,place.id,date):: + ::_("Num"):: ::basket.num:: - + ::m.userName:: + + ::set total = 0:: + ::set productNum = 0:: + + ::set u = getUser(m.userId): + ::if u!=null && u.phone!=null:: + Tél: $$nullSafe(::u.phone::) + ::end:: + + ::user._amap.name:: +
+ ::if m.userName2 != null:: + ::_("alternately with")::
+ ::m.userName2:: + ::set total = 0:: + ::set productNum = 0:: + ::end:: +
+ ::if m.userName2 != null:: + ::set u = getUser(m.userId2): + ::if u !=null:: + $$nullSafe(::u.phone::) + ::end:: + ::end:: + + ::_("Delivery of the"):: ::hDate(date):: +
" :: + + ::raw "":: + ::raw tableHeader:: + + + ::end:: + + ::if m.userName != name || m.userName2 != name2:: + ::set class="name":: + ::else:: + ::set class="":: + ::end:: + + + + + + + + + + + ::set name = m.userName :: + ::set name2 = m.userName2 :: + + + ::set next = orders[repeat.m.index+1]:: + ::if next==null || next.userName!=name || next.userName2!=name2:: + + + + + + + + ::end:: + ::end:: + +

::raw nl2br(user.getAmap().txtDistrib)::

+ + + + + +
+ ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + ::set productNum = productNum+m.quantity:: + + ::m.productName:: + + ::formatNum(m.productPrice):: ::currency():: + + ::if m.fees!=null:: + ::formatNum(m.fees):: ::currency():: + ::end:: + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: +
::formatNum(productNum)::::_("TOTAL")::::formatNum(total):: ::currency()::
+ ::foreach r sqlLog:: + + + + + + + + ::end:: +
::r.t::ms::r.length::ExpStack::r.sql::
+ + + + diff --git a/lang/master/tpl/distribution/listByDateOnePageContract.mtt b/lang/master/tpl/distribution/listByDateOnePageContract.mtt new file mode 100644 index 0000000..0e50ef8 --- /dev/null +++ b/lang/master/tpl/distribution/listByDateOnePageContract.mtt @@ -0,0 +1,178 @@ + + + + + ::_("Attendance sheet"):: + + + + + ::fill head:: + +

::user._amap.name::

+

::_("Delivery of the"):: ::hDate(date)::

+ + ::end:: + + + ::fill tableHeader:: + + ::_("Contract"):: + ::_("Qty"):: + ::_("Product"):: + ::_("U.P."):: + ::_("Fees"):: + ::_("Total"):: + + ::_("Signature"):: + + ::end:: + + ::set name = "":: + ::set name2 = "":: + ::set total = 0:: + ::set productNum = 0:: + ::set currentContract = "":: + + ::foreach m orders:: + + ::if m.userName != name || m.userName2 != name2:: + + ::if name != "":: + ::raw "
":: + ::end:: + + ::raw "" :: + + + + + + + + + + + ::raw "
+ + ::set basket = getBasket(m.userId,place.id,date):: + N°::basket.num:: - + ::m.userName:: + + ::set total = 0:: + ::set productNum = 0:: + + ::set u = getUser(m.userId): + ::if u!=null && u.phone!=null:: + Tél: $$nullSafe(::u.phone::) + ::end:: + + ::user._amap.name:: +
+ ::if m.userName2 != null:: + ::_("alternately with")::
+ ::m.userName2:: + ::set total = 0:: + ::set productNum = 0:: + ::end:: +
+ ::if m.userName2 != null:: + ::set u = getUser(m.userId2): + ::if u !=null:: + $$nullSafe(::u.phone::) + ::end:: + ::end:: + + ::_("Delivery of the"):: ::hDate(date):: +
" :: + + ::raw "":: + ::raw tableHeader:: + ::end:: + + ::if m.userName != name || m.userName2 != name2:: + ::set class="name":: + ::set currentContract = "":: + + ::else:: + ::set class="":: + ::end:: + + ::if currentContract != short(m.contractName,40) :: + ::if currentContract == "" :: + ::set td_style="font-size:" + fontRatio + "%" :: + ::else:: + ::set td_style="font-size:" + fontRatio + "%;border-top: 2px solid #AAA;" :: + ::end:: + + ::set currentContract = short(m.contractName,40):: + ::else:: + + ::end:: + + + + + + + + + + ::set name = m.userName :: + ::set name2 = m.userName2 :: + + + ::set next = orders[repeat.m.index+1]:: + ::if next==null || next.userName!=name || next.userName2!=name2:: + + + + + + + + + ::end:: + ::end:: + +

::raw nl2br(user.getAmap().txtDistrib)::

+ + + + + +
+ ::short(m.contractName,40):: + + ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + ::set productNum = productNum+m.quantity:: + + ::m.productName:: + + ::formatNum(m.productPrice):: ::currency():: + + ::if m.fees!=null:: + ::formatNum(m.fees):: ::currency():: + ::end:: + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: +
::formatNum(productNum)::::_("TOTAL")::::formatNum(total):: ::currency()::
+ ::foreach r sqlLog:: + + + + + + + + ::end:: +
::r.t::ms::r.length::ExpStack::r.sql::
+ + + + diff --git a/lang/master/tpl/distribution/listByDateShort.mtt b/lang/master/tpl/distribution/listByDateShort.mtt new file mode 100644 index 0000000..a2362a2 --- /dev/null +++ b/lang/master/tpl/distribution/listByDateShort.mtt @@ -0,0 +1,115 @@ + + + + + ::_("Attendance sheet"):: + + + + +

::user._amap.name::

+

Livraison du ::hDate(date)::

+ + + + + ::set name = "":: + ::set name2 = "":: + ::set total = 0:: + ::set productNum = 0:: + + + + + + + + + + ::foreach m orders:: + + + ::if m.userName != name || m.userName2 != name2:: + ::set class="name":: + ::else:: + ::set class="":: + ::end:: + + + + + ::set name = m.userName :: + ::set name2 = m.userName2 :: + + + + + + + ::set next = orders[repeat.m.index+1]:: + ::end:: + +
::_("Name")::::_("Contact details")::::_("Qty")::::_("Product")::::_("Signature")::
+ ::if m.userName != name || m.userName2 != name2:: + + ::set basket = getBasket(m.userId,place.id,date):: + N°::basket.num:: - + + ::m.userName:: + + ::if m.userName2 != null:: +
::_("alternately with"):: ::m.userName2:: + ::end:: + ::set total = 0:: + ::set productNum = 0:: + ::end:: + +
+ ::if m.userName != name || m.userName2 != name2:: + ::set u = getUser(m.userId): + ::if u !=null:: + $$nullSafe(::u.phone::) + ::end:: + + ::if m.userName2 != null:: + ::set u = getUser(m.userId2): + ::if u !=null:: +
$$nullSafe(::u.phone::) + ::end:: + ::end:: + ::end:: + +
+ ::if(m.quantity==0 && m.canceled):: + ::_("Canceled"):: + ::else:: + ::raw m.smartQt:: + ::end:: + ::set productNum = productNum+m.quantity:: + + ::m.productName:: +
+ +

::raw nl2br(user.getAmap().txtDistrib)::

+ + + + + + + ::foreach r sqlLog:: + + + + + + + + ::end:: +
::r.t::ms::r.length::ExpStack::r.sql::
+ + + + diff --git a/lang/master/tpl/distribution/listByProductUser.mtt b/lang/master/tpl/distribution/listByProductUser.mtt new file mode 100644 index 0000000..574bfe1 --- /dev/null +++ b/lang/master/tpl/distribution/listByProductUser.mtt @@ -0,0 +1,91 @@ + + + + + ::_("Attendance sheet"):: + + + +

+ ::contract._amap.name:: - + ::__("Distribution of the ::date::, from ::from:: to ::to::",{date:dDate(distrib.date),from:hHour(distrib.date),to:hHour(distrib.end)}):: +

+

+ ::distrib._contract.name:: - ::distrib._contract._vendor.name:: +

+ +

+ ::_("Place"):: : + ::distrib._place.toString()::, ::distrib._place.getAddress():: +

+

+ ::set c = contract._contact:: + ::set v = contract._vendor:: + ::_("Contact in charge of the contract") : ::c.firstName:: ::c.lastName::, ::c.email::, ::c.phone:: +

+

+ ::_("Farmer"):: : + ::v.name:: , + ::if v.email!=null :: ::v.email:: ::end::, + ::if v.phone!=null :: ::v.phone:: ::end:: +

+

+ ::_("Members on duty"):: : + ::if distrib._distributor1!=null:: ::distrib._distributor1.getName()::, ::end:: + ::if distrib._distributor2!=null:: ::distrib._distributor2.getName()::, ::end:: + ::if distrib._distributor3!=null:: ::distrib._distributor3.getName()::, ::end:: + ::if distrib._distributor4!=null:: ::distrib._distributor4.getName():: ::end:: +

+ + + + + ::foreach p products:: + + ::end:: + + + ::foreach user users:: + + + ::foreach p products:: + + ::end:: + + + ::end:: + + + ::foreach p products:: + + ::end:: + +
+ ::p.name::
+ ::p.ref:: +
TOTAL
+ ::set basket = getBasket(user.id,distrib._place.id,distrib.date):: + N°::basket.num:: - + + ::user.getCoupleName():: + + + ::set o = orders.get(user.id).get(p.id):: + + ::if(o!=null):: + ::raw o.smartQt:: + ::end:: + ::formatNum(totalByUser(user.id)):: ::currency()::
TOTAL + ::set q = totalByProduct(p.id):: + ::if(p.qt!=null && (p.hasFloatQt || p.variablePrice) ):: + ::q * p.qt:: ::unit(p._unitType,false):: + ::else:: + ::q:: + ::end:: +
+ +

::raw nl2br(distrib._contract._amap.txtDistrib)::

+ + + + diff --git a/lang/master/tpl/distribution/planning.mtt b/lang/master/tpl/distribution/planning.mtt new file mode 100644 index 0000000..cc39240 --- /dev/null +++ b/lang/master/tpl/distribution/planning.mtt @@ -0,0 +1,110 @@ +::use 'design.mtt':: +
+
+

::_("Planning of deliveries:"):: ::contract.name::

+ +

+ ::raw _("Subscribe now by selecting checkboxes corresponding to dates which are convenient for you. The goal of attendances consists in helping during the delivery of products."):: +

+ +
+ + + + ::foreach d distribs:: + ::set date = getDate(d.date):: + + ::end:: + + + + + + + + ::set me = doodle.get(user.id):: + ::foreach d distribs:: + + ::end:: + + + + + ::foreach doo doodle:: + + + + ::foreach d distribs:: + + ::end:: + + ::end:: + + +
::date.dow::
+ ::date.d::
+ ::date.m::
+ ::date.h+":"+date.i::
+ ::user.getCoupleName():: + + + ::if me !=null:: + ::set a = me.planning.get(d.id):: + ::if a!=null:: + + ::else:: + ::if !d.hasEnoughDistributors():: + + ::else:: + ::_("full"):: + ::end:: + ::end:: + ::else:: + ::if !d.hasEnoughDistributors():: + + ::else:: + ::_("full"):: + ::end:: + + ::end:: + +
::doo.user.getCoupleName():: + ::set a = doo.planning.get(d.id):: + + ::if a!=null:: + + ::end:: +
+
+ + + +
+
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/distribution/validate.mtt b/lang/master/tpl/distribution/validate.mtt new file mode 100644 index 0000000..5046099 --- /dev/null +++ b/lang/master/tpl/distribution/validate.mtt @@ -0,0 +1,92 @@ +::use 'design.mtt':: + + + + + +
+
+ +
+

+ ::_("Validate the delivery of the"):: ::hDate(date):: +

+

::place:: +

+ +

+ ::if(confirmed):: +

+ + ::_("Validated"):: +
+ ::else:: +
+ + ::_("Not validated"):: +
+ ::end:: +

+
+ + +

+ + ::_("Back to the summary sheet of orders"):: +

+ + + + + ::foreach u users:: + + ::set basket = getBasket(u.id,place.id,date):: + + ::if(basket.isValidated()==true):: + ::set class="success":: + ::else:: + ::set class="danger":: + ::end:: + + + + + + + + ::end:: + + + + +
+
+ ::_("Num"):: ::basket.num:: +
+
+ ::u.getCoupleName():: + + + ::if(class=="danger"):: + + + ::_("To be validated"):: + + ::else:: + + + ::_("Validated"):: + + ::end:: +
+
+ +
+ +::end:: diff --git a/lang/master/tpl/empty.mtt b/lang/master/tpl/empty.mtt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/lang/master/tpl/empty.mtt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lang/master/tpl/error.mtt b/lang/master/tpl/error.mtt new file mode 100644 index 0000000..5bf07ae --- /dev/null +++ b/lang/master/tpl/error.mtt @@ -0,0 +1,31 @@ + + + + + + +
+
+
+

::_("Ouch !")::

+

+ ::_("An error occurred."):: +

+

+ ::_("If the website is unavailable, please try again in few minutes."):: +
+ ::_("If this happen repeatedly, please let us know so we can solve the issue."):: +

+ +

::_("Technical description of the error")::

+ +
::message::
+ + ::if stack:: +

Stack

+
::stack::
+ ::end:: +
+
+ + \ No newline at end of file diff --git a/lang/master/tpl/form.mtt b/lang/master/tpl/form.mtt new file mode 100644 index 0000000..8f265a8 --- /dev/null +++ b/lang/master/tpl/form.mtt @@ -0,0 +1,14 @@ +::use 'design.mtt':: +
+
+

::title::

+

+ ::raw text:: +

+ + ::raw form:: + +
+
+ +::end:: diff --git a/lang/master/tpl/group/map.mtt b/lang/master/tpl/group/map.mtt new file mode 100644 index 0000000..9455ec9 --- /dev/null +++ b/lang/master/tpl/group/map.mtt @@ -0,0 +1,13 @@ +::use 'base.mtt':: + + + +
+ + + +::end:: diff --git a/lang/master/tpl/group/place.mtt b/lang/master/tpl/group/place.mtt new file mode 100644 index 0000000..b3580cb --- /dev/null +++ b/lang/master/tpl/group/place.mtt @@ -0,0 +1,17 @@ +
+
+ + +
+
+
+
+ + ::place.name::
+ $$nullSafe(::place.address1::)
+ $$nullSafe(::place.address2::)
+ $$nullSafe(::place.zipCode::) $$nullSafe(::place.city::) + +
+ +
\ No newline at end of file diff --git a/lang/master/tpl/group/view.mtt b/lang/master/tpl/group/view.mtt new file mode 100644 index 0000000..1edf17f --- /dev/null +++ b/lang/master/tpl/group/view.mtt @@ -0,0 +1,195 @@ +::use 'base.mtt':: + + +
+ + +
+
+ ::foreach notification getMessages():: +
+ ::if notification.error:: + + ::else:: + + ::end:: + + ::raw notification.text:: +
+ ::end:: +
+
+ +
+ +
+
+

+ + ::if group._image!=null:: + + ::if group.extUrl!=null && group.extUrl!="":: +
+ ::else:: +
+ ::end:: + + ::end:: +

+ +

+ + ::if isMember:: + + + + ::_("Go to my account"):: + + + ::else:: + +

Inscriptions :

+ ::switch group._regOption:: + + ::case:: +

+ ::_("Contact the person in charge in order to subscribe to this group and get to know membership conditions."):: +

+

+ + + ::_("Membership request"):: + +

+ ::case:: +

+ ::_("This group accepts subscriptions on waiting list. A coordinator will contact you."):: +

+

+ + + ::_("Subscription on waiting list"):: + +

+ + ::case:: +

+ + + ::_("Free subscription"):: + +

+ ::case:: +

+ ::_("This group is full and do not accept any more subscription."):: +

+ ::end:: + + ::end:: + + +

+ + ::if user==null:: +
+

::_("Already member? Log in:")::

+ + ::end:: + +
+
+ +

+ ::group.name:: +

+ +

+ ::if group.txtIntro!=null && group.txtIntro!="":: + ::raw nl2br(group.txtIntro):: + ::end:: +

+ + +

+

::_("Next deliveries")::

+ + ::foreach d group.getDeliveries(4):: + +
+ ::set s = getDate( d.date ):: + ::if isToday(d.date):: + $$today(::s.dow::,::s.d::,::s.m::,::s.y::,::s.h::,::d._place::) + ::else:: + $$date(::s.dow::,::s.d::,::s.m::,::s.y::,::d._place::) + ::end:: +
+ + ::end:: +

+ +
+ +

+

::_("Contact")::

+ + + ::group._contact.firstName:: ::group._contact.lastName::
+ + + ::group._contact.email::
+
+ + ::group._contact.phone::
+
+

+ +
+ +

+

::_("Suppliers and products")::

+

+ ::_("Non-complete extract of available products:"):: +

+ + ::foreach c contracts:: +

+ ::c.name::
+ ::c._vendor.name::, $$nullSafe(::c._vendor.zipCode::) $$nullSafe(::c._vendor.city::) +

+ ::foreach p c.getProductsPreview(6):: +
+
+
+ ::end:: +
+

+ ::end:: + +

+ +
+
+ + + + + +
+ +
+ + +
+ +
+ + + +::end:: diff --git a/lang/master/tpl/home.mtt b/lang/master/tpl/home.mtt new file mode 100644 index 0000000..48df434 --- /dev/null +++ b/lang/master/tpl/home.mtt @@ -0,0 +1,353 @@ +::use 'design.mtt':: + +::if user==null:: +
+::end:: + +
+ + + ::if newGroup:: +
+

::_("Welcome to Cagette.net !")::

+

+ ::raw _("Congratulations, you just created a new group !
As an example, we created a fake farmer and fake products.
It will show you how things work together in Cagette.net.
Of course, you'll be able to delete them."):: +

+
+

+ ::raw _("As a starter, we recommand you to follow the guided tour to discover step by step the main sections of the software."):: +

+

+ ::_("Start the guided tour"):: +

+ +
+ ::end:: + + + ::if !amap.hasShopMode():: +
0 )::> + +

::_("Open orders")::

+
    + ::foreach c openContracts:: +
  • ::c.name::
  • + ::end:: +
+
+ ::end:: + + + ::if distribs==null || count(distribs)==0:: +
+ + ::_("You delivery planning is currently empty||on homepage when there is no planned deliveries"):: +
+
+ ::else:: + + + ::foreach d distribs:: + + ::if d.userHasOrders(user):: + + +
+ + ::set place = d.getPlace():: + ::set active = d.isActive():: + ::set start = d.getDate():: + ::set end = d.getEndDate():: + ::set ordersStartDate = d.getOrdersStartDate():: + ::set ordersEndDate = d.getOrdersEndDate():: +
+ +
+ ::set s = getDate(start):: + ::if isToday(start):: + $$today(::s.dow::,::s.d::,::s.m::,::s.y::,::s.h::,null) + ::else:: + $$date(::s.dow::,::s.d::,::s.m::,::s.y::,null) + ::end:: +
+ +
+ ::if active:: + + ::_("Modify my order"):: + + + ::_("Add products"):: + + ::elseif(ordersEndDate!=null):: + + ::if Date.now().getTime() > ordersEndDate.getTime():: + ::_("Order closed since")::
+ ::hDate(ordersEndDate):: + ::else:: + ::_("Order will open on")::
+ ::hDate(ordersStartDate):: + ::end:: + ::end:: +
+ +
+ $$place(::place::) +
+
+ +
::_("My ordered products"):: :
+ +
+ ::foreach dist d.distributions:: + ::set orders = prepare(dist.getUserOrders(user)):: + ::if orders.length>0:: +

+ ::set s = getDate(dist.date) :: + ::set e = getDate(dist.end):: + + ::s.h+":"+s.i:: - ::e.h+":"+e.i:: +  ::_("Distribution"):: ::dist._contract.name:: +

+ +
+ ::foreach c orders:: + +
0:: > + + + + + +
+
+
+ 1:: >::raw c.smartQt:: + + ::_("Canceled"):: + + ::c.productName:: + + ::if c.userId2!=null:: + ::if user.id==c.userId:: + ::set you = c.userName:: + ::set mate = c.userName2:: + ::else:: + ::set mate = c.userName:: + ::set you = c.userName2:: + ::end:: + +
( + + ::raw __("alternated with ::mate::",{mate:mate})::, + + ::if getWhosTurn(c.id,dist)==false:: + + ::if c.userName == you:: + ::_("It's your turn"):: + ::else:: + ::_("It's his/her turn"):: + ::end:: + ::else:: + ::if c.userName2 == you:: + ::_("It's your turn"):: + ::else:: + ::_("It's his/her turn"):: + ::end:: + ::end:: + ) + ::end:: +
+
+ + ::end:: +
+ + + ::end:: + + ::end:: + + +
+ + ::raw d.extraHtml:: +
+ + +
+ + +
+ + + + ::elseif(amap.hasShopMode()):: + + + + + +
+ ::set place = d.getPlace():: + ::set active = d.isActive():: + ::set start = d.getDate():: + ::set end = d.getEndDate():: + ::set ordersStartDate = d.getOrdersStartDate():: + ::set ordersEndDate = d.getOrdersEndDate():: + + ::set class ="":: + ::if !active:: + ::set class="disabled":: + ::end:: + +
+ +
+ ::if active==true:: + + + ::_("Order||Order button on homepage"):: + +
+ + ::elseif(ordersEndDate!=null):: + + ::if Date.now().getTime() > ordersEndDate.getTime():: + ::_("Order closed since")::
+ ::hDate(ordersEndDate):: + ::else:: + ::_("Order will open on")::
+ ::hDate(ordersStartDate):: + ::end:: + ::end:: + +
+ +
+ ::set s = getDate(start):: + ::if isToday(start):: + $$today(::s.dow::,::s.d::,::s.m::,::s.y::,::s.h::,null) + ::else:: + $$date(::s.dow::,::s.d::,::s.m::,::s.y::,null) + ::end:: +
+ +
+ ::set e = getDate(end):: + + ::set start = s.h+":"+s.i:: + ::set end = e.h+":"+e.i:: + + ::__("Delivery from ::start:: to ::end::||Delivery from 18:00 to 19:30",{start:start,end:end}):: +
+ $$place(::place::) +
+
+ + +
+ + ::foreach p d.getProductsExcerpt():: +
+ ::end:: + + +
+ ::raw d.extraHtml:: +
+
+ + +
+ + ::end:: + + ::end:: + + ::end:: + + +
+ + + +
+ +
+ + ::if amap._image!=null:: + ::if amap.extUrl!=null && amap.extUrl!="":: +
+ ::else:: +
+ ::end:: + ::end:: + + ::if amap.txtHome!=null && amap.txtHome!="":: + ::raw nl2br(amap.txtHome):: + ::end:: + +
+ +
0 ::> +

::_("Permanences")::

+

::_("Don't forget to register for permanences")::

+
    + ::foreach c contractsWithDistributors:: +
  • ::c.name::
  • + ::end:: +
+
+ +
+

+ ::_("Warning, you don't have defined a password yet !"):: +

+ ::_("Set my password"):: + +
+ + + ::if blocks!=null:: + ::foreach b blocks:: +
+

::b.title::

+

::raw b.html::

+
+ ::end:: + ::end:: +
+::end:: diff --git a/lang/master/tpl/install/default.mtt b/lang/master/tpl/install/default.mtt new file mode 100644 index 0000000..576ec2d --- /dev/null +++ b/lang/master/tpl/install/default.mtt @@ -0,0 +1,35 @@ +::use 'design.mtt':: +
+
+ +

::_("Update")::

+ + + + ::foreach s status:: + + + + + + + + ::end:: + + +
+ ::s.parameter:: + + $$bool(::s.valid::) + + ::s.message:: + + ::if !s.valid:: + ::_("Update"):: + ::end:: +
+ + +
+
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/macros.mtt b/lang/master/tpl/macros.mtt new file mode 100644 index 0000000..18438e9 --- /dev/null +++ b/lang/master/tpl/macros.mtt @@ -0,0 +1,312 @@ + + + confirm(::if text==null::'Confirmer cette action ?'::else::'::escapeJS(text)::'::end::) + + + + + ::if id == null && def != null:: + ::def:: + ::else:: + /file/::makeFileSign(id)::.jpg + ::end:: + + + + + $$browseCustom(::b::,::url::,Page ::b.page:: ::if b.pages::/::b.pages:: ::end::) + + + < + ::if b.prev::::_("Previous")::::else:: ::_("Previous"):: ::end:: + | ::custom:: | + ::if b.next::::_("Next")::::else:: ::_("Next"):: ::end:: > + + + ::if text==null::::else::::text::::end:: + + + + + +  ::text:: + + + + + + + +  ::text:: + + + + + + + ::if text!=null && text!="":: +  ::text:: + ::end:: + + + + + ::_("Excel/CSV Export"):: + + + + ::if v==true:: + + ::else:: + + ::end:: + + + + ::if(v==true || v==1):: + + ::else:: + + ::end:: + + + + +
+
+
::dow::
+
::d::
+
::m::
+
+ ::if place!=null:: +
+ + ::place:: +
+ ::end:: +
+
+ + + + ::place:: +
+ $$nullSafe(::place.address1::) + $$nullSafe(::place.address2::) + $$nullSafe(::place.zipCode::) + $$nullSafe(::place.city::) +
+
+ + +
+ +
+ ::if Std.parseInt(h)<=12:: + ::_("THIS MORNING"):: + ::elseif Std.parseInt(h)<18:: + CET
::_("AFTERNOON")::
+ ::else:: + ::_("THIS EVENING"):: + ::end:: + +
+ ::if place!=null:: +
+ + ::place:: +
+ ::end:: +
+
+ + + + + + ::if u!=null:: + ::u.firstName:: ::u.lastName::
+ + ::u.email::
+
+ + ::u.phone::
+
+ ::else:: + ::_("No contact"):: + ::end:: + +
+ + + +
+ + + ::raw msg:: +
+
+ + + + ::set x = t.getTypeIndex():: + + + ::if x==0:: +  ::_("Order"):: + ::elseif x==1:: +  ::raw _("CSA contract"):: + ::elseif x==2:: + + ::_("Payment"):: ::t.getPaymentTypeName():: + ::else:: + ::_("Subscription"):: + ::end:: + + + + ::if t.pending==true:: + + ::else:: + + ::end:: + + + + ::t.name::
+ + ::if x==2 && t.pending==true:: + ::if(t.getPaymentType()=="check"):: + ::_("Check to be given at the collection of products"):: + ::elseif(t.getPaymentType()=="cash"):: + ::_("Cash to be given at the collection of products"):: + ::elseif(t.getPaymentType()=="transfer"):: + ::_("This transfer must be validated by a coordinator"):: + ::else:: + ::t.name::
+ ::hDate(t.date):: + ::end:: + + ::else:: + ::hDate(t.date):: + ::end:: + + + ::if(t.amount<0):: + - + ::end:: + + ::formatNum(Math.abs(t.amount)):: ::currency():: + ::set class="":: +
+ + + ::_("Back"):: + + + + + ::set now = Date.now():: +
+
+ + ::set open = 0:: + ::set notyetopened = 0:: + ::set closed = 0:: + + ::foreach d k:: + ::if d.orderStartDate!=null:: + ::if now.getTime() > d.orderStartDate.getTime() && now.getTime() < d.orderEndDate.getTime():: + + ::set open = open+1:: + ::elseif now.getTime() > d.orderEndDate.getTime():: + + ::set closed = closed+1:: + ::else:: + + ::set notyetopened = notyetopened+1:: + ::end:: + ::else:: + + ::set closed = closed+1:: + ::end:: + ::end:: + +
+ ::set x = getDate(k[0].date):: + $$date(::x.dow::,::x.d::,::x.m::,::x.y::,::k[0]._place::) +
+ +
::x.h+":"+x.i::
+ +
+
+ + ::if (open==k.length):: + + + + + ::elseif(closed==k.length):: + + + + + ::elseif(notyetopened==k.length):: + + + + + ::else:: + + + + + ::end:: + + ::k[0]._contract._amap.name::
+ + + ::foreach d k:: + + + + + ::end:: +
+ ::if d.orderStartDate!=null:: + ::if now.getTime() > d.orderStartDate.getTime() && now.getTime() < d.orderEndDate.getTime():: + + + ::elseif now.getTime() > d.orderEndDate.getTime():: + + + ::else:: + + + ::end:: + ::else:: + + + ::end:: + + ::set c = getCatalog(d):: + ::c.name::   + + ::if showBtns:: + + ::end:: +
+ +
+
+
+ +
\ No newline at end of file diff --git a/lang/master/tpl/mail/design.mtt b/lang/master/tpl/mail/design.mtt new file mode 100644 index 0000000..89c41f9 --- /dev/null +++ b/lang/master/tpl/mail/design.mtt @@ -0,0 +1,40 @@ + + + +
+ ::raw __content__:: +
+ +
+ +
+ ::_("This e-mail was sent from"):: ::_("Cagette.net")::. + + ::if group!=null:: +
+ ::_("You receive this message because you are part of"):: ::group.name:: + ::end:: + + ::if list!=null:: + ( ::list:: ) + ::end:: + + + ::if group!=null:: + + ::end:: + +
\ No newline at end of file diff --git a/lang/master/tpl/mail/forgottenPassword.mtt b/lang/master/tpl/mail/forgottenPassword.mtt new file mode 100644 index 0000000..08dacd9 --- /dev/null +++ b/lang/master/tpl/mail/forgottenPassword.mtt @@ -0,0 +1,16 @@ +:: use 'mail/design.mtt':: + +

+ ::_("Hello"):: ::user.firstName::, +

+

+ ::_("You asked to modify your password,"):: + ::_("Click here to perform this operation")::. +

+

+ ::_("Be careful, this link is valid only 24 hours for security reasons."):: +

+ +::end:: + + diff --git a/lang/master/tpl/mail/invitation.mtt b/lang/master/tpl/mail/invitation.mtt new file mode 100644 index 0000000..d6b4f32 --- /dev/null +++ b/lang/master/tpl/mail/invitation.mtt @@ -0,0 +1,45 @@ +:: use 'mail/design.mtt':: + +
+ + + +

+ ::_("Hello"):: $$nullSafe(::name::), +

+ +

+ ::if groupName!=null:: + + ::raw __("As a member of ::groupName::",{groupName:groupName}):: +
+ ::_("you have been pre-registered on Cagette.net"):: + + ::else:: + + ::_("you have been pre-registered on Cagette.net"):: + + ::end:: +

+ +

+ ::_("This software makes the organisation of the group easy by informing you about the next delivery dates, orders and current contracts"):: +

+

+ ::_("In order to finalize the subscription, please choose your password"):: +

+

+ ::_("You will then be able to connect anytime by using your e-mail"):: + ( ::email:: ::if email2!=null:: ou ::email2:: ::end:: ) + ::_("and your password on the website"):: ::HOST:: + + + » ::_("Finalize your subscription"):: + + +

+ +
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/mail/message.mtt b/lang/master/tpl/mail/message.mtt new file mode 100644 index 0000000..3a80a5c --- /dev/null +++ b/lang/master/tpl/mail/message.mtt @@ -0,0 +1,8 @@ +:: use 'mail/design.mtt':: + + +::raw text:: + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/mail/newPasswordConfirmed.mtt b/lang/master/tpl/mail/newPasswordConfirmed.mtt new file mode 100644 index 0000000..a2f0520 --- /dev/null +++ b/lang/master/tpl/mail/newPasswordConfirmed.mtt @@ -0,0 +1,17 @@ +:: use 'mail/design.mtt':: + +

+ ::_("Hello"):: ::user.firstName::, +

+

+ ::__("A new password has been defined for ::site::",{site:NAME}):: +
+ ::raw __("The new password is ::pass::, don't forget it !",{pass:password}):: +

+

+ ::raw __("You can use the following emails to log into your account : ::emails::",{emails:emails}):: +

+ +::end:: + + diff --git a/lang/master/tpl/mail/orderSummaryForMember.mtt b/lang/master/tpl/mail/orderSummaryForMember.mtt new file mode 100644 index 0000000..e871a00 --- /dev/null +++ b/lang/master/tpl/mail/orderSummaryForMember.mtt @@ -0,0 +1,74 @@ +::use 'mail/design.mtt':: + +

Récapitulatif de votre commande "::contract.name::"

+ + + + + + + + + + +
+ Date de livraison + + ::dDate(distribution.date):: de ::hHour(distribution.date):: à ::hHour(distribution.end):: +
Adresse + ::distribution._place.getFullAddress():: +
+ +
+
+ + + + + + + + + + + + ::set total = 0:: + ::foreach m orders:: + + + + + + + + + + ::end:: + + + + + + +
QtéProduitP.USous-totalFraisTotal
+ ::raw m.smartQt: + + ::m.productName:: + + ::formatNum(m.productPrice):: ::currency():: + + ::formatNum(m.subTotal):: ::currency():: + + + ::if m.percentageValue!=null:: + + ::formatNum(m.fees):: ::currency():: + + ::end:: + + + ::formatNum(m.total):: ::currency():: + ::set total = total + m.total:: +
Total :::formatNum(total):: ::currency()::
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/mail/ordersByProduct.mtt b/lang/master/tpl/mail/ordersByProduct.mtt new file mode 100644 index 0000000..03904be --- /dev/null +++ b/lang/master/tpl/mail/ordersByProduct.mtt @@ -0,0 +1,69 @@ +::use 'mail/design.mtt':: + +

Récapitulatif de commande par produits

+ +

+ Les commandes du contrat ::contract.name:: dont vous êtes coordinateur ont fermé le ::hDate(distribution.orderEndDate)::. +

+ + + + + + + + + + +
+ Date de livraison + + ::dDate(distribution.date):: de ::hHour(distribution.date):: à ::hHour(distribution.end):: +
Adresse + ::distribution._place.getFullAddress():: +
+ +
+
+ + + + + + + + + + + + ::set total = 0:: + ::foreach m orders:: + + + + + + + + + ::end:: + + + + + + +
Poids/Vol.QuantitésProduitRéférencePrix unitaire TTCTotal
::raw m.weightOrVolume:: + ::raw m.quantity:: + + ::m.pname:: + + $$nullSafe(::m.ref::) + + ::formatNum(m.priceTTC):: ::currency():: + + ::formatNum(m.totalTTC):: ::currency():: + ::set total = total + m.totalTTC:: +
Total :::formatNum(total):: ::currency()::
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/maintain.mtt b/lang/master/tpl/maintain.mtt new file mode 100644 index 0000000..af51940 --- /dev/null +++ b/lang/master/tpl/maintain.mtt @@ -0,0 +1,17 @@ +::use 'design.mtt':: +
+

+ + ::_("Maintenance")::

+

+ Le site est actuellement en maintenance.
+ Revenez dans quelques instants. +

+

+ The website is currently under maintenance.
+ Please come back later. +

+ +
+ +::end:: diff --git a/lang/master/tpl/member/balance.mtt b/lang/master/tpl/member/balance.mtt new file mode 100644 index 0000000..8a82b04 --- /dev/null +++ b/lang/master/tpl/member/balance.mtt @@ -0,0 +1,63 @@ +::use 'design.mtt':: +
+

::_("Balance of members")::

+
+ +
+
+

::_("Balanced")::

+ + ::foreach ua balanced:: + + + + + ::end:: +
+ ::ua._user.getName():: + + ::ua.balance:: ::currency():: +
+ +
+
+
+
+

::_("In debt")::

+ + ::foreach ua debt:: + + + + + ::end:: +
+ ::ua._user.getName():: + + ::ua.balance:: ::currency():: +
+ +
+
+
+
+

::_("In credit")::

+ + ::foreach ua credit:: + + + + + ::end:: +
+ ::ua._user.getName():: + + ::ua.balance:: ::currency():: +
+ +
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/member/default.mtt b/lang/master/tpl/member/default.mtt new file mode 100644 index 0000000..8ed97b1 --- /dev/null +++ b/lang/master/tpl/member/default.mtt @@ -0,0 +1,164 @@ +::use 'design.mtt':: +
+
+ ::if select!=null:: +

::_("Selection :||show a sublist of members which has been selected"):: + ::if select=="nocontract":: + ::_("Members without any contracts"):: + ::elseif select=="nomembership":: + ::_("Members whose membership should be renewed"):: + ::elseif select=="newusers":: + ::_("Members who has never logged in"):: + ::elseif select=="contract":: + ::_("Members with orders or contracts"):: + ::end:: +

+ +

::members.current().length:: ::_("members")::.

+ + ::_("Back to main page"):: + ::elseif search!=null:: +

::_("Search"):: : ::search::

+ ::_("Back to main page"):: + + ::else:: +

::_("Members")::

+ ::end:: + + + ::if select=="newusers":: +
+

+ ::_("You can invite by email all the members who never logged in, in one single clic."):: +

+

+ ::_("Send invitations"):: +

+ ::end:: + + + ::foreach m members.current():: + + + + + + ::end:: + + + + + +
+ + ::m.lastName:: ::m.firstName:: + ::if m.lastName2!=null:: + & ::m.lastName2:: ::m.firstName2:: + ::end:: + + + ::if m.address1!=null:: + ::m.address1:: + ::end:: + ::if m.address2!=null:: + ::m.address2:: + ::end:: + ::if m.zipCode!=null:: + ::m.zipCode:: + ::end:: + ::if m.city!=null:: + ::m.city:: + ::end:: +
+ +
    + ::if members.paginationStartPage != 1:: +
  • + + + +
  • + ::end:: + ::foreach i loopList(members.paginationStartPage,members.paginationEndPage):: + ::if members.page==i:: +
  • ::i::
  • + ::else:: +
  • ::i::
  • + ::end:: + ::end:: + ::if members.paginationEndPage < members.pages + 1:: +
  • + + + +
  • + ::end:: +
+
+ +
+ + ::_("New member"):: + $$export(::Web.getURI()+"?"+Web.getParamsString()::&csv=1) + ::_("Import members"):: + +
+ + +
+
+ +
+ + +
+

::_("Selections")::

+ + + +
+ + +
+

::_("Waiting list")::

+

+ ::raw __("There is ::waitingList:: people on waiting list.",{waitingList:waitingList}):: +
+ ::_("Display the list"):: +

+
+ + + ::if select!="newusers":: +
+

::_("New members")::

+ ::raw __("There is ::newUsers:: members who never logged in",{newUsers:newUsers}):: +
+ ::_("Display the list"):: +
+ ::end:: + +
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/member/import.mtt b/lang/master/tpl/member/import.mtt new file mode 100644 index 0000000..1171b81 --- /dev/null +++ b/lang/master/tpl/member/import.mtt @@ -0,0 +1,118 @@ +::use 'design.mtt':: + +
+
+

::_("Import")::

+ + + ::if step==1:: +
+

+ +

+ +
+ ::elseif step==2:: +

::_("Users to import")::

+
+ ::if (data!=null && data.length>0) || (data2!=null && data2.length>0):: + + + + + + + + + + + + + + + + ::foreach d data:: + + ::foreach r d:: + + ::end:: + + ::end:: +
::_("First name")::::_("Last name")::::_("Email")::::_("Phone")::::_("Partner first name")::::_("Partner last name")::::_("Partner email")::::_("phone")::::_("Address 1")::::_("Address 2")::::_("zip code")::::_("City")::
+ ::if r!=null:: ::r:: ::end:: +
+ +

::_("Existing accounts")::

+ + + + + + + + + + + + + + + + ::foreach d data2:: + + ::foreach r d:: + + ::end:: + + ::end:: +
::_("First name")::::_("Last name")::::_("Email")::::_("Phone")::::_("Partner first name")::::_("Partner last name")::::_("Partner email")::::_("phone")::::_("Address 1")::::_("Address 2")::::_("zip code")::::_("City")::
+ ::if r!=null:: ::r:: ::end:: +
+ +
+ ::_("Warning"):: +

::_("Before validating this import, please check that this table est correctly filled.
If some datas are shifted or are not linked to the right column, please check your CSV file."):: +

+ ::_("Try again"):: +
+ ::_("Finalize import"):: + ::else:: +
+ ::_("Oups !"):: +

::_("It looks like there is no data to import. Please check your CSV file or check that the users you want to import are not already registred.")::

+ ::_("Try again"):: +
+ + ::end:: +
+ + + ::elseif step==3:: + ::if numImported>0:: + +
+ ::raw __("Congratulations ! You just imported ::numImported:: users in your group.",{numImported:numImported}):: +
+

+ ::raw _("You may now consider inviting them to log into Cagette.net"):: +

+ ::else:: +

::_("You did'nt import anything in your database because your file was empty, or contained already registred users")::

+ ::end:: + ::_("Go back to the main page"):: + + + ::end:: + +
+ +
+

::_("Help")::

+ ::raw _("Here you can import a large amount of members in your database from a simple Excel or Libre Office file.
  • The first step is to download this demo file.
  • Fill out the table, of modify your existing file to striclty match the columns order.
  • Once your file is completed, click on \"save as\" in your spreadsheet software, and select \"CSV\" format
  • Select the following options : separator : coma or dot-coma, encoding : Unicode UTF-8
  • Save the file
  • finally, click on \"select a file\" on this page and upload it.
"):: +
+ + +
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/member/lastMessages.mtt b/lang/master/tpl/member/lastMessages.mtt new file mode 100644 index 0000000..d465423 --- /dev/null +++ b/lang/master/tpl/member/lastMessages.mtt @@ -0,0 +1,30 @@ + + + + + + + + ::foreach m emails:: + + ::if m.failure!=null:: + ::set class = "danger":: + ::else:: + ::set class = "success":: + ::end:: + + + + + + + + + +::end::
::_("Date")::::_("Subject")::::_("Status")::
::hDate(m.date)::::m.subject:: + ::if m.failure!=null:: + ::m.failure:: + ::else:: + ::m.success:: + ::end:: +
\ No newline at end of file diff --git a/lang/master/tpl/member/payments.mtt b/lang/master/tpl/member/payments.mtt new file mode 100644 index 0000000..4e57a59 --- /dev/null +++ b/lang/master/tpl/member/payments.mtt @@ -0,0 +1,121 @@ +::use 'design.mtt':: + +
+

::_("Contact informations")::

+
+ +
::member.firstName:: ::member.lastName:: + ::if member.firstName2!=null && member.lastName2!=null:: + & ::member.firstName2:: ::member.lastName2:: + + ::end::
+ + $$nullSafe(::member.address1::)
+ $$nullSafe(::member.address2::)
+ $$nullSafe(::member.zipCode::) + $$nullSafe(::member.city::)
+
+ + ::if member.phone!=null:: + ::_("Phone"):: : ::member.phone::
+ ::end:: + + ::if member.email!=null:: + ::_("Email"):: : ::member.email::
+ ::end:: + + ::if member.email2!=null:: + ::_("Email"):: : ::member.email2::
+ ::end:: + + +
+ +
+ +
+

::_("Payments")::

+
+ + + + + + + ::if balance<0:: + ::set color = "C00":: + ::else:: + ::set color = "0C0":: + ::end:: + + + + + + ::foreach t rb.current():: + + $$operation(::t::) + + + + ::end:: + + + + + +
::_("Balance"):: : + ::if balance<0:: + - + ::end:: + + ::Math.abs(balance):: ::currency():: + +
+ ::if t.type==2:: +
+ $$edit(::_("Edit")::,/transaction/edit/::t.id::) + $$delete(::_("Del.")::,/transaction/delete/::t.id::?token=::token::) +
+ ::elseif isAdmin:: + + + + ::end:: + +
+
    + ::if rb.paginationStartPage != 1:: +
  • + + + +
  • + ::end:: + ::foreach i loopList(rb.paginationStartPage,rb.paginationEndPage):: + ::if rb.page==i:: +
  • ::i::
  • + ::else:: +
  • ::i::
  • + ::end:: + ::end:: + ::if rb.paginationEndPage < rb.pages + 1:: +
  • + + + +
  • + ::end:: +
+
+ + + $$insert(::_("Insert a payement")::,/transaction/insertPayment/::member.id::) + +
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/member/view.mtt b/lang/master/tpl/member/view.mtt new file mode 100644 index 0000000..14e28e1 --- /dev/null +++ b/lang/master/tpl/member/view.mtt @@ -0,0 +1,223 @@ +::use 'design.mtt':: + +
+

::_("Contact informations")::

+
+ +
+ ::member.firstName:: ::member.lastName:: + + ::if member.firstName2!=null && member.lastName2!=null:: + & ::member.firstName2:: ::member.lastName2:: + ::end:: +
+ + $$nullSafe(::member.address1::)
+ $$nullSafe(::member.address2::)
+ $$nullSafe(::member.zipCode::) + $$nullSafe(::member.city::)
+
+ + ::if member.phone!=null:: + ::_("Téléphone"):: : ::member.phone::
+ ::end:: + + ::if member.email!=null:: + ::_("E-mail"):: : ::member.email::
+ ::end:: + + ::if member.email2!=null:: + ::_("E-mail"):: : ::member.email2::
+ ::end:: + +
+

+ ::_("Last login"):: : + ::if member.ldate!=null:: + ::member.ldate.toString():: + ::else:: + ::_("This member never logged in"):: + ::end:: +
+ ::_("Registred since"):: : + ::if member.cdate!=null:: + ::member.cdate.toString():: + ::else:: + ??? + ::end:: +
+ ::if member.pass=="":: +

::_("This member has not set a password")::
+ ::end:: +

+

+ $$edit(::_("Edit")::,/member/edit/::member.id::) + $$delete(::_("Remove from group")::,/member/delete/::member.id::?token=::token::) + ::_("Put on waiting list"):: + + + + ::_("Received messages"):: + + ::if !member.isFullyRegistred():: + + + ::_("Send an invitation"):: + ::end:: +

+ +

+ ::_("Log in as this member"):: +

+
+ + + ::if user._amap.hasMembership():: +

::_("Membership fee")::

+
+ ::if userAmap.hasValidMembership():: + $$bool(true) ::_("Membership up to date"):: + ::else:: + $$bool(false) ::_("Membership to renew"):: + ::end:: + ::_("for the period||full sentence : Membership up to date for the period 2017-2018"):: ::user._amap.getPeriodName(null):: +
+ ::_("Manage membership fees"):: + +
+ ::end:: + + +
+ +
+

::_("Current orders")::

+
+ ::set o = userContracts:: + ::if o.constOrders.length>0:: +

::_("CSA contracts")::

+ + + + + + + + ::foreach p o.constOrders:: + + + + + + + ::end:: +
::_("Qty||short version for quantity")::::_("Product")::::_("Price")::::_("Contract")::
::raw p.smartQt::::p.productName:: + + ::if p.userId2 != null:: +
::_("Order alternated with"):: + ::if member.id == p.userId:: + ::p.userName2:: + ::else:: + ::p.userName:: + ::end:: + ::end:: + +
::p.subTotal:: ::currency():: + ::p.contractName:: +
+ ::end:: + + ::if count(o.varOrders)>0:: + ::foreach d o.varOrders.keys():: +

::__("Order for ::date::",{date:d})::

+ + + + + + + + + + + + + ::set total = 0:: + ::foreach p o.varOrders.get(d):: + + + + + + + + + + + ::end:: + + + + + +
::_("Qty||short version for quantity")::::_("Product")::::_("U.P||short version of unit price")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Contract")::
::raw p.smartQt::::p.productName::::p.productPrice:: ::currency()::::p.subTotal:: ::currency():: + + ::if p.percentageValue!=null:: + + ::formatNum(p.fees):: ::currency():: + + ::end:: + + + ::formatNum(p.total):: ::currency():: + ::set total = total + p.total:: + + + ::p.contractName:: +
::_("TOTAL")::::formatNum(total):: ::currency()::
+ ::end:: + ::end:: + + +
+
+ + +
+
+ + + ::_("Balance"):: : + ::if userAmap.balance<0:: + ::set color = "C00":: + ::else:: + ::set color = "0C0":: + ::end:: + + ::userAmap.balance:: ::currency():: + + + + + + + ::_("Payments details"):: + + + +
+
+ + +
+

::_("Rights")::

+
+
    + ::foreach r userAmap._rights:: +
  • ::userAmap.getRightName(r)::
  • + ::end:: +
+
+
+ +::end:: diff --git a/lang/master/tpl/member/waiting.mtt b/lang/master/tpl/member/waiting.mtt new file mode 100644 index 0000000..ebf4182 --- /dev/null +++ b/lang/master/tpl/member/waiting.mtt @@ -0,0 +1,47 @@ +::use 'design.mtt':: +
+
+ +

::_("Waiting list")::

+ + + + + + + + + + + + + ::foreach w waitingList:: + + ::set u = w._user:: + + + + + + + + + ::end:: + +
::_("Name")::::_("Email")::::_("Phone")::::_("Registration date")::::_("Message")::
::u.getName()::::u.email::$$nullSafe(::u.phone::)::hDate(w.date)::"::w.message::" + + + ::_("Accept membership request"):: + + + + + ::_("Deny request"):: +
+ +
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/membership/default.mtt b/lang/master/tpl/membership/default.mtt new file mode 100644 index 0000000..7f6e2d9 --- /dev/null +++ b/lang/master/tpl/membership/default.mtt @@ -0,0 +1,32 @@ +::use 'design.mtt':: + +
+
+

::_("Subscription payment of"):: ::member.getCoupleName()::

+ + + + + + + ::foreach m memberships:: + + + + + + ::end:: +
::_("Period")::::_("Subscription payment date")::Actions
::user._amap.getPeriodNameFromYear(m.year)::::hDate(m.date):: + $$delete(::_("Delete")::,/membership/delete/::member.id::/::m.year::?token=::token::) +
+
+
+ +
+
+

::_("Key-in a subscription payment")::

+ ::raw form:: +
+
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/messages/default.mtt b/lang/master/tpl/messages/default.mtt new file mode 100644 index 0000000..b4e4d09 --- /dev/null +++ b/lang/master/tpl/messages/default.mtt @@ -0,0 +1,55 @@ +::use 'design.mtt':: + + + + + +
+ +
+ ::if user.isAmapManager():: + ::_("All sent messages"):: + + ::else:: + ::_("Last sent messages"):: + ::end:: +
+ ::foreach m sentMessages:: + ::m.title:: +
::hDate(m.date)::
+
+ ::end:: +
+ +
+
+ + +
+
+

::_("Send an e-mail")::

+ + ::raw form:: +
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/messages/message.mtt b/lang/master/tpl/messages/message.mtt new file mode 100644 index 0000000..edc2c7d --- /dev/null +++ b/lang/master/tpl/messages/message.mtt @@ -0,0 +1,77 @@ +::use 'design.mtt':: +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
::_("Subject:")::::msg.title::
::_("Sent on the")::::hDate(msg.date)::
::_("Sender"):: + ::if msg._sender==null:: + inconnu + ::else:: + ::msg._sender.firstName:: ::msg._sender.lastName:: + ::end:: +
::_("Receiver(s)"):: + ::if list!=null:: + ::list:: + ::else:: + ::msg._recipients:: + ::end:: +
::_("Status"):: +
+ + ::foreach m status:: + + + ::if m.failure!=null:: + + + + + + ::else:: + + + + + ::end:: + + ::end:: +
::m.email::::m.failure::
::m.email::::m.success::
+
+
::raw msg.body::
+ + ::_("Back"):: + +
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/place/view.mtt b/lang/master/tpl/place/view.mtt new file mode 100644 index 0000000..5e4b33e --- /dev/null +++ b/lang/master/tpl/place/view.mtt @@ -0,0 +1,25 @@ +::use "design.mtt":: + +
+
+ + +
+
+
+
+ + ::place.name::
+ $$nullSafe(::place.address1::)
+ $$nullSafe(::place.address2::)
+ $$nullSafe(::place.zipCode::) $$nullSafe(::place.city::) + +
+ +
+ + +::end:: + diff --git a/lang/master/tpl/product/addimage.mtt b/lang/master/tpl/product/addimage.mtt new file mode 100644 index 0000000..8db7fe7 --- /dev/null +++ b/lang/master/tpl/product/addimage.mtt @@ -0,0 +1,34 @@ +::use 'contractadmin/design.mtt':: + + +

::_("Import a photo of the product")::

+ + +
+ +
+
+ + +
+ ::_("Size of the photo: 300 x 300px")::
+ ::_("Format : JPEG")::
+
+ + +
+
+ ::_("Back to the management of products"):: + +
+ +
+ + +
+ +
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/product/categorize.mtt b/lang/master/tpl/product/categorize.mtt new file mode 100644 index 0000000..e0db06a --- /dev/null +++ b/lang/master/tpl/product/categorize.mtt @@ -0,0 +1,57 @@ +::use 'contractadmin/design.mtt':: + +

::_("Categories")::

+ +

+ ::raw _("You can link your products to categories, in order to better organize them in the \"shop mode\".
To add categories: select checkboxes of products and then select a category in the list at the bottom of the page. Click then on \"add\".
To remove a category: click on it."):: +

+ + + +
+ +
+ +
+ + ::_("Select all"):: + + + + ::_("Add the category"):: + ::_("Save modifications"):: + +
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/product/compose.mtt b/lang/master/tpl/product/compose.mtt new file mode 100644 index 0000000..82ab5ea --- /dev/null +++ b/lang/master/tpl/product/compose.mtt @@ -0,0 +1,20 @@ +::use 'design.mtt':: + +
+
+ + + + +
+ + + + +
+
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/product/import.mtt b/lang/master/tpl/product/import.mtt new file mode 100644 index 0000000..90e75cf --- /dev/null +++ b/lang/master/tpl/product/import.mtt @@ -0,0 +1,111 @@ +::use 'design.mtt':: + +
+
+

::_("Import products")::

+ + ::if step==1:: + +
+

+ +

+

+ +

+
+ + ::elseif step==2:: + +

Produits à importer

+
+ ::if !csv.isEmpty():: + + + + + ::foreach h csv.getHeaders():: + + ::end:: + + + ::foreach d csv.getDatas():: + + ::foreach r d:: + + ::end:: + + ::end:: +
::_(h)::
+ ::if r!=null:: ::r:: ::end:: +
+
+ ::_("Warning"):: +

+ ::raw _("Before validating the import, please check if the table above is correctly filled.
If data are not in line or not corresponding to the right column, it means that your CSV file is not correct."):: +

+ Recommencer +
+ ::_("Import these products in the database"):: + ::else:: + +
+ ::_("Ouch!"):: +

::_("It seems that there is no data to import.")::

+ Recommencer +
+ + ::end:: +
+ + + ::elseif step==3:: + ::if numImported>0:: + +
+ ::__("Congratulations! You have imported ::num:: products in your database", {num:numImported}):: +
+ + ::else:: +

::_("You did not import anything in your database because your file was empty or contained products already present in the database.")::

+ ::end:: + ::_("Back to the management of products"):: + + + ::end:: +
+ +
+

::_("Help")::

+ ::_("This page will allow you to import a large number of products in your database from an Excel file."):: +
+
    +
  • ::raw _("To start, Download this demo file")::
  • +
  • ::raw _("Fill correctly this file, or modify your existing file to respect strictly the order of columns")::
  • +
  • ::raw _("When your file is ready, click on\"Save as\" in your Excel sheet and choose the format CSV")::
  • +
  • ::raw _("Choose the following options: separation characters: comma, encoding: Unicode UTF8")::
  • +
  • ::raw _("Save your file")::
  • +
  • ::raw _("Then click on the button above \"Choose a file\" and send your file")::
  • +
+
+ +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/shop/choose.mtt b/lang/master/tpl/shop/choose.mtt new file mode 100644 index 0000000..1950aba --- /dev/null +++ b/lang/master/tpl/shop/choose.mtt @@ -0,0 +1,108 @@ +::use 'design.mtt':: +
+ +

::_("Choose a delivery")::

+ +
+ + ::if distribs.length==0:: +
+ ::_("There is currently no delivery planned."):: +
+ ::end:: + + ::foreach d distribs:: + +
+
+ ::set active ="":: + ::if d.active==false:: ::set active="disabled":: ::end:: + +
+ + ::set s = getDate( d.startDate):: + +
+
::s.dow::
+
::s.d::
+
::s.m::
+
+ + +
+ + ::set e = getDate(d.endDate):: + de ::s.h+":"+s.i:: à ::e.h+":"+e.i:: +
+ + + ::if d.place!=null:: + +
+ $$nullSafe(::d.place.address1::) + $$nullSafe(::d.place.address2::) + $$nullSafe(::d.place.zipCode::) + $$nullSafe(::d.place.city::) + +
+ ::end:: + + + + +
+ + +
+ +
+ ::foreach p d.products:: + + +
+ +
+ + + ::end:: + + + +
+ + + +
+ + + + +
+ +
+ ::end:: + +
+ +
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/shop/default.mtt b/lang/master/tpl/shop/default.mtt new file mode 100644 index 0000000..5735ef3 --- /dev/null +++ b/lang/master/tpl/shop/default.mtt @@ -0,0 +1,205 @@ +::use 'design.mtt':: +
+ +
+ + +
+ ::if(contracts!=null):: + ::foreach c contracts:: + ::c.name:: + ::end:: + ::end:: +
+ +
+ +
+ ::if place!=null:: + + ::place:: + + ::end:: + + ::if place!=null:: +
+ $$nullSafe(::place.address1::) + $$nullSafe(::place.address2::) + $$nullSafe(::place.zipCode::) + $$nullSafe(::place.city::) +
+ ::end:: +
+ + +
+ ::set hdate = hDate(date):: +
::__("Distribution on ::date::",{date:hdate})::
+ + +
+ + ::_("Orders will close on"):: + + ::if ArrayTool.mapLength(infos) == 1:: + ::hDate( infos.iterator().next()[0].orderEndDate ):: + ::else:: +
    + ::foreach k infos.keys():: +
  • + ::set dists = infos.get(k):: + + ::if dists.length==1:: + ::dists[0]._contract.name:: + ::else:: + ::set tt = "":: + ::foreach d dists:: + ::set tt = tt + d._contract.name + ". ":: + ::end:: + ::_("Autres"):: + ::end:: + + : ::hDate(Date.fromString(k)):: +
  • + ::end:: +
+ ::end:: +
+
+ + + +
+ +
+ + + +
+ ::foreach p products:: + + ::end:: +
+ +
+
+ +
+ + +
+ + + + +
+ ::_("All products")::
+ + ::foreach g group.getCategoryGroups():: +
+

::g.name::

+ ::foreach c g.categs:: + ::c.name::
+ ::end:: +
+ ::end:: + +
+ + + ::if blocks!=null:: + ::foreach b blocks:: +
+

::b.title::

+

::raw b.html::

+
+ ::end:: + ::end:: + + +
+ + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/shop/default2.mtt b/lang/master/tpl/shop/default2.mtt new file mode 100644 index 0000000..379a88d --- /dev/null +++ b/lang/master/tpl/shop/default2.mtt @@ -0,0 +1,8 @@ +::use 'design.mtt':: +
+ +::end:: diff --git a/lang/master/tpl/shop/needLogin.mtt b/lang/master/tpl/shop/needLogin.mtt new file mode 100644 index 0000000..50eb64e --- /dev/null +++ b/lang/master/tpl/shop/needLogin.mtt @@ -0,0 +1,43 @@ +::use 'design.mtt':: + +
+
+
+
+ +::if(group!=null && group.hasPhoneRequired()):: + ::set phoneRequired=true:: +::else:: + ::set phoneRequired=false:: +::end:: + + +::end:: diff --git a/lang/master/tpl/shop/productInfo.mtt b/lang/master/tpl/shop/productInfo.mtt new file mode 100644 index 0000000..803e317 --- /dev/null +++ b/lang/master/tpl/shop/productInfo.mtt @@ -0,0 +1,111 @@ + + +
+ +
+ +
+ +
+ +
+ + ::formatNum(p.price):: ::currency():: ::_("incl. VAT"):: + + ::if (p.vat!=null && p.vat!=0) || p.contractTax!=0:: +
+ + ::if p.vat!=null && p.vat!=0:: + ::p.vat:: ::_("VAT included")::
+ ::end:: + + ::if p.contractTax!=null:: + ::p.contractTax:: % ::p.contractTaxName:: ::_("included")::
+ ::end:: +
+ ::end:: + +
+ +
+ ::if p.unitType!=null && p.qt!=null:: + + + ::set qt = formatNum(p.qt):: + ::set u = unit(p.unitType,qt>1):: + + ::if(p.variablePrice):: + ::__("about ::qt:: ::unit::||product has a variable weight",{qt:qt,unit:u}):: + ::else:: + ::qt:: ::u:: + ::end:: + + +
::raw pricePerUnit(p.price,p.qt,p.unitType)::
+ + ::end:: +
+ +
+ +

+ ::_("Organic agriculture"):: +

+ +

+ ::_("Variable price depending on weight"):: +

+ +

+ ::raw p.desc:: +

+ +
+ + +
+ + +
+ +
+ +
+ +
+ +
+ +

::vendor.name::

+ + ::vendor.city:: (::vendor.zipCode::) + +

+ ::raw nl2br(vendor.desc):: +

+ + ::if vendor.linkUrl!=null:: +

+ ::if vendor.linkText!=null:: + ::vendor.linkText:: + ::else:: + ::_("Read more"):: + ::end:: +

+ ::end:: + +
+ + ::if(product!=null):: + ::set cats = product.getCategories():: +
+

::_("Categories")::

+
+ ::foreach c cats:: + ::c.name::
+ ::end:: +
+
+ ::end:: +
+
\ No newline at end of file diff --git a/lang/master/tpl/stats/default.mtt b/lang/master/tpl/stats/default.mtt new file mode 100644 index 0000000..f087e3d --- /dev/null +++ b/lang/master/tpl/stats/default.mtt @@ -0,0 +1,30 @@ +::use 'design.mtt':: + + + + +
+
+ + titre + + +
+ + blabla +
+ + +
+
+ + + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/transaction/cash.mtt b/lang/master/tpl/transaction/cash.mtt new file mode 100644 index 0000000..2b9d1ee --- /dev/null +++ b/lang/master/tpl/transaction/cash.mtt @@ -0,0 +1,35 @@ +::use 'design.mtt':: +
+
+ + +
+ + ::_("Your order has been recorded !"):: + +
+ +
+ + +
+ +

+ ::_("You chose to pay by cash at the product distribution"):: : +

+ +

+ ::_("Please prepare the following amount for the distribution :"):: : ::formatNum(amount):: ::currency():: +

+ +

+ + ::_("Check my orders"):: +

+ +
+ +
+ +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/transaction/check.mtt b/lang/master/tpl/transaction/check.mtt new file mode 100644 index 0000000..7084650 --- /dev/null +++ b/lang/master/tpl/transaction/check.mtt @@ -0,0 +1,42 @@ +::use 'design.mtt':: +
+
+ + +
+ + ::_("Your order has been recorded !"):: + +
+ +
+ + +
+ +

+ ::_("You chose to pay by check at the product distribution"):: : +

+ + +

+ ::raw __("Prepare a check of ::amount:: ::currency:: payable to : ::checkOrder::",{checkOrder:user._amap.checkOrder,amount:formatNum(amount),currency:currency()}):: +

+

+ ::_("Mention this reference at the back of the check in order to facilitate its process:")::
+ ::code:: +

+ +

+ + + ::_("Check my orders"):: + +

+ +
+ +
+ +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/transaction/moneypot.mtt b/lang/master/tpl/transaction/moneypot.mtt new file mode 100644 index 0000000..c240474 --- /dev/null +++ b/lang/master/tpl/transaction/moneypot.mtt @@ -0,0 +1,42 @@ +::use 'design.mtt':: +
+
+ + +
+ + ::_("Your order has been recorded !"):: + +
+ +
+ + +
+ +

+ ::_("You chose to pay with your money pot."):: : +

+ +

+ ::_("Please remember to clear your balance at the time agreed with the coordinator of your group."):: +

+ +

+ ::__("Your current balance is : ::balance:: ::currency::",{balance: balance,currency: currency() }):: +

+ +

+ + ::_("Check my orders"):: + + + ::_("Check my payments history"):: +

+ +
+ +
+ +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/transaction/pay.mtt b/lang/master/tpl/transaction/pay.mtt new file mode 100644 index 0000000..24ac164 --- /dev/null +++ b/lang/master/tpl/transaction/pay.mtt @@ -0,0 +1,60 @@ +::use 'design.mtt':: +
+
+ +

::_("Order payment")::

+ + + +
+

+ ::_("Amount to pay"):: : ::formatNum(amount):: ::currency():: +

+

+ ::_("Your basket has been recorded, please select a payment method to confirm it."):: +

+
+ + + + +
+ ::if(paymentTypes==null || paymentTypes.length==0):: +
+
+ ::_("Currently no payment method has been defined for this group."):: +
+
+ ::end:: + + + ::foreach p paymentTypes:: +
+ ::if(p.type != "moneypot" || allowMoneyPotWithNegativeBalance || futurebalance >= 0):: + ::set class = "clickable":: + ::set href = p.link:: + ::else:: + ::set class = "clickable disabled":: + ::set href = "#":: + ::set warning = _("You do not have sufficient funds to pay this order with your money pot."):: + ::end:: + +

::p.name::

+ ::raw p.icon:: + ::if( warning ):: +
::warning:: + ::end:: +
+
+ + ::end:: +
+ +
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/transaction/transfer.mtt b/lang/master/tpl/transaction/transfer.mtt new file mode 100644 index 0000000..a12231d --- /dev/null +++ b/lang/master/tpl/transaction/transfer.mtt @@ -0,0 +1,40 @@ +::use 'design.mtt':: +
+
+ +
+ + ::_("Your order has been recorded !"):: + +
+ +
+ +
+ +

+ ::_("You chose to pay by transfer"):: : +

+

+ ::_("Please make a transfer of"):: + ::formatNum(amount):: ::currency():: + + ::_("to the following bank account:")::
+ ::_("IBAN:"):: ::user._amap.IBAN:: +

+

+ ::_("Mention this reference in the label of the transfer in order to facilitate its process:")::
+ ::code:: +

+ +

+ + ::_("Check my orders"):: +

+ +
+ +
+ +
+::end:: diff --git a/lang/master/tpl/transaction/view.mtt b/lang/master/tpl/transaction/view.mtt new file mode 100644 index 0000000..afe40b0 --- /dev/null +++ b/lang/master/tpl/transaction/view.mtt @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + +
Operation ID::op.id::
Name::op.name::
Data::op._data::
Infos + + ::if infos!=null:: + ::foreach h infos.HPAY:: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID::h.ID::
DATE::h.DATE::
SEN::h.SEN::
REC::h.REC::
DEB::h.DEB::
CRED::h.CRED::
REFUND::h.REFUND::
COM::h.COM::
MSG::h.MSG::
STATUS::h.STATUS::
EXTRA + IS3DS : ::h.EXTRA.IS3DS::
+ CTRY : ::h.EXTRA.CTRY::
+ AUTH : ::h.EXTRA.AUTH::
+ NUM : ::h.EXTRA.NUM::
+ EXP : ::h.EXTRA.EXP::
+ TYP : ::h.EXTRA.TYP::
+
INT_MSG::h.INT_MSG::
MLABEL::h.MLABEL::
INT_STATUS::h.INT_STATUS::
+ ::end:: + ::end:: +
+ + + diff --git a/lang/master/tpl/user/choose.mtt b/lang/master/tpl/user/choose.mtt new file mode 100644 index 0000000..3d9106b --- /dev/null +++ b/lang/master/tpl/user/choose.mtt @@ -0,0 +1,108 @@ +::use 'design.mtt':: + +
+

::_("Hello"):: + ::if whichUser()==0:: + ::user.firstName:: + ::else:: + ::user.firstName2:: + ::end:: + ! +

+
+ +
0::> +

::raw _("Connect to your Cagette Pro account to manage your products, catalogs and deliveries.")::

+
+ + + +
+
+ ::foreach p pros:: + + + ::end:: +
+
+ +
+

::raw _("Please click on the Cagette group you want to connect to.")::

+
+ + +
+
+ ::foreach ua amaps:: + ::set group = ua._amap:: + + ::end:: + + ::if amaps.length==0:: +
+
+

+ ::_("You don't belong to any group yet"):: +

+ ::_("Create my own group"):: +
+
+ ::end:: +
+ +
+ + +
+ ::if session.lang!="de":: + ::_("Find other groups near me"):: + ::end:: + ::_("Create my own group"):: + +
+ + + +
0::> +
+

::_("Subscriptions on waiting list")::

+ + ::foreach w wl:: + + + + + + ::end:: +
+ ::w._group.name:: + + ::__("Request sent on ::date::",{ date:hDate(w.date) }):: + + ::_("Cancel"):: +
+
+
+ + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/user/default.mtt b/lang/master/tpl/user/default.mtt new file mode 100644 index 0000000..cc0b4b2 --- /dev/null +++ b/lang/master/tpl/user/default.mtt @@ -0,0 +1,11 @@ +::use 'design.mtt':: + + + + + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/user/definePassword.mtt b/lang/master/tpl/user/definePassword.mtt new file mode 100644 index 0000000..d2682ab --- /dev/null +++ b/lang/master/tpl/user/definePassword.mtt @@ -0,0 +1,39 @@ +:: use 'design.mtt':: + +

::_("Change of password")::

+ +::if error!=null:: +
+ ::error:: +
+::end:: + + ::if step==1 :: +

+ ::_("If you have forgotten your password or if you would like to change it, please key-in below your e-mail address:"):: + + ::raw form:: +

+ ::elseif step==2:: +

+ ::_("An e-mail was sent to you to allow you changing your password."):: +

+ ::elseif step==3:: +

+ ::_("Key-in your new password:"):: + + ::raw form:: +

+ ::else:: +

+ ::_("Congratulations, your password have been modified!"):: +

+

+ ::_("Log in with"):: +

+ + ::end:: + +::end:: + + diff --git a/lang/master/tpl/user/forgottenPassword.mtt b/lang/master/tpl/user/forgottenPassword.mtt new file mode 100644 index 0000000..5098f00 --- /dev/null +++ b/lang/master/tpl/user/forgottenPassword.mtt @@ -0,0 +1,42 @@ +:: use 'design.mtt':: +
+
+

Changement de mot de passe

+ + ::if error!=null:: +
+ ::error:: +
+ ::else:: + + ::if step==1 :: +

+ ::_("If you have forgotten your password or if you would like to change it, please key-in below your e-mail address:"):: + + ::raw form:: +

+ ::elseif step==2:: +
+ ::_("An e-mail was sent to you to allow you changing your password."):: +
+ ::elseif step==3:: +

+ ::_("Key-in your new password:"):: + + ::raw form:: +

+ ::else:: +
+ ::_("Congratulations, your password have been modified!"):: +
+

+ ::_("Log in with your new password"):: +

+ + ::end:: + ::end:: +
+
+::end:: + + diff --git a/lang/master/tpl/user/insert.mtt b/lang/master/tpl/user/insert.mtt new file mode 100644 index 0000000..3ecb884 --- /dev/null +++ b/lang/master/tpl/user/insert.mtt @@ -0,0 +1,35 @@ +::use 'design.mtt':: +
+
+

::title::

+ +

0:: > + ::_("These persons are already in the database, but are not member of this group:"):: +

::foreach u userSims:: + ::u::
+ ::end:: +

+

+ + +

0:: > + ::_("These persons are already member of this group:"):: +

+ ::foreach u userAmaps:: + ::u::
+ ::end:: +

+

+ + +
+ ::raw text:: +
+ + ::if form != null:: + ::raw form:: + ::end:: +
+
+ +::end:: diff --git a/lang/master/tpl/user/login.mtt b/lang/master/tpl/user/login.mtt new file mode 100644 index 0000000..1d07b70 --- /dev/null +++ b/lang/master/tpl/user/login.mtt @@ -0,0 +1,8 @@ +::use 'design.mtt':: + +
+ +
+::end:: \ No newline at end of file diff --git a/lang/master/tpl/user/register.mtt b/lang/master/tpl/user/register.mtt new file mode 100644 index 0000000..06e3099 --- /dev/null +++ b/lang/master/tpl/user/register.mtt @@ -0,0 +1,11 @@ +::use 'design.mtt':: + +
+ +

::_("Sign up!")::

+ + ::raw form:: + +
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/validate/user.mtt b/lang/master/tpl/validate/user.mtt new file mode 100644 index 0000000..e764b69 --- /dev/null +++ b/lang/master/tpl/validate/user.mtt @@ -0,0 +1,284 @@ +::use 'design.mtt':: + +
+
+ +
+

+ ::_("Validate the delivery of the"):: ::hDate(date):: +

+

::place:: +

+ +
+ + ::set total = 0:: + + + + + + + + + + + + + + + + + + + ::foreach o orders:: + + + + + + + + + + + + + ::end:: + + + + + + + + +
Commande
+ +
+ N°::basket.num:: +
+ + ::member.getName():: +
::_("Contract")::::_("Qty")::::_("Ref")::::_("Product")::::_("U.P.")::::_("Sub-total")::::_("Fees")::::_("Total")::::_("Paid")::
+ + ::short(o.contractName,40):: + + + ::raw o.smartQt: + + $$nullSafe(::o.productRef::) + + ::short(o.productName,40):: + + ::formatNum(o.productPrice):: ::currency():: + + ::formatNum(o.subTotal):: ::currency():: + + + ::if o.percentageValue!=null:: + + ::formatNum(o.fees):: ::currency():: + + ::end:: + + + ::formatNum(o.total):: ::currency():: + ::set total = total + o.total:: + + + $$check(::o.paid::) +
::_("Total ordered")::::formatNum(total):: ::currency()::
+ + + ::if (user._amap.hasShopMode()):: + + + + + + + ::set op = basket.getOrderOperation(false):: + + ::if op!=null:: + + $$operation(::op::) + + + + ::set tpaid = 0:: + ::foreach tt op.getRelatedPayments():: + + $$operation(::tt::) + ::if !tt.pending:: + ::set tpaid = tpaid + tt.amount:: + ::end:: + + + ::end:: + + ::set amount = numClean(op.amount):: + ::set tpaid = numClean(tpaid):: + + + + + + + + + ::else:: + + ::end:: +
::_("Payment")::
+ ::if(tt.pending):: + + + ::_("This payment was received"):: + + $$delete(::_("Del.")::,/validate/::date::/::place.id::/::member.id::/deleteOp/::tt.id::?token=::token::) + ::end:: +
::_("Total paid"):: + ::tpaid:: ::currency():: + + +
+
+ ::_("This order has been made when payments were disabled"):: +
+
+ + + ::if(tpaid!=null && amount!=null):: + + ::if(tpaid+amount != 0):: + ::set class="danger":: + ::else:: + ::set class="success":: + ::end:: +
+ ::if(tpaid+amount > 0):: + + $$check(::false::) + ::set str = Math.abs(tpaid+amount)+" "+currency():: + ::raw __("Paid too much, credit of ::amount::",{amount:str}):: + + ::elseif(tpaid+amount < 0):: + + $$check(::false::) + ::_("Missing"):: ::Math.abs(tpaid+amount):: ::currency():: + + ::else:: + + $$check(::true::) ::_("Everything is allright !"):: + + ::end:: +
+ ::end:: + +

+ $$insert(::_("Key-in a refund")::,/validate/::date::/::place.id::/::member.id::/addRefund/) + $$insert(::_("Key-in a payment")::,/validate/::date::/::place.id::/::member.id::/addPayment/) +

+ +

+ + + + ::_("Validate this order"):: + + +

+ + ::else:: + + + + + + + + ::foreach op operations:: + + $$operation(::op::) + + + ::end:: + + + + ::if balance<0:: + ::set color = "C00":: + ::else:: + ::set color = "0C0":: + ::end:: + + + +
+ Solde de l'adhérent ::_("Details"):: +
+ ::if(op.pending && op.type==2):: + + + ::_("This payment has been received"):: + + $$delete(Suppr.,/validate/::date::/::place.id::/::member.id::/deleteOp/::op.id::?token=::token::) + ::end:: +
Solde : + ::balance:: ::currency():: +
+ +

+ $$insert(::_("Key-in a refund")::,/validate/::date::/::place.id::/::member.id::/addRefund/) + $$insert(::_("Key-in a payment")::,/validate/::date::/::place.id::/::member.id::/addPayment/) +

+ +

+ ::if(balance < 0):: + + + ::_("Validate this order"):: + + +

+ ::raw _("You cannot validate this order
because the balance of the member is negative"):: +
+ + ::else:: + + + + ::_("Validate this order"):: + + ::end:: +

+ + ::end:: + + + +

+ + ::_("Back to the delivery validation"):: + + ::_("Payment history of this member"):: +

+ +
+
+::end:: diff --git a/lang/master/tpl/vendor/addimage.mtt b/lang/master/tpl/vendor/addimage.mtt new file mode 100644 index 0000000..f07e124 --- /dev/null +++ b/lang/master/tpl/vendor/addimage.mtt @@ -0,0 +1,38 @@ +::use 'design.mtt':: + + + + + + + +
+

Importer une photo pour ::vendor.name::

+ + +
+
+ + +
+ ::_("Recommended size of the photo: 300 x 300px")::
+ ::_("Format : JPEG")::
+
+ + +
+
+ ::_("Back"):: +
+
+ +
+
+ + +
+
+ + + +::end:: \ No newline at end of file diff --git a/lang/master/tpl/vendor/default.mtt b/lang/master/tpl/vendor/default.mtt new file mode 100644 index 0000000..9c10f7a --- /dev/null +++ b/lang/master/tpl/vendor/default.mtt @@ -0,0 +1,54 @@ +::use 'design.mtt':: +
+
+ +

::_("Suppliers")::

+ + + + + + ::foreach m vendors.current():: + + + + + + ::end:: + + + + + +
+ + ::m.name:: + + + +
+ << +   + page ::vendors.page::/::vendors.pages:: +   + >> +
+ + + +
+ +
+
+ +
+ + +
+ ::_("On this page you can manage the list of suppliers of your group."):: +
+
+ +::end:: \ No newline at end of file diff --git a/lang/master/tpl/vendor/view.mtt b/lang/master/tpl/vendor/view.mtt new file mode 100644 index 0000000..7939dde --- /dev/null +++ b/lang/master/tpl/vendor/view.mtt @@ -0,0 +1,22 @@ +::use 'design.mtt':: +
+
+ +

::vendor.name::

+ ::_("Supplier")::
+ + + $$edit(Modifier,/vendor/edit/::vendor.id::) + + +
+
+ +
+ + +
+
+
+ +::end:: \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8ccc6ba --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6149 @@ +{ + "name": "Cagette.net", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@types/react": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.0.0.tgz", + "integrity": "sha512-lmu8zYXNhkZrIAgFgJK2/tGNXfdL//tKbtDEeph+doEAsBm+C2vnD+mAkR17bumu9K8ivYufySkkX4vrq9L8Sw==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "ajv": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", + "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + } + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": false, + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": false, + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asap": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz", + "integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8=" + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.22.0" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.3.13", + "babel-plugin-transform-react-display-name": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "babel-plugin-transform-react-jsx-self": "^6.22.0", + "babel-plugin-transform-react-jsx-source": "^6.22.0", + "babel-preset-flow": "^6.23.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", + "dev": true, + "requires": { + "babel-core": "^6.0.14", + "object-assign": "^4.0.0" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "dev": true + }, + "blacklist": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/blacklist/-/blacklist-1.1.4.tgz", + "integrity": "sha1-st0J1hd2JbLKppg1o3somV+povI=" + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "bootstrap": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.4.tgz", + "integrity": "sha1-AjeLSmts56VeOt0e2uQa1590ZGo=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "browserify": { + "version": "14.5.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-14.5.0.tgz", + "integrity": "sha512-gKfOsNQv/toWz+60nSPfYzuwSEdzvV2WdxrVPUbPD/qui44rAkB3t3muNtmmGYHqrG56FGwX9SUEQmzNLAeS7g==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.2.0", + "buffer": "^5.0.2", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.1", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "~1.1.0", + "duplexer2": "~0.1.2", + "events": "~1.1.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "module-deps": "^4.0.8", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^2.0.0", + "string_decoder": "~1.0.0", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "~0.0.0", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "~0.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", + "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "dev": true, + "requires": { + "acorn": "^4.0.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-pack": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", + "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.7.1", + "defined": "^1.0.0", + "through2": "^2.0.0", + "umd": "^3.0.0" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "buffer": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", + "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "dev": true, + "requires": { + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~2.0.0", + "typedarray": "~0.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "shasum": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detective": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz", + "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", + "dev": true, + "requires": { + "acorn": "^4.0.3", + "defined": "^1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "combine-source-map": "~0.7.1", + "concat-stream": "~1.5.1", + "is-buffer": "^1.1.0", + "lexical-scope": "^1.2.0", + "process": "~0.11.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "isarray": "~0.0.1", + "stream-splicer": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "dev": true, + "requires": { + "astw": "^2.0.0" + } + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "module-deps": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", + "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.0", + "defined": "^1.0.0", + "detective": "^4.0.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.3", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "dev": true, + "requires": { + "path-platform": "~0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "dev": true, + "requires": { + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" + } + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.2.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "^1.1.0" + } + }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "dev": true, + "requires": { + "acorn": "^4.0.3" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "dev": true, + "requires": { + "process": "~0.11.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": false, + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-react-class": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.0.tgz", + "integrity": "sha1-q0SEl8JlZuHilBPogyB9V8/nvtQ=", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "cross-env": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.1.tgz", + "integrity": "sha512-Wtvr+z0Z06KO1JxjfRRsPC+df7biIOiuV4iZ73cThjFGkH+ULBZq1MkBdywEcJC4cTDbO6c8IjgRjfswx3YTBA==", + "dev": true, + "requires": { + "cross-spawn": "^5.1.0", + "is-windows": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "dom-helpers": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "eonasdan-bootstrap-datetimepicker": { + "version": "4.7.14", + "resolved": "https://registry.npmjs.org/eonasdan-bootstrap-datetimepicker/-/eonasdan-bootstrap-datetimepicker-4.7.14.tgz", + "integrity": "sha1-xAtNCEBJGBa17qhi0WRvuLwaOiA=", + "requires": { + "bootstrap": "^3.0", + "jquery": "^3.3.1", + "moment": "^2.9.0" + }, + "dependencies": { + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + } + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.9.0.tgz", + "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fbjs": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.12.tgz", + "integrity": "sha1-ELXZL3bUVXX9Y6IX1OoCvqL47QQ=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.9" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^0.4.1", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true, + "optional": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "hawk": "3.1.3", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "request": "2.81.0", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "geolib": { + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/geolib/-/geolib-2.0.24.tgz", + "integrity": "sha512-NR0AyYyEnGrFS9JvSFmmotQDxVCORJgDHdvBwSatxl5aHarOLMh3KuGI83bCvCfObjfoEiDe8Ung8GGLGAtthw==" + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.4", + "minimatch": "~3.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graphlib": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.1.tgz", + "integrity": "sha1-QjUsUrovTQNctWbrkfc5X3bryVE=", + "requires": { + "lodash": "^4.11.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" + } + }, + "haxe-modular": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/haxe-modular/-/haxe-modular-0.7.0.tgz", + "integrity": "sha1-MAXknwMXtVlyt9PQXNGr1PLSCPU=", + "requires": { + "acorn": "^4.0.3", + "graphlib": "^2.1.1", + "react-deep-force-update": "^2.0.1", + "react-proxy": "^2.0.8", + "source-map": "^0.5.6" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "requires": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "value-equal": "^0.4.0", + "warning": "^3.0.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "hoist-non-react-statics": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", + "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha512-miqftL8E53hH0dtQqLdN+3JwClyJiITcif3gy+RiUlnLJUhEwdyRC29/gpYbuC9IhazGSnP8TjbvxWw2AZylWQ==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jquery": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=" + }, + "js-base64": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", + "integrity": "sha512-Y2/+DnfJJXT1/FCwUebUhLWb3QihxiSC42+ctHLGogmW2jPY6LCapMdFZXRvVP2z6qyKW7s6qncE/9gSqZiArw==", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": false, + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leaflet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.3.1.tgz", + "integrity": "sha512-adQOIzh+bfdridLM1xIgJ9VnJbAUY3wqs/ueF+ITla+PLQ1z47USdBKUf+iD9FuUA8RtlT6j6hZBfZoA6mW+XQ==" + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash-es": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.5.tgz", + "integrity": "sha512-Ez3ONp3TK9gX1HYKp6IhetcVybD+2F+Yp6GS9dfH8ue6EOCEzQtQEh4K0FYWBP9qLv+lzeQAYXw+3ySfxyZqkw==" + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.mergewith": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "~1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", + "dev": true + }, + "node-fetch": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "2", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", + "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.3.2", + "node-gyp": "^3.3.1", + "npmlog": "^4.0.0", + "request": "^2.79.0", + "sass-graph": "^2.1.1", + "stdout-stream": "^1.4.0" + }, + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-all": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", + "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "chalk": "^2.1.0", + "cross-spawn": "^5.1.0", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "ps-tree": "^1.1.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "outpipe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", + "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", + "dev": true, + "requires": { + "shell-quote": "^1.4.2" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": false, + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prop-types": { + "version": "15.5.10", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", + "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1" + } + }, + "prop-types-extra": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.0.tgz", + "integrity": "sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg==", + "requires": { + "react-is": "^16.3.2", + "warning": "^3.0.0" + } + }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "dev": true, + "requires": { + "event-stream": "~3.3.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + }, + "dependencies": { + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "react": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/react/-/react-15.6.1.tgz", + "integrity": "sha1-uqhDTsZ4C96ZfNw4C3nNM7ljk98=", + "requires": { + "create-react-class": "^15.6.0", + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" + } + }, + "react-bootstrap-typeahead": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/react-bootstrap-typeahead/-/react-bootstrap-typeahead-1.4.2.tgz", + "integrity": "sha1-GRPjLOpNeb7NA6yrvZM2EWiEgVs=", + "requires": { + "classnames": "^2.2.0", + "create-react-class": "^15.5.2", + "invariant": "^2.2.1", + "lodash": "^4.17.2", + "prop-types": "^15.5.8", + "react-highlighter": "^0.4.0", + "react-input-autosize": "^1.1.4", + "react-onclickoutside": "^5.7.0", + "react-overlays": "^0.7.0", + "react-prop-types": "^0.4.0", + "warning": "^3.0.0" + } + }, + "react-datetime": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-datetime/-/react-datetime-2.9.0.tgz", + "integrity": "sha512-gyfogbSC7xF8aK8wIBxrptNchPfM1H72JT1hz1pTTn0VwodKkaIWNTA9KIIsPocxjGpOjvEum5Rt9MvrZz8AtQ==", + "requires": { + "@types/react": ">=15", + "object-assign": "^3.0.0", + "prop-types": "^15.5.7", + "react-onclickoutside": "^5.9.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + } + } + }, + "react-deep-force-update": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz", + "integrity": "sha1-jqQmPNZFWgULN0RbPwj9g52G6Qk=" + }, + "react-dom": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.1.tgz", + "integrity": "sha1-LLDtQZEDjlPCCes6eaI+Kkz5lHA=", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" + } + }, + "react-highlighter": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-highlighter/-/react-highlighter-0.4.3.tgz", + "integrity": "sha512-dwItRaGRHBceuzZd5NXeroapdmZ2JCAWZ3AdwdthRlSkdtPCY18DWrd6mPmiMCfSB6lgVwwCPQl4unZzG5sXXw==", + "requires": { + "blacklist": "^1.1.4", + "create-react-class": "^15.6.2", + "escape-string-regexp": "^1.0.5", + "prop-types": "^15.6.0" + }, + "dependencies": { + "create-react-class": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + } + } + }, + "react-input-autosize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-1.2.0.tgz", + "integrity": "sha1-hyQQcRWfdCEjiXaR2meW7DO1fQU=", + "requires": { + "create-react-class": "^15.5.2", + "prop-types": "^15.5.8" + } + }, + "react-is": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.5.1.tgz", + "integrity": "sha512-Q7S+9y2lJA9oJCMqLt045f+kLRhsMLA1wW2DAGXA6b7wcTQRHnUDMc5oR49tn0Z4swvnfV+/t8iZFXY74IQmpA==" + }, + "react-leaflet": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-1.8.0.tgz", + "integrity": "sha512-/2mm/ZQodvcknMJpHm0UMbsQIeQVe9TNA62TUYzTWEX6yAqfLxjQmKIio0xKWSoMIRuQ0R1lROvVZFgiHT7KNw==", + "requires": { + "lodash": "^4.0.0", + "lodash-es": "^4.0.0", + "warning": "^3.0.0" + } + }, + "react-onclickoutside": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-5.11.1.tgz", + "integrity": "sha1-ADFOUlZ89V+rqUyrus0RlhkHBiM=", + "requires": { + "create-react-class": "^15.5.x" + } + }, + "react-overlays": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.7.4.tgz", + "integrity": "sha512-7vsooMx3siLAuEfTs8FYeP/lAORWWFXTO8PON3KgX0Htq1Oa+po6ioSjGyO0/GO5CVSMNhpWt6V2opeexHgBuQ==", + "requires": { + "classnames": "^2.2.5", + "dom-helpers": "^3.2.1", + "prop-types": "^15.5.10", + "prop-types-extra": "^1.0.1", + "warning": "^3.0.0" + } + }, + "react-places-autocomplete": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-6.0.2.tgz", + "integrity": "sha512-aWCfUL4auCx2Hhq7eabB4EOnK/GtAwFyQaqmnPMY2dLJtSQcKPMu5UMeVU2RXYUy6ySvN1UarYDHbPufSn8IFg==", + "requires": { + "lodash.debounce": "^4.0.8", + "prop-types": "^15.5.8" + } + }, + "react-prop-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.4.0.tgz", + "integrity": "sha1-+ZsL+0AGkpya8gUefBQUpcdbk9A=", + "requires": { + "warning": "^3.0.0" + } + }, + "react-proxy": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-2.0.8.tgz", + "integrity": "sha1-dq54yb5OVNQJz+x7t9UT7H8bKEw=", + "requires": { + "lodash": "^4.6.1" + } + }, + "react-router": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", + "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", + "requires": { + "history": "^4.7.2", + "hoist-non-react-statics": "^2.3.0", + "invariant": "^2.2.2", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.5.4", + "warning": "^3.0.0" + } + }, + "react-router-dom": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", + "requires": { + "history": "^4.7.2", + "invariant": "^2.2.2", + "loose-envify": "^1.3.1", + "prop-types": "^15.5.4", + "react-router": "^4.2.0", + "warning": "^3.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "integrity": "sha512-SfBHKFbV8XMg3KaaCxkdxQZ76Si5/ELNRSgg+FDa0fbSLwGxvQDx+aJey1bjEa4FYo1svwdf9q/BsgPuvvkH7w==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.0", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha512-V0iQEZ/uoem3NmD91rD8XiuozJnq9/ZJnbHVXHnWqP1ucAhS3yJ7sLIIzEi57wFFcK3oi3kFUC46uSyWr35mxg==", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.x.x" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "^1.0.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + } + }, + "stdout-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + } + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha512-tmNYYHFqXmaKSSlOU4ZbQ82cxmFQa5LRWKFtWCNkGIiZ3/VHmOffCeWfBRZZRyXAhNP9itVMR+cuvomBOPlm8g==", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "ua-parser-js": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.13.tgz", + "integrity": "sha1-zZ3S+GSTs/RNvu7zeA/adMXuFL4=" + }, + "uglify-js": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.9.tgz", + "integrity": "sha512-ari2E89bD7f+fMU173NgF12JBcOhgoxeyuCs97h5K58IBENrnG9eVj2lFadrOPdqf0KifsxVmUQfzA2cHNxCZQ==", + "dev": true, + "requires": { + "commander": "~2.11.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + } + } + }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchify": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.9.0.tgz", + "integrity": "sha1-8HX9LoqGrN6Eztum5cKgvt1SPZ4=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "browserify": "^14.0.0", + "chokidar": "^1.0.0", + "defined": "^1.0.0", + "outpipe": "^1.1.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha512-iTwvhNBRetXWe81+VcIw5YeadVSWyze7uA7nVnpP13ulrpnJ3UfQm5ApGnrkmxDJFdrblRdZs0EvaTCIfei5oQ==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..378164c --- /dev/null +++ b/package.json @@ -0,0 +1,52 @@ +{ + "name": "Cagette.net", + "description": "le logiciel libre du circuit court", + "author": "François Barbut ", + "license": "GPL-2.0", + "homepage": "http://www.cagette.net", + "dependencies": { + "bootstrap": "^3.3.4", + "eonasdan-bootstrap-datetimepicker": "^4.7.14", + "geolib": "^2.0.24", + "haxe-modular": "^0.7.0", + "jquery": "^2.2.4", + "leaflet": "^1.3.1", + "react": "^15.6.1", + "react-bootstrap-typeahead": "1.4.2", + "react-datetime": "^2.9.0", + "react-dom": "^15.6.1", + "react-leaflet": "^1.8.0", + "react-places-autocomplete": "^6.0.2", + "react-router": "^4.2.0", + "react-router-dom": "^4.2.2" + }, + "devDependencies": { + "babel-preset-es2015": "^6.24.1", + "babel-preset-react": "^6.24.1", + "babelify": "^7.3.0", + "browserify": "^14.4.0", + "cross-env": "^5.1.1", + "node-sass": "^4.5.3", + "npm-run-all": "^4.1.2", + "uglify-js": "^3.1.9", + "watchify": "^3.9.0" + }, + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:js": "haxe cagetteJs.hxml", + "build:sass": "node-sass www/css -o www/css", + "watch:sass": "npm run build:sass -- --watch", + "build2": "babel src -d lib", + "libs:dev": "browserify js/libs/libs.js -o www/js/libs.js -d", + "libs:prod": "cross-env NODE_ENV=production browserify js/libs/libs.js | uglifyjs -c -m > www/js/libs.js", + "test": "haxe testsJS.hxml && node js/test/tests.js", + "prepush": "npm test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/bablukid/cagette.git" + }, + "bugs": { + "url": "https://github.com/bablukid/cagette/issues" + } +} diff --git a/potGeneration.hxml b/potGeneration.hxml new file mode 100644 index 0000000..6e7ccb9 --- /dev/null +++ b/potGeneration.hxml @@ -0,0 +1,21 @@ +-lib dbadmin +-lib templo +-lib sugoi +-lib hxevents +-lib thx.semver +-lib thx.csv +-lib datetime +-lib hscript +-lib smtpmailer +-lib record-macros +-cp common +-cp src +-cp lang/master/tpl +-neko www/index.n +-main App + +#POT GENERATION +-D i18n_parsing +-D no-deprecation-warnings + + diff --git a/src/App.hx b/src/App.hx new file mode 100755 index 0000000..63cc2e7 --- /dev/null +++ b/src/App.hx @@ -0,0 +1,306 @@ +import db.User; +import thx.semver.Version; +import Common; + +class App extends sugoi.BaseApp { + + public static var current : App = null; + public static var t : sugoi.i18n.translator.ITranslator; + public static var config = sugoi.BaseApp.config; + + public var eventDispatcher :hxevents.Dispatcher; + public var plugins : Array; + + /** + * Version management + * @doc https://github.com/fponticelli/thx.semver + */ + //public static var VERSION = ([0,9,2] : Version).withPre("july"); + public static var VERSION = ([0,9,2] : Version).withPre(MyMacros.getGitShortSHA(), MyMacros.getGitCommitDate()); + + public function new(){ + super(); + } + + public static function main() { + + App.t = sugoi.form.Form.translator = new sugoi.i18n.translator.TMap(getTranslationArray(), "fr"); + sugoi.BaseApp.main(); + } + + /** + * Init plugins and event dispatcher just before launching the app + */ + override public function mainLoop() { + eventDispatcher = new hxevents.Dispatcher(); + plugins = []; + //internal plugins + plugins.push(new plugin.Tutorial()); + + //optionnal plugins + #if plugins + plugins.push( new hosted.HostedPlugIn() ); + plugins.push( new pro.ProPlugIn() ); + plugins.push( new connector.ConnectorPlugIn() ); + plugins.push( new pro.LemonwayEC() ); + plugins.push( new who.WhoPlugIn() ); + #end + + super.mainLoop(); + } + + public function getCurrentGroup(){ + if (session == null) return null; + if (session.data == null ) return null; + var a = session.data.amapId; + if (a == null) { + return null; + }else { + return db.Amap.manager.get(a,false); + } + } + + override function beforeDispatch() { + + //send "current page" event + event( Page(this.uri) ); + + super.beforeDispatch(); + } + + public function getPlugin(name:String):sugoi.plugin.IPlugIn { + for (p in plugins) { + if (p.getName() == name) return p; + } + return null; + } + + public static function log(t:Dynamic) { + if(App.config.DEBUG) { + neko.Web.logMessage(Std.string(t)); //write in Apache error log + #if weblog + Weblog.log(t); //write en Weblog console (https://lib.haxe.org/p/weblog/) + #end + } + } + + public function event(e:Event) { + if(e==null) return null; + this.eventDispatcher.dispatch(e); + return e; + } + + /** + * Translate DB objects fields in forms + */ + public static function getTranslationArray() { + //var t = sugoi.i18n.Locale.texts; + var out = new Map(); + //out.set("firstName", t._("First name") ); + //out.set("lastName", t._("Last name")); + out.set("firstName2", "Prénom du conjoint"); + out.set("lastName2", "Nom du conjoint"); + out.set("email2", "e-mail du conjoint"); + //out.set("pass", t._("Password") ); + //out.set("address1", t._("address") ); + //out.set("address2", t._("address") ); + out.set("zipCode", "code postal"); + out.set("city", "commune"); + out.set("phone", "téléphone"); + out.set("phone2", "téléphone du conjoint"); + out.set("select", "sélectionnez"); + out.set("contract", "Contrat"); + out.set("place", "Lieu"); + out.set("name", "Nom"); + out.set("cdate", "Date d'entrée dans le groupe"); + out.set("quantity", "Quantité"); + out.set("paid", "Payé"); + out.set("user2", "(facultatif) partagé avec "); + out.set("product", "Produit"); + out.set("user", "Adhérent"); + out.set("txtIntro", "Texte de présentation du groupe"); + out.set("txtHome", "Texte en page d'accueil pour les adhérents connectés"); + out.set("txtDistrib", "Texte à faire figurer sur les listes d'émargement lors des distributions"); + out.set("extUrl", "URL du site du groupe."); + + out.set("distributor1", "Distributeur 1"); + out.set("distributor2", "Distributeur 2"); + out.set("distributor3", "Distributeur 3"); + out.set("distributor4", "Distributeur 4"); + out.set("distributorNum", "Nbre de distributeurs nécessaires (de 0 à 4)"); + + out.set("startDate", "Date de début"); + out.set("endDate", "Date de fin"); + + out.set("orderStartDate", "Date ouverture des commandes"); + out.set("orderEndDate", "Date fermeture des commandes"); + out.set("openingHour", "Heure d'ouverture"); + out.set("closingHour", "Heure de fermeture"); + + out.set("date", "Date de distribution"); + out.set("active", "actif"); + + out.set("contact", "Reponsable"); + out.set("vendor", "Producteur"); + out.set("text", "Texte"); + out.set("flags", "Options"); + out.set("4h", "Recevoir des notifications par email 4h avant les distributions"); + out.set("HasEmailNotif4h", "Recevoir des notifications par email 4h avant les distributions"); + out.set("24h", "Recevoir des notifications par email 24h avant les distributions"); + out.set("HasEmailNotif24h", "Recevoir des notifications par email 24h avant les distributions"); + out.set("Ouverture", "Recevoir des notifications par email pour l'ouverture des commandes"); + out.set("Tuto", "Activer tutoriels"); + out.set("HasMembership", "Gestion des adhésions"); + out.set("DayOfWeek", "Jour de la semaine"); + out.set("Monday", "Lundi"); + out.set("Tuesday", "Mardi"); + out.set("Wednesday", "Mercredi"); + out.set("Thursday", "Jeudi"); + out.set("Friday", "Vendredi"); + out.set("Saturday", "Samedi"); + out.set("Sunday", "Dimanche"); + out.set("cycleType", "Récurrence"); + out.set("Weekly", "hebdomadaire"); + out.set("Monthly", "mensuelle"); + out.set("BiWeekly", "toutes les deux semaines"); + out.set("TriWeekly", "toutes les 3 semaines"); + out.set("price", "prix TTC"); + out.set("uname", "Nom"); + out.set("pname", "Produit"); + out.set("organic", "Agriculture biologique"); + out.set("hasFloatQt", "Autoriser quantités \"à virgule\""); + + out.set("membershipRenewalDate", "Adhésions : Date de renouvellement"); + out.set("membershipPrice", "Adhésions : Coût de l'adhésion"); + out.set("UsersCanOrder", "Les adhérents peuvent saisir leur commande en ligne"); + out.set("StockManagement", "Gestion des stocks"); + out.set("contact", "Responsable"); + out.set("PercentageOnOrders", "Ajouter des frais au pourcentage de la commande"); + out.set("percentageValue", "Pourcentage des frais"); + out.set("percentageName", "Libellé pour ces frais"); + out.set("fees", "frais"); + out.set("AmapAdmin", "Administrateur du groupe"); + out.set("Membership", "Accès à la gestion des adhérents"); + out.set("Messages", "Accès à la messagerie"); + out.set("vat", "TVA"); + out.set("desc", "Description"); + out.set("ShopMode", "Mode boutique"); + out.set("ComputeMargin", "Appliquer une marge à la place des pourcentages"); + out.set("ShopCategoriesFromTaxonomy", "Catégoriser automatiquement les produits"); + out.set("HidePhone", "Masquer le téléphone du responsable sur la page publique"); + out.set("PhoneRequired", "Saisie du numéro de téléphone obligatoire"); + out.set("ref", "Référence"); + out.set("linkText", "Intitulé du lien"); + out.set("linkUrl", "URL du lien"); + + out.set("Amap", "AMAP"); + out.set("GroupedOrders", "Groupement d'achat"); + out.set("ProducerDrive", "Collectif de producteurs"); + out.set("FarmShop", "Vente à la ferme"); + + out.set("regOption", "Inscription de nouveaux adhérents"); + out.set("Closed", "Fermé : Le coordinateur ajoute les nouveaux adhérents"); + out.set("WaitingList", "Liste d'attente"); + out.set("Open", "Ouvert : tout le monde peut s'inscrire"); + out.set("Full", "Complet : Le groupe n'accepte plus de nouveaux adhérents"); + out.set("percent", "Pourcentage"); + out.set("pinned", "Mets en avant les produits"); + + out.set("CagetteNetwork", "Me lister dans l'annuaire des groupes Cagette.net"); + out.set("unitType", "Unité"); + out.set("qt", "Quantité"); + out.set("Unit", "Pièce"); + out.set("Kilogram", "Kilogrammes"); + out.set("Gram", "Grammes"); + out.set("Litre", "Litres"); + out.set("htPrice", "Prix H.T"); + out.set("amount", "Montant"); + + out.set("HasPayments", "Gestion des paiements"); + + out.set("byMember", "Par adhérent"); + out.set("byProduct", "Par produit"); + + out.set("variablePrice", "Variable price based on weight"); + return out; + } + + public function populateAmapMembers() { + return user.amap.getMembersFormElementData(); + } + + public static function getMailer():sugoi.mail.IMailer { + + var mailer : sugoi.mail.IMailer = new sugoi.mail.BufferedMailer(); + + if(App.config.DEBUG){ + + //Dev env : emails are written to tmp folder + mailer = new sugoi.mail.DebugMailer(); + }else{ + + if (sugoi.db.Variable.get("mailer") == null){ + var msg = sugoi.i18n.Locale.texts._("Please configure the email settings in a this section"); + throw sugoi.ControllerAction.ErrorAction("/",msg); + } + + if (sugoi.db.Variable.get("mailer") == "mandrill"){ + //Buffered emails with Mandrill + untyped mailer.defineFinalMailer("mandrill"); + }else{ + //Buffered emails with SMTP + untyped mailer.defineFinalMailer("smtp"); + } + } + return mailer; + } + + /** + * Send an email + */ + public static function sendMail(m:sugoi.mail.Mail, ?group:db.Amap, ?listId:String, ?sender:db.User){ + + if (group == null) group = App.current.user == null ? null:App.current.user.getAmap(); + + current.event(SendEmail(m)); + + var params = group==null ? null : {remoteId:group.id}; + + getMailer().send(m,params,function(o){}); + + } + + public static function quickMail(to:String, subject:String, html:String,?group:db.Amap){ + var e = new sugoi.mail.Mail(); + e.setSubject(subject); + e.setRecipient(to); + e.setSender(App.config.get("default_email"),"Cagette.net"); + var html = App.current.processTemplate("mail/message.mtt", {text:html,group:group}); + e.setHtmlBody(html); + App.sendMail(e); + } + + /** + * process a template and returns the generated string + * @param tpl + * @param ctx + */ + public function processTemplate(tpl:String, ctx:Dynamic):String { + + Reflect.setField(ctx, 'HOST', App.config.HOST); + Reflect.setField(ctx, 'hDate', App.current.view.hDate); + //i18n functions + ctx._ = App.current.view._; + ctx.__ = App.current.view.__; + + var tpl = loadTemplate(tpl); + var html = tpl.execute(ctx); + #if php + if ( html.substr(0, 4) == "null") html = html.substr(4); + #end + return html; + } + + + +} diff --git a/src/Calendar.hx b/src/Calendar.hx new file mode 100644 index 0000000..42470bf --- /dev/null +++ b/src/Calendar.hx @@ -0,0 +1,83 @@ +package; + +typedef CalEvent = { + + name:String, + //start:Date, + //end:Date, + color:Int, + +} + +/** + * Calendar utility + * + * @author fbarbut + */ +class Calendar +{ + + public static var COLOR_CONTRACT = 0xC91F25; + public static var COLOR_DELIVERY = 0x7BAD1C; + public static var COLOR_ORDER = 0xFF9615; + + public function new() + { + + } + + public static function getMonthViewMap():Map> { + + var n = Date.now(); + var m = n.getMonth();//0-11 + var pointer = Date.now(); + + var out = new Map>(); + + //find last monday + for ( i in 0...40) { + if ( pointer.getDay() == 1 ) { + break; + } + pointer = DateTools.delta(pointer, -1000.0 * 60 * 60 * 24); + + } + + //go ahead for at least 27 days + for ( i in 0...28) { + out.set( pointer.toString().substr(0, 10), [] ); + pointer = DateTools.delta(pointer, 1000.0 * 60 * 60 * 24); + } + + //find end + for ( i in 0...40) { + //if ( pointer.getDay() == 1 && pointer.getMonth() != m) break; + out.set( pointer.toString().substr(0, 10), [] ); + pointer = DateTools.delta(pointer, 1000.0 * 60 * 60 * 24); + } + + return out; + } + + /** + * get ordered CalEvents from an unordered stringMap + */ + public static function mapToArray(input : Map>) : Array<{d:Date,events:Array}> { + + var keys = []; + for (k in input.keys()) keys.push(k); + keys.sort(function(a, b) { + return Math.round(Date.fromString(a).getTime()/1000) - Math.round(Date.fromString(b).getTime()/1000); + }); + + + var out = []; + for ( k in keys) { + + var x = input.get(k); + out.push( { d:Date.fromString(k),events:x } ); + } + return out; + } + +} \ No newline at end of file diff --git a/src/MultiDistrib.hx b/src/MultiDistrib.hx new file mode 100644 index 0000000..bd91a02 --- /dev/null +++ b/src/MultiDistrib.hx @@ -0,0 +1,385 @@ +package; +import Common; +using tools.ObjectListTool; +using Lambda; +using tools.ObjectListTool; + +/** + * MultiDistrib represents many db.Distribution + which happen on the same day + same place. + * + * @author fbarbut + */ +class MultiDistrib +{ + public var distributions : Array; + public var contracts : Array; + //public var actions : Array; + public var extraHtml : String; + public var type : Null; //contract type, both contract types cannot be mixed in a same multidistrib. + + public function new(){ + distributions = []; + contracts = []; + extraHtml = ""; + //actions = []; + } + + public static function get(date:Date, place:db.Place,contractType:Int){ + var m = new MultiDistrib(); + + var start = tools.DateTool.setHourMinute(date, 0, 0); + var end = tools.DateTool.setHourMinute(date, 23, 59); + + var contracts = place.amap.getContracts().array(); + + //filter by type + if(contractType==db.Contract.TYPE_VARORDER){ + for(c in contracts.copy() ){ + if(c.type!=db.Contract.TYPE_VARORDER) contracts.remove(c); + } + }else if(contractType==db.Contract.TYPE_CONSTORDERS){ + for(c in contracts.copy() ){ + if(c.type!=db.Contract.TYPE_CONSTORDERS) contracts.remove(c); + } + } + var cids = contracts.getIds(); + m.distributions = db.Distribution.manager.search(($contractId in cids) && ($date >= start) && ($date <= end) && $place==place, { orderBy:date }, false).array(); + m.type = contractType; + return m; + } + + /** + Get multidistribs from a time range + place + type + **/ + public static function getFromTimeRange(group:db.Amap,from:Date,to:Date,?contractType:Int):Array{ + var multidistribs = []; + var start = tools.DateTool.setHourMinute(from, 0, 0); + var end = tools.DateTool.setHourMinute(to, 23, 59); + var cids = group.getContracts().getIds(); + var distributions = db.Distribution.manager.search(($contractId in cids) && ($date >= start) && ($date <= end) , { orderBy:date }, false).array(); + + //sort by day-place-type + var multidistribs = new Map(); + for ( d in distributions){ + + //filter by contractType + if(contractType!=null){ + if(d.contract.type!=contractType) continue; + } + + var key = d.getKey() + "-" + d.contract.type; + + if(multidistribs[key]==null){ + var m = new MultiDistrib(); + m.distributions.push(d); + m.type = d.contract.type; + multidistribs[key] = m; + }else{ + multidistribs[key].distributions.push(d); + } + } + var multidistribs = Lambda.array(multidistribs); + + //trigger event + for(md in multidistribs) App.current.event(MultiDistribEvent(md)); + + //sort by date desc + multidistribs.sort(function(x,y){ + return Math.round( x.getDate().getTime()/1000 ) - Math.round(y.getDate().getTime()/1000 ); + }); + + return multidistribs; + } + + /** + * TODO : refacto this to use getFromTimeRange(); + */ + /*public static function getNextMultiDeliveries(group:db.Amap){ + + var out = new Map < String, { + place:db.Place, //common delivery place + startDate:Date, //global delivery start + endDate:Date, //global delivery stop + orderStartDate:Date, //global orders opening date + orderEndDate:Date, //global orders closing date + active:Bool, + products:Array, //available products ( if no order ) + myOrders:Array<{distrib:db.Distribution,orders:Array}> //my orders + }>(); + + var n = Date.now(); + var now = new Date(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0); + + var contracts = db.Contract.getActiveContracts(group); + var cids = Lambda.map(contracts, function(p) return p.id); + + //var pids = Lambda.map(db.Product.manager.search($contractId in cids,false), function(x) return x.id); + //var out = UserContract.manager.search(($userId == id || $userId2 == id) && $productId in pids, lock); + + //available deliveries + var inSixMonth = DateTools.delta(now, 1000.0 * 60 * 60 * 24 * 30 * 6); + var distribs = db.Distribution.manager.search(($contractId in cids) && $date >= now && $date <= inSixMonth , { orderBy:date }, false); + + for (d in distribs) { + + //we had the distribution key ( place+date ) and the contract type in order to separate constant and varying contracts + var key = d.getKey() + "|" + d.contract.type; + var o = out.get(key); + if (o == null) o = {place:d.place, startDate:d.date, active:null, endDate:d.end, products:[], myOrders:[], orderStartDate:null,orderEndDate:null}; + + //user orders + var orders = []; + if(App.current.user!=null) orders = d.contract.getUserOrders(App.current.user,d); + if (orders.length > 0){ + o.myOrders.push({distrib:d,orders:service.OrderService.prepare(orders)}); + }else{ + //no "order block" if no shop mode + if (!group.hasShopMode() ) { + continue; + } + + //if its a constant order contract, skip this delivery + if (d.contract.type == db.Contract.TYPE_CONSTORDERS){ + continue; + } + + //products preview if no orders + for ( p in d.contract.getProductsPreview(9)){ + o.products.push( p.infos(null,false) ); + } + } + + if (d.contract.type == db.Contract.TYPE_VARORDER){ + + //old distribs may have an empty orderStartDate + if (d.orderStartDate == null) { + continue; + } + + //if order opening is more far than 1 month, skip it + // if (d.orderStartDate.getTime() > inOneMonth.getTime() ){ + // continue; + // } + + //display closest opening date + if (o.orderStartDate == null){ + o.orderStartDate = d.orderStartDate; + }else if (o.orderStartDate.getTime() > d.orderStartDate.getTime()){ + o.orderStartDate = d.orderStartDate; + } + + //display most far closing date + if (o.orderEndDate == null){ + o.orderEndDate = d.orderEndDate; + }else if (o.orderEndDate.getTime() < d.orderEndDate.getTime()){ + o.orderEndDate = d.orderEndDate; + } + + out.set(key, o); + + }else{ + //in constant orders, add block only if there is an order + if(o.myOrders.length>0) out.set(key, o); + + } + } + + //shuffle and limit product lists + for ( o in out){ + o.products = thx.Arrays.shuffle(o.products); + o.products = o.products.slice(0, 9); + } + + //decide if active or not + var now = Date.now(); + for( o in out){ + + if (o.orderStartDate == null) continue; //constant orders + + if (now.getTime() >= o.orderStartDate.getTime() && now.getTime() <= o.orderEndDate.getTime() ){ + //order currently open + o.active = true; + + }else { + o.active = false; + + } + } + + return Lambda.array(out); + }*/ + + public function getPlace(){ + if(distributions.length==0) throw "This multidistrib is empty"; + return distributions[0].place; + } + + public function getDate(){ + if(distributions.length==0) throw "This multidistrib is empty"; + return distributions[0].date; + } + + public function getEndDate(){ + if(distributions.length==0) throw "This multidistrib is empty"; + return distributions[0].end; + } + + public function getProductsExcerpt():Array{ + var key = "productsExcerpt-"+getKey(); + var cache:Array = sugoi.db.Cache.get(key); + if(cache!=null){ + var out = []; + //try{ + for( pid in cache.array()){ + var p = db.Product.manager.get(pid,false); + if(p!=null) out.push(p.infos()); + } + //}catch(e:Dynamic){ + // sugoi.db.Cache.destroy(key); + // } + + return out; + } + + var products = []; + for( d in distributions){ + for ( p in d.contract.getProductsPreview(9)){ + products.push( p.infos(null,false) ); + } + } + products = thx.Arrays.shuffle(products); + products = products.slice(0, 9); + sugoi.db.Cache.set(key, products.map(function(p)return p.id).array(), 3600 ); + return products; + + } + + public function userHasOrders(user:db.User):Bool{ + if(user==null) return false; + for ( d in distributions){ + if(d.getUserOrders(user).length>0) return true; + } + return false; + } + + /** + orders currently open ? + **/ + public function isActive(){ + + if (getOrdersStartDate() == null) return false; //constant orders + + var now = Date.now(); + if (now.getTime() >= getOrdersStartDate().getTime() && now.getTime() <= getOrdersEndDate().getTime() ){ + return true; + }else { + return false; + } + } + + public function getOrdersStartDate(){ + var date = null; + + for( d in distributions ){ + if(d.orderStartDate==null) continue; + //display closest opening date + if (date == null){ + date = d.orderStartDate; + }else if (date.getTime() > d.orderStartDate.getTime()){ + date = d.orderStartDate; + } + } + return date; + } + + /*public function hasOnlyConstantOrders(){ + for(d in distributions){ + if( d.contract.type==db.Contract.TYPE_VARORDER ) { + return false; + } + } + return true; + }*/ + + public function getOrdersEndDate(){ + var date = null; + + for( d in distributions ){ + if(d.orderEndDate==null) continue; + //display most far closing date + if (date == null){ + date = d.orderEndDate; + }else if (date.getTime() < d.orderEndDate.getTime()){ + date = d.orderEndDate; + } + } + return date; + } + + /** + * Get all orders involved in this multidistrib + */ + public function getOrders(){ + var out = []; + for ( d in distributions){ + out = out.concat(d.getOrders().array()); + } + return out; + } + + /** + * Get orders for a user in this multidistrib + * @param user + */ + public function getUserOrders(user:db.User){ + var out = []; + for ( d in distributions){ + var pids = Lambda.map( d.contract.getProducts(false), function(x) return x.id); + var userOrders = db.UserContract.manager.search( $userId == user.id && $distributionId==d.id && $productId in pids , false); + for( o in userOrders ){ + out.push(o); + } + } + return out; + } + + public function getUsers(){ + var users = []; + for ( o in getOrders()) users.push(o.user); + return users.deduplicate(); + } + + + + public function isConfirmed():Bool{ + //cannot be in future + if(getDate().getTime()>Date.now().getTime()) return false; + + return Lambda.count( distributions, function(d) return d.validated) == distributions.length; + } + + public function checkConfirmed():Bool{ + var orders = getOrders(); + var c = Lambda.count( orders, function(d) return d.paid) == orders.length; + + if (c){ + for ( d in distributions){ + if (!d.validated){ + d.lock(); + d.validated = true; + d.update(); + } + } + } + + return c; + } + + //get key by date-place-type + public function getKey(){ + return distributions[0].getKey() + "-" + distributions[0].contract.type; + } + + +} \ No newline at end of file diff --git a/src/MyMacros.hx b/src/MyMacros.hx new file mode 100644 index 0000000..3432729 --- /dev/null +++ b/src/MyMacros.hx @@ -0,0 +1,82 @@ +import haxe.macro.Expr; +import haxe.macro.Context; +import StringTools; + +class MyMacros { + /* based on + http://code.haxe.org/category/macros/add-git-commit-hash-in-build.html + http://stackoverflow.com/questions/8611486/how-to-get-the-last-commit-date-for-a-bunch-of-files-in-git*/ + public static macro function getGitCommitDate():haxe.macro.ExprOf { + #if !display + var process = new sys.io.Process('git', ['log', '-1', '--format=%ci']); + if (process.exitCode() != 0) { + var message = process.stderr.readAll().toString(); + var pos = haxe.macro.Context.currentPos(); + Context.error("Cannot execute `git log -1 --format=%ci`. " + message, pos); + } + + // read the output of the process + var commitDate:String = process.stdout.readLine(); + commitDate = StringTools.replace(commitDate, " ", "."); + commitDate = StringTools.replace(commitDate, "-", "."); + commitDate = StringTools.replace(commitDate, ":", "."); + commitDate = commitDate.substr(0,16); + + // Generates a string expression + return macro $v{commitDate}; + #else + // `#if display` is used for code completion. In this case returning an + // empty string is good enough; We don't want to call git on every hint. + var commitDate:String = ""; + return macro $v{commitDate}; + #end + } + + public static macro function getGitShortSHA():haxe.macro.ExprOf { + #if !display + var process = new sys.io.Process('git', ['log', '-1', '--format=%h']); + if (process.exitCode() != 0) { + var message = process.stderr.readAll().toString(); + var pos = haxe.macro.Context.currentPos(); + Context.error("Cannot execute `git log -1 --format=%h`. " + message, pos); + } + + // read the output of the process + var commitShortSHA:String = process.stdout.readLine(); + commitShortSHA = "C"+commitShortSHA; + + // Generates a string expression + return macro $v{commitShortSHA}; + #else + // `#if display` is used for code completion. In this case returning an + // empty string is good enough; We don't want to call git on every hint. + var commitShortSHA:String = "xxxxxxx"; + return macro $v{commitShortSHA}; + #end + } + + public static macro function getGitBranch():haxe.macro.ExprOf { + #if !display + var process = new sys.io.Process('git', ['symbolic-ref', 'HEAD', '--short']); + if (process.exitCode() != 0) { + var message = process.stderr.readAll().toString(); + var pos = haxe.macro.Context.currentPos(); + Context.error("Cannot execute `git symbolic-ref HEAD --short`. " + message, pos); + } + + // read the output of the process + var commitBranch:String = process.stdout.readLine(); + commitBranch = StringTools.replace(commitBranch, "-", "."); + commitBranch = StringTools.replace(commitBranch, "_", "."); + + // Generates a string expression + return macro $v{commitBranch}; + #else + // `#if display` is used for code completion. In this case returning an + // empty string is good enough; We don't want to call git on every hint. + var commitBranch:String = ""; + return macro $v{commitBranch}; + #end + } + +} diff --git a/src/View.hx b/src/View.hx new file mode 100755 index 0000000..34c1f4c --- /dev/null +++ b/src/View.hx @@ -0,0 +1,318 @@ +using Std; +import Common; +import haxe.Utf8; +import tools.ArrayTool; + +class View extends sugoi.BaseView { + + var t : sugoi.i18n.GetText; + + public function new() { + super(); + this.Std = Std; + this.Date = Date; + this.Web = sugoi.Web; + this.Lambda = Lambda; + this.VERSION = App.VERSION.toString(); + this.ArrayTool = ArrayTool; + this.t = sugoi.i18n.Locale.texts; + } + + public function count(i) { + return Lambda.count(i); + } + + public function abs(n){ + return Math.abs(n); + } + + /** + * init view in main loop, just before rendering + */ + override function init() { + super.init(); + + //tuto widget display + var u = App.current.user; + if (u!=null && u.tutoState!=null) { + //trace("view init "+u.tutoState.name+" , "+u.tutoState.step); + this.displayTuto(u.tutoState.name, u.tutoState.step); + } + } + + function getCurrentGroup(){ + return App.current.getCurrentGroup(); + } + + + function getUser(uid:Int):db.User { + return db.User.manager.get(uid, false); + } + + function getProduct (pid:Int){ + return db.Product.manager.get(pid, false); + } + + + /** + * Round a number to r digits after coma. + * + * @param n + * @param r + */ + public function roundTo(n:Float, r:Int):Float { + return Math.round(n * Math.pow(10,r)) / Math.pow(10,r) ; + } + + + public function color(id:Int) { + if (id == null) throw "color cant be null"; + //try{ + return intToHex(db.CategoryGroup.COLORS[id]); + //}catch (e:Dynamic) return "#000000"; + } + + /** + * convert a RVB color from Int to Hexa + * @param c + * @param leadingZeros=6 + */ + public function intToHex(c:Int, ?leadingZeros=6):String { + var h = StringTools.hex(c); + while (h.length1,80 + if (out.indexOf(".")!=-1 && out.split(".")[1].length == 1) out = out +"0"; + + //french : replace point by comma + return out.split(".").join(","); + } + + /** + * Price per Kg/Liter... + * @param qt + * @param unit + */ + public function pricePerUnit(price:Float,qt:Float, unit:Unit){ + if (unit==null || qt == null || qt == 0 || price==null || price==0) return ""; + var _price = price / qt; + var _unit = unit; + + //turn small prices in Kg + if (_price < 1 ){ + switch(unit){ + case Gram: + _price *= 1000; + _unit = Kilogram; + case Centilitre: + _price *= 100; + _unit = Litre; + default : + } + } + return formatNum(_price) + " " + currency() + "/" + this.unit(_unit); + } + + /** + * clean numbers in views + * to avoid bugs like : 13.79 - 13.79 = 1.77635683940025e-15 + */ + public function numClean(f:Float):Float{ + return Math.round(f * 100) / 100; + } + + /** + * max length for strings, usefull for tables + */ + public function short(text:String, length:Int){ + if (Utf8.length(text) > length){ + + return Utf8.sub(text,0, length)+"…"; + }else{ + return text; + } + } + + public function isToday(d:Date) { + var n = Date.now(); + return d.getDate() == n.getDate() && d.getMonth() == n.getMonth() && d.getFullYear() == n.getFullYear(); + } + + /** + * Prints a measuring unit + */ + public function unit(u:Unit,?plural=false){ + t = sugoi.i18n.Locale.texts; + return switch(u){ + case Kilogram: t._("Kg.||kilogramms"); + case Gram: t._("g.||gramms"); + case null,Piece: if(plural) t._("pieces||unit of a product)") else t._("piece||unit of a product)"); + case Litre: t._("L.||liter"); + case Centilitre: t._("cl.||centiliter"); + } + } + + public function currency(){ + if (App.current.user == null || App.current.user.amap == null){ + return "€"; + }else{ + return App.current.user.amap.getCurrency(); + } + + } + + public static var DAYS = null; + public static var MONTHS = null; + public static var HOURS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]; + public static var MINUTES = [0,5,10,15,20,25,30,35,40,45,50,55]; + + + public function initDate(){ + t = sugoi.i18n.Locale.texts; + DAYS = [t._("Sunday"), t._("Monday"), t._("Tuesday"), t._("Wednesday"), t._("Thursday"), t._("Friday"), t._("Saturday")]; + MONTHS = [t._("January"), t._("February"), t._("March"), t._("April"), t._("May"), t._("June"), t._("July"), t._("August"), t._("September"), t._("October"), t._("November"), t._("December")]; + this.DAYS = DAYS; + this.MONTHS = MONTHS; + this.HOURS = HOURS; + this.MINUTES = MINUTES; + } + + /** + * human readable date + time + */ + public function hDate(date:Date):String { + if (date == null) return t._("no date set"); + if (DAYS == null) initDate(); + + var out = DAYS[date.getDay()] + " " + date.getDate() + " " + MONTHS[date.getMonth()]; + out += " " + date.getFullYear(); + if ( date.getHours() != 0 || date.getMinutes() != 0){ + + out += " " + sugoi.i18n.Locale.texts._("at||time : at 12:30") + " " + StringTools.lpad(Std.string(date.getHours()), "0", 2) + ":" + StringTools.lpad(Std.string(date.getMinutes()), "0", 2); + } + return out; + } + + /** + * Human readable hour + */ + public function hHour(date:Date){ + return StringTools.lpad(date.getHours().string(), "0", 2) + ":" + StringTools.lpad(date.getMinutes().string(), "0", 2); + } + + public function oHour(hour:Int,min:Int){ + return StringTools.lpad(hour.string(), "0", 2) + ":" + StringTools.lpad(min.string(), "0", 2); + } + + /** + * human readable date + */ + public function dDate(date:Date):String { + if (date == null) return t._("no date set"); + if (DAYS == null) initDate(); + + return DAYS[date.getDay()] + " " + date.getDate() + " " + MONTHS[date.getMonth()] + " " + date.getFullYear(); + } + + + public function getDate(date:Date) { + if (date == null) throw "date is null"; + if (DAYS == null) initDate(); + + return { + dow: DAYS[date.getDay()], + d : date.getDate(), + m: MONTHS[date.getMonth()], + y: date.getFullYear(), + h: StringTools.lpad(Std.string(date.getHours()),"0",2), + i: StringTools.lpad(Std.string(date.getMinutes()),"0",2) + }; + } + + + + public function getProductImage(e):String { + return Std.string(e).substr(2).toLowerCase()+".png"; + } + + public function prepare(orders:Iterable){ + return service.OrderService.prepare(orders); + } + + + public function displayTuto(tuto:String, step:Int) { + if (tuto == null) return; + var t = plugin.Tutorial.all().get(tuto); + + //check if we are on the correct page (last step page) + //otherwise the popovers could be displayed on wrong elements + var previous = t.steps[step - 1]; + if (previous != null) { + switch(previous.action) { + case TAPage(uri): + var here = sugoi.Web.getURI(); + if (!plugin.Tutorial.match(uri,here)) { + return; + } + default: + } + } + this.tuto = { name:tuto, step:step }; + } + + /** + * renvoie 0 si c'est user.firstName qui est connecté, + * renvoie 1 si c'est user.firstName2 qui est connecté + * @return + */ + public function whichUser():Int { + if (App.current.session.data == null) return 0; + return App.current.session.data.whichUser == null?0:App.current.session.data.whichUser; + + } + + + public function isAmap(){ + return App.current.user.amap.groupType == db.Amap.GroupType.Amap; + } + + + public function getBasket(userId, placeId, date){ + var user = getUser(userId); + var place = db.Place.manager.get(placeId, false); + return db.Basket.getOrCreate(user, place, date); + } + + public function getPlatform(){ + return #if neko "Neko" #else "PHP" #end ; + } + + /** + * Smart quantity (tm) : displays human readable quantity + * 0.33 x Lemon 12kg => 2kg Lemon + */ + public function smartQt(orderQt:Float, productQt:Float, unit:Unit):String{ + if (orderQt == null) orderQt = 1; + if (productQt == null) productQt = 1; + if (unit == null) unit = Unit.Piece; + if (unit == Unit.Piece && productQt == 1 ){ + return this.formatNum(orderQt); + }else{ + return this.formatNum(orderQt * productQt) + " " + this.unit(unit,orderQt*productQt>1); + } + + } + +} diff --git a/src/controller/Account.hx b/src/controller/Account.hx new file mode 100755 index 0000000..2db71d4 --- /dev/null +++ b/src/controller/Account.hx @@ -0,0 +1,100 @@ +package controller; +import sugoi.form.Form; + +class Account extends Controller +{ + + public function new() + { + super(); + + } + + + function doDefault() { + } + + + @tpl('form.mtt') + function doEdit() { + + var form = sugoi.form.Form.fromSpod(app.user); + form.removeElement(form.getElement("lang")); + form.removeElement(form.getElement("pass")); + form.removeElement(form.getElement("rights")); + form.removeElement(form.getElement("cdate")); + form.removeElement(form.getElement("ldate")); + form.removeElement( form.getElement("apiKey") ); + + if (form.isValid()) { + + if (app.user.id != form.getValueOf("id")) { + throw "access forbidden"; + } + var admin = app.user.isAdmin(); + + form.toSpod(app.user); + + //check email is valid + if (!sugoi.form.validators.EmailValidator.check(app.user.email)){ + throw Error("/account/edit", t._("Email ::em:: is invalid", {em:app.user.email})); + } + + if (app.user.email2!=null && !sugoi.form.validators.EmailValidator.check(app.user.email2)){ + throw Error("/account/edit", t._("Email ::em:: is invalid", {em:app.user.email2})); + } + + //check email is available + var sameEmail = db.User.getSameEmail(app.user.email,app.user.email2); + if( sameEmail.length > 0 && sameEmail.first().id!=app.user.id){ + throw Error("/account/edit", t._("This email is already used by another account.")); + } + + if (!admin) { app.user.rights.unset(Admin); } + + app.user.update(); + throw Ok('/contract', t._("Your account has been updated")); + } + + view.form = form; + view.title = t._("Modify my account"); + } + + function doQuit(){ + + if (checkToken()){ + + var name = app.user.amap.name; + + var ua = db.UserAmap.get(app.user, app.user.amap,true); + ua.delete(); + + App.current.session.data.amapId = null; + throw Ok("/user/choose?show=1", t._("You left the group ::groupName::", {groupName:name})); + + } + + } + + /** + * user payments history + */ + @tpl('account/payments.mtt') + function doPayments(){ + var m = app.user; + var browse:Int->Int->List; + + //default display + browse = function(index:Int, limit:Int) { + return db.Operation.getOperationsWithIndex(m,app.user.amap,index,limit,true); + } + + var count = db.Operation.countOperations(m,app.user.amap); + var rb = new sugoi.tools.ResultsBrowser(count, 10, browse); + view.rb = rb; + view.member = m; + view.balance = db.UserAmap.get(m,app.user.amap).balance; + } + + +} \ No newline at end of file diff --git a/src/controller/Amap.hx b/src/controller/Amap.hx new file mode 100755 index 0000000..443f98e --- /dev/null +++ b/src/controller/Amap.hx @@ -0,0 +1,53 @@ +package controller; +import db.UserContract; +import sugoi.form.Form; + +class Amap extends Controller +{ + + public function new() + { + super(); + } + + @tpl("amap/default.mtt") + function doDefault() { + var contracts = db.Contract.getActiveContracts(app.user.amap, true, false); + for ( c in Lambda.array(contracts).copy()) { + if (c.endDate.getTime() < Date.now().getTime() ) contracts.remove(c); + } + view.contracts = contracts; + } + + @tpl("form.mtt") + function doEdit() { + + if (!app.user.isAmapManager()) throw t._("You don't have access to this section"); + + var group = app.user.amap; + + var form = Form.fromSpod(group); + + if (form.checkToken()) { + + if(form.getValueOf("id") != app.user.amap.id) { + var editedGroup = db.Amap.manager.get(form.getValueOf("id"),false); + throw Error("/amap/edit",'Erreur, vous êtes en train de modifier "${editedGroup.name}" alors que vous êtes connecté à "${app.user.amap.name}"'); + } + + form.toSpod(group); + + if (group.extUrl != null){ + if ( group.extUrl.indexOf("http://") ==-1 && group.extUrl.indexOf("https://") ==-1 ){ + group.extUrl = "http://" + group.extUrl; + } + } + + group.update(); + throw Ok("/amapadmin", t._("The group has been updated.")); + } + + view.form = form; + } + +} \ No newline at end of file diff --git a/src/controller/AmapAdmin.hx b/src/controller/AmapAdmin.hx new file mode 100755 index 0000000..18990e0 --- /dev/null +++ b/src/controller/AmapAdmin.hx @@ -0,0 +1,367 @@ +package controller; +import db.UserAmap; +import haxe.Http; +import neko.Web; +import sugoi.form.Form; +import Common; +import sugoi.form.elements.IntSelect; +import sugoi.form.elements.StringInput; + + +class AmapAdmin extends Controller +{ + + public function new() + { + super(); + if (!app.user.isAmapManager()) throw Error("/", t._("Access forbidden")); + + //lance un event pour demander aux plugins si ils veulent ajouter un item dans la nav + var nav = new Array(); + + if (app.user.amap.hasPayments()){ + nav.push({id:"payments",link:"/amapadmin/payments",name: t._("Payments") }); + } + + var e = Nav(nav,"groupAdmin"); + app.event(e); + view.nav = e.getParameters()[0]; + } + + + @tpl("amapadmin/default.mtt") + function doDefault() { + view.membersNum = UserAmap.manager.count($amap == app.user.amap); + view.contractsNum = app.user.amap.getActiveContracts().length; + + //ping cagette groups directory + if (Std.random(10) == 0 && app.user.amap.flags.has(db.Amap.AmapFlags.CagetteNetwork)){ + var req = new Http("http://annuaire.cagette.net/api/ping?url="+StringTools.urlEncode( "http://" + App.config.HOST ) ); + try{ + req.request(); + }catch (e:Dynamic){ + App.current.logError("Error while contacting annuaire.cagette.net : "+e); + } + + } + + } + + @tpl("amapadmin/addimage.mtt") + function doAddimage() { + + if (!app.user.isAmapManager()) throw Error("/", t._("Access forbidden")); + + var user = app.user; + view.image = user.amap.image; + + var request = new Map(); + try { + request = sugoi.tools.Utils.getMultipart(1024 * 1024 * 12); //12Mb + }catch (e:Dynamic) { + throw Error("/amapadmin", t._("The sent image was too big. The maximum allowed size is 12MB")); + } + + if (request.exists("image")) { + + //Image + var image = request.get("image"); + + if (image != null && image.length > 0) { + + var img : sugoi.db.File = null; + if ( Sys.systemName() == "Windows") { + img = sugoi.db.File.create(request.get("image"), request.get("image_filename")); + }else { + img = sugoi.tools.UploadedImage.resizeAndStore(request.get("image"), request.get("image_filename"), 400, 400); + } + + user.amap.lock(); + + if (user.amap.image != null) { + //delete previous file + user.amap.image.lock(); + user.amap.image.delete(); + } + + user.amap.image = img; + user.amap.update(); + + throw Ok('/amapadmin/', t._("Image updated")); + } + } + + } + + + @tpl("amapadmin/rights.mtt") + public function doRights() { + + //liste les gens qui ont des droits dans le groupe + var users = db.UserAmap.manager.search($rights != null && $amap == app.user.amap, false); + + //cleaning + for ( u in Lambda.array(users)) { + + //rights peut etre null (null seralisé) et pas null en DB + if (u.rights == null || u.rights.length == 0) { + u.lock(); + Reflect.setField(u, "rights", null); + u.update(); + users.remove(u); + continue; + } + + //rights on a deleted contract + for ( r in u.rights) { + switch(r) { + case ContractAdmin(cid): + if (cid == null) continue; + var c = db.Contract.manager.get(cid); + if (c == null) { + u.lock(); + u.removeRight(r); + u.update(); + } + default : + } + } + } + + view.users = users; + } + + + @tpl("form.mtt") + public function doEditRight(?u:db.User) { + + var form = new sugoi.form.Form("editRight"); + + if (u == null) { + form.addElement( new IntSelect("user", t._("Member") , app.user.amap.getMembersFormElementData(), null, true) ); + } + + var data = []; + //for (r in db.UserAmap.Right.getConstructors()) { + //if (r == "ContractAdmin") continue; //managed later + //data.push({label:r,value:r}); + //} + data.push({label:t._("Group administrator"), value:"GroupAdmin"}); + data.push({label:t._("Membership management"),value:"Membership"}); + data.push({label:t._("Messages"),value:"Messages"}); + + var ua : db.UserAmap = null; + var populate :Array = null; + if (u != null) { + ua = db.UserAmap.get(u, app.user.amap, true); + if (ua == null) throw "no user"; + if (ua.rights == null) ua.rights = []; + //populate form + populate = ua.rights.map(function(x) return x.getName()); + } + + form.addElement( new sugoi.form.elements.CheckboxGroup("rights", t._("Rights"), data, populate, true, true) ); + form.addElement( new sugoi.form.elements.Html("html","
")); + + //Rights on contracts + var data = []; + var populate :Array = []; + data.push({value:"contractAll",label:t._("All contracts")}); + for (r in app.user.amap.getActiveContracts(true)) { + data.push( { label:r.name , value:"contract"+Std.string(r.id) } ); + } + + if(ua!=null && ua.rights!=null){ + for ( r in ua.rights) { + switch(r) { + case Right.ContractAdmin(cid): + if (cid == null) { + populate.push("contractAll"); + }else { + populate.push("contract"+cid); + } + + default:// + } + } + } + + + form.addElement( new sugoi.form.elements.CheckboxGroup("rights", t._("Contracts management") , data, populate, true, true) ); + + if (form.checkToken()) { + + var wasManager = app.user.isAmapManager(); + + if (u == null) { + ua = db.UserAmap.manager.select($userId == Std.parseInt(form.getValueOf("user")) && $amapId == app.user.amap.id, true); + } + ua.rights = []; + + var arr : Array = cast form.getElement("rights").value; + for ( r in arr) { + if (r.substr(0, 8) == "contract") { + if (r == "contractAll") { + ua.rights.push( Right.ContractAdmin() ); + }else { + ua.rights.push( Right.ContractAdmin(Std.parseInt(r.substr(8)) ) ); + } + + }else { + ua.rights.push( db.UserAmap.Right.createByName(r) ); + } + } + + //avoid "cut my own hands" problem + if (ua.user.id == app.user.id && wasManager ) { + var isManager = false; + for ( r in ua.rights) { + if (r.equals(db.UserAmap.Right.GroupAdmin)) { + isManager = true; + break; + } + } + if (isManager == false) { + throw Error("/amapadmin/rights", t._("You cannot strip yourself of admin rights.")); + } + } + + + if (ua.rights.length == 0) ua.rights = null; + ua.update(); + if (ua.rights == null) { + throw Ok("/amapadmin/rights", t._("Rights removed")); + }else { + throw Ok("/amapadmin/rights", t._("Rights created or modified")); + } + + } + + if (u == null) { + view.title = t._("Give rights to a user"); + }else { + view.title = t._("Modify the rights of ::user::",{user:u.getName()}); + } + + view.form = form; + + } + + @tpl('form.mtt') + public function doVatRates() { + + var f = new sugoi.form.Form("vat"); + var a = app.user.amap; + + if (a.vatRates == null) { + a.lock(); + var x = new db.Amap(); + a.vatRates = x.vatRates; + a.update(); + } + + var i = 1; + for (k in a.vatRates.keys()) { + f.addElement(new StringInput(i+"-k", t._("Name ")+i, k)); + f.addElement(new StringInput(i + "-v", t._("Rate ")+i, Std.string(a.vatRates.get(k)) )); + //f.addElement(new sugoi.form.elements.Html("
")); + i++; + } + var j = i; + + for (x in 0...5 - i) { + f.addElement(new StringInput(i+"-k", t._("Name ")+i, "")); + f.addElement(new StringInput(i + "-v", t._("Rate ")+i, "")); + //f.addElement(new sugoi.form.elements.Html("
")); + i++; + } + + if (f.isValid()) { + var d = f.getData(); + var vats = new Map(); + var filter = new sugoi.form.filters.FloatFilter(); + for (i in 1...5) { + if (d.get(i + "-k") == null) continue; + vats.set(d.get(i + "-k"), filter.filter( d.get(i + "-v")) ); + } + a.lock(); + a.vatRates = vats; + a.update(); + throw Ok("/amapadmin", t._("Rate updated")); + + } + view.title = t._("Edit VAT rates"); + view.form = f; + + } + + function doCategories(d:haxe.web.Dispatch) { + d.dispatch(new controller.Categories()); + } + + /** + * Set up group currency. Default is EURO + */ + @tpl("form.mtt") + function doCurrency(){ + + view.title = t._("Currency used by your group."); + + var f = new sugoi.form.Form("curr"); + f.addElement(new sugoi.form.elements.StringInput("currency", t._("Currency symbol"), app.user.amap.getCurrency())); + f.addElement(new sugoi.form.elements.StringInput("currencyCode", t._("3 digit ISO code"), app.user.amap.currencyCode)); + + if ( f.isValid()){ + + app.user.amap.lock(); + app.user.amap.currency = f.getValueOf("currency"); + app.user.amap.currencyCode = f.getValueOf("currencyCode"); + app.user.amap.update(); + + throw Ok("/amapadmin/currency", t._("Currency updated")); + } + + view.form = f; + } + + /** + * payment configuration + */ + @tpl("form.mtt") + function doPayments(){ + + var f = new sugoi.form.Form("paymentTypes"); + var types = service.PaymentService.getAllPaymentTypes(); + var formdata = [for (t in types){label:t.name, value:t.type}]; + var selected = app.user.amap.allowedPaymentsType; + f.addElement(new sugoi.form.elements.CheckboxGroup("paymentTypes", t._("Authorized payment types"),formdata, selected) ); + + if (app.user.amap.checkOrder == ""){ + app.user.amap.lock(); + app.user.amap.checkOrder = app.user.amap.name; + app.user.amap.update(); + } + f.addElement( new sugoi.form.elements.StringInput("checkOrder", t._("Make the check payable to"), app.user.amap.checkOrder, false)); + f.addElement( new sugoi.form.elements.StringInput("IBAN", t._("IBAN of your bank account for transfers"), app.user.amap.IBAN, false)); + f.addElement(new sugoi.form.elements.Checkbox("allowMoneyPotWithNegativeBalance", t._("Allow money pots with negative balance"), app.user.amap.allowMoneyPotWithNegativeBalance)); + + if (f.isValid()){ + + var p = f.getValueOf("paymentTypes"); + var a = app.user.amap; + a.lock(); + a.allowedPaymentsType = p; + a.checkOrder = f.getValueOf("checkOrder"); + a.IBAN = f.getValueOf("IBAN"); + a.allowMoneyPotWithNegativeBalance = f.getValueOf("allowMoneyPotWithNegativeBalance"); + a.update(); + + throw Ok("/amapadmin/payments", t._("Payment options updated")); + + } + + view.title = t._("Options of payment"); + view.form = f; + } + +} diff --git a/src/controller/Api.hx b/src/controller/Api.hx new file mode 100644 index 0000000..9726266 --- /dev/null +++ b/src/controller/Api.hx @@ -0,0 +1,111 @@ +package controller; +import db.UserAmap; +import haxe.Json; +import neko.Web; + +/** + * REST JSON API + * + * @author fbarbut + */ +class Api extends Controller +{ + + /** + * Public infos about this Cagette.net installation + */ + public function doDefault(){ + + var json : Dynamic = { + version:App.VERSION.toString(), + debug:App.config.DEBUG, + email:App.config.get("webmaster_email"), + groups:[] + + }; + + for ( g in db.Amap.manager.all()){ + + //a strange way to exclude "test" accounts + if ( UserAmap.manager.count($amapId == g.id) > 20){ + + var place = g.getMainPlace(); + + var d = { + name:g.name, + cagetteNetwork:g.flags.has(db.Amap.AmapFlags.CagetteNetwork), + id:g.id, + url:"http://" + Web.getHostName() + "/group/" + g.id, + membersNum : g.getMembersNum(), + contracts: Lambda.array(Lambda.map(g.getActiveContracts(false), function(c) return c.name)), + place : {name:place.name, address1:place.address1,address2:place.address2,zipCode:place.zipCode,city:place.city } + }; + json.groups.push(d); + } + + } + + Sys.print( Json.stringify(json) ); + + } + + /*public function doError(){ + sugoi.Web.setReturnCode(403); + }*/ + + + #if plugins + //cagette-pro + public function doPro(d:haxe.web.Dispatch) { + d.dispatch(new pro.controller.api.Main()); + } + #end + + public function doShop(d:haxe.web.Dispatch) { + d.dispatch(new controller.api.Shop()); + } + + public function doOrder(d:haxe.web.Dispatch) { + d.dispatch(new controller.api.Order()); + } + + /** + * Get distribution planning for this group + * + * @param group + */ + public function doPlanning(group:db.Amap){ + + var contracts = group.getActiveContracts(true); + var cids = Lambda.map(contracts, function(p) return p.id); + var now = Date.now(); + var now = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0); + var twoMonths = new Date(now.getFullYear(), now.getMonth()+2, now.getDate(), 0, 0, 0); + var distribs = db.Distribution.manager.search(($contractId in cids) && ($date >= now) && ($date<=twoMonths), { orderBy:date }, false); + + var out = new Array<{id:Int,start:Date,end:Date,contract:String,contractId:Int,place:Dynamic}>(); + + for ( d in distribs){ + + var place = d.place; + var p = {name:place.name, address1:place.address1,address2:place.address2,zipCode:place.zipCode,city:place.city } + out.push({id:d.id,start:d.date,end:d.end,contract:d.contract.name,contractId:d.contract.id,place:p}); + } + + Sys.print(Json.stringify(out)); + + } + + public function doUser(d:haxe.web.Dispatch){ + d.dispatch(new controller.api.User()); + } + + public function doGroup(d:haxe.web.Dispatch){ + d.dispatch(new controller.api.Group()); + } + + public function doProduct(d:haxe.web.Dispatch){ + d.dispatch(new controller.api.Product()); + } + +} \ No newline at end of file diff --git a/src/controller/Categories.hx b/src/controller/Categories.hx new file mode 100755 index 0000000..2205068 --- /dev/null +++ b/src/controller/Categories.hx @@ -0,0 +1,160 @@ +package controller ; + +class Categories extends controller.Controller +{ + @tpl("categories/default.mtt") + public function doDefault() { + + view.groups = db.CategoryGroup.manager.search($amap == app.user.amap, false); + + checkToken(); + + } + + /** + * genere le set par défaut de catégories + */ + public function doGenerate() { + + if ( db.CategoryGroup.manager.search($amap == app.user.amap, false).length != 0) { + throw Error("/amapadmin/categories", t._("The category list is not empty.") ); + } + + function gen(catGroupName:String,color:Int,cats:Array) { + + var cg = new db.CategoryGroup(); + cg.name = catGroupName; + cg.color = color; + cg.amap = app.user.amap; + cg.insert(); + + for (c in cats) { + var x = new db.Category(); + x.categoryGroup = cg; + x.name = c; + x.insert(); + } + + } + var t = sugoi.i18n.Locale.texts; + gen(t._("Product types"),2, [t._("Vegetables"), t._("Fruits"), t._("Fish"), t._("Red meat"), t._("Breads"), t._("Grocery"), t._("Beverages") ]); + gen(t._("Labels"),0, [t._("Certified organic agriculture"), t._("Uncertified organic agriculture"), t._("Non organic") ]); + + throw Ok("/amapadmin/categories", t._("Default categories have been created") ); + + } + + /** + * modifie un groupe de categories + */ + @tpl('form.mtt') + function doEditGroup(g:db.CategoryGroup) { + + var form = sugoi.form.Form.fromSpod(g); + + form.removeElementByName("color"); + form.removeElementByName("amapId"); + form.addElement(new form.ColorRadioGroup("color", t._("Color") , Std.string(g.color) )); + + if (form.isValid()) { + + form.toSpod(g); + g.update(); + throw Ok("/amapadmin/categories", t._("Group modified")); + + } + + view.title = t._("Modify the group ") + g.name; + view.form = form; + } + + @tpl('form.mtt') + function doInsertGroup() { + var g = new db.CategoryGroup(); + var form = sugoi.form.Form.fromSpod(g ); + + form.removeElementByName("color"); + form.removeElementByName("amapId"); + form.addElement(new form.ColorRadioGroup("color", "Couleur", Std.string(g.color))); + + if (form.isValid()) { + + form.toSpod(g); + g.amap = app.user.amap; + g.insert(); + throw Ok("/amapadmin/categories", t._("Group added")); + + } + + view.title = t._("Create a group of categories"); + view.form = form; + } + + @tpl('form.mtt') + function doInsert(g:db.CategoryGroup) { + var c = new db.Category(); + var form = sugoi.form.Form.fromSpod(c); + + form.removeElementByName("categoryGroupId"); + + if (form.isValid()) { + + form.toSpod(c); + c.categoryGroup = g; + c.insert(); + throw Ok("/amapadmin/categories", t._("Category added")); + + } + + view.title = t._("Create a category"); + view.form = form; + } + + + @tpl('form.mtt') + function doEdit(c:db.Category) { + + var form = sugoi.form.Form.fromSpod(c); + + form.removeElementByName("categoryGroupId"); + + if (form.isValid()) { + + form.toSpod(c); + c.update(); + throw Ok("/amapadmin/categories","Category modified"); + } + + view.title = t._("Modify the category ") + c.name; + view.form = form; + } + + + function doDeleteGroup(g:db.CategoryGroup,args:{token:String}) { + + if ( checkToken()) { + if (g.getCategories().length > 0) throw Error("/amapadmin/categories", t._("All categories must be removed from this group before it can be deleted.")); + + g.lock(); + g.delete(); + throw Ok("/amapadmin/categories", t._("Group deleted")); + }else { + throw Redirect("/amapadmin/categories"); + } + } + + function doDelete(c:db.Category,args:{token:String}) { + + if ( checkToken()) { + c.lock(); + c.delete(); + throw Ok("/amapadmin/categories", t._("Category deleted")); + }else { + throw Redirect("/amapadmin/categories"); + } + } + + + + +} diff --git a/src/controller/Contract.hx b/src/controller/Contract.hx new file mode 100755 index 0000000..27299e7 --- /dev/null +++ b/src/controller/Contract.hx @@ -0,0 +1,619 @@ +package controller; +import db.UserContract; +import sugoi.form.elements.DateDropdowns; +import sugoi.form.elements.Input; +import sugoi.form.elements.Selectbox; +import sugoi.form.Form; +import db.Contract; +import Common; +import plugin.Tutorial; +using Std; +import service.OrderService; + +class Contract extends Controller +{ + + public function new() + { + super(); + } + + @tpl("contract/view.mtt") + public function doView(c:db.Contract) { + view.category = 'amap'; + view.c = c; + } + + /** + * "my account" page + */ + @tpl("contract/default.mtt") + function doDefault() { + + //Create the list of links to change the language + var langs = App.config.get("langs").split(";"); + var langNames = App.config.get("langnames").split(";"); + var i=0; + var langLinks = ""; + for (lang in langs) + { + langLinks += "
  • " + langNames[i] + "
  • "; + i++; + } + view.langLinks = langLinks; + view.langText = langNames[langs.indexOf(app.session.lang)]; + + //change account lang + if (app.params.exists("lang") && app.user!=null){ + app.user.lock(); + app.user.lang = app.params.get("lang"); + app.user.update(); + } + + var ua = db.UserAmap.get(app.user, app.user.amap); + if (ua == null) throw Error("/", t._("You are not a member of this group")); + + var constOrders = null; + var varOrders = new Map>(); + + var a = App.current.user.amap; + var oneMonthAgo = DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24 * 30); + + //constant orders + var contracts = db.Contract.manager.search($type == db.Contract.TYPE_CONSTORDERS && $amap == a && $endDate > oneMonthAgo, false); + constOrders = []; + for ( c in contracts){ + var orders = app.user.getOrdersFromContracts([c]); + if (orders.length == 0) continue; + constOrders.push({contract:c, orders:service.OrderService.prepare(orders) }); + } + + //variable orders, grouped by date + var contracts = db.Contract.manager.search($type == db.Contract.TYPE_VARORDER && $amap == a && $endDate > oneMonthAgo, false); + + for (c in contracts) { + var ds = c.getDistribs(false); + for (d in ds) { + //store orders in a stringmap like "2015-01-01" => [order1,order2,...] + var k = d.date.toString().substr(0, 10); + var orders = app.user.getOrdersFromDistrib(d); + if (orders.length > 0) { + if (!varOrders.exists(k)) { + varOrders.set(k, Lambda.array(orders)); + }else { + var z = varOrders.get(k).concat(Lambda.array(orders)); + varOrders.set(k, z); + } + } + } + } + + //final structure + var varOrders2 = new Array<{date:Date,orders:Array}>(); + for ( k in varOrders.keys()) { + + var d = new Date(k.split("-")[0].parseInt(), k.split("-")[1].parseInt() - 1, k.split("-")[2].parseInt(), 0, 0, 0); + var orders = service.OrderService.prepare( Lambda.list(varOrders[k]) ); + + varOrders2.push({date:d,orders:orders}); + } + + //sort by date desc + varOrders2.sort(function(b, a) { + return Math.round(a.date.getTime()/1000)-Math.round(b.date.getTime()/1000); + }); + + view.varOrders = varOrders2; + view.constOrders = constOrders; + + + // tutorials + if (app.user.isAmapManager()) { + + + //actions + if (app.params.exists('startTuto') ) { + + //start a tuto + app.user.lock(); + var t = app.params.get('startTuto'); + app.user.tutoState = {name:t,step:0}; + app.user.update(); + } + + + //tuto state + var tutos = new Array<{name:String,completion:Float,key:String}>(); + + for ( k in Tutorial.all().keys() ) { + var t = Tutorial.all().get(k); + + var completion = null; + if (app.user.tutoState!=null && app.user.tutoState.name == k) completion = app.user.tutoState.step / t.steps.length; + + tutos.push( { name:t.name, completion:completion , key:k } ); + } + + view.tutos = tutos; + } + + //should be able to stop tuto in any case + if (app.params.exists('stopTuto')) { + //stopped tuto from a tuto window + app.user.lock(); + app.user.tutoState = null; + app.user.update(); + view.stopTuto = true; + } + + checkToken(); + view.userAmap = ua; + } + + /** + * Edit a contract + */ + @tpl("form.mtt") + function doEdit(c:db.Contract) { + + view.category = 'contractadmin'; + if (!app.user.isContractManager(c)) throw Error('/', t._("Forbidden action")); + + view.title = t._("Edit contract ::contractName::",{contractName:c.name}); + + var group = c.amap; + var currentContact = c.contact; + + var form = Form.fromSpod(c); + form.removeElement( form.getElement("amapId") ); + form.removeElement(form.getElement("type")); + form.getElement("userId").required = true; + + app.event(EditContract(c,form)); + + if (form.checkToken()) { + form.toSpod(c); + c.amap = group; + + //checks & warnings + if (c.hasPercentageOnOrders() && c.percentageValue==null) throw Error("/contract/edit/"+c.id, t._("If you would like to add fees to the order, define a rate (%) and a label.")); + + if (c.hasStockManagement()) { + for (p in c.getProducts()) { + if (p.stock == null) { + app.session.addMessage(t._("Warning about management of stock. Please fill the field \"stock\" for all your products"), true); + break; + } + } + } + + //no stock mgmt for constant orders + if (c.hasStockManagement() && c.type==db.Contract.TYPE_CONSTORDERS) { + c.flags.unset(ContractFlags.StockManagement); + app.session.addMessage(t._("Managing stock is not available for CSA contracts"), true); + } + + + c.update(); + + //update rights + if ( c.contact != null && (currentContact==null || c.contact.id!=currentContact.id) ) { + var ua = db.UserAmap.get(c.contact, app.user.amap, true); + ua.giveRight(ContractAdmin(c.id)); + ua.giveRight(Messages); + ua.giveRight(Membership); + ua.update(); + + //remove rights to old contact + if (currentContact != null) { + var x = db.UserAmap.get(currentContact, c.amap, true); + if (x != null) { + x.removeRight(ContractAdmin(c.id)); + x.update(); + } + } + + } + + throw Ok("/contractAdmin/view/"+c.id, t._("Contract updated")); + } + + view.form = form; + } + + @tpl("contract/insertChoose.mtt") + function doInsertChoose() { + //checkToken(); + + } + + /** + * Créé un nouveau contrat + */ + @tpl("form.mtt") + function doInsert(?type:Int) { + if (!app.user.canManageAllContracts()) throw Error('/', t._("Forbidden action")); + if (type == null) throw Redirect('/contract/insertChoose'); + + view.title = if (type == db.Contract.TYPE_CONSTORDERS)t._("Create a contract with fixed orders") else t._("Create a contract with variable orders"); + + var c = new db.Contract(); + + var form = Form.fromSpod(c); + form.removeElement( form.getElement("amapId") ); + form.removeElement(form.getElement("type")); + form.getElement("userId").required = true; + + if (form.checkToken()) { + form.toSpod(c); + c.amap = app.user.amap; + //trace(app.user.amap); + //trace(c.amap); + c.type = type; + c.insert(); + + //right + if (c.contact != null) { + var ua = db.UserAmap.get(c.contact, app.user.amap, true); + ua.giveRight(ContractAdmin(c.id)); + ua.giveRight(Messages); + ua.giveRight(Membership); + ua.update(); + } + + throw Ok("/contractAdmin/view/"+c.id, t._("New contract created")); + } + + view.form = form; + } + + /** + * Delete a contract (... and its products, orders & distributions) + */ + function doDelete(c:db.Contract) { + + if (!app.user.canManageAllContracts()) throw Error("/contractAdmin", t._("You don't have the authorization to remove a contract")); + + if (checkToken()) { + c.lock(); + + //check if there is orders in this contract + var products = c.getProducts(); + + var orders = db.UserContract.manager.search($productId in Lambda.map(products, function(p) return p.id)); + var qt = 0.0; + for ( o in orders) qt += o.quantity; //there could be "zero c qt" orders + if (qt > 0) { + throw Error("/contractAdmin", t._("You cannot delete this contract because some orders are linked to it.")); + } + + //remove admin rights and delete contract + if(c.contact!=null){ + var ua = db.UserAmap.get(c.contact, c.amap, true); + if (ua != null) { + ua.removeRight(ContractAdmin(c.id)); + ua.update(); + } + } + + app.event(DeleteContract(c)); + + c.delete(); + throw Ok("/contractAdmin", t._("Contract deleted")); + } + + throw Error("/contractAdmin", t._("Token error")); + } + + /** + * Make an order by contract ( standard mode ) + * The form is prepopulated if orders have already been made. + * + * It should work for constant orders ( will display one column ) + * or varying orders ( with as many columns as distributions dates ) + * + */ + @tpl("contract/order.mtt") + function doOrder(c:db.Contract ) { + + //checks + if (app.user.amap.hasPayments()) throw Redirect("/contract/orderAndPay/" + c.id); + if (app.user.amap.hasShopMode()) throw Redirect("/shop"); + if (!c.isUserOrderAvailable()) throw Error("/", t._("This contract is not opened for orders")); + + + var distributions = []; + // If its a varying contract, we display a column by distribution + if (c.type == db.Contract.TYPE_VARORDER) { + distributions = db.Distribution.getOpenToOrdersDeliveries(c); + }else{ + distributions = [null]; + } + + //list of distribs with a list of product and optionnaly an order + var userOrders = new Array< {distrib:db.Distribution,datas:Array<{order:db.UserContract,product:db.Product}>} >(); + var products = c.getProducts(); + + if ( c.type == db.Contract.TYPE_VARORDER ){ + + for ( d in distributions){ + var datas = []; + for ( p in products) { + var ua = { order:null, product:p }; + + var order = db.UserContract.manager.select($user == app.user && $productId == p.id && $distributionId==d.id, true); + + if (order != null) ua.order = order; + datas.push(ua); + } + + userOrders.push({distrib:d,datas:datas}); + } + + }else{ + + var datas = []; + for ( p in products) { + var ua = { order:null, product:p }; + + var order = db.UserContract.manager.select($user == app.user && $productId == p.id, true); + + if (order != null) ua.order = order; + datas.push(ua); + } + + userOrders.push({distrib:null,datas:datas}); + + } + + + //form check + if (checkToken()) { + + //get dsitrib if needed + //var distrib : db.Distribution = null; + //if (c.type == db.Contract.TYPE_VARORDER) { + //distrib = db.Distribution.manager.get(Std.parseInt(app.params.get("distribution")), false); + //} + + for (k in app.params.keys()) { + + if (k.substr(0, 1) != "d") continue; + var qt = app.params.get(k); + if (qt == "") continue; + + var pid = null; + var did = null; + try{ + pid = Std.parseInt(k.split("-")[1].substr(1)); + did = Std.parseInt(k.split("-")[0].substr(1)); + }catch (e:Dynamic){trace("unable to parse key "+k); } + + //find related element in userOrders + var uo = null; + for ( x in userOrders){ + if (x.distrib!=null && x.distrib.id != did) { + continue; + }else{ + for (a in x.datas){ + if (a.product.id == pid){ + uo = a; + break; + } + } + } + } + + if (uo == null) throw t._("Could not find the product ::produ:: and delivery ::deliv::", {produ:pid, deliv:did}); + + var q = 0.0; + + if (uo.product.hasFloatQt ) { + var param = StringTools.replace(qt, ",", "."); + q = Std.parseFloat(param); + }else { + q = Std.parseInt(qt); + } + + + if (uo.order != null) { + OrderService.edit(uo.order, q); + }else { + OrderService.make(app.user, q, uo.product, did); + } + + } + throw Ok("/contract/order/"+c.id, t._("Your order has been updated")); + } + + view.c = view.contract = c; + view.userOrders = userOrders; + } + + + /** + * Make an order by contract ( standard mode ) + payment process + */ + @tpl("contract/orderAndPay.mtt") + function doOrderAndPay(c:db.Contract ) { + + //checks + if (!app.user.amap.hasPayments()) throw Redirect("/contract/order/" + c.id); + if (app.user.amap.hasShopMode()) throw Redirect("/"); + if (!c.isUserOrderAvailable()) throw Error("/", t._("This contract is not opened for orders")); + + var distributions = []; + /* If its a varying contract, we display a column by distribution*/ + if (c.type == db.Contract.TYPE_VARORDER) { + distributions = db.Distribution.getOpenToOrdersDeliveries(c); + } + + //list of distribs with a list of product and optionnaly an order + var userOrders = new Array< {distrib:db.Distribution,datas:Array<{order:db.UserContract,product:db.Product}>} >(); + var products = c.getProducts(); + + for ( d in distributions){ + var datas = []; + for ( p in products) { + var ua = { order:null, product:p }; + + var order : db.UserContract = null; + if (c.type == db.Contract.TYPE_VARORDER) { + order = db.UserContract.manager.select($user == app.user && $productId == p.id && $distributionId==d.id, true); + }else { + order = db.UserContract.manager.select($user == app.user && $productId == p.id, true); + } + + if (order != null) ua.order = order; + datas.push(ua); + } + + userOrders.push({distrib:d,datas:datas}); + } + + + //form check + if (checkToken()) { + + //get distrib if needed + var distrib = null; + if (c.type == db.Contract.TYPE_VARORDER) { + distrib = db.Distribution.manager.get(Std.parseInt(app.params.get("distribution")), false); + } + + var orders : OrderInSession = {products:[],userId:app.user.id,total:0}; + + for (k in app.params.keys()) { + + if (k.substr(0, 1) != "d") continue; + var qt = app.params.get(k); + if (qt == "") continue; + + var pid = null; + var did = null; + try{ + pid = Std.parseInt(k.split("-")[1].substr(1)); + did = Std.parseInt(k.split("-")[0].substr(1)); + }catch (e:Dynamic){ + trace("unable to parse key "+k); + } + + //find related element in userOrders + var uo = null; + for ( x in userOrders){ + if (x.distrib!=null && x.distrib.id != did) { + continue; + }else{ + for (a in x.datas){ + if (a.product.id == pid){ + uo = a; + break; + } + } + } + } + + if (uo == null) throw t._("Could not find the product ::produ:: and delivery ::deliv::", {produ:pid, deliv:did}); + + //quantity + var q = 0.0; + if (uo.product.hasFloatQt ) { + var param = StringTools.replace(qt, ",", "."); + q = Std.parseFloat(param); + }else { + q = Std.parseInt(qt); + } + + orders.products.push({productId:pid, quantity:q, distributionId:did}); + + var p = db.Product.manager.get(pid, false); + orders.total += p.getPrice() * q; + + } + + App.current.session.data.order = orders; + + //Go to payments page + if (c.type == db.Contract.TYPE_CONSTORDERS) { + throw Ok("/contract/order/"+c.id, t._("Your CSA order has been saved")); + }else{ + throw Ok("/transaction/pay/", t._("In order to save your order, please choose a means of payment.")); + } + + + + } + + view.c = view.contract = c; + view.userOrders = userOrders; + } + + + /** + * A user edit an order for a multidistrib. + */ + @tpl("contract/orderByDate.mtt") + function doEditOrderByDate(date:Date) { + + if (app.user.amap.hasPayments()) { + //when payments are active, the user cannot modify his order + throw Redirect("/"); + } + + // cannot edit order if date is in the past + if (Date.now().getTime() > date.getTime()) { + + var msg = t._("This delivery has already taken place, you can no longer modify the order."); + if (app.user.isContractManager()) msg += t._("
    As the manager of the contract you can modify the order from this page: Management of contracts"); + + throw Error("/contract", msg); + } + + // Il faut regarder le contrat de chaque produit et verifier si le contrat est toujours ouvert à la commande. + var d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); + var d2 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59); + + var cids = Lambda.map(app.user.amap.getActiveContracts(true), function(c) return c.id); + var distribs = db.Distribution.manager.search(($contractId in cids) && $date >= d1 && $date <=d2 , false); + var orders = db.UserContract.manager.search($userId==app.user.id && $distributionId in Lambda.map(distribs,function(d)return d.id) ); + view.orders = service.OrderService.prepare(orders); + view.date = date; + + //form check + if (checkToken()) { + + var orders_out = []; + + for (k in app.params.keys()) { + var param = app.params.get(k); + if (k.substr(0, "product".length) == "product") { + + //trouve le produit dans userOrders + var pid = Std.parseInt(k.substr("product".length)); + var order = Lambda.find(orders, function(uo) return uo.product.id == pid); + if (order == null) throw t._("Error, could not find the order"); + + var q = 0.0; + if (order.product.hasFloatQt ) { + param = StringTools.replace(param, ",", "."); + q = Std.parseFloat(param); + }else { + q = Std.parseInt(param); + } + + var quantity = Math.abs( q==null?0:q ); + + if ( order.distribution.canOrderNow() ) { + //met a jour la commande + var o = OrderService.edit(order, quantity); + if(o!=null) orders_out.push( o ); + } + } + } + + app.event(MakeOrder(orders_out)); + + throw Ok("/contract", t._("Your order has been updated")); + } + } +} diff --git a/src/controller/ContractAdmin.hx b/src/controller/ContractAdmin.hx new file mode 100755 index 0000000..8b5e859 --- /dev/null +++ b/src/controller/ContractAdmin.hx @@ -0,0 +1,1027 @@ +package controller; +import db.UserContract; +import sugoi.form.elements.Checkbox; +import sugoi.form.elements.Selectbox; +import sugoi.form.Form; +import sugoi.form.elements.StringInput; +import Common; +import datetime.DateTime; +using tools.ObjectListTool; +using tools.DateTool; +import service.OrderService; + +class ContractAdmin extends Controller +{ + + public function new() + { + super(); + if (!app.user.isContractManager()) throw Error("/", t._("You don't have the authorization to manage contracts")); + view.nav = ["contractadmin"]; + + } + + public function sendNav(c){ + var navbar = new Array(); + var e = Nav(navbar,"contractAdmin",c.id); + app.event(e); + view.navbar = e.getParameters()[0]; + } + + /** + * Contract admin main page + */ + @tpl("contractadmin/default.mtt") + function doDefault(?args:{old:Bool}) { + + view.nav.push("default"); + + var now = Date.now(); + + var contracts; + if (args != null && args.old) { + contracts = db.Contract.manager.search($amap == app.user.amap && $endDate < Date.now() ,{orderBy:-startDate},false); + }else { + contracts = db.Contract.getActiveContracts(app.user.amap, true, false); + } + + //filter if current user is not manager + if (!app.user.isAmapManager()) { + for ( c in Lambda.array(contracts).copy()) { + if(!app.user.canManageContract(c)) contracts.remove(c); + } + } + + view.contracts = contracts; + view.vendors = app.user.amap.getVendors(); + view.places = app.user.amap.getPlaces(); + checkToken(); + + //Multidistribs to validate + if(app.user.isAmapManager() && app.user.amap.hasPayments()){ + var twoMonthAgo = tools.DateTool.deltaDays(now,-60); + var multidistribs = MultiDistrib.getFromTimeRange(app.user.amap,twoMonthAgo,now,db.Contract.TYPE_VARORDER); + /*for( md in multidistribs.copy()){ + if(md.hasOnlyConstantOrders()) multidistribs.remove(md); + }*/ + view.multidistribs = multidistribs; + + }else{ + view.multidistribs = []; + } + } + + /** + * Manage products + */ + @tpl("contractadmin/products.mtt") + function doProducts(contract:db.Contract,?args:{?enable:String,?disable:String}) { + view.nav.push("products"); + sendNav(contract); + + if (!app.user.canManageContract(contract)) throw Error("/", t._("Access forbidden") ); + view.c = contract; + + //checks + if (app.user.amap.hasShopMode() && !app.user.amap.hasTaxonomy() ) { + for ( p in contract.getProducts(false)) { + if (p.getCategories().length == 0) { + app.session.addMessage(t._("Warning, at least one product does not have any category. Click here to add categories", {contractid:contract.id}), true); + break; + } + } + } + + //batch enable / disable products + if (args != null){ + + if (args.disable != null){ + var pids = Lambda.array(Lambda.map(args.disable.split("|"), function(x) return Std.parseInt(x))); + service.ProductService.batchDisableProducts(pids); + } + + if (args.enable != null){ + var pids = Lambda.array(Lambda.map(args.enable.split("|"), function(x) return Std.parseInt(x))); + service.ProductService.batchEnableProducts(pids); + } + + } + + //generate a token + checkToken(); + } + + + /** + * - hidden page - + * copy products from a contract to an other + */ + @admin @tpl("form.mtt") + function doCopyProducts(contract:db.Contract) { + view.title = t._("Copy products in: ")+contract.name; + var form = new Form("copy"); + var contracts = app.user.amap.getActiveContracts(); + var contracts = Lambda.map(contracts, function(c) return {key:Std.string(c.id),value:Std.string(c.name) } ); + form.addElement(new sugoi.form.elements.Selectbox("source", t._("Copy products from: "),Lambda.array(contracts))); + form.addElement(new sugoi.form.elements.Checkbox("delete", t._("Delete existing products (all orders will be deleted!)"))); + if (form.checkToken()) { + + if (form.getValueOf("delete") == "1") { + for ( p in contract.getProducts()) { + p.lock(); + p.delete(); + } + } + + var source = db.Contract.manager.get(Std.parseInt(form.getValueOf("source")), false); + var prods = source.getProducts(); + for ( source_p in prods) { + var p = new db.Product(); + p.name = source_p.name; + p.price = source_p.price; + //p.type = source_p.type; + p.contract = contract; + p.insert(); + } + + throw Ok("/contractAdmin/products/" + contract.id, t._("Products copied from ") + source.name); + + + } + + + view.form = form; + } + + /** + * displays a calendar of the current month + * with all events ( contracts start and end, deliveries... ) + */ + @tpl('contractadmin/calendar.mtt') + public function doCalendar() { + + var contracts = db.Contract.getActiveContracts(app.user.amap, true, false); + + //Events of the month in a calendar + var cal = Calendar.getMonthViewMap(); + + for ( c in contracts) { + var start = c.startDate.toString().substr(0,10); + var end = c.endDate.toString().substr(0,10); + if (cal.exists( start )) { + var v = cal.get(start); + v.push( { name: t._("Contract start ") + c.name, color:Calendar.COLOR_CONTRACT } ); + cal.set( start, v ); + } + if (cal.exists( end )) { + var v = cal.get(end); + v.push( { name: t._("Contract end ") +c.name, color:Calendar.COLOR_CONTRACT } ); + cal.set( end, v ); + } + + //deliveries + for ( d in c.getDistribs(false)) { + var start = d.date.toString().substr(0,10); + + if (cal.exists( start )) { + var v = cal.get( start ); + v.push( { name: t._("Distribution") +" "+d.contract.name, color:Calendar.COLOR_DELIVERY } ); + cal.set( start, v ); + } + + if ( d.orderStartDate != null && d.orderStartDate != null ) { + var k = d.orderStartDate.toString().substr(0,10); + if (cal.exists( k )) { + var v = cal.get( k ); + v.push( { name: t._("Opening of orders ") +d.contract.name, color:Calendar.COLOR_ORDER } ); + cal.set( k , v ); + } + + var k = d.orderEndDate.toString().substr(0,10); + if (cal.exists( k )) { + var v = cal.get( k ); + v.push( { name: t._("End of orders") +d.contract.name, color:Calendar.COLOR_ORDER } ); + cal.set( k , v ); + } + + } + + } + + } + + var n = Date.now(); + view.now = new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0).getTime(); + view.calendar = Calendar.mapToArray( cal ); + + + } + + /** + * global view on orders within a timeframe + */ + @tpl('contractadmin/ordersByTimeFrame.mtt') + function doOrdersByTimeFrame(?from:Date, ?to:Date/*, ?place:db.Place*/){ + + if (from == null) { + + var f = new sugoi.form.Form("listBydate", null, sugoi.form.Form.FormMethod.GET); + + var now = DateTime.now(); + var from = now.snap(Month(Down)).getDate(); + var to = now.snap(Month(Up)).add(Day(-1)).getDate(); + + + var el = new sugoi.form.elements.DatePicker("from", t._("Start date"), from,true); + el.format = 'LL'; + f.addElement(el); + + var el = new sugoi.form.elements.DatePicker("to", t._("End date"), to,true); + el.format = 'LL'; + f.addElement(el); + + //var places = Lambda.map(app.user.amap.getPlaces(), function(p) return {label:p.name,value:p.id} ); + //f.addElement(new sugoi.form.elements.IntSelect("placeId", "Lieu", Lambda.array(places),app.user.amap.getMainPlace().id,true)); + + view.form = f; + view.title = t._("Global view of orders"); + app.setTemplate("form.mtt"); + + if (f.checkToken()) { + + var url = '/contractAdmin/ordersByTimeFrame/' + f.getValueOf("from").toString().substr(0, 10) +"/"+f.getValueOf("to").toString().substr(0, 10); + //var p = f.getValueOf("placeId"); + //if (p != null) url += "/"+p; + throw Redirect( url ); + } + + return; + + }else { + + var d1 = tools.DateTool.setHourMinute(from,0,0); + var d2 = tools.DateTool.setHourMinute(to,23,59); + var contracts = app.user.amap.getActiveContracts(true); + var cconst = []; + var cvar = []; + for ( c in contracts) { + if (c.type == db.Contract.TYPE_CONSTORDERS) cconst.push(c.id); + if (c.type == db.Contract.TYPE_VARORDER) cvar.push(c.id); + } + + //distribs + var vdistribs = db.Distribution.manager.search(($contractId in cvar) && $date >= d1 && $date <= d2 /*&& place.id==$placeId*/, false); + var cdistribs = db.Distribution.manager.search(($contractId in cconst) && $date >= d1 && $date <= d2 /*&& place.id==$placeId*/, false); + + if (vdistribs.length == 0 && cdistribs.length == 0) throw Error("/contractAdmin/ordersByDate", t._("There is no delivery at this date")); + + //varying orders + var varorders = db.UserContract.manager.search($distributionId in vdistribs.getIds() , { orderBy:userId } ); + + //constant orders + var constorders = []; + for ( d in cdistribs) { + var orders2 = db.UserContract.manager.search($productId in d.contract.getProducts().getIds(), { orderBy:userId } ); + constorders = constorders.concat(Lambda.array(orders2)); + } + + //merge 2 lists + var orders = Lambda.array(varorders).concat(Lambda.array(constorders)); + var orders = service.OrderService.prepare(Lambda.list(orders)); + + view.orders = orders; + view.from = from; + view.to = to; + view.ctotal = app.params.exists("ctotal"); + + } + + + + } + + /** + * Global view on orders in one day + * + * @param date + */ + @tpl('contractadmin/ordersByDate.mtt') + function doOrdersByDate(?date:Date,?place:db.Place){ + if (date == null) { + + var f = new sugoi.form.Form("listBydate", null, sugoi.form.Form.FormMethod.GET); + var el = new sugoi.form.elements.DatePicker("date", t._("Delivery date"), true); + el.format = 'LL'; + f.addElement(el); + + var places = Lambda.map(app.user.amap.getPlaces(), function(p) return {label:p.name,value:p.id} ); + f.addElement(new sugoi.form.elements.IntSelect("placeId", "Lieu", Lambda.array(places),app.user.amap.getMainPlace().id,true)); + + view.form = f; + view.title = t._("Global view of orders"); + view.text = t._("This page allows you to have a global view on orders of all contracts"); + view.text += t._("
    Select a delivery date:"); + app.setTemplate("form.mtt"); + + if (f.checkToken()) { + + var url = '/contractAdmin/ordersByDate/' + f.getValueOf("date").toString().substr(0, 10); + var p = f.getValueOf("placeId"); + if (p != null) url += "/"+p; + throw Redirect( url ); + } + + return; + + }else { + + var d1 = date.setHourMinute(0, 0); + var d2 = date.setHourMinute(23,59); + var contracts = app.user.amap.getActiveContracts(true); + var cconst = []; + var cvar = []; + for ( c in contracts) { + if (c.type == db.Contract.TYPE_CONSTORDERS) cconst.push(c.id); + if (c.type == db.Contract.TYPE_VARORDER) cvar.push(c.id); + } + + //distribs + var vdistribs = db.Distribution.manager.search(($contractId in cvar) && $date >= d1 && $date <= d2 && place.id==$placeId, false); + var cdistribs = db.Distribution.manager.search(($contractId in cconst) && $date >= d1 && $date <= d2 && place.id==$placeId, false); + + if (vdistribs.length == 0 && cdistribs.length == 0) throw Error("/contractAdmin/ordersByDate", t._("There is no delivery at this date")); + + //varying orders + var varorders = db.UserContract.manager.search($distributionId in vdistribs.getIds() , { orderBy:userId } ); + + //constant orders + var constorders = []; + for ( d in cdistribs) { + var orders2 = db.UserContract.manager.search($productId in d.contract.getProducts().getIds(), { orderBy:userId } ); + constorders = constorders.concat(Lambda.array(orders2)); + } + + //merge 2 lists + var orders = Lambda.array(varorders).concat(Lambda.array(constorders)); + var orders = service.OrderService.prepare(Lambda.list(orders)); + + view.orders = orders; + view.date = date; + view.place = place; + view.ctotal = app.params.exists("ctotal"); + } + } + + + /** + * Global view on orders, producer view + */ + @tpl('contractadmin/vendorsByDate.mtt') + function doVendorsByDate(date:Date,place:db.Place){ + + var d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); + var d2 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59); + var contracts = app.user.amap.getActiveContracts(true); + var cids = Lambda.map(contracts, function(c) return c.id); + + //distribs for both types in active contracts + var distribs = db.Distribution.manager.search(($contractId in cids) && $date >= d1 && $date <= d2 && $place==place , false); + + + if ( distribs.length == 0 ) throw Error("/contractAdmin/ordersByDate", t._("There is no delivery at this date")); + + var out = new Map();//key : vendor id + + for (d in distribs){ + var vid = d.contract.vendor.id; + var o = out.get(vid); + + if (o == null){ + out.set( vid, {contract:d.contract,distrib:d,orders:service.ReportService.getOrdersByProduct( d )}); + }else{ + + //add orders with existing ones + for ( x in service.ReportService.getOrdersByProduct( d ) ){ + + //find record in existing orders + var f : Dynamic = Lambda.find(o.orders, function(a) return a.pid == x.pid); + if (f == null){ + //new product order + o.orders.push(x); + }else{ + //increment existing + f.quantity += untyped x.quantity; + f.total += untyped x.total; + } + } + out.set(vid, o); + } + } + + view.orders = Lambda.array(out); + view.date = date; + } + + + /** + * Global view on orders, producer view + */ + @tpl('contractadmin/vendorsByTimeFrame.mtt') + function doVendorsByTimeFrame(from:Date,to:Date){ + + var d1 = tools.DateTool.setHourMinute(from,0,0); + var d2 = tools.DateTool.setHourMinute(to,23,59); + var contracts = app.user.amap.getActiveContracts(true); + var cids = contracts.getIds(); + + //distribs for both types in active contracts + var distribs = db.Distribution.manager.search(($contractId in cids) && $date >= d1 && $date <= d2 /*&& $place==place*/, false); + if ( distribs.length == 0 ) throw Error("/contractAdmin/", t._("There is no delivery during this period")); + + var out = new Map}>();//key : vendor id + + for (d in distribs){ + var vid = d.contract.vendor.id; + var o = out.get(vid); + + if (o == null){ + out.set( vid, {contract:d.contract,distrib:d,orders:service.ReportService.getOrdersByProduct(d) }); + }else{ + + //add orders with existing ones + for ( x in service.ReportService.getOrdersByProduct(d) ){ + + //find record in existing orders + var f : OrderByProduct = Lambda.find(o.orders, function(a:OrderByProduct) return a.pid == x.pid); + if (f == null){ + //new product order + o.orders.push(x); + }else{ + //increment existing + f.quantity += x.quantity; + f.totalHT += x.totalHT; + f.totalTTC += x.totalTTC; + } + } + out.set(vid, o); + } + } + + view.orders = Lambda.array(out); + + if ( app.params.exists("csv") ){ + var totalHT = 0.0; + var totalTTC = 0.0; + + var orders = []; + for ( x in out){ + //empty line + orders.push({"quantity":null, "pname":null, "ref":null, "priceHT":null, "priceTTC":null, "totalHT":null, "totalTTC":null}); + orders.push({"quantity":null, "pname":x.contract.vendor.name, "ref":null, "priceHT":null, "priceTTC":null, "totalHT":null, "totalTTC":null}); + + for (o in x.orders){ + if(o.vat==null) o.vat = 0; + orders.push({ + "quantity":view.formatNum(o.quantity), + "pname":o.pname, + "ref":o.ref, + "priceHT":view.formatNum(o.priceTTC / (1 + o.vat / 100) ), + "priceTTC":view.formatNum(o.priceTTC), + "totalHT":view.formatNum(o.totalHT), + "totalTTC":view.formatNum(o.totalTTC) + }); + totalTTC += o.totalTTC; + totalHT += o.totalHT; + } + + //total line + orders.push({ + "quantity":null, + "pname":null, + "ref":null, + "priceHT":null, + "priceTTC":null, + "totalHT":view.formatNum(totalHT) + "", + "totalTTC":view.formatNum(totalTTC)+"" + }); + totalTTC = 0; + totalHT = 0; + + } + var fileName = t._("Orders from the ::fromDate:: to the ::toDate:: per supplier.csv", {fromDate:from.toString().substr(0, 10), toDate:to.toString().substr(0, 10)}); + sugoi.tools.Csv.printCsvDataFromObjects(orders, ["quantity", "pname", "ref", "priceHT", "priceTTC", "totalHT","totalTTC"], fileName); + return; + } + + view.from = from; + view.to = to; + } + + + /** + * Overview of orders for this contract in backoffice + */ + @tpl("contractadmin/orders.mtt") + function doOrders(contract:db.Contract, args:{?d:db.Distribution,?delete:db.UserContract}) { + view.nav.push("orders"); + sendNav(contract); + + //Checking permissions + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + if (contract.type == db.Contract.TYPE_VARORDER && args != null && args.d == null ) { + throw Redirect("/contractAdmin/selectDistrib/" + contract.id); + } + + //Delete specified order with quantity of zero + if (checkToken() && args != null && args.delete != null ) { + try { + service.OrderService.delete(args.delete); + } catch(e:tink.core.Error){ + throw Error("/contractAdmin/orders/" + contract.id, e.message); + } + if(args.d!=null){ + throw Ok("/contractAdmin/orders/" + contract.id + "?d="+args.d.id, t._("The order has been deleted.")); + }else{ + throw Ok("/contractAdmin/orders/" + contract.id, t._("The order has been deleted.")); + } + + } + + var d = null; + if (contract.type == db.Contract.TYPE_VARORDER ){ + view.distribution = args.d; + d = args.d; + } + view.c = contract; + var orders = db.UserContract.getOrders(contract, d, app.params.exists("csv")); + + if ( !app.params.exists("csv") ){ + + //show orders on disabled products + var disabledProducts = 0; + for ( o in orders ){ + if ( !db.Product.manager.get(o.productId, false).active ) { + disabledProducts++; + Reflect.setField(o, "disabled", true); + } + } + + view.disabledProducts = disabledProducts; + view.orders = orders; + } + + } + + + /** + * hidden feature : updates orders by setting current product price. + */ + function doUpdatePrices(contract:db.Contract, args:{?d:db.Distribution}) { + + sendNav(contract); + + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + if (contract.type == db.Contract.TYPE_VARORDER && args.d == null ) { + throw Redirect("/contractAdmin/selectDistrib/" + contract.id); + } + var d = null; + if (contract.type == db.Contract.TYPE_VARORDER ){ + view.distribution = args.d; + d = args.d; + } + + for ( o in contract.getOrders(d)){ + o.lock(); + o.productPrice = o.product.price; + if (contract.hasPercentageOnOrders()){ + o.feesRate = contract.percentageValue; + } + o.update(); + + } + throw Ok("/contractAdmin/orders/"+contract.id+"?d="+args.d.id, t._("Prices are now up to date.")); + } + + /** + * Duplicate a contract + */ + @tpl("form.mtt") + function doDuplicate(contract:db.Contract) { + + sendNav(contract); + if (!app.user.isAmapManager()) throw Error("/", t._("You do not have the authorization to manage this contract")); + + view.title = "Dupliquer le contrat '"+contract.name+"'"; + var form = new Form("duplicate"); + + form.addElement(new StringInput("name", t._("Name of the new contract"), contract.name.substr(0,50) + " - copy")); + form.addElement(new Checkbox("copyProducts", t._("Copy products"),true)); + form.addElement(new Checkbox("copyDeliveries", t._("Copy deliveries"),true)); + + if (form.checkToken()) { + + var nc = new db.Contract(); + nc.name = form.getValueOf("name"); + nc.startDate = contract.startDate; + nc.endDate = contract.endDate; + nc.amap = contract.amap; + nc.contact = contract.contact; + nc.description = contract.description; + nc.distributorNum = contract.distributorNum; + nc.flags = contract.flags; + nc.type = contract.type; + nc.vendor = contract.vendor; + nc.percentageName = contract.percentageName; + nc.percentageValue = contract.percentageValue; + nc.insert(); + + //give right to this contract + if(contract.contact!=null){ + var ua = db.UserAmap.get(contract.contact, contract.amap); + ua.giveRight(ContractAdmin(nc.id)); + } + + + if (form.getValueOf("copyProducts") == true) { + var prods = contract.getProducts(); + for ( source_p in prods) { + var p = new db.Product(); + p.name = source_p.name; + p.price = source_p.price; + p.contract = nc; + p.image = source_p.image; + p.desc = source_p.desc; + p.ref = source_p.ref; + p.stock = source_p.stock; + p.vat = source_p.vat; + p.organic = source_p.organic; + p.txpProduct = source_p.txpProduct; + p.unitType = source_p.unitType; + p.multiWeight = source_p.multiWeight; + p.variablePrice = source_p.variablePrice; + p.insert(); + + for (source_cat in source_p.getCategories()){ + var cat = new db.ProductCategory(); + cat.product = p; + cat.category = source_cat; + cat.insert(); + } + } + } + + if (form.getValueOf("copyDeliveries") == true) { + for ( ds in contract.getDistribs()) { + var d = new db.Distribution(); + d.contract = nc; + d.date = ds.date; + d.distributor1 = ds.distributor1; + d.distributor2 = ds.distributor2; + d.distributor3 = ds.distributor3; + d.distributor4 = ds.distributor4; + d.orderStartDate = ds.orderStartDate; + d.orderEndDate = ds.orderEndDate; + d.end = ds.end; + d.place = ds.place; + d.insert(); + } + } + + app.event(DuplicateContract(contract)); + + throw Ok("/contractAdmin/view/" + nc.id, t._("The contract has been duplicated")); + } + + view.form = form; + } + + + + /** + * Orders grouped by product + */ + @tpl("contractadmin/ordersByProduct.mtt") + function doOrdersByProduct(contract:db.Contract, args:{?d:db.Distribution}) { + + sendNav(contract); + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + if (contract.type == db.Contract.TYPE_VARORDER && args.d == null ) throw Redirect("/contractAdmin/selectDistrib/" + contract.id); + + var d = args != null ? args.d : null; + if (d == null) d = contract.getDistribs(false).first(); + if (d == null) throw Error("/contractAdmin/orders/"+contract.id,t._("There is no delivery in this contract, please create at least one distribution.")); + + var orders = service.ReportService.getOrdersByProduct(d,app.params.exists("csv")); + view.orders = orders; + view.distribution = d; + view.c = contract; + + } + + /** + * Purchase order to print + */ + @tpl("contractadmin/ordersByProductList.mtt") + function doOrdersByProductList(contract:db.Contract, args:{?d:db.Distribution}) { + + sendNav(contract); + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + if (contract.type == db.Contract.TYPE_VARORDER && args.d == null ) throw Redirect("/contractAdmin/selectDistrib/" + contract.id); + + if (contract.type == db.Contract.TYPE_VARORDER ) view.distribution = args.d; + view.c = contract; + view.group = contract.amap; + var d = args != null ? args.d : null; + if (d == null) d = contract.getDistribs(false).first(); + if (d == null) throw t._("No delivery in this contract"); + + var orders = service.ReportService.getOrdersByProduct(d,false); + view.orders = orders; + } + + /** + * Lists deliveries for this contract + */ + @tpl("contractadmin/deliveries.mtt") + function doDistributions(contract:db.Contract, ?args: { old:Bool } ) { + view.nav.push("distributions"); + sendNav(contract); + + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + view.c = contract; + + if (args != null && args.old) { + //display also old deliveries + view.deliveries = contract.getDistribs(false); + }else { + view.deliveries = db.Distribution.manager.search($end > DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24 * 30) && $contract == contract, { orderBy:date} ); + } + + view.cycles = db.DistributionCycle.manager.search( $contract==contract && $endDate > Date.now() ,false); + + } + + /** + * Attendance to distribution + */ + @tpl("contractadmin/distributionp.mtt") + function doDistributionp(contract:db.Contract) { + view.nav.push("distributions"); + sendNav(contract); + + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + + var distribs = contract.getDistribs(false); + var userCount = new Map(); + var suscribers = contract.getUsers(); + for( u in suscribers) userCount[u.id] = 0; + //populate + + var increment = function(user:db.User){ + if(user==null) return; + var x = userCount[user.id]; + if(x==null){ + userCount[user.id] = 1; + }else{ + userCount[user.id] = x+1; + } + } + + for ( d in distribs) { + increment(d.distributor1); + increment(d.distributor2); + increment(d.distributor3); + increment(d.distributor4); + } + + var out1 = new Array<{user:db.User,count:Int}>();//suscribers + var out2 = new Array<{user:db.User,count:Int}>();//not suscribers + for( k in userCount.keys()){ + if(Lambda.find(suscribers,function(s) return s.id==k)!=null){ + out1.push( { user:db.User.manager.get(k), count:userCount[k] } ); + }else{ + out2.push( { user:db.User.manager.get(k), count:userCount[k] } ); + } + + } + + var num = (distribs.length*contract.distributorNum) / suscribers.length; + view.num = Std.string(num).substr(0,4); + view.numRounded = Math.round(num); + view.users = suscribers.length; + view.distributorNum = contract.distributorNum; + view.distribs = distribs.length; + view.c = contract; + view.participations = out1; + view.extParticipations = out2; + } + + @tpl("contractadmin/view.mtt") + function doView(contract:db.Contract) { + view.nav.push("view"); + sendNav(contract); + + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + view.c = view.contract = contract; + } + + + @tpl("contractadmin/stats.mtt") + function doStats(contract:db.Contract, ?args: { stat:Int } ) { + sendNav(contract); + if (!app.user.canManageContract(contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + view.c = contract; + + if (args == null) args = { stat:0 }; + view.stat = args.stat; + var pids = contract.getProducts().map(function(x) return x.id); + switch(args.stat) { + case 0 : + //ancienneté des amapiens + + if(pids.length==0){ + view.anciennete = new List(); + }else{ + view.anciennete = sys.db.Manager.cnx.request("select YEAR(u.cdate) as uyear ,count(DISTINCT u.id) as cnt from User u, UserContract up where up.userId=u.id and up.productId IN (" + pids.join(",") + ") group by uyear;").results(); + } + + case 1 : + //repartition des commandes + var repartition = new List(); + var total = 0; + var totalPrice = 0; + if(pids.length!=0){ + var repartition = sys.db.Manager.cnx.request("select sum(quantity) as quantity,productId,p.name,p.price from UserContract up, Product p where up.productId IN (" + contract.getProducts().map(function(x) return x.id).join(",") + ") and up.productId=p.id group by productId").results(); + for ( r in repartition) { + total += r.quantity; + totalPrice += r.price*r.quantity; + } + for (r in repartition) { + Reflect.setField(r, "percent", Math.round((r.quantity/total)*100) ); + } + + if ( app.params.exists("csv") ){ + sugoi.tools.Csv.printCsvDataFromObjects(Lambda.array(repartition), ["quantity","productId","name","price","percent"], "stats-" + contract.name+".csv"); + } + } + + view.repartition = repartition; + view.totalQuantity = total; + view.totalPrice = totalPrice; + + } + + } + + + + /** + * Efface une commande + * @param uc + */ + function doDelete(uc:UserContract) { + if (!app.user.canManageContract(uc.product.contract)) throw Error("/", t._("You do not have the authorization to manage this contract")); + uc.lock(); + uc.delete(); + throw Ok('/contractAdmin/orders/'+uc.product.contract.id, t._("The contract has been canceled")); + } + + + @tpl("contractadmin/selectDistrib.mtt") + function doSelectDistrib(c:db.Contract, ?args:{old:Bool}) { + view.nav.push("orders"); + sendNav(c); + + view.c = c; + if (args != null && args.old){ + view.distributions = c.getDistribs(false); + }else{ + view.distributions = c.getDistribs(true); + } + + } + + /** + * Edit a user's orders + */ + @tpl("contractadmin/edit.mtt") + function doEdit(c:db.Contract, ?user:db.User, args:{?d:db.Distribution}) { + view.nav.push("orders"); + sendNav(c); + + if (!app.user.canManageContract(c)) throw Error("/", t._("You do not have the authorization to manage this contract")); + if (args.d != null && args.d.validated) throw Error("/contractAdmin/orders/" + c.id + "?d=" + args.d.id, t._("This delivery has been already validated")); + + view.c = view.contract = c; + view.u = user; + view.distribution = args.d; + + //need to select a distribution for varying orders contracts + if (c.type == db.Contract.TYPE_VARORDER && args.d == null ) { + + throw Redirect("/contractAdmin/orders/" + c.id); + + }else { + + //members of the group + view.users = app.user.amap.getMembersFormElementData(); + + var userOrders = new Array<{order:db.UserContract,product:db.Product}>(); + var products = c.getProducts(false); + + for ( p in products) { + var ua = { order:null, product:p }; + + var order : db.UserContract = null; + if (c.type == db.Contract.TYPE_VARORDER) { + order = db.UserContract.manager.select($user == user && $productId == p.id && $distributionId==args.d.id, true); + }else { + order = db.UserContract.manager.select($user == user && $productId == p.id, true); + } + + if (order != null) ua.order = order; + userOrders.push(ua); + } + + //form check + if (checkToken()) { + + //it's a new order, the user has been defined in the form. + if (user == null) { + user = db.User.manager.get(Std.parseInt(app.params.get("user"))); + if (user == null){ + var user = app.params.get("user"); + throw t._("Unable to find user #::num::",{num:user}); + } + if (!user.isMemberOf(app.user.amap)) throw user + " is not member of this group"; + } + + //get distrib if needed + var distrib : db.Distribution = null; + if (c.type == db.Contract.TYPE_VARORDER) { + distrib = db.Distribution.manager.get(Std.parseInt(app.params.get("distribution")), false); + } + + var orders = []; + + for (k in app.params.keys()) { + var param = app.params.get(k); + if (k.substr(0, "product".length) == "product") { + + //trouve le produit dans userOrders + var pid = Std.parseInt(k.substr("product".length)); + var uo = Lambda.find(userOrders, function(uo) return uo.product.id == pid); + if (uo == null) throw t._("Unable to find product ::pid::", {pid:pid}); + + //user2 ? + var user2 : db.User = null; + var invert = false; + if (app.params.get("user2" + pid) != null && app.params.get("user2" + pid) != "0") { + user2 = db.User.manager.get(Std.parseInt(app.params.get("user2"+pid))); + if (user2 == null) { + var user = app.params.get("user2"); + throw t._("Unable to find user #::num::",{num:user}); + } + if (!user2.isMemberOf(app.user.amap)) throw t._("::user:: is not part of this group",{user:user2}); + if (user.id == user2.id) throw t._("Both selected accounts must be different ones"); + + invert = app.params.get("invert" + pid) == "1"; + } + + //filter quantity + var q = 0.0; + if (uo.product.hasFloatQt ) { + param = StringTools.replace(param, ",", "."); + q = Std.parseFloat(param); + }else { + q = Std.parseInt(param); + } + if(q==null) continue; //ignore bad qt input + + //record order + if (uo.order != null) { + //existing record + var o = OrderService.edit(uo.order, q, (app.params.get("paid" + pid) == "1"), user2, invert); + if (o != null) orders.push(o); + }else { + //new record + var o = OrderService.make(user, q, uo.product, distrib == null ? null : distrib.id, (app.params.get("paid" + pid) == "1"), user2, invert); + if (o != null) orders.push(o); + } + } + } + + app.event(MakeOrder(orders)); + db.Operation.onOrderConfirm(orders); + + if (distrib != null) { + throw Ok("/contractAdmin/orders/" + c.id +"?d="+distrib.id, t._("The order has been updated")); + }else { + throw Ok("/contractAdmin/orders/" + c.id, t._("The order has been updated")); + } + } + view.userOrders = userOrders; + } + } + +} diff --git a/src/controller/Controller.hx b/src/controller/Controller.hx new file mode 100755 index 0000000..b590ab2 --- /dev/null +++ b/src/controller/Controller.hx @@ -0,0 +1,28 @@ +package controller; + +/** + * Base Cagette.net Controller + * @author fbarbut + */ +class Controller extends sugoi.BaseController +{ + + var t: sugoi.i18n.GetText; + + public function new() + { + super(); + + //gettext translator + this.t = sugoi.i18n.Locale.texts; + + } + + public function checkIsLogged(){ + if(app.user==null) { + throw new tink.core.Error(t._("You should be logged in to perform this action.")); + } + } + + +} \ No newline at end of file diff --git a/src/controller/Cron.hx b/src/controller/Cron.hx new file mode 100755 index 0000000..2eea8b0 --- /dev/null +++ b/src/controller/Cron.hx @@ -0,0 +1,477 @@ +package controller; +import sugoi.db.Cache; +import sugoi.Web; +import sugoi.mail.Mail; +import Common; +using Lambda; +using tools.DateTool; + +class Cron extends Controller +{ + + public function doDefault() + { + + } + + /** + * CLI only en prod + */ + function canRun() { + if (App.current.user != null && App.current.user.isAdmin()){ + return true; + }else if (App.config.DEBUG) { + return true; + }else { + + if (Web.isModNeko) { + Sys.print("only CLI."); + return false; + }else { + return true; + } + } + } + + public function doMinute() { + + print("Cron.doMinute is called"); + + if (!canRun()) return; + + app.event(MinutelyCron); + + sendEmailsfromBuffer(); + + } + + /** + * Hourly Cron + * + * this function can be locally tested with `neko index.n cron/hour > cron.log` + */ + public function doHour() { + + app.event(HourlyCron); + + distribNotif(4,db.User.UserFlags.HasEmailNotif4h); //4h before + distribNotif(24,db.User.UserFlags.HasEmailNotif24h); //24h before + distribNotif(0, db.User.UserFlags.HasEmailNotifOuverture); //on command open + + distribValidationNotif(); + //sendOrdersByProductWhenOrdersClose(); + } + + + public function doDaily() { + if (!canRun()) return; + + app.event(DailyCron); + + //ERRORS MONITORING + var n = Date.now(); + var yest24h = new Date(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0); + var yest0h = DateTools.delta(yest24h, -1000 * 60 * 60 * 24); + + var errors = sugoi.db.Error.manager.search( $date < yest24h && $date > yest0h ); + if (errors.length > 0) { + var report = new StringBuf(); + report.add("

    " + App.config.NAME + " : ERRORS

    "); + for (e in errors) { + report.add("
    "+e.error + " at URL " + e.url + " ( user : " + (e.user!=null?e.user.toString():"none") + ", IP : " + e.ip + ")

    "); + } + + var m = new Mail(); + m.setSender(App.config.get("default_email"),"Cagette.net"); + m.addRecipient(App.config.get("webmaster_email")); + m.setSubject(App.config.NAME+" Errors"); + m.setHtmlBody( app.processTemplate("mail/message.mtt", { text:report.toString() } ) ); + App.sendMail(m); + } + + + //DEMO CONTRATS deletion after 7 days ( see controller.Group.doCreate() ) + db.Contract.manager.delete($name == "Contrat AMAP Maraîcher Exemple" && $startDate < DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24 * 7)); + db.Contract.manager.delete($name == "Contrat Poulet Exemple" && $startDate < DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24 * 7)); + + + //Old Messages cleaning + db.Message.manager.delete($date < DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24 * 30 * 6)); + + //DB cleaning : I dont know how, but some people have empty string emails... + /*for ( u in db.User.manager.search($email == "", true)){ + u.email = Std.random(9999) + "@cagette.net"; + u.update(); + } + for ( u in db.User.manager.search($email2 == "", true)){ + u.email2 = null; + u.update(); + }*/ + + + } + + /** + * Send email notifications to users before a distribution + * @param hour + * @param flag + */ + function distribNotif(hour:Int, flag:db.User.UserFlags) { + + //trouve les distrib qui commencent dans le nombre d'heures demandé + //on recherche celles qui commencent jusqu'à une heure avant pour ne pas en rater + var from = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * (hour-1)); + var to = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * hour); + + //if (App.config.DEBUG) from = DateTools.delta(from, 1000.0 * 60 * 60 * 24 * -30); + + // dans le cas HasEmailNotifOuverture la date à prendre est le orderStartDate + // et non pas date qui est la date de la distribution + var distribs; + if ( db.User.UserFlags.HasEmailNotifOuverture == flag ) + distribs = db.Distribution.manager.search( $orderStartDate >= from && $orderStartDate <= to , false); + else + distribs = db.Distribution.manager.search( $date >= from && $date <= to , false); + + //Sys.print("distribNotif "+hour+" from "+from+" to "+to+"
    \n"); + + //on s'arrete immédiatement si aucune distibution trouvée + if (distribs.length == 0) return; + + //cherche plus tard si on a pas une "grappe" de distrib + /*while (true) { + var extraDistribs ; + if ( db.User.UserFlags.HasEmailNotifOuverture != flag ) + extraDistribs = db.Distribution.manager.search( $date >= to && $date = to && $orderStartDate 0) { + //on fait un tour de plus avec une heure plus tard + to = DateTools.delta(h, 1000.0 * 60 * 60); + }else { + //plus de distribs + break; + } + }*/ + + //on vérifie dans le cache du jour que ces distrib n'ont pas deja été traitées lors d'un cron précédent + var cacheId = Date.now().toString().substr(0, 10)+Std.string(flag); + var dist :Array = sugoi.db.Cache.get(cacheId); + if (dist != null) { + for (d in Lambda.array(distribs)) { + if (Lambda.exists(dist, function(x) return x == d.id)) { + // Comment this line in case of local test + distribs.remove(d); + } + } + }else { + dist = []; + } + + //toutes les distribs trouvées ont deja été traitées + if (distribs.length == 0) return; + + //stocke cache + for (d in distribs) dist.push(d.id); + Cache.set(cacheId, dist, 24 * 60 * 60); + + //We have now the distribs we want to notify about. + var distribsByContractId = new Map(); + for (d in distribs) { + if (d == null || d.contract==null) continue; + distribsByContractId.set(d.contract.id, d); + } + + //Boucle sur les distributions pour gerer le cas de plusieurs distributions le même jour sur le même contrat + var orders = []; + for (d in distribs) { + if (d == null || d.contract==null) continue; + //get orders for both type of contracts + for ( x in d.contract.getOrders(d)) orders.push(x); + } + + /* + * Group orders by users-group to receive separate emails by groups for the same user. + * Map key is $userId-$groupId + */ + var users = new Map , + vendors:Array + }>(); + + for (o in orders) { + + var x = users.get(o.user.id+"-"+o.product.contract.amap.id); + if (x == null) x = {user:o.user,distrib:null,products:[],vendors:[]}; + x.distrib = distribsByContractId.get(o.product.contract.id); + x.products.push(o); + users.set(o.user.id+"-"+o.product.contract.amap.id, x); + //trace (o.userId+"-"+o.product.contract.amap.id, x);Sys.print("
    \n"); + + // Prévenir également le deuxième user en cas des commandes alternées + if (o.user2 != null) { + var x = users.get(o.user2.id+"-"+o.product.contract.amap.id); + if (x == null) x = {user:o.user2,distrib:null,products:[],vendors:[]}; + x.distrib = distribsByContractId.get(o.product.contract.id); + x.products.push(o); + users.set(o.user2.id+"-"+o.product.contract.amap.id, x); + //trace (o.user2.id+"-"+o.product.contract.amap.id, x);Sys.print("
    \n"); + } + } + + //remove zero qt orders + for( k in users.keys()){ + var x = users.get(k); + var total = 0.0; + for( o in x.products) total += o.quantity; + if(total==0.0) users.remove(k); + } + + // Dans le cas de l'ouverture de commande, ce sont tous les users qu'il faut intégrer + if ( db.User.UserFlags.HasEmailNotifOuverture == flag ) + { + for (d in distribs) { + var memberList = d.contract.amap.getMembers(); + for (u in memberList) { + var x = users.get(u.id+"-"+d.contract.amap.id); + if (x == null) x = {user:u,distrib:null,products:[],vendors:[]}; + x.distrib = distribsByContractId.get(d.contract.id); + x.vendors.push(d.contract.vendor); + users.set(u.id+"-"+d.contract.amap.id, x); + //print(u.id+"-"+d.contract.amap.id, x); + } + } + } + + for ( u in users) { + + if (u.user.flags.has(flag) ) { + + if (u.user.email != null) { + var group = u.distrib.contract.amap; + this.t = sugoi.i18n.Locale.init(u.user.lang); //switch to the user language + + var text; + if ( db.User.UserFlags.HasEmailNotifOuverture == flag ) + { + //order opening notif + text = t._("Opening of orders for the delivery of ::date::", {date:view.hDate(u.distrib.date)}); + text += "
    "; + text += t._("The following suppliers are involved :"); + text += "
      "; + for ( v in u.vendors) { + text += "
    • " + v + "
    • "; + } + text += "
    "; + + }else{ + //Distribution notif to the users + var d = u.distrib; + text = t._("Do not forget the delivery on ::day:: from ::from:: to ::to::
    ", {day:view.dDate(d.date),from:view.hHour(d.date),to:view.hHour(d.end)}); + text += t._("Your products to collect :") + "
      "; + for ( p in u.products) { + text += "
    • "+p.quantity+" x "+p.product.getName(); + // Gerer le cas des contrats en alternance + if (p.user2 != null) { + text += " " + t._("alternated with") + " "; + if (u.user == p.user) + text += p.user2.getCoupleName(); + else + text += p.user.getCoupleName(); + } + text += "
    • "; + } + text += "
    "; + } + + if (u.distrib.isDistributor(u.user)) { + text += t._("Warning: you are in charge of the delivery ! Do not forget to print the attendance sheet."); + } + + try{ + var m = new Mail(); + m.setSender(App.config.get("default_email"), "Cagette.net"); + if(group.contact!=null) m.setReplyTo(group.contact.email, group.name); + m.addRecipient(u.user.email, u.user.getName()); + if (u.user.email2 != null) m.addRecipient(u.user.email2); + m.setSubject( group.name+" : "+t._("Distribution on ::date::",{date:app.view.hDate(u.distrib.date)}) ); + m.setHtmlBody( app.processTemplate("mail/message.mtt", { text:text,group:group } ) ); + App.sendMail(m , u.distrib.contract.amap); + }catch (e:Dynamic){ + app.logError(e); //email could be invalid + } + + } + } + } + } + + + /** + * Check if there is a multi-distrib to validate. + * + * Autovalidate it after 10 days + */ + function distribValidationNotif(){ + + var now = Date.now(); + + var from = now.setHourMinute( now.getHours(), 0 ); + var to = now.setHourMinute( now.getHours()+1 , 0); + + var explain = t._("

    This step is important in order to:

    "); + explain += t._("
    • Update orders if delivered quantities are different from ordered quantities
    • "); + explain += t._("
    • Confirm the reception of payments (checks, cash, transfers) in order to mark orders as 'paid'
    "); + + /* + * warn administrator if a distribution just ended + */ + var ds = db.Distribution.manager.search( !$validated && ($end >= from) && ($end < to) , false); + + for ( d in Lambda.array(ds)){ + if ( d.contract.type != db.Contract.TYPE_VARORDER ){ + ds.remove(d); + }else if ( !d.contract.amap.hasPayments() ){ + ds.remove(d); + } + } + + var ds = tools.ObjectListTool.deduplicateDistribsByKey(ds); + var view = App.current.view; + + for ( d in ds ){ + // var subj = "["+d.contract.amap.name+"] " + t._("Validation of the ::date:: distribution",{date:view.hDate(d.date)}); + var subj = t._("[::group::] Validation of the ::date:: distribution",{group : d.contract.amap.name , date : view.hDate(d.date)}); + + var url = "http://" + App.config.HOST + "/distribution/validate/"+d.date.toString().substr(0,10)+"/"+d.place.id; + + var html = t._("

    Your distribution just finished, don't forget to validate it

    "); + html += explain; + html += t._("

    Click here to validate the distribution (You must be connected to your group Cagette)", {distriburl:url}); + + App.quickMail(d.contract.amap.contact.email, subj, html); + } + + /* + * warn administrator if a distribution ended 3 days ago + */ + + var from = now.setHourMinute( now.getHours() , 0 ).deltaDays(-3); + var to = now.setHourMinute( now.getHours()+1 , 0).deltaDays(-3); + + //warn administrator if a distribution just ended + var ds = db.Distribution.manager.search( !$validated && ($end >= from) && ($end < to) , false); + + for ( d in Lambda.array(ds)){ + if ( d.contract.type != db.Contract.TYPE_VARORDER ){ + ds.remove(d); + }else if ( !d.contract.amap.hasPayments() ){ + ds.remove(d); + } + } + + var ds = tools.ObjectListTool.deduplicateDistribsByKey(ds); + + for ( d in ds ){ + // var subj = d.contract.amap.name + t._(": Validation of the delivery of the ") + App.current.view.hDate(d.date); + var subj = t._("[::group::] Validation of the ::date:: distribution",{group : d.contract.amap.name , date : view.hDate(d.date)}); + + var url = "http://" + App.config.HOST + "/distribution/validate/"+d.date.toString().substr(0,10)+"/"+d.place.id; + + var html = t._("

    Reminder: you have a delivery to validate.

    "); + html += explain; + html += t._("

    Click here to validate the delivery (You must be connected to your Cagette group)", {distriburl:url}); + + App.quickMail(d.contract.amap.contact.email, subj, html); + } + + + /* + * Autovalidate unvalidated distributions after 10 days + */ + var from = now.setHourMinute( now.getHours() , 0 ).deltaDays( 0 - db.Distribution.DISTRIBUTION_VALIDATION_LIMIT ); + var to = now.setHourMinute( now.getHours() + 1 , 0).deltaDays( 0 - db.Distribution.DISTRIBUTION_VALIDATION_LIMIT ); + print('AUTOVALIDATION'); + print('Find distributions from $from to $to'); + var ds = db.Distribution.manager.search( !$validated && ($end >= from) && ($end < to) , true); + for ( d in Lambda.array(ds)){ + if ( d.contract.type != db.Contract.TYPE_VARORDER ){ + ds.remove(d); + }else if ( !d.contract.amap.hasPayments() ){ + ds.remove(d); + } + } + for ( d in ds){ + print(d.toString()); + + service.PaymentService.validateDistribution(d); + + } + //email + var ds = tools.ObjectListTool.deduplicateDistribsByKey(ds); + for ( d in ds ){ + // var subj = d.contract.amap.name + t._(": Validation of the distribution of the ") + App.current.view.hDate(d.date); + var subj = t._("[::group::] Validation of the ::date:: distribution",{group : d.contract.amap.name , date : view.hDate(d.date)}); + var html = t._("

    As you did not validate it manually after 10 days,
    the delivery of the ::deliveryDate:: has been validated automatically

    ", {deliveryDate:App.current.view.hDate(d.date)}); + App.quickMail(d.contract.amap.contact.email, subj, html); + } + + } + + /** + * Send emails from buffer. + * + * Warning, if the cron is executed each minute, + * you should consider the right amount of emails to send each minute in order to avoid overlaping and getting in concurrency problems. + * (like "SELECT * FROM BufferedMail WHERE sdate IS NULL ORDER BY cdate DESC LIMIT 100 FOR UPDATE Lock wait timeout exceeded; try restarting transaction") + */ + function sendEmailsfromBuffer(){ + print("

    Send Emails from Buffer

    "); + + //send + for( e in sugoi.db.BufferedMail.manager.search($sdate==null,{limit:50,orderBy:-cdate},false) ){ + e.lock(); + if(e.isSent()) continue; + + print('#${e.id} - ${e.title}'); + e.finallySend(); + Sys.sleep(0.1); + } + + //delete old emails + var threeMonthsAgo = DateTools.delta(Date.now(), -1000.0*60*60*24*30*3); + sugoi.db.BufferedMail.manager.delete($cdate < threeMonthsAgo); + + //emails that cannot be sent + for( e in sugoi.db.BufferedMail.manager.search($tries>100,{limit:50,orderBy:-cdate},true) ){ + if(e.sender.email != App.config.get("default_email")){ + var str = t._("Sorry, the email entitled ::title:: could not be sent.",{title:e.title}); + App.quickMail(e.sender.email,t._("Email not sent"),str); + } + e.delete(); + } + } + + /** + * Email product report when orders close + **/ + function sendOrdersByProductWhenOrdersClose(){ + + var range = tools.DateTool.getLastHourRange(); + // Sys.println("Time is "+Date.now()+"
    "); + // Sys.println('Find all distributions that have closed in the last hour from ${range.from} to ${range.to} \n
    '); + + for ( d in db.Distribution.manager.search($orderEndDate >= range.from && $orderEndDate < range.to, false)){ + service.OrderService.sendOrdersByProductReport(d); + } + + } + + + function print(text){ + Sys.println( text + "
    " ); + } +} diff --git a/src/controller/Distribution.hx b/src/controller/Distribution.hx new file mode 100755 index 0000000..9c52481 --- /dev/null +++ b/src/controller/Distribution.hx @@ -0,0 +1,577 @@ +package controller; +import db.UserContract; +import sugoi.form.Form; +import sugoi.form.elements.HourDropDowns; +using tools.DateTool; +import Common; + +class Distribution extends Controller +{ + + + /** + * Attendance sheet by user-product (single distrib) + */ + @tpl('distribution/list.mtt') + function doList(d:db.Distribution) { + view.distrib = d; + view.place = d.place; + view.contract = d.contract; + view.orders = service.OrderService.prepare(d.getOrders()); + + } + + /** + * Attendance sheet by product-user (single distrib) + */ + @tpl('distribution/listByProductUser.mtt') + function doListByProductUser(d:db.Distribution) { + view.distrib = d; + view.place = d.place; + view.contract = d.contract; + // view.orders = UserContract.prepare(d.getOrders()); + + //make a 2 dimensons table : data[userId][productId] + //WARNING : BUGS WILL APPEAR if there is many Order line for the same product + var data = new Map>(); + var products = []; + var uo = d.getOrders(); + + for(o in uo){ + products.push(o.product); + } + + for ( o in service.OrderService.prepare(uo)) { + + var user = data[o.userId]; + if (user == null) user = new Map(); + user[o.productId] = o; + data[o.userId] = user; + + } + + //products + var products = tools.ObjectListTool.deduplicate(products); + products.sort(function(b, a) { + return (a.name < b.name)?1:-1; + }); + view.products = products; + + //users + var users = Lambda.array(d.getUsers()); + // var usersMap = tools.ObjectListTool.toIdMap(users); + users.sort(function(b, a) { + return (a.lastName < b.lastName)?1:-1; + }); + view.users = users; + // view.usersMap = usersMap; + + view.orders = data; + + //total to pay by user + view.totalByUser = function(uid:Int){ + var total = 0.0; + for( o in data[uid]) total+= o.total; + return total; + } + + //total qty of product + view.totalByProduct = function(pid:Int){ + var total = 0.0; + for( uid in data.keys()){ + var x = data[uid][pid]; + if(x!=null) total+= x.quantity; + } + return total; + } + + } + + /** + * Attendance sheet to print ( mutidistrib ) + */ + @tpl('distribution/listByDate.mtt') + function doListByDate(date:Date,place:db.Place, ?type:String, ?fontSize:String) { + + if (!app.user.isContractManager()) throw Error('/', t._("Forbidden action")); + + view.place = place; + + if (type == null) { + + //display form + var f = new sugoi.form.Form("listBydate", null, sugoi.form.Form.FormMethod.GET); + f.addElement(new sugoi.form.elements.RadioGroup("type", "Affichage", [ + { value:"one", label:t._("One person per page") }, + { value:"contract", label:t._("One person per page sorted by contract") }, + { value:"all", label:t._("All") }, + { value:"allshort", label:t._("All but without prices and totals") }, + ],"all")); + f.addElement(new sugoi.form.elements.RadioGroup("fontSize", "Taille de police", [ + { value:"S" , label:"S" }, + { value:"M" , label:"M" }, + { value:"L" , label:"L" }, + { value:"XL", label:"XL" }, + ], "S", "S", false)); + + view.form = f; + app.setTemplate("form.mtt"); + + if (f.checkToken()) { + var suburl = f.getValueOf("type")+"/"+f.getValueOf("fontSize"); + var url = '/distribution/listByDate/' + date.toString().substr(0, 10)+"/"+place.id+"/"+suburl; + throw Redirect( url ); + } + + return; + + }else { + + view.date = date; + view.fontRatio = switch(fontSize){ + case "M" : 125; //100x1.25 + case "L" : 156; //125x1.25 + case "XL": 195; //156x1.25 + default : 100; + }; + + switch(type) { + case "one": + app.setTemplate("distribution/listByDateOnePage.mtt"); + case "allshort" : + app.setTemplate("distribution/listByDateShort.mtt"); + case "contract" : + app.setTemplate("distribution/listByDateOnePageContract.mtt"); + } + + var d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); + var d2 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59); + var contracts = app.user.amap.getActiveContracts(true); + //var cids = Lambda.map(contracts, function(c) return c.id); + var cconst = []; + var cvar = []; + for ( c in contracts) { + if (c.type == db.Contract.TYPE_CONSTORDERS) cconst.push(c.id); + if (c.type == db.Contract.TYPE_VARORDER) cvar.push(c.id); + } + + //commandes variables + var distribs = db.Distribution.manager.search(($contractId in cvar) && $date >= d1 && $date <= d2 && $place==place, false); + var orders = db.UserContract.manager.search($distributionId in Lambda.map(distribs, function(d) return d.id) , { orderBy:userId } ); + + //commandes fixes + var distribs = db.Distribution.manager.search(($contractId in cconst) && $date >= d1 && $date <= d2 && $place==place, false); + var orders = Lambda.array(orders); + for ( d in distribs) { + var orders2 = db.UserContract.manager.search($productId in Lambda.map(d.contract.getProducts(), function(d) return d.id) , { orderBy:userId } ); + orders = orders.concat(Lambda.array(orders2)); + } + + var orders3 = service.OrderService.prepare(Lambda.list(orders)); + view.orders = orders3; + + if (type == "csv") { + var data = new Array(); + + for (o in orders3) { + data.push( { + "name":o.userName, + "productName":o.productName, + "price":view.formatNum(o.productPrice), + "quantity":o.quantity, + "fees":view.formatNum(o.fees), + "total":view.formatNum(o.total), + "paid":o.paid + }); + } + + sugoi.tools.Csv.printCsvDataFromObjects(data, ["name", "productName", "price", "quantity","fees","total", "paid"],"Export-commandes-"+date.toString().substr(0,10)+"-Cagette"); + return; + } + } + } + + function doDelete(d:db.Distribution) { + + if (!app.user.isContractManager(d.contract)) throw Error('/', t._("Forbidden action")); + + var contractId = d.contract.id; + try { + service.DistributionService.delete(d); + } + catch(e:tink.core.Error){ + throw Error("/contractAdmin/distributions/" + contractId, e.message); + } + + throw Ok("/contractAdmin/distributions/" + contractId, t._("the delivery has been deleted")); + + } + + /** + * Edit a distribution + */ + @tpl('form.mtt') + function doEdit(d:db.Distribution) { + if (!app.user.isContractManager(d.contract)) throw Error('/', t._('Forbidden action') ); + var contract = d.contract; + + var form = sugoi.form.Form.fromSpod(d); + form.removeElement(form.getElement("contractId")); + form.removeElement(form.getElement("end")); + form.removeElement(form.getElement("distributionCycleId")); + var x = new sugoi.form.elements.HourDropDowns("end", t._("End time") ,d.end,true); + form.addElement(x, 3); + + if (d.contract.type == db.Contract.TYPE_VARORDER ) { + form.addElement(new sugoi.form.elements.DatePicker("orderStartDate", t._("Orders opening date"), d.orderStartDate)); + form.addElement(new sugoi.form.elements.DatePicker("orderEndDate", t._("Orders closing date"), d.orderEndDate)); + } + + if (form.isValid()) { + + var orderStartDate = null; + var orderEndDate = null; + + try{ + + if (d.contract.type == db.Contract.TYPE_VARORDER ) { + orderStartDate = form.getValueOf("orderStartDate"); + orderEndDate = form.getValueOf("orderEndDate"); + } + + d = service.DistributionService.edit(d, + form.getValueOf("date"), + form.getValueOf("end"), + form.getValueOf("placeId"), + form.getValueOf("distributor1Id"), + form.getValueOf("distributor2Id"), + form.getValueOf("distributor3Id"), + form.getValueOf("distributor4Id"), + orderStartDate, + orderEndDate); + + } + catch(e:tink.core.Error){ + throw Error('/contractAdmin/distributions/' + contract.id,e.message); + } + + if (d.date == null) { + var msg = t._("The distribution has been proposed to the supplier, please wait for its validation"); + throw Ok('/contractAdmin/distributions/'+contract.id, msg ); + } + else { + throw Ok('/contractAdmin/distributions/'+contract.id, t._("The distribution has been recorded") ); + } + + } + else { + app.event(PreEditDistrib(d)); + } + + view.form = form; + view.title = t._("Edit a distribution"); + } + + @tpl('form.mtt') + function doEditCycle(d:db.DistributionCycle) { + + if (!app.user.isContractManager(d.contract)) throw Error('/', 'Action interdite'); + + var form = sugoi.form.Form.fromSpod(d); + form.removeElement(form.getElement("contractId")); + + if (form.isValid()) { + form.toSpod(d); //update model + d.update(); + throw Ok('/contractAdmin/distributions/'+d.contract.id, t._("The delivery is now up to date")); + } + + view.form = form; + view.title = t._("Modify a delivery"); + } + + @tpl("form.mtt") + public function doInsert(contract:db.Contract) { + + if (!app.user.isContractManager(contract)) throw Error('/', t._('Forbidden action') ); + + var d = new db.Distribution(); + d.place = contract.amap.getMainPlace(); + var form = sugoi.form.Form.fromSpod(d); + form.removeElement(form.getElement("contractId")); + form.removeElement(form.getElement("distributionCycleId")); + form.removeElement(form.getElement("end")); + var x = new sugoi.form.elements.HourDropDowns("end", t._("End time") ); + form.addElement(x, 3); + + //default values + form.getElement("date").value = DateTool.now().deltaDays(30).setHourMinute(19, 0); + form.getElement("end").value = DateTool.now().deltaDays(30).setHourMinute(20, 0); + + if (contract.type == db.Contract.TYPE_VARORDER ) { + form.addElement(new sugoi.form.elements.DatePicker("orderStartDate", t._("Orders opening date"),DateTool.now().deltaDays(10).setHourMinute(8, 0))); + form.addElement(new sugoi.form.elements.DatePicker("orderEndDate", t._("Orders closing date"),DateTool.now().deltaDays(20).setHourMinute(23, 59))); + } + + if (form.isValid()) { + + var createdDistrib = null; + var orderStartDate = null; + var orderEndDate = null; + + try { + + if (contract.type == db.Contract.TYPE_VARORDER ) { + orderStartDate = form.getValueOf("orderStartDate"); + orderEndDate = form.getValueOf("orderEndDate"); + } + + createdDistrib = service.DistributionService.create( + contract, + form.getValueOf("date"), + form.getValueOf("end"), + form.getValueOf("placeId"), + form.getValueOf("distributor1Id"), + form.getValueOf("distributor2Id"), + form.getValueOf("distributor3Id"), + form.getValueOf("distributor4Id"), + orderStartDate, + orderEndDate); + } + catch(e:tink.core.Error){ + throw Error('/contractAdmin/distributions/' + contract.id,e.message); + } + + if (createdDistrib.date == null) { + var html = t._("Your request for a delivery has been sent to ::supplierName::.
    Be patient, you will receive an e-mail indicating if the request has been validated or refused.", {supplierName:contract.vendor.name}); + var btn = "OK"; + App.current.view.extraNotifBlock = App.current.processTemplate("block/modal.mtt",{html:html,title:t._("Distribution request sent"),btn:btn} ); + } else { + throw Ok('/contractAdmin/distributions/'+ createdDistrib.contract.id , t._("The distribution has been recorded") ); + } + + }else{ + //event + app.event(PreNewDistrib(contract)); + + } + + view.form = form; + view.title = t._("Create a distribution"); + } + + /** + * create a distribution cycle for a contract + */ + @tpl("form.mtt") + public function doInsertCycle(contract:db.Contract) { + + if (!app.user.isContractManager(contract)) throw Error('/', t._("Forbidden action")); + + var dc = new db.DistributionCycle(); + dc.place = contract.amap.getMainPlace(); + var form = sugoi.form.Form.fromSpod(dc); + form.removeElementByName("contractId"); + + form.getElement("startDate").value = DateTool.now(); + form.getElement("endDate").value = DateTool.now().deltaDays(30); + + //start hour + form.removeElementByName("startHour"); + var x = new HourDropDowns("startHour", t._("Start time"), DateTool.now().setHourMinute( 19, 0) , true); + form.addElement(x, 5); + + //end hour + form.removeElement(form.getElement("endHour")); + var x = new HourDropDowns("endHour", t._("End time"), DateTool.now().setHourMinute(20, 0), true); + form.addElement(x, 6); + + if (contract.type == db.Contract.TYPE_VARORDER){ + + form.getElement("daysBeforeOrderStart").value = 10; + form.getElement("daysBeforeOrderStart").required = true; + form.removeElementByName("openingHour"); + var x = new HourDropDowns("openingHour", t._("Opening time"), DateTool.now().setHourMinute(8, 0) , true); + form.addElement(x, 8); + + form.getElement("daysBeforeOrderEnd").value = 2; + form.getElement("daysBeforeOrderEnd").required = true; + form.removeElementByName("closingHour"); + var x = new HourDropDowns("closingHour", t._("Closing time"), DateTool.now().setHourMinute(23, 0) , true); + form.addElement(x, 10); + + }else{ + + form.removeElementByName("daysBeforeOrderStart"); + form.removeElementByName("daysBeforeOrderEnd"); + form.removeElementByName("openingHour"); + form.removeElementByName("closingHour"); + } + + if (form.isValid()) { + + var createdDistribCycle = null; + var daysBeforeOrderStart = null; + var daysBeforeOrderEnd = null; + var openingHour = null; + var closingHour = null; + + try{ + + if (contract.type == db.Contract.TYPE_VARORDER) { + daysBeforeOrderStart = form.getValueOf("daysBeforeOrderStart"); + daysBeforeOrderEnd = form.getValueOf("daysBeforeOrderEnd"); + openingHour = form.getValueOf("openingHour"); + closingHour = form.getValueOf("closingHour"); + } + + createdDistribCycle = service.DistributionService.createCycle( + contract, + form.getElement("cycleType").getValue(), + form.getValueOf("startDate"), + form.getValueOf("endDate"), + form.getValueOf("startHour"), + form.getValueOf("endHour"), + daysBeforeOrderStart, + daysBeforeOrderEnd, + openingHour, + closingHour, + form.getValueOf("placeId")); + } + catch(e:tink.core.Error){ + throw Error('/contractAdmin/distributions/' + contract.id,e.message); + } + + if (createdDistribCycle != null) { + throw Ok('/contractAdmin/distributions/'+ contract.id, t._("The delivery has been saved")); + } + + } + else{ + dc.contract = contract; + app.event(PreNewDistribCycle(dc)); + } + + view.form = form; + view.title = t._("Schedule a recurrent delivery"); + } + + /** + * Delete a distribution cycle + */ + public function doDeleteCycle(cycle:db.DistributionCycle){ + + if (!app.user.isContractManager(cycle.contract)) throw Error('/', t._("Forbidden action")); + + var contractId = cycle.contract.id; + var messages = service.DistributionService.deleteCycleDistribs(cycle); + if (messages.length > 0){ + App.current.session.addMessage( messages.join("
    "),true); + } + + throw Ok("/contractAdmin/distributions/" + contractId, t._("Recurrent deliveries deleted")); + } + + /** + * Doodle-like participation planning + */ + @tpl("distribution/planning.mtt") + public function doPlanning(contract:db.Contract) { + + view.contract = contract; + + var doodle = new Map}>(); + var distribs = contract.getDistribs(true, 150); + + for ( d in distribs ) { + for (u in [d.distributor1, d.distributor2, d.distributor3, d.distributor4]) { + if (u != null) { + + var udoodle = doodle.get(u.id); + + if (udoodle == null) udoodle = { user:u, planning:new Map() }; + udoodle.planning.set(d.id, true); + doodle.set(u.id, udoodle); + } + } + } + view.distribs = distribs; + view.doodle = doodle; + + } + + /** + * Ajax service for doPlanning() + */ + public function doRegister(args: { register:Bool, distrib:db.Distribution } ) { + + if (args != null) { + var d = args.distrib; + d.lock(); + + if (args.register) { + + if (d.distributor1 == null) d.distributor1 = app.user; + else if (d.distributor2 == null) d.distributor2 = app.user; + else if (d.distributor3 == null) d.distributor3 = app.user; + else if (d.distributor4 == null) d.distributor4 = app.user; + + }else { + if (d.distributor1 == app.user) d.distributor1 = null; + else if (d.distributor2 == app.user) d.distributor2 = null; + else if (d.distributor3 == app.user) d.distributor3 = null; + else if (d.distributor4 == app.user) d.distributor4 = null; + } + + d.update(); + } + + } + + /** + * Validate a multi-distrib + * @param date + * @param place + */ + @tpl('distribution/validate.mtt') + public function doValidate(date:Date, place:db.Place){ + + if (!app.user.isAmapManager()) throw t._("Forbidden access"); + + var md = MultiDistrib.get(date, place, db.Contract.TYPE_VARORDER); + + view.confirmed = md.checkConfirmed(); + view.users = md.getUsers(); + view.date = date; + view.place = place; + } + + + /** + * Admin can autovalidate a multidistrib + */ + @admin + public function doAutovalidate(date:Date,place:db.Place){ + + var md = MultiDistrib.get(date,place,db.Contract.TYPE_VARORDER); + for ( d in md.distributions){ + if(d.validated) continue; + service.PaymentService.validateDistribution(d); + } + throw Ok("/contractAdmin",t._("This distribution have been validated")); + } + + @admin + public function doUnvalidate(date:Date,place:db.Place){ + + var md = MultiDistrib.get(date,place,db.Contract.TYPE_VARORDER); + for ( d in md.distributions){ + if(!d.validated) continue; + service.PaymentService.unvalidateDistribution(d); + } + throw Ok("/contractAdmin",t._("This distribution have been Unvalidated")); + } + + + +} diff --git a/src/controller/Group.hx b/src/controller/Group.hx new file mode 100644 index 0000000..bd750c3 --- /dev/null +++ b/src/controller/Group.hx @@ -0,0 +1,368 @@ +package controller; +import sugoi.form.elements.StringInput; +import service.OrderService; +import service.WaitingListService; + +/** + * Groups + */ +class Group extends controller.Controller +{ + + /** + * Public page of a group + */ + @tpl('group/view.mtt') + function doDefault(group:db.Amap){ + + if (group.regOption == db.Amap.RegOption.Open) { + app.session.data.amapId = group.id; + throw Redirect("/"); + } + + view.group = group; + view.contracts = group.getActiveContracts(); + view.pageTitle = group.name; + group.getMainPlace(); //just to update cache + if (app.user != null){ + + view.isMember = Lambda.has(app.user.getAmaps(), group); + } + } + + /** + * Register to a waiting list. + * the user can be logged or not ! + */ + @tpl('form.mtt') + function doList(group:db.Amap){ + + //checks + if (group.regOption != db.Amap.RegOption.WaitingList) throw Redirect("/group/" + group.id); + if (app.user != null) { + try{ + WaitingListService.canRegister(app.user,group); + }catch(e:tink.core.Error){ + throw Error("/group/" + group.id,e.message); + } + } + + //build form + var form = new sugoi.form.Form("reg"); + if (app.user == null){ + form.addElement(new StringInput("userFirstName", t._("Your firstname"),"",true)); + form.addElement(new StringInput("userLastName", t._("Your lastname") ,"",true)); + form.addElement(new StringInput("userEmail", t._("Your e-mail"), "", true)); + } + form.addElement(new sugoi.form.elements.TextArea("msg", t._("Leave a message"))); + + if (form.isValid()){ + try{ + if (app.user == null){ + var f = form; + var user = service.UserService.softRegistration(f.getValueOf("userFirstName"),f.getValueOf("userLastName"), f.getValueOf("userEmail") ); + db.User.login(user, user.email); + } + + WaitingListService.registerToWl(app.user,group,form.getValueOf("msg")); + throw Ok("/group/" + group.id,t._("Your subscription to the waiting list has been recorded. You will receive an e-mail as soon as your request is processed.") ); + }catch(e:tink.core.Error){ + throw Error("/group/list/" + group.id,e.message); + } + + } + + view.title = t._("Subscription to \"::groupeName::\" waiting list", {groupeName:group.name}); + view.form = form; + } + + /** + Cancel suscription request + **/ + function doListCancel(group:db.Amap){ + try{ + WaitingListService.removeFromWl(app.user,group); + }catch(e:tink.core.Error){ + throw Error("/group/" + group.id,e.message); + } + throw Ok("/group/" + group.id,t._("You've been removed from the waiting list")); + } + + + /** + * Register direclty in an open group + * + * the user can be logged or not ! + + @tpl('form.mtt') + function doRegister(group:db.Amap){ + + if (group.regOption != db.Amap.RegOption.Open) throw Redirect("/group/" + group.id); + if (app.user != null){ + if ( db.UserAmap.manager.select($amapId == group.id && $user == app.user) != null) throw Error("/group/" + group.id, t._("You are already member of this group.")); + } + + var form = new sugoi.form.Form("reg"); + form.submitButtonLabel = t._("Join the group"); + form.addElement(new sugoi.form.elements.Html("html",t._("Confirm your subscription to \"::groupName::\"", {groupName:group.name}))); + if (app.user == null){ + form.addElement(new StringInput("userFirstName", t._("Your firstname"),"",true)); + form.addElement(new StringInput("userLastName", t._("Your lastname"), "", true)); + var em = new StringInput("userEmail", t._("Your e-mail"), "", true); + em.addValidator(new EmailValidator()); + form.addElement(em); + form.addElement(new StringInput("address", t._("Address"), "", true)); + form.addElement(new StringInput("zipCode", t._("Zip code"), "", true)); + form.addElement(new StringInput("city", t._("City"), "", true)); + form.addElement(new StringInput("phone", t._("Phone"), "", true)); + } + + if (form.isValid()){ + + if (app.user == null){ + var f = form; + var user = new db.User(); + user.email = f.getValueOf("userEmail"); + user.firstName = f.getValueOf("userFirstName"); + user.lastName = f.getValueOf("userLastName"); + user.address1 = f.getValueOf("address"); + user.zipCode = f.getValueOf("zipCode"); + user.city = f.getValueOf("city"); + user.phone = f.getValueOf("phone"); + + if ( db.User.getSameEmail(user.email).length > 0 ) { + throw Ok("/user/login",t._("You already subscribed to Cagette.net, please log in on this page")); + } + + user.insert(); + app.session.setUser(user); + + } + + var w = new db.UserAmap(); + w.user = app.user; + w.amap = group; + w.insert(); + + throw Ok("/user/choose", t._("Your subscription has been taken into account")); + } + + view.title = t._("Subscription to \"::groupName::\"", {groupName:group.name}); + view.form = form; + + }*/ + + /** + * create a new group + */ + @tpl("form.mtt") + function doCreate() { + + view.title = t._("Create a new Cagette Group"); + + var f = new sugoi.form.Form("c"); + f.addElement(new StringInput("name", t._("Name of your group"), "", true)); + + //group type + var data = [ + {label:t._("CSA"),value:"0"}, + {label:t._("Grouped orders"),value:"1"}, + {label:t._("Farmers collective"),value:"2"}, + {label:t._("Farm shop"),value:"3"}, + ]; + var gt = new sugoi.form.elements.RadioGroup("type", t._("Group type"), data ,"1","1",true,true,true); + f.addElement(gt); + + if (f.checkToken()) { + + var user = app.user; + + var g = new db.Amap(); + g.name = f.getValueOf("name"); + g.contact = user; + + var type:db.Amap.GroupType = Type.createEnumIndex(db.Amap.GroupType, Std.parseInt(f.getValueOf("type")) ); + + switch(type){ + case null : + throw "unknown group type"; + case db.Amap.GroupType.Amap : + g.flags.set(db.Amap.AmapFlags.HasMembership); + g.regOption = db.Amap.RegOption.WaitingList; + + case db.Amap.GroupType.GroupedOrders : + g.flags.set(db.Amap.AmapFlags.ShopMode); + g.flags.set(db.Amap.AmapFlags.HasMembership); + g.regOption = db.Amap.RegOption.WaitingList; + + case db.Amap.GroupType.ProducerDrive : + g.flags.set(db.Amap.AmapFlags.ShopMode); + g.regOption = db.Amap.RegOption.Open; + g.flags.set(db.Amap.AmapFlags.PhoneRequired); + + case db.Amap.GroupType.FarmShop : + g.flags.set(db.Amap.AmapFlags.ShopMode); + g.regOption = db.Amap.RegOption.Open; + g.flags.set(db.Amap.AmapFlags.PhoneRequired); + } + + g.groupType = type; + g.insert(); + + var ua = new db.UserAmap(); + ua.user = user; + ua.amap = g; + ua.rights = [db.UserAmap.Right.GroupAdmin,db.UserAmap.Right.Membership,db.UserAmap.Right.Messages,db.UserAmap.Right.ContractAdmin(null)]; + ua.insert(); + + //example datas + var place = new db.Place(); + place.name = t._("Market square"); + place.zipCode = "000"; + place.city = "St Martin de la Cagette"; + place.amap = g; + place.insert(); + + //contrat AMAP + var vendor = new db.Vendor(); + vendor.amap = g; + vendor.name = "Jean Martin EARL"; + vendor.zipCode = "000"; + vendor.city = "Langon"; + vendor.email = "jean@cagette.net"; + vendor.insert(); + + if (type == Amap){ + var contract = new db.Contract(); + contract.name = t._("CSA contract Vegetables - Example"); + contract.description = t._("This contract is an example where the customer has to commit to buy the whole year as with AMAPs"); + contract.amap = g; + contract.type = 0; + contract.vendor = vendor; + contract.startDate = Date.now(); + contract.endDate = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 364); + contract.contact = user; + contract.distributorNum = 2; + contract.insert(); + + var p = new db.Product(); + p.name = t._("Big basket of vegetables"); + p.price = 15; + p.organic = true; + p.contract = contract; + p.insert(); + + var p = new db.Product(); + p.name = t._("Small basket of vegetables"); + p.price = 10; + p.organic = true; + p.contract = contract; + p.insert(); + + OrderService.make(user, 1, p, null, true); + + var d = new db.Distribution(); + d.contract = contract; + d.date = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 14); + d.end = DateTools.delta(d.date, 1000.0 * 60 * 90); + d.place = place; + d.insert(); + + } + + //contrat variable + var vendor = new db.Vendor(); + vendor.amap = g; + vendor.name = t._("Farm Galinette"); + vendor.zipCode = "000"; + vendor.city = t._("Bazas"); + vendor.email = "galinette@cagette.net"; + vendor.insert(); + + var contract = new db.Contract(); + contract.name = t._("Chicken Contract - Example"); + contract.description = t._("Example of contract with variable orders. It is allowed to order something else at every delivery."); + contract.amap = g; + contract.type = 1; + contract.vendor = vendor; + contract.startDate = Date.now(); + contract.endDate = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 364); + contract.contact = user; + contract.distributorNum = 2; + contract.flags.set(db.Contract.ContractFlags.UsersCanOrder); + contract.insert(); + + var egg = new db.Product(); + egg.name = t._("12 eggs"); + egg.price = 5; + //egg.type = 6; + egg.organic = true; + egg.contract = contract; + egg.insert(); + + var p = new db.Product(); + p.name = t._("Chicken"); + //p.type = 2; + p.price = 9.50; + p.organic = true; + p.contract = contract; + p.insert(); + + var d = new db.Distribution(); + d.contract = contract; + d.orderStartDate = Date.now(); + d.orderEndDate = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 19); + d.date = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 21); + d.end = DateTools.delta(d.date, 1000.0 * 60 * 90); + d.place = place; + d.insert(); + + OrderService.make(user, 2, egg, d.id); + OrderService.make(user, 1, p, d.id); + + App.current.session.data.amapId = g.id; + app.session.data.newGroup = true; + throw Redirect("/"); + } + + view.form= f; + + } + + /** + Displays a google map in a popup + **/ + @tpl('group/place.mtt') + public function doPlace(place:db.Place){ + view.place = place; + + //build adress for google maps + var addr = ""; + if (place.address1 != null) addr += place.address1; + if (place.address2 != null) addr += ", " + place.address2; + if (place.zipCode != null) addr += " " + place.zipCode; + if (place.city != null) addr += " " + place.city; + + view.addr = view.escapeJS(addr); + } + + /** + * Groups map + */ + @tpl("group/map.mtt") + public function doMap(?args:{?lat:Float,?lng:Float,?address:String}){ + + view.container = "container-fluid"; + + //if no param is sent, focus on Paris + if (args == null || (args.address == null && args.lat == null && args.lng == null)){ + args = {lat:48.855675, lng:2.3472365}; + } + + view.lat = args.lat; + view.lng = args.lng; + view.address = args.address; + } + + +} \ No newline at end of file diff --git a/src/controller/Install.hx b/src/controller/Install.hx new file mode 100644 index 0000000..9b63450 --- /dev/null +++ b/src/controller/Install.hx @@ -0,0 +1,273 @@ +package controller; +import sugoi.db.Variable; +import sugoi.form.elements.StringInput; +import thx.semver.Version; + +/** + * ... + * @author fbarbut + */ +class Install extends controller.Controller +{ + /** + * checks if its a first install or an update + */ + @tpl("install/default.mtt") + public function doDefault() { + if (db.User.manager.get(1) == null) { + + throw Redirect("/install/firstInstall"); + + }else { + //throw Error("/", "L'utilisateur admin a déjà été créé. Essayez de vous connecter avec admin@cagette.net, mot de passe : admin"); + + var status = new Array<{parameter:String,valid:Bool,message:String}>(); + + status.push(getVersionStatus()); + + view.status = status; + } + } + + public function doDiagnostics(){ + + var webroot = sugoi.Web.getCwd(); + + if(!sys.FileSystem.exists(webroot+"file")){ + Sys.println("no File directory : created"); + sys.FileSystem.createDirectory(webroot+"file"); + } + if(!sys.FileSystem.exists(webroot+"file/.htaccess")){ + Sys.println("no .htaccess file in 'File' directory"); + } + if(!sys.FileSystem.exists(webroot+"../tmp")) { + Sys.println("no tmp directory : created"); + sys.FileSystem.createDirectory(webroot+"../tmp"); + } + + } + + /** + * First install + */ + @tpl("form.mtt") + public function doFirstInstall(){ + view.title = "Installation de Cagette.net"; + + var f = new sugoi.form.Form("c"); + f.addElement(new StringInput("amapName", t._("Name of your group"),"",true)); + f.addElement(new StringInput("userFirstName", t._("Your firstname"),"",true)); + f.addElement(new StringInput("userLastName", t._("Your lastname"),"",true)); + + if (f.checkToken()) { + + var user = new db.User(); + user.firstName = f.getValueOf("userFirstName"); + user.lastName = f.getValueOf("userLastName"); + user.email = "admin@cagette.net"; + user.setPass("admin"); + user.insert(); + + var amap = new db.Amap(); + amap.name = f.getValueOf("amapName"); + amap.contact = user; + + amap.flags.set(db.Amap.AmapFlags.HasMembership); + //amap.flags.set(db.Amap.AmapFlags.IsAmap); + amap.insert(); + + var ua = new db.UserAmap(); + ua.user = user; + ua.amap = amap; + ua.rights = [db.UserAmap.Right.GroupAdmin,db.UserAmap.Right.Membership,db.UserAmap.Right.Messages,db.UserAmap.Right.ContractAdmin(null)]; + ua.insert(); + + //example datas + var place = new db.Place(); + place.name = t._("Marketplace"); + place.amap = amap; + place.address1 = t._("Place Jules Verne"); + place.zipCode = "00000"; + place.city = t._("St Martin de la Cagette"); + place.insert(); + + var vendor = new db.Vendor(); + vendor.amap = amap; + + vendor.name = t._("Jean Martin EURL"); + vendor.email = "jean.martin@cagette.net"; + vendor.zipCode = "00000"; + vendor.city = "Martignac"; + vendor.insert(); + + var contract = new db.Contract(); + contract.name = t._("Vegetables Contract Example"); + contract.amap = amap; + contract.type = 0; + contract.vendor = vendor; + contract.startDate = Date.now(); + contract.endDate = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 364); + contract.contact = user; + contract.distributorNum = 2; + contract.insert(); + + var p = new db.Product(); + p.name = t._("Big basket of vegetables"); + p.price = 15; + p.vat = 5; + p.contract = contract; + p.insert(); + + var p = new db.Product(); + p.name = t._("Small basket of vegetables"); + p.price = 10; + p.vat = 5; + p.contract = contract; + p.insert(); + + var uc = new db.UserContract(); + uc.user = user; + uc.product = p; + uc.paid = true; + uc.quantity = 1; + uc.productPrice = 10; + uc.insert(); + + var d = new db.Distribution(); + d.contract = contract; + d.date = DateTools.delta(Date.now(), 1000.0 * 60 * 60 * 24 * 14); + d.end = DateTools.delta(d.date, 1000.0 * 60 * 90); + d.place = place; + d.insert(); + + App.current.user = null; + App.current.session.setUser(user); + App.current.session.data.amapId = amap.id; + + throw Ok("/", t._("Group and user 'admin' created. Your email is 'admin@cagette.net' and your password is 'admin'")); + } + + view.form= f; + } + + /** + * get version status + */ + private function getVersionStatus(){ + + + var out = {parameter:"version", valid:false, message:""}; + + var v = Variable.get("version"); + if (v == null || v=="") { + Variable.set("version", App.VERSION.toString()); + v = App.VERSION.toString(); + } + + var v :thx.semver.Version = thx.semver.Version.stringToVersion(v); + + if (v.lessThan(App.VERSION)){ + + //need update ! + out.valid = false; + out.message = t._("You must update your database to version ") +App.VERSION.toString()+""; + + }else{ + out.valid = true; + out.message = t._("Current version") +v.toString()+""; + } + + return out; + + } + + /** + * perform migrations from a version to another + */ + @admin + public function doUpdateversion(){ + + var log = []; + + var currentVersion = thx.semver.Version.stringToVersion(Variable.get("version")); + + //Migrations to 0.9.2 + if (currentVersion.lessThan( thx.semver.Version.arrayToVersion([0,9,2]) )){ + + log.push(t._("Installation of the dictionnary of products (taxonomy)")); + _0_9_2_installTaxonomy(); + + log.push(t._("Improvement on saving orders")); + _0_9_2_dbMigration(); + + sugoi.db.Variable.set("version", "0.9.2"); + } + + //Migrations to 1.0.0 + //... + + throw Ok("/install", t._("Following update have been performed:
      ")+Lambda.map(log,function(x) return "
    • "+x+"
    • ").join("")+"
    "); + + } + + @admin + function _0_9_2_installTaxonomy(){ + + db.TxpCategory.manager.delete(true); + db.TxpSubCategory.manager.delete(true); + db.TxpProduct.manager.delete(true); + + var taxo = sys.io.File.getContent(sugoi.Web.getCwd() + "../data/productTaxonomy.json"); + var taxo = haxe.Json.parse(taxo); + + var categories : Array = taxo.categories; + var subcategories : Array = taxo.subCategories; + var products : Array = taxo.products; + + for ( c in categories){ + var cat = new db.TxpCategory(); + cat.id = c.id; + cat.name = c.name; + cat.insert(); + } + + for ( sc in subcategories){ + var scat = new db.TxpSubCategory(); + scat.id = sc.id; + scat.name = sc.name; + scat.category = db.TxpCategory.manager.get(Std.parseInt(sc.category)); + scat.insert(); + + } + + for ( p in products){ + var pro = new db.TxpProduct(); + pro.name = p.name; + pro.id = p.id; + pro.category = db.TxpCategory.manager.get(Std.parseInt(p.category)); + pro.subCategory = db.TxpSubCategory.manager.get(Std.parseInt(p.subCategory)); + pro.insert(); + } + + } + + @admin + function _0_9_2_dbMigration(){ + + //recompute prices on orders + for ( order in db.UserContract.manager.all(true)){ + order.productPrice = order.product.price; + order.feesRate = order.product.contract.percentageValue; + order.update(); + } + + + //activate payment orders + for ( a in db.Amap.manager.all(true)){ + a.allowedPaymentsType = ["cash", "transfer", "check"]; + a.update(); + } + + } + +} \ No newline at end of file diff --git a/src/controller/Main.hx b/src/controller/Main.hx new file mode 100755 index 0000000..677a4cf --- /dev/null +++ b/src/controller/Main.hx @@ -0,0 +1,261 @@ +package controller; +import db.Distribution; +import db.UserContract; +import haxe.Json; +import haxe.web.Dispatch; +import sugoi.form.elements.StringInput; +import sugoi.tools.ResultsBrowser; +import Common; +import tools.ArrayTool; + +class Main extends Controller { + + + /** + * public pages + */ + function doGroup(d:haxe.web.Dispatch){ + d.dispatch(new controller.Group()); + } + + /** + Group homepage + **/ + @tpl("home.mtt") + function doDefault() { + view.category = 'home'; + + var group = app.getCurrentGroup(); + if ( app.user!=null && group == null) { + throw Redirect("/user/choose"); + }else if (app.user == null && (group==null || group.regOption!=db.Amap.RegOption.Open) ) { + throw Redirect("/user/login"); + } + + view.amap = group; + + //contract with open orders + var openContracts = Lambda.filter(group.getActiveContracts(), function(c) return c.isUserOrderAvailable()); + view.openContracts = openContracts; + + //register to become "distributor" + view.contractsWithDistributors = app.user==null ? [] : Lambda.filter(app.user.amap.getActiveContracts(), function(c) return c.distributorNum > 0); + + //freshly created group + view.newGroup = app.session.data.newGroup == true; + + var n = Date.now(); + var now = new Date(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0); + var in3Month = DateTools.delta(now, 1000.0 * 60 * 60 * 24 * 30 * 3); + + var distribs = MultiDistrib.getFromTimeRange(group,now,in3Month); + view.distribs = distribs; + + //view functions + view.getWhosTurn = function(orderId:Int, distrib:Distribution) { + return db.UserContract.manager.get(orderId, false).getWhosTurn(distrib); + } + + //event for additionnal blocks on home page + var e = Blocks([], "home"); + app.event(e); + view.blocks = e.getParameters()[0]; + + //message if phone is required + if(app.user!=null && app.user.amap.flags.has(db.Amap.AmapFlags.PhoneRequired) && app.user.phone==null){ + app.session.addMessage(t._("Members of this group should provide a phone number. Please click here to update your account."),true); + } + + } + + //login and stuff + function doUser(d:Dispatch) { + d.dispatch(new controller.User()); + } + + function doCron(d:Dispatch) { + d.dispatch(new controller.Cron()); + } + + /** + * JSON REST API Entry point + */ + function doApi(d:Dispatch) { + + try { + + d.dispatch(new controller.Api()); + + }catch (e:tink.core.Error){ + + //manage tink Errors (service errors) + sugoi.Web.setReturnCode(e.code); + Sys.print(Json.stringify( {error:{code:e.code,message:e.message,stack:e.exceptionStack}} )); + + }catch (e:Dynamic){ + + //manage other errors + sugoi.Web.setReturnCode(500); + var stack = if ( App.config.DEBUG ) haxe.CallStack.toString(haxe.CallStack.exceptionStack()) else ""; + App.current.logError(e, stack); + Sys.print(Json.stringify( {error:{code:500,message : Std.string(e), stack:stack }} )); + } + + } + + @tpl("cssDemo.mtt") + function doCssdemo() { + view.category = 'home'; + } + + @tpl("form.mtt") + function doInstall(d:Dispatch) { + d.dispatch(new controller.Install()); + } + + + function doP(d:Dispatch) { + + /* + * Invalid array access +Stack (ADMIN|DEBUG) + +Called from C:\HaxeToolkit\haxe\std/haxe/web/Dispatch.hx line 463 +Called from controller/Main.hx line 117 + * + var plugin = d.parts.shift(); + for ( p in App.plugins) { + var n = Type.getClassName(Type.getClass(p)).toLowerCase(); + n = n.split(".").pop(); + if (plugin == n) { + d.dispatch( p.getController() ); + return; + } + } + + throw Error("/","Plugin '"+plugin+"' introuvable."); + */ + + d.dispatch(new controller.Plugin()); + } + + + @logged + function doMember(d:Dispatch) { + view.category = 'members'; + d.dispatch(new controller.Member()); + } + + @logged + function doStats(d:Dispatch) { + view.category = 'stats'; + d.dispatch(new Stats()); + } + + @logged + function doAccount(d:Dispatch) { + view.category = 'account'; + d.dispatch(new controller.Account()); + } + + @logged + function doVendor(d:Dispatch) { + view.category = 'contractadmin'; + d.dispatch(new controller.Vendor()); + } + + @logged + function doPlace(d:Dispatch) { + view.category = 'contractadmin'; + d.dispatch(new controller.Place()); + } + + @logged + function doTransaction(d:Dispatch) { + view.category = 'members'; + d.dispatch(new controller.Transaction()); + } + + @logged + function doDistribution(d:Dispatch) { + view.category = 'contractadmin'; + d.dispatch(new controller.Distribution()); + } + + @logged + function doMembership(d:Dispatch) { + view.category = 'members'; + d.dispatch(new controller.Membership()); + } + + function doShop(d:Dispatch) { + view.category = 'shop'; + d.dispatch(new controller.Shop()); + } + + @tpl('shop/default2.mtt') + function doShop2(place:db.Place, date:String) { + view.category = 'shop'; + view.place = place; + view.date = date; + } + + @logged + function doProduct(d:Dispatch) { + view.category = 'contractadmin'; + d.dispatch(new controller.Product()); + } + + @logged + function doAmap(d:Dispatch) { + view.category = 'amap'; + d.dispatch(new controller.Amap()); + } + + @logged + function doContract(d:Dispatch) { + view.category = 'contract'; + d.dispatch(new Contract()); + } + + @logged + function doContractAdmin(d:Dispatch) { + view.category = 'contractadmin'; + d.dispatch(new ContractAdmin()); + } + + @logged + function doMessages(d:Dispatch) { + view.category = 'messages'; + d.dispatch(new Messages()); + } + + @logged + function doAmapadmin(d:Dispatch) { + view.category = 'amapadmin'; + d.dispatch(new AmapAdmin()); + } + + @logged + function doValidate(date:Date, place:db.Place, user:db.User, d:haxe.web.Dispatch){ + + var v = new controller.Validate(); + v.date = date; + v.place = place; + v.user = user; + d.dispatch(v); + } + + @admin + function doAdmin(d:Dispatch) { + d.dispatch(new controller.admin.Admin()); + } + + @admin + function doDb(d:Dispatch) { + d.parts = []; //disable haxe.web.Dispatch + sys.db.Admin.handler(); + } + + +} diff --git a/src/controller/Member.hx b/src/controller/Member.hx new file mode 100755 index 0000000..138441a --- /dev/null +++ b/src/controller/Member.hx @@ -0,0 +1,741 @@ +package controller; +import Common; +import haxe.Utf8; +import sugoi.form.Form; +import sugoi.form.elements.Selectbox; +import sugoi.form.validators.EmailValidator; +import sugoi.tools.Utils; + + +class Member extends Controller +{ + + public function new() + { + super(); + if (!app.user.canAccessMembership()) throw Redirect("/"); + } + + @logged + @tpl('member/default.mtt') + function doDefault(?args: { ?search:String, ?select:String } ) { + checkToken(); + + var browse:Int->Int->List; + var uids = db.UserAmap.manager.search($amap == app.user.getAmap(), false); + var uids = Lambda.map(uids, function(ua) return ua.user.id); + if (args != null && args.search != null) { + + //SEARCH + browse = function(index:Int, limit:Int) { + var search = "%"+StringTools.trim(args.search)+"%"; + return db.User.manager.search( + ($lastName.like(search) || + $lastName2.like(search) || + $address1.like(search) || + $address2.like(search) || + $firstName.like(search) || + $firstName2.like(search) + ) && $id in uids , { orderBy:-id }, false); + } + view.search = args.search; + + }else if(args!=null && args.select!=null){ + + //SELECTION + + switch(args.select) { + case "nocontract": + if (app.params.exists("csv")) { + sugoi.tools.Csv.printCsvDataFromObjects(Lambda.array(db.User.getUsers_NoContracts()), ["firstName", "lastName", "email"], t._("Without contracts")); + return; + }else { + browse = function(index:Int, limit:Int) { return db.User.getUsers_NoContracts(index, limit); } + } + case "contract": + + if (app.params.exists("csv")) { + sugoi.tools.Csv.printCsvDataFromObjects(Lambda.array(db.User.getUsers_Contracts()), ["firstName", "lastName", "email"], t._("With orders")); + return; + }else { + browse = function(index:Int, limit:Int) { return db.User.getUsers_Contracts(index, limit); } + } + + case "nomembership" : + if (app.params.exists("csv")) { + sugoi.tools.Csv.printCsvDataFromObjects(Lambda.array(db.User.getUsers_NoMembership()), ["firstName", "lastName", "email"], t._("Memberships to be renewed")); + return; + }else { + browse = function(index:Int, limit:Int) { return db.User.getUsers_NoMembership(index, limit); } + } + case "newusers" : + if (app.params.exists("csv")) { + sugoi.tools.Csv.printCsvDataFromObjects(Lambda.array(db.User.getUsers_NewUsers()), ["firstName", "lastName", "email"], t._("Never connected")); + return; + }else { + browse = function(index:Int, limit:Int) { return db.User.getUsers_NewUsers(index, limit); } + } + default: + throw t._("Unknown selection"); + } + view.select = args.select; + + }else { + if (app.params.exists("csv")) { + var headers = ["firstName", "lastName", "email","phone", "firstName2", "lastName2","email2","phone2", "address1","address2","zipCode","city"]; + sugoi.tools.Csv.printCsvDataFromObjects(Lambda.array(db.User.manager.search( $id in uids, {orderBy:lastName}, false)), headers, t._("Members")); + return; + }else { + //default display + browse = function(index:Int, limit:Int) { + return db.User.manager.search( $id in uids, { limit:[index,limit], orderBy:lastName }, false); + } + } + } + + var count = uids.length; + var rb = new sugoi.tools.ResultsBrowser(count, (args.select!=null||args.search!=null)?1000:10, browse); + view.members = rb; + + if (args.select == null || args.select != "newusers") { + //count new users + view.newUsers = db.User.getUsers_NewUsers().length; + } + + view.waitingList = db.WaitingList.manager.count($group == app.user.amap); + + } + + /** + * Move to waiting list + */ + function doMovetowl(u:db.User){ + + var ua = db.UserAmap.get(u, app.user.amap, true); + ua.delete(); + + var wl = new db.WaitingList(); + wl.user = u; + wl.group = app.user.amap; + wl.insert(); + + throw Ok("/member", u.getName() +" "+ t._("is now on waiting list.") ); + + + } + + /** + * Display waiting list + */ + @tpl('member/waiting.mtt') + function doWaiting(?args:{?add:db.User,?remove:db.User}){ + + if (args != null){ + if (args.add != null){ + + service.WaitingListService.approveRequest(args.add,app.user.amap); + throw Ok("/member/waiting", t._("Membership request accepted") ); + + }else if (args.remove != null){ + + service.WaitingListService.cancelRequest(args.remove,app.user.amap); + throw Ok("/member/waiting", t._("Membership request refused") ); + + } + } + + view.waitingList = db.WaitingList.manager.search($group == app.user.amap,{orderBy:-date}); + } + + /** + * Send an invitation to a new member + */ + function doInviteMember(u:db.User){ + + if (checkToken() ) { + u.sendInvitation(app.user.amap); + throw Ok('/member/view/'+u.id, t._("Invitation sent.") ); + } + + } + + /** + * Invite 'never logged' users + */ + function doInvite() { + + if (checkToken()) { + + var users = db.User.getUsers_NewUsers(); + try{ + for ( u in users) { + u.sendInvitation(app.user.amap); + Sys.sleep(0.2); + } + }catch (e:String){ + if (e.indexOf("curl") >-1) { + App.current.logError(e, haxe.CallStack.toString(haxe.CallStack.exceptionStack())); + throw Error("/member", t._("An error occurred while sending emails, please retry")); + } + } + + throw Ok('/member', t._("Congratulations, you just sent ::userLength:: invitations", {userLength:users.length})); + } + + } + + + @tpl("member/view.mtt") + function doView(member:db.User) { + + view.member = member; + var userAmap = db.UserAmap.get(member, app.user.amap); + if (userAmap == null) throw Error("/member", t._("This person does not belong to your group")); + + view.userAmap = userAmap; + view.canLoginAs = (db.UserAmap.manager.count($userId == member.id) == 1 && app.user.isAmapManager()) || app.user.isAdmin(); + + //orders + var row = { constOrders:new Array(), varOrders:new Map>() }; + + //commandes fixes + var contracts = db.Contract.manager.search($type == db.Contract.TYPE_CONSTORDERS && $amap == app.user.amap && $endDate > DateTools.delta(Date.now(),-1000.0*60*60*24*30), false); + var orders = member.getOrdersFromContracts(contracts); + row.constOrders = service.OrderService.prepare(orders); + + //commandes variables groupées par date de distrib + var contracts = db.Contract.manager.search($type == db.Contract.TYPE_VARORDER && $amap == app.user.amap && $endDate > DateTools.delta(Date.now(),-1000.0*60*60*24*30), false); + var distribs = new Map>(); + for (c in contracts) { + var ds = c.getDistribs(); + for (d in ds) { + var k = d.date.toString().substr(0, 10); + var orders = member.getOrdersFromDistrib(d); + if (orders.length > 0) { + if (!distribs.exists(k)) { + distribs.set(k, orders); + }else { + + var v = distribs.get(k); + for ( o in orders ) v.add(o); + distribs.set(k, v); + } + } + } + } + for ( k in distribs.keys()){ + var d = distribs.get(k); + var d2 = service.OrderService.prepare(d); + row.varOrders.set(k,d2); + } + + + view.userContracts = row; + checkToken(); //to insert a token in tpl + + } + + /** + * Admin : Log in as this user for debugging purpose + * @param user + * @param amap + */ + function doLoginas(member:db.User, amap:db.Amap) { + + if (!app.user.isAdmin()){ + if (!app.user.isAmapManager()) return; + if (member.isAdmin()) return; + if ( db.UserAmap.manager.count($userId == member.id) > 1 ) return; + + } + + App.current.session.setUser(member); + App.current.session.data.amapId = amap.id; + throw Redirect("/member/view/" + member.id ); + } + + @tpl('member/lastMessages.mtt') + function doLastMessages(member:db.User){ + + var out = new Array<{date:Date,subject:String,success:String,failure:String}>(); + var threeMonth = DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24 * 30.5 * 3); + + for ( m in sugoi.db.BufferedMail.manager.search($remoteId == app.user.amap.id && $cdate > threeMonth, {limit:10, orderBy:-cdate})){ + + var status : sugoi.mail.IMailer.MailerResult = m.status; + + if ( status!=null && status.get(member.email)!=null ){ + + var r = m.getMailerResultMessage(member.email); + out.push( {date:m.cdate,subject:m.title,success:r.success,failure:r.failure} ); + } + + } + view.emails = out; + } + + /** + * Edit a Member + */ + @tpl('form.mtt') + function doEdit(member:db.User) { + + if (member.isAdmin() && !app.user.isAdmin()) throw Error("/", t._("You cannot modify the account of an administrator")); + + var form = sugoi.form.Form.fromSpod(member); + + //cleaning + form.removeElement( form.getElement("rights") ); + form.removeElement( form.getElement("lang") ); + form.removeElement( form.getElement("ldate") ); + form.removeElement( form.getElement("apiKey") ); + + + var isReg = member.isFullyRegistred(); + var groupNum = db.UserAmap.manager.count($userId == member.id); + + //an administrator can modify a user's email only if he's not member elsewhere + if (groupNum > 1){ + form.removeElementByName("email"); + form.removeElementByName("email2"); + app.session.addMessage(t._("For security reasons, you cannot modify the e-mail of this person because this person is a member of more than 1 group.")); + } + + //an administrator can modify a user's pass only if he's a not registred user. + if (!isReg){ + app.session.addMessage(t._("This person did not define yet a password. You are exceptionaly authorized to do it. Please don't forget to tell this person.")); + form.getElement("pass").required = false; + }else{ + form.removeElement( form.getElement("pass") ); + } + + if (form.checkToken()) { + + if (app.user.amap.flags.has(db.Amap.AmapFlags.PhoneRequired) && form.getValueOf("phone") == null ){ + throw Error("/member/edit/"+member.id, t._("Phone number is required in this group.")); + } + + form.toSpod(member); + + //check that the given emails are not already used elsewhere + var sim = db.User.getSameEmail(member.email,member.email2); + for ( s in sim) { + if (s.id == member.id) sim.remove(s); + } + if (sim.length > 0) { + + //Let's merge the 2 users if it has no orders. + var id = sim.first().id; + if (db.UserContract.manager.search( $userId == id || $userId2 == id , false).length == 0) { + //merge + member.merge( sim.first() ); + app.session.addMessage(t._("This e-mail was used by another user account. As this user account was not used, it has been merged into the current user account.")); + + } else { + var str = t._("Warning, this e-mail or this name already exists for another account : "); + str += Lambda.map(sim, function(u) return "" + u.getCoupleName() + "").join(","); + str += " "+t._("These accounts can't be merged because the second account has orders"); + throw Error("/member/edit/" + member.id, str); + } + } + + if (!isReg) member.setPass(form.getValueOf("pass")); + + member.update(); + + if (!App.config.DEBUG && groupNum == 1) { + + //warn the user that his email has been updated + if (form.getValueOf("email") != member.email) { + var m = new sugoi.mail.Mail(); + m.setSender(App.config.get("default_email"), t._("Cagette.net")); + m.addRecipient(member.email); + m.setSubject(t._("Change your e-mail in your account Cagette.net")); + m.setHtmlBody( app.processTemplate("mail/message.mtt", { text:app.user.getName() + t._(" just modified your e-mail in your account Cagette.net.
    Your e-mail is now:")+form.getValueOf("email") } ) ); + App.sendMail(m); + + } + if (form.getValueOf("email2") != member.email2 && member.email2!=null) { + var m = new sugoi.mail.Mail(); + m.setSender(App.config.get("default_email"),"Cagette.net"); + m.addRecipient(member.email2); + m.setSubject(t._("Change the e-mail of your account Cagette.net")); + m.setHtmlBody( app.processTemplate("mail/message.mtt", { text:app.user.getName() +t._(" just modified your e-mail in your account Cagette.net.
    Your e-mail is now:")+form.getValueOf("email2") } ) ); + App.sendMail(m); + } + } + + throw Ok('/member/view/'+member.id, t._("This member has beed updated")); + } + + view.form = form; + + } + + /** + * Remove a user from this group + */ + function doDelete(user:db.User,?args:{confirm:Bool,token:String}) { + + if (checkToken()) { + if (!app.user.canAccessMembership()) throw t._("You cannot do that."); + if (user.id == app.user.id) throw Error("/member/view/" + user.id, t._("You cannot delete yourself.")); + if ( Lambda.count(user.getOrders(app.user.amap),function(x) return x.quantity>0) > 0 && !args.confirm) { + throw Error("/member/view/"+user.id, t._("Warning, this account has orders. Remove anyway", {userid:user.id, argstoken:args.token})); + } + + var ua = db.UserAmap.get(user, app.user.amap, true); + if (ua != null) { + ua.delete(); + throw Ok("/member", t._("::user:: has been removed from your group",{user:user.getName()})); + }else { + throw Error("/member", t._("This person does not belong to \"::amapname::\"", {amapname:app.user.amap.name})); + } + }else { + throw Redirect("/member/view/"+user.id); + } + } + + @tpl('form.mtt') + function doMerge(user:db.User) { + + if (!app.user.canAccessMembership()) throw Error("/","Action interdite"); + + view.title = t._("Merge an account with another one"); + view.text = t._("This action allows you to merge two accounts (when you have duplicates in the database for example).
    Contracts of account 2 will be moved to account 1, and account 2 will be deleted. Warning, it is not possible to cancel this action."); + + var form = new Form("merge"); + + var members = app.user.amap.getMembers(); + var members = Lambda.array(Lambda.map(members, function(x) return { key:Std.string(x.id), value:x.getName() } )); + var mlist = new Selectbox("member1", t._("Account 1"), members, Std.string(user.id)); + form.addElement( mlist ); + var mlist = new Selectbox("member2", t._("Account 2"), members); + form.addElement( mlist ); + + if (form.checkToken()) { + + var m1 = Std.parseInt(form.getElement("member1").value); + var m2 = Std.parseInt(form.getElement("member2").value); + var m1 = db.User.manager.get(m1,true); + var m2 = db.User.manager.get(m2,true); + + //if (m1.amapId != m2.amapId) throw "ils ne sont pas de la même amap !"; + + //on prend tout à m2 pour donner à m1 + //change usercontracts + var contracts = db.UserContract.manager.search($user==m2 || $user2==m2,true); + for (c in contracts) { + if (c.user.id == m2.id) c.user = m1; + if (c.user2!=null && c.user2.id == m2.id) c.user2 = m1; + c.update(); + } + + //group memberships + var adh = db.UserAmap.manager.search($user == m2, true); + for ( a in adh) { + a.user = m1; + a.update(); + } + + //change contacts + var contacts = db.Contract.manager.search($contact==m2,true); + for (c in contacts) { + c.contact = m1; + c.update(); + } + //if (m2.amap.contact == m2) { + //m1.amap.lock(); + //m1.amap.contact = m1; + //m1.amap.update(); + //} + + m2.delete(); + + throw Ok("/member/view/" + m1.id, t._("Both accounts have been merged")); + + + } + + view.form = form; + + } + + + @tpl('member/import.mtt') + function doImport(?args: { confirm:Bool } ) { + + var step = 1; + var request = Utils.getMultipart(1024 * 1024 * 4); //4mb + + //on recupere le contenu de l'upload + var data = request.get("file"); + if ( data != null) { + + var csv = new sugoi.tools.Csv(); + csv.setHeaders([t._("Firstname"), t._("Lastname"), t._("E-mail"), t._("Mobile phone"), t._("Partner's firstname"), t._("Partner's lastname"), t._("Partner's e-mail"), t._("Partner's Mobile phone"), t._("Address 1"), t._("Address 2"), t._("Post code"), t._("City")]); + + //utf8 encode if needed + try{ + if (!haxe.Utf8.validate(data)){ + data = haxe.Utf8.encode(data); + } + }catch (e:Dynamic){ } + var unregistred = csv.importDatas(data); + + /*var checkEmail = function(email){ + if ( !sugoi.form.validators.EmailValidator.check(email) ) { + throw Error("/member", t._("The email ::email:: is invalid, please update your CSV file",{email:email}) ); + } + }*/ + + //cleaning + for ( user in unregistred.copy() ) { + + //check nom+prenom + if (user[0] == null || user[1] == null) { + throw Error("/member/import", t._("You must fill the name and the firstname of the person. This line is incomplete: ") + user); + } + if (user[2] == null) { + throw Error("/member/import", t._("Each person must have an e-mail to be able to log in. ::user0:: ::user1:: don't have one. ", {user0:user[0], user1:user[1]}) +user); + } + //uppercase du nom + if (user[1] != null) user[1] = user[1].toUpperCase(); + if (user[5] != null) user[5] = user[5].toUpperCase(); + //lowercase email + if (user[2] != null){ + user[2] = user[2].toLowerCase(); + //checkEmail(user[2]); + } + if (user[6] != null){ + user[6] = user[6].toLowerCase(); + //checkEmail(user[6]); + } + } + + //utf-8 check + for ( row in unregistred.copy()) { + + for ( i in 0...row.length) { + var t = row[i]; + if (t != "" && t != null) { + try{ + if (!Utf8.validate(t)) { + t = Utf8.encode(t); + } + }catch (e:Dynamic) {} + row[i] = t; + } + } + } + + //put already registered people in another list + var registred = []; + for (r in unregistred.copy()) { + //var firstName = r[0]; + //var lastName = r[1]; + var email = r[2]; + + //var firstName2 = r[4]; + //var lastName2 = r[5]; + var email2 = r[6]; + + var us = db.User.getSameEmail(email, email2); + + if (us.length > 0) { + unregistred.remove(r); + registred.push(r); + } + } + + + app.session.data.csvUnregistered = unregistred; + app.session.data.csvRegistered = registred; + + view.data = unregistred; + view.data2 = registred; + step = 2; + } + + + if (args != null && args.confirm) { + + //import unregistered members + var i : Iterable = cast app.session.data.csvUnregistered; + for (u in i) { + if (u[0] == null || u[0] == "null" || u[0] == "") continue; + + var user = new db.User(); + user.firstName = u[0]; + user.lastName = u[1]; + user.email = u[2]; + if (user.email != null && user.email != "null" &&!EmailValidator.check(user.email)) { + throw t._("The E-mail ::useremail:: is invalid, please modify your file", {useremail:user.email}); + } + user.phone = u[3]; + + user.firstName2 = u[4]; + user.lastName2 = u[5]; + user.email2 = u[6]; + if (user.email2 != null && user.email2 != "null" && !EmailValidator.check(user.email2)) { + App.log(u); + throw t._("The E-mail of the partner of ::userFirstName:: ::userLastName:: '::userEmail::' is invalid, please check your file", {userFirstName:user.firstName, userLastName:user.lastName, userEmail:user.email2}); + } + user.phone2 = u[7]; + user.address1 = u[8]; + user.address2 = u[9]; + user.zipCode = u[10]; + user.city = u[11]; + user.insert(); + + var ua = new db.UserAmap(); + ua.user = user; + ua.amap = app.user.amap; + ua.insert(); + } + + //import registered members + var i : Iterable> = cast app.session.data.csvRegistered; + for (u in i) { + var email = u[2]; + var email2 = u[6]; + + var us = db.User.getSameEmail(email, email2); + var userAmaps = db.UserAmap.manager.search($amap == app.user.amap && $userId in Lambda.map(us, function(u) return u.id), false); + + //member exists but is not member of this group. + if (userAmaps.length == 0) { + var ua = new db.UserAmap(); + ua.user = us.first(); + ua.amap = app.user.amap; + ua.insert(); + } + } + + view.numImported = app.session.data.csvUnregistered.length + app.session.data.csvRegistered.length; + app.session.data.csvUnregistered = null; + app.session.data.csvRegistered = null; + + step = 3; + } + + if (step == 1) { + //reset import when back to import page + app.session.data.csvUnregistered = null; + app.session.data.csvRegistered = null; + } + + view.step = step; + } + + @tpl("user/insert.mtt") + public function doInsert() { + + if (!app.user.canAccessMembership()) throw Error("/", t._("Forbidden action")); + + var m = new db.User(); + var form = sugoi.form.Form.fromSpod(m); + form.removeElement(form.getElement("lang")); + form.removeElement(form.getElement("rights")); + form.removeElement(form.getElement("pass")); + form.removeElement(form.getElement("ldate") ); + form.removeElement( form.getElement("apiKey") ); + form.addElement(new sugoi.form.elements.Checkbox("warnAmapManager", t._("Send an E-mail to the person in charge of the group"), true)); + form.getElement("email").addValidator(new EmailValidator()); + form.getElement("email2").addValidator(new EmailValidator()); + + if (form.isValid()) { + + //check doublon de User et de UserAmap + var userSims = db.User.getSameEmail(form.getValueOf("email"),form.getValueOf("email2")); + view.userSims = userSims; + var userAmaps = db.UserAmap.manager.search($amap == app.user.amap && $userId in Lambda.map(userSims, function(u) return u.id), false); + view.userAmaps = userAmaps; + + if (userAmaps.length > 0) { + //user deja enregistré dans cette amap + throw Error('/member/view/' + userAmaps.first().user.id, t._("This person is already member of this group")); + + }else if (userSims.length > 0) { + //des users existent avec ce nom , + //if (userSims.length == 1) { + // si yen a qu'un on l'inserte + var ua = new db.UserAmap(); + ua.user = userSims.first(); + ua.amap = app.user.amap; + ua.insert(); + throw Ok('/member/', t._("This person already had an account on Cagette.net, and is now member of your group.")); + /*}else { + //demander validation avant d'inserer le userAmap + //TODO + throw Error('/member', t._("Not possible to add this person because there are already some people in the database having the same firstname and name. Please contact the administrator.")+userSims); + }*/ + return; + }else { + + if (app.user.amap.flags.has(db.Amap.AmapFlags.PhoneRequired) && form.getValueOf("phone") == null ){ + throw Error("/member/insert", t._("Phone number is required in this group.")); + } + + //insert user + var u = new db.User(); + form.toSpod(u); + u.lang = app.user.lang; + u.insert(); + + //insert userAmap + var ua = new db.UserAmap(); + ua.user = u; + ua.amap = app.user.getAmap(); + ua.insert(); + + if (form.getValueOf("warnAmapManager") == "1") { + var url = "http://" + App.config.HOST + "/member/view/" + u.id; + var text = t._("::admin:: just keyed-in contact details of a new member:
    ::newMember::
    See contact details",{admin:app.user.getName(),newMember:u.getCoupleName(),url:url}); + App.quickMail( + app.user.getAmap().contact.email, + app.user.amap.name +" - "+ t._("New member") + " : " + u.getCoupleName(), + app.processTemplate("mail/message.mtt", { text:text } ) + ); + } + + throw Ok('/member/', t._("This person is now member of the group")); + + } + } + + view.form = form; + } + + + /** + * user payments history + */ + @tpl('member/payments.mtt') + function doPayments(m:db.User){ + + service.PaymentService.updateUserBalance(m, app.user.amap); + var browse:Int->Int->List; + + //default display + browse = function(index:Int, limit:Int) { + return db.Operation.getOperationsWithIndex(m,app.user.amap,index,limit,true); + } + + var count = db.Operation.countOperations(m,app.user.amap); + var rb = new sugoi.tools.ResultsBrowser(count, 10, browse); + view.rb = rb; + view.member = m; + view.balance = db.UserAmap.get(m, app.user.amap).balance; + + checkToken(); + } + + @tpl('member/balance.mtt') + function doBalance(){ + view.balanced = db.UserAmap.manager.search($amap == app.user.amap && $balance == 0.0, false); + view.credit = db.UserAmap.manager.search($amap == app.user.amap && $balance > 0, false); + view.debt = db.UserAmap.manager.search($amap == app.user.amap && $balance < 0, false); + } + +} \ No newline at end of file diff --git a/src/controller/Membership.hx b/src/controller/Membership.hx new file mode 100755 index 0000000..c7bb938 --- /dev/null +++ b/src/controller/Membership.hx @@ -0,0 +1,73 @@ +package controller; +import sugoi.form.elements.IntSelect; +using Std; +/** + * Membership management + * + * @author fbarbut + */ +class Membership extends controller.Controller +{ + + @tpl("membership/default.mtt") + function doDefault(member:db.User) { + var userAmap = db.UserAmap.get(member, app.user.amap,true); + if (userAmap == null) throw Error("/member", t._("This person is not a member of your group")); + + //formulaire + var f = new sugoi.form.Form("membership"); + var year = Date.now().getFullYear(); + var data = []; + var now = Date.now(); + for ( x in 0...5) { + + var y = now.getFullYear() - x; + var yy = DateTools.delta(now, DateTools.days(365) * -x); + data.push({label:app.user.amap.getPeriodName(yy),value:app.user.amap.getMembershipYear(yy)}); + } + f.addElement(new IntSelect("year", t._("Period"), data,app.user.amap.getMembershipYear(),true)); + f.addElement(new sugoi.form.elements.DateDropdowns("date", t._("Date of payment of subscription"), null, true)); + if (f.isValid()) { + var y : Int = f.getValueOf("year"); + + if (db.Membership.get(member, app.user.amap, y) != null) throw Error("/membership/"+member.id, t._("This subscription has been already keyed-in")); + + var cotis = new db.Membership(); + cotis.amap = app.user.amap; + cotis.user = member; + cotis.year = y; + cotis.date = f.getElement("date").value; + cotis.insert(); + throw Ok("/membership/"+member.id, t._("Subscription saved")); + } + + //années de cotisation + var memberships = db.Membership.manager.search($user == member && $amap == app.user.amap,{orderBy:-year}, false); + //for ( m in memberships) { + //Reflect.setField(m, 'yearDate', new Date(m.year, 1, 1, 1, 1, 1)); + //} + view.memberships = memberships; + + //view + view.form = f; + view.member = member; + checkToken(); + } + + + public function doDelete(member:db.User, year:Int,?args:{token:String}) { + + if (checkToken()) { + var cotis = db.Membership.get(member, app.user.amap, year, true); + if (cotis == null) throw Error("/", t._("This subscription does not exist")); + + cotis.delete(); + throw Ok("/membership/" + member.id, t._("Subscription deleted")); + }else { + throw Error("/", "Bad Token"); + } + + } + + +} \ No newline at end of file diff --git a/src/controller/Messages.hx b/src/controller/Messages.hx new file mode 100755 index 0000000..cff5eae --- /dev/null +++ b/src/controller/Messages.hx @@ -0,0 +1,211 @@ +package controller; +import db.Message; +import db.UserContract; +import sugoi.form.ListData; +import sugoi.form.elements.*; +import sugoi.form.Form; + +class Messages extends Controller +{ + + public function new() + { + super(); + if (!app.user.canAccessMessages()) throw Redirect("/"); + } + + @tpl("messages/default.mtt") + function doDefault() { + + var form = new Form("msg"); + + var senderName = ""; + var senderMail = ""; + + if (App.current.session.data.whichUser == 1 && app.user.email2 != null) { + senderMail = app.user.email2; + senderName = app.user.firstName2 + " " + app.user.lastName2; + + }else { + senderMail = app.user.email; + senderName = app.user.firstName + " " + app.user.lastName; + } + + var lists = getLists(); + form.addElement( new StringInput("senderName", t._("Sender name"),senderName,true)); + form.addElement( new StringInput("senderMail", t._("Sender E-Mail"),senderMail,true)); + form.addElement( new StringSelect("list", t._("Recipients"),lists,"1", true,null,"style='width:500px;'")); + form.addElement( new StringInput("subject", t._("Subject:"),"",false,null,"style='width:500px;'") ); + form.addElement( new TextArea("text", t._("Message:"), "", false, null, "style='width:500px;height:350px;'") ); + + if (form.checkToken()) { + + var listId = form.getElement("list").value; + var dest = getSelection(listId); + var mails = []; + for ( d in dest) { + if (d.email != null) mails.push(d.email); + if (d.email2 != null) mails.push(d.email2); + } + + //send mail confirmation link + var e = new sugoi.mail.Mail(); + e.setSubject(form.getValueOf("subject")); + for ( x in mails) e.addRecipient(x); + + e.setSender(App.config.get("default_email"),form.getValueOf("senderName")); + e.setReplyTo(form.getValueOf("senderMail"),form.getValueOf("senderName")); + //sender : default email ( explicitly tells that the server send an email on behalf of the user ) + //e.setHeader("Sender", App.config.get("default_email")); + var text :String = form.getValueOf("text"); + var html = app.processTemplate("mail/message.mtt", { text:text,group:app.user.amap,list:getListName(listId) }); + e.setHtmlBody(html); + + App.sendMail(e,app.user.getAmap(),listId,app.user); + + //store message + var lm = new db.Message(); + lm.amap = app.user.amap; + lm.recipients = Lambda.array(Lambda.map(e.getRecipients(), function(x) return x.email)); + lm.title = e.getSubject(); + lm.date = Date.now(); + lm.body = e.getHtmlBody(); + if (listId != null) lm.recipientListId = listId; + lm.sender = app.user; + lm.insert(); + + + throw Ok("/messages", t._("The message has been sent")); + } + + view.form = form; + + if (app.user.isAmapManager()) { + view.sentMessages = Message.manager.search($amap == app.user.amap && $recipientListId!=null, {orderBy:-date,limit:20}, false); + }else { + view.sentMessages = Message.manager.search($sender == app.user && $recipientListId!=null && $amap == app.user.amap , {orderBy:-date,limit:20}, false); + } + + } + + @tpl("messages/message.mtt") + public function doMessage(msg:Message) { + + if (!app.user.isAmapManager() && msg.sender.id != app.user.id) throw Error("/", t._("Non authorized access")); + + view.list = getListName(msg.recipientListId); + view.msg = msg; + + //make status easier to display + var s = new Array<{email:String,success:String,failure:String}>(); + /*if (msg.status != null){ + for ( k in msg.status.keys()) { + var r = msg.getMailerResultMessage(k); + s.push({email:k,success:r.success,failure:r.failure}); + } + }*/ + + view.status = s; + + } + + function getLists() :FormData{ + var out = [ + {value:'1', label: t._("Everyone")}, + {value:'2', label: t._("The board: persons in charge + contracts + memberships")}, + ]; + + out.push( { value:'3', label: t._("TEST: me + spouse") } ); + out.push( { value:'4', label: t._("Members without contract/order") } ); + if(app.user.amap.hasMembership()) out.push( { value:'5', label:t._("Memberships to be renewed")} ); + + + var contracts = db.Contract.getActiveContracts(app.user.amap,true); + for ( c in contracts) { + var label = t._("Subscribers") + " " + c.toString(); + out.push({value:'c'+c.id,label:label}); + } + return out ; + + } + + /** + * get list name from id + * @param listId + */ + function getListName(listId:String) { + var l = getLists(); + + for (ll in l) { + if (ll.value == listId) return ll.label; + } + + return null; + + } + + function getSelection(listId:String) { + if (listId.substr(0, 1) == "c") { + //contrats + var contract = Std.parseInt(listId.substr(1)); + + var pids = db.Product.manager.search($contractId == contract, false); + var pids = Lambda.map(pids, function(x) return x.id); + var up = db.UserContract.manager.search($productId in pids, false); + + + var users = []; + for ( order in up) { + if (!Lambda.has(users, order.user)) { + users.push(order.user); + } + if (order.user2 != null && !Lambda.has(users, order.user2)) { + users.push(order.user2); + } + } + return users; + + }else { + var out = []; + switch(listId) { + case "1": + //tout le monde + out = Lambda.array(app.user.amap.getMembers()); + + case "2": + var users = []; + users.push(app.user.amap.contact); + for ( c in db.Contract.manager.search($amap == app.user.amap)) { + if (!Lambda.has(users, c.contact)) { + users.push(c.contact); + } + } + + //ajouter les autres personnes ayant les droits Admin ou Gestion Adhérents ou Gestion Contrats + for (ua in Lambda.array(db.UserAmap.manager.search($rights != null && $amap == app.user.amap, false))) { + if (ua.hasRight(GroupAdmin) || ua.hasRight(Membership) || ua.hasRight(ContractAdmin())) { + if (!Lambda.has(users, ua.user)) users.push(ua.user); + } + } + + out = users; + + case "3": + //moi + return [app.user]; + case "4": + return Lambda.array(db.User.getUsers_NoContracts()); + case "5": + return Lambda.array(db.User.getUsers_NoMembership()); + } + + return out; + + } + } + + + + + +} \ No newline at end of file diff --git a/src/controller/Place.hx b/src/controller/Place.hx new file mode 100755 index 0000000..91b61ff --- /dev/null +++ b/src/controller/Place.hx @@ -0,0 +1,87 @@ +package controller; +import sugoi.form.Form; + +/** + * Place controller + */ +class Place extends Controller +{ + + public function new() + { + super(); + } + + @tpl('place/view.mtt') + function doView(place:db.Place) { + view.place = place; + + //build adress for google maps + var addr = ""; + if (place.address1 != null) addr += place.address1; + if (place.address2 != null) addr += ", " + place.address2; + if (place.zipCode != null) addr += " " + place.zipCode; + if (place.city != null) addr += " " + place.city; + + view.addr = view.escapeJS(addr); + } + + @tpl('form.mtt') + function doEdit(p:db.Place) { + + var currentAddress = p.getAddress(); + + var f = sugoi.form.Form.fromSpod(p); + + if (f.isValid()) { + + f.toSpod(p); + + if(currentAddress!=p.getAddress() || p.lat==null){ + try{ + service.PlaceService.geocode(p); + }catch(e:Dynamic){ + App.current.session.addMessage(t._("Oops, we're unable to find where is located this address. This place will not be shown on the map.")+'
    $e',true); + } + } + + p.amap = app.user.amap; + p.update(); + throw Ok('/contractAdmin',t._("this place has been updated")); + } + + view.form = f; + view.title = t._("Edit a place"); + } + + @tpl("form.mtt") + public function doInsert() { + + var d = new db.Place(); + var f = sugoi.form.Form.fromSpod(d); + + if (f.isValid()) { + f.toSpod(d); + d.amap = app.user.amap; + d.insert(); + throw Ok('/contractAdmin',t._("The place has been registred") ); + } + + view.form = f; + view.title = t._("Register a new delivery place"); + } + + public function doDelete(p:db.Place) { + if (!app.user.isAmapManager()) throw "forbidden"; + if (checkToken()) { + + if (db.Distribution.manager.search($placeId == p.id).length > 0) + throw Error('/contractAdmin', t._("You can't delete this place because one or more distributions are linked to this place.") ); + + p.lock(); + p.delete(); + throw Ok("/contractAdmin", t._("Place deleted") ); + } + + } +} \ No newline at end of file diff --git a/src/controller/Plugin.hx b/src/controller/Plugin.hx new file mode 100755 index 0000000..1cfc2f1 --- /dev/null +++ b/src/controller/Plugin.hx @@ -0,0 +1,39 @@ +package controller; + +/** + * ... + * @author fbarbut + */ +class Plugin extends sugoi.BaseController +{ + + public function new() + { + super(); + } + + #if plugins + + //cagette-hosted + public function doHosted(d:haxe.web.Dispatch) { + d.dispatch(new hosted.controller.Main()); + } + + //cagette-pro + public function doPro(d:haxe.web.Dispatch) { + d.dispatch(new pro.controller.Main()); + } + + //cagette-connector + public function doConnector(d:haxe.web.Dispatch) { + d.dispatch(new connector.controller.Main()); + } + + //cagette-wholesale-order + public function doWho(d:haxe.web.Dispatch) { + d.dispatch(new who.controller.Main()); + } + + #end + +} \ No newline at end of file diff --git a/src/controller/Product.hx b/src/controller/Product.hx new file mode 100755 index 0000000..911e4d8 --- /dev/null +++ b/src/controller/Product.hx @@ -0,0 +1,339 @@ +package controller; +import sugoi.form.Form; +import Common; +import sugoi.form.ListData.FormData; +import sugoi.form.elements.FloatInput; +import sugoi.form.elements.FloatSelect; +import sugoi.form.elements.IntSelect; +using Std; + +class Product extends Controller +{ + public function new() + { + super(); + view.nav = ["contractadmin","products"]; + } + + @tpl('form.mtt') + function doEdit(d:db.Product) { + + if (!app.user.canManageContract(d.contract)) throw t._("Forbidden access"); + + var f = sugoi.form.Form.fromSpod(d); + + //stock mgmt ? + if (!d.contract.hasStockManagement()) f.removeElementByName('stock'); + + //VAT selector + f.removeElement( f.getElement('vat') ); + var data :FormData = []; + for (k in app.user.amap.vatRates.keys()) { + data.push( { label:k, value:app.user.amap.vatRates[k] } ); + } + f.addElement( new FloatSelect("vat", "TVA", data, d.vat ) ); + + f.removeElementByName("contractId"); + + //Product Taxonomy: + //view.taxo = db.TxpProduct.manager.all(); + //f.addElement(new form.TxpProduct("txpProduct", "taxo",null,false) ); + var txId = d.txpProduct == null ? "" : Std.string(d.txpProduct.id); + var html = '
    '; + f.addElement(new sugoi.form.elements.Html("html",html, 'Nom'),1); + + if (f.isValid()) { + + f.toSpod(d); + app.event(EditProduct(d)); + d.update(); + throw Ok('/contractAdmin/products/'+d.contract.id, t._("The product has been updated")); + }else{ + app.event(PreEditProduct(d)); + } + + view.form = f; + view.title = t._("Modify a product"); + } + + @tpl("form.mtt") + public function doInsert(contract:db.Contract ) { + + if (!app.user.isContractManager(contract)) throw Error("/", t._("Forbidden action")); + + var d = new db.Product(); + var f = sugoi.form.Form.fromSpod(d); + + f.removeElementByName("contractId"); + + //stock mgmt ? + if (!contract.hasStockManagement()) f.removeElementByName('stock'); + + //vat selector + f.removeElement( f.getElement('vat') ); + var data = []; + for (k in app.user.amap.vatRates.keys()) { + data.push( { value:app.user.amap.vatRates[k], label:k } ); + } + f.addElement( new FloatSelect("vat", "TVA", data, d.vat ) ); + + var formName = f.name; + var html = '
    '; + f.addElement(new sugoi.form.elements.Html("html",html, 'Nom'),1); + + if (f.isValid()) { + f.toSpod(d); + d.contract = contract; + app.event(NewProduct(d)); + d.insert(); + throw Ok('/contractAdmin/products/'+d.contract.id, t._("The product has been saved")); + }else{ + app.event(PreNewProduct(contract)); + } + + view.form = f; + view.title = t._("Key-in a new product"); + } + + public function doDelete(p:db.Product) { + + if (!app.user.canManageContract(p.contract)) throw t._("Forbidden access"); + + if (checkToken()) { + + app.event(DeleteProduct(p)); + + var orders = db.UserContract.manager.search($productId == p.id, false); + if (orders.length > 0) { + throw Error("/contractAdmin", t._("Not possible to delete this product because some orders are referencing it")); + } + var cid = p.contract.id; + p.lock(); + p.delete(); + + throw Ok("/contractAdmin/products/"+cid, t._("Product deleted")); + } + throw Error("/contractAdmin", t._("Token error")); + } + + + @tpl('product/import.mtt') + function doImport(c:db.Contract, ?args: { confirm:Bool } ) { + + if (!app.user.canManageContract(c)) throw t._("Forbidden access"); + + var csv = new sugoi.tools.Csv(); + csv.step = 1; + var request = sugoi.tools.Utils.getMultipart(1024 * 1024 * 4); + csv.setHeaders( ["productName","price","ref","desc","qt","unit","organic","floatQt","vat","stock"] ); + view.contract = c; + + // get the uploaded file content + if (request.get("file") != null) { + //convert to utf-8 if needed + var csvData = request.get("file"); + try{ + if (!haxe.Utf8.validate(csvData)){ + csvData = haxe.Utf8.encode(csvData); + } + }catch (e:Dynamic){ } + var datas = csv.importDatasAsMap(csvData); + + app.session.data.csvImportedData = datas; + + csv.step = 2; + view.csv = csv; + } + + if (args != null && args.confirm) { + var i : Iterable> = cast app.session.data.csvImportedData; + var fv = new sugoi.form.filters.FloatFilter(); + + for (p in i) { + + if (p["productName"] != null){ + + var product = new db.Product(); + product.name = p["productName"]; + product.price = fv.filterString(p["price"]); + product.ref = p["ref"]; + product.desc = p["desc"]; + product.vat = fv.filterString(p["vat"]); + product.qt = fv.filterString(p["qt"]); + if(p["unit"]!=null){ + product.unitType = switch(p["unit"].toLowerCase()){ + case "kg" : Kilogram; + case "g" : Gram; + case "l" : Litre; + case "cl" : Centilitre; + case "litre" : Litre; + default : Piece; + } + } + if (p["stock"] != null) product.stock = fv.filterString(p["stock"]); + product.organic = p["organic"] != null; + product.hasFloatQt = p["floatQt"] != null; + + product.contract = c; + product.insert(); + } + + } + + view.numImported = app.session.data.csvImportedData.length; + app.session.data.csvImportedData = null; + + csv.step = 3; + } + + if (csv.step == 1) { + //reset import when back to import page + app.session.data.csvImportedData = null; + } + + view.step = csv.step; + } + + @tpl("product/categorize.mtt") + public function doCategorize(contract:db.Contract) { + + + if (!app.user.canManageContract(contract)) throw t._("Forbidden access"); + + if (db.CategoryGroup.get(app.user.amap).length == 0) throw Error("/contractAdmin", t._("You must first define categories before you can assign a category to a product")); + + //var form = new sugoi.form.Form("cat"); + // + //for ( g in db.CategoryGroup.get(app.user.amap)) { + //var data = []; + //for ( c in g.getCategories()) { + //data.push({key:Std.string(c.id),value:c.name}); + //} + //form.addElement(new sugoi.form.elements.Selectbox("cats"+g.id,g.name,data)); + //} + // + //view.form = form; + view.c = contract; + + } + + /** + * init du Tagger + * @param contract + */ + public function doCategorizeInit(contract:db.Contract) { + + if (!app.user.canManageContract(contract)) throw t._("Forbidden access"); + + var data : TaggerInfos = { + products:[], + categories:[] + } + + for (p in contract.getProducts()) { + + data.products.push({product:p.infos(),categories:Lambda.array(Lambda.map(p.getCategories(),function(x) return x.id))}); + } + + for (cg in db.CategoryGroup.get(app.user.amap)) { + + var x = { id:cg.id, categoryGroupName:cg.name, color:App.current.view.intToHex(db.CategoryGroup.COLORS[cg.color]),tags:[] }; + + for (t in cg.getCategories()) { + x.tags.push({id:t.id,name:t.name}); + } + data.categories.push(x); + + } + + Sys.print(haxe.Json.stringify(data)); + } + + public function doCategorizeSubmit(contract:db.Contract) { + + if (!app.user.canManageContract(contract)) throw t._("Forbidden access"); + + var data : TaggerInfos = haxe.Json.parse(app.params.get("data")); + + db.ProductCategory.manager.unsafeDelete("delete from ProductCategory where productId in (" + Lambda.map(contract.getProducts(), function(t) return t.id).join(",")+")"); + + for (p in data.products) { + for (t in p.categories) { + var x = new db.ProductCategory(); + x.category = db.Category.manager.get(t, false); + x.product = db.Product.manager.get(p.product.id,false); + x.insert(); + } + } + + Sys.print(t._("Modifications saved")); + } + + + @tpl('product/addimage.mtt') + function doAddImage(product:db.Product) { + + if (!app.user.canManageContract(product.contract)) throw t._("Forbidden access"); + + view.c = product.contract; + view.image = product.image; + + var request = sugoi.tools.Utils.getMultipart(1024 * 1024 * 12); //12Mb + + if (request.exists("image")) { + + //Image + var image = request.get("image"); + if (image != null && image.length > 0) { + var img : sugoi.db.File = null; + if ( Sys.systemName() == "Windows") { + img = sugoi.db.File.create(request.get("image"), request.get("image_filename")); + }else { + img = sugoi.tools.UploadedImage.resizeAndStore(request.get("image"), request.get("image_filename"), 400, 400); + } + + product.lock(); + + if (product.image != null) { + //efface ancienne + product.image.lock(); + product.image.delete(); + } + + product.image = img; + product.update(); + throw Ok('/product/addImage/'+product.id,'Image mise à jour'); + } + } + } + + + @tpl('product/compose.mtt') + function doCompose(){ + + } + + + function doGetTaxo(){ + + var out : TxpDictionnary = {products:new Map(), categories:new Map(), subCategories:new Map()}; + + for ( p in db.TxpProduct.manager.all()){ + out.products.set(p.id, {id:p.id, name:p.name, category:p.category.id, subCategory:p.subCategory.id}); + } + + for ( c in db.TxpCategory.manager.all()){ + out.categories.set(c.id, {id:c.id,name:c.name }); + } + + for ( c in db.TxpSubCategory.manager.all()){ + out.subCategories.set(c.id, {id:c.id,name:c.name }); + } + + Sys.print(haxe.Serializer.run(out)); + + } + + + +} \ No newline at end of file diff --git a/src/controller/Shop.hx b/src/controller/Shop.hx new file mode 100755 index 0000000..783f8fd --- /dev/null +++ b/src/controller/Shop.hx @@ -0,0 +1,264 @@ +package controller; +import Common; +import tools.ArrayTool; +import service.OrderService; + +class Shop extends Controller +{ + + var distribs : List; + var contracts : List; + + @tpl('shop/default.mtt') + public function doDefault(place:db.Place,date:Date) { + var products = getProducts(place,date); + view.products = products; + view.place = place; + view.date = date; + view.group = place.amap; + view.infos = ArrayTool.groupByDate(Lambda.array(distribs), "orderEndDate"); + + //message if phone is required + if(app.user!=null && app.user.amap.flags.has(db.Amap.AmapFlags.PhoneRequired) && app.user.phone==null){ + app.session.addMessage(t._("Members of this group should provide a phone number. Please click here to update your account."),true); + } + + //event for additionnal blocks on home page + var e = Blocks([], "shop"); + app.event(e); + view.blocks = e.getParameters()[0]; + } + + /** + * prints the full product list and current cart in JSON + */ + public function doInit(place:db.Place,date:Date) { + + //init order serverside if needed + var order :OrderInSession = app.session.data.order; + if ( order == null) { + app.session.data.order = order = cast {products:[]}; + } + + var products = []; + var categs = new Array<{name:String,pinned:Bool,categs:Array}>(); + + if (place.amap.flags.has(db.Amap.AmapFlags.ShopCategoriesFromTaxonomy)){ + + //TAXO CATEGORIES + products = getProducts(place, date, true); + }else{ + + //CUSTOM CATEGORIES + products = getProducts(place, date, false); + } + + categs = place.amap.getCategoryGroups(); + + //clean + for ( p in order.products){ + p.product = null; + } + Sys.print( haxe.Serializer.run( {products:products,categories:categs,order:order} ) ); + } + + + + /** + * Get the available products list + */ + private function getProducts(place,date,?categsFromTaxo=false):Array { + + contracts = db.Contract.getActiveContracts(app.getCurrentGroup()); + + for (c in Lambda.array(contracts)) { + //only varying orders + if (c.type != db.Contract.TYPE_VARORDER) { + contracts.remove(c); + } + + if (!c.isVisibleInShop()) { + contracts.remove(c); + } + + } + + view.contracts = contracts; + + var now = Date.now(); + var cids = Lambda.map(contracts, function(c) return c.id); + var d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); + var d2 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59); + + //distribs open to orders, and where distribDate is in the date given as parameter + distribs = db.Distribution.manager.search(($contractId in cids) && $orderStartDate <= now && $orderEndDate >= now && $date > d1 && $end < d2 && $place == place, false); + var products = []; + for ( d in distribs){ + for (p in d.contract.getProducts(true)){ + products.push( p.infos(categsFromTaxo,null,d) ); + } + } + return products; + + /*var cids = Lambda.map(distribs, function(d) return d.contract.id); + var products = db.Product.manager.search(($contractId in cids) && $active==true, { orderBy:name }, false); + + return Lambda.array(Lambda.map(products, function(p) return p.infos(categsFromTaxo)));*/ + } + + /** + * Overlay window loaded by Ajax for product Infos + */ + @tpl('shop/productInfo.mtt') + public function doProductInfo(p:db.Product,?args:{distribution:db.Distribution}) { + var d = args!=null && args.distribution!=null ? args.distribution : null; + view.p = p.infos(null,null,d); + view.product = p; + view.vendor = p.contract.vendor; + } + + /** + * receive cart + */ + public function doSubmit() { + + var order : OrderInSession = haxe.Json.parse(app.params.get("data")); + app.session.data.order = order; + + } + + /** + * add a product to the cart + */ + public function doAdd(productId:Int, quantity:Int) { + + var order : OrderInSession = app.session.data.order; + if ( order == null) order = cast { products:[] }; + order.products.push( { productId:productId, quantity:quantity } ); + Sys.print( haxe.Json.stringify( {success:true} ) ); + + } + + /** + * remove a product from cart + */ + public function doRemove(pid:Int) { + + var order:OrderInSession = app.session.data.order; + if ( order == null) return; + + for ( p in order.products.copy()) { + if (p.productId == pid) { + order.products.remove(p); + } + } + + Sys.print( haxe.Json.stringify( { success:true } ) ); + } + + + /** + * validate the order + */ + @tpl('shop/needLogin.mtt') + public function doValidate(place:db.Place, date:Date){ + + //login is needed : display a loginbox + if (app.user == null) { + view.redirect = "/shop/validate/" + place.id + "/" + date.toString().substr(0, 10); + view.group = place.amap; + view.register = true; + view.message = t._("In order to confirm your order, You need to authenticate."); + return; + } + + //add the user to this group if needed + if (place.amap.regOption == db.Amap.RegOption.Open && db.UserAmap.get(app.user, place.amap) == null){ + app.user.makeMemberOf(place.amap); + } + + var order : OrderInSession = app.session.data.order; + if (order == null || order.products == null || order.products.length == 0) { + throw Error("/", t._("Your order is empty") ); + } + + if (place == null) throw "place cannot be empty"; + if (date == null) throw "date cannot be empty"; + + var products = getProducts(place, date); + + var errors = []; + order.total = 0.0; + + //cleaning + for (o in order.products.copy()) { + + var p = db.Product.manager.get(o.productId, false); + + //check that the products are from this group (we never know...) + if (p.contract.amap.id != app.user.amap.id){ + app.session.data.order = null; + throw Error("/", t._("This cart is invalid") ); + } + + //check if the product is available + if (Lambda.find(products, function(x) return x.id == o.productId) == null) { + errors.push( t._("This distribution does not supply the product ::pname::",{pname:p.name}) ); + order.products.remove(o); + continue; + }else{ + o.product = p; + } + + //find distrib + var d = Lambda.find(distribs, function(d) return d.contract.id == p.contract.id); + if ( d == null ){ + errors.push( t._("This distribution does not supply the product ::pname::",{pname:p.name}) ); + order.products.remove(o); + continue; + }else{ + o.distributionId = d.id; + } + + //moderate order according available stocks + if (p.stock != null && p.contract.hasStockManagement() ) { + if (p.stock - o.quantity < 0) { + var canceled = o.quantity - p.stock; + o.quantity -= canceled; + errors.push(t._("Order of ::pname:: reduced to ::oquantity:: to match remaining stock", {pname:p.name, oquantity:o.quantity})); + } + } + + order.total += p.getPrice() * o.quantity; + } + + order.userId = app.user.id; + + if (errors.length > 0) { + app.session.addMessage(errors.join("
    "), true); + } + + //store cart in session + app.session.data.order = order; + + //debug + for ( p in order.products){ + if (p.distributionId == null){ + App.current.logError(place.amap.name + " : panier sans distrib Id : " + Std.string(order) ); + break; + } + } + + if (app.user.amap.hasPayments()){ + //Go to payments page + throw Redirect("/transaction/pay/"); + }else{ + //no payments, confirm direclty + OrderService.confirmSessionOrder(order); + throw Ok("/contract", t._("Your order has been confirmed") ); + } + + } + + +} diff --git a/src/controller/Stats.hx b/src/controller/Stats.hx new file mode 100755 index 0000000..ff96538 --- /dev/null +++ b/src/controller/Stats.hx @@ -0,0 +1,18 @@ +package controller; + +class Stats extends Controller +{ + + public function new() + { + super(); + } + + @tpl("stats/default.mtt") + function doDefault() { + + + } + + +} \ No newline at end of file diff --git a/src/controller/Transaction.hx b/src/controller/Transaction.hx new file mode 100644 index 0000000..95995e2 --- /dev/null +++ b/src/controller/Transaction.hx @@ -0,0 +1,294 @@ +package controller; +import db.Operation.OperationType; +import Common; +import service.OrderService; +using Lambda; + +/** + * Transction controller + * @author fbarbut + */ +class Transaction extends controller.Controller +{ + + /** + * A manager inserts manually a payment + */ + @tpl('form.mtt') + public function doInsertPayment(user:db.User){ + + if (!app.user.isContractManager()) throw Error("/", t._("Action forbidden")); + var t = sugoi.i18n.Locale.texts; + + var op = new db.Operation(); + op.user = user; + op.date = Date.now(); + + var f = new sugoi.form.Form("payement"); + f.addElement(new sugoi.form.elements.StringInput("name", t._("Label||label or name for a payment"), null, true)); + f.addElement(new sugoi.form.elements.FloatInput("amount", t._("Amount"), null, true)); + f.addElement(new sugoi.form.elements.DatePicker("date", t._("Date"), Date.now(), true)); + var paymentTypes = service.PaymentService.getPaymentTypesForManualEntry(app.user.amap); + f.addElement(new sugoi.form.elements.StringSelect("Mtype", t._("Payment type"), paymentTypes, null, true)); + + //related operation + var unpaid = db.Operation.manager.search($user == user && $group == app.user.amap && $type != Payment ,{limit:20,orderBy:-date}); + var data = unpaid.map(function(x) return {label:x.name, value:x.id}).array(); + f.addElement(new sugoi.form.elements.IntSelect("unpaid", t._("As a payment for :"), data, null, false)); + + if (f.isValid()){ + f.toSpod(op); + op.type = db.Operation.OperationType.Payment; + var data : db.Operation.PaymentInfos = {type:f.getValueOf("Mtype")}; + op.data = data; + op.group = app.user.amap; + op.user = user; + + if (f.getValueOf("unpaid") != null){ + var t2 = db.Operation.manager.get(f.getValueOf("unpaid")); + op.relation = t2; + if (t2.amount + op.amount == 0) { + op.pending = false; + t2.lock(); + t2.pending = false; + t2.update(); + } + } + + op.insert(); + + service.PaymentService.updateUserBalance(user, app.user.amap); + + throw Ok("/member/payments/" + user.id, t._("Payment recorded") ); + + } + + view.title = t._("Record a payment for ::user::",{user:user.getCoupleName()}) ; + view.form = f; + } + + + @tpl('form.mtt') + public function doEdit(op:db.Operation){ + + if (!app.user.canAccessMembership() || op.group.id != app.user.amap.id ) { + throw Error("/member/payments/" + op.user.id, t._("Action forbidden")); + } + + if (op.getPaymentType() == "lemonway-ec") throw Error("/member/payments/"+op.user.id, t._("Editing a credit card payment is not allowed")); + + op.lock(); + + var f = new sugoi.form.Form("payement"); + f.addElement(new sugoi.form.elements.StringInput("name", t._("Label||label or name for a payment"), op.name, true)); + f.addElement(new sugoi.form.elements.FloatInput("amount", t._("Amount"), op.amount, true)); + f.addElement(new sugoi.form.elements.DatePicker("date", t._("Date"), op.date, true)); + //f.addElement(new sugoi.form.elements.DatePicker("pending", t._("Confirmed"), !op.pending, true)); + //related operation + var unpaid = db.Operation.manager.search( $user == op.user && $group == op.group && $type != Payment ,{limit:20,orderBy:-date}); + var data = unpaid.map(function(x) return {label:x.name, value:x.id}).array(); + if (op.relation != null) data.push({label:op.relation.name,value:op.relation.id}); + f.addElement(new sugoi.form.elements.IntSelect("unpaid", t._("As a payment for :"), data, op.relation!=null ? op.relation.id : null, false)); + + + if (f.isValid()){ + f.toSpod(op); + op.pending = false; + + if (f.getValueOf("unpaid") != null){ + var t2 = db.Operation.manager.get(f.getValueOf("unpaid")); + op.relation = t2; + if (t2.amount + op.amount == 0) { + op.pending = false; + t2.lock(); + t2.pending = false; + t2.update(); + } + } + + op.update(); + throw Ok("/member/payments/" + op.user.id, t._("Operation updated")); + } + + view.form = f; + } + + /** + * Delete an operation + */ + public function doDelete(op:db.Operation){ + if (!app.user.canAccessMembership() || op.group.id != app.user.amap.id ) throw Error("/member/payments/" + op.user.id, t._("Action forbidden")); + //cannot delete a bank card payment op + if (op.getPaymentType() == "lemonway-ec"){ + throw Error("/member/payments/" + op.user.id, t._("Deleting a credit card payment is not allowed")); + } + //only an admin can delete an order op + if((op.type == db.Operation.OperationType.VOrder || op.type == db.Operation.OperationType.COrder) && !app.user.isAdmin()){ + throw Error("/member/payments/" + op.user.id, t._("Action forbidden")); + } + if (checkToken()){ + op.delete(); + throw Ok("/member/payments/" + op.user.id, t._("Operation deleted")); + } + } + + + /** + * payement entry page + * @param distribKey + */ + @tpl("transaction/pay.mtt") + public function doPay() { + + view.category = 'home'; + + var order : OrderInSession = app.session.data.order; + if (order == null) throw Redirect("/"); + if (order.products.length == 0) throw Error("/", t._("Your cart is empty")); + + view.amount = order.total; + view.paymentTypes = service.PaymentService.getAllowedPaymentTypes(app.user.amap); + view.allowMoneyPotWithNegativeBalance = app.user.amap.allowMoneyPotWithNegativeBalance; + view.futurebalance = db.UserAmap.get(app.user, app.user.amap).balance - order.total; + } + + /** + * pay by check + */ + @tpl("transaction/check.mtt") + public function doCheck(){ + + //order in session + var tmpOrder : OrderInSession = app.session.data.order; + if (tmpOrder == null) throw Redirect("/contract"); + if (tmpOrder.products.length == 0) throw Error("/", t._("Your cart is empty")); + + //get a code + var d = db.Distribution.manager.get(tmpOrder.products[0].distributionId, false); + var code = payment.Check.getCode(d.date, d.place, app.user); + + view.code = code; + view.amount = tmpOrder.total; + + //if (checkToken()){ + + //record order + var orders = OrderService.confirmSessionOrder(tmpOrder); + var ops = db.Operation.onOrderConfirm(orders); + var ordersGrouped = tools.ObjectListTool.groupOrdersByKey(orders); + + if (Lambda.array(ordersGrouped).length == 1){ + //all orders are for the same multidistrib + var name = t._("Check for the order of ::date::", {date:view.hDate(d.date)}) + " ("+code+")"; + db.Operation.makePaymentOperation(app.user,app.user.amap, payment.Check.TYPE, tmpOrder.total, name, ops[0] ); + }else{ + //orders are for multiple distribs : create one payment + db.Operation.makePaymentOperation(app.user,app.user.amap,payment.Check.TYPE, tmpOrder.total, t._("Check") + " ("+code+")" ); + } + + + //throw Ok("/contract", t._("Your payment by check has been saved. It will be validated by a coordinator at the delivery.")); + //} + + } + + /** + * pay by transfer + */ + @tpl("transaction/transfer.mtt") + public function doTransfer(){ + + //order in session + var tmpOrder : OrderInSession = app.session.data.order; + if (tmpOrder == null) throw Redirect("/contract"); + if (tmpOrder.products.length == 0) throw Error("/", t._("Your cart is empty")); + + //get a code + var d = db.Distribution.manager.get(tmpOrder.products[0].distributionId, false); + var code = payment.Check.getCode(d.date, d.place, app.user); + + view.code = code; + view.amount = tmpOrder.total; + + //if (checkToken()){ + + //record order + var orders = OrderService.confirmSessionOrder(tmpOrder); + var ops = db.Operation.onOrderConfirm(orders); + var ordersGrouped = tools.ObjectListTool.groupOrdersByKey(orders); + + if (Lambda.array(ordersGrouped).length == 1){ + //one multidistrib + var name = t._("Transfer for the order of ::date::", {date:view.hDate(d.date)}) + " ("+code+")"; + db.Operation.makePaymentOperation(app.user,app.user.amap,payment.Transfer.TYPE, tmpOrder.total, name, ops[0] ); + }else{ + //many distribs + db.Operation.makePaymentOperation(app.user,app.user.amap,payment.Transfer.TYPE, tmpOrder.total, t._("Bank transfer")+" ("+code+")" ); + } + + + //throw Ok("/contract", t._("Your payment by transfer has been saved. It will be validated by a coordinator.")); + //} + + } + + /** + * pay by cash + */ + @tpl("transaction/cash.mtt") + public function doCash(){ + + //order in session + var tmpOrder : OrderInSession = app.session.data.order; + if (tmpOrder == null) throw Redirect("/contract"); + if (tmpOrder.products.length == 0) throw Error("/", t._("Your cart is empty")); + + view.amount = tmpOrder.total; + var d = db.Distribution.manager.get(tmpOrder.products[0].distributionId, false); + + //if (checkToken()){ + + //record order + var orders = OrderService.confirmSessionOrder(tmpOrder); + var ops = db.Operation.onOrderConfirm(orders); + var ordersGrouped = tools.ObjectListTool.groupOrdersByKey(orders); + + if (Lambda.array(ordersGrouped).length == 1){ + //same multidistrib + var name = t._("Cash for the order of ::date::", {date:view.hDate(d.date)}); + db.Operation.makePaymentOperation(app.user,app.user.amap,payment.Cash.TYPE, tmpOrder.total, name , ops[0] ); + }else{ + //various distribs + db.Operation.makePaymentOperation(app.user, app.user.amap, payment.Cash.TYPE, tmpOrder.total, t._("Cash payment")); + } + + + //throw Ok("/contract", t._("Your order is validated, you commited to pay in cash at the delivery.")); + //} + + } + + /** + * Use the money pot + */ + @tpl("transaction/moneypot.mtt") + public function doMoneypot(){ + + //order in session + var tmpOrder : OrderInSession = app.session.data.order; + if (tmpOrder == null) throw Redirect("/contract"); + if (tmpOrder.products.length == 0) throw Error("/", t._("Your cart is empty")); + var futureBalance = db.UserAmap.get(app.user, app.user.amap).balance - tmpOrder.total; + if (!app.user.amap.allowMoneyPotWithNegativeBalance && futureBalance < 0) { + throw Error("/transaction/pay", t._("You do not have sufficient funds to pay this order with your money pot.")); + } + + //record order + var orders = OrderService.confirmSessionOrder(tmpOrder); + var ops = db.Operation.onOrderConfirm(orders); + + view.amount = tmpOrder.total; + view.balance = db.UserAmap.get(app.user, app.user.amap).balance; + + } +} \ No newline at end of file diff --git a/src/controller/User.hx b/src/controller/User.hx new file mode 100755 index 0000000..e472b93 --- /dev/null +++ b/src/controller/User.hx @@ -0,0 +1,255 @@ +package controller; +import haxe.crypto.Md5; +import sugoi.form.elements.Input; +import sugoi.form.Form; +import sugoi.form.elements.IntInput; +import sugoi.form.elements.StringInput; +import sugoi.form.validators.EmailValidator; +import ufront.mail.*; + +class User extends Controller +{ + public function new() + { + super(); + } + + @tpl("user/default.mtt") + function doDefault() { + + } + + + @tpl("user/login.mtt") + function doLogin() { + + if (App.current.user != null) { + throw Redirect('/'); + } + + //if its needed to redirect after login + if (app.params.exists("redirect")){ + view.redirect = app.params.exists("redirect"); + }else{ + view.redirect = "/"; + } + } + + + /** + * Choose which group to connect to. + */ + @logged + @tpl("user/choose.mtt") + function doChoose(?args: { amap:db.Amap } ) { + + if (app.user == null) throw t._("You are not connected"); + + var amaps = db.UserAmap.manager.search($user == app.user, false); + + if (amaps.length == 1 && !app.params.exists("show")) { + //qu'une amap + app.session.data.amapId = amaps.first().amap.id; + throw Redirect('/'); + }else{ + view.noGroup = true; //force template to not display current group + } + + if (args!=null && args.amap!=null) { + //select a group + var which = app.session.data==null ? 0 : app.session.data.whichUser ; + app.session.data.order = null; + app.session.data.newGroup = null; + app.session.data.amapId = args.amap.id; + app.session.data.whichUser = which; + throw Redirect('/'); + } + + view.amaps = amaps; + view.wl = db.WaitingList.manager.search($user == app.user, false); + + + #if plugins + view.pros = pro.db.PUserCompany.getCompanies(app.user); + #end + } + + function doLogout() { + App.current.session.delete(); + throw Redirect('/'); + } + + /** + * Ask for password renewal by mail + * when password is forgotten + */ + @tpl("user/forgottenPassword.mtt") + function doForgottenPassword(?key:String, ?u:db.User){ + + //STEP 1 + var step = 1; + var error : String = null; + var url = "/user/forgottenPassword"; + + //ask for mail + var askmailform = new Form("askemail"); + askmailform.addElement(new StringInput("email", t._("Please key-in your E-Mail address"),null,true)); + + //change pass form + var chpassform = new Form("chpass"); + + var pass1 = new StringInput("pass1", t._("Your new password"),null,true); + pass1.password = true; + chpassform.addElement(pass1); + + var pass2 = new StringInput("pass2", t._("Again your new password"),null,true); + pass2.password = true; + chpassform.addElement(pass2); + + var uid = new IntInput("uid","uid", u == null?null:u.id); + uid.inputType = ITHidden; + chpassform.addElement(uid); + + if (askmailform.isValid()) { + //STEP 2 + //send password renewal email + step = 2; + + var email :String = askmailform.getValueOf("email"); + var user = db.User.manager.select(email == $email, false); + //could be user 2 + if(user==null) user = db.User.manager.select(email == $email2, false); + + //user not found + if (user == null) throw Error(url, t._("This E-mail is not linked to a known account")); + + //create token + var token = haxe.crypto.Md5.encode("chp"+Std.random(1000000000)); + sugoi.db.Cache.set(token, user.id, 60 * 60 * 24 * 30); + + var m = new sugoi.mail.Mail(); + m.setSender(App.config.get("default_email"), t._("Cagette.net")); + m.setRecipient(email, user.name); + m.setSubject( "["+App.config.NAME+"] : "+t._("Password change")); + m.setHtmlBody( app.processTemplate('mail/forgottenPassword.mtt', { user:user, link:'http://' + App.config.HOST + '/user/forgottenPassword/'+token+"/"+user.id }) ); + App.sendMail(m); + } + + if (key != null && u!=null) { + //check key and propose to change pass + step = 3; + + if ( u.id == sugoi.db.Cache.get(key) ) { + view.form = chpassform; + }else { + error = t._("Invalid request"); + } + } + + if (chpassform.isValid()) { + //change pass + step = 4; + + if ( chpassform.getValueOf("pass1") == chpassform.getValueOf("pass2")) { + + var uid = Std.parseInt( chpassform.getValueOf("uid") ); + var user = db.User.manager.get(uid, true); + var pass = chpassform.getValueOf("pass1"); + user.setPass(pass); + user.update(); + + var m = new sugoi.mail.Mail(); + m.setSender(App.config.get("default_email"), t._("Cagette.net")); + m.setRecipient(user.email, user.name); + if(user.email2!=null) m.setRecipient(user.email2, user.name); + m.setSubject( "["+App.config.NAME+"] : "+t._("New password confirmed")); + var emails = [user.email]; + if(user.email2!=null) emails.push(user.email2); + var params = { + user:user, + emails:emails.join(", "), + password:pass, + NAME:App.config.NAME + } + m.setHtmlBody( app.processTemplate('mail/newPasswordConfirmed.mtt', params) ); + App.sendMail(m); + + }else { + error = t._("You must key-in two times the same password"); + } + } + + if (step == 1) { + view.form = askmailform; + } + + view.step = step; + view.error = error; + } + + + /** + * generate a custom key for transactionnal emails, valid during the current day + */ + //function getKey(m:db.User) { + //return haxe.crypto.Md5.encode(App.config.get("key")+m.email+(Date.now().getDate())).substr(0,12); + //} + + + @logged + @tpl("form.mtt") + function doDefinePassword(?key:String, ?u:db.User){ + + if (app.user.isFullyRegistred()) throw Error("/", t._("You already have a password")); + + var form = new Form("definepass"); + var pass1 = new StringInput("pass1", t._("Your new password")); + var pass2 = new StringInput("pass2", t._("Again your new password")); + pass1.password = true; + pass2.password = true; + form.addElement(pass1); + form.addElement(pass2); + + if (form.isValid()) { + + if ( form.getValueOf("pass1") == form.getValueOf("pass2")) { + + app.user.lock(); + app.user.setPass(form.getValueOf("pass1")); + app.user.update(); + throw Ok('/', t._("Congratulations, your account is now protected by a password.")); + + }else { + form.addError( t._("You must key-in two times the same password")); + } + } + view.form = form; + view.title = t._("Create a password for your account"); + } + + /** + * landing page when coming from an invitation + * @param k + */ + public function doValidate(k:String ) { + + var uid = Std.parseInt(sugoi.db.Cache.get("validation" + k)); + if (uid == null || uid==0) throw Error('/user/login', t._("Your invitation is invalid or expired ($k)")); + var user = db.User.manager.get(uid, true); + + db.User.login(user, user.email); + + var groups = user.getAmaps(); + if(groups.length>0) app.session.data.amapId = groups.first().id; + + sugoi.db.Cache.destroy("validation" + k); + + throw Ok("/user/definePassword", t._("Congratulations ::userName::, your account is validated!", {userName:user.getName()})); + + + + } + + + +} \ No newline at end of file diff --git a/src/controller/Validate.hx b/src/controller/Validate.hx new file mode 100644 index 0000000..6c4ecb9 --- /dev/null +++ b/src/controller/Validate.hx @@ -0,0 +1,154 @@ +package controller; +import db.Operation.OperationType; +using Lambda; + +/** + * Distribution validation + * @author fbarbut + */ +class Validate extends controller.Controller +{ + public var date : Date; + public var user : db.User; + public var place : db.Place; + + @tpl('validate/user.mtt') + public function doDefault(){ + view.member = user; + + if (!app.user.amap.hasShopMode()){ + //get last operations and check balance + view.operations = db.Operation.getLastOperations(this.user,place.amap,10); + view.balance = db.UserAmap.get(this.user, place.amap).balance; + } + + var b = db.Basket.get(user, place, date); + view.orders = service.OrderService.prepare(b.getOrders()); + view.place = place; + view.date = date; + view.basket = b; + + checkToken(); + } + + public function doDeleteOp(op:db.Operation){ + if (checkToken()){ + + op.lock(); + op.delete(); + + service.PaymentService.updateUserBalance(user, app.user.amap); + + throw Ok("/validate/"+date+"/"+place.id+"/"+user.id, t._("Operation deleted")); + } + } + + public function doValidateOp(op:db.Operation){ + if (checkToken()){ + + op.lock(); + op.pending = false; + op.update(); + + service.PaymentService.updateUserBalance(user, app.user.amap); + + throw Ok("/validate/"+date+"/"+place.id+"/"+user.id, t._("Operation validated")); + } + } + + @tpl('form.mtt') + public function doAddRefund(){ + + if (!app.user.isContractManager()) throw t._("Forbidden access"); + + var o = new db.Operation(); + o.user = user; + o.date = Date.now(); + + var b = db.Basket.get(user, place, date); + var op = b.getOrderOperation(false); + if(op==null) throw "unable to find related order operation"; + + var f = new sugoi.form.Form(t._("payment")); + f.addElement(new sugoi.form.elements.StringInput("name", t._("Label"), t._("Refund"), true)); + f.addElement(new sugoi.form.elements.FloatInput("amount", t._("Amount"), null, true)); + f.addElement(new sugoi.form.elements.DatePicker("date", "Date", Date.now(), true)); + var paymentTypes = service.PaymentService.getPaymentTypesForManualEntry(app.user.amap); + f.addElement(new sugoi.form.elements.StringSelect("Mtype", t._("Payment type"), paymentTypes, null, true)); + + + if (f.isValid()){ + f.toSpod(o); + o.type = db.Operation.OperationType.Payment; + var data : db.Operation.PaymentInfos = {type:f.getValueOf("Mtype")}; + o.data = data; + o.group = app.user.amap; + o.user = user; + o.relation = op; + o.amount = 0-Math.abs(o.amount); + o.insert(); + + App.current.event(NewOperation(o)); + + service.PaymentService.updateUserBalance(user, app.user.amap); + + throw Ok("/validate/"+date+"/"+place.id+"/"+user.id, t._("Refund saved")); + } + + view.title = t._("Key-in a refund for ::user::",{user:user.getCoupleName()}); + view.form = f; + } + + @tpl('form.mtt') + public function doAddPayment(){ + + if (!app.user.isContractManager()) throw Error("/",t._("Forbidden access")); + + var o = new db.Operation(); + o.user = user; + o.date = Date.now(); + + var f = new sugoi.form.Form("payment"); + f.addElement(new sugoi.form.elements.StringInput("name", t._("Label"), t._("Additional payment"), true)); + f.addElement(new sugoi.form.elements.FloatInput("amount", t._("Amount"), null, true)); + f.addElement(new sugoi.form.elements.DatePicker("date", t._("Date"), Date.now(), true)); + var paymentTypes = service.PaymentService.getPaymentTypesForManualEntry(app.user.amap); + f.addElement(new sugoi.form.elements.StringSelect("Mtype", t._("Payment type"), paymentTypes, null, true)); + + var b = db.Basket.get(user, place, date); + var op = b.getOrderOperation(false); + if(op==null) throw "unable to find related order operation"; + + if (f.isValid()){ + f.toSpod(o); + o.type = db.Operation.OperationType.Payment; + var data : db.Operation.PaymentInfos = {type:f.getValueOf("Mtype")}; + o.data = data; + o.group = app.user.amap; + o.user = user; + o.relation = op; + o.insert(); + + service.PaymentService.updateUserBalance(user, app.user.amap); + + throw Ok("/validate/"+date+"/"+place.id+"/"+user.id, t._("Payment saved")); + } + + view.title = t._("Key-in a payment for ::user::",{user:user.getCoupleName()}); + view.form = f; + } + + public function doValidate(){ + + if (checkToken()){ + + var basket = db.Basket.get(user, place, date); + service.PaymentService.validateBasket(basket); + + throw Ok("/distribution/validate/"+date+"/"+place.id, t._("Order validated")); + + } + + } + +} \ No newline at end of file diff --git a/src/controller/Vendor.hx b/src/controller/Vendor.hx new file mode 100755 index 0000000..299b016 --- /dev/null +++ b/src/controller/Vendor.hx @@ -0,0 +1,124 @@ +package controller; +import db.UserContract; +import sugoi.form.elements.Selectbox; +import sugoi.form.Form; +import neko.Web; +import sugoi.tools.Utils; + + +class Vendor extends Controller +{ + + public function new() + { + super(); + + if (!app.user.isContractManager()) throw t._("Forbidden access"); + + } + + @logged + @tpl('vendor/default.mtt') + function doDefault() { + var browse:Int->Int->List; + + //default display + browse = function(index:Int, limit:Int) { + return db.Vendor.manager.search($id > index && $amap==app.user.amap, { limit:limit, orderBy:-id }, false); + } + + var count = db.Vendor.manager.count($amap==app.user.amap); + var rb = new sugoi.tools.ResultsBrowser(count, 10, browse); + view.vendors = rb; + } + + + @tpl("vendor/view.mtt") + function doView(vendor:db.Vendor) { + view.vendor = vendor; + } + + @tpl('form.mtt') + function doEdit(vendor:db.Vendor) { + + var form = sugoi.form.Form.fromSpod(vendor); + form.removeElement( form.getElement("amapId") ); + + if (form.isValid()) { + form.toSpod(vendor); //update model + vendor.amap = app.user.amap; + vendor.update(); + throw Ok('/contractAdmin', t._("This supplier has been updated")); + } + + view.form = form; + } + + @tpl("form.mtt") + public function doInsert() { + + + var m = new db.Vendor(); + var form = sugoi.form.Form.fromSpod(m); + form.removeElement(form.getElement("amapId")); + + if (form.isValid()) { + form.toSpod(m); //update model + m.amap = app.user.amap; + m.insert(); + + throw Ok('/contractAdmin/', t._("This supplier has been saved")); + } + + view.form = form; + } + + public function doDelete(v:db.Vendor) { + if (!app.user.isAmapManager()) throw t._("Forbidden action"); + if (checkToken()) { + + if (db.Contract.manager.search($vendorId == v.id).length > 0) throw Error('/contractAdmin', t._("You cannot delete this supplier because some contracts (current or old) are referencing this supplier.")); + + v.lock(); + v.delete(); + throw Ok("/contractAdmin", t._("Supplier deleted")); + } + + } + + @tpl('vendor/addimage.mtt') + function doAddImage(v:db.Vendor) { + + view.vendor = v; + view.image = v.image; + + var request = sugoi.tools.Utils.getMultipart(1024 * 1024 * 12); //12Mb + + if (request.exists("image")) { + + //Image + var image = request.get("image"); + if (image != null && image.length > 0) { + var img : sugoi.db.File = null; + if ( Sys.systemName() == "Windows") { + img = sugoi.db.File.create(request.get("image"), request.get("image_filename")); + }else { + img = sugoi.tools.UploadedImage.resizeAndStore(request.get("image"), request.get("image_filename"), 400, 400); + } + + v.lock(); + + if (v.image != null) { + //efface ancienne + v.image.lock(); + v.image.delete(); + } + + v.image = img; + v.update(); + throw Ok('/contractAdmin/', t._("Image updated")); + } + } + } + +} \ No newline at end of file diff --git a/src/controller/admin/Admin.hx b/src/controller/admin/Admin.hx new file mode 100755 index 0000000..b1b6d85 --- /dev/null +++ b/src/controller/admin/Admin.hx @@ -0,0 +1,223 @@ +package controller.admin; +import haxe.web.Dispatch; +import Common; + +class Admin extends Controller { + + public function new() { + super(); + view.category = 'admin'; + + //trigger a "Nav" event + var nav = new Array(); + var e = Nav(nav,"admin"); + app.event(e); + view.nav = e.getParameters()[0]; + + } + + @tpl("admin/default.mtt") + function doDefault() { + view.now = Date.now(); + } + + @tpl("admin/emails.mtt") + function doEmails() { + var browse = function(index:Int, limit:Int) { + return sugoi.db.BufferedMail.manager.search($sdate==null,{limit:[index,limit],orderBy:-cdate},false); + } + + var count = sugoi.db.BufferedMail.manager.count($sdate==null); + view.browser = new sugoi.tools.ResultsBrowser(count,10,browse); + view.num = count; + + } + + @tpl("form.mtt") + function doSmtp() { + + var f = new sugoi.form.Form("emails"); + var data = [ + {label:"SMTP",value:"smtp"}, + {label:"Mandrill API",value:"mandrill"}, + ]; + + var mailer = sugoi.db.Variable.get("mailer")==null ? "smtp" : sugoi.db.Variable.get("mailer"); + var host = sugoi.db.Variable.get("smtp_host")==null ? App.config.get("smtp_host") : sugoi.db.Variable.get("smtp_host"); + var port = sugoi.db.Variable.get("smtp_port")==null ? App.config.get("smtp_port") : sugoi.db.Variable.get("smtp_port"); + var user = sugoi.db.Variable.get("smtp_user")==null ? App.config.get("smtp_user") : sugoi.db.Variable.get("smtp_user"); + var pass = sugoi.db.Variable.get("smtp_pass")==null ? App.config.get("smtp_pass") : sugoi.db.Variable.get("smtp_pass"); + + + f.addElement(new sugoi.form.elements.StringSelect("mailer", "Mailer", data, mailer )); + f.addElement(new sugoi.form.elements.StringInput("smtp_host", "host", host)); + f.addElement(new sugoi.form.elements.StringInput("smtp_port", "port", port)); + f.addElement(new sugoi.form.elements.StringInput("smtp_user", "user", user)); + f.addElement(new sugoi.form.elements.StringInput("smtp_pass", "pass", pass)); + + + if (f.isValid()){ + for ( k in ["mailer","smtp_host","smtp_port","smtp_user","smtp_pass"]){ + sugoi.db.Variable.set(k, f.getValueOf(k)); + } + throw Ok("/admin/emails", t._("Configuration updated") ); + + } + + view.title = t._("Email service configuration"); + view.form = f; + } + + function doPlugins(d:Dispatch) { + d.dispatch(new controller.admin.Plugins()); + } + + + @tpl("admin/taxo.mtt") + function doTaxo(){ + + view.categ = db.TxpCategory.manager.all(); + + } + + /** + * Display errors logged in DB + */ + @tpl("admin/errors.mtt") + function doErrors( args:{?user: Int, ?like: String, ?empty:Bool} ) { + view.now = Date.now(); + + view.u = args.user!=null ? db.User.manager.get(args.user,false) : null; + view.like = args.like!=null ? args.like : ""; + + var sql = ""; + if( args.user!=null ) sql += " AND uid="+args.user; + //if( args.like!=null && args.like != "" ) sql += " AND error like "+sys.db.Manager.cnx.quote("%"+args.like+"%"); + if (args.empty) { + sys.db.Manager.cnx.request("truncate table Error"); + } + + var errorsStats = sys.db.Manager.cnx.request("select count(id) as c, DATE_FORMAT(date,'%y-%m-%d') as day from Error where date > NOW()- INTERVAL 1 MONTH "+sql+" group by day order by day").results(); + view.errorsStats = errorsStats; + + view.browser = new sugoi.tools.ResultsBrowser( + sugoi.db.Error.manager.unsafeCount("SELECT count(*) FROM Error WHERE 1 "+sql), + 20, + function(start, limit) { return sugoi.db.Error.manager.unsafeObjects("SELECT * FROM Error WHERE 1 "+sql+" ORDER BY date DESC LIMIT "+start+","+limit,false); } + ); + } + + @tpl("admin/graph.mtt") + function doGraph(?key:String,?year:Int,?month:Int){ + + + var from = new Date(year,month,1,0,0,0); + var to = new Date(year,month+1,0,23,59,59); + + if(app.params.exists("recompute")){ + + switch(key){ + case "basket": + for( d in 1...to.getDate()){ + var _from = new Date(year,month,d,0,0,0); + var _to = new Date(year,month,d,23,59,59); + var value = db.Basket.manager.count($cdate>=_from && $cdate<=_to); + var g = db.Graph.record(key,value, _from ); + // trace(value,_from,g); + + } + + + } + + } + + var data = db.Graph.getRange(key,from,to); + view.data = data; + view.from = from; + view.to = to; + view.key = key; + + var averageValue = 0.0; + var total = 0.0; + for( d in data) total += d.value; + averageValue = total/data.length; + view.total = total; + view.averageValue = averageValue; + + + + + } + + function doFixDistribValidation() { + + Sys.println("===== Liste des distributions ayant été re-validées ====
    "); + + //Get the current group + var group = app.user.amap; + //Get all the contracts for this given group + var contractIds = Lambda.map(group.getContracts(),function(x) return x.id); + //Get all the validated distributions for this given group + var validatedDistribs = db.Distribution.manager.search( ($contractId in contractIds) && $validated == true, {orderBy:date}, false); + for (distrib in validatedDistribs){ + + service.PaymentService.validateDistribution(distrib); + Sys.println(distrib.toString() + "
    "); + + } + + Sys.println("===== Fin de la liste ===="); + + } + + function doCheckDistribValidation() { + + Sys.println("===== Liste des distributions validées ayant des opérations/paiements non validés ====
    "); + + //Get the current group + var group = app.user.amap; + //Get all the contracts for this given group + var contractIds = Lambda.map(group.getContracts(),function(x) return x.id); + //Get all the validated distributions for this given group + var validatedDistribs = db.Distribution.manager.search( ($contractId in contractIds) && $validated == true, {orderBy:date}, false); + for (distrib in validatedDistribs){ + + for (user in distrib.getUsers()){ + + var basket = db.Basket.get(user, distrib.place, distrib.date); + if (basket == null || basket.isValidated()) continue; + + for (order in basket.getOrders()){ + if (!order.paid) { + Sys.println(order.distribution.toString() + "
    "); + Sys.println(order.toString() + "
    "); + } + } + + var operation = basket.getOrderOperation(false); + if (operation != null){ + + if (operation.pending) { + Sys.println(distrib.toString() + "
    "); + Sys.println(operation.toString() + "
    "); + } + + for ( payment in basket.getPayments()){ + + if (payment.pending){ + Sys.println(distrib.toString() + "
    "); + Sys.println(payment.toString() + "
    "); + } + } + } + + } + } + + Sys.println("===== Fin de la liste ===="); + + } + +} + diff --git a/src/controller/admin/Plugins.hx b/src/controller/admin/Plugins.hx new file mode 100755 index 0000000..1170c23 --- /dev/null +++ b/src/controller/admin/Plugins.hx @@ -0,0 +1,32 @@ +package controller.admin; + +/** + * ... + * @author fbarbut + */ +class Plugins extends controller.Controller +{ + + public function new() + { + super(); + } + + @tpl("admin/plugins/default.mtt") + public function doDefault() { + view.plugins = App.current.plugins; + } + + + public function doInstall(plugin:String) { + + /*var p = App.current.getPlugin(plugin); + if (p == null) throw Error("/admin/plugins","Le plugin '"+plugin+"' introuvable"); + + if(p.isInstalled()) throw Ok("/admin/plugins","Le plugin '"+plugin+"' est déjà installé"); + p.install(); + throw Ok("/admin/plugins","Le plugin '"+plugin+"' est correctement installé");*/ + + } + +} \ No newline at end of file diff --git a/src/controller/api/Group.hx b/src/controller/api/Group.hx new file mode 100644 index 0000000..eeec87f --- /dev/null +++ b/src/controller/api/Group.hx @@ -0,0 +1,80 @@ +package controller.api; +import haxe.Json; +import Common; + +/** + * Groups API + * @author fbarbut + */ +class Group extends Controller +{ + /** + * JSON map datas + * + * Request by zone : http://localhost/api/group/map?minLat=42.8115217450979&maxLat=51.04139389812637=&minLng=-18.369140624999996&maxLng=23.13720703125 + * Request by location : http://localhost/api/group/map?lat=48.85&lng=2.32 + * Request by address : http://localhost/api/group/map?address=105%20avenue%20d%27ivry%20Paris + */ + public function doMap(args:{?minLat:Float, ?maxLat:Float, ?minLng:Float, ?maxLng:Float, ?lat:Float, ?lng:Float, ?address:String}) { + + var out = new Array(); + var places = new List(); + if (args.minLat != null && args.maxLat != null && args.minLng != null && args.maxLng != null){ + + //Request by zone + #if plugins + var sql = "select p.* from Place p, Hosting h where h.id=p.amapId and h.visible=1 and "; + sql += 'p.lat > ${args.minLat} and p.lat < ${args.maxLat} and p.lng > ${args.minLng} and p.lng < ${args.maxLng}'; + #else + var sql = "select p.* from Place p where "; + sql += 'p.lat > ${args.minLat} and p.lat < ${args.maxLat} and p.lng > ${args.minLng} and p.lng < ${args.maxLng}'; + #end + places = db.Place.manager.unsafeObjects(sql, false); + + }else if (args.lat!=null && args.lng!=null){ + + //Request by location + places = findGroupByDist(args.lat, args.lng); + + }else{ + //Request by address + if (args.address == null) throw "Please provide parameters"; + + var geocode = new sugoi.apis.google.GeoCode(App.config.get("google_geocoding_key")); + var loc = geocode.geocode(args.address)[0].geometry.location; + + args.lat = loc.lat; + args.lng = loc.lng; + + places = findGroupByDist(args.lat, args.lng); + } + + for ( p in places){ + out.push({ + id : p.amap.id, + name : p.amap.name, + image : p.amap.image==null ? null : view.file(p.amap.image), + place : p.getInfos() + }); + } + + Sys.print(haxe.Json.stringify({success:true,groups:out})); + } + + /** + * ~~ Pythagore rulez ~~ + */ + function findGroupByDist(lat:Float, lng:Float,?limit=5){ + #if plugins + var sql = 'select p.*,SQRT( POW(p.lat-$lat,2) + POW(p.lng-$lng,2) ) as dist from Place p, Hosting h '; + sql += "where h.id=p.amapId and h.visible=1 and p.lat is not null "; + sql += 'order by dist asc LIMIT $limit'; + #else + var sql = 'select p.*,SQRT( POW(p.lat-$lat,2) + POW(p.lng-$lng,2) ) as dist from Place p '; + sql += "where p.lat is not null "; + sql += 'order by dist asc LIMIT $limit'; + #end + return db.Place.manager.unsafeObjects(sql, false); + } + +} \ No newline at end of file diff --git a/src/controller/api/Order.hx b/src/controller/api/Order.hx new file mode 100644 index 0000000..cbafc04 --- /dev/null +++ b/src/controller/api/Order.hx @@ -0,0 +1,142 @@ +package controller.api; +import haxe.Json; +import tink.core.Error; +import service.OrderService; + +/** + * Public order API + */ +class Order extends Controller +{ + /** + * get orders of a user from a contractId (constant contract) or a distributionId (varying contract) + */ + public function doGet(userId:Int){ + + checkIsLogged(); + + //params + var p = app.params; + var distributionId = Std.parseInt(p.get("distributionId")); + var contractId = Std.parseInt(p.get("contractId")); + if (distributionId == null && contractId == null) throw "You should provide a contractId or a distributionId"; + var user = db.User.manager.get(userId, false); + if (user == null) throw 'user #$userId doesn\'t exists'; + var c : db.Contract = null; + var d : db.Distribution = null; + if (distributionId == null) { + c = db.Contract.manager.get(contractId, false); + }else{ + d = db.Distribution.manager.get(distributionId, false); + c = d.contract; + } + + //rights + if (!app.user.canManageContract(c)) throw new Error(t._("You do not have the authorization to manage this contract")); + if (d != null && d.validated) throw new Error(t._("This delivery has been already validated")); + if (c.type == db.Contract.TYPE_VARORDER && d == null ) throw "this contract is a 'varying order contract', please provide a distributionId"; + + //get datas + var pids = tools.ObjectListTool.getIds(c.getProducts(false)); + var orders; + if (c.type == db.Contract.TYPE_VARORDER) { + orders = db.UserContract.manager.search($user == user && $distributionId==d.id && ($productId in pids), true); + }else { + orders = db.UserContract.manager.search($user == user && ($productId in pids), true); + } + var orders = OrderService.prepare(orders); + + Sys.print(tink.Json.stringify({success:true,orders:orders})); + } + + /** + * Update orders of a user ( from react OrderBox component ) + * @param userId + */ + public function doUpdate(userId:Int){ + + checkIsLogged(); + + //GET params + var p = app.params; + var distributionId = Std.parseInt(p.get("distributionId")); + var contractId = Std.parseInt(p.get("contractId")); + + //POST payload + var data = new Array<{id:Int,productId:Int,qt:Float,paid:Bool,invertSharedOrder:Bool,userId2:Int}>(); + data = haxe.Json.parse( StringTools.urlDecode(sugoi.Web.getPostData()) ).orders; + + if (distributionId == null && contractId == null) throw "You should provide a contractId or a distributionId"; + var user = db.User.manager.get(userId, false); + if (user == null) throw 'user #$userId doesn\'t exists'; + + var c : db.Contract = null; + var d : db.Distribution = null; + if (distributionId == null) { + c = db.Contract.manager.get(contractId, false); + }else{ + d = db.Distribution.manager.get(distributionId, false); + c = d.contract; + } + var pids = tools.ObjectListTool.getIds(c.getProducts(false)); + + //rights & checks + //fbarbut 2018-11-13 : too many problems when people try to edit the order of someone who left the group... + //if (!user.isMemberOf(c.amap)) throw new Error(t._("::user:: is not member of this group", {user:user.name})); + if (!app.user.canManageContract(c)) throw new Error(t._("You do not have the authorization to manage this contract")); + if (d != null && d.validated) throw new Error(t._("This delivery has been already validated")); + if (c.type == db.Contract.TYPE_VARORDER && d == null ) throw "this contract is a 'varying order contract', please provide a distributionId"; + + /* + * record orders + **/ + + //find existing orders + var exOrders = null; + if (c.type == db.Contract.TYPE_VARORDER) { + exOrders = db.UserContract.manager.search($user == user && $distributionId==d.id && ($productId in pids), true); + }else { + exOrders = db.UserContract.manager.search($user == user && ($productId in pids), true); + } + + var orders = []; + for (o in data) { + + //get product + var product = db.Product.manager.get(o.productId, false); + if (product.contract.id != c.id) throw "product " + o.productId + " is not in contract " + c.id; + + //find existing order + var uo = Lambda.find(exOrders, function(uo) return uo.id == o.id); + + //user2 + invert + var user2 : db.User = null; + var invert = false; + if ( o.userId2 != null ) { + user2 = db.User.manager.get(o.userId2,false); + if (user2 == null) throw t._("Unable to find user #::num::",{num:o.userId2}); + if (!user2.isMemberOf(product.contract.amap)) throw t._("::user:: is not part of this group",{user:user2}); + if (user.id == user2.id) throw t._("Both selected accounts must be different ones"); + + invert = o.invertSharedOrder; + } + + //record order + if (uo != null) { + //existing record + var o = OrderService.edit(uo, o.qt, o.paid , user2, invert); + if (o != null) orders.push(o); + }else { + //new record + var o = OrderService.make(user, o.qt , product, d == null ? null : d.id, o.paid , user2, invert); + if (o != null) orders.push(o); + } + } + + app.event(MakeOrder(orders)); + db.Operation.onOrderConfirm(orders); + + Sys.print(Json.stringify({success:true, orders:data})); + } + +} \ No newline at end of file diff --git a/src/controller/api/Product.hx b/src/controller/api/Product.hx new file mode 100644 index 0000000..6215de5 --- /dev/null +++ b/src/controller/api/Product.hx @@ -0,0 +1,20 @@ +package controller.api; +import Common; + +/** + * Product API + * @author fbarbut + */ +class Product extends Controller +{ + + public function doGet(args:{?contractId:db.Contract}) { + + if(args==null || args.contractId==null) throw "invalid params"; + + var out = {products:new Array()}; + for( p in args.contractId.getProducts(false)) out.products.push(p.infos(false,false)); + Sys.print(tink.Json.stringify(out)); + } + +} \ No newline at end of file diff --git a/src/controller/api/Shop.hx b/src/controller/api/Shop.hx new file mode 100644 index 0000000..10f3132 --- /dev/null +++ b/src/controller/api/Shop.hx @@ -0,0 +1,209 @@ +package controller.api; +import haxe.Json; +import tink.core.Error; +import Common; +import db.Amap; +import tools.ArrayTool; +using tools.ObjectListTool; +using Lambda; + +class Shop extends Controller +{ + /** + * @doc https://app.swaggerhub.com/apis/Cagette.net/Cagette.net/0.9.2#/shop/get_shop_categories + */ + public function doCategories(args:{date:String, place:db.Place}){ + + var out = new Array(); + var group = args.place.amap; + + if (group.flags.has(ShopCategoriesFromTaxonomy)){ + + //TAXO CATEGORIES + var taxoCategs = db.TxpCategory.manager.all(false); + for (txp in taxoCategs){ + + var c : CategoryInfo = {id:txp.id, name:txp.name, subcategories:[]}; + for (sc in txp.getSubCategories()){ + c.subcategories.push({id:sc.id,name:sc.name}); + } + out.push(c); + } + + }else{ + + //CUSTOM CATEGORIES + var catGroups = db.CategoryGroup.get(group); + for (cat in catGroups){ + + var c : CategoryInfo = {id:cat.id, name:cat.name, subcategories:[]}; + for ( sc in cat.getCategories() ){ + c.subcategories.push({id:sc.id,name:sc.name}); + } + out.push(c); + } + } + + Sys.print(Json.stringify({success:true,categories:out})); + } + + /** + * @doc https://app.swaggerhub.com/apis/Cagette.net/Cagette.net/0.9.2#/shop/get_shop_products + */ + public function doProducts(args:{date:String, place:db.Place, ?category:Int, ?subcategory:Int}){ + + if ( args == null || (args.category == null && args.subcategory == null)) throw "You should provide a category Id or a subcategory Id"; + //need some optimization : populating all thses objects eats memory, and we need only the ids ! + var products = getProducts(args.place, Date.fromString(args.date), args.place.amap.flags.has(ShopCategoriesFromTaxonomy)); + var pids = products.getIds(); + var categsFromTaxo = args.place.amap.flags.has(ShopCategoriesFromTaxonomy); + var catName = "undefined category"; + + if( categsFromTaxo ){ + + /** + * Use Taxonomy : + * - Category is TxpCatgory + * - Subcategory us TxpSubCategory + * - Products are linked to TxpProduct which belongs to a TxpCatgory and a TxpSubCategory + */ + var sql = ""; + + if (args.subcategory != null){ + + sql = 'SELECT p.* FROM Product p, TxpProduct tp, TxpSubCategory sc + WHERE p.txpProductId = tp.id + AND tp.subCategoryId = sc.id + AND sc.id = ${args.subcategory} + AND p.id IN ( ${pids.join(",")} )'; + + var cat = db.TxpSubCategory.manager.get(args.subcategory, false); + if (cat == null) throw 'unknown subcategory #' + args.subcategory; + catName = cat.name; + + }else if (args.category != null){ + + sql = 'SELECT p.* FROM Product p, TxpProduct tp, TxpCategory c + WHERE p.txpProductId = tp.id + AND tp.categoryId = c.id + AND c.id = ${args.category} + AND p.id IN ( ${pids.join(",")} )'; + + var cat = db.TxpCategory.manager.get(args.subcategory, false); + if (cat == null) throw 'unknown category #' + args.category; + catName = cat.name; + } + + products = db.Product.manager.unsafeObjects(sql,false).array(); + + }else{ + + /** + * Use custom categories : + * - Category is CategoryGroup + * - Subcategory is Category + * - Products are tagged with ProductCategory + */ + var sql = ""; + + if (args.subcategory != null){ + + sql = 'SELECT p.* FROM Product p, ProductCategory pc, Category c + WHERE pc.productId = p.id + AND pc.categoryId = c.id + AND c.id = ${args.subcategory} + AND p.id IN ( ${pids.join(",")} )'; + + var cat = db.Category.manager.get(args.subcategory, false); + if (cat == null) throw 'unknown subcategory #' + args.subcategory; + catName = cat.name; + + }else if (args.category != null){ + + sql = 'SELECT p.* FROM Product p, ProductCategory pc, Category c, CategoryGroup cg + WHERE pc.productId = p.id + AND pc.categoryId = c.id + AND c.categoryGroupId = cg.id + AND cg.id = ${args.category} + AND p.id IN ( ${pids.join(",")} )'; + + var cat = db.CategoryGroup.manager.get(args.category, false); + if (cat == null) throw 'unknown category #' + args.category; + catName = cat.name; + } + + products = db.Product.manager.unsafeObjects(sql,false).array(); + } + + //to productInfos + var products : Array = products.map( function(p) return p.infos(categsFromTaxo,true) ).array(); + + if (args.category != null){ + Sys.print(Json.stringify( {success:true, products:products, category:catName} )); + }else{ + Sys.print(Json.stringify( {success:true, products:products, subcategory:catName} )); + } + } + + + public function doInit(args:{place:db.Place, date:String}){ + + var out = {place:args.place.getInfos(), orderEndDates: new Array<{date:String,contracts:Array}>() }; + + //order end dates + var contracts = db.Contract.getActiveContracts(args.place.amap); + + for (c in Lambda.array(contracts)) { + if (c.type != db.Contract.TYPE_VARORDER) contracts.remove(c);//only varying orders + if (!c.isVisibleInShop()) contracts.remove(c); + } + + var date = Date.fromString(args.date); + var now = Date.now(); + var cids = Lambda.map(contracts, function(c) return c.id); + var d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); + var d2 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59); + + var distribs = db.Distribution.manager.search(($contractId in cids) && $orderStartDate <= now && $orderEndDate >= now && $date > d1 && $end < d2 && $place == args.place, false); + var distribByDate = ArrayTool.groupByDate(Lambda.array(distribs), "orderEndDate"); + out.orderEndDates = []; + for ( k in distribByDate.keys() ) { + out.orderEndDates.push( {date:k , contracts: distribByDate.get(k).map( function(x) return x.contract.name)} ); + } + + + Sys.print(Json.stringify( out )); + } + + private function getProductInfos(place:db.Place, date, ?categsFromTaxo = false):Array{ + var products = getProducts(place, date, categsFromTaxo); + return Lambda.array(Lambda.map(products, function(p) return p.infos(categsFromTaxo))); + } + + /** + * Get the available products list + */ + private function getProducts(place:db.Place,date,?categsFromTaxo=false):Array { + + var contracts = db.Contract.getActiveContracts(place.amap); + + for (c in Lambda.array(contracts)) { + if (c.type != db.Contract.TYPE_VARORDER) contracts.remove(c);//only varying orders + if (!c.isVisibleInShop()) contracts.remove(c); + } + + var now = Date.now(); + var cids = Lambda.map(contracts, function(c) return c.id); + var d1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0); + var d2 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59); + + var distribs = db.Distribution.manager.search(($contractId in cids) && $orderStartDate <= now && $orderEndDate >= now && $date > d1 && $end < d2 && $place == place, false); + + var cids = Lambda.map(distribs, function(d) return d.contract.id); + return Lambda.array(db.Product.manager.search(($contractId in cids) && $active==true, { orderBy:name }, false)); + + } + + + +} \ No newline at end of file diff --git a/src/controller/api/User.hx b/src/controller/api/User.hx new file mode 100644 index 0000000..336560a --- /dev/null +++ b/src/controller/api/User.hx @@ -0,0 +1,57 @@ +package controller.api; +import haxe.Json; +import tink.core.Error; +import Common; + +/** + * Public user API + */ +class User extends Controller +{ + + /** + * Login + */ + public function doLogin(){ + + //cleaning + var email = StringTools.trim(App.current.params.get("email")).toLowerCase(); + var pass = StringTools.trim(App.current.params.get("password")); + + service.UserService.login(email, pass); + + Sys.print(Json.stringify({success:true})); + } + + /** + * Register + */ + public function doRegister(){ + + //cleaning + var p = app.params; + var email = StringTools.trim(p.get("email")).toLowerCase(); + var pass = StringTools.trim(p.get("password")); + var firstName = StringTools.trim(p.get("firstName")); + var lastName = StringTools.trim(p.get("lastName")).toUpperCase(); + var phone = p.exists("phone") ? StringTools.trim(p.get("phone")) : null; + + service.UserService.register(firstName, lastName, email, phone, pass); + + Sys.print(Json.stringify({success:true})); + } + + + /** + * get users of current group + */ + @logged + function doGetFromGroup(){ + + if(!app.user.canAccessMembership()) throw new tink.core.Error(403,"Access forbidden"); + + var members:Array = service.UserService.getFromGroup(app.user.amap).map(function(m) return m.infos() ); + Sys.print(tink.Json.stringify({users:members})); + } + +} \ No newline at end of file diff --git a/src/db/Amap.hx b/src/db/Amap.hx new file mode 100755 index 0000000..ede3da6 --- /dev/null +++ b/src/db/Amap.hx @@ -0,0 +1,373 @@ +package db; +import sugoi.form.ListData.FormData; +import sys.db.Object; +import sys.db.Types; +import Common; + +enum AmapFlags { + HasMembership; //membership management + ShopMode; //shop mode / standard mode + HasPayments; //manage payments and user balance + ComputeMargin; //compute margin instead of percentage + CagetteNetwork; //register in cagette.net groups directory + ShopCategoriesFromTaxonomy; //the custom categories are not used anymore, use product taxonomy instead + HidePhone; //Hide manager phone on group public page + PhoneRequired; //phone number of members is required for this group + +} + +//user registration options +enum RegOption{ + Closed; + WaitingList; + Open; + Full; +} + +enum GroupType{ + Amap; //CSA / GASAP / AMAP + GroupedOrders; //groupements d'achat + ProducerDrive; //drive de producteurs + FarmShop; //vente à la ferme +} + + +/** + * AMAP + */ +class Amap extends Object +{ + public var id : SId; + public var name : SString<64>; + + @formPopulate("getMembersFormElementData") + @:relation(userId) + public var contact : SNull; + + public var txtIntro:SNull; //introduction de l'amap + public var txtHome:SNull; //texte accueil adhérents + public var txtDistrib:SNull; //sur liste d'emargement + + public var extUrl : SNull>; //lien sur logo du groupe + + public var membershipRenewalDate : SNull; + @hideInForms public var membershipPrice : SNull; + + @hideInForms + public var vatRates : SData>; + + public var flags:SFlags; + public var groupType:SNull>; + + @hideInForms @:relation(imageId) + public var image : SNull; + + @hideInForms public var cdate : SDateTime; + @hideInForms @:relation(placeId) public var mainPlace : SNull; + + public var regOption : SEnum; + + @hideInForms public var currency:SString<12>; //name or symbol. + @hideInForms public var currencyCode:SString<3>; //https://fr.wikipedia.org/wiki/ISO_4217 + + //payments + @hideInForms public var allowedPaymentsType:SNull>>; + @hideInForms public var checkOrder:SNull>; + @hideInForms public var IBAN:SNull>; + @hideInForms public var allowMoneyPotWithNegativeBalance:SNull; + + public function new() + { + super(); + flags = cast 0; + flags.set(CagetteNetwork); + flags.set(ShopMode); + vatRates = ["5,5%" => 5.5, "20%" => 20]; + cdate = Date.now(); + regOption = Open; + currency = "€"; + currencyCode = "EUR"; + checkOrder = ""; + + } + + /** + * find the most common delivery place + */ + public function getMainPlace() { + + if (mainPlace != null && Std.random(100) != 0) { + return mainPlace; + }else { + this.lock(); + + var places = getPlaces(); + + //just 1 place + if (places.length == 1) { + this.mainPlace = places.first(); + this.update(); + return this.mainPlace; + } + + //no places ! + if (places.length == 0) return null; + + var pids = Lambda.map(places, function(x) return x.id); + + var res = sys.db.Manager.cnx.request("select placeId,count(placeId) as top from Distribution where placeId IN ("+pids.join(",")+") group by placeId order by top desc").results(); + var res = res.first(); + var pid :Int = null; + + if (res == null){ + pid = this.getPlaces().first().id; + }else{ + pid = Std.parseInt(res.placeId); + } + + if (pid != 0 && pid != null) { + var p = db.Place.manager.get(pid, false); + this.mainPlace = p; + this.update(); + return p; + }else { + return null; + } + } + } + + /** + * Methods to get flags in templates + */ + + public function hasMembership():Bool { + return flags != null && flags.has(HasMembership); + } + + public function hasShopMode() { + return flags.has(ShopMode); + } + + public function canExposePhone() { + return !flags.has(HidePhone); + } + + public function hasPayments(){ + return flags != null && flags.has(HasPayments); + } + + public function hasTaxonomy(){ + return flags != null && flags.has(ShopCategoriesFromTaxonomy); + } + + public function hasPhoneRequired(){ + return flags != null && flags.has(PhoneRequired); + } + + public function getCategoryGroups() { + + //if (flags.has(ShopCategoriesFromTaxonomy)){ + //return Lambda.array( cast db.TxpCategory.manager.all(false) ); + //}else{ + //return Lambda.array( db.CategoryGroup.get(this) ); + //} + var t = sugoi.i18n.Locale.texts; + var categs = new Array<{id:Int,name:String,color:String,pinned:Bool,categs:Array}>(); + + if (this.flags.has(db.Amap.AmapFlags.ShopCategoriesFromTaxonomy)){ + + //TAXO CATEGORIES + var taxoCategs = db.TxpCategory.manager.all(false); + var c : Array = Lambda.array(Lambda.map( taxoCategs, function(c){return {id:c.id, name:c.name, subcategories:null}; })); + + categs.push({ + id:0, + name: t._("Product type"), + pinned:false, + color:"#583816", + categs: c + }); + + }else{ + + //CUSTOM CATEGORIES + var catGroups = db.CategoryGroup.get(this); + for ( cg in catGroups){ + var color = App.current.view.intToHex(db.CategoryGroup.COLORS[cg.color]); + categs.push({ + id:cg.id, + name:cg.name, + pinned:cg.pinned, + color:color, + categs: Lambda.array(Lambda.map( cg.getCategories(), function(c) return c.infos())) + }); + } + } + + return categs; + + } + + + //public function canAddMember():Bool { + // return isAboOk(true); + //} + + /** + * Renvoie la liste des contrats actifs + * @param large=false + */ + public function getActiveContracts(?large=false) { + return Contract.getActiveContracts(this, large, false); + } + + public function getContracts() { + return Contract.manager.search($amap == this, false); + } + + /** + * récupere les produits des contracts actifs + */ + public function getProducts() { + var contracts = db.Contract.getActiveContracts(App.current.user.amap,false,false); + return Product.manager.search( $contractId in Lambda.map(contracts, function(c) return c.id),{orderBy:name}, false); + } + + /** + * get next multi-deliveries + */ + public function getDeliveries(?limit=3){ + var out = new Map(); + for ( c in getActiveContracts()){ + for ( d in c.getDistribs(true,3)){ + out.set(d.getKey(), d); + } + } + + var out = Lambda.array(out); + out.sort(function(a, b){ + return Math.round(a.date.getTime() / 1000) - Math.round(b.date.getTime() / 1000); + }); + return out.slice(0,limit); + } + + public function getPlaces() { + return Place.manager.search($amap == this, false); + } + + public function getVendors() { + return Vendor.manager.search($amap == this, false); + } + + public function getMembers() { + return User.manager.unsafeObjects("Select u.* from User u,UserAmap ua where u.id=ua.userId and ua.amapId="+this.id+" order by u.lastName", false); + } + + public function getMembersNum():Int{ + return UserAmap.manager.count($amapId == this.id); + } + + public function getMembersFormElementData():FormData { + var m = getMembers(); + var out = []; + for (mm in m) { + + out.push({label:mm.getCoupleName() , value:mm.id}); + + } + return out; + } + + override public function toString() { + if (name != '' && name != null) { + return name; + }else { + return 'group#' + id; + } + } + + /** + * pour avoir le nom de la periode de cotisation pour une date donnée + */ + public function getPeriodName(?d:Date):String { + if (d == null) d = Date.now(); + var year = getMembershipYear(d); + return getPeriodNameFromYear(year); + } + + /** + * Si la date de renouvellement est en janvier ou février, on note la cotisation avec l'année en cours, + * sinon c'est "à cheval" donc on note la cotis avec l'année la plus ancienne (ex:2014 pour une cotis 2014-2015) + */ + public function getMembershipYear(?d:Date):Int { + if (d == null) d = Date.now(); + var year = d.getFullYear(); + var n = membershipRenewalDate; + if (n == null) n = Date.now(); + var renewalDate = new Date(year, n.getMonth(), n.getDate(), 0, 0, 0); + + //if (membershipRenewalDate.getMonth() <= 1) { + + if (d.getTime() < renewalDate.getTime()) { + return year-1; + }else { + return year; + } + + //}else { + //return year - 1; + //} + } + + /** + * à partir d'une année de cotis enregistrée, afficher le nom de la periode + * @param y + */ + public function getPeriodNameFromYear(y:Int):String { + if (membershipRenewalDate!=null && membershipRenewalDate.getMonth() <= 1) { + return Std.string(y); + }else { + return Std.string(y) + "-" + Std.string(y+1); + } + } + + override public function insert(){ + + if (txtHome == null){ + var t = sugoi.i18n.Locale.texts; + txtHome = t._("Welcome in the group of ::name::!\n You can look at the delivery planning or make a new order.",{name:this.name}); + } + + App.current.event(NewGroup(this,App.current.user)); + + super.insert(); + } + + public function getCurrency():String{ + + if (currency == ""){ + lock(); + currency = "€"; + currencyCode = "EUR"; + update(); + } + + return currency; + } + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Group name"), + "txtIntro" => t._("Short description"), + "txtHome" => t._("Homepage text"), + "txtDistrib" => t._("Text for distribution lists"), + "extUrl" => t._("Group website URL"), + "membershipRenewalDate" => t._("Membership renewal date"), + "flags" => t._("Options"), + "groupType" => t._("Group type"), + "regOption" => t._("Registration setting"), + "contact" => t._("Main contact"), + ]; + } +} diff --git a/src/db/Basket.hx b/src/db/Basket.hx new file mode 100644 index 0000000..1efcd89 --- /dev/null +++ b/src/db/Basket.hx @@ -0,0 +1,130 @@ +package db; +import sys.db.Object; +import sys.db.Types; + +/** + * Basket : represents the orders of a user for specific date + place + */ +//@:index(userId,placeId,ddate,unique) +class Basket extends Object +{ + public var id : SId; + public var cdate : SDateTime; //date when the order has been placed + public var num : SInt; //order number + + //TODO : link baskets to a multidistrib ID. + + //2018-07-21 fbarbut : we cannot use keys like this, because some distribution's place or date may change after orders are made. + //@:relation(userId) public var user : db.User; + //@:relation(placeId) public var place : db.Place; + //public var ddate : SDate; //date of the delivery + + public static var CACHE = new Map(); + + public function new(){ + super(); + cdate = Date.now(); + } + + public static function emptyCache(){ + CACHE = new Map(); + } + + public static function get(user:db.User, place:db.Place, date:Date, ?lock = false):db.Basket{ + + date = tools.DateTool.setHourMinute(date, 0, 0); + + //caching + // var k = user.id + "-" + place.id + "-" + date.toString().substr(0, 10); + // var b = CACHE.get(k); + var b = null; + // if (b == null){ + var md = MultiDistrib.get(date, place,db.Contract.TYPE_VARORDER); + var orders = md.getUserOrders(user); + + for( o in orders){ + if(o.basket!=null) { + b = o.basket; + break; + } + } + // CACHE.set(k, b); + // } + + return b; + } + + /** + * Get a Basket or create it if it doesn't exists. + * Also link existing orders to this basket + * @param user + * @param place + * @param date + */ + public static function getOrCreate(user, place, date){ + var b = get(user, place, date, true); + + date = tools.DateTool.setHourMinute(date, 0, 0); + + if (b == null){ + + //compute basket number + var md = MultiDistrib.get(date, place,db.Contract.TYPE_VARORDER); + + b = new Basket(); + b.num = md.getUsers().length + 1; + //TODO : should be more safe to do something like "b.num = MAX(num)+1 FROM Basket" + b.insert(); + + //try to find orders and link them to the basket + var dids = tools.ObjectListTool.getIds(md.distributions); + for ( o in db.UserContract.manager.search( ($distributionId in dids) && ($user == user), true)){ + o.basket = b; + o.update(); + } + } + return b; + } + + /** + * Get basket's orders + */ + public function getOrders(){ + return db.UserContract.manager.search($basket == this, false); + } + + /** + * Returns the list of operations which paid this basket + * @return + */ + public function getPayments():Iterable{ + + var op = getOrderOperation(false); + if (op == null){ + return []; + }else{ + return op.getRelatedPayments(); + } + } + + public function getOrderOperation(?onlyPending=true):db.Operation{ + + var order = getOrders().first(); + if(order==null) return null; + + var key = db.Distribution.makeKey(order.distribution.date, order.distribution.place); + return db.Operation.findVOrderTransactionFor(key, order.user, order.distribution.place.amap, onlyPending); + + } + + public function isValidated(){ + + var ordersPaid = Lambda.count(getOrders(), function(o) return !o.paid) == 0; + var op = getOrderOperation(false); + var orderOperationNotPending = op!=null ? op.pending == false : true; + var paymentOperationsNotPending = Lambda.count(getPayments(), function(p) return p.pending) == 0; + + return ordersPaid && orderOperationNotPending && paymentOperationsNotPending; + } + +} \ No newline at end of file diff --git a/src/db/Category.hx b/src/db/Category.hx new file mode 100755 index 0000000..6b94290 --- /dev/null +++ b/src/db/Category.hx @@ -0,0 +1,22 @@ +package db; +import sys.db.Types; +import Common; + +class Category extends sys.db.Object +{ + public var id : SId; + public var name :SString<128>; + + @:relation(categoryGroupId) public var categoryGroup:db.CategoryGroup; + + /** + * get category color in hexa + */ + public function getColor():String { + return App.current.view.intToHex(db.CategoryGroup.COLORS[categoryGroup.color]); + } + + public function infos():CategoryInfo{ + return {id:id, name:name, /*parent:categoryGroup.id, /*pinned:categoryGroup.pinned*/}; + } +} \ No newline at end of file diff --git a/src/db/CategoryGroup.hx b/src/db/CategoryGroup.hx new file mode 100755 index 0000000..8f7d4c2 --- /dev/null +++ b/src/db/CategoryGroup.hx @@ -0,0 +1,47 @@ +package db; +import sys.db.Types; + + +class CategoryGroup extends sys.db.Object +{ + public var id : SId; + public var name : SString<128>; + public var color : STinyInt; //color id + public var pinned : SBool; //if true, the products tagged with these categories will be pinned on top of the shop. + + @:relation(amapId) public var amap:db.Amap; + + @:skip public static var COLORS = [ + 0x7BAD1C, //vert clair + 0x007700, //vert foncé + 0x583816, //marron + 0xD97801, //orange carotte + 0xB1933D, //sable + 0xC91F25, //rouge + 0x6F0D2E, //vin + 0x616161, //gris + ]; + + public function new(){ + super(); + pinned = false; + color = 7; + } + + public function getCategories() { + return db.Category.manager.search($categoryGroup == this, false); + } + + public static function get(amap:db.Amap):List { + return manager.search($amap == amap, false); + } + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Category group name"), + "pinned" => t._("Pinned on top"), + "color" => t._("Color"), + ]; + } +} \ No newline at end of file diff --git a/src/db/Contract.hx b/src/db/Contract.hx new file mode 100755 index 0000000..e4d6421 --- /dev/null +++ b/src/db/Contract.hx @@ -0,0 +1,285 @@ +package db; +import sugoi.form.ListData.FormData; +import sys.db.Object; +import sys.db.Types; + +enum ContractFlags { + UsersCanOrder; //adhérents peuvent saisir eux meme la commande en ligne + StockManagement; //gestion des commandes + PercentageOnOrders; //calcul d'une commission supplémentaire + + //LogisticMgmt; //gestion logistique + //SubGroups; //sous groupes pour commandes groupées + //InviteFriends; //peut inviter des amis à participer à la commande + +} + +/** + * Contract + * + * un contrat réunissant pluseiurs produits d'un meme fournisseur + * qui sont livrés au meme endroit et meme moment; + * + */ +class Contract extends Object +{ + + public var id : SId; + public var name : SString<64>; + + //responsable + @formPopulate("populate") @:relation(userId) public var contact : SNull; + @formPopulate("populateVendor") @:relation(vendorId) public var vendor : Vendor; + + public var startDate:SDate; + public var endDate :SDate; + + public var description:SNull; + + @:relation(amapId) public var amap:Amap; + public var distributorNum:STinyInt; + public var flags : SFlags; + + public var percentageValue : SNull; //fees percentage + public var percentageName : SNull>; //fee name + + public var type : SInt; + @:skip public static var TYPE_CONSTORDERS = 0; //CSA contract + @:skip public static var TYPE_VARORDER = 1; //varying orders contract + + @:skip var cache_hasActiveDistribs : Bool; + + public function new() + { + super(); + flags = cast 0; + distributorNum = 0; + + } + + /** + * The products can be ordered currently ? + * + * @deprecated it depends on distributions + */ + public function isUserOrderAvailable():Bool { + + if (type == TYPE_CONSTORDERS ) { + return isVisibleInShop(); + }else { + + //if ( cache_hasActiveDistribs != null ) return cache_hasActiveDistribs; + + //for varying orders, we need to know if there are some available deliveries + var n = Date.now(); + var d = db.Distribution.manager.count( $orderStartDate <= n && $orderEndDate >= n && $contractId==this.id); + + //tmp : add the "old" deliveries which have a null orderStartDate + //d += db.Distribution.manager.count( $orderStartDate == null && $date > n && $contractId == this.id ); + + //cache_hasActiveDistribs = d > 0; + //return cache_hasActiveDistribs && isVisibleInShop(); + return d>0 && isVisibleInShop(); + } + + } + + /** + * The products can be displayed in a shop ? + */ + public function isVisibleInShop():Bool { + + //yes if the contract is active and the 'UsersCanOrder' flag is checked + var n = Date.now().getTime(); + return flags.has(UsersCanOrder) && n < this.endDate.getTime() && n > this.startDate.getTime(); + } + + /** + * is currently open to orders + */ + public function hasRunningOrders(){ + var now = Date.now(); + var n = now.getTime(); + + var contractOpen = flags.has(UsersCanOrder) && n < this.endDate.getTime() && n > this.startDate.getTime(); + var d = db.Distribution.manager.count( $orderStartDate <= now && $orderEndDate > now && $contractId==this.id); + + return contractOpen && d > 0; + } + + + public function hasPercentageOnOrders():Bool { + return flags.has(PercentageOnOrders) && percentageValue!=null && percentageValue!=0; + } + + public function hasStockManagement():Bool { + return flags.has(StockManagement); + } + + /** + * computes a 'percentage' fee or a 'margin' fee + * depending on the group settings + * + * @param basePrice + */ + public function computeFees(basePrice:Float) { + if (!hasPercentageOnOrders()) return 0.0; + + if (amap.flags.has(ComputeMargin)) { + //commercial margin + return (basePrice / ((100 - percentageValue) / 100)) - basePrice; + + }else { + //add a percentage + return percentageValue / 100 * basePrice; + } + } + + /** + * + * @param amap + * @param large = false Si true, montre les contrats terminés depuis moins d'un mois + * @param lock = false + */ + public static function getActiveContracts(amap:Amap,?large = false, ?lock = false) { + var now = Date.now(); + var end = Date.now(); + + if (large) { + end = DateTools.delta(end , -1000.0 * 60 * 60 * 24 * 30); + return db.Contract.manager.search($amap == amap && $endDate > end,{orderBy:-vendorId}, lock); + }else { + return db.Contract.manager.search($amap == amap && $endDate > now && $startDate < now,{orderBy:-vendorId}, lock); + } + } + + /** + * get products in this contract + * @param onlyActive = true + * @return + */ + public function getProducts(?onlyActive = true):List { + if (onlyActive) { + return Product.manager.search($contract==this && $active==true,{orderBy:name},false); + }else { + return Product.manager.search($contract==this,{orderBy:name},false); + } + } + + /** + * get a few products to display + * @param limit = 6 + */ + public function getProductsPreview(?limit = 6){ + return Product.manager.search($contract==this && $active==true,{limit:limit,orderBy:-id},false); + } + + + /** + * get users who have orders in this contract ( including user2 ) + * @return Array + */ + public function getUsers():Array { + var pids = getProducts().map(function(x) return x.id); + var ucs = UserContract.manager.search($productId in pids, false); + var ucs2 = []; + for( uc in ucs) { + ucs2.push(uc.user); + if(uc.user2!=null) ucs2.push(uc.user2); + } + + //comme un user peut avoir plusieurs produits au sein d'un contrat, il faut dédupliquer cette liste + var out = new Map(); + for (u in ucs2) { + out.set(u.id, u); + } + + return Lambda.array(out); + } + + /** + * Get all orders of this contract + * @param d A delivery is needed for varying orders contract + * @return + */ + public function getOrders(?d:db.Distribution):Array { + if (type == TYPE_VARORDER && d == null) throw "This type of contract must have a delivery"; + + //get product ids, some of the products may have been disabled but we keep the order + var pids = getProducts(false).map(function(x) return x.id); + var ucs = new List(); + if (type == TYPE_VARORDER) { + ucs = UserContract.manager.search( ($productId in pids) && $distribution==d,{orderBy:userId}, false); + }else { + ucs = UserContract.manager.search( ($productId in pids) ,{orderBy:userId}, false); + } + return Lambda.array(ucs); + } + + /** + * Get orders for a user. + * + * @param d + * @return + */ + public function getUserOrders(u:db.User,?d:db.Distribution):Array { + if (type == TYPE_VARORDER && d == null) throw "This type of contract must have a delivery"; + + var pids = getProducts(false).map(function(x) return x.id); + var ucs = new List(); + if (d != null && d.contract.type==db.Contract.TYPE_VARORDER) { + ucs = UserContract.manager.search( ($productId in pids) && $distribution==d && ($user==u || $user2==u ), false); + }else { + ucs = UserContract.manager.search( ($productId in pids) && ($user==u || $user2==u ),false); + } + return Lambda.array(ucs); + } + + public function getDistribs(excludeOld = true,?limit=999):List { + if (excludeOld) { + //still include deliveries which just expired in last 24h + return Distribution.manager.search($end > DateTools.delta(Date.now(), -1000.0 * 60 * 60 * 24) && $contract == this, { orderBy:date,limit:limit } ); + }else{ + return Distribution.manager.search( $contract == this, { orderBy:date,limit:limit } ); + } + } + + override function toString() { + return name+" du "+this.startDate.toString().substr(0,10)+" au "+this.endDate.toString().substr(0,10); + } + + public function populate() { + return App.current.user.amap.getMembersFormElementData(); + } + + /** + * get a vendor list as form data + * @return + */ + public function populateVendor():FormData{ + var vendors = Vendor.manager.search($amap == App.current.user.amap, false); + var out = []; + for (v in vendors) { + out.push({label:v.name, value:v.id }); + } + return out; + } + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Contract name"), + "startDate" => t._("Start date"), + "endDate" => t._("End date"), + "description" => t._("Description"), + "distributorNum" => t._("Number of required distributors (0 to 4)"), + "flags" => t._("Options"), + "percentageValue" => t._("Fees percentage"), + "percentageName" => t._("Fees label"), + "contact" => t._("Contact"), + "vendor" => t._("Farmer"), + ]; + } + + +} \ No newline at end of file diff --git a/src/db/Distribution.hx b/src/db/Distribution.hx new file mode 100755 index 0000000..7bf13eb --- /dev/null +++ b/src/db/Distribution.hx @@ -0,0 +1,271 @@ +package db; +import sugoi.form.ListData; +import sys.db.Object; +import sys.db.Types; + +/** + * Distrib + */ +class Distribution extends Object +{ + public var id : SId; + + @:relation(contractId) + public var contract : Contract; + + @formPopulate("placePopulate") + @:relation(placeId) + public var place : Place; + + //when orders are open + @hideInForms public var orderStartDate : SNull; + @hideInForms public var orderEndDate : SNull; + + //start and end date for delivery + public var date : SDateTime; + public var end : SDateTime; + + @:relation(distributionCycleId) public var distributionCycle : SNull; + + @formPopulate("populate") @:relation(distributor1Id) public var distributor1 : SNull; + @formPopulate("populate") @:relation(distributor2Id) public var distributor2 : SNull; + @formPopulate("populate") @:relation(distributor3Id) public var distributor3 : SNull; + @formPopulate("populate") @:relation(distributor4Id) public var distributor4 : SNull; + + @hideInForms public var validated :SBool; + + public static var DISTRIBUTION_VALIDATION_LIMIT = 10; + + public function new() + { + super(); + date = Date.now(); + end = DateTools.delta(date, 1000 * 60 * 90); + validated = false; + } + + /** + * get group members list as form data + */ + public function populate():FormData { + if(App.current.user!=null && App.current.user.getAmap()!=null){ + return App.current.user.getAmap().getMembersFormElementData(); + }else{ + return []; + } + + } + + /** + * get groups places as form data + * @return + */ + public function placePopulate():FormData { + var out = []; + var places = new List(); + if(this.contract!=null){ + //edit form + places = db.Place.manager.search($amapId == this.contract.amap.id, false); + }else{ + //insert form + places = db.Place.manager.search($amapId == App.current.user.amap.id, false); + } + + for (p in places) out.push( { label:p.name,value:p.id} ); + return out; + } + + public function hasEnoughDistributors() { + var n = contract.distributorNum; + + var d = 0; + if (distributor1 != null) d++; + if (distributor2 != null) d++; + if (distributor3 != null) d++; + if (distributor4 != null) d++; + + return (d >= n) ; + } + + public function isDistributor(u:User) { + if (u == null) return false; + return (distributor1!=null && u.id == distributor1.id) || + (distributor2!=null && u.id == distributor2.id) || + (distributor3!=null && u.id == distributor3.id) || + (distributor4!=null && u.id == distributor4.id); + } + + /** + * String to identify this distribution (debug use only) + */ + override public function toString() { + return "#" + id + " Delivery " + date.toString() + " of " + contract.name; + } + + public function getOrders() { + + if ( this.contract.type == Contract.TYPE_CONSTORDERS){ + var pids = db.Product.manager.search($contract == this.contract, false); + var pids = Lambda.map(pids, function(x) return x.id); + return UserContract.manager.search( ($productId in pids), false); + }else{ + return UserContract.manager.search($distribution == this, false); + } + } + + public function getUserOrders(user:db.User){ + if ( this.contract.type == Contract.TYPE_CONSTORDERS){ + var pids = db.Product.manager.search($contract == this.contract, false); + var pids = Lambda.map(pids, function(x) return x.id); + return UserContract.manager.search( (($productId in pids) && ($user==user || $user2==user) ), false); + }else{ + return UserContract.manager.search($distribution == this && $user==user, false); + } + + } + + public function getUsers():Iterable{ + + return tools.ObjectListTool.deduplicate( Lambda.map(getOrders(), function(x) return x.user ) ); + + } + + + /** + * Get TTC turnover for this distribution + */ + public function getTurnOver(){ + + var sql = "select SUM(quantity * productPrice) from UserContract where productId IN (" + tools.ObjectListTool.getIds(contract.getProducts()).join(",") +") "; + if (contract.type == db.Contract.TYPE_VARORDER) { + sql += " and distributionId=" + this.id; + } + + return sys.db.Manager.cnx.request(sql).getFloatResult(0); + } + + /** + * Get HT turnover for this distribution + */ + public function getHTTurnOver(){ + + var pids = tools.ObjectListTool.getIds(contract.getProducts(false)); + + var sql = "select SUM(uc.quantity * (p.price/(1+p.vat/100)) ) from UserContract uc, Product p "; + sql += "where uc.productId IN (" + pids.join(",") +") "; + sql += "and p.id=uc.productId "; + + if (contract.type == db.Contract.TYPE_VARORDER) { + sql += " and uc.distributionId=" + this.id; + } + + return sys.db.Manager.cnx.request(sql).getFloatResult(0); + } + + /** + * + */ + public function canOrderNow() { + + if (orderEndDate == null) { + return this.contract.isUserOrderAvailable(); + }else { + var n = Date.now().getTime(); + var f = this.contract.flags.has(UsersCanOrder); + + return f && n < orderEndDate.getTime() && n > orderStartDate.getTime(); + + } + } + + /** + * Get next multi-devliveries + * ( deliveries including more than one vendors ) + */ + /*public static function getNextMultiDeliveries(){ + + var out = new Map}>(); + return Lambda.array(manager.search($orderStartDate <= Date.now() && $orderEndDate >= Date.now() && $contract==contract,false)); + + var now = Date.now(); + + var contracts = Contract.getActiveContracts(App.current.user.amap); + var cids = Lambda.map(contracts, function(p) return p.id); + + //available deliveries + some of the next deliveries + + var distribs = db.Distribution.manager.search(($contractId in cids) && $orderEndDate >= now, { orderBy:date }, false); + var inOneMonth = DateTools.delta(now, 1000.0 * 60 * 60 * 24 * 30); + for (d in distribs) { + + var o = out.get(d.getKey()); + if (o == null) o = {place:d.place, startDate:d.date,active:null, endDate:d.end, products:[]}; + for ( p in d.contract.getProductsPreview(8)){ + if (o.products.length >= 8) break; + o.products.push( p.infos() ); + } + + if (d.orderStartDate.getTime() <= now.getTime() ){ + //order currently open + o.active = true; + }else if (d.orderStartDate.getTime() <= inOneMonth.getTime() ){ + //open soon + o.active = false; + }else{ + continue; + + } + + out.set(d.getKey(), o); + } + return Lambda.array(out); + }*/ + + override public function update(){ + this.end = new Date(this.date.getFullYear(), this.date.getMonth(), this.date.getDate(), this.end.getHours(), this.end.getMinutes(), 0); + super.update(); + } + + + + /** + * Get open to orders deliveries + * @param contract + */ + public static function getOpenToOrdersDeliveries(contract:db.Contract){ + + return Lambda.array(manager.search($orderStartDate <= Date.now() && $orderEndDate >= Date.now() && $contract==contract,{orderBy:date},false)); + + } + + + + /** + * Return a string like $placeId-$date. + * + * It's an ID representing all the distributions happening on that day at that place. + */ + public function getKey():String{ + return db.Distribution.makeKey(this.date, this.place); + } + + public static function makeKey(date, place){ + return date.toString().substr(0, 10) +"|"+Std.string(place.id); + } + + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "date" => t._("Date"), + "endDate" => t._("End hour"), + "place" => t._("Place"), + "distributor1" => t._("Distributor #1"), + "distributor2" => t._("Distributor #2"), + "distributor3" => t._("Distributor #3"), + "distributor4" => t._("Distributor #4"), + ]; + } + + +} \ No newline at end of file diff --git a/src/db/DistributionCycle.hx b/src/db/DistributionCycle.hx new file mode 100755 index 0000000..c3fa9ee --- /dev/null +++ b/src/db/DistributionCycle.hx @@ -0,0 +1,54 @@ +package db; +import sys.db.Object; +import sys.db.Types; +using tools.DateTool; + +enum CycleType { + Weekly; + Monthly; + BiWeekly; + TriWeekly; +} + +/** + * Distribution cycle + */ +class DistributionCycle extends Object +{ + public var id : SId; + @:relation(contractId) public var contract : Contract; + public var cycleType:SEnum; + public var startDate : SDate; //debut + public var endDate : SDate; //fin de la recurrence + public var startHour : SDateTime; + public var endHour : SDateTime; + public var daysBeforeOrderStart:SNull; + public var daysBeforeOrderEnd:SNull; + public var openingHour:SNull; + public var closingHour:SNull; + @formPopulate("placePopulate") @:relation(placeId) public var place : Place; + + public function new() { + super(); + } + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "cycleType" => t._("Fréquence"), + "startDate" => t._("Date de début"), + "endDate" => t._("Date de fin"), + "daysBeforeOrderStart" => t._("Ouverture de commande (nbre de jours avant distribution)"), + "daysBeforeOrderEnd" => t._("Fermeture de commande (nbre de jours avant distribution)"), + "place" => t._("Place"), + ]; + } + + public function placePopulate():Array<{label:String,value:Int}> { + var out = []; + if ( App.current.user == null || App.current.user.amap == null ) return out; + var places = db.Place.manager.search($amapId == App.current.user.amap.id, false); + for (p in places) out.push( { label:p.name,value :p.id } ); + return out; + } +} \ No newline at end of file diff --git a/src/db/Graph.hx b/src/db/Graph.hx new file mode 100644 index 0000000..9c236ae --- /dev/null +++ b/src/db/Graph.hx @@ -0,0 +1,45 @@ +package db; +import sys.db.Object; +import sys.db.Types; + + +/** + * Tool to Graph daily values + */ +@:id(key,date) +class Graph extends Object{ + + public var key:SString<128>; + public var date:SDate; + public var value:SFloat; + + /** + * record a value + */ + public static function record(key:String,value:Float,?date:Date){ + if(date==null) date = Date.now(); + date = new Date(date.getFullYear(),date.getMonth(),date.getDate(),0,0,0); + var o = manager.select($key==key && $date==date,true); + if(o == null){ + o = new Graph(); + o.date = date; + o.key = key; + o.value = value; + o.insert(); + }else{ + o.value = value; + o.update(); + } + return o; + } + + /** + * Get a list of records in a time frame + */ + public static function getRange(key:String,from:Date,to:Date):Array{ + return Lambda.array(manager.search($key==key && $date>=from && $date<=to, false)); + } + + + +} \ No newline at end of file diff --git a/src/db/Membership.hx b/src/db/Membership.hx new file mode 100755 index 0000000..4f8574a --- /dev/null +++ b/src/db/Membership.hx @@ -0,0 +1,24 @@ +package db; +import sys.db.Object; +import sys.db.Types; + +@:id(userId,amapId,year) +class Membership extends Object +{ + @:relation(amapId) + public var amap : Amap; + + @:relation(userId) + public var user : db.User; + + //année de cotisation (année la plus ancienne si a cheval sur deux années : 2014-2015 -> 2014) + public var year : Int; + public var date : SNull; + + public static function get(user:User, amap:Amap,year:Int, ?lock = false) { + return manager.select($user == user && $amap == amap && $year == year, lock); + } + + + +} \ No newline at end of file diff --git a/src/db/Message.hx b/src/db/Message.hx new file mode 100755 index 0000000..06eda73 --- /dev/null +++ b/src/db/Message.hx @@ -0,0 +1,28 @@ +package db; +import sys.db.Object; +import sys.db.Types; +import tink.core.Noise; +import tink.core.Outcome; +import sugoi.mail.IMailer; + + +/** + * Message sent from the message Section + */ +class Message extends Object +{ + + public var id : SId; + @:relation(amapId) public var amap : SNull; + @:relation(senderId) public var sender : SNull; + + public var recipientListId : SNull>; + public var recipients : SNull>>; + + public var title : SString<128>; + public var body : SText; + public var date : SDateTime; + + + +} \ No newline at end of file diff --git a/src/db/Operation.hx b/src/db/Operation.hx new file mode 100644 index 0000000..dfae03c --- /dev/null +++ b/src/db/Operation.hx @@ -0,0 +1,431 @@ +package db; +import sys.db.Types; +import tink.core.Error; + +enum OperationType{ + VOrder; //order on a varying order contract + COrder;//order on a constant order contract + Payment; + Membership; +} + +typedef PaymentInfos = {type:String, ?remoteOpId:Int, ?netAmount:Float}; +typedef VOrderInfos = {basketId:Int}; +typedef COrderInfos = {contractId:Int}; + + +/** + * Payment operation + * + * @author fbarbut + */ +class Operation extends sys.db.Object +{ + public var id : SId; + public var name : SString<128>; + public var amount : SFloat; + public var date : SDateTime; + public var type : SEnum; + public var data : SData; + @hideInForms @:relation(relationId) public var relation : SNull; //linked to another operation : ie a payment pays an order + + @formPopulate("populate") @:relation(userId) public var user : db.User; + @hideInForms @:relation(groupId) public var group : db.Amap; + + public var pending : SBool; //a pending payment means the payment has not been confirmed, a pending order means the ordre can still change before closing. + + public function getTypeIndex(){ + var e : OperationType = type; + return e.getIndex(); + } + + public function new(){ + super(); + pending = false; + } + + /** + * if operation is a payment, give the payment type + */ + public function getPaymentType():String{ + switch(type){ + case Payment: + var x : PaymentInfos = this.data; + if (data == null){ + return null; + }else{ + return x.type; + } + default : return null; + } + } + + /** + * get translated payment type name + */ + public function getPaymentTypeName(){ + var t = getPaymentType(); + if (t == null) return null; + for ( pt in service.PaymentService.getAllPaymentTypes()){ + if (pt.type == t) return pt.name; + } + return null; + } + + /** + * get payments linked to this order transaction + */ + public function getRelatedPayments(){ + return db.Operation.manager.search($relation == this, false); + } + + public function getOrderInfos(){ + return switch(type){ + case COrder, VOrder : this.data; + default : null; + } + } + + public function getPaymentInfos():PaymentInfos{ + return switch(type){ + case Payment : this.data; + default : null; + } + } + + public static function countOperations(user:db.User, group:db.Amap):Int{ + return manager.count($user == user && $group == group); + } + + /** + * get all user operations + * @param user - + * @param group - + * @param reverse=false - + */ + public static function getOperations(user:db.User, group:db.Amap,?reverse=false ){ + if(reverse) { + return manager.search($user == user && $group == group,{orderBy:-date},false); + } + return manager.search($user == user && $group == group,{orderBy:date},false); + } + + public static function getOperationsWithIndex(user:db.User, group:db.Amap,index:Int,limit:Int,?reverse=false ){ + if(reverse) { + return manager.search($user == user && $group == group, { limit:[index,limit], orderBy:-date }, false); + } + return manager.search($user == user && $group == group, { limit:[index,limit], orderBy:date },false); + } + + /*public static function getOrder_Operations(user:db.User, group:db.Amap,?limit=50 ){ + //return manager.search($user == user && $group == group && $type!=Payment,{orderBy:date},false); + //return manager.search($user == user && $group == group && $relation==null,{orderBy:date},false); + return manager.search($user == user && $group == group,{orderBy:date,limit:limit},false); + }*/ + + public static function getPaymentOperations(user:db.User, group:db.Amap,?limit=50){ + return manager.search($user == user && $group == group && $type == Payment, {orderBy:date,limit:limit},false); + } + + public static function getLastOperations(user:db.User, group:db.Amap, ?limit = 50){ + + var c = manager.count($user == user && $group == group); + c -= limit; + if (c < 0) c = 0; + return manager.search($user == user && $group == group,{orderBy:date,limit:[c,limit]},false); + } + + /** + * Create a new transaction + * @param orders + */ + public static function makeOrderOperation(orders: Array, ?basket:db.Basket){ + + if (orders == null) throw "orders are null"; + if (orders.length == 0) throw "no orders"; + if (orders[0].user == null ) throw "no user in order"; + var t = sugoi.i18n.Locale.texts; + + var _amount = 0.0; + for ( o in orders ){ + var t = o.quantity * o.productPrice; + _amount += t + t * (o.feesRate / 100); + } + + var contract = orders[0].product.contract; + + var op = new db.Operation(); + var user = orders[0].user; + var group = orders[0].product.contract.amap; + + if (contract.type == db.Contract.TYPE_CONSTORDERS){ + //Constant orders + var dNum = contract.getDistribs(false).length; + op.name = "" + contract.name + " (" + contract.vendor.name+") " + dNum + " " + t._("deliveries"); + op.amount = dNum * (0 - _amount); + op.date = Date.now(); + op.type = COrder; + var data : COrderInfos = {contractId:contract.id}; + op.data = data; + op.user = user; + op.group = group; + op.pending = true; + + }else{ + + if (basket == null) throw "varying contract orders should have a basket"; + + //varying orders + var date = App.current.view.dDate(orders[0].distribution.date); + op.name = t._("Order for ::date::",{date:date}); + op.amount = 0 - _amount; + op.date = Date.now(); + op.type = VOrder; + var data : VOrderInfos = {basketId:basket.id}; + op.data = data; + op.user = user; + op.group = group; + op.pending = true; + } + + op.insert(); + + service.PaymentService.updateUserBalance(op.user, op.group); + + return op; + } + + /** + * update an order operation + */ + public static function updateOrderOperation(op:db.Operation, orders: Array, ?basket:db.Basket){ + + op.lock(); + var t = sugoi.i18n.Locale.texts; + + var _amount = 0.0; + for ( o in orders ){ + var a = o.quantity * o.productPrice; + _amount += a + a * (o.feesRate / 100); + } + + var contract = orders[0].product.contract; + if (contract.type == db.Contract.TYPE_CONSTORDERS){ + //Constant orders + var dNum = contract.getDistribs(false).length; + op.name = "" + contract.name + " (" + contract.vendor.name+") "+ dNum + " " + t._("deliveries"); + op.amount = dNum * (0 - _amount); + }else{ + + if (basket == null) throw "varying contract orders should have a basket"; + op.amount = 0 - _amount; + } + + //op.date = Date.now(); //leave original date + op.update(); + service.PaymentService.updateUserBalance(op.user, op.group); + return op; + } + + /** + * Record a new payment operation + * @param type + * @param amount + * @param name + * @param relation + */ + public static function makePaymentOperation(user:db.User,group:db.Amap,type:String, amount:Float, name:String, ?relation:db.Operation ){ + + var t = new db.Operation(); + t.amount = Math.abs(amount); + t.date = Date.now(); + t.name = name; + t.group = group; + t.pending = true; + t.user = user; + t.type = Payment; + var data : PaymentInfos = {type:type}; + t.data = data; + if(relation!=null) t.relation = relation; + t.insert(); + + service.PaymentService.updateUserBalance(user, group); + + return t; + } + + /** + * when updating a (varying) order , we need to update the existing pending transaction + */ + public static function findVOrderTransactionFor(dkey:String, user:db.User, group:db.Amap,?onlyPending=true):db.Operation{ + + //throw 'find $dkey for user ${user.id} in group ${group.id} , onlyPending:$onlyPending'; + + var date = dkey.split("|")[0]; + var placeId = Std.parseInt(dkey.split("|")[1]); + var transactions = new List(); + if (onlyPending){ + transactions = manager.search($user == user && $group == group && $pending == true && $type==VOrder , {orderBy:-date}, true); + }else{ + transactions = manager.search($user == user && $group == group && $type==VOrder , {orderBy:-date}, true); + } + + //throw transactions; + + var place = db.Place.manager.get(placeId,false); + var date = Date.fromString(date); + var basket = db.Basket.get(user, place, date); + if(basket==null) throw new Error('No basket found for user #'+user.id+', place #'+place.id+', date '+date); + + for ( t in transactions){ + switch(t.type){ + case VOrder : + var data : VOrderInfos = t.data; + if ( data == null) continue; + if (data.basketId == basket.id) return t; + default : + continue; + } + } + + return null; + } + + /** + * when updating a constant order, we need to update the existing operation. + */ + public static function findCOrderTransactionFor(contract:db.Contract, user:db.User):db.Operation{ + + if (contract.type != db.Contract.TYPE_CONSTORDERS) throw "contract type should be TYPE_CONSTORDERS"; + + var transactions = manager.search($user == user && $group == contract.amap && $amount<=0 && $type==COrder, {orderBy:date,limit:100}, true); + + for ( t in transactions){ + + switch(t.type){ + + case COrder : + + //var id = Lambda.find(orders, function(x) return db.UserContract.manager.get(x, false) != null); + //if (id == null) { + ////all orders in this transaction dont exists anymore + //t.delete(); + //continue; + //}else{ + //for ( i in orders){ + //var order = db.UserContract.manager.get(i); + //if (order == null) continue; + //if (order.product.contract.id == contract.id) return t; + //} + //} + var data : COrderInfos = t.data; + if (data == null) continue; + if (data.contractId == contract.id) return t; + + + default : + continue; + } + } + + return null; + + } + + /** + * Create/update the needed order operations and returns the related operations + * @param orders + */ + public static function onOrderConfirm(orders:Array):Array{ + + if (orders.length == 0) return null; + if (orders[0] == null) return null; + + var out = []; + var user = orders[0].user; + var group = orders[0].product.contract.amap; + + //should not go further if group has not activated payements + if (user==null || !group.hasPayments()) return null; + + //we consider that ALL orders are from the same contract type : varying or constant + if (orders[0].product.contract.type == db.Contract.TYPE_VARORDER ){ + + // varying contract : + //manage separatly orders which occur at different dates + var ordersGroup = tools.ObjectListTool.groupOrdersByKey(orders); + + for ( orders in ordersGroup){ + + //find basket + var basket = null; + for ( o in orders) { + if (o.basket != null) { + basket = o.basket; + break; + } + } + + //get all orders for the same multidistrib, in order to update related operation. + var k = orders[0].distribution.getKey(); + var allOrders = db.UserContract.getUserOrdersByMultiDistrib(k, user, group); + + //existing transaction + var existing = db.Operation.findVOrderTransactionFor( k , user, group, false); + + var op; + if (existing != null){ + op = db.Operation.updateOrderOperation(existing,allOrders,basket); + }else{ + op = db.Operation.makeOrderOperation(allOrders,basket); + } + out.push(op); + + //delete order and payment operations if sum of orders qt is 0 + /*var sum = 0.0; + for ( o in allOrders) sum += o.quantity; + if ( sum == 0 ) { + existing.delete(); + op.delete(); + }*/ + } + + }else{ + + // constant contract + // create/update a transaction computed like $distribNumber * $price. + var contract = orders[0].product.contract; + + var existing = db.Operation.findCOrderTransactionFor( contract , user); + if (existing != null){ + out.push( db.Operation.updateOrderOperation(existing, contract.getUserOrders(user) ) ); + }else{ + out.push( db.Operation.makeOrderOperation( contract.getUserOrders(user) ) ); + } + } + + + + return out; + + } + + public function populate(){ + return App.current.user.getAmap().getMembersFormElementData(); + } + + /*public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Text"), + "date" => t._("Date"), + "endDate" => t._("End date"), + "place" => t._("Place"), + "distributor1" => t._("Distributor #1"), + "distributor2" => t._("Distributor #2"), + "distributor3" => t._("Distributor #3"), + "distributor4" => t._("Distributor #4"), + ]; + }*/ + +} \ No newline at end of file diff --git a/src/db/Place.hx b/src/db/Place.hx new file mode 100755 index 0000000..7e4c481 --- /dev/null +++ b/src/db/Place.hx @@ -0,0 +1,87 @@ +package db; +import sys.db.Object; +import sys.db.Types; +import Common; + +class Place extends Object +{ + + public var id : SId; + public var name : SString<64>; + public var address1:SNull>; + public var address2:SNull>; + public var zipCode:SString<32>; + public var city:SString<64>; + public var country:SNull>; + + //latitude/longitude + public var lat:SNull; + public var lng:SNull; + + @hideInForms @:relation(amapId) public var amap : Amap; + + public function new() + { + super(); + country = "France"; + } + + override function toString() { + if (name == null) { + return "place"; + }else { + return name; + } + } + + public function getFullAddress(){ + var str = new StringBuf(); + str.add(name+", \n"); + if (address1 != null) str.add(address1 + ", \n"); + if (address2 != null) str.add(address2 + ", \n"); + if (zipCode != null) str.add(zipCode); + if (city != null) str.add(" - "+city); + return str.toString(); + } + + /** + * get adress without 'name' field. + */ + public function getAddress(){ + var str = new StringBuf(); + if (address1 != null) str.add(address1 + ", \n"); + if (address2 != null) str.add(address2 + ", \n"); + if (zipCode != null) str.add(zipCode); + if (city != null) str.add(" - "+city); + if(country != null) str.add(", "+country); + return str.toString(); + } + + public static function getLabels():Map{ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Name"), + "address1" => t._("Address 1"), + "address2" => t._("Address 2"), + "zipCode" => t._("Zip code"), + "city" => t._("City"), + "country" => t._("Country"), + "lat" => t._("Latitude"), + "lng" => t._("Longitude"), + ]; + } + + public function getInfos():PlaceInfos{ + return { + id:id, + name:name, + address1:address1, + address2:address2, + zipCode:zipCode, + city:city, + latitude : lat, + longitude: lng + } + } + +} \ No newline at end of file diff --git a/src/db/Product.hx b/src/db/Product.hx new file mode 100755 index 0000000..811ee5e --- /dev/null +++ b/src/db/Product.hx @@ -0,0 +1,206 @@ +package db; +import sys.db.Object; +import sys.db.Types; +import Common; + +/** + * Product + */ +class Product extends Object +{ + public var id : SId; + public var name : SString<128>; + public var ref : SNull>; //référence produit + + @:relation(contractId) + public var contract : Contract; + + //prix TTC + public var price : SFloat; + public var vat : SFloat; + + public var desc : SNull; + public var stock : SNull; //if qantity can be float, stock should be float + + public var unitType : SNull>; // Kg / L / g / units + public var qt : SNull; + + public var organic : SBool; + public var variablePrice : Bool; //price can vary depending on weighting of the product + public var multiWeight : Bool; //product cannot be cumulated in one order record + + //https://docs.google.com/document/d/1IqHN8THT6zbKrLdHDClKZLWgKWeL0xw6cYOiFofw04I/edit + @hideInForms public var wholesale : Bool; //this product is a wholesale product (crate,bag,pallet) + @hideInForms public var retail : Bool; //this products is a fraction of a wholesale product + @hideInForms public var bulk : Bool; //(vrac) warn the customer this product is not packaged + public var hasFloatQt:SBool; //this product can be ordered in "float" quantity + + @hideInForms @:relation(imageId) public var image : SNull; + @:relation(txpProductId) public var txpProduct : SNull; //taxonomy + + + public var active : SBool; //if false, product disabled, not visible on front office + + + public function new() + { + super(); + //type = 0; + organic = false; + hasFloatQt = false; + active = true; + variablePrice = false; + multiWeight = false; + wholesale = false; + retail = false; + bulk = false; + vat = 5.5; + unitType = Unit.Piece; + qt = 1; + + } + + /** + * Returns product image URL + */ + public function getImage() { + if (image == null) { + if (txpProduct != null){ + return "/img/taxo/cat" + txpProduct.category.id + ".png"; + }else{ + return "/img/unknown.png"; + } + }else { + return App.current.view.file(image); + } + } + + public function getName(){ + + if (unitType != null && qt != null && qt != 0){ + return name +" " + qt + " " + App.current.view.unit(unitType); + }else{ + return name; + } + } + + override function toString() { + return getName(); + } + + /** + * get price including margins + */ + public function getPrice():Float{ + return price + contract.computeFees(price); + } + + /** + get product infos as an anonymous object + @param CategFromTaxo=false + @param populateCategories=tru + @return + **/ + public function infos(?CategFromTaxo=false,?populateCategories=true,?distribution:db.Distribution):ProductInfo { + var o :ProductInfo = { + id : id, + ref : ref, + name : name, + image : getImage(), + contractId : contract.id, + price : getPrice(), + vat : vat, + vatValue: (vat != 0 && vat != null) ? ( this.price - (this.price / (vat/100+1)) ) : null, + contractTax : contract.percentageValue, + contractTaxName : contract.percentageName, + desc : App.current.view.nl2br(desc), + categories : null, + subcategories:null, + orderable : this.contract.isUserOrderAvailable(), + stock : contract.hasStockManagement() ? this.stock : null, + hasFloatQt : hasFloatQt, + qt:qt, + unitType:unitType, + organic:organic, + variablePrice:variablePrice, + wholesale:wholesale, + active: active, + distributionId : distribution==null ? null : distribution.id, + } + + if(populateCategories){ + if (CategFromTaxo){ + o.categories = [txpProduct == null?null:txpProduct.category.id]; + o.subcategories = [txpProduct == null?null:txpProduct.subCategory.id]; + }else{ + o.categories = Lambda.array(Lambda.map(getCategories(), function(c) return c.id)); + o.subcategories = o.categories; + } + } + + App.current.event(ProductInfosEvent(o,distribution)); + + return o; + } + + /** + * customs categs + */ + public function getCategories() { + //"Types de produits" categGroup first + //var pc = db.ProductCategory.manager.search($productId == id, {orderBy:categoryId}, false); + return Lambda.map(db.ProductCategory.manager.search($productId == id,{orderBy:categoryId},false), function(x) return x.category); + } + + /** + * general categs + */ + public function getFullCategorization(){ + if (txpProduct == null) return []; + return txpProduct.getFullCategorization(); + } + + public static function getByRef(c:db.Contract, ref:String){ + var pids = tools.ObjectListTool.getIds(c.getProducts(false)); + return db.Product.manager.select($ref == ref && $id in pids, false); + } + + /** + * Fix values that will make mysql 5.7 scream + */ + function check(){ + if(this.vat==null) this.vat=0; + if(this.name.length>128) this.name = this.name.substr(0,128); + } + + override public function update(){ + check(); + super.update(); + } + + override public function insert(){ + check(); + super.insert(); + } + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Product name"), + "ref" => t._("Product ID"), + "price" => t._("Price"), + "desc" => t._("Description"), + "stock" => t._("Stock"), + "unitType" => t._("Base unit"), + "qt" => t._("Quantity"), + "hasFloatQt" => t._("Allow fractional quantities"), + "active" => t._("Available"), + "organic" => t._("Organic agriculture"), + "vat" => t._("VAT Rate"), + "variablePrice" => t._("Variable price based on weight"), + "multiWeight" => t._("Multi-weighing"), + ]; + } + +} + diff --git a/src/db/ProductCategory.hx b/src/db/ProductCategory.hx new file mode 100755 index 0000000..388f168 --- /dev/null +++ b/src/db/ProductCategory.hx @@ -0,0 +1,27 @@ +package db; +import sys.db.Types; + +@:id(productId,categoryId) +class ProductCategory extends sys.db.Object +{ + + @:relation(productId) + public var product : db.Product; + + @:relation(categoryId) + public var category : db.Category; + + public static function getOrCreate(product, category){ + + var x = db.ProductCategory.manager.select($product==product && $category==category,true); + if(x==null){ + x = new db.ProductCategory(); + x.product = product; + x.category = category; + x.insert(); + } + return x; + + } + +} \ No newline at end of file diff --git a/src/db/TxpCategory.hx b/src/db/TxpCategory.hx new file mode 100644 index 0000000..be3ecac --- /dev/null +++ b/src/db/TxpCategory.hx @@ -0,0 +1,23 @@ +package db; +import sys.db.Object; +import sys.db.Types; +/** + * ... + * @author fbarbut + */ +class TxpCategory extends Object +{ + + public var id : SId; + public var name : SString<128>; + + public function getSubCategories(){ + + return db.TxpSubCategory.manager.search($category == this, false); + + } + + override public function toString(){ + return '#$id-$name'; + } +} \ No newline at end of file diff --git a/src/db/TxpProduct.hx b/src/db/TxpProduct.hx new file mode 100644 index 0000000..40c540a --- /dev/null +++ b/src/db/TxpProduct.hx @@ -0,0 +1,27 @@ +package db; +import sys.db.Object; +import sys.db.Types; + +/** + * ... + * @author fbarbut + */ +class TxpProduct extends Object +{ + + public var id : SId; + public var name : SString<128>; + @:relation(categoryId) public var category : db.TxpCategory; + @:relation(subCategoryId) public var subCategory : db.TxpSubCategory; + + override public function toString(){ + return '#$id-$name'; + } + + public function getFullCategorization():Array{ + return [category.name, subCategory.name, name]; + + } + +} + diff --git a/src/db/TxpSubCategory.hx b/src/db/TxpSubCategory.hx new file mode 100644 index 0000000..10f6437 --- /dev/null +++ b/src/db/TxpSubCategory.hx @@ -0,0 +1,26 @@ +package db; +import sys.db.Object; +import sys.db.Types; +/** + * ... + * @author fbarbut + */ +class TxpSubCategory extends Object +{ + + public var id : SId; + public var name : SString<128>; + @:relation(categoryId) public var category:db.TxpCategory; + + + public function getProducts(){ + + return db.TxpProduct.manager.search($subCategory == this, false); + + + } + + override public function toString(){ + return '#$id-$name'; + } +} \ No newline at end of file diff --git a/src/db/User.hx b/src/db/User.hx new file mode 100755 index 0000000..74cff8f --- /dev/null +++ b/src/db/User.hx @@ -0,0 +1,574 @@ +package db; +import sys.db.Object; +import sys.db.Types; +import db.UserAmap; +import Common; + +enum UserFlags { + HasEmailNotif4h; //send notifications by mail 4h before + HasEmailNotif24h; //send notifications by mail 24h before + HasEmailNotifOuverture; //send notifications by mail on command open + //Tuto; //enable tutorials +} + +/** + * Site-wide right + */ +enum RightSite { + Admin; +} + +@:index(email,unique) +class User extends Object { + + public var id : SId; + public var lang : SString<2>; + @:skip public var name(get, set) : String; + public var pass : STinyText; + public var rights : SFlags; + + public var firstName:SString<32>; + public var lastName:SString<32>; + public var email : SString<64>; + public var phone:SNull>; + + public var firstName2:SNull>; + public var lastName2:SNull>; + public var email2 : SNull>; + public var phone2:SNull>; + + public var address1:SNull>; + public var address2:SNull>; + public var zipCode:SNull>; + public var city:SNull>; + + @:skip public var amap(get_amap, null) : Amap; + + public var cdate : SDate; //creation + public var ldate : SNull; //derniere connexion + + public var flags : SFlags; + + @hideInForms public var tutoState : SNull>; //tutorial state + + public var apiKey : SNull>; //private API key + + public function new() { + super(); + + //default values + cdate = Date.now(); + rights = sys.db.Types.SFlags.ofInt(0); + flags = sys.db.Types.SFlags.ofInt(0); + flags.set(HasEmailNotif24h); + flags.set(HasEmailNotifOuverture); + lang = "fr"; + pass = ""; + + } + + public override function toString() { + return getName()+" ["+id+"]"; + } + + public function isAdmin() { + return rights.has(Admin) || id==1; + } + + public static function login(user:db.User, email:String) { + + user.lock(); + user.ldate = Date.now(); + user.update(); + App.current.session.setUser(user); + if (App.current.session.data == null) App.current.session.data = {}; + //Who's connected, user1 or user2 ? + App.current.session.data.whichUser = (email == user.email) ? 0 : 1; + + } + + /** + * is this user the manager of the current group + */ + public function isAmapManager() { + var a = getAmap(); + if (a == null) return false; + var ua = getUserAmap(a); + if (ua == null) return false; + return ua.hasRight(Right.GroupAdmin); + } + + function getUserAmap(amap:db.Amap):db.UserAmap { + return db.UserAmap.get(this, amap); + } + + public function isFullyRegistred(){ + return pass != null && pass != ""; + } + + public function makeMemberOf(group:db.Amap){ + var ua = db.UserAmap.get(this, group); + if (ua == null) { + ua = new db.UserAmap(); + ua.user = this; + ua.amap = group; + ua.insert(); + } + return ua; + } + + + + /** + * Est ce que ce membre a la gestion de ce contrat + * si null, est ce qu'il a la gestion d'un des contrat, n'importe lequel (utilse pour afficher 'gestion contrat' dans la nav ) + * @param contract + */ + public function isContractManager(?contract:db.Contract ) { + if (isAdmin()) return true; + if (contract != null) { + return canManageContract(contract); + }else { + var ua = getUserAmap(getAmap()); + if (ua == null) return false; + if (ua.rights == null) return false; + for (r in ua.rights) { + switch(r) { + case Right.ContractAdmin(cid): + return true; + default: + } + } + return false; + } + } + + public function canManageAllContracts(){ + if (isAdmin()) return true; + var ua = getUserAmap(getAmap()); + if (ua == null) return false; + if (ua.rights == null) return false; + for (r in ua.rights) { + switch(r) { + case Right.ContractAdmin(cid): + if(cid==null) return true; + default: + } + } + return false; + } + + public function canAccessMessages():Bool { + var ua = getUserAmap(getAmap()); + if (ua == null) return false; + if (ua.hasRight(Right.Messages)) return true; + return false; + } + + public function canAccessMembership():Bool { + var ua = getUserAmap(getAmap()); + if (ua == null) return false; + if (ua.hasRight(Right.Membership)) return true; + return false; + } + + public function canManageContract(c:db.Contract):Bool { + var ua = getUserAmap(c.amap); + if (ua == null) return false; + if (ua.hasRight(Right.ContractAdmin())) return true; + if (ua.hasRight(Right.ContractAdmin(c.id))) return true; + return false; + } + + public function getContractManager(?lock=false) { + return Contract.manager.search($amap == amap && $contact == this, false); + } + + public function getName() { + return get_name(); + } + + public function get_name() { + return lastName + " " + firstName; + } + + public function getCoupleName() { + var n = lastName + " " + firstName; + if (lastName2 != null) { + n = n + " / " + lastName2 + " " + firstName2; + } + return n; + } + + public function set_name(name:String) { + var name = name.split(' '); + firstName = name[0]; + lastName = name[1]; + return firstName+" "+lastName; + } + + /** + * Encode a user password + * @param p + */ + public function setPass(p:String) { + if (p == null){ + this.pass = ""; + }else{ + this.pass = haxe.crypto.Md5.encode( App.config.get('key') + StringTools.trim(p)); + } + return this.pass; + } + + /** + * Renvoie les commandes actuelles du user + * @param _amap force une amap + * @param lock=false + */ + public function getOrders(?_amap:db.Amap,?lock = false):List { + var a = _amap == null ? getAmap() : _amap; + var c = a.getActiveContracts(true); + var cids = Lambda.map(c,function(m) return m.id); + var pids = Lambda.map(db.Product.manager.search($contractId in cids,false), function(x) return x.id); + var out = UserContract.manager.search(($userId == id || $userId2 == id) && $productId in pids, lock); + return out; + + } + + /** + * renvoie les commandes à partir d'une liste de contrats + */ + public function getOrdersFromContracts(c:Iterable):List { + var cids = Lambda.map(c,function(m) return m.id); + var pids = Lambda.map(db.Product.manager.search($contractId in cids,false), function(x) return x.id); + return UserContract.manager.search(($userId == id || $userId2 == id) && $productId in pids, false); + } + + /** + * renvoie les commandes de contrat variables à partir d'une distribution + */ + public function getOrdersFromDistrib(d:db.Distribution):List { + var pids = Lambda.map(db.Product.manager.search($contractId == d.contract.id, false), function(x) return x.id); + return UserContract.manager.search(($userId == id || $userId2 == id) && $distributionId==d.id && $productId in pids , false); + } + + public function get_amap():Amap { + return getAmap(); + } + + /** + * renvoie l'amap selectionnée par le user en cours + */ + public function getAmap() { + + if (App.current.user != null && id != App.current.user.id) throw "This function is valid only for the current user"; + if (App.current.session == null) return null; + if (App.current.session.data == null ) return null; + var a = App.current.session.data.amapId; + if (a == null) { + return null; + }else { + return Amap.manager.get(a,false); + } + } + + /** + * get groups this user belongs to + */ + public function getAmaps():List { + return Lambda.map(UserAmap.manager.search($user == this, false), function(o) return o.amap); + } + + public function isMemberOf(amap:Amap) { + return UserAmap.manager.select($user == this && $amapId == amap.id, false) != null; + } + + + /** + * Renvoie la liste des contrats dans lequel l'adherent a des commandes + * @param lock=false + * @return + */ + public function getContracts(?lock=false):Array { + var out = []; + var ucs = getOrders(lock); + for (uc in ucs) { + if (!Lambda.has(out, uc.product.contract)) { + out.push(uc.product.contract); + } + } + return out; + + } + + /** + * Merge fields of 2 users, then delete the second (u2) + * Be carefull : check before calling this function that u2 can be safely deleted ! + */ + public function merge(u2:db.User) { + + this.lock(); + u2.lock(); + + var m = function(a, b) { + return a == null || a=="" ? b : a; + } + + this.address1 = m(this.address1, u2.address1); + this.address2 = m(this.address2, u2.address2); + this.zipCode = m(this.zipCode, u2.zipCode); + this.city = m(this.city, u2.city); + + //find how to merge the 2 names in each account + if (this.email == u2.email) { + + this.firstName = m(this.firstName, u2.firstName); + this.lastName = m(this.lastName, u2.lastName); + this.phone = m(this.phone, u2.phone); + + } else if (this.email == u2.email2) { + + this.firstName = m(this.firstName, u2.firstName2); + this.lastName = m(this.lastName, u2.lastName2); + this.phone = m(this.phone, u2.phone2); + } + + if (this.email2 == u2.email) { + + this.firstName2 = m(this.firstName2, u2.firstName); + this.lastName2 = m(this.lastName2, u2.lastName); + this.phone2 = m(this.phone2, u2.phone); + + } else if (this.email2 == u2.email2) { + + this.firstName2 = m(this.firstName2, u2.firstName2); + this.lastName2 = m(this.lastName2, u2.lastName2); + this.phone2 = m(this.phone2, u2.phone2); + + } + + u2.delete(); + this.update(); + + } + + public static function getOrCreate(firstName:String, lastName:String, email:String):db.User{ + var u = db.User.manager.select($email == email || $email2 == email, true); + if (u == null){ + u = new db.User(); + u.firstName = firstName; + u.lastName = lastName; + u.email = email; + u.insert(); + } + return u; + } + + /** + * Search for similar users in the DB ( same firstName+lastName or same email ) + */ + public static function __getSimilar(firstName:String, lastName:String, email:String,?firstName2:String, ?lastName2:String, ?email2:String):List { + var out = new Array(); + out = Lambda.array(User.manager.search($firstName.like(firstName) && $lastName.like(lastName), false)); + out = out.concat(Lambda.array(User.manager.search($email.like(email), false))); + out = out.concat(Lambda.array(User.manager.search($firstName2.like(firstName) && $lastName2.like(lastName), false))); + out = out.concat(Lambda.array(User.manager.search($email2.like(email), false))); + + //recherche pour le deuxieme user + if (lastName2 != "" && lastName2 != null && firstName2 != "" && firstName2 != null) { + out = out.concat(Lambda.array(User.manager.search($firstName.like(firstName2) && $lastName.like(lastName2), false))); + out = out.concat(Lambda.array(User.manager.search($firstName2.like(firstName2) && $lastName2.like(lastName2), false))); + } + if (email2 != null && email2 != "") { + out = out.concat(Lambda.array(User.manager.search($email.like(email2), false))); + out = out.concat(Lambda.array(User.manager.search($email2.like(email2), false))); + } + + //dedouble + var x = new Map(); + for ( oo in out) { + x.set(oo.id, oo); + } + return Lambda.list(x); + } + + /** + * Search for similar users in the DB ( same email ) + */ + public static function getSameEmail(email:String, ?email2:String){ + + var out = new Array(); + out = out.concat(Lambda.array(User.manager.search($email.like(email), false))); + out = out.concat(Lambda.array(User.manager.search($email2.like(email), false))); + if (email2 != null && email2 != "") { + out = out.concat(Lambda.array(User.manager.search($email.like(email2), false))); + out = out.concat(Lambda.array(User.manager.search($email2.like(email2), false))); + } + return Lambda.list(out); + } + + /** + * Get users with no contracts + **/ + public static function getUsers_NoContracts(?index:Int,?limit:Int):List { + var productsIds = App.current.user.getAmap().getProducts().map(function(x) return x.id); + var uc = UserContract.manager.search($productId in productsIds, false); + var uc2 = uc.map(function(x) return x.user.id); //liste des userId avec un contrat dans cette amap + + // J. Le Clerc - BUGFIX#1 Ne pas oublier les contrats alternés + for (u in uc) { + if (u.user2 != null) { + uc2.add(u.user2.id); + } + } + + if (uc2.length > 0){ + //les gens qui sont dans cette amap et qui n'ont pas de contrat de cette amap + var ua = db.UserAmap.manager.unsafeObjects("select * from UserAmap where amapId=" + App.current.user.getAmap().id +" and userId NOT IN(" + uc2.join(",") + ")", false); + return Lambda.map(ua, function(x) return x.user); + }else{ + return App.current.user.amap.getMembers(); + } + + } + + /** + * User with contracts + */ + public static function getUsers_Contracts(?index:Int,?limit:Int):List { + var productsIds = App.current.user.getAmap().getProducts().map(function(x) return x.id); + if (productsIds.length == 0) return new List(); + return db.User.manager.unsafeObjects("select u.* from User u, UserContract uc where uc.productId IN(" + productsIds.join(",") + ") AND (uc.userId=u.id OR uc.userId2=u.id) group by u.id ORDER BY u.lastName", false); + } + + + public static function getUsers_NoMembership(?index:Int,?limit:Int):List { + var ua = new List(); + if (index == null && limit == null) { + ua = db.UserAmap.manager.search($amap == App.current.user.amap, false); + }else { + ua = db.UserAmap.manager.search($amap == App.current.user.amap,{limit:[index,limit]}, false); + } + + for (u in Lambda.array(ua)) { + if (u.hasValidMembership()) ua.remove(u); + } + + return Lambda.map(ua, function(x) return x.user); + } + + public static function getUsers_NewUsers(?index:Int, ?limit:Int):List { + + var uas = db.UserAmap.manager.search($amap == App.current.user.amap, false); + var ids = Lambda.map(uas, function(x) return x.user.id); + if (index == null && limit == null) { + return db.User.manager.search($pass == "" && ($id in ids), {orderBy:lastName} ,false); + }else { + return db.User.manager.search($pass == "" && ($id in ids), {limit:[index, limit] ,orderBy:lastName} , false); + } + + } + + public function sendInvitation(group:db.Amap) { + + var t = sugoi.i18n.Locale.texts; + + if (isFullyRegistred()) throw t._("This user cannot receive an invitation"); + + /*var group : db.Amap = null; + + if (App.current.user == null) { + group = this.getAmaps().first(); + }else { + //prend l'amap du user connecté qui a lancé l'invite. + group = App.current.user.amap; + }*/ + + //store token + var k = sugoi.db.Session.generateId(); + sugoi.db.Cache.set("validation" + k, this.id, 60 * 60 * 24 * 30); //expire in 1 month + + var e = new sugoi.mail.Mail(); + if (group != null){ + e.setSubject(t._("Invitation")+" "+group.name); + }else{ + e.setSubject(t._("Invitation Cagette.net")); + } + + e.addRecipient(this.email,this.getName()); + e.setSender(App.config.get("default_email"),t._("Cagette.net")); + + var html = App.current.processTemplate("mail/invitation.mtt", { + email:email, + email2:email2, + groupName:(group == null?null:group.name), + name:firstName, + k:k + } ); + e.setHtmlBody(html); + + App.sendMail(e); + } + + /** + * cleaning before saving + */ + override public function insert() { + clean(); + super.insert(); + } + + override public function update() { + clean(); + super.update(); + } + + function clean() { + + //emails + this.email = this.email.toLowerCase(); + if (this.email2 != null) this.email2 = this.email2.toLowerCase(); + + //lastname + if (this.lastName != null) this.lastName = this.lastName.toUpperCase(); + if (this.lastName2 != null) this.lastName2 = this.lastName2.toUpperCase(); + + if(pass==null) pass=""; + } + + public function infos():UserInfo{ + return { + id:id, + name : getName(), + email : email + }; + } + + /** + * get form labels + */ + public static function getLabels():Map{ + var t = sugoi.i18n.Locale.texts; + return [ + "firstName" => t._("First name"), + "lastName" => t._("Last name"), + "email" => t._("Email"), + "phone" => t._("Phone"), + "firstName2"=> t._("Partner first name"), + "lastName2" => t._("Partner last name"), + "email2" => t._("Partner email"), + "phone2" => t._("Partner phone"), + "lang" => t._("Language"), + "address1" => t._("Address 1"), + "address2" => t._("Address 2"), + "zipCode" => t._("Zip code"), + "city" => t._("City"), + "rights" => t._("Rights"), + "cdate" => t._("Registration date"), + "flags" => t._("Options"), + "pass" => t._("Password"), + ]; + } + + +} diff --git a/src/db/UserAmap.hx b/src/db/UserAmap.hx new file mode 100755 index 0000000..68490f7 --- /dev/null +++ b/src/db/UserAmap.hx @@ -0,0 +1,128 @@ +package db; +import sys.db.Object; +import sys.db.Types; + +enum Right{ + GroupAdmin; //can manage whole group + ContractAdmin(?cid:Int); //can manage one or all contracts + Membership; //can manage group members + Messages; //can send messages +} + +/** + * A user which is member of a group + */ +@:id(userId,amapId) +class UserAmap extends Object +{ + @:relation(amapId) public var amap : db.Amap; + @:relation(userId) public var user : db.User; + public var rights : SNull>>; + public var balance : SFloat; //account balance in group currency + static var CACHE = new Map(); + + + public function new(){ + super(); + balance = 0; + } + + public static function get(user:User, amap:Amap, ?lock = false) { + if (user == null || amap == null) return null; + //SPOD doesnt cache elements with double primary key, so lets do it manually + var c = CACHE.get(user.id + "-" + amap.id); + if (c == null) { + c = manager.select($user == user && $amap == amap, true/*lock*/); + CACHE.set(user.id + "-" + amap.id,c); + } + return c; + } + + public static function getOrCreate(user:db.User, group:db.Amap){ + var ua = get(user, group); + if ( ua == null){ + ua = new UserAmap(); + ua.user = user; + ua.amap = group; + ua.insert(); + } + return ua; + } + + /** + * give right and update DB + */ + public function giveRight(r:Right) { + + if (hasRight(r)) return; + if (rights == null) rights = []; + lock(); + rights.push(r); + update(); + } + + /** + * remove right and update DB + */ + public function removeRight(r:Right) { + if (rights == null) return; + var newrights = []; + for (right in rights.copy()) { + if ( !Type.enumEq(right, r) ) { + newrights.push(right); + } + } + rights = newrights; + update(); + } + + public function hasRight(r:Right):Bool { + if (this.user.isAdmin()) return true; + if (rights == null) return false; + for ( right in rights) { + if ( Type.enumEq(r,right) ) return true; + } + return false; + } + + public function getRightName(r:Right):String { + var t = sugoi.i18n.Locale.texts; + return switch(r) { + case Right.GroupAdmin : t._("Administrator"); + case Right.Messages : t._("Messaging"); + case Right.Membership : t._("Members management"); + case Right.ContractAdmin(cid) : + if (cid == null) { + t._("Management of all contracts"); + }else { + var c = db.Contract.manager.get(cid); + if(c==null) { + t._("Deleted contract"); + }else{ + t._("::name:: contract management",{name:c.name}); + } + } + } + } + + public function hasValidMembership():Bool { + + if (amap.membershipRenewalDate == null) return false; + var cotis = db.Membership.get(this.user, this.amap, this.amap.getMembershipYear()); + return cotis != null; + } + + override public function insert(){ + App.current.event(NewMember(this.user,this.amap)); + super.insert(); + } + + public function getPaymentOperations(){ + return db.Operation.getPaymentOperations(user, amap); + } + + public function getLastOperations(limit){ + return db.Operation.getLastOperations(user, amap, limit); + } + +} \ No newline at end of file diff --git a/src/db/UserContract.hx b/src/db/UserContract.hx new file mode 100755 index 0000000..df13e8c --- /dev/null +++ b/src/db/UserContract.hx @@ -0,0 +1,200 @@ +package db; +import sys.db.Object; +import sys.db.Types; +import Common; + +/** + * a product order + */ +class UserContract extends Object +{ + public var id : SId; + + @formPopulate("populate") @:relation(userId) + public var user : User; + + //shared order + @formPopulate("populate") @:relation(userId2) + public var user2 : SNull; + + public var quantity : SFloat; + + @formPopulate("populateProducts") @:relation(productId) + public var product : Product; + + //store price (1 unit price) and fees (percentage not amount ) rate when the order is done + public var productPrice : SFloat; + public var feesRate : SInt; //fees in percentage + + public var paid : SBool; + + //if not null : varying orders + @:relation(distributionId) + public var distribution:SNull; + + + @:relation(basketId) + public var basket:SNull; + + public var date : SDateTime; + public var flags : SFlags; + + public function new() + { + super(); + quantity = 1; + paid = false; + date = Date.now(); + flags = cast 0; + feesRate = 0; + } + + public function populate() { + return App.current.user.getAmap().getMembersFormElementData(); + } + + + /** + * For shared alternated orders in AMAP contracts + * @param distrib + * @return false -> user , true -> user2 + */ + public function getWhosTurn(distrib:Distribution) { + if (distrib == null) throw "distribution is null"; + if (user2 == null) throw "this contract is not shared"; + + //compter le nbre de distrib pour ce contrat + var c = Distribution.manager.count( $contract == product.contract && $date >= product.contract.startDate && $date <= distrib.date); + var r = c % 2 == 0; + if (flags.has(InvertSharedOrder)){ + return !r; + }else{ + return r; + } + } + + override public function toString() { + if(product==null) return quantity +"x produit inconnu"; + return quantity + "x" + product.name; + } + + public function hasInvertSharedOrder():Bool{ + return flags.has(InvertSharedOrder); + } + + /** + * On peut modifier si ça na pas deja été payé + commande encore ouvertes + */ + public function canModify():Bool { + + var can = false; + if (this.product.contract.type == db.Contract.TYPE_VARORDER) { + + if (this.distribution.orderStartDate == null) { + can = true; + }else { + var n = Date.now().getTime(); + can = n > this.distribution.orderStartDate.getTime() && n < this.distribution.orderEndDate.getTime(); + } + }else { + can = this.product.contract.isUserOrderAvailable(); + } + + return can && !this.paid; + } + + /** + * get users orders for a distribution + */ + public static function getOrders(contract:db.Contract, ?distribution:db.Distribution, ?csv = false):Array{ + var view = App.current.view; + var orders = new Array(); + if (contract.type == db.Contract.TYPE_VARORDER ) { + orders = contract.getOrders(distribution); + }else { + orders = contract.getOrders(); + } + + var orders = service.OrderService.prepare(orders); + + //CSV export + if (csv) { + var t = sugoi.i18n.Locale.texts; + var data = new Array(); + + for (o in orders) { + data.push( { + "name":o.userName, + "productName":o.productName, + "price":view.formatNum(o.productPrice), + "quantity":view.formatNum(o.quantity), + "fees":view.formatNum(o.fees), + "total":view.formatNum(o.total), + "paid":o.paid + }); + } + + var exportName = ""; + if (distribution != null){ + exportName = contract.amap.name + " - " + t._("Delivery ::contractName:: ", {contractName:contract.name}) + distribution.date.toString().substr(0, 10); + }else{ + exportName = contract.amap.name + " - " + contract.name; + } + + sugoi.tools.Csv.printCsvDataFromObjects(data, ["name", "productName", "price", "quantity", "fees", "total", "paid"], exportName+" - " + t._("Per member")); + return null; + }else{ + return orders; + } + + } + + /** + * Get the orders (varying orders) of a user for a multidistrib ( distribs with same day + same place ) + * + * @param distribKey "$date|$placeId" + */ + public static function getUserOrdersByMultiDistrib(distribKey:String, user:db.User,group:db.Amap):Array{ + //var contracts = db.Contract.getActiveContracts(group); + var contracts = db.Contract.manager.search($amap == group, false); //should be able to edit a contract which is closed + for ( c in Lambda.array(contracts)){ + if (c.type == db.Contract.TYPE_CONSTORDERS){ + contracts.remove(c); //only varying orders + } + } + + var cids = Lambda.map(contracts, function(x) return x.id); + var start = Date.fromString(distribKey.split("|")[0] + " 00:00:00"); + var end = Date.fromString(distribKey.split("|")[0] + " 23:59:00"); + var ds = db.Distribution.manager.search($date > start && $date < end && ($contractId in cids), false); + var out = []; + for (d in ds) { + out = out.concat(Lambda.array(user.getOrdersFromDistrib(d))); + } + + return out; + } + + public static function getTotalPrice(tmpOrder:OrderInSession){ + var t = 0.0; + for ( o in tmpOrder.products){ + var p = db.Product.manager.get(o.productId, false); + t += o.quantity * p.getPrice(); + } + return t; + } + + function check(){ + if(quantity==null) quantity == 1; + } + + override function update(){ + check(); + super.update(); + } + + override function insert(){ + check(); + super.insert(); + } +} diff --git a/src/db/Vendor.hx b/src/db/Vendor.hx new file mode 100755 index 0000000..b4fe19a --- /dev/null +++ b/src/db/Vendor.hx @@ -0,0 +1,61 @@ +package db; +import sys.db.Object; +import sys.db.Types; +/** + * Vendor (producteur) + */ +class Vendor extends Object +{ + public var id : SId; + public var name : SString<128>; + + public var email : STinyText; + public var phone:SNull>; + + public var address1:SNull>; + public var address2:SNull>; + public var zipCode:SString<32>; + public var city:SString<25>; + + public var desc : SNull; + + public var linkText:SNull>; + public var linkUrl:SNull>; + + @hideInForms @:relation(imageId) public var image : SNull; + + @:relation(amapId) public var amap : SNull; + + public function new() + { + super(); + var t = sugoi.i18n.Locale.texts; + name = t._("Supplier"); + } + + override function toString() { + return name; + } + + public function getActiveContracts(){ + var now = Date.now(); + return db.Contract.manager.search($vendor == this && $startDate < now && $endDate > now ,{orderBy:-startDate}, false); + } + + public static function getLabels(){ + var t = sugoi.i18n.Locale.texts; + return [ + "name" => t._("Supplier name"), + "desc" => t._("Description"), + "email" => t._("Email"), + "phone" => t._("Phone"), + "address1" => t._("Address 1"), + "address2" => t._("Address 2"), + "zipCode" => t._("Zip code"), + "city" => t._("City"), + "linkText" => t._("Link text"), + "linkUrl" => t._("Link URL"), + ]; + } + +} \ No newline at end of file diff --git a/src/db/WaitingList.hx b/src/db/WaitingList.hx new file mode 100644 index 0000000..03c121e --- /dev/null +++ b/src/db/WaitingList.hx @@ -0,0 +1,20 @@ +package db; +import sys.db.Object; +import sys.db.Types; + + +@:id(userId,amapId) +class WaitingList extends Object +{ + @:relation(amapId) public var group : Amap; + @:relation(userId) public var user : db.User; + public var date : SDateTime; + public var message : SText; + + public function new(){ + super(); + message = ""; + date = Date.now(); + } + +} \ No newline at end of file diff --git a/src/form/ColorRadioGroup.hx b/src/form/ColorRadioGroup.hx new file mode 100755 index 0000000..10e882b --- /dev/null +++ b/src/form/ColorRadioGroup.hx @@ -0,0 +1,46 @@ +package form; +import sugoi.form.elements.RadioGroup; +import Common; + +class ColorRadioGroup extends RadioGroup +{ + + public function new(name:String, label:String,selected:String) + { + var data = []; + var i = 0; + for (c in db.CategoryGroup.COLORS) { + data.push( { value:Std.string(c), label:Std.string(i) } ); + i++; + } + + super(name, label, data, selected, "1", false, true); + } + + override public function render():String + { + var s = ""; + var n = parentForm.name + "_" +name; + + var c = 0; + if (data != null) + { + for (row in data) + { + + var radio = "\n"; + + var img = "
    "; + + s += ""; + + c++; + } + } + + return s; + } + + + +} \ No newline at end of file diff --git a/src/form/ProductTypeRadioGroup.hx b/src/form/ProductTypeRadioGroup.hx new file mode 100755 index 0000000..9cf5775 --- /dev/null +++ b/src/form/ProductTypeRadioGroup.hx @@ -0,0 +1,50 @@ +package form; +import db.Product; +import sugoi.form.elements.RadioGroup; +import db.Product; +import Common; +/** + * list des types de produits avec image + * @author + */ +class ProductTypeRadioGroup extends RadioGroup +{ + + public function new(name:String, label:String,selected:String) + { + var data = []; + var i = 0; + for (e in Type.getEnumConstructs(ProductType)) { + data.push( { key:Std.string(i), value:Std.string(e) } ); + i++; + } + + super(name, label, data, selected, "1", false, true); + } + + override public function render():String + { + var s = ""; + var n = parentForm.name + "_" +name; + + var c = 0; + if (data != null) + { + for (row in data) + { + + + var radio = "\n"; + var e = Type.createEnumIndex(ProductType, Std.parseInt(row.key)); + var img = ""; + + s += ""; + + c++; + } + } + + return s; + } + +} \ No newline at end of file diff --git a/src/form/UnitQuantity.hx b/src/form/UnitQuantity.hx new file mode 100644 index 0000000..5df1d83 --- /dev/null +++ b/src/form/UnitQuantity.hx @@ -0,0 +1,27 @@ +package form; +import Common; +/** + * ... + * @author fbarbut + */ +class UnitQuantity extends sugoi.form.elements.FloatInput +{ + + var unit : Unit; + + public function new(name, label, value, ?required=false,unit){ + super(name, label, value, required); + this.unit = unit; + } + + override function render(){ + + var r = super.render(); + return ' +
    + '+r+' +
    '+App.current.view.unit(unit)+'
    +
    '; + } + +} \ No newline at end of file diff --git a/src/payment/Cash.hx b/src/payment/Cash.hx new file mode 100644 index 0000000..1543054 --- /dev/null +++ b/src/payment/Cash.hx @@ -0,0 +1,22 @@ +package payment; + +/** + * ... + * @author fbarbut + */ +class Cash extends payment.Payment +{ + + public static var TYPE = "cash"; + + public function new() + { + var t = sugoi.i18n.Locale.texts; + this.type = TYPE; + this.icon = ''; + this.name = t._("Cash"); + //this.desc = t._("Pay by cash at product distribution"); + this.link = "/transaction/cash"; + } + +} \ No newline at end of file diff --git a/src/payment/Check.hx b/src/payment/Check.hx new file mode 100644 index 0000000..08af25d --- /dev/null +++ b/src/payment/Check.hx @@ -0,0 +1,24 @@ +package payment; + +/** + * ... + * @author fbarbut + */ +class Check extends payment.Payment +{ + public static var TYPE = "check"; + + public function new() + { + var t = sugoi.i18n.Locale.texts; + this.type = TYPE; + this.icon = ''; + this.name = t._("Check"); + this.link = "/transaction/check"; + } + + public static function getCode(date:Date,place:db.Place,user:db.User){ + return date.toString().substr(0, 10) + "-" + place.id + "-" + user.id; + } + +} \ No newline at end of file diff --git a/src/payment/MoneyPot.hx b/src/payment/MoneyPot.hx new file mode 100644 index 0000000..8f89953 --- /dev/null +++ b/src/payment/MoneyPot.hx @@ -0,0 +1,22 @@ +package payment; + +/** + * ... + * @author fbarbut + */ +class MoneyPot extends payment.Payment +{ + + public static var TYPE = "moneypot"; + + public function new() + { + var t = sugoi.i18n.Locale.texts; + this.type = TYPE; + this.icon = ''; + this.name = t._("Money pot"); + //this.desc = t._("Pay by cash at product distribution"); + this.link = "/transaction/moneypot"; + } + +} \ No newline at end of file diff --git a/src/payment/Payment.hx b/src/payment/Payment.hx new file mode 100644 index 0000000..e523c42 --- /dev/null +++ b/src/payment/Payment.hx @@ -0,0 +1,15 @@ +package payment; + +/** + * ... + * @author fbarbut + */ +class Payment +{ + + public var type:String; + public var icon:String; + public var name:String; //translated name + public var link:String; + +} \ No newline at end of file diff --git a/src/payment/Transfer.hx b/src/payment/Transfer.hx new file mode 100644 index 0000000..589d59d --- /dev/null +++ b/src/payment/Transfer.hx @@ -0,0 +1,21 @@ +package payment; + +/** + * ... + * @author fbarbut + */ +class Transfer extends payment.Payment +{ + + public static var TYPE = "transfer"; + + public function new() + { + var t = sugoi.i18n.Locale.texts; + this.type = TYPE; + this.icon = ''; + this.name = t._("Bank transfer"); + this.link = "/transaction/transfer"; + } + +} \ No newline at end of file diff --git a/src/plugin/Tutorial.hx b/src/plugin/Tutorial.hx new file mode 100644 index 0000000..3aa1827 --- /dev/null +++ b/src/plugin/Tutorial.hx @@ -0,0 +1,109 @@ +package plugin; +import Common; +import sugoi.plugin.*; + +/** + * Tutorials internal plugin + * + * Its listening to events to know if + * the user can go to the next step of his tutorial + * + * User's tutorial state is stored in user.tutoState. + * The JS widget is triggered in view.init() + * + * + */ +class Tutorial extends PlugIn implements IPlugIn +{ + public function new() { + super(); + App.current.eventDispatcher.add(onEvent); + } + + /** + * catch events + */ + public function onEvent(e:Event) { + //no need to continue if tutos are disabled + if ( App.current.user==null || App.current.user.tutoState==null ) return; + + switch(e) { + + //a page is displayed + case Page(uri): + + var ts = App.current.user.tutoState; + if (ts == null) return; + var tuto = TutoDatas.get(ts.name); + var step = tuto.steps[ts.step]; + if (step == null ) return; + + //skip steps if action is "next" + while (step.action.equals(TANext)) { + if (ts.step + 1 >= tuto.steps.length) break; + ts.step++; + step = tuto.steps[ts.step]; + } + + //trace( "tuto active, listening to step="+ts.step ); + switch(step.action) { + case TAPage(_uri): + + //trace(""+_uri+"="+uri+" ?"); + if (match(_uri, uri)) { + + //trace("ok"); + var u = App.current.user; + u.lock(); + + if ( ts.step+1 >= tuto.steps.length) { + //tuto finished + u.tutoState = null; + }else { + //next step + u.tutoState.step = ts.step+1; + } + + u.update(); + } + default: + + } + + + default : + } + } + + /** + * to know if the current uri matches with the tuto step uri + */ + public static function match(pattern:String, uri:String):Bool { + + if (pattern.indexOf("*") > -1) { + + //the url contains a wildcard + + // ~/http:\/\/(\w+).com/ match urls like http://anything.com + var s = pattern; + s = StringTools.replace(s, "/", "\\/"); //escape antislashes + s = StringTools.replace(s, "*", "(\\w+)"); + var e = new EReg(s,""); + + return e.match(uri); + + }else { + + return pattern == uri; + } + + } + + public static function all() { + TutoDatas.get("intro");//just to init translation + return TutoDatas.TUTOS; + } + + + +} \ No newline at end of file diff --git a/src/service/DistributionService.hx b/src/service/DistributionService.hx new file mode 100644 index 0000000..1810134 --- /dev/null +++ b/src/service/DistributionService.hx @@ -0,0 +1,423 @@ +package service; +import Common; + +/** + * Distribution Service + * @author web-wizard + */ +class DistributionService +{ + /** + * It will update the name of the operation with the new number of distributions + * as well as the total amount + * @param contract - + */ + public static function updateAmapContractOperations(contract:db.Contract) { + + //Update all operations for this amap contract when payments are enabled + if (contract.type == db.Contract.TYPE_CONSTORDERS && contract.amap.hasPayments()) { + //Get all the users who have orders for this contract + var users = contract.getUsers(); + for ( user in users ){ + + //Get the one operation for this amap contract and user + var operation = db.Operation.findCOrderTransactionFor(contract, user); + + if (operation != null) + { + //Get all the orders for this contract and user + var orders = contract.getUserOrders(user); + //Update this operation with the new number of distributions, this will affect the name of the operation + //as well as the total amount to pay + db.Operation.updateOrderOperation(operation, orders); + } + + } + } + } + + + /** + * checks if dates are correct and if that there is no other distribution in the same time range + * and for the same contract and place + * @param d + */ + public static function checkDistrib(d:db.Distribution) { + + //Generic variables + var t = sugoi.i18n.Locale.texts; + var view = App.current.view; + + var c = d.contract; + + var distribs1; + var distribs2; + var distribs3; + //We are checking that there is no existing distribution with an overlapping time frame for the same place and contract + if (d.id == null) { //We need to check there the id as $id != null doesn't work in the manager.search + //Looking for existing distributions with a time range overlapping the start of the about to be created distribution + distribs1 = db.Distribution.manager.search($contract == c && $place == d.place && $date <= d.date && $end >= d.date, false); + //Looking for existing distributions with a time range overlapping the end of the about to be created distribution + distribs2 = db.Distribution.manager.search($contract == c && $place == d.place && $date <= d.end && $end >= d.end, false); + //Looking for existing distributions with a time range included in the time range of the about to be created distribution + distribs3 = db.Distribution.manager.search($contract == c && $place == d.place && $date >= d.date && $end <= d.end, false); + } + else { + //Looking for existing distributions with a time range overlapping the start of the about to be created distribution + distribs1 = db.Distribution.manager.search($contract == c && $place == d.place && $date <= d.date && $end >= d.date && $id != d.id, false); + //Looking for existing distributions with a time range overlapping the end of the about to be created distribution + distribs2 = db.Distribution.manager.search($contract == c && $place == d.place && $date <= d.end && $end >= d.end && $id != d.id, false); + //Looking for existing distributions with a time range included in the time range of the about to be created distribution + distribs3 = db.Distribution.manager.search($contract == c && $place == d.place && $date >= d.date && $end <= d.end && $id != d.id, false); + } + + if (distribs1.length != 0 || distribs2.length != 0 || distribs3.length != 0) { + throw new tink.core.Error(t._("There is already a distribution at this place overlapping with the time range you've selected.")); + } + + if (d.date.getTime() > c.endDate.getTime()) throw new tink.core.Error(t._("The date of the delivery must be prior to the end of the contract (::contractEndDate::)", {contractEndDate:view.hDate(c.endDate)})); + if (d.date.getTime() < c.startDate.getTime()) throw new tink.core.Error(t._("The date of the delivery must be after the begining of the contract (::contractBeginDate::)", {contractBeginDate:view.hDate(c.startDate)})); + + if (c.type == db.Contract.TYPE_VARORDER ) { + if (d.date.getTime() < d.orderEndDate.getTime() ) throw new tink.core.Error(t._("The distribution start date must be set after the orders end date.")); + if (d.orderStartDate.getTime() > d.orderEndDate.getTime() ) throw new tink.core.Error(t._("The orders end date must be set after the orders start date !")); + } + + } + + /** + * Creates a new distribution and prevents distribution overlapping and other checks + * @param contract - + * @param date - + * @param end - + * @param placeId - + * @param distributor1Id - + * @param distributor2Id - + * @param distributor3Id - + * @param distributor4Id - + * @param orderStartDate - + * @param orderEndDate - + * @param distributionCycle - + * @param dispatchEvent=true - + * @return db.Distribution + */ + public static function create(contract:db.Contract,date:Date,end:Date,placeId:Int, + ?distributor1Id:Int,?distributor2Id:Int,?distributor3Id:Int,?distributor4Id:Int, + ?orderStartDate:Date,?orderEndDate:Date,?distributionCycle:db.DistributionCycle,?dispatchEvent=true):db.Distribution { + + var d = new db.Distribution(); + d.contract = contract; + d.date = date; + d.place = db.Place.manager.get(placeId); + d.distributionCycle = distributionCycle; + if(distributor1Id != null) d.distributor1 = db.User.manager.get(distributor1Id); + if(distributor2Id != null) d.distributor2 = db.User.manager.get(distributor2Id); + if(distributor3Id != null) d.distributor3 = db.User.manager.get(distributor3Id); + if(distributor4Id != null) d.distributor4 = db.User.manager.get(distributor4Id); + if(contract.type==db.Contract.TYPE_VARORDER){ + d.orderStartDate = orderStartDate; + d.orderEndDate = orderEndDate; + } + + if (end == null) { + d.end = DateTools.delta(d.date, 1000.0 * 60 * 60); + } + else { + d.end = new Date(d.date.getFullYear(), d.date.getMonth(), d.date.getDate(), end.getHours(), end.getMinutes(), 0); + } + + DistributionService.checkDistrib(d); + + if(distributionCycle == null && dispatchEvent) { + var e :Event = NewDistrib(d); + App.current.event(e); + } + + if (d.date == null){ + return d; + } else { + d.insert(); + + //In case this is a distrib for an amap contract with payments enabled, it will update all the operations + //names and amounts with the new number of distribs + updateAmapContractOperations(d.contract); + + return d; + } + } + + /** + * Modifies an existing distribution and prevents distribution overlapping and other checks + * @param d - + * @param date - + * @param end - + * @param placeId - + * @param distributor1Id - + * @param distributor2Id - + * @param distributor3Id - + * @param distributor4Id - + * @param orderStartDate - + * @param orderEndDate - + * @return db.Distribution + */ + public static function edit(d:db.Distribution,date:Date,end:Date,placeId:Int, + distributor1Id:Int,distributor2Id:Int,distributor3Id:Int,distributor4Id:Int, + orderStartDate:Date,orderEndDate:Date,?dispatchEvent=true):db.Distribution { + + //We prevent others from modifying it + d.lock(); + + d.date = date; + d.place = db.Place.manager.get(placeId); + d.distributor1 = db.User.manager.get(distributor1Id); + d.distributor2 = db.User.manager.get(distributor2Id); + d.distributor3 = db.User.manager.get(distributor3Id); + d.distributor4 = db.User.manager.get(distributor4Id); + if(d.contract.type==db.Contract.TYPE_VARORDER){ + d.orderStartDate = orderStartDate; + d.orderEndDate = orderEndDate; + } + + if (end == null) { + d.end = DateTools.delta(d.date, 1000.0 * 60 * 60); + } + else { + d.end = new Date(d.date.getFullYear(), d.date.getMonth(), d.date.getDate(), end.getHours(), end.getMinutes(), 0); + } + + DistributionService.checkDistrib(d); + + if(dispatchEvent) App.current.event(EditDistrib(d)); + + if (d.date == null){ + return d; + } else { + d.update(); + return d; + } + } + + + /** + * Checks whether there are orders with non zero quantity for non amap contract + * @param d - + * @return Bool + */ + public static function canDelete(d:db.Distribution):Bool{ + + if (d.contract.type == db.Contract.TYPE_CONSTORDERS) return true; + + var quantity = 0.0; + for ( order in d.getOrders() ){ + quantity += order.quantity; + } + return quantity == 0.0; + + } + + + /** + * Deletes a distribution + * @param d - + * @param dispatchEvent=true - + */ + public static function delete(d:db.Distribution,?dispatchEvent=true) { + var t = sugoi.i18n.Locale.texts; + if ( !canDelete(d) ) { + throw new tink.core.Error(t._("Deletion non possible: some orders are saved for this delivery.")); + } + + var contract = d.contract; + d.lock(); + if (dispatchEvent) { + App.current.event(DeleteDistrib(d)); + } + d.delete(); + //In case this is a distrib for an amap contract with payments enabled, it will update all the operations + //names and amounts with the new number of distribs + updateAmapContractOperations(contract); + + } + + /** + * Computes the correct start and end dates + * @param dc - + * @param datePointer - + */ + public static function getDates(dc:db.DistributionCycle, datePointer:Date) { + + //Generic variables + var t = sugoi.i18n.Locale.texts; + + var startDate = new Date(datePointer.getFullYear(),datePointer.getMonth(),datePointer.getDate(),dc.startHour.getHours(),dc.startHour.getMinutes(),0); + var orderStartDate = null; + var orderEndDate = null; + if (dc.contract.type == db.Contract.TYPE_VARORDER){ + + if (dc.daysBeforeOrderEnd == null || dc.daysBeforeOrderStart == null) throw new tink.core.Error(t._("daysBeforeOrderEnd or daysBeforeOrderStart is null")); + + var a = DateTools.delta(startDate, -1.0 * dc.daysBeforeOrderStart * 1000 * 60 * 60 * 24); + var h : Date = dc.openingHour; + orderStartDate = new Date(a.getFullYear(), a.getMonth(), a.getDate(), h.getHours(), h.getMinutes(), 0); + + var a = DateTools.delta(startDate, -1.0 * dc.daysBeforeOrderEnd * 1000 * 60 * 60 * 24); + var h : Date = dc.closingHour; + orderEndDate = new Date(a.getFullYear(), a.getMonth(), a.getDate(), h.getHours(), h.getMinutes(), 0); + } + return { date: startDate, orderStartDate: orderStartDate, orderEndDate: orderEndDate }; + } + + /** + * Creates all the distributions from the first date + * @param dc - + */ + public static function createCycleDistribs(dc:db.DistributionCycle) { + + //Generic variables + var t = sugoi.i18n.Locale.texts; + + //switch end date to 23:59 to avoid the last distribution to be skipped + dc.endDate = tools.DateTool.setHourMinute(dc.endDate,23,59); + + if (dc.id == null) throw new tink.core.Error(t._("this distributionCycle has not been recorded")); + + //iterations + //For first distrib + var datePointer = new Date(dc.startDate.getFullYear(), dc.startDate.getMonth(), dc.startDate.getDate(), 12, 0, 0); + //why hour=12 ? because if we set hour to 0, it switch to 23 (-1) or 1 (+1) on daylight saving time switch dates, thus changing the day!! + var firstDistribDate = new Date(datePointer.getFullYear(),datePointer.getMonth(),datePointer.getDate(),dc.startHour.getHours(),dc.startHour.getMinutes(),0); + for(i in 0...100) { + + if(i != 0){ //All distribs except the first one + var oneDay = 1000 * 60 * 60 * 24.0; + switch(dc.cycleType) { + case Weekly : + datePointer = DateTools.delta(datePointer, oneDay * 7.0); + App.log("on ajoute "+(oneDay * 7.0)+"millisec pour ajouter 7 jours"); + App.log('pointer : $datePointer'); + + case BiWeekly : + datePointer = DateTools.delta(datePointer, oneDay * 14.0); + + case TriWeekly : + datePointer = DateTools.delta(datePointer, oneDay * 21.0); + + case Monthly : + var n = tools.DateTool.getWhichNthDayOfMonth(firstDistribDate); + var dayOfWeek = firstDistribDate.getDay(); + var nextMonth = new Date(datePointer.getFullYear(), datePointer.getMonth() + 1, 1, 0, 0, 0); + datePointer = tools.DateTool.getNthDayOfMonth(nextMonth.getFullYear(), nextMonth.getMonth(), dayOfWeek, n); + if (datePointer.getMonth() != nextMonth.getMonth()) { + datePointer = tools.DateTool.getNthDayOfMonth(nextMonth.getFullYear(), nextMonth.getMonth(), dayOfWeek, n - 1); + } + } + } + + //stop if cycle end is reached + if (datePointer.getTime() > dc.endDate.getTime()) { + break; + } + + var dates = getDates(dc, datePointer); + + service.DistributionService.create(dc.contract,dates.date, + new Date(datePointer.getFullYear(),datePointer.getMonth(),datePointer.getDate(),dc.endHour.getHours(),dc.endHour.getMinutes(),0), + dc.place.id,null,null,null,null,dates.orderStartDate,dates.orderEndDate,dc); + + } + } + + /** + * Deletes all distributions which are part of this cycle + * @param cycle - + */ + public static function deleteCycleDistribs(cycle:db.DistributionCycle){ + + cycle.lock(); + + //Generic variables + var t = sugoi.i18n.Locale.texts; + var view = App.current.view; + + var children = db.Distribution.manager.search($distributionCycle == cycle, true); + var messages = []; + if(children.length != 0) { + + var contract = Lambda.array(children)[0].contract; + for ( d in children ){ + + if (d.contract.type == db.Contract.TYPE_VARORDER && !canDelete(d) ){ + messages.push(t._("The delivery of the ::delivDate:: could not be deleted because it has orders.", {delivDate:view.hDate(d.date)})); + }else{ + d.delete(); + } + } + + //In case this is a distrib cycle for an amap contract with payments enabled, it will update all the operations + //names and amounts with the new number of distribs + updateAmapContractOperations(contract); + + } + cycle.delete(); + + return messages; + } + + /** + * Creates a new distribution cycle and prevents distribution overlapping and other checks + * @param contract - + * @param cycleType - + * @param startDate - + * @param endDate - + * @param startHour - + * @param endHour - + * @param daysBeforeOrderStart - + * @param daysBeforeOrderEnd - + * @param openingHour - + * @param closingHour - + * @param placeId - + * @param dispatchEvent=true - + * @return db.DistributionCycle + */ + public static function createCycle(contract:db.Contract,cycleType:db.DistributionCycle.CycleType,startDate:Date,endDate:Date, + startHour:Date,endHour:Date,daysBeforeOrderStart:Null,daysBeforeOrderEnd:Null,openingHour:Null,closingHour:Null, + placeId:Int,?dispatchEvent=true):db.DistributionCycle { + + //Generic variables + var t = sugoi.i18n.Locale.texts; + var view = App.current.view; + + var dc = new db.DistributionCycle(); + dc.contract = contract; + dc.cycleType = cycleType; + dc.startDate = startDate; + dc.endDate = endDate; + dc.startHour = startHour; + dc.endHour = endHour; + dc.place = db.Place.manager.get(placeId); + + if (contract.type == db.Contract.TYPE_VARORDER) { + dc.daysBeforeOrderStart = daysBeforeOrderStart; + dc.daysBeforeOrderEnd = daysBeforeOrderEnd; + dc.openingHour = openingHour; + dc.closingHour = closingHour; + } + + if (dc.endDate.getTime() > contract.endDate.getTime()) { + throw new tink.core.Error(t._("The date of the delivery must be prior to the end of the contract (::contractEndDate::)", {contractEndDate:view.hDate(contract.endDate)})); + } + if (dc.startDate.getTime() < contract.startDate.getTime()) { + throw new tink.core.Error(t._("The date of the delivery must be after the begining of the contract (::contractBeginDate::)", {contractBeginDate:view.hDate(contract.startDate)})); + } + + if(dispatchEvent){ + App.current.event(NewDistribCycle(dc)); + } + + dc.insert(); + createCycleDistribs(dc); + + return dc; + + } +} \ No newline at end of file diff --git a/src/service/GroupService.hx b/src/service/GroupService.hx new file mode 100644 index 0000000..036a68c --- /dev/null +++ b/src/service/GroupService.hx @@ -0,0 +1,81 @@ +package service; +using Lambda; +using tools.ObjectListTool; +/** + * Service for managing groups + * @author fbarbut + */ +class GroupService +{ + + public function new() + { + + } + + /** + * copy groups. + * @param g + */ + public static function duplicateGroup(g:db.Amap){ + + var d = new db.Amap(); + d.name = g.name+" (copy)"; + d.contact = g.contact; + d.txtIntro = g.txtIntro; + d.txtHome = g.txtHome; + d.txtDistrib = g.txtDistrib; + d.extUrl = g.extUrl; + d.membershipRenewalDate = g.membershipRenewalDate; + d.membershipPrice = g.membershipPrice; + d.vatRates = g.vatRates; + d.flags = g.flags; + d.groupType = g.groupType; + d.image = g.image; + d.regOption = g.regOption; + d.currency = g.currency; + d.currencyCode = g.currencyCode; + d.allowedPaymentsType = g.allowedPaymentsType; + d.checkOrder = g.checkOrder; + d.IBAN = g.IBAN; + d.insert(); + + //put me in the group + + return d; + } + + static function duplicateCategories(from:db.Amap,to:db.Amap){ + + } + + static function duplicateContract(){ + + } + + /** + Get users with rights in this group + **/ + public static function getGroupMembersWithRights(group:db.Amap,?rights:Array):Array{ + + var membersWithAnyRights = db.UserAmap.manager.search($rights!=null && $amap==group,false).array(); + if(rights==null){ + return Lambda.map(membersWithAnyRights,function(ua) return ua.user).array(); + }else{ + var members = []; + for( m in membersWithAnyRights){ + for(r in rights){ + if(m.hasRight(r)){ + members.push(m.user); + break; + } + } + } + + return members.deduplicate(); + } + + + } + +} \ No newline at end of file diff --git a/src/service/OrderService.hx b/src/service/OrderService.hx new file mode 100644 index 0000000..34de67e --- /dev/null +++ b/src/service/OrderService.hx @@ -0,0 +1,468 @@ +package service; +import Common; +import tink.core.Error; + +/** + * Order Service + * @author web-wizard,fbarbut + */ +class OrderService +{ + + static function canHaveFloatQt(product:db.Product):Bool{ + return product.hasFloatQt || product.wholesale || product.variablePrice; + } + + /** + * Make a product Order + * + * @param quantity + * @param productId + */ + public static function make(user:db.User, quantity:Float, product:db.Product, ?distribId:Int, ?paid:Bool, ?user2:db.User, ?invert:Bool):db.UserContract { + + var t = sugoi.i18n.Locale.texts; + + if(product.contract.type==db.Contract.TYPE_VARORDER && distribId==null) throw "You have to provide a distribId"; + if(quantity==null) throw "Quantity is null"; + + //quantity + if ( !canHaveFloatQt(product) ){ + if( !tools.FloatTool.isInt(quantity) ) { + throw new tink.core.Error(t._("Error : product \"::product::\" quantity should be integer",{product:product.name})); + } + } + + //multiweight : make one row per product + if (product.multiWeight && quantity > 1.0){ + if (product.multiWeight && quantity != Math.abs(quantity)) throw t._("multi-weighing products should be ordered only with integer quantities"); + + var o = null; + for ( i in 0...Math.round(quantity)){ + o = make(user, 1, product, distribId, paid, user2, invert); + } + return o; + } + + //checks + if (quantity <= 0) return null; + + //check for previous orders on the same distrib + var prevOrders = new List(); + if (distribId == null) { + prevOrders = db.UserContract.manager.search($product==product && $user==user, true); + }else { + prevOrders = db.UserContract.manager.search($product==product && $user==user && $distributionId==distribId, true); + } + + //Create order object + var o = new db.UserContract(); + o.product = product; + o.quantity = quantity; + o.productPrice = product.price; + if (product.contract.hasPercentageOnOrders()) { + o.feesRate = product.contract.percentageValue; + } + o.user = user; + if (user2 != null) { + o.user2 = user2; + if (invert != null) o.flags.set(InvertSharedOrder); + } + if (paid != null) o.paid = paid; + if (distribId != null) o.distribution = db.Distribution.manager.get(distribId); + + //cumulate quantities if there is a similar previous order + if (prevOrders.length > 0 && !product.multiWeight) { + for (prevOrder in prevOrders) { + //if (!prevOrder.paid) { + o.quantity += prevOrder.quantity; + prevOrder.delete(); + //} + } + } + + //create a basket object + if (distribId != null){ + var dist = o.distribution; + var basket = db.Basket.getOrCreate(user, dist.place, dist.date); + o.basket = basket; + } + + o.insert(); + + //Stocks + if (o.product.stock != null) { + var c = o.product.contract; + if (c.hasStockManagement()) { + //trace("stock for "+quantity+" x "+product.name); + if (o.product.stock == 0) { + if (App.current.session != null) { + App.current.session.addMessage(t._("There is no more '::productName::' in stock, we removed it from your order", {productName:o.product.name}), true); + } + o.quantity -= quantity; + if ( o.quantity <= 0 ) { + o.delete(); + return null; + } + }else if (o.product.stock - quantity < 0) { + var canceled = quantity - o.product.stock; + o.quantity -= canceled; + o.update(); + + if (App.current.session != null) { + var msg = t._("We reduced your order of '::productName::' to quantity ::oQuantity:: because there is no available products anymore", {productName:o.product.name, oQuantity:o.quantity}); + App.current.session.addMessage(msg, true); + } + o.product.lock(); + o.product.stock = 0; + o.product.update(); + App.current.event(StockMove({product:o.product, move:0 - (quantity - canceled) })); + + }else { + o.product.lock(); + o.product.stock -= quantity; + o.product.update(); + App.current.event(StockMove({product:o.product, move:0 - quantity})); + } + } + } + return o; + } + + + /** + * Edit an existing order (quantity) + */ + public static function edit(order:db.UserContract, newquantity:Float, ?paid:Bool , ?user2:db.User,?invert:Bool) { + + var t = sugoi.i18n.Locale.texts; + + order.lock(); + + //quantity + if (newquantity == null) newquantity = 0; + if ( !canHaveFloatQt(order.product) ){ + if( !tools.FloatTool.isInt(newquantity) ) { + throw new tink.core.Error(t._("Error : product \"::product::\" quantity should be integer",{product:order.product.name})); + } + } + + //paid + if (paid != null) { + order.paid = paid; + }else { + if (order.quantity < newquantity) order.paid = false; + } + + //shared order + if (user2 != null){ + order.user2 = user2; + if (invert == true) order.flags.set(InvertSharedOrder); + if (invert == false) order.flags.unset(InvertSharedOrder); + }else{ + order.user2 = null; + order.flags.unset(InvertSharedOrder); + } + + //stocks + var e : Event = null; + if (order.product.stock != null) { + var c = order.product.contract; + + if (c.hasStockManagement()) { + + if (newquantity < order.quantity) { + + //on commande moins que prévu : incrément de stock + order.product.lock(); + order.product.stock += (order.quantity-newquantity); + e = StockMove({product:order.product, move:0 - (order.quantity-newquantity) }); + + }else { + + //on commande plus que prévu : décrément de stock + var addedquantity = newquantity - order.quantity; + + if (order.product.stock - addedquantity < 0) { + + //stock is not enough, reduce order + newquantity = order.quantity + order.product.stock; + if( App.current.session!=null) App.current.session.addMessage(t._("We reduced your order of '::productName::' to quantity ::oQuantity:: because there is no available products anymore", {productName:order.product.name, oQuantity:newquantity}), true); + + e = StockMove({product:order.product, move: 0 - order.product.stock }); + + order.product.lock(); + order.product.stock = 0; + + }else{ + + //stock is big enough + order.product.lock(); + order.product.stock -= addedquantity; + + e = StockMove({ product:order.product, move: 0 - addedquantity }); + } + } + order.product.update(); + } + } + + //update order + if (newquantity == 0) { + order.quantity = 0; + order.paid = true; + order.update(); + }else { + order.quantity = newquantity; + order.update(); + } + + App.current.event(e); + + return order; + } + + + /** + * Delete an order + */ + public static function delete(order:db.UserContract) { + var t = sugoi.i18n.Locale.texts; + + if(order==null) throw new Error(t._("This order has already been deleted.")); + + order.lock(); + + if (order.quantity == 0) { + + var contract = order.product.contract; + var user = order.user; + + //Amap Contract + if ( contract.type == db.Contract.TYPE_CONSTORDERS ) { + + order.delete(); + + if( contract.amap.hasPayments() ){ + var orders = contract.getUserOrders(user); + if( orders.length == 0 ){ + var operation = db.Operation.findCOrderTransactionFor(contract, user); + if(operation!=null) operation.delete(); + } + } + } + else { //Variable orders contract + + //Get the basket for this user + var place = order.distribution.place; + var basket = db.Basket.get(user, place, order.distribution.date); + + if( contract.amap.hasPayments() ){ + var orders = basket.getOrders(); + //Check if it is the last order, if yes then delete the related operation + if( orders.length == 1 && orders.first().id==order.id ){ + var operation = db.Operation.findVOrderTransactionFor(order.distribution.getKey(), user, place.amap); + if(operation!=null) operation.delete(); + } + + } + + order.delete(); + } + } + else { + throw new Error(t._("Deletion not possible: quantity is not zero.")); + } + + } + + /** + * Prepare a simple dataset, ready to be displayed + */ + public static function prepare(orders:Iterable):Array { + var out = new Array(); + var orders = Lambda.array(orders); + var view = App.current.view; + var t = sugoi.i18n.Locale.texts; + for (o in orders) { + + var x : UserOrder = cast { }; + x.id = o.id; + x.userId = o.user.id; + x.userName = o.user.getCoupleName(); + x.userEmail = o.user.email; + + //shared order + if (o.user2 != null){ + x.userId2 = o.user2.id; + x.userName2 = o.user2.getCoupleName(); + x.userEmail2 = o.user2.email; + } + + //deprecated + x.productId = o.product.id; + x.productRef = o.product.ref; + x.productQt = o.product.qt; + x.productUnit = o.product.unitType; + x.productPrice = o.productPrice; + x.productImage = o.product.getImage(); + x.productHasFloatQt = o.product.hasFloatQt; + x.productHasVariablePrice = o.product.variablePrice; + //new way + x.product = o.product.infos(); + x.product.price = o.productPrice;//do not use current price, but price of the order + + + x.quantity = o.quantity; + + //smartQt + if (x.quantity == 0.0){ + x.smartQt = t._("Canceled"); + }else if(x.productHasFloatQt || x.productHasVariablePrice || o.product.wholesale){ + x.smartQt = view.smartQt(x.quantity, x.productQt, x.productUnit); + }else{ + x.smartQt = Std.string(x.quantity); + } + + //product name. + if ( x.productHasVariablePrice || x.productQt==null || x.productUnit==null ){ + x.productName = o.product.name; + }else{ + x.productName = o.product.name + " " + view.formatNum(x.productQt) +" "+ view.unit(x.productUnit,x.productQt>1); + } + + x.subTotal = o.quantity * o.productPrice; + + var c = o.product.contract; + + if ( o.feesRate!=0 ) { + + x.fees = x.subTotal * (o.feesRate/100); + x.percentageName = c.percentageName; + x.percentageValue = o.feesRate; + x.total = x.subTotal + x.fees; + + }else { + x.total = x.subTotal; + } + + //flags + x.paid = o.paid; + x.invertSharedOrder = o.flags.has(InvertSharedOrder); + x.contractId = c.id; + x.contractName = c.name; + x.canModify = o.canModify(); + + out.push(x); + } + + return sort(out); + } + + /** + * Confirms an order : create real orders from tmp orders in session + * @param order + */ + public static function confirmSessionOrder(tmpOrder:OrderInSession){ + var orders = []; + var user = db.User.manager.get(tmpOrder.userId); + for (o in tmpOrder.products){ + o.product = db.Product.manager.get(o.productId); + orders.push( make(user, o.quantity, o.product, o.distributionId) ); + } + + App.current.event(MakeOrder(orders)); + App.current.session.data.order = null; + + return orders; + } + + + /** + * Send an order-by-products report to the coordinator + */ + public static function sendOrdersByProductReport(d:db.Distribution){ + + var m = new sugoi.mail.Mail(); + m.addRecipient(d.contract.contact.email , d.contract.contact.getName()); + m.setSender(App.config.get("default_email"),"Cagette.net"); + m.setSubject('[${d.contract.amap.name}] Distribution du ${App.current.view.dDate(d.date)} (${d.contract.name})'); + var orders = service.ReportService.getOrdersByProduct(d); + + var html = App.current.processTemplate("mail/ordersByProduct.mtt", { + contract:d.contract, + distribution:d, + orders:orders, + formatNum:App.current.view.formatNum, + currency:App.current.view.currency, + dDate:App.current.view.dDate, + hHour:App.current.view.hHour, + group:d.contract.amap + } ); + + m.setHtmlBody(html); + App.sendMail(m); + + } + + + /** + * Order summary for a member + * WARNING : its for one distrib, not for a whole basket ! + */ + public static function sendOrderSummaryToMembers(d:db.Distribution){ + + var title = '[${d.contract.amap.name}] Votre commande pour le ${App.current.view.dDate(d.date)} (${d.contract.name})'; + + for( user in d.getUsers() ){ + + var m = new sugoi.mail.Mail(); + m.addRecipient(user.email , user.getName(),user.id); + if(user.email2!=null) m.addRecipient(user.email2 , user.getName(),user.id); + m.setSender(App.config.get("default_email"),"Cagette.net"); + m.setSubject(title); + var orders = prepare(d.contract.getUserOrders(user,d)); + + var html = App.current.processTemplate("mail/orderSummaryForMember.mtt", { + contract:d.contract, + distribution:d, + orders:orders, + formatNum:App.current.view.formatNum, + currency:App.current.view.currency, + dDate:App.current.view.dDate, + hHour:App.current.view.hHour, + group:d.contract.amap + } ); + + m.setHtmlBody(html); + App.sendMail(m); + } + + } + + + + public static function sort(orders:Array){ + + //order by lastname (+lastname2 if exists), then contract + orders.sort(function(a, b) { + + if (a.userName + a.userId + a.userName2 + a.userId2 + a.contractId > b.userName + b.userId + b.userName2 + b.userId2 + b.contractId ) { + + return 1; + } + if (a.userName + a.userId + a.userName2 + a.userId2 + a.contractId < b.userName + b.userId + b.userName2 + b.userId2 + b.contractId ) { + + return -1; + } + return 0; + }); + + return orders; + } + + + + + +} \ No newline at end of file diff --git a/src/service/PaymentService.hx b/src/service/PaymentService.hx new file mode 100644 index 0000000..cfae939 --- /dev/null +++ b/src/service/PaymentService.hx @@ -0,0 +1,182 @@ +package service; +import Common; + +/** + * Payment Service + * @author web-wizard + */ +class PaymentService +{ + /** + * Get all available payment types, including one from plugins + */ + public static function getAllPaymentTypes(){ + var types = [ + new payment.Cash(), + new payment.Check(), + new payment.Transfer(), + new payment.MoneyPot(), + ]; + + var e = App.current.event(GetPaymentTypes({types:types})); + return switch(e){ + case GetPaymentTypes(d): d.types; + default : null; + } + + } + + public static function getAllowedPaymentTypes(group:db.Amap):Array{ + var out :Array = []; + + //populate with activated payment types. + var all = getAllPaymentTypes(); + if ( group.allowedPaymentsType == null ) return []; + for ( t in group.allowedPaymentsType){ + + var found = Lambda.find(all, function(a) return a.type == t); + if (found != null) out.push(found); + } + return out; + } + + public static function getPaymentTypesForManualEntry(group:db.Amap){ + + var out = []; + var paymentTypes = []; + var allowedPaymentTypes = service.PaymentService.getAllowedPaymentTypes(group); + if ( !Lambda.exists(allowedPaymentTypes, function(obj) return obj.type == "moneypot" ) ) { + paymentTypes = allowedPaymentTypes; + } + else { + paymentTypes = service.PaymentService.getAllPaymentTypes(); + } + for ( t in paymentTypes ){ + if(t.type != "moneypot") out.push({label:t.name,value:t.type}); + } + + return out; + } + + /** + * Auto validate a distribution. + * This is called by the hourly cron + * + * @param distrib + */ + public static function validateDistribution(distrib:db.Distribution) { + + for ( user in distrib.getUsers()){ + var basket = db.Basket.get(user, distrib.place, distrib.date); + validateBasket(basket); + } + //finally validate distrib + distrib.lock(); + distrib.validated = true; + distrib.update(); + } + + public static function unvalidateDistribution(distrib:db.Distribution) { + + for ( user in distrib.getUsers()){ + var basket = db.Basket.get(user, distrib.place, distrib.date); + unvalidateBasket(basket); + } + //finally validate distrib + distrib.lock(); + distrib.validated = false; + distrib.update(); + } + + /** + * Auto validate a basket + * + * @param basket + */ + public static function validateBasket(basket:db.Basket) { + + if (basket == null || basket.isValidated()) return false; + + //mark orders as paid + var orders = basket.getOrders(); + for ( order in orders ){ + + order.lock(); + order.paid = true; + order.update(); + } + + //validate order operation and payments + var operation = basket.getOrderOperation(false); + if (operation != null){ + + operation.lock(); + operation.pending = false; + operation.update(); + + for ( payment in basket.getPayments()){ + + if ( payment.pending){ + payment.lock(); + payment.pending = false; + payment.update(); + } + } + + var o = orders.first(); + updateUserBalance(o.user, o.distribution.place.amap); + } + + return true; + } + + public static function unvalidateBasket(basket:db.Basket) { + + if (basket == null || !basket.isValidated()) return false; + + //mark orders as paid + var orders = basket.getOrders(); + for ( order in orders ){ + + order.lock(); + order.paid = false; + order.update(); + } + + //validate order operation and payments + var operation = basket.getOrderOperation(false); + if (operation != null){ + + operation.lock(); + operation.pending = true; + operation.update(); + + for ( payment in basket.getPayments()){ + + if (!payment.pending){ + payment.lock(); + payment.pending = true; + payment.update(); + } + } + + var o = orders.first(); + updateUserBalance(o.user, o.distribution.place.amap); + } + + return true; + } + + + /** + * update user balance + */ + public static function updateUserBalance(user:db.User,group:db.Amap){ + + var ua = db.UserAmap.getOrCreate(user, group); + var b = sys.db.Manager.cnx.request('SELECT SUM(amount) FROM Operation WHERE userId=${user.id} and groupId=${group.id} and !(type=2 and pending=1)').getFloatResult(0); + b = Math.round(b * 100) / 100; + ua.balance = b; + ua.update(); + } +} \ No newline at end of file diff --git a/src/service/PlaceService.hx b/src/service/PlaceService.hx new file mode 100644 index 0000000..baae15b --- /dev/null +++ b/src/service/PlaceService.hx @@ -0,0 +1,29 @@ +package service; + +class PlaceService{ + + /** + * Geocode a place with Google Geocode API + */ + public static function geocode(p:db.Place):{lat:Float,lng:Float}{ + var apiKey = App.config.get("google_geocoding_key"); + if(apiKey==null) return null; + + var gc = new sugoi.apis.google.GeoCode(apiKey); + var address = p.getAddress(); + //var comp = "administrative_area:" + p.city + "|postal_code:" + p.zipCode + "|country:FR"; + //Sys.print(address+"
    "+comp+"
    "); + + var geo = gc.geocode( address , null); + var coords = geo[0].geometry.location; + + p.lock(); + p.lat = coords.lat; + p.lng = coords.lng; + p.update(); + + return {lat:p.lat,lng:p.lng}; + + } + +} \ No newline at end of file diff --git a/src/service/ProductService.hx b/src/service/ProductService.hx new file mode 100644 index 0000000..cb91873 --- /dev/null +++ b/src/service/ProductService.hx @@ -0,0 +1,57 @@ +package service; + +class ProductService{ + + + /** + * Batch disable products + */ + public static function batchDisableProducts(productIds:Array){ + + var data = {pids:productIds,enable:false}; + var contract = db.Product.manager.get(productIds[0], true).contract; + var products = contract.getProducts(false); + + App.current.event( BatchEnableProducts(data) ); + + for ( pid in data.pids){ + + var p = db.Product.manager.get(pid, true); + + if ( Lambda.find(products,function(p) return p.id==pid)==null ) throw 'product $pid is not in this contract !'; + + p.active = false; + p.update(); + } + } + + + /** + * Batch enable products + */ + public static function batchEnableProducts(productIds:Array){ + + var data = {pids:productIds,enable:true}; + var contract = db.Product.manager.get(productIds[0], true).contract; + var products = contract.getProducts(false); + + App.current.event( BatchEnableProducts(data) ); + + for ( pid in data.pids){ + + var p = db.Product.manager.get(pid, true); + + if ( Lambda.find(products,function(p) return p.id==pid)==null ) throw 'product $pid is not in this contract !'; + + p.active = true; + p.update(); + } + } + + inline public static function getHTPrice(ttcPrice:Float,vatRate:Float):Float{ + return ttcPrice / (1 + vatRate / 100); + } + + + +} \ No newline at end of file diff --git a/src/service/ReportService.hx b/src/service/ReportService.hx new file mode 100644 index 0000000..9706838 --- /dev/null +++ b/src/service/ReportService.hx @@ -0,0 +1,115 @@ +package service; +import Common; + +class ReportService{ + + /** + Get orders grouped by products. + */ + public static function getOrdersByProduct( distribution:db.Distribution, ?csv = false):Array{ + var view = App.current.view; + var t = sugoi.i18n.Locale.texts; + var where = ""; + + var exportName = t._("Delivery ::contractName:: of the ", {contractName:distribution.contract.name}) + distribution.date.toString().substr(0, 10); + where += ' and p.contractId = ${distribution.contract.id}'; + if (distribution.contract.type == db.Contract.TYPE_VARORDER ) { + where += ' and up.distributionId = ${distribution.id}'; + } + + //Product price will be an average if price changed + var sql = 'select + SUM(quantity) as quantity, + MAX(p.id) as pid, + p.name as pname, + AVG(up.productPrice) as price, + AVG(p.vat) as vat, + p.ref as ref, + SUM(quantity*up.productPrice) as totalTTC + from UserContract up, Product p + where up.productId = p.id + $where + group by ref,pname,price + order by pname asc;'; + + var res = sys.db.Manager.cnx.request(sql).results(); + var orders = []; + + //populate with full product names + for ( r in res){ + + var o : OrderByProduct = { + quantity:1.0 * r.quantity, + smartQt:"", + pid:r.pid, + pname:r.pname, + ref:r.ref, + priceHT: service.ProductService.getHTPrice(r.price,r.vat), + priceTTC: r.price, + vat:r.vat, + totalTTC : r.totalTTC, + totalHT : service.ProductService.getHTPrice( r.totalTTC ,r.vat), + weightOrVolume:"", + }; + + //smartQt + var p = db.Product.manager.get(r.pid, false); + if( p.hasFloatQt || p.variablePrice ){ + o.smartQt = view.smartQt(o.quantity, p.qt, p.unitType); + }else{ + o.smartQt = Std.string(o.quantity); + } + o.weightOrVolume = view.smartQt(o.quantity, p.qt, p.unitType); + + if ( /*p.hasFloatQt || p.variablePrice ||*/ p.qt==null || p.unitType==null){ + o.pname = p.name; + }else{ + o.pname = p.name + " " + view.formatNum(p.qt) +" " + view.unit(p.unitType, o.quantity > 1); + } + + //special case : if product is multiweight, we should count the records number ( and not SUM quantities ) + if (p.multiWeight){ + sql = 'select + COUNT(up.id) as quantity + from UserContract up, Product p + where up.productId = p.id and up.quantity > 0 and p.id=${p.id} + $where'; + var count = sys.db.Manager.cnx.request(sql).getIntResult(0); + o.smartQt = ""+count; + } + + orders.push(o); + } + + if (csv) { + var data = new Array(); + for (o in orders) { + data.push({ + "quantity":view.formatNum(o.quantity), + "pname":o.pname, + "ref":o.ref, + "priceHT":view.formatNum(o.priceHT), + "priceTTC":view.formatNum(o.priceTTC), + "totalHT":view.formatNum(o.totalHT), + "totalTTC":view.formatNum(o.totalTTC), + }); + } + + sugoi.tools.Csv.printCsvDataFromObjects(data, ["quantity", "pname","ref", "priceHT","priceTTC","totalHT","totalTTC"],"Export-"+exportName+"-par produits"); + return null; + }else{ + return orders; + } + } + + + public static function getTurnoverFromOrdersByProducts(ordersByProduct:Array):{turnoverHT:Float,turnoverTTC:Float}{ + var out = {turnoverHT:0.0,turnoverTTC:0.0}; + for( o in ordersByProduct){ + out.turnoverHT += o.totalHT; + out.turnoverTTC += o.totalTTC; + } + return out; + } + +} \ No newline at end of file diff --git a/src/service/UserService.hx b/src/service/UserService.hx new file mode 100644 index 0000000..09fd01d --- /dev/null +++ b/src/service/UserService.hx @@ -0,0 +1,120 @@ +package service; +import tink.core.Error; + +/** + * User Service + * @author fbarbut + */ +class UserService +{ + + var user : db.User; + + public function new(u:db.User) + { + this.user = u; + } + + /** + * User login service + * @param email + * @param password + */ + public static function login(email:String, password:String){ + + var t = sugoi.i18n.Locale.texts; + + //user exists ? + var user = db.User.manager.select( $email == email || $email2 == email , true); + if (user == null) throw new Error(404,t._("There is no account with this email")); + + //new account + if (!user.isFullyRegistred()) { + var group = user.getAmaps().first(); + user.sendInvitation(group); + var text = t._("Your account have not been validated yet. We sent an e-mail to ::email:: to finalize your subscription!",{email:user.email}); + throw new Error(403,text); + } + + var pass = haxe.crypto.Md5.encode( App.config.get('key') + password ); + + if (user.pass != pass) { + throw new Error(403,t._("Invalid password")); + } + + db.User.login(user, email); + + //register the user to the current group if needed + var group = App.current.getCurrentGroup(); + if (group != null && group.regOption == db.Amap.RegOption.Open && db.UserAmap.get(user, group) == null){ + user.makeMemberOf(group); + } + + } + + /** + Full registration by a user himself + **/ + public static function register(firstName:String, lastName:String, email:String, phone:String, pass:String){ + + var t = sugoi.i18n.Locale.texts; + + if (!sugoi.form.validators.EmailValidator.check(email)){ + throw new Error(500,t._("Invalid email address")); + } + + if ( db.User.getSameEmail(email).length > 0 ) { + throw new Error(409,t._("We already have an account with this email address")); + } + + var user = new db.User(); + user.email = email; + user.firstName = firstName; + user.lastName = lastName; + user.phone = phone; + user.setPass(pass); + user.insert(); + + var group = App.current.getCurrentGroup(); + if (group != null && group.regOption == db.Amap.RegOption.Open){ + user.makeMemberOf(group); + } + + db.User.login(user, email); + } + + /** + Soft registration : + - Somebody creates/import a new user , + - or pre-registration in a waiting list + **/ + public static function softRegistration(firstName:String, lastName:String, email:String){ + + var t = sugoi.i18n.Locale.texts; + + if (!sugoi.form.validators.EmailValidator.check(email)){ + throw new Error(500,t._("Invalid email address")); + } + + if ( db.User.getSameEmail(email).length > 0 ) { + throw new Error(409,t._("We already have an account with this email address")); + } + + var user = new db.User(); + user.email = email; + user.firstName = firstName; + user.lastName = lastName; + user.insert(); + + return user; + } + + /** + * get users belonging to a group + * @param group - + * @return Array + */ + public static function getFromGroup(group:db.Amap):Array{ + return Lambda.array( group.getMembers() ); + } +} \ No newline at end of file diff --git a/src/service/WaitingListService.hx b/src/service/WaitingListService.hx new file mode 100644 index 0000000..0a79fc3 --- /dev/null +++ b/src/service/WaitingListService.hx @@ -0,0 +1,140 @@ +package service; +import tink.core.Error; +import db.UserAmap.Right; + +class WaitingListService{ + + + public static function registerToWl(user:db.User,group:db.Amap,message:String){ + var t = sugoi.i18n.Locale.texts; + + canRegister(user,group); + + var w = new db.WaitingList(); + w.user = user; + w.group = group; + w.message = message; + w.insert(); + + //emails + var html = t._("

    ::name:: suscribed to the waiting list of ::group:: on ::date::

    ",{ + group:group.name, + name:user.name, + date:App.current.view.hDate(Date.now()) + }); + if(message!=null && message!=""){ + html += t._("

    He/she left this message :
    \"::message::\"

    ",{message:message}); + } + + for( u in service.GroupService.getGroupMembersWithRights(group,[Right.GroupAdmin,Right.Membership]) ){ + + App.quickMail( + u.email, + t._("[::group::] ::name:: suscribed to the waiting list.",{group:group.name,name:user.name}), + html, + group + ); + } + } + + public static function canRegister(user:db.User,group:db.Amap){ + var t = sugoi.i18n.Locale.texts; + + if ( db.WaitingList.manager.select($amapId == group.id && $user == user) != null) { + throw new Error(t._("You are already in the waiting list of this group")); + } + if ( db.UserAmap.manager.select($amapId == group.id && $user == user) != null) { + throw new Error(t._("You are already member of this group.")); + } + } + + /** + the user cancels his request + **/ + public static function removeFromWl(user:db.User,group:db.Amap){ + var t = sugoi.i18n.Locale.texts; + if ( user == null) { + throw new Error(t._("You should be logged in.")); + } + + var wl = db.WaitingList.manager.select($amapId == group.id && $user == user,true); + + if ( wl == null) { + throw new Error(t._("You are not in the waiting list of this group")); + } + wl.delete(); + } + + /** + an admin cancels a request + **/ + public static function cancelRequest(user:db.User,group:db.Amap){ + var t = sugoi.i18n.Locale.texts; + if ( user == null) throw "user is null"; + var wl = db.WaitingList.manager.select($amapId == group.id && $user == user,true); + if ( wl == null) throw "this user is not in waiting list"; + + //email the requester + App.quickMail( + wl.user.email, + t._("[::group::] Membership request refused.",{group:group.name}), + t._("Your membership request for ::group:: has been refused.",{group:group.name}) + ); + + //email others admin + for( u in service.GroupService.getGroupMembersWithRights(group,[Right.GroupAdmin,Right.Membership]) ){ + if(u.id==App.current.user.id) continue; + App.quickMail( + u.email, + t._("[::group::] ::name:: membership request has been refused by ::admin::.",{group:group.name, name:user.name, admin:App.current.user.name}), + t._("

    ::name:: was registred to the waiting list.

    ::admin:: has refused his/her request.

    ",{name:user.name, admin:App.current.user.name}), + group + ); + } + + wl.delete(); + } + + /** + an admin approves a request + **/ + public static function approveRequest(user:db.User,group:db.Amap){ + var t = sugoi.i18n.Locale.texts; + if ( user == null) throw "user is null"; + var wl = db.WaitingList.manager.select($amapId == group.id && $user == user,true); + if ( wl == null) throw "this user is not in waiting list"; + + if (db.UserAmap.get(user, group, false) == null){ + var ua = new db.UserAmap(); + ua.amap = wl.group; + ua.user = wl.user; + ua.insert(); + } + + wl.delete(); + + //email the requester + App.quickMail( + wl.user.email, + t._("[::group::] Membership request accepted.",{group:group.name}), + t._("

    Your membership request for ::group:: has been accepted !

    You're now a member of the group.

    ",{group:group.name}), + group + ); + + //email others admin + for( u in service.GroupService.getGroupMembersWithRights(group,[Right.GroupAdmin,Right.Membership]) ){ + if(u.id==App.current.user.id) continue; + App.quickMail( + u.email, + t._("[::group::] ::name:: membership request has been accepted by ::admin::.",{group:group.name, name:user.name, admin:App.current.user.name}), + t._("

    ::name:: was registred to the waiting list.

    ::admin:: has accepted his/her request.

    ",{name:user.name, admin:App.current.user.name}), + group + ); + } + + wl.delete(); + } + + + +} \ No newline at end of file diff --git a/src/test/TestDistributions.hx b/src/test/TestDistributions.hx new file mode 100644 index 0000000..fb6e5c0 --- /dev/null +++ b/src/test/TestDistributions.hx @@ -0,0 +1,299 @@ +package test; + +/** + * Test distribution creation + * + * @author web-wizard + */ +class TestDistributions extends haxe.unit.TestCase +{ + + public function new(){ + super(); + } + + /** + * + */ + override function setup(){ + TestSuite.initDB(); + TestSuite.initDatas(); + } + + /** + * Check that we can add a distribution outside existing time range for a specific contract and place + * Check that we can't add a distribution overlapping with existing distribution for a specific contract and place + */ + function testOverlapping() { + var existingDistrib = TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE; + var e1 = null; + try { + var distrib1 = service.DistributionService.create(existingDistrib.contract,new Date(2018, 5, 1, 18, 0, 0),new Date(2018, 5, 1, 18, 30, 0), + existingDistrib.place.id,null,null,null,null,new Date(2018, 4, 1, 18, 0, 0),new Date(2018, 4, 30, 18, 30, 0)); + } + catch(x:tink.core.Error) { + e1 = x; + } + assertEquals(e1, null); + + //existingDistrib.date <= distrib2.date && existingDistrib.end >= distrib2.date + var e2 = null; + try { + var distrib2 = service.DistributionService.create(existingDistrib.contract,new Date(2017, 5, 1, 19, 30, 0),new Date(2017, 5, 1, 20, 30, 0), + existingDistrib.place.id,null,null,null,null,new Date(2017, 4, 1, 18, 0, 0),new Date(2017, 4, 30, 18, 30, 0)); + } + catch(x:tink.core.Error) { + e2 = x; + } + assertEquals(e2.message, "There is already a distribution at this place overlapping with the time range you've selected."); + + //existingDistrib.date <= distrib3.end && existingDistrib.end >= distrib3.end + var e3 = null; + try{ + var distrib3 = service.DistributionService.create(existingDistrib.contract,new Date(2017, 5, 1, 17, 30, 0),new Date(2017, 5, 1, 19, 30, 0), + existingDistrib.place.id,null,null,null,null,new Date(2017, 4, 1, 18, 0, 0),new Date(2017, 4, 30, 18, 30, 0)); + } + catch(x:tink.core.Error){ + e3 = x; + } + assertEquals(e3.message, "There is already a distribution at this place overlapping with the time range you've selected."); + + //existingDistrib.date >= distrib4.date && existingDistrib.end <= distrib4.end + var e4 = null; + try{ + var distrib4 = service.DistributionService.create(existingDistrib.contract,new Date(2017, 5, 1, 17, 30, 0),new Date(2017, 5, 1, 21, 30, 0), + existingDistrib.place.id,null,null,null,null,new Date(2017, 4, 1, 18, 0, 0),new Date(2017, 4, 30, 18, 30, 0)); + } + catch(x:tink.core.Error){ + e4 = x; + } + assertEquals(e4.message, "There is already a distribution at this place overlapping with the time range you've selected."); + + //existingDistrib.date > distrib5.end + var e5 = null; + try{ + var distrib5 = service.DistributionService.create(existingDistrib.contract,new Date(2017, 5, 1, 17, 30, 0),new Date(2017, 5, 1, 18, 59, 0), + existingDistrib.place.id,null,null,null,null,new Date(2017, 4, 1, 18, 0, 0),new Date(2017, 4, 30, 18, 30, 0)); + } + catch(x:tink.core.Error){ + e5 = x; + } + assertEquals(e5, null); + + //existingDistrib.date > distrib6.end + var e6 = null; + try{ + var distrib6 = service.DistributionService.create(existingDistrib.contract,new Date(2017, 3, 1, 17, 30, 0),new Date(2017, 3, 1, 18, 59, 0), + existingDistrib.place.id,null,null,null,null,new Date(2017, 2, 1, 18, 0, 0),new Date(2017, 3, 30, 18, 30, 0)); + } + catch(x:tink.core.Error){ + e6 = x; + } + assertEquals(e6.message, "The distribution start date must be set after the orders end date."); + + } + + /** + * Check that we can add a distribution outside existing time range for a specific contract and place + * Check that we can't add a distribution overlapping with existing distribution for a specific contract and place + */ + function testEdit() { + + //TO DO + assertEquals(true, true); + } + + function testCreateCycle() { + TestSuite.CONTRAT_LEGUMES.startDate = new Date(2018, 0, 1, 0, 0, 0); + TestSuite.CONTRAT_LEGUMES.endDate = new Date(2019, 11, 31, 23, 59, 0); + TestSuite.CONTRAT_LEGUMES.update(); + + var weeklyDistribCycle = service.DistributionService.createCycle(TestSuite.CONTRAT_LEGUMES,Weekly,new Date(2018, 11, 24, 0, 0, 0), + new Date(2019, 0, 24, 0, 0, 0),new Date(2018, 5, 4, 13, 0, 0),new Date(2018, 5, 4, 14, 0, 0),10,2, + new Date(2018, 5, 4, 8, 0, 0),new Date(2018, 5, 4, 23, 0, 0),TestSuite.PLACE_DU_VILLAGE.id); + + var weeklyDistribs = Lambda.array(db.Distribution.manager.search($distributionCycle == weeklyDistribCycle, false)); + assertEquals(weeklyDistribs.length, 5); + assertEquals(weeklyDistribs[0].date.toString(), new Date(2018, 11, 24, 13, 0, 0).toString()); + assertEquals(weeklyDistribs[0].end.toString(), new Date(2018, 11, 24, 14, 0, 0).toString()); + assertEquals(weeklyDistribs[1].date.toString(), new Date(2018, 11, 31, 13, 0, 0).toString()); + assertEquals(weeklyDistribs[1].end.toString(), new Date(2018, 11, 31, 14, 0, 0).toString()); + assertEquals(weeklyDistribs[2].date.toString(), new Date(2019, 0, 7, 13, 0, 0).toString()); + assertEquals(weeklyDistribs[2].end.toString(), new Date(2019, 0, 7, 14, 0, 0).toString()); + assertEquals(weeklyDistribs[3].date.toString(), new Date(2019, 0, 14, 13, 0, 0).toString()); + assertEquals(weeklyDistribs[3].end.toString(), new Date(2019, 0, 14, 14, 0, 0).toString()); + assertEquals(weeklyDistribs[4].date.toString(), new Date(2019, 0, 21, 13, 0, 0).toString()); + assertEquals(weeklyDistribs[4].end.toString(), new Date(2019, 0, 21, 14, 0, 0).toString()); + service.DistributionService.deleteCycleDistribs(weeklyDistribCycle); + + var monthlyDistribCycle = service.DistributionService.createCycle(TestSuite.CONTRAT_LEGUMES,Monthly,new Date(2018, 9, 30, 0, 0, 0), + new Date(2019, 2, 31, 0, 0, 0),new Date(2018, 5, 4, 13, 0, 0),new Date(2018, 5, 4, 14, 0, 0),10,2, + new Date(2018, 5, 4, 8, 0, 0),new Date(2018, 5, 4, 23, 0, 0),TestSuite.PLACE_DU_VILLAGE.id); + + var monthlyDistribs = Lambda.array(db.Distribution.manager.search($distributionCycle == monthlyDistribCycle, false)); + assertEquals(monthlyDistribs.length, 6); + assertEquals(monthlyDistribs[0].date.toString(), new Date(2018, 9, 30, 13, 0, 0).toString()); + assertEquals(monthlyDistribs[0].end.toString(), new Date(2018, 9, 30, 14, 0, 0).toString()); + assertEquals(monthlyDistribs[1].date.toString(), new Date(2018, 10, 27, 13, 0, 0).toString()); + assertEquals(monthlyDistribs[1].end.toString(), new Date(2018, 10, 27, 14, 0, 0).toString()); + assertEquals(monthlyDistribs[2].date.toString(), new Date(2018, 11, 25, 13, 0, 0).toString()); + assertEquals(monthlyDistribs[2].end.toString(), new Date(2018, 11, 25, 14, 0, 0).toString()); + assertEquals(monthlyDistribs[3].date.toString(), new Date(2019, 0, 29, 13, 0, 0).toString()); + assertEquals(monthlyDistribs[3].end.toString(), new Date(2019, 0, 29, 14, 0, 0).toString()); + assertEquals(monthlyDistribs[4].date.toString(), new Date(2019, 1, 26, 13, 0, 0).toString()); + assertEquals(monthlyDistribs[4].end.toString(), new Date(2019, 1, 26, 14, 0, 0).toString()); + assertEquals(monthlyDistribs[5].date.toString(), new Date(2019, 2, 26, 13, 0, 0).toString()); + assertEquals(monthlyDistribs[5].end.toString(), new Date(2019, 2, 26, 14, 0, 0).toString()); + service.DistributionService.deleteCycleDistribs(monthlyDistribCycle); + + var biweeklyDistribCycle = service.DistributionService.createCycle(TestSuite.CONTRAT_LEGUMES,BiWeekly,new Date(2018, 9, 30, 0, 0, 0), + new Date(2019, 0, 31, 0, 0, 0),new Date(2018, 5, 4, 13, 0, 0),new Date(2018, 5, 4, 14, 0, 0),10,2, + new Date(2018, 5, 4, 8, 0, 0),new Date(2018, 5, 4, 23, 0, 0),TestSuite.PLACE_DU_VILLAGE.id); + + var biweeklyDistribs = Lambda.array(db.Distribution.manager.search($distributionCycle == biweeklyDistribCycle, false)); + assertEquals(biweeklyDistribs.length, 7); + assertEquals(biweeklyDistribs[0].date.toString(), new Date(2018, 9, 30, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[0].end.toString(), new Date(2018, 9, 30, 14, 0, 0).toString()); + assertEquals(biweeklyDistribs[1].date.toString(), new Date(2018, 10, 13, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[1].end.toString(), new Date(2018, 10, 13, 14, 0, 0).toString()); + assertEquals(biweeklyDistribs[2].date.toString(), new Date(2018, 10, 27, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[2].end.toString(), new Date(2018, 10, 27, 14, 0, 0).toString()); + assertEquals(biweeklyDistribs[3].date.toString(), new Date(2018, 11, 11, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[3].end.toString(), new Date(2018, 11, 11, 14, 0, 0).toString()); + assertEquals(biweeklyDistribs[4].date.toString(), new Date(2018, 11, 25, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[4].end.toString(), new Date(2018, 11, 25, 14, 0, 0).toString()); + assertEquals(biweeklyDistribs[5].date.toString(), new Date(2019, 0, 8, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[5].end.toString(), new Date(2019, 0, 8, 14, 0, 0).toString()); + assertEquals(biweeklyDistribs[6].date.toString(), new Date(2019, 0, 22, 13, 0, 0).toString()); + assertEquals(biweeklyDistribs[6].end.toString(), new Date(2019, 0, 22, 14, 0, 0).toString()); + service.DistributionService.deleteCycleDistribs(biweeklyDistribCycle); + + var triweeklyDistribCycle = service.DistributionService.createCycle(TestSuite.CONTRAT_LEGUMES,TriWeekly,new Date(2018, 9, 30, 0, 0, 0), + new Date(2019, 0, 31, 0, 0, 0),new Date(2018, 5, 4, 13, 0, 0),new Date(2018, 5, 4, 14, 0, 0),10,2, + new Date(2018, 5, 4, 8, 0, 0),new Date(2018, 5, 4, 23, 0, 0),TestSuite.PLACE_DU_VILLAGE.id); + + var triweeklyDistribs = Lambda.array(db.Distribution.manager.search($distributionCycle == triweeklyDistribCycle, false)); + assertEquals(triweeklyDistribs.length, 5); + assertEquals(triweeklyDistribs[0].date.toString(), new Date(2018, 9, 30, 13, 0, 0).toString()); + assertEquals(triweeklyDistribs[0].end.toString(), new Date(2018, 9, 30, 14, 0, 0).toString()); + assertEquals(triweeklyDistribs[1].date.toString(), new Date(2018, 10, 20, 13, 0, 0).toString()); + assertEquals(triweeklyDistribs[1].end.toString(), new Date(2018, 10, 20, 14, 0, 0).toString()); + assertEquals(triweeklyDistribs[2].date.toString(), new Date(2018, 11, 11, 13, 0, 0).toString()); + assertEquals(triweeklyDistribs[2].end.toString(), new Date(2018, 11, 11, 14, 0, 0).toString()); + assertEquals(triweeklyDistribs[3].date.toString(), new Date(2019, 0, 1, 13, 0, 0).toString()); + assertEquals(triweeklyDistribs[3].end.toString(), new Date(2019, 0, 1, 14, 0, 0).toString()); + assertEquals(triweeklyDistribs[4].date.toString(), new Date(2019, 0, 22, 13, 0, 0).toString()); + assertEquals(triweeklyDistribs[4].end.toString(), new Date(2019, 0, 22, 14, 0, 0).toString()); + service.DistributionService.deleteCycleDistribs(triweeklyDistribCycle); + } + + function testDelete() { + //A variable contract with a distribution that has orders + var ordersDistrib = TestSuite.DISTRIB_LEGUMES_RUE_SAUCISSE; + var ordersDistribId = ordersDistrib.id; + var chicken = TestSuite.CHICKEN; + var order = service.OrderService.make(TestSuite.FRANCOIS, 1, chicken, ordersDistrib.id); + + var e = null; + try{ + service.DistributionService.delete(ordersDistrib); + } + catch(x:tink.core.Error){ + e = x; + } + assertEquals(e.message, "Deletion non possible: some orders are saved for this delivery."); + assertTrue(db.Distribution.manager.get(ordersDistribId) != null); + + //A variable contract with a distribution that has no orders + var noOrdersDistrib = TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE; + var noOrdersDistribId = noOrdersDistrib.id; + + var e = null; + try{ + service.DistributionService.delete(noOrdersDistrib); + } + catch(x:tink.core.Error){ + e = x; + } + assertEquals(e, null); + assertEquals(db.Distribution.manager.get(noOrdersDistribId), null); + + //An Amap contract with a distribution that has orders + var amapDistrib = TestSuite.DISTRIB_CONTRAT_AMAP; + var amapDistribId = amapDistrib.id; + var panier = TestSuite.PANIER_AMAP_LEGUMES; + var amapOrder = service.OrderService.make(TestSuite.FRANCOIS, 1, panier, amapDistrib.id); + + var e = null; + try{ + service.DistributionService.delete(amapDistrib); + } + catch(x:tink.core.Error){ + e = x; + } + assertEquals(e, null); + assertEquals(db.Distribution.manager.get(amapDistribId), null); + + } + + function testUpdateAmapContractOperations(){ + + var t = sugoi.i18n.Locale.texts; + + //Take an amap contract with payments enabled + //Take 2 users and make orders for each + var amapDistrib = TestSuite.DISTRIB_CONTRAT_AMAP; + var contract = amapDistrib.contract; + var panier = TestSuite.PANIER_AMAP_LEGUMES; + var francoisOrder = service.OrderService.make(TestSuite.FRANCOIS, 1, panier, amapDistrib.id); + db.Operation.onOrderConfirm([francoisOrder]); + var sebOrder = service.OrderService.make(TestSuite.SEB, 3, panier, amapDistrib.id); + db.Operation.onOrderConfirm([sebOrder]); + + //Check initial operation names and amounts + var francoisOperation = db.Operation.findCOrderTransactionFor(contract, TestSuite.FRANCOIS); + assertEquals(francoisOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 1 deliveries"); + assertEquals(francoisOperation.amount, -13); + var sebOperation = db.Operation.findCOrderTransactionFor(contract, TestSuite.SEB); + assertEquals(sebOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 1 deliveries"); + assertEquals(sebOperation.amount, -39); + + //Add a distrib + var distrib = null; + var e = null; + try{ + distrib = service.DistributionService.create(contract,new Date(2018, 5, 1, 18, 0, 0),new Date(2018, 5, 1, 18, 30, 0), + amapDistrib.place.id,null,null,null,null,new Date(2018, 4, 1, 18, 0, 0),new Date(2018, 4, 30, 18, 30, 0)); + } + catch(x:tink.core.Error){ + e = x; + } + //Check names and amounts are modified accordingly + assertEquals(francoisOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 2 deliveries"); + assertEquals(francoisOperation.amount, -26); + var sebOperation = db.Operation.findCOrderTransactionFor(contract, TestSuite.SEB); + assertEquals(sebOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 2 deliveries"); + assertEquals(sebOperation.amount, -78); + + //Add a distrib cycle + var weeklyDistribCycle = service.DistributionService.createCycle(contract,Weekly,new Date(2018, 11, 24, 0, 0, 0), + new Date(2019, 0, 24, 0, 0, 0),new Date(2018, 5, 4, 13, 0, 0),new Date(2018, 5, 4, 14, 0, 0),10,2, + new Date(2018, 5, 4, 8, 0, 0),new Date(2018, 5, 4, 23, 0, 0),TestSuite.PLACE_DU_VILLAGE.id); + //Check names and amounts are modified accordingly + assertEquals(francoisOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 7 deliveries"); + assertEquals(francoisOperation.amount, -91); + var sebOperation = db.Operation.findCOrderTransactionFor(contract, TestSuite.SEB); + assertEquals(sebOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 7 deliveries"); + assertEquals(sebOperation.amount, -273); + + //Delete the distrib cycle + service.DistributionService.deleteCycleDistribs(weeklyDistribCycle); + //Check names and amounts are modified accordingly + assertEquals(francoisOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 2 deliveries"); + assertEquals(francoisOperation.amount, -26); + var sebOperation = db.Operation.findCOrderTransactionFor(contract, TestSuite.SEB); + assertEquals(sebOperation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 2 deliveries"); + assertEquals(sebOperation.amount, -78); + } + +} \ No newline at end of file diff --git a/src/test/TestOrders.hx b/src/test/TestOrders.hx new file mode 100644 index 0000000..5d80007 --- /dev/null +++ b/src/test/TestOrders.hx @@ -0,0 +1,473 @@ +package test; +import Common; +import service.OrderService; +/** + * Test order making, updating and deleting + * + * @author fbarbut + */ +class TestOrders extends haxe.unit.TestCase +{ + + public function new(){ + super(); + } + + var c : db.Contract; + var p : db.Product; + var bob : db.User; + + /** + * get a contract + a user + a product + empty orders + */ + override function setup(){ + + TestSuite.initDB(); + TestSuite.initDatas(); + + db.Basket.emptyCache(); + + c = TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE.contract; + + p = TestSuite.STRAWBERRIES; + p.lock(); + p.stock = 8; + p.update(); + + bob = db.User.manager.get(1); + + } + + /** + Test Basket creation and numbering + **/ + public function testBasket(){ + + var d = TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE; + + var o = OrderService.make(TestSuite.FRANCOIS, 3, TestSuite.STRAWBERRIES, d.id); + assertEquals(1, o.basket.num); + + var o = OrderService.make(TestSuite.SEB, 1, TestSuite.STRAWBERRIES, d.id); + assertEquals(2, o.basket.num); + + //order again, should keep existing basket number + var o = OrderService.make(TestSuite.FRANCOIS, 1, TestSuite.APPLES, d.id); + assertEquals(1, o.basket.num); + + //check bug of 2018-07 : changing the date and place of the distribution leads to lost basket (because basket were indexed on user-date-place) + d.lock(); + d.date = new Date(2028,1,1,0,0,0); + + var place = new db.Place(); + place.name = "Chez Momo"; + place.zipCode = "54"; + place.amap = d.contract.amap; + place.insert(); + + d.place = place; + d.update(); + + //Seb's basket is still 2 + var basket = db.Basket.get(TestSuite.SEB,place,d.date); + assertEquals(2, basket.num); + + var o = OrderService.make(TestSuite.SEB, 1, TestSuite.APPLES, d.id); + assertEquals(2, o.basket.num); + + var o2 = OrderService.edit(o,5,true,null,false); + assertEquals(2, o2.basket.num); + + //order to a different distrib in same contract should start a new numbering + var d2 = service.DistributionService.create(d.contract,new Date(2026,6,6,0,0,0),new Date(2026,6,6,1,0,0),place.id,null,null,null,null,new Date(2026,6,4,0,0,0),new Date(2026,6,5,0,0,0)); + var o = OrderService.make(TestSuite.SEB, 12, TestSuite.APPLES, d2.id); + assertEquals(1, o.basket.num); + + + } + + /** + * make orders & stock management + */ + public function testStocks(){ + + var stock = p.stock; + + assertTrue(c.type == db.Contract.TYPE_VARORDER); + assertTrue(c.flags.has(db.Contract.ContractFlags.StockManagement)); + assertTrue(stock == 8); + + //bob orders 3 strawberries, stock fall to 2 + //order is update to 6 berries + App.current.eventDispatcher.addOnce(function(e:Event){ + switch(e){ + case StockMove(e): + assertTrue(e.move==-3); + assertTrue(e.product==p); + default: + } + }); + var o = OrderService.make(bob, 3, p, TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE.id); + assertTrue(p.stock == 5); + assertTrue(o.quantity == 3); + + //bob orders 6 more. stock fall to 0, order is reduced to 5 + //quantity is not 9 but 8 + App.current.eventDispatcher.addOnce(function(e:Event){ + switch(e){ + case StockMove(e): + assertTrue(e.move==-5); + assertTrue(e.product==p); + default: + } + }); + var o = OrderService.make(bob, 6, p, TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE.id); + assertTrue(p.stock == 0); + assertTrue(o.quantity == 8); + + //bob orders again but cant order anything + var o = OrderService.make(bob, 3, p, TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE.id); + assertTrue(p.stock == 0); + assertTrue(o.quantity == 8); + + } + + /** + * test edit orders and stock management + */ + function testOrderEdit(){ + + var o = db.UserContract.manager.select( $user == bob && $product == p, true); + + //no order, stock at 8 + assertEquals(p.stock , 8); + assertEquals(o , null); + + //bob orders 3 strawberries + var o = OrderService.make(bob, 3, p , TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE.id); + assertEquals(o.product.name, p.name); + assertEquals(o.quantity, 3); + assertEquals(p.stock , 5); + + //order edit, order 6 berries + App.current.eventDispatcher.addOnce(function(e:Event){ + switch(e){ + case StockMove(e): + assertTrue(e.move==-3); + assertTrue(e.product==p); + default: + } + }); + var o = OrderService.edit(o, 6); + assertTrue(p.stock == 2); + assertTrue(o.quantity == 6); + + //order edit, order 9 berries. ( 3 more, but stock fall to 0, reduced to 2 ) + App.current.eventDispatcher.addOnce(function(e:Event){ + switch(e){ + case StockMove(e): + assertEquals( -2.0 , e.move ); + assertEquals( p , e.product); + default: + } + }); + var o = OrderService.edit(o, 9); + assertEquals(0.0 , p.stock); + assertEquals(8.0 , o.quantity); + + //order more, but stock at 0 + var o = OrderService.edit(o, 12); + assertEquals(0.0 , p.stock); + assertEquals(8.0 , o.quantity); + + //order less + var o = OrderService.edit(o, 6); + assertEquals(2.0 , p.stock); + assertEquals(6.0 , o.quantity); + + + //floatQt : ordering float quantities should throw an exception + var err = null; + try{ + var o = OrderService.edit(o, 6.4); + }catch(e:tink.core.Error){ + err = e.message; + } + assertTrue( err!=null ); + } + + /** + * test orders with multiweight product + */ + function testOrderWithMultiWeightProduct(){ + + var chicken = TestSuite.CHICKEN; + var distrib = db.Distribution.manager.select($contract == chicken.contract, false); + + var order = OrderService.make(bob, 1, chicken, distrib.id); + assertEquals(1.0, order.quantity); + assertEquals(chicken.id, order.product.id); + assertEquals(chicken.price, order.productPrice); + + //order 2 more, should not aggregate because multiWeight is true + var order2 = OrderService.make(bob, 2, chicken, distrib.id); + + assertTrue(order2.id != order.id); + + //we should get 3 different orders + var orders = distrib.getOrders(); + + //trace(OrderService.prepare(orders)); + + assertEquals(3, orders.length); + for ( o in orders){ + assertEquals(o.user.id, bob.id); + assertEquals(o.product.id, chicken.id); + assertEquals(1.0, o.quantity); + } + + } + + /** + * @author fbarbut + * @date 2018-01-26 + * order a product, edit and set qt to zero, order again. + * the same record should be re-used ( if not multiweight ) + */ + function testMakeOrderAndZeroQuantity(){ + var fraises = TestSuite.STRAWBERRIES; + var distrib = db.Distribution.manager.select($contract == fraises.contract, false); + + var order = OrderService.make(bob, 1, fraises, distrib.id); + + order = OrderService.edit(order, 0); + + assertEquals(0.0, order.quantity); + + var order2 = OrderService.make(bob, 1, fraises, distrib.id); + + var bobOrders = []; + for ( o in distrib.getOrders()) if (o.user.id == bob.id) bobOrders.push(o); + + assertFalse(fraises.multiWeight); + assertEquals(1, bobOrders.length); + assertEquals(1.0, bobOrders[0].quantity); + } + + /** + * Test order deletion and operation deletion in various contexts + @author jbarbic + */ + function testDelete(){ + + var t = sugoi.i18n.Locale.texts; + + //[Test case] Should throw an error when trying to delete order and that the quantity is not zero + var amapDistrib = TestSuite.DISTRIB_CONTRAT_AMAP; + var amapContract = amapDistrib.contract; + var order = OrderService.make(TestSuite.FRANCOIS, 1, TestSuite.PANIER_AMAP_LEGUMES, amapDistrib.id); + var orderId = order.id; + db.Operation.onOrderConfirm([order]); + var e1 = null; + try { + service.OrderService.delete(order); + } + catch(x:tink.core.Error){ + e1 = x; + } + assertEquals(e1.message, "Deletion not possible: quantity is not zero."); + assertTrue(db.UserContract.manager.get(orderId) != null); + + //[Test case] Amap contract and quantity zero with payments disabled + //Check that order is deleted + order = OrderService.edit(order, 0); + var e2 = null; + try { + OrderService.delete(order); + } + catch(x:tink.core.Error){ + e2 = x; + } + assertEquals(e2, null); + assertEquals(db.UserContract.manager.get(orderId), null); + + //[Test case] Amap contract and quantity zero with payments enabled and 2 orders + //Check that first order is deleted but operation amount is at 0 + //Check that operation is deleted only at the second order deletion + var order1 = OrderService.make(TestSuite.FRANCOIS, 1, TestSuite.PANIER_AMAP_LEGUMES, amapDistrib.id); + db.Operation.onOrderConfirm([order1]); + var order1Id = order1.id; + order1 = OrderService.edit(order1, 0); + db.Operation.onOrderConfirm([order1]); + var order2 = OrderService.make(TestSuite.FRANCOIS, 1, TestSuite.PANIER_AMAP_LEGUMES, amapDistrib.id); + db.Operation.onOrderConfirm([order2]); + var order2Id = order2.id; + order2 = OrderService.edit(order2, 0); + db.Operation.onOrderConfirm([order2]); + var operation = db.Operation.findCOrderTransactionFor(amapContract, TestSuite.FRANCOIS); + var operationId = operation.id; + var e3 = null; + try { + service.OrderService.delete(order1); + } + catch(x:tink.core.Error){ + e3 = x; + } + assertEquals(e3, null); + assertEquals(db.UserContract.manager.get(order1Id), null); + assertTrue(db.Operation.manager.get(operationId) != null); + assertEquals(operation.name, "Contrat AMAP Légumes (La ferme de la Galinette) 1 deliveries"); + assertEquals(operation.amount, 0); + var e4 = null; + try { + service.OrderService.delete(order2); + } + catch(x:tink.core.Error){ + e4 = x; + } + assertEquals(null, e4); + assertEquals(null, db.UserContract.manager.get(order2Id)); + assertEquals(null, db.Operation.manager.get(operationId)); + + //[Test case] Var Order contract and quantity zero with payments disabled + //Check that order is deleted + var variableDistrib = TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE; + + var g = variableDistrib.contract.amap; + g.lock(); + g.flags.unset(HasPayments); + g.update(); + + var order = OrderService.make(TestSuite.FRANCOIS, 2, TestSuite.STRAWBERRIES, variableDistrib.id); + var orderId = order.id; + db.Operation.onOrderConfirm([order]); + order = OrderService.edit(order, 0); + db.Operation.onOrderConfirm([order]); + var e1 = null; + try { + service.OrderService.delete(order); + } + catch(x:tink.core.Error){ + e1 = x; + } + assertEquals(false,variableDistrib.contract.amap.hasPayments() ); + assertEquals(null, e1); + assertEquals(null, db.UserContract.manager.get(orderId)); + + //[Test case] Var Order contract and quantity zero with payments enabled and 2 orders + //Check that first order is deleted + //Check that operation is deleted only at the second order deletion + variableDistrib = TestSuite.DISTRIB_FRUITS_PLACE_DU_VILLAGE; + var variableContract = variableDistrib.contract; + var g = variableDistrib.contract.amap; + g.lock(); + g.flags.set(HasPayments); + g.update(); + assertTrue(variableContract.amap.hasPayments()); + + var order1 = OrderService.make(TestSuite.FRANCOIS, 2, TestSuite.STRAWBERRIES, variableDistrib.id); + db.Operation.onOrderConfirm([order1]); + var order1Id = order1.id; + + var order2 = OrderService.make(TestSuite.FRANCOIS, 3, TestSuite.APPLES, variableDistrib.id); + db.Operation.onOrderConfirm([order2]); + var order2Id = order2.id; + + order1 = OrderService.edit(order1, 0); + db.Operation.onOrderConfirm([order1]); + + order2 = OrderService.edit(order2, 0); + db.Operation.onOrderConfirm([order2]); + + assertEquals(2, variableContract.getUserOrders(TestSuite.FRANCOIS,variableDistrib).length); //François has 2 orders + var basket = db.Basket.get(TestSuite.FRANCOIS,variableDistrib.place,variableDistrib.date); + assertEquals(2, basket.getOrders().length); + + var operation1 = db.Operation.findVOrderTransactionFor(order1.distribution.getKey(), TestSuite.FRANCOIS, variableContract.amap); + var operation1Id = operation1.id; + var operation2 = db.Operation.findVOrderTransactionFor(order2.distribution.getKey(), TestSuite.FRANCOIS, variableContract.amap); + var operation2Id = operation2.id; + assertEquals(operation1Id,operation2Id); + var e2 = null; + try { + //delete strawberries order + service.OrderService.delete(order1); + } + catch(x:tink.core.Error){ + e2 = x; + } + assertEquals(null, e2); + assertEquals(null, db.UserContract.manager.get(order1Id) ); //order 1 is deleted + assertTrue( db.Operation.manager.get(operation1Id) != null); //operation should be here + assertEquals(0.0,operation1.amount); + assertEquals(1 , basket.getOrders().length); + var e3 = null; + try { + //delete apple order + service.OrderService.delete(order2); + } + catch(x:tink.core.Error){ + e3 = x; + } + assertEquals(null, e3); + assertEquals(null, db.UserContract.manager.get(order2Id)); //order 2 is deleted + assertEquals(null, db.Operation.manager.get(operation1Id)); //operation should be deleted + assertEquals(0 , basket.getOrders().length); + + //[Test case] 2 VarOrderContracts and quantity zero with payments enabled and 1 order each + //Check that first order is deleted but operation amount is at 0 + //Check that operation is deleted only at the second order deletion + var variableDistrib1 = TestSuite.DISTRIB_LEGUMES_RUE_SAUCISSE; + var order1 = OrderService.make(TestSuite.FRANCOIS, 2, TestSuite.COURGETTES, variableDistrib1.id); + assertTrue(order1.basket!=null); + // trace("WE GOT A BASKET "+order1.basket.id); + // trace("... THEN RE-GET BASKET user "+TestSuite.FRANCOIS.id+" place "+variableDistrib1.place.id+" date "+variableDistrib1.date); + var basket = db.Basket.get(TestSuite.FRANCOIS,variableDistrib1.place,variableDistrib1.date); + assertTrue(basket!=null); + assertEquals(1, basket.getOrders().length); + db.Operation.onOrderConfirm([order1]); + var order1Id = order1.id; + + var variableDistrib2 = TestSuite.DISTRIB_PATISSERIES; + var order2 = OrderService.make(TestSuite.FRANCOIS, 3, TestSuite.FLAN, variableDistrib2.id); + db.Operation.onOrderConfirm([order2]); + var order2Id = order2.id; + + order1 = OrderService.edit(order1, 0); + db.Operation.onOrderConfirm([order1]); + + order2 = OrderService.edit(order2, 0); + db.Operation.onOrderConfirm([order2]); + + //check basket + var basket = db.Basket.get(TestSuite.FRANCOIS,variableDistrib1.place,variableDistrib1.date); + assertEquals(2, basket.getOrders().length); + + var operation = db.Operation.findVOrderTransactionFor(order1.distribution.getKey(), TestSuite.FRANCOIS, variableDistrib1.contract.amap); + var operationId = operation.id; + + + var e4 = null; + try { + service.OrderService.delete(order1); + } + catch(x:tink.core.Error){ + e4 = x; + } + assertEquals(e4, null); + assertEquals(db.UserContract.manager.get(order1Id), null); + assertTrue(db.Operation.manager.get(operationId) != null); //op should still be here + assertEquals(0.0,operation.amount);//...with amount 0 + + var e5 = null; + try { + service.OrderService.delete(order2); + } + catch(x:tink.core.Error){ + e5 = x; + } + assertEquals(e5, null); + assertEquals(db.UserContract.manager.get(order2Id), null); + assertEquals(null, db.Operation.manager.get(operationId), null); //op should have been deleted + } +} \ No newline at end of file diff --git a/src/test/TestPayments.hx b/src/test/TestPayments.hx new file mode 100644 index 0000000..d5ee953 --- /dev/null +++ b/src/test/TestPayments.hx @@ -0,0 +1,64 @@ +package test; + +/** + * Test payments + * + * @author web-wizard + */ +class TestPayments extends haxe.unit.TestCase +{ + + public function new(){ + super(); + } + + override function setup(){ + TestSuite.initDB(); + TestSuite.initDatas(); + db.Basket.emptyCache(); + } + + function testValidateDistribution() { + + //Take a contract with payments enabled + //Take 2 users and make orders for each + var distrib = TestSuite.DISTRIB_LEGUMES_RUE_SAUCISSE; + var contract = distrib.contract; + var product = TestSuite.COURGETTES; + var francoisOrder = service.OrderService.make(TestSuite.FRANCOIS, 1, product, distrib.id); + var francoisOrderOperation = db.Operation.onOrderConfirm([francoisOrder]); + var sebOrder = service.OrderService.make(TestSuite.SEB, 3, product, distrib.id); + var sebOrderOperation = db.Operation.onOrderConfirm([sebOrder]); + //They both pay by check + var francoisPayment = db.Operation.makePaymentOperation(TestSuite.FRANCOIS,contract.amap, payment.Check.TYPE, product.price, "Payment by check", francoisOrderOperation[0]); + var sebPayment = db.Operation.makePaymentOperation(TestSuite.SEB,contract.amap, payment.Check.TYPE, 3 * product.price, "Payment by check", sebOrderOperation[0] ); + + //Autovalidate this old distrib and check that all the payments are validated + service.PaymentService.validateDistribution(distrib); + + //distrib should be validated + assertTrue(contract.amap.hasPayments()); + assertEquals(true, distrib.validated); + + //orders should be marked as paid + assertEquals(true, francoisOrder.paid); + assertEquals(true, sebOrder.paid); + + //order operation is not pending + var francoisOperation = db.Operation.findVOrderTransactionFor(francoisOrder.distribution.getKey(), TestSuite.FRANCOIS, contract.amap, false); + var sebOperation = db.Operation.findVOrderTransactionFor(sebOrder.distribution.getKey(), TestSuite.SEB, contract.amap, false); + assertEquals(francoisOperation.pending, false); + assertEquals(sebOperation.pending, false); + + //payment operation is not pending + assertEquals(francoisPayment.pending, false); + assertEquals(sebPayment.pending, false); + + //basket are validated + var b = db.Basket.get(TestSuite.SEB,distrib.place,distrib.date); + assertEquals(true, b.isValidated()); + var b = db.Basket.get(TestSuite.FRANCOIS,distrib.place,distrib.date); + assertEquals(true, b.isValidated()); + } + +} \ No newline at end of file diff --git a/src/test/TestReports.hx b/src/test/TestReports.hx new file mode 100644 index 0000000..c1b6fdb --- /dev/null +++ b/src/test/TestReports.hx @@ -0,0 +1,171 @@ +package test; +import Common; +import test.TestSuite; +import service.ReportService; +import service.OrderService; + +/** + * Test order reports + * + * @author fbarbut + */ +class TestReports extends haxe.unit.TestCase +{ + + public function new(){ + + super(); + } + + override function setup(){ + + TestSuite.initDB(); + TestSuite.initDatas(); + + } + + + function testOrdersByProduct(){ + + //record orders + var seb = TestSuite.SEB; + var francois = TestSuite.FRANCOIS; + var julie = TestSuite.JULIE; + + //distrib de légumes + var d = TestSuite.DISTRIB_LEGUMES_RUE_SAUCISSE; + var carrots = TestSuite.CARROTS; + var courgettes = TestSuite.COURGETTES; + var poulet = TestSuite.CHICKEN; + + OrderService.make(seb,4,courgettes,d.id); + OrderService.make(seb,1,poulet,d.id); + + OrderService.make(francois,6,courgettes,d.id); + OrderService.make(francois,2,poulet,d.id); + OrderService.make(francois,3,carrots,d.id); + + OrderService.make(julie,8,carrots,d.id); + OrderService.make(julie,3,poulet,d.id); + + //record orders on ANOTHER distrib + var d2 = service.DistributionService.create( + d.contract, + new Date(2018,2,12,0,0,0), + new Date(2018,2,12,0,3,0), + d.contract.amap.getPlaces().first().id, + null,null,null,null, + new Date(2018,2,8,0,0,0), + new Date(2018,2,11,0,0,0) + ); + OrderService.make(julie,6,carrots,d2.id); + OrderService.make(julie,1,poulet,d2.id); + + var orders = ReportService.getOrdersByProduct(d); + + //courgettes x 10 + var courgettesOrder = Lambda.find(orders, function(o) return o.pid==courgettes.id); + assertEquals( 10.0 , courgettesOrder.quantity ); + assertEquals( 35.0 , courgettesOrder.totalTTC ); + assertEquals( 33.18 , tools.FloatTool.clean(courgettesOrder.totalHT) ); + + //the report stays the same, even if the product has a new price. + courgettes.lock(); + courgettes.price+=4; + courgettes.update(); + var orders = ReportService.getOrdersByProduct(d); + var courgettesOrder = Lambda.find(orders, function(o) return o.pid==courgettes.id); + assertEquals( 10.0 , courgettesOrder.quantity ); + assertEquals( 35.0 , courgettesOrder.totalTTC ); + assertEquals( 33.18 , tools.FloatTool.clean(courgettesOrder.totalHT) ); + + + } + + /** + * run once at the beginning + */ + /*override function setup(){ + + sys.db.Manager.cnx.request("TRUNCATE TABLE UserContract;"); + + var bubar = db.User.manager.get(1); + var seb = db.User.manager.get(2); + + //fruits from group 1 + var fraises = db.Product.manager.get(2); + fraises.stock = 30; + var pommes = db.Product.manager.get(3); + var distrib = fraises.contract.getDistribs().first(); + + db.UserContract.make(bubar, 4, fraises, distrib.id); + db.UserContract.make(seb, 2, pommes, distrib.id); + + //vegetables from group 2 + var courgettes = db.Product.manager.get(4); + var carottes = db.Product.manager.get(5); + var distrib = courgettes.contract.getDistribs().first(); + + db.UserContract.make(bubar, 1, carottes ,distrib.id); + db.UserContract.make(seb, 5, courgettes ,distrib.id); + }*/ + + + /** + * test a simple report with just a time frame + */ + /*public function testTimeFrameReport(){ + + var fraises = db.Product.manager.get(2); + var pommes = db.Product.manager.get(3); + var courgettes = db.Product.manager.get(4); + var carottes = db.Product.manager.get(5); + + //check we got the right products + assertEquals("Fraises",fraises.name); + assertEquals("Pommes",pommes.name); + assertEquals("Courgettes",courgettes.name); + assertEquals("Carottes", carottes.name); + + var options = { startDate:new Date(2017, 5, 1, 0, 0, 0), endDate:new Date(2017, 5, 31, 0, 0, 0), groups:[], contracts:[] }; + + var rep = new pro.OrderReport(options); + + var data = rep.byProduct(); + + assertEquals(4,data.length); //should be the 4 products + + for ( d in data){ + switch(d.pname){ + case "Fraises": assertEquals(d.qt, 4); + case "Pommes": assertEquals(d.qt, 2); + case "Carottes": assertEquals(d.qt, 1); + case "Courgettes": assertEquals(d.qt, 5); + } + } + + }*/ + + + /** + * test a report with time frame + group + */ + /*public function testGroupReport(){ + + var options = { startDate:new Date(2017, 5, 1, 0, 0, 0), endDate:new Date(2017, 5, 31, 0, 0, 0), groups:[1], contracts:[] }; + + var rep = new pro.OrderReport(options); + var data = rep.byProduct(); + assertEquals(2,data.length); //should be the 2 products + + for ( d in data){ + switch(d.pname){ + case "Fraises": assertEquals(d.qt, 4); + case "Pommes": assertEquals(d.qt, 2); + } + } + }*/ + + + +} \ No newline at end of file diff --git a/src/test/TestSuite.hx b/src/test/TestSuite.hx new file mode 100644 index 0000000..6acf049 --- /dev/null +++ b/src/test/TestSuite.hx @@ -0,0 +1,413 @@ +package test; +import Common; +/** + * CAGETTE.NET TEST SUITE + * @author fbarbut + */ +class TestSuite +{ + + static function main() { + + connectDb(); + var r = new haxe.unit.TestRunner(); + + //Cagette core tests + r.add(new test.TestUser()); + r.add(new test.TestOrders()); + r.add(new test.TestTools()); + r.add(new test.TestDistributions()); + r.add(new test.TestPayments()); + r.add(new test.TestReports()); + + #if plugins + //Cagette-pro tests, keep in this order + r.add(new pro.test.TestProductService()); + r.add(new pro.test.TestRemoteCatalog()); + r.add(new pro.test.TestDistribService()); + r.add(new pro.test.TestReports()); + //wholesale-order tests + r.add(new who.test.TestWho()); + #end + + r.run(); + } + + static function connectDb() { + var dbstr = Sys.args()[0]; + var dbreg = ~/([^:]+):\/\/([^:]+):([^@]*?)@([^:]+)(:[0-9]+)?\/(.*?)$/; + if( !dbreg.match(dbstr) ) + throw "Configuration requires a valid database attribute, format is : mysql://user:password@host:port/dbname"; + var port = dbreg.matched(5); + var dbparams = { + user:dbreg.matched(2), + pass:dbreg.matched(3), + host:dbreg.matched(4), + port:port == null ? 3306 : Std.parseInt(port.substr(1)), + database:dbreg.matched(6), + socket:null + }; + + sys.db.Manager.cnx = sys.db.Mysql.connect(dbparams); + sys.db.Manager.initialize(); + } + + + public static function initDB(){ + //NUKE EVERYTHING BWAAAAH !! + sys.db.Manager.cleanup(); //cleanup cache objects + sql("DROP DATABASE tests;"); + sql("CREATE DATABASE tests;"); + sql("USE tests;"); + + var tables : Array = [ + + //cagette + db.TxpProduct.manager, + db.TxpCategory.manager, + db.TxpSubCategory.manager, + db.Category.manager, + db.CategoryGroup.manager, + db.ProductCategory.manager, + + db.Basket.manager, + db.UserContract.manager, + db.UserAmap.manager, + db.Operation.manager, + + db.User.manager, + db.Amap.manager, + db.Contract.manager, + db.Product.manager, + db.Vendor.manager, + db.Place.manager, + db.Distribution.manager, + db.DistributionCycle.manager, + + //sugoi tables + sugoi.db.Cache.manager, + sugoi.db.Error.manager, + sugoi.db.File.manager, + sugoi.db.Session.manager, + sugoi.db.Variable.manager, + ]; + + for(t in tables) createTable(t); + + #if plugins + //add Cpro datas : we need those tables even in cagette core tests + pro.test.ProTestSuite.initDB(); + pro.test.ProTestSuite.initDatas(); + #end + } + + public static function createTable( m ){ + if ( sys.db.TableCreate.exists(m) ){ + drop(m); + } + // Sys.println("Creating table "+ m.dbInfos().name); + sys.db.TableCreate.create(m); + } + + public static function truncate(m){ + sql("TRUNCATE TABLE "+m.dbInfos().name+";"); + } + + public static function drop(m){ + sql("DROP TABLE "+m.dbInfos().name+";"); + } + + public static function sql(sql){ + return sys.db.Manager.cnx.request(sql); + } + + //shortcut to datas + public static var FRANCOIS:db.User = null; + public static var SEB:db.User = null; + public static var JULIE:db.User = null; + + public static var CHICKEN:db.Product = null; + public static var STRAWBERRIES:db.Product = null; + public static var APPLES:db.Product = null; + public static var AMAP_DU_JARDIN:db.Amap = null; + public static var LOCAVORES:db.Amap = null; + public static var PANIER_AMAP_LEGUMES:db.Product = null; + public static var DISTRIB_CONTRAT_AMAP:db.Distribution = null; + public static var DISTRIB_FRUITS_PLACE_DU_VILLAGE:db.Distribution = null; + public static var DISTRIB_LEGUMES_RUE_SAUCISSE:db.Distribution = null; + public static var CONTRAT_LEGUMES:db.Contract = null; + public static var PLACE_DU_VILLAGE:db.Place = null; + public static var COURGETTES:db.Product = null; + public static var CARROTS:db.Product = null; + public static var FLAN:db.Product = null; + public static var CROISSANT:db.Product = null; + public static var DISTRIB_PATISSERIES:db.Distribution = null; + + public static function initDatas(){ + + //USERS + + var f = new db.User(); + f.firstName = "François"; + f.lastName = "B"; + f.email = "francois@alilo.fr"; + f.insert(); + + FRANCOIS = f; + + var u = new db.User(); + u.firstName = "Seb"; + u.lastName = "Z"; + u.email = "sebastien@alilo.fr"; + u.insert(); + + SEB = u; + + var u = new db.User(); + u.firstName = "Julie"; + u.lastName = "B"; + u.email = "julie@alilo.fr"; + u.insert(); + + JULIE = u; + + initApp(u); + + //GROUP "AMAP du Jardin public" + var a = new db.Amap(); + a.name = "AMAP du Jardin public"; + a.contact = f; + a.flags.set(db.Amap.AmapFlags.HasPayments); + a.insert(); + AMAP_DU_JARDIN = a; + + var place = new db.Place(); + place.name = "Place du village"; + place.zipCode = "00000"; + place.city = "St Martin"; + place.amap = a; + place.insert(); + + PLACE_DU_VILLAGE = place; + + //VENDOR "Ferme de la galinette" + var v = new db.Vendor(); + v.name = "La ferme de la Galinette"; + v.email = "galinette@gmail.com"; + v.zipCode = "00000"; + v.city = "Bourligheim"; + v.insert(); + + var c = new db.Contract(); + c.name = "Contrat AMAP Légumes"; + c.startDate = new Date(2017, 1, 1, 0, 0, 0); + c.endDate = new Date(2030, 12, 31, 23, 59, 0); + c.vendor = v; + c.amap = a; + c.type = db.Contract.TYPE_CONSTORDERS; + c.insert(); + + var p = new db.Product(); + p.name = "Panier Légumes"; + p.price = 13; + p.contract = c; + p.insert(); + + PANIER_AMAP_LEGUMES = p; + + var d = new db.Distribution(); + d.date = new Date(2017, 5, 1, 19, 0, 0); + d.end = new Date(2017, 5, 1, 20, 0, 0); + d.orderStartDate = new Date(2017, 4, 1, 20, 0, 0); + d.orderEndDate = new Date(2017, 4, 30, 20, 0, 0); + d.contract = c; + d.place = place; + d.insert(); + + DISTRIB_CONTRAT_AMAP = d; + + //varying contract for strawberries with stock mgmt + var c = new db.Contract(); + c.name = "Commande fruits"; + c.vendor = v; + c.startDate = new Date(2017, 1, 1, 0, 0, 0); + c.endDate = new Date(2030, 12, 31, 23, 59, 0); + c.flags.set(db.Contract.ContractFlags.StockManagement); + c.type = db.Contract.TYPE_VARORDER; + c.amap = a; + c.insert(); + + var p = new db.Product(); + p.name = "Fraises"; + p.qt = 1; + p.unitType = Common.Unit.Kilogram; + p.price = 10; + p.organic = true; + p.contract = c; + p.stock = 8; + p.insert(); + + STRAWBERRIES = p; + + var p = new db.Product(); + p.name = "Pommes"; + p.qt = 1; + p.unitType = Common.Unit.Kilogram; + p.price = 6; + p.organic = true; + p.contract = c; + p.stock = 12; + p.insert(); + + APPLES = p; + + var d = new db.Distribution(); + d.date = new Date(2017, 5, 1, 19, 0, 0); + d.end = new Date(2017, 5, 1, 20, 0, 0); + d.orderStartDate = new Date(2017, 4, 1, 20, 0, 0); + d.orderEndDate = new Date(2017, 4, 30, 20, 0, 0); + d.contract = c; + d.place = place; + d.insert(); + + DISTRIB_FRUITS_PLACE_DU_VILLAGE = d; + + //second group + var a = new db.Amap(); + a.name = "Les Locavores de la Rue Saucisse"; + a.contact = f; + a.flags.set(db.Amap.AmapFlags.HasPayments); + a.insert(); + LOCAVORES = a; + + var place = new db.Place(); + place.name = "Rue Saucisse"; + place.zipCode = "00000"; + place.city = "St Martin"; + place.amap = a; + place.insert(); + + var v = new db.Vendor(); + v.name = "La ferme de la courgette enragée"; + v.email = "courgette@gmail.com"; + v.zipCode = "00000"; + v.city = "Bourligeac"; + v.insert(); + + var c = new db.Contract(); + c.name = "Commande Legumes"; + c.startDate = new Date(2017, 1, 1, 0, 0, 0); + c.endDate = new Date(2030, 12, 31, 23, 59, 0); + c.vendor = v; + c.amap = a; + c.type = db.Contract.TYPE_VARORDER; + c.insert(); + + CONTRAT_LEGUMES = c; + + var p = new db.Product(); + p.name = "Courgettes"; + p.qt = 1; + p.unitType = Common.Unit.Kilogram; + p.price = 3.5; + p.vat = 5.5; + p.organic = true; + p.contract = c; + p.insert(); + + COURGETTES = p; + + var p = new db.Product(); + p.name = "Carottes"; + p.qt = 1; + p.unitType = Common.Unit.Kilogram; + p.price = 2.8; + p.vat = 5.5; + p.contract = c; + p.insert(); + + CARROTS = p; + + var p = new db.Product(); + p.name = "Poulet"; + p.qt = 1.5; + p.unitType = Common.Unit.Kilogram; + p.price = 15; + p.vat = 5.5; + p.multiWeight = true; + p.hasFloatQt = true; + p.contract = c; + p.insert(); + + CHICKEN = p; + + var d = service.DistributionService.create(c,new Date(2017, 5, 1, 19, 0, 0),new Date(2017, 5, 1, 19, 2, 0),place.id,null,null,null,null,new Date(2017, 4, 10, 19, 0, 0),new Date(2017, 4, 20, 19, 0, 0)); + DISTRIB_LEGUMES_RUE_SAUCISSE = d; + + //PASTRY + + var c = new db.Contract(); + c.name = "Commande Pâtisseries"; + c.startDate = new Date(2017, 1, 1, 0, 0, 0); + c.endDate = new Date(2017, 12, 31, 23, 59, 0); + c.vendor = v; + c.amap = a; + c.type = db.Contract.TYPE_VARORDER; + c.insert(); + + var p = new db.Product(); + p.name = "Flan"; + p.qt = 1; + p.unitType = Common.Unit.Kilogram; + p.price = 3.5; + p.organic = true; + p.contract = c; + p.insert(); + + FLAN = p; + + var p = new db.Product(); + p.name = "Croissant"; + p.qt = 1; + p.unitType = Common.Unit.Kilogram; + p.price = 2.8; + p.contract = c; + p.insert(); + + CROISSANT = p; + + var d = new db.Distribution(); + d.date = new Date(2017, 5, 1, 19, 0, 0); + d.contract = c; + d.place = place; + d.insert(); + + DISTRIB_PATISSERIES = d; + } + + static function initApp(u:db.User){ + + //setup App + var app = App.current = new App(); + App.config.DEBUG = true; + app.initLang("en"); + + app.eventDispatcher = new hxevents.Dispatcher(); + app.plugins = []; + //internal plugins + app.plugins.push(new plugin.Tutorial()); + + //optionnal plugins + #if plugins + //app.plugins.push( new hosted.HostedPlugIn() ); + app.plugins.push( new pro.ProPlugIn() ); + app.plugins.push( new connector.ConnectorPlugIn() ); + //app.plugins.push( new pro.LemonwayEC() ); + app.plugins.push( new who.WhoPlugIn() ); + #end + + App.current.user = u; + App.current.view = new View(); + } +} + diff --git a/src/test/TestTools.hx b/src/test/TestTools.hx new file mode 100644 index 0000000..4e27d33 --- /dev/null +++ b/src/test/TestTools.hx @@ -0,0 +1,92 @@ +package test; +import Common; + +/** + * Test various tools + * + * @author fbarbut + */ +class TestTools extends haxe.unit.TestCase +{ + + public function new(){ + super(); + } + + + function testDateRanges(){ + // test last hour range + var now = Date.fromString("2018-01-01 00:30:12"); + var r = tools.DateTool.getLastHourRange(now); + assertEquals("2017-12-31 23:00:00",r.from.toString()); + assertEquals("2018-01-01 00:00:00",r.to.toString()); + + // test last minute + var now = Date.fromString("2018-01-01 00:30:12"); + var r = tools.DateTool.getLastMinuteRange(now); + assertEquals("2018-01-01 00:29:00",r.from.toString()); + assertEquals("2018-01-01 00:30:00",r.to.toString()); + } + + + function testFloatTool(){ + + assertEquals( true , tools.FloatTool.isEqual(10.0,10.000) ); + assertEquals( true , tools.FloatTool.isEqual(10.0,10) ); + assertEquals( true , tools.FloatTool.isEqual(10,10) ); + assertEquals( true , tools.FloatTool.isEqual(10.00000001,10) ); + assertEquals( false , tools.FloatTool.isEqual(10.02,10) ); + + assertEquals( false , tools.FloatTool.isInt(10.08) ); + assertEquals( true , tools.FloatTool.isInt(10.00) ); + + + } + +/* + @admin + public function doTests() { + + var assertTrue = function(val, ?desc="") { + if (val) { + Sys.println("OK :
    "); + }else { + Sys.println("ERROR : "+desc+"
    "); + } + } + + + //test les fonctions de cotisation + + var amap = db.Amap.manager.get(1); + + amap.membershipRenewalDate = new Date(2015, 0, 1,0,0,0); + amap.update(); + + assertTrue(amap.getMembershipYear(new Date(2015, 3, 3, 0, 0, 0) ) == 2015); + assertTrue(amap.getPeriodName(new Date(2015, 3, 3, 0, 0, 0)) == "2015"); + + assertTrue(amap.getMembershipYear(new Date(2014, 8, 8, 0, 0, 0) ) == 2014); + assertTrue(amap.getPeriodName(new Date(2014, 8, 8, 0, 0, 0) ) == "2014"); + + assertTrue(amap.getMembershipYear(new Date(2013, 11, 12, 0, 0, 0) ) == 2013); + assertTrue(amap.getPeriodName(new Date(2013, 11, 12, 0, 0, 0) ) == "2013"); + + amap.membershipRenewalDate = new Date(2015, 8, 1,0,0,0); + amap.update(); + + assertTrue(amap.getMembershipYear(new Date(2015, 3, 3, 0, 0, 0) ) == 2014); + assertTrue(amap.getPeriodName(new Date(2015, 3, 3, 0, 0, 0)) == "2014-2015"); + + var d = amap.getMembershipYear(new Date(2015, 8, 8, 0, 0, 0) ); + assertTrue( d == 2015, "le 8 sept 2015, on doit etre en cotis 2015, la c " + d); + assertTrue(amap.getPeriodName(new Date(2015, 8, 8, 0, 0, 0)) == "2015-2016"); + + var d = new Date(2013, 11, 12, 0, 0, 0) ; + assertTrue( amap.getMembershipYear(d) == 2013, "le 12 oct 2013, on doit etre en cotis 2013 , là c " + amap.getMembershipYear(d) ); + assertTrue(amap.getPeriodName(d) == "2013-2014", "le 12 oct 2013, on doit etre en 2013-2014 , là c " + amap.getPeriodName(d) ); + + + }*/ + +} \ No newline at end of file diff --git a/src/test/TestUser.hx b/src/test/TestUser.hx new file mode 100644 index 0000000..b4ffb3c --- /dev/null +++ b/src/test/TestUser.hx @@ -0,0 +1,48 @@ + + +package test; +import db.UserAmap; +import Common; + +/** + * Test user rights to view contracts + * + * @author web-wizard + */ +class TestUser extends haxe.unit.TestCase +{ + + public function new(){ + super(); + } + + var contract : db.Contract; + var user : db.User; + var group1 : db.Amap; + var group2 : db.Amap; + var userAmap : db.UserAmap; + + /** + * get a contract + a user + */ + override function setup(){ + TestSuite.initDB(); + TestSuite.initDatas(); + + contract = db.Contract.manager.get(3); + user = db.User.manager.get(1); + group1 = db.Amap.manager.get(1); + group2 = db.Amap.manager.get(2); + } + + /** + * Check that a user who has admin rights for his/her group can't view a contract from a group + he/she doesn't belong to + */ + function testViewContract(){ + userAmap = db.UserAmap.getOrCreate(user, group1); + userAmap.giveRight(Right.GroupAdmin); + assertFalse(user.canManageContract(contract)); + } + +} \ No newline at end of file diff --git a/src/tools/ArrayTool.hx b/src/tools/ArrayTool.hx new file mode 100644 index 0000000..aa9fd0b --- /dev/null +++ b/src/tools/ArrayTool.hx @@ -0,0 +1,51 @@ +package tools; + +/** + * Some utility functions for arrays + */ +class ArrayTool +{ + /** + * shuffle (randomize) an array + */ + //public static function shuffle(arr:Array):Array + //{ + //if (arr!=null) { + //for (i in 0...arr.length) { + //var j = Std.random(arr.length); + //var a = arr[i]; + //var b = arr[j]; + //arr[i] = b; + //arr[j] = a; + //} + //} + //return arr; + //} + + /** + * Group a list of objects by date + * @param objs List of objects + * @param dateParamName Name of the object field which is a date + * @return + */ + public static function groupByDate(objs:Array,dateFieldName:String):Map>{ + + var out = new Map >(); + for ( o in objs){ + var d : Date = Reflect.field(o, dateFieldName); + var group = out.get(d.toString()); + if (group == null) group = new Array(); + group.push(o); + out.set(d.toString(), group); + } + return out; + } + + + public static function mapLength(m:Map):Int{ + var i = 0; + for (x in m) i++; + return i; + } + +} \ No newline at end of file diff --git a/src/tools/DateTool.hx b/src/tools/DateTool.hx new file mode 100644 index 0000000..90b6461 --- /dev/null +++ b/src/tools/DateTool.hx @@ -0,0 +1,52 @@ +package tools; + +/** + * Date tool + * @author fbarbut + */ +class DateTool +{ + + public static function now():Date{ + return Date.now(); + } + + public static function deltaDays(d:Date,n:Int):Date{ + return DateTools.delta(d, n * 1000 * 60 * 60 * 24.0); + } + + public static function setHourMinute(d:Date, hour:Int, minute:Int):Date{ + return new Date(d.getFullYear(), d.getMonth(), d.getDate(), hour, minute, 0); + } + + public static function setDateMonth(d:Date, date:Int, month:Int):Date{ + return new Date(d.getFullYear(), month, date, d.getHours(), d.getMinutes(), 0); + } + + + public static function getLastHourRange(?now:Date){ + if(now==null) now = Date.now(); + var HOUR = 1000.0 * 60 * 60; + var to = setHourMinute(now,now.getHours(),0); + var from = DateTools.delta(to, -HOUR ); + return {from:from,to:to}; + } + + public static function getLastMinuteRange(?now:Date){ + if(now==null) now = Date.now(); + var MIN = 1000.0 * 60; + var to = setHourMinute(now,now.getHours(),now.getMinutes()); + var from = DateTools.delta(to, -MIN ); + return {from:from,to:to}; + } + + public static function getWhichNthDayOfMonth(date:Date):Int { + return Math.floor((date.getDate() - 1) / 7) + 1; + } + + public static function getNthDayOfMonth(year:Int,month:Int,dayOfWeek:Int,n:Int):Date { + //dayOfWeek and getDay() follow the same value system: from 0 (Sunday) to 6 (Saturday) + return deltaDays(new Date(year,month,1+7*n, 0, 0, 0), -new Date(year,month,8-(dayOfWeek+1), 0, 0, 0).getDay()-1); + } + +} \ No newline at end of file diff --git a/src/tools/FloatTool.hx b/src/tools/FloatTool.hx new file mode 100644 index 0000000..61aa2c2 --- /dev/null +++ b/src/tools/FloatTool.hx @@ -0,0 +1,24 @@ +package tools; + + +class FloatTool{ + + /** + Tries to fix buddy float comparison in Neko... + **/ + public static function isEqual(a:Float,b:Float){ + a = Math.round(a*10000); + b = Math.round(b*10000); + return a==b; + } + + public static function isInt(f:Float){ + return isEqual(f , Math.round(f) ); + } + + //prevent float comparison bug in Neko + public static function clean(f:Float){ + return Math.round(f*100)/100; + } + +} \ No newline at end of file diff --git a/src/tools/ObjectListTool.hx b/src/tools/ObjectListTool.hx new file mode 100644 index 0000000..eadc1ca --- /dev/null +++ b/src/tools/ObjectListTool.hx @@ -0,0 +1,142 @@ +package tools; +import Common.UserOrder; + +/** + * Utility to work on sys.db.Object lists + * @author fbarbut + */ +class ObjectListTool +{ + + /** + * Get a list of IDs from an object list + */ + public static function getIds( objs:Iterable ):Array{ + var out = new Array(); + for ( o in objs ) out.push(untyped o.id); + return out; + } + + /** + * deduplicate objects on IDs + */ + public static function deduplicate(objs:Iterable):Array{ + var out = new Map(); + for ( u in objs) out.set( untyped u.id, u ); + return Lambda.array(out); + } + + + public static function toIdMap(objs:Iterable):Map{ + var out = new Map(); + for ( u in objs) out.set( untyped u.id, u ); + return out; + } + + /** + * Deduplicate user orders. (merge orders on same product from a same user) + * @param orders + * @return + */ + public static function deduplicateOrders(orders:Array):Array{ + + var out = new Map(); + + for ( o in orders){ + + var key = o.userId + "-" + o.userId2 + "-" + o.productId; + var x = out.get(key); + if ( x == null){ + x = o; + }else{ + //null safety + if (x.fees == null) x.fees = 0; + if (o.fees == null) o.fees = 0; + + //merge + x.quantity += o.quantity; + x.fees += o.fees; + x.subTotal += o.subTotal; + x.total += o.total; + } + + out.set(key, x); + } + + return Lambda.array(out); + } + + /** + * Deduplicate distributions by key (date+placeId) + * @param distribs + */ + public static function deduplicateDistribsByKey(distribs:Iterable){ + + var out = new Map(); + for ( d in distribs) out.set(d.getKey(), d); + return Lambda.array(out); + } + + /** + * Group distributions by key (date+placeId) + * @param distribs + */ + public static function groupDistribsByKey(distribs:Iterable){ + + var out = new Map>(); + for ( d in distribs) { + + var v = out.get(d.getKey()); + if (v == null) v = []; + v.push(d); + out.set(d.getKey(), v); + } + return out; + } + + /** + * Groupe orders by multidistrib key (date+placeId) + */ + public static function groupOrdersByKey(ucs:Iterable){ + + var out = new Map>(); + for ( uc in ucs) { + var k = uc.distribution.getKey(); + var v = out.get(k); + if (v == null) v = []; + v.push(uc); + out.set(k, v); + } + return out; + } + + /** + * Group distributions by group and day, order by day + */ + public static function groupDistributionsByGroupAndDay(dists:Iterable){ + + var out = new Map>(); + for ( d in dists){ + + var k = d.date.toString().substr(0, 10) + "-" + d.contract.amap.id; + + var x = out[k]; + if (x == null) x = []; + x.push(d); + out[k] = x; + + } + + //sort keys + var keys = []; + for ( k in out.keys()) keys.push(k); + keys.sort(function(a, b){ if (a > b) return 1 else return -1; }); + + var out2 = []; + for ( k in keys) out2.push(out[k]); + + return out2; + + } + +} \ No newline at end of file diff --git a/src/tools/StockTool.hx b/src/tools/StockTool.hx new file mode 100644 index 0000000..5f170da --- /dev/null +++ b/src/tools/StockTool.hx @@ -0,0 +1,36 @@ +package tools; + +/** + * ... + * @author fbarbut + */ +class StockTool +{ + + /** + * Stock dispatching between groups. + * + * i.e we got 10kg of potatoes to dispatch with 3 groups. + * I dont want to have 3,3333 kg for each group , but something like [3,3,4] + */ + public static function dispatch(stock:Int, groups:Int){ + + var out = []; + + var modulo = stock % groups; + + stock -= modulo; + + var s = Math.round(stock / groups); + + for ( i in 0...groups) out.push(s); + + for (i in 0...modulo){ + out[i % out.length]++; + } + + return out; + + } + +} \ No newline at end of file diff --git a/tests.hxml b/tests.hxml new file mode 100644 index 0000000..1194f2e --- /dev/null +++ b/tests.hxml @@ -0,0 +1,17 @@ +-lib dbadmin +-lib templo +-lib sugoi +-lib hxevents +-lib thx.semver +-lib thx.csv +-lib datetime +-lib hscript +-lib smtpmailer +-lib record-macros +-lib tink_json +-cp common +-cp src +-cp lang/master/tpl +-neko www/tests.n + -main test.TestSuite + diff --git a/testsJS.hxml b/testsJS.hxml new file mode 100644 index 0000000..012f003 --- /dev/null +++ b/testsJS.hxml @@ -0,0 +1,9 @@ +# JS +-js js/test/tests.js +-main test.TestAll +-cp js +-cp common +-lib utest +-lib hxnodejs +-lib sugoi:git:https://github.com/bablukid/sugoi#i18n +-D test diff --git a/testsPlugins.hxml b/testsPlugins.hxml new file mode 100644 index 0000000..7a203a9 --- /dev/null +++ b/testsPlugins.hxml @@ -0,0 +1,21 @@ +-lib dbadmin +-lib templo +-lib sugoi +-lib hxevents +-lib thx.semver +-lib thx.csv +-lib datetime +-lib hscript +-lib smtpmailer +-lib record-macros +-lib cagette-pro +-lib cagette-hosted +-lib cagette-wholesale-order +-lib tink_json +-cp common +-cp src +-cp lang/master/tpl +-neko www/tests.n +-D plugins +-main test.TestSuite + diff --git a/www/.htaccess b/www/.htaccess new file mode 100755 index 0000000..dbcdcdd --- /dev/null +++ b/www/.htaccess @@ -0,0 +1,8 @@ + + RewriteEngine On + RewriteRule (.*)/css/[a-z0-9]+/(.*) /css/$2 [L] + RewriteRule (.*)/js/[a-z0-9]+/(.*) /js/$2 [L] + + RewriteCond %{REQUEST_URI} !\.(png|gif|jpg|ico|swf|css|js|dat)$ + RewriteRule (.*) /index.n + diff --git a/www/adherents.xls b/www/adherents.xls new file mode 100755 index 0000000000000000000000000000000000000000..ecda370a04a546ad1dae41eabbab204a0ba79bc0 GIT binary patch literal 10752 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" + ], + "description": "Cagette.net le logiciel des AMAP et groupements d'achat", + "license": "GNU GPL", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + "eonasdan-bootstrap-datetimepicker": "~4.7.14", + "bootstrap": "~3.3.4" + } +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/.bower.json b/www/bower_components/eonasdan-bootstrap-datetimepicker/.bower.json new file mode 100755 index 0000000..98b9260 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/.bower.json @@ -0,0 +1,47 @@ +{ + "name": "eonasdan-bootstrap-datetimepicker", + "version": "4.7.14", + "main": [ + "build/css/bootstrap-datetimepicker.min.css", + "build/js/bootstrap-datetimepicker.min.js", + "src/less/_bootstrap-datetimepicker.less", + "src/less/bootstrap-datetimepicker-build.less", + "src/js/bootstrap-datetimepicker.js" + ], + "dependencies": { + "jquery": ">=1.8.3", + "moment": ">=2.8.0" + }, + "homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker", + "authors": [ + "Eonasdan" + ], + "description": "bootstrap3 datetimepicker", + "keywords": [ + "twitter-bootstrap", + "bootstrap", + "datepicker", + "datetimepicker", + "timepicker", + "moment" + ], + "license": "MIT", + "private": false, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "_release": "4.7.14", + "_resolution": { + "type": "version", + "tag": "4.7.14", + "commit": "d004434a5ff76e7b97c8b07c01f34ca69e635d97" + }, + "_source": "git://github.com/Eonasdan/bootstrap-datetimepicker.git", + "_target": "~4.7.14", + "_originalSource": "eonasdan-bootstrap-datetimepicker", + "_direct": true +} \ No newline at end of file diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/CONTRIBUTING.md b/www/bower_components/eonasdan-bootstrap-datetimepicker/CONTRIBUTING.md new file mode 100755 index 0000000..a27fd66 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/CONTRIBUTING.md @@ -0,0 +1,32 @@ +Submitting Issues +================= + +If you are submitting a bug, please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) demonstrating the issue. Code issues and fringe case bugs that do not include a jsfiddle (or similar) will be closed. + +Contributing code +================= + +To contribute, fork the library and install grunt and dependencies. You need [node](http://nodejs.org/); use [nvm](https://github.com/creationix/nvm) or [nenv](https://github.com/ryuone/nenv) to install it. + +```bash +git clone https://github.com/Eonasdan/bootstrap-datetimepicker.git +cd bootstrap-datetimepicker +npm install -g grunt-cli +npm install +git checkout development # all patches against development branch, please! +grunt # this runs tests and jshint +``` + +Very important notes +==================== + + * **Pull requests to the `master` branch will be closed.** Please submit all pull requests to the `development` branch. + * **Do not include the minified files in your pull request.** Don't worry, we'll build them when we cut a release. + +Grunt tasks +=========== + +We use Grunt for managing the build. Here are some useful Grunt tasks: + + * `grunt` The default task lints the code and runs the tests. You should make sure you do this before submitting a PR. + * `grunt build` Compiles the less stylesheet and minifies the javascript source in build directory. diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/Gruntfile.js b/www/bower_components/eonasdan-bootstrap-datetimepicker/Gruntfile.js new file mode 100755 index 0000000..7b0ceac --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/Gruntfile.js @@ -0,0 +1,194 @@ +module.exports = function (grunt) { + 'use strict'; + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + + uglify : { + target: { + files: { + 'build/js/bootstrap-datetimepicker.min.js' : 'src/js/bootstrap-datetimepicker.js' + } + }, + options: { + mangle: true, + compress: { + dead_code: false // jshint ignore:line + }, + output: { + ascii_only: true // jshint ignore:line + }, + report: 'min', + preserveComments: 'some' + } + }, + + jshint: { + all: [ + 'Gruntfile.js', 'src/js/*.js', 'test/*.js' + ], + options: { + 'browser' : true, + 'node' : true, + 'jquery' : true, + 'boss' : false, + 'curly' : true, + 'debug' : false, + 'devel' : false, + 'eqeqeq' : true, + 'bitwise' : true, + 'eqnull' : true, + 'evil' : false, + 'forin' : true, + 'immed' : false, + 'laxbreak' : false, + 'newcap' : true, + 'noarg' : true, + 'noempty' : false, + 'nonew' : false, + 'onevar' : true, + 'plusplus' : false, + 'regexp' : false, + 'undef' : true, + 'sub' : true, + 'strict' : true, + 'unused' : true, + 'white' : true, + 'es3' : true, + 'camelcase' : true, + 'quotmark' : 'single', + 'globals': { + 'define': false, + 'moment': false, + // Jasmine + 'jasmine': false, + 'describe': false, + 'xdescribe': false, + 'expect': false, + 'it': false, + 'xit': false, + 'spyOn': false, + 'beforeEach': false, + 'afterEach': false + } + } + }, + + jscs: { + all: [ + 'Gruntfile.js', 'src/js/*.js', 'test/*.js' + ], + options: { + config: '.jscs.json' + } + }, + + less: { + production: { + options: { + cleancss: true + }, + files: { + 'build/css/bootstrap-datetimepicker.min.css': 'src/less/bootstrap-datetimepicker-build.less' + } + }, + development: { + files: { + 'build/css/bootstrap-datetimepicker.css': 'src/less/bootstrap-datetimepicker-build.less' + } + } + }, + + jasmine: { + customTemplate: { + src: 'src/js/*.js', + options: { + specs: 'test/*Spec.js', + helpers: 'test/*Helper.js', + styles: [ + 'node_modules/bootstrap/dist/css/bootstrap.min.css', + 'build/css/bootstrap-datetimepicker.min.css' + ], + vendor: [ + 'node_modules/jquery/dist/jquery.min.js', + 'node_modules/moment/min/moment-with-locales.min.js', + 'node_modules/bootstrap/dist/js/bootstrap.min.js' + ], + display: 'none', + summary: 'true' + } + } + } + + }); + + grunt.loadTasks('tasks'); + + grunt.loadNpmTasks('grunt-contrib-jasmine'); + + // These plugins provide necessary tasks. + require('load-grunt-tasks')(grunt); + + // Default task. + grunt.registerTask('default', ['jshint', 'jscs', 'less', 'jasmine']); + + // travis build task + grunt.registerTask('build:travis', [ + // code style + 'jshint', 'jscs', + // build + 'uglify', 'less', + // tests + 'jasmine' + ]); + + // Task to be run when building + grunt.registerTask('build', [ + 'jshint', 'jscs', 'uglify', 'less' + ]); + + grunt.registerTask('nuget', 'Create a nuget package', function () { + var target = grunt.option('target') || 'less', done = this.async(); + if (target === 'less') { + grunt.util.spawn({ + cmd: 'src/nuget/nuget.exe', + args: [ + 'pack', + 'src/nuget/Bootstrap.v3.Datetimepicker.nuspec', + '-OutputDirectory', + 'build/nuget', + '-Version', + grunt.config.get('pkg').version + ] + }, function (error, result) { + if (error) { + grunt.log.error(error); + } else { + grunt.log.write(result); + } + done(); + }); + } + else { //--target=css + grunt.util.spawn({ + cmd: 'src/nuget/nuget.exe', + args: [ + 'pack', + 'src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec', + '-OutputDirectory', + 'build/nuget', + '-Version', + grunt.config.get('pkg').version + ] + }, function (error, result) { + if (error) { + grunt.log.error(error); + } else { + grunt.log.write(result); + } + done(); + }); + } + }); + + grunt.registerTask('test', ['jshint', 'jscs', 'uglify', 'less', 'jasmine']); +}; diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/LICENSE b/www/bower_components/eonasdan-bootstrap-datetimepicker/LICENSE new file mode 100755 index 0000000..58f47d1 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Jonathan Peterson (@Eonasdan) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/README.md b/www/bower_components/eonasdan-bootstrap-datetimepicker/README.md new file mode 100755 index 0000000..6ddd566 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/README.md @@ -0,0 +1,25 @@ +# Bootstrap 3 Date/Time Picker +![GitHub version](https://badge.fury.io/gh/Eonasdan%2Fbootstrap-datetimepicker.png)   ![Travis](https://travis-ci.org/Eonasdan/bootstrap-datetimepicker.svg?branch=development) + +![DateTimePicker](http://i.imgur.com/nfnvh5g.png) + +## [View the manual and demos](http://eonasdan.github.io/bootstrap-datetimepicker/) + +#v4 +v4 is out now! For v4 related bugs and issues see: /Eonasdan/bootstrap-datetimepicker/labels/v4. + +v3 is going into an archive state. Please be sure to check the documents. v4 has breaking changes and is a major rewrite. + +## Submitting Issues +If you have issues, please check the following first: +* Have you read the docs? +* Do you have the latest version of momentjs? +* Do you have the latest version of jQuery? +* Please test and/or fork [this jsfiddle](http://jsfiddle.net/Eonasdan/0Ltv25o8/) with an example of your issue before you post an issue here. + +## Where do you use this? +I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `eonasdan at outlook dot com`. Do not submit issue/feature request to this email, they will be ignored. + +## [Installation instructions](https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Installation) + +## [Change Log](https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Version-4-changelog) \ No newline at end of file diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/bower.json b/www/bower_components/eonasdan-bootstrap-datetimepicker/bower.json new file mode 100755 index 0000000..248ec32 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/bower.json @@ -0,0 +1,37 @@ +{ + "name": "eonasdan-bootstrap-datetimepicker", + "version": "4.7.14", + "main": [ + "build/css/bootstrap-datetimepicker.min.css", + "build/js/bootstrap-datetimepicker.min.js", + "src/less/_bootstrap-datetimepicker.less", + "src/less/bootstrap-datetimepicker-build.less", + "src/js/bootstrap-datetimepicker.js" + ], + "dependencies": { + "jquery": ">=1.8.3", + "moment": ">=2.8.0" + }, + "homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker", + "authors": [ + "Eonasdan" + ], + "description": "bootstrap3 datetimepicker", + "keywords": [ + "twitter-bootstrap", + "bootstrap", + "datepicker", + "datetimepicker", + "timepicker", + "moment" + ], + "license": "MIT", + "private": false, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css new file mode 100755 index 0000000..cfb7c9a --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.css @@ -0,0 +1,366 @@ +/*! + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +.bootstrap-datetimepicker-widget { + list-style: none; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; +} +@media (min-width: 768px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 992px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 1200px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { + content: ''; + display: inline-block; + position: absolute; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #cccccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + top: -7px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + top: -6px; + left: 8px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #cccccc; + border-top-color: rgba(0, 0, 0, 0.2); + bottom: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid white; + bottom: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget .list-unstyled { + margin: 0; +} +.bootstrap-datetimepicker-widget a[data-action] { + padding: 6px 0; +} +.bootstrap-datetimepicker-widget a[data-action]:active { + box-shadow: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 54px; + font-weight: bold; + font-size: 1.2em; + margin: 0; +} +.bootstrap-datetimepicker-widget button[data-action] { + padding: 6px; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle AM/PM"; +} +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Clear the picker"; +} +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Set the date to today"; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget .picker-switch::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle Date and Time Screens"; +} +.bootstrap-datetimepicker-widget .picker-switch td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; +} +.bootstrap-datetimepicker-widget .picker-switch td span { + line-height: 2.5; + height: 2.5em; + width: 100%; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget table td, +.bootstrap-datetimepicker-widget table th { + text-align: center; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table th { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget table th.disabled, +.bootstrap-datetimepicker-widget table th.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table th.prev::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Previous Month"; +} +.bootstrap-datetimepicker-widget table th.next::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Next Month"; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget table td.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: #777777; +} +.bootstrap-datetimepicker-widget table td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table td.day:hover, +.bootstrap-datetimepicker-widget table td.hour:hover, +.bootstrap-datetimepicker-widget table td.minute:hover, +.bootstrap-datetimepicker-widget table td.second:hover { + background: #eeeeee; + cursor: pointer; +} +.bootstrap-datetimepicker-widget table td.old, +.bootstrap-datetimepicker-widget table td.new { + color: #777777; +} +.bootstrap-datetimepicker-widget table td.today { + position: relative; +} +.bootstrap-datetimepicker-widget table td.today:before { + content: ''; + display: inline-block; + border: 0 0 7px 7px solid transparent; + border-bottom-color: #337ab7; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.bootstrap-datetimepicker-widget table td.active, +.bootstrap-datetimepicker-widget table td.active:hover { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td.active.today:before { + border-bottom-color: #fff; +} +.bootstrap-datetimepicker-widget table td.disabled, +.bootstrap-datetimepicker-widget table td.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table td span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table td span:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td span.active { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td span.old { + color: #777777; +} +.bootstrap-datetimepicker-widget table td span.disabled, +.bootstrap-datetimepicker-widget table td span.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget.usetwentyfour td.hour { + height: 27px; + line-height: 27px; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css new file mode 100755 index 0000000..cfb7c9a --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css @@ -0,0 +1,366 @@ +/*! + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +.bootstrap-datetimepicker-widget { + list-style: none; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; +} +@media (min-width: 768px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 992px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 1200px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { + content: ''; + display: inline-block; + position: absolute; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #cccccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + top: -7px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + top: -6px; + left: 8px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #cccccc; + border-top-color: rgba(0, 0, 0, 0.2); + bottom: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid white; + bottom: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget .list-unstyled { + margin: 0; +} +.bootstrap-datetimepicker-widget a[data-action] { + padding: 6px 0; +} +.bootstrap-datetimepicker-widget a[data-action]:active { + box-shadow: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 54px; + font-weight: bold; + font-size: 1.2em; + margin: 0; +} +.bootstrap-datetimepicker-widget button[data-action] { + padding: 6px; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle AM/PM"; +} +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Clear the picker"; +} +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Set the date to today"; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget .picker-switch::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle Date and Time Screens"; +} +.bootstrap-datetimepicker-widget .picker-switch td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; +} +.bootstrap-datetimepicker-widget .picker-switch td span { + line-height: 2.5; + height: 2.5em; + width: 100%; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget table td, +.bootstrap-datetimepicker-widget table th { + text-align: center; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table th { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget table th.disabled, +.bootstrap-datetimepicker-widget table th.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table th.prev::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Previous Month"; +} +.bootstrap-datetimepicker-widget table th.next::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Next Month"; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget table td.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: #777777; +} +.bootstrap-datetimepicker-widget table td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table td.day:hover, +.bootstrap-datetimepicker-widget table td.hour:hover, +.bootstrap-datetimepicker-widget table td.minute:hover, +.bootstrap-datetimepicker-widget table td.second:hover { + background: #eeeeee; + cursor: pointer; +} +.bootstrap-datetimepicker-widget table td.old, +.bootstrap-datetimepicker-widget table td.new { + color: #777777; +} +.bootstrap-datetimepicker-widget table td.today { + position: relative; +} +.bootstrap-datetimepicker-widget table td.today:before { + content: ''; + display: inline-block; + border: 0 0 7px 7px solid transparent; + border-bottom-color: #337ab7; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.bootstrap-datetimepicker-widget table td.active, +.bootstrap-datetimepicker-widget table td.active:hover { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td.active.today:before { + border-bottom-color: #fff; +} +.bootstrap-datetimepicker-widget table td.disabled, +.bootstrap-datetimepicker-widget table td.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table td span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget table td span:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget table td span.active { + background-color: #337ab7; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td span.old { + color: #777777; +} +.bootstrap-datetimepicker-widget table td span.disabled, +.bootstrap-datetimepicker-widget table td span.disabled:hover { + background: none; + color: #777777; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget.usetwentyfour td.hour { + height: 27px; + line-height: 27px; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js new file mode 100755 index 0000000..ed9c03a --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js @@ -0,0 +1,8 @@ +/*! version : 4.7.14 + ========================================================= + bootstrap-datetimejs + https://github.com/Eonasdan/bootstrap-datetimepicker + Copyright (c) 2015 Jonathan Peterson + ========================================================= + */ +!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j={},k=b().startOf("d"),l=k.clone(),m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10}],r=["days","months","years"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==g.indexOf("Y");case"M":return-1!==g.indexOf("M");case"d":return-1!==g.toLowerCase().indexOf("d");case"h":case"H":return-1!==g.toLowerCase().indexOf("h");case"m":return-1!==g.indexOf("m");case"s":return-1!==g.indexOf("s");default:return!1}},y=function(){return x("h")||x("m")||x("s")},z=function(){return x("y")||x("M")||x("d")},A=function(){var b=a("").append(a("").append(a("").addClass("prev").attr("data-action","previous").append(a("").addClass(d.icons.previous))).append(a("").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("").addClass("next").attr("data-action","next").append(a("").addClass(d.icons.next)))),c=a("").append(a("").append(a("").attr("colspan",d.calendarWeeks?"8":"7")));return[a("
    ").addClass("datepicker-days").append(a("").addClass("table-condensed").append(b).append(a(""))),a("
    ").addClass("datepicker-months").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
    ").addClass("datepicker-years").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone()))]},B=function(){var b=a(""),c=a(""),e=a("");return x("h")&&(b.append(a("'}),a+=""}),a+="
    ").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","incrementHours").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-hour").attr("data-time-component","hours").attr("data-action","showHours"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","decrementHours").append(a("").addClass(d.icons.down))))),x("m")&&(x("h")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","incrementMinutes").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-minute").attr("data-time-component","minutes").attr("data-action","showMinutes"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","decrementMinutes").append(a("").addClass(d.icons.down))))),x("s")&&(x("m")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","incrementSeconds").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-second").attr("data-time-component","seconds").attr("data-action","showSeconds"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1"}).addClass("btn").attr("data-action","decrementSeconds").append(a("").addClass(d.icons.down))))),f||(b.append(a("").addClass("separator")),c.append(a("").append(a("").addClass("separator"))),a("
    ").addClass("timepicker-picker").append(a("").addClass("table-condensed").append([b,c,e]))},C=function(){var b=a("
    ").addClass("timepicker-hours").append(a("
    ").addClass("table-condensed")),c=a("
    ").addClass("timepicker-minutes").append(a("
    ").addClass("table-condensed")),d=a("
    ").addClass("timepicker-seconds").append(a("
    ").addClass("table-condensed")),e=[B()];return x("h")&&e.push(b),x("m")&&e.push(c),x("s")&&e.push(d),e},D=function(){var b=[];return d.showTodayButton&&b.push(a("":/^(UL|OL)$/.test(r.nodeName)&&(e="
  • "+o+"
  • "),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):V||e||(e='
    '),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=F(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?t.serializer.getTrimmedContent():"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=F(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=P({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var e=this;return e.container||(e.container=D.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=D.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),O(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&D.remove(e.getElement().nextSibling),e.inline||(V&&10>V&&e.getDoc().execCommand("SelectAll",!1,null),D.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),D.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),D.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},P(B.prototype,_),B}),r(nt,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(rt,[w,u,d],function(e,t,n){function r(e){function l(){try{return document.activeElement}catch(e){return document.body}}function c(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer, +startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function u(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function d(e){return!!s.getParent(e,r.isEditorUIElement)}function f(r){var f=r.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange mouseup keyup",function(e){var t=l();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=u(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var t=e.focusedEditor;d(l())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=c(n.dom,n.lastRng)),r==document.body||d(r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function h(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i),s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",f),e.on("RemoveEditor",h)}var i,o,a,s=e.DOM;return r.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},r}),r(it,[tt,g,w,ae,d,m,c,ue,nt,rt],function(e,t,n,r,i,o,a,s,l,c){function u(e){g(C.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function d(e,n){n!==x&&(n?t(window).on("resize scroll",u):t(window).off("resize scroll",u),x=n)}function f(e){var t=C.editors,n;delete t[e.id];for(var r=0;r0&&g(m(t),function(e){var t;(t=p.get(e))?n.push(t):g(document.forms,function(t){g(t.elements,function(t){t.name===e&&(e="mce_editor_"+y++,p.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":g(p.select("textarea"),function(t){e.editor_deselector&&c(t,e.editor_deselector)||e.editor_selector&&!c(t,e.editor_selector)||n.push(t)})}return n}function d(){function a(t,n,r){var i=new e(t,n,f);m.push(i),i.on("init",function(){++c===y.length&&x(m)}),i.targetElm=i.targetElm||r,i.render()}var c=0,m=[],y;return p.unbind(window,"ready",d),l("onpageload"),y=t.unique(u(n)),n.types?void g(n.types,function(e){o.each(y,function(t){return p.is(t,e.selector)?(a(s(t),v({},n,e),t),!1):!0})}):(o.each(y,function(e){h(f.get(e.id))}),y=o.grep(y,function(e){return!f.get(e.id)}),void g(y,function(e){r(n,e)?i("Could not initialize inline editor on invalid inline target element",e):a(s(e),n,e)}))}var f=this,b,C;C=o.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var x=function(e){b=e};return f.settings=n,p.bind(window,"ready",d),new a(function(e){b?e(b):x=function(t){e(t)}})},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),d(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),b||(b=function(){t.fire("BeforeUnload")},p.bind(window,"beforeunload",b)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void g(p.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(f(i)&&t.fire("RemoveEditor",{editor:i}),r.length||p.unbind(window,"beforeunload",b),i.remove(),d(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){g(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return l.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},v(C,s),C.setup(),window.tinymce=window.tinyMCE=C,C}),r(ot,[it,m],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(at,[ue,m],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&1e4>o&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(st,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(lt,[st,at,m],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(ct,[w],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(ut,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(dt,[w,f,N,E,m,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(ft,[se,m],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(ht,[ft],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'
    '+this._super(e)}})}),r(pt,[De],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'
    "},bindStates:function(){function e(e){var i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append(''),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var t=this,n=t.$,r=t.classPrefix+"txt";return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(mt,[xe],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "}})}),r(gt,[De],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
    '+e.encode(e.state.get("text"))+"
    "},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(vt,[De,be,pe,g],function(e,t,n,r){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&-1!=i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){var r=t.state.get("value"),i=t.getEl("inp").value;return e.preventDefault(),t.state.set("value",i),r!=i&&t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),t.on("keyup",function(e){"INPUT"==e.target.nodeName&&t.state.set("value",e.target.value)})},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s;a=i?o.w-n.getSize(i).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(t.firstChild).css({width:a,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='
    ",e.classes.add("has-open")),'
    '+s+"
    "},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e._super()},remove:function(){r(this.getEl("inp")).off(),this._super()}})}),r(yt,[vt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(bt,[pt,ke],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(Ct,[bt,w],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",a="";return r&&(e.classes.add("btn-has-text"),a=''+e.encode(r)+""),'
    '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(xt,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=h=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,h=0;break;case 1:d=l,f=s,h=0;break;case 2:d=0,f=s,h=l;break;case 3:d=0,f=l,h=s;break;case 4:d=l,f=0,h=s;break;case 5:d=s,f=0,h=l;break;default:d=f=h=0}d=r(255*(d+c)),f=r(255*(f+c)),h=r(255*(h+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(h)}function s(){return{r:d,g:f,b:h}}function l(){return i(d,f,h)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,h=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),h=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),h=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),h=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,h=0>h?0:h>255?255:h,u}var u=this,d=0,f=0,h=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(wt,[De,we,pe,xt],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(h,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,h;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),h=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='
    ';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='
    '+e()+'
    ','
    '+i+"
    "}})}),r(Nt,[De],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'
    '+e._getDataPathHtml(e.state.get("row"))+"
    "},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;i>r;r++)o+=(r>0?'":"")+'
    '+n[r].name+"
    ";return o||(o='
    \xa0
    '),o}})}),r(Et,[Nt],function(e){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var t=this,n=t.settings.editor;return n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(_t,[xe],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'
    '+(e.settings.title?'
    '+e.settings.title+"
    ":"")+'
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "}})}),r(St,[xe,_t,m],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(kt,[St],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'
    '+(e.settings.title?''+e.settings.title+"":"")+'
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "}})}),r(Tt,[vt,m],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),s&&!s[e.filetype]||(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(Rt,[ht],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(At,[ht],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v=[],y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",E="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",O="left",M="w",D="x",L="innerW", +P="minW",H="right",I="deltaW",F="contentW"):(S="x",E="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",O="top",M="h",D="y",L="innerH",P="minH",H="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],N=u=0,t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),m=h.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,p[k]&&v.push(h),p.flex=g),d-=p[_],y=o[O]+p[P]+o[H],y>N&&(N=y);if(x={},0>d?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=N+i[I],x[B]=i[R]-d,x[F]=N,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)h=v[t],p=h.layoutRect(),b=p[k],y=p[_]+p.flex*C,y>b?(d-=p[k]-p[_],u-=p.flex,p.flex=0,p.maxFlexSize=b):p.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[D]=o[O],t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),y=p.maxFlexSize||p[_],"center"===s?x[D]=Math.round(i[L]/2-p[M]/2):"stretch"===s?(x[M]=z(p[P]||0,i[L]-o[O]-o[H]),x[D]=o[O]):"end"===s&&(x[D]=i[L]-p[M]-o.top),p.flex>0&&(y+=p.flex*C),x[E]=y,x[S]=w,h.layoutRect(x),h.recalc&&h.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(Bt,[ft],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(Dt,[ye,De,ke,m,w,it,d],function(e,t,n,r,i,o,a){function s(e){e.settings.ui_container&&(a.container=i.DOM.select(e.settings.ui_container)[0])}function l(t){t.on("ScriptsLoaded",function(){t.rtl&&(e.rtl=!0)})}function c(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;u(i.parents,function(e){return u(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return u(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){u(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&l(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function a(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){r.disabled(e.readonly||!n())})}}function s(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function l(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var c;c=i(),u({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:o(n),onclick:function(){l(n)}})}),u({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),u({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:o(n)})}),e.addButton("undo",{tooltip:"Undo",onPostRender:a("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:a("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:s,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),u({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:c}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return u(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:l,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return u(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return u(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:c})}var u=r.each;o.on("AddEditor",function(e){var t=e.editor;l(t),c(t),s(t)}),e.translate=function(e){return o.translate(e)},t.tooltips=!a.iOS}),r(Lt,[ht],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)_.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,E[d]=S>E[d]?S:E[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,N=0,f=0;n>f;f++)N+=_[f]+(f>0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,N+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=N+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;dd;d++)E[d]+=M?M[d]*P:P;for(p=g.top,f=0;n>f;f++){for(h=g.left,s=_[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=h,c.y=p,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=h+a/2-c.w/2:"right"==v?c.x=h+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=p+s/2-c.h/2:"bottom"==v?c.y=p+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),h+=a+y,u.recalc&&u.recalc();p+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var O=e.parent();O&&(O._lastRect=null,O.recalc())}}})}),r(Mt,[De,u],function(e,t){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,''},src:function(e){this.getEl().src=e},html:function(e,n){var r=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Pt,[De],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'
    '+e.encode(e.state.get("text"))+'
    '},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Ot,[De,pe],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e=this,t,n,r=e.settings.forId;return!r&&(n=e.settings.forName)&&(t=e.getRoot().find("#"+n)[0],t&&(r=t._id)),r?'":''+e.encode(e.state.get("text"))+""},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Ht,[xe],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(It,[Ht],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(Ft,[pt,be,It],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(){var e=this,n;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(n=e.state.get("menu")||[],n.length?n={type:"menu",items:n}:n.type=n.type||"menu",n.renderTo?e.menu=n.parent(e).show().renderTo():e.menu=t.create(n).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text"),s="";return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",a&&(e.classes.add("btn-has-text"),s=''+e.encode(a)+""),i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'
    '},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(zt,[De,be,d,u],function(e,t,n,r){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),"-"!==n&&"|"!==n||(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},e=e.split("+"),t=0;t'+("-"!==a?'\xa0":"")+("-"!==a?''+a+"":"")+(c?'
    '+c+"
    ":"")+(i.menu?'
    ':"")+""},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=e.getEl("text");i&&i.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),r.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){var e=this;return e.parent().items().each(function(e){e.classes.remove("selected")}),e.classes.toggle("selected",!0),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Ut,[g,ye,u],function(e,t,n){return function(r,i){var o=this,a,s=t.classPrefix,l;o.show=function(t,c){function u(){a&&(e(r).append('
    '),c&&c())}return o.hide(),a=!0,t?l=n.setTimeout(u,t):u(),o},o.hide=function(){var e=r.lastChild;return n.clearTimeout(l),e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),a=!1,o}}}),r(Wt,[ke,zt,Ut,m],function(e,t,n,r){return e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var n=e.items,i=n.length;i--;)n[i]=r.extend({},e.itemDefaults,n[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},load:function(){function e(){t.throbber&&(t.throbber.hide(),t.throbber=null)}var t=this,r,i;i=t.settings.itemsFactory,i&&(t.throbber||(t.throbber=new n(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide close",e)),t.requestTime=r=(new Date).getTime(),t.settings.itemsFactory(function(n){return 0===n.length?void t.hide():void(t.requestTime===r&&(t.getEl().style.width="",t.getEl("body").style.width="",e(),t.items().remove(),t.getEl("body").innerHTML="",t.add(n),t.renderNew(),t.fire("loaded")))}))},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.image||n.selectable?(e._hasIcons=!0,!1):void 0}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e._super()}})}),r(Vt,[Ft,Wt],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(jt,[De],function(e){function t(e){var t="";if(e)for(var n=0;n'+e[n]+"";return t}return e.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e=this,n,r="";return n=t(e._options),e.size&&(r=' size = "'+e.size+'"'),'"},bindStates:function(){var e=this;return e.state.on("change:options",function(n){e.getEl().innerHTML=t(n.value)}),e._super()}})}),r(Yt,[De,we,pe],function(e,t,n){function r(e,t,n){return t>e&&(e=t),e>n&&(e=n),e}function i(e,t,n){e.setAttribute("aria-"+t,n)}function o(e,t){var r,o,a,s,l,c;"v"==e.settings.orientation?(s="top",a="height",o="h"):(s="left",a="width",o="w"),c=e.getEl("handle"),r=(e.layoutRect()[o]||100)-n.getSize(c)[a],l=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",c.style[s]=l,c.style.height=e.layoutRect().h+"px",i(c,"valuenow",t),i(c,"valuetext",""+e.settings.previewFilter(t)),i(c,"valuemin",e._minValue),i(c,"valuemax",e._maxValue)}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
    '},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function e(e,t,n){return(n+e)/(t-e)}function i(e,t,n){return n*(t-e)-e}function o(t,n){function o(o){var a;a=s.value(),a=i(t,n,e(t,n,a)+.05*o),a=r(a,t,n),s.value(a),s.fire("dragstart",{value:a}),s.fire("drag",{value:a}),s.fire("dragend",{value:a})}s.on("keydown",function(e){switch(e.keyCode){case 37:case 38:o(-1);break;case 39:case 40:o(1)}})}function a(e,i,o){var a,l,c,p,m;s._dragHelper=new t(s._id,{handle:s._id+"-handle",start:function(e){a=e[u],l=parseInt(s.getEl("handle").style[d],10),c=(s.layoutRect()[h]||100)-n.getSize(o)[f],s.fire("dragstart",{value:m})},drag:function(t){var n=t[u]-a;p=r(l+n,0,c),o.style[d]=p+"px",m=e+p/c*(i-e),s.value(m),s.tooltip().text(""+s.settings.previewFilter(m)).show().moveRel(o,"bc tc"),s.fire("drag",{value:m})},stop:function(){s.tooltip().hide(),s.fire("dragend",{value:m})}})}var s=this,l,c,u,d,f,h;l=s._minValue,c=s._maxValue,"v"==s.settings.orientation?(u="screenY",d="top",f="height",h="h"):(u="screenX",d="left",f="width",h="w"),s._super(),o(l,c,s.getEl("handle")),a(l,c,s.getEl("handle"))},repaint:function(){this._super(),o(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){o(e,t.value)}),e._super()}})}),r(Xt,[De],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'
    '}})}),r(Kt,[Ft,pe,g],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text"),a="";return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),'
    '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(Gt,[Bt],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(Jt,[Ee,g,pe],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='"}),'
    '+n+'
    '+t.renderHtml(e)+"
    "},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(Qt,[De,m,pe],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,r=e.settings,i,o;return i={id:e._id,hidefocus:"1"},t.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){i[e]=r[e]}),e.disabled()&&(i.disabled="disabled"),r.subtype&&(i.type=r.subtype),o=n.create(r.multiline?"textarea":"input",i),o.value=e.state.get("value"),o.className=e.classes,o.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){ +e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(Zt,[],function(){var e=this||window,t=function(){return e.tinymce};return"function"==typeof e.define&&(e.define.amd||e.define("ephox/tinymce",[],t)),{}}),a([l,c,u,d,f,h,m,g,v,y,C,w,N,E,T,A,B,D,L,M,P,O,I,F,j,Y,J,Q,oe,ae,se,le,ue,fe,he,ve,ye,be,Ce,xe,we,Ne,Ee,_e,Se,ke,Te,Re,Ae,Be,De,Le,Me,Pe,Ie,ze,tt,nt,rt,it,at,st,lt,ct,ut,dt,ft,ht,pt,mt,gt,vt,yt,bt,Ct,xt,wt,Nt,Et,_t,St,kt,Tt,Rt,At,Bt,Dt,Lt,Mt,Pt,Ot,Ht,It,Ft,zt,Ut,Wt,Vt,$t,qt,jt,Yt,Xt,Kt,Gt,Jt,Qt])}(this); +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.ThemeManager),h("2",tinymce.util.Delay),h("c",tinymce.util.Tools),h("d",tinymce.ui.Factory),h("e",tinymce.DOM),g("j",[],function(){var a=function(a){return function(b){return typeof b===a}},b=function(a){return Array.isArray(a)},c=function(a){return null===a},d=function(a){return function(d){return!c(d)&&!b(d)&&a(d)}};return{isString:a("string"),isNumber:a("number"),isBoolean:a("boolean"),isFunction:a("function"),isObject:d(a("object")),isNull:c,isArray:b}}),g("f",["c","d","j"],function(a,b,c){var d=function(a,b){return function(c,d){for(var e,f=d.parents.length;f--&&(e=d.parents[f].nodeName,"OL"!=e&&"UL"!=e););a.active(c&&e==b)}},e=function(a,b){var c=function(a,b){return{selector:a,handler:b}},e=function(a){b.active(a)},f=function(a){b.disabled(a)};return"bullist"==a?c("ul > li",d(b,"UL")):"numlist"==a?c("ol > li",d(b,"OL")):b.settings.stateSelector?c(b.settings.stateSelector,e):b.settings.disabledStateSelector?c(b.settings.disabledStateSelector,f):null},f=function(a,b,c){return function(){var d=e(b,c);null!==d&&a.selection.selectorChanged(d.selector,d.handler)}},g=function(a){return c.isArray(a)?a:c.isString(a)?a.split(/[ ,]/):[]},h=function(c,d,e){var h,i=[];if(e)return a.each(g(e),function(a){var d;"|"==a?h=null:b.has(a)?(a={type:a},i.push(a),h=null):c.buttons[a]&&(h||(h={type:"buttongroup",items:[]},i.push(h)),d=a,a=c.buttons[d],"function"==typeof a&&(a=a()),a.type=a.type||"button",a=b.create(a),a.on("postRender",f(c,d,a)),h.items.push(a))}),b.create({type:"toolbar",layout:"flow",name:d,items:i})};return{create:h}}),h("o",tinymce.util.Promise),g("p",[],function(){var a=0,b=function(){var a=function(){return Math.round(4294967295*Math.random()).toString(36)};return"s"+Date.now().toString(36)+a()+a()+a()},c=function(c){return c+a++ +b()};return{uuid:c}}),g("u",[],function(){var a=function(a,b){function c(c){var e,f,g;f=b[c?"startContainer":"endContainer"],g=b[c?"startOffset":"endOffset"],1==f.nodeType&&(e=a.create("span",{"data-mce-type":"bookmark"}),f.hasChildNodes()?(g=Math.min(g,f.childNodes.length-1),c?f.insertBefore(e,f.childNodes[g]):a.insertAfter(e,f.childNodes[g])):f.appendChild(e),f=e,g=0),d[c?"startContainer":"endContainer"]=f,d[c?"startOffset":"endOffset"]=g}var d={};return c(!0),b.collapsed||c(),d},b=function(a,b){function c(c){function d(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;1==b.nodeType&&"bookmark"==b.getAttribute("data-mce-type")||c++,b=b.nextSibling}return-1}var e,f,g;e=g=b[c?"startContainer":"endContainer"],f=b[c?"startOffset":"endOffset"],e&&(1==e.nodeType&&(f=d(e),e=e.parentNode,a.remove(g)),b[c?"startContainer":"endContainer"]=e,b[c?"startOffset":"endOffset"]=f)}c(!0),c();var d=a.createRng();return d.setStart(b.startContainer,b.startOffset),b.endContainer&&d.setEnd(b.endContainer,b.endOffset),d};return{create:a,resolve:b}}),h("v",tinymce.dom.TreeWalker),h("w",tinymce.dom.RangeUtils),g("q",["u","c","v","w"],function(a,b,c,d){var e=function(a,b,d){var e,f,g=[];for(e=new c(b,a),f=b;f&&(1===f.nodeType&&g.push(f),f!==d);f=e.next());return g},f=function(c,d){var e,f,g;f=c.dom,g=c.selection,e=a.create(f,g.getRng()),b.each(d,function(a){c.dom.remove(a,!0)}),g.setRng(a.resolve(f,e))},g=function(a){return"A"===a.nodeName&&a.hasAttribute("href")},h=function(a,b){var c=a.getParent(b,g);return c?c:b},i=function(a){var c,f,i,j,k,l,m;return k=a.selection,l=a.dom,m=k.getRng(),c=h(l,d.getNode(m.startContainer,m.startOffset)),f=d.getNode(m.endContainer,m.endOffset),i=a.getBody(),j=b.grep(e(i,c,f),g)},j=function(a){f(a,i(a))};return{unlinkSelection:j}}),g("m",["p","q"],function(a,b){var c=function(a,b){var c,d,e;for(e='
    ").append(a("").attr("data-action","today").append(a("").addClass(d.icons.today)))),!d.sideBySide&&z()&&y()&&b.push(a("").append(a("").attr("data-action","togglePicker").append(a("").addClass(d.icons.time)))),d.showClear&&b.push(a("").append(a("").attr("data-action","clear").append(a("").addClass(d.icons.clear)))),d.showClose&&b.push(a("").append(a("").attr("data-action","close").append(a("").addClass(d.icons.close)))),a("").addClass("table-condensed").append(a("").append(a("").append(b)))},E=function(){var b=a("
    ").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("
    ").addClass("datepicker").append(A()),e=a("
    ").addClass("timepicker").append(C()),g=a("
      ").addClass("list-unstyled"),h=a("
    • ").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(D());return d.inline&&b.removeClass("dropdown-menu"),f&&b.addClass("usetwentyfour"),d.sideBySide&&z()&&y()?(b.addClass("timepicker-sbs"),b.append(a("
      ").addClass("row").append(c.addClass("col-sm-6")).append(e.addClass("col-sm-6"))),b.append(h),b):("top"===d.toolbarPlacement&&g.append(h),z()&&g.append(a("
    • ").addClass(d.collapse&&y()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&g.append(h),y()&&g.append(a("
    • ").addClass(d.collapse&&z()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&g.append(h),b.append(g))},F=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},G=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.parent().append(o);else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"relative"!==b.css("position")&&(b=b.parents().filter(function(){return"relative"===a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a relative positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?e.top+c.outerHeight():"auto",left:"left"===h?b.css("padding-left"):"auto",right:"left"===h?"auto":b.width()-c.outerWidth()})},H=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},I=function(a){o&&(a&&(i=Math.max(p,Math.min(2,i+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[i].clsName).show())},J=function(){var b=a("
    "),c=l.clone().startOf("w");for(d.calendarWeeks===!0&&b.append(a(""),d.calendarWeeks&&e.append('"),i.push(e)),f="",c.isBefore(l,"M")&&(f+=" old"),c.isAfter(l,"M")&&(f+=" new"),c.isSame(k,"d")&&!m&&(f+=" active"),M(c,"d")||(f+=" disabled"),c.isSame(b(),"d")&&(f+=" today"),(0===c.day()||6===c.day())&&(f+=" weekend"),e.append('"),c.add(1,"d");g.find("tbody").empty().append(i),O(),P()}},R=function(){var b=o.find(".timepicker-hours table"),c=l.clone().startOf("d"),d=[],e=a("");for(l.hour()>11&&!f&&c.hour(12);c.isSame(l,"d")&&(f||l.hour()<12&&c.hour()<12||l.hour()>11);)c.hour()%4===0&&(e=a(""),d.push(e)),e.append('"),c.add(1,"h");b.empty().append(d)},S=function(){for(var b=o.find(".timepicker-minutes table"),c=l.clone().startOf("h"),e=[],f=a(""),g=1===d.stepping?5:d.stepping;l.isSame(c,"h");)c.minute()%(4*g)===0&&(f=a(""),e.push(f)),f.append('"),c.add(g,"m");b.empty().append(e)},T=function(){for(var b=o.find(".timepicker-seconds table"),c=l.clone().startOf("m"),d=[],e=a("");l.isSame(c,"m");)c.second()%20===0&&(e=a(""),d.push(e)),e.append('"),c.add(5,"s");b.empty().append(d)},U=function(){var a=o.find(".timepicker span[data-time-component]");f||o.find(".timepicker [data-action=togglePeriod]").text(k.format("A")),a.filter("[data-time-component=hours]").text(k.format(f?"HH":"hh")),a.filter("[data-time-component=minutes]").text(k.format("mm")),a.filter("[data-time-component=seconds]").text(k.format("ss")),R(),S(),T()},V=function(){o&&(Q(),U())},W=function(a){var b=m?null:k;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(M(a)?(k=a,l=k.clone(),e.val(k.format(g)),c.data("date",k.format(g)),V(),m=!1,H({type:"dp.change",date:k.clone(),oldDate:b})):(d.keepInvalid||e.val(m?"":k.format(g)),H({type:"dp.error",date:a})))):(m=!0,e.val(""),c.data("date",""),H({type:"dp.change",date:null,oldDate:b}),void V())},X=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?j:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",G),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,H({type:"dp.hide",date:k.clone()}),j)):j},Y=function(){W(null)},Z={next:function(){l.add(q[i].navStep,q[i].navFnc),Q()},previous:function(){l.subtract(q[i].navStep,q[i].navFnc),Q()},pickerSwitch:function(){I(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));l.month(c),i===p?(W(k.clone().year(l.year()).month(l.month())),d.inline||X()):(I(-1),Q())},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;l.year(c),i===p?(W(k.clone().year(l.year())),d.inline||X()):(I(-1),Q())},selectDay:function(b){var c=l.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),W(c.date(parseInt(a(b.target).text(),10))),y()||d.keepOpen||d.inline||X()},incrementHours:function(){W(k.clone().add(1,"h"))},incrementMinutes:function(){W(k.clone().add(d.stepping,"m"))},incrementSeconds:function(){W(k.clone().add(1,"s"))},decrementHours:function(){W(k.clone().subtract(1,"h"))},decrementMinutes:function(){W(k.clone().subtract(d.stepping,"m"))},decrementSeconds:function(){W(k.clone().subtract(1,"s"))},togglePeriod:function(){W(k.clone().add(k.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);f||(k.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),W(k.clone().hours(c)),Z.showPicker.call(j)},selectMinute:function(b){W(k.clone().minutes(parseInt(a(b.target).text(),10))),Z.showPicker.call(j)},selectSecond:function(b){W(k.clone().seconds(parseInt(a(b.target).text(),10))),Z.showPicker.call(j)},clear:Y,today:function(){W(b())},close:X},$=function(b){return a(b.currentTarget).is(".disabled")?!1:(Z[a(b.currentTarget).data("action")].apply(j,arguments),!1)},_=function(){var c,f={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return e.prop("disabled")||!d.ignoreReadonly&&e.prop("readonly")||o?j:(d.useCurrent&&m&&(e.is("input")&&0===e.val().trim().length||d.inline)&&(c=b(),"string"==typeof d.useCurrent&&(c=f[d.useCurrent](c)),W(c)),o=E(),J(),N(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),V(),I(),a(window).on("resize",G),o.on("click","[data-action]",$),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),o.show(),G(),e.is(":focus")||e.focus(),H({type:"dp.show"}),j)},ab=function(){return o?X():_()},bb=function(a){return a=b.isMoment(a)||a instanceof Date?b(a):b(a,h,d.useStrict),a.locale(d.locale),a},cb=function(a){var b,c,e,f,g=null,h=[],i={},k=a.which,l="p";w[k]=l;for(b in w)w.hasOwnProperty(b)&&w[b]===l&&(h.push(b),parseInt(b,10)!==k&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[k]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(j,o),a.stopPropagation(),a.preventDefault())},db=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},eb=function(b){var c=a(b.target).val().trim(),d=c?bb(c):null;return W(d),b.stopImmediatePropagation(),!1},fb=function(){e.on({change:eb,blur:d.debug?"":X,keydown:cb,keyup:db}),c.is("input")?e.on({focus:_}):n&&(n.on("click",ab),n.on("mousedown",!1))},gb=function(){e.off({change:eb,blur:X,keydown:cb,keyup:db}),c.is("input")?e.off({focus:_}):n&&(n.off("click",ab),n.off("mousedown",!1))},hb=function(b){var c={};return a.each(b,function(){var a=bb(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},ib=function(){var a=d.format||"L LT";g=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=k.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return k.localeData().longDateFormat(a)||a})}),h=d.extraFormats?d.extraFormats.slice():[],h.indexOf(a)<0&&h.indexOf(g)<0&&h.push(g),f=g.toLowerCase().indexOf("a")<1&&g.indexOf("h")<1,x("y")&&(p=2),x("M")&&(p=1),x("d")&&(p=0),i=Math.max(p,i),m||W(k)};if(j.destroy=function(){X(),gb(),c.removeData("DateTimePicker"),c.removeData("date")},j.toggle=ab,j.show=_,j.hide=X,j.disable=function(){return X(),n&&n.hasClass("btn")&&n.addClass("disabled"),e.prop("disabled",!0),j},j.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),e.prop("disabled",!1),j},j.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,j},j.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===j[a])throw new TypeError("option "+a+" is not recognized!");j[a](b)}),j},j.date=function(a){if(0===arguments.length)return m?null:k.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return W(null===a?null:bb(a)),j},j.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a sting or boolean:false parameter "+a);return d.format=a,g&&ib(),j},j.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,j},j.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,h&&ib(),j},j.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,V(),j;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=hb(b),d.enabledDates=!1,V(),j},j.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,V(),j;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=hb(b),d.disabledDates=!1,V(),j},j.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");return d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),V(),j},j.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,V(),j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=bb(a);if(!c.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&c.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+c.format(g));return d.maxDate=c,d.maxDate.isBefore(a)&&W(d.maxDate),l.isAfter(c)&&(l=c.clone()),V(),j},j.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,V(),j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=bb(a);if(!c.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&c.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+c.format(g));return d.minDate=c,d.minDate.isAfter(a)&&W(d.minDate),l.isBefore(c)&&(l=c.clone()),V(),j},j.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=bb(a);if(!c.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!M(c))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=c,d.defaultDate&&""===e.val().trim()&&void 0===e.attr("placeholder")&&W(d.defaultDate),j},j.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,k.locale(d.locale),l.locale(d.locale),g&&ib(),o&&(X(),_()),j},j.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,j)},j.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,j},j.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?j:(d.collapse=a,o&&(X(),_()),j)},j.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(X(),_()),j},j.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,j},j.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(X(),_()),j},j.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,i=Math.max(r.indexOf(a),p),I(),j},j.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(X(),_()),j},j.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return V(),j},j.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,V(),j},j.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(X(),_()),j},j.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(X(),_()),j},j.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(X(),_()),j},j.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,j},j.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,j},j.clear=function(){return Y(),j},j.keyBinds=function(a){return d.keyBinds=a,j},j.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,j},j.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,j},j.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");return d.keepInvalid=a,j},j.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,j},c.is("input"))e=c;else if(e=c.find(d.datepickerInput),0===e.size())e=c.find("input");else if(!e.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=c.find(0===c.find(".datepickerbutton").size()?'[class^="input-group-"]':".datepickerbutton")),!d.inline&&!e.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return a.extend(!0,d,F()),j.options(d),ib(),fb(),e.prop("disabled")&&j.disable(),e.is("input")&&0!==e.val().trim().length?W(bb(e.val().trim())):d.defaultDate&&void 0===e.attr("placeholder")&&W(d.defaultDate),d.inline&&_(),j};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data("DateTimePicker")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data("DateTimePicker",c(d,b)))})},a.fn.datetimepicker.defaults={format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:[],calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().subtract(7,"d"):c.clone().add(1,"m"))}},down:function(a){if(!a)return void this.show();var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().add(7,"d"):c.clone().subtract(1,"m"))},"control up":function(a){if(a){var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().subtract(1,"y"):c.clone().add(1,"h"))}},"control down":function(a){if(a){var c=this.date()||b();this.date(a.find(".datepicker").is(":visible")?c.clone().add(1,"y"):c.clone().subtract(1,"h"))}},left:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().subtract(1,"d"))}},right:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().add(1,"d"))}},pageUp:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(b())},"delete":function(){this.clear()}},debug:!1}}); \ No newline at end of file diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/build/nuget/Bootstrap.v3.Datetimepicker.4.0.0.nupkg b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/nuget/Bootstrap.v3.Datetimepicker.4.0.0.nupkg new file mode 100755 index 0000000000000000000000000000000000000000..f38538a53e8a2a2f3bfc726c119340192c96fed1 GIT binary patch literal 23451 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 literal 0 HcmV?d00001 diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/build/nuget/Bootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg b/www/bower_components/eonasdan-bootstrap-datetimepicker/build/nuget/Bootstrap.v3.Datetimepicker.CSS.4.0.0.nupkg new file mode 100755 index 0000000000000000000000000000000000000000..d10e267cfcd686ecaf8318f1ad27aa7f48f48bf4 GIT binary patch literal 24328 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 V)lkO5J{g9KdhMY~bjRrA>>op--F5%~ literal 0 HcmV?d00001 diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/component.json b/www/bower_components/eonasdan-bootstrap-datetimepicker/component.json new file mode 100755 index 0000000..c39ee58 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/component.json @@ -0,0 +1,9 @@ +{ + "name": "bootstrap-datetimepicker", + "version": "4.7.14", + "main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js","src/less/_bootstrap-datetimepicker.less","src/less/bootstrap-datetimepicker-build.less","src/js/bootstrap-datetimepicker.js"], + "dependencies": { + "jquery" : ">=1.8.3", + "moment": ">=2.8.0" + } +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/composer.json b/www/bower_components/eonasdan-bootstrap-datetimepicker/composer.json new file mode 100755 index 0000000..85655b7 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/composer.json @@ -0,0 +1,31 @@ +{ + "name": "eonasdan/bootstrap-datetimepicker", + "type": "component", + "version": "4.7.14", + "description": "Date/time picker widget based on twitter bootstrap", + "keywords": [ + "bootstrap", + "datetimepicker" + ], + "homepage": "http://eonasdan.github.io/bootstrap-datetimepicker/", + "license": "MIT", + "require": { + "robloach/component-installer": "*", + "components/jquery": ">=1.9.1", + "moment/moment": ">=2.8" + }, + "extra": { + "component": { + "scripts": [ + "src/js/bootstrap-datetimepicker.js" + ], + "files": [ + "build/js/bootstrap-datetimepicker.min.js", + "build/css/bootstrap-datetimepicker.css", + "build/css/bootstrap-datetimepicker.min.css", + "src/less/_bootstrap-datetimepicker.less", + "src/less/bootstrap-datetimepicker-build.less" + ] + } + } +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/package.json b/www/bower_components/eonasdan-bootstrap-datetimepicker/package.json new file mode 100755 index 0000000..52c5db4 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/package.json @@ -0,0 +1,35 @@ +{ + "name": "bootstrap-datetimepicker", + "main": "src/js/bootstrap-datetimepicker.js", + "version": "4.7.14", + "repository": { + "type": "git", + "url": "https://github.com/eonasdan/bootstrap-datetimepicker.git" + }, + "bugs": { + "url": "https://github.com/eonasdan/bootstrap-datetimepicker/issues" + }, + "keywords": [ + "twitter-bootstrap", + "bootstrap", + "datepicker", + "datetimepicker", + "timepicker", + "moment" + ], + "dependencies": { + "moment": "~2.8.2", + "bootstrap": "^3.0", + "jquery": "latest" + }, + "devDependencies": { + "grunt": "latest", + "grunt-contrib-jasmine": "^0.7.0", + "grunt-contrib-jshint": "latest", + "grunt-contrib-less": "latest", + "grunt-contrib-uglify": "latest", + "grunt-jscs": "latest", + "grunt-string-replace": "latest", + "load-grunt-tasks": "latest" + } +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js new file mode 100755 index 0000000..4df14e4 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js @@ -0,0 +1,2051 @@ +/*! version : 4.7.14 + ========================================================= + bootstrap-datetimejs + https://github.com/Eonasdan/bootstrap-datetimepicker + Copyright (c) 2015 Jonathan Peterson + ========================================================= + */ +/* + The MIT License (MIT) + + Copyright (c) 2015 Jonathan Peterson + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + */ +/*global define:false */ +/*global exports:false */ +/*global require:false */ +/*global jQuery:false */ +/*global moment:false */ +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // AMD is used - Register as an anonymous module. + define(['jquery', 'moment'], factory); + } else if (typeof exports === 'object') { + factory(require('jquery'), require('moment')); + } else { + // Neither AMD nor CommonJS used. Use global variables. + if (typeof jQuery === 'undefined') { + throw 'bootstrap-datetimepicker requires jQuery to be loaded first'; + } + if (typeof moment === 'undefined') { + throw 'bootstrap-datetimepicker requires Moment.js to be loaded first'; + } + factory(jQuery, moment); + } +}(function ($, moment) { + 'use strict'; + if (!moment) { + throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first'); + } + + var dateTimePicker = function (element, options) { + var picker = {}, + date = moment().startOf('d'), + viewDate = date.clone(), + unset = true, + input, + component = false, + widget = false, + use24Hours, + minViewModeNumber = 0, + actualFormat, + parseFormats, + currentViewMode, + datePickerModes = [ + { + clsName: 'days', + navFnc: 'M', + navStep: 1 + }, + { + clsName: 'months', + navFnc: 'y', + navStep: 1 + }, + { + clsName: 'years', + navFnc: 'y', + navStep: 10 + } + ], + viewModes = ['days', 'months', 'years'], + verticalModes = ['top', 'bottom', 'auto'], + horizontalModes = ['left', 'right', 'auto'], + toolbarPlacements = ['default', 'top', 'bottom'], + keyMap = { + 'up': 38, + 38: 'up', + 'down': 40, + 40: 'down', + 'left': 37, + 37: 'left', + 'right': 39, + 39: 'right', + 'tab': 9, + 9: 'tab', + 'escape': 27, + 27: 'escape', + 'enter': 13, + 13: 'enter', + 'pageUp': 33, + 33: 'pageUp', + 'pageDown': 34, + 34: 'pageDown', + 'shift': 16, + 16: 'shift', + 'control': 17, + 17: 'control', + 'space': 32, + 32: 'space', + 't': 84, + 84: 't', + 'delete': 46, + 46: 'delete' + }, + keyState = {}, + + /******************************************************************************** + * + * Private functions + * + ********************************************************************************/ + isEnabled = function (granularity) { + if (typeof granularity !== 'string' || granularity.length > 1) { + throw new TypeError('isEnabled expects a single character string parameter'); + } + switch (granularity) { + case 'y': + return actualFormat.indexOf('Y') !== -1; + case 'M': + return actualFormat.indexOf('M') !== -1; + case 'd': + return actualFormat.toLowerCase().indexOf('d') !== -1; + case 'h': + case 'H': + return actualFormat.toLowerCase().indexOf('h') !== -1; + case 'm': + return actualFormat.indexOf('m') !== -1; + case 's': + return actualFormat.indexOf('s') !== -1; + default: + return false; + } + }, + + hasTime = function () { + return (isEnabled('h') || isEnabled('m') || isEnabled('s')); + }, + + hasDate = function () { + return (isEnabled('y') || isEnabled('M') || isEnabled('d')); + }, + + getDatePickerTemplate = function () { + var headTemplate = $('') + .append($('') + .append($('') + .append($('') + .append($('"}var d,e,f,g,h,k,l,m,n=this,o=n._id,p=0;for(m=n.settings.origin,d=c(m),d.push({text:tinymce.translate("No color"),color:"transparent"}),f='
    ").addClass("cw").text("#"));c.isBefore(l.clone().endOf("w"));)b.append(a("").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},K=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},L=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},M=function(a,b){return a.isValid()?d.disabledDates&&K(a)&&"M"!==b?!1:d.enabledDates&&!L(a)&&"M"!==b?!1:d.minDate&&a.isBefore(d.minDate,b)?!1:d.maxDate&&a.isAfter(d.maxDate,b)?!1:"d"===b&&-1!==d.daysOfWeekDisabled.indexOf(a.day())?!1:!0:!1},N=function(){for(var b=[],c=l.clone().startOf("y").hour(12);c.isSame(l,"y");)b.push(a("").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},O=function(){var b=o.find(".datepicker-months"),c=b.find("th"),d=b.find("tbody").find("span");b.find(".disabled").removeClass("disabled"),M(l.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(l.year()),M(l.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),d.removeClass("active"),k.isSame(l,"y")&&d.eq(k.month()).addClass("active"),d.each(function(b){M(l.clone().month(b),"M")||a(this).addClass("disabled")})},P=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=l.clone().subtract(5,"y"),e=l.clone().add(6,"y"),f="";for(a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+e.year()),d.maxDate&&d.maxDate.isBefore(e,"y")&&b.eq(2).addClass("disabled");!c.isAfter(e,"y");)f+=''+c.year()+"",c.add(1,"y");a.find("td").html(f)},Q=function(){var c,e,f,g=o.find(".datepicker-days"),h=g.find("th"),i=[];if(z()){for(g.find(".disabled").removeClass("disabled"),h.eq(1).text(l.format(d.dayViewHeaderFormat)),M(l.clone().subtract(1,"M"),"M")||h.eq(0).addClass("disabled"),M(l.clone().add(1,"M"),"M")||h.eq(2).addClass("disabled"),c=l.clone().startOf("M").startOf("week");!l.clone().endOf("M").endOf("w").isBefore(c,"d");)0===c.weekday()&&(e=a("
    '+c.week()+"'+c.date()+"
    '+c.format(f?"HH":"hh")+"
    '+c.format("mm")+"
    '+c.format("ss")+"
    ').addClass('prev').attr('data-action', 'previous') + .append($('').addClass(options.icons.previous)) + ) + .append($('').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', (options.calendarWeeks ? '6' : '5'))) + .append($('').addClass('next').attr('data-action', 'next') + .append($('').addClass(options.icons.next)) + ) + ), + contTemplate = $('
    ').attr('colspan', (options.calendarWeeks ? '8' : '7'))) + ); + + return [ + $('
    ').addClass('datepicker-days') + .append($('').addClass('table-condensed') + .append(headTemplate) + .append($('')) + ), + $('
    ').addClass('datepicker-months') + .append($('
    ').addClass('table-condensed') + .append(headTemplate.clone()) + .append(contTemplate.clone()) + ), + $('
    ').addClass('datepicker-years') + .append($('
    ').addClass('table-condensed') + .append(headTemplate.clone()) + .append(contTemplate.clone()) + ) + ]; + }, + + getTimePickerMainTemplate = function () { + var topRow = $(''), + middleRow = $(''), + bottomRow = $(''); + + if (isEnabled('h')) { + topRow.append($('",d=0;a>d;d++)e+="";e+=""}return e+="
    ') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'incrementHours') + .append($('').addClass(options.icons.up)))); + middleRow.append($('') + .append($('').addClass('timepicker-hour').attr('data-time-component', 'hours').attr('data-action', 'showHours'))); + bottomRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'decrementHours') + .append($('').addClass(options.icons.down)))); + } + if (isEnabled('m')) { + if (isEnabled('h')) { + topRow.append($('').addClass('separator')); + middleRow.append($('').addClass('separator').html(':')); + bottomRow.append($('').addClass('separator')); + } + topRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'incrementMinutes') + .append($('').addClass(options.icons.up)))); + middleRow.append($('') + .append($('').addClass('timepicker-minute').attr('data-time-component', 'minutes').attr('data-action', 'showMinutes'))); + bottomRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'decrementMinutes') + .append($('').addClass(options.icons.down)))); + } + if (isEnabled('s')) { + if (isEnabled('m')) { + topRow.append($('').addClass('separator')); + middleRow.append($('').addClass('separator').html(':')); + bottomRow.append($('').addClass('separator')); + } + topRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'incrementSeconds') + .append($('').addClass(options.icons.up)))); + middleRow.append($('') + .append($('').addClass('timepicker-second').attr('data-time-component', 'seconds').attr('data-action', 'showSeconds'))); + bottomRow.append($('') + .append($('').attr({href: '#', tabindex: '-1'}).addClass('btn').attr('data-action', 'decrementSeconds') + .append($('').addClass(options.icons.down)))); + } + + if (!use24Hours) { + topRow.append($('').addClass('separator')); + middleRow.append($('') + .append($('').addClass('separator')); + } + + return $('
    ').addClass('timepicker-picker') + .append($('').addClass('table-condensed') + .append([topRow, middleRow, bottomRow])); + }, + + getTimePickerTemplate = function () { + var hoursView = $('
    ').addClass('timepicker-hours') + .append($('
    ').addClass('table-condensed')), + minutesView = $('
    ').addClass('timepicker-minutes') + .append($('
    ').addClass('table-condensed')), + secondsView = $('
    ').addClass('timepicker-seconds') + .append($('
    ').addClass('table-condensed')), + ret = [getTimePickerMainTemplate()]; + + if (isEnabled('h')) { + ret.push(hoursView); + } + if (isEnabled('m')) { + ret.push(minutesView); + } + if (isEnabled('s')) { + ret.push(secondsView); + } + + return ret; + }, + + getToolbar = function () { + var row = []; + if (options.showTodayButton) { + row.push($(''}),a+=""}),a+="
    ').append($('').attr('data-action', 'today').append($('').addClass(options.icons.today)))); + } + if (!options.sideBySide && hasDate() && hasTime()) { + row.push($('').append($('').attr('data-action', 'togglePicker').append($('').addClass(options.icons.time)))); + } + if (options.showClear) { + row.push($('').append($('').attr('data-action', 'clear').append($('').addClass(options.icons.clear)))); + } + if (options.showClose) { + row.push($('').append($('').attr('data-action', 'close').append($('').addClass(options.icons.close)))); + } + return $('').addClass('table-condensed').append($('').append($('').append(row))); + }, + + getTemplate = function () { + var template = $('
    ').addClass('bootstrap-datetimepicker-widget dropdown-menu'), + dateView = $('
    ').addClass('datepicker').append(getDatePickerTemplate()), + timeView = $('
    ').addClass('timepicker').append(getTimePickerTemplate()), + content = $('
      ').addClass('list-unstyled'), + toolbar = $('
    • ').addClass('picker-switch' + (options.collapse ? ' accordion-toggle' : '')).append(getToolbar()); + + if (options.inline) { + template.removeClass('dropdown-menu'); + } + + if (use24Hours) { + template.addClass('usetwentyfour'); + } + if (options.sideBySide && hasDate() && hasTime()) { + template.addClass('timepicker-sbs'); + template.append( + $('
      ').addClass('row') + .append(dateView.addClass('col-sm-6')) + .append(timeView.addClass('col-sm-6')) + ); + template.append(toolbar); + return template; + } + + if (options.toolbarPlacement === 'top') { + content.append(toolbar); + } + if (hasDate()) { + content.append($('
    • ').addClass((options.collapse && hasTime() ? 'collapse in' : '')).append(dateView)); + } + if (options.toolbarPlacement === 'default') { + content.append(toolbar); + } + if (hasTime()) { + content.append($('
    • ').addClass((options.collapse && hasDate() ? 'collapse' : '')).append(timeView)); + } + if (options.toolbarPlacement === 'bottom') { + content.append(toolbar); + } + return template.append(content); + }, + + dataToOptions = function () { + var eData, + dataOptions = {}; + + if (element.is('input') || options.inline) { + eData = element.data(); + } else { + eData = element.find('input').data(); + } + + if (eData.dateOptions && eData.dateOptions instanceof Object) { + dataOptions = $.extend(true, dataOptions, eData.dateOptions); + } + + $.each(options, function (key) { + var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1); + if (eData[attributeName] !== undefined) { + dataOptions[key] = eData[attributeName]; + } + }); + return dataOptions; + }, + + place = function () { + var position = (component || element).position(), + offset = (component || element).offset(), + vertical = options.widgetPositioning.vertical, + horizontal = options.widgetPositioning.horizontal, + parent; + + if (options.widgetParent) { + parent = options.widgetParent.append(widget); + } else if (element.is('input')) { + parent = element.parent().append(widget); + } else if (options.inline) { + parent = element.append(widget); + return; + } else { + parent = element; + element.children().first().after(widget); + } + + // Top and bottom logic + if (vertical === 'auto') { + if (offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && + widget.height() + element.outerHeight() < offset.top) { + vertical = 'top'; + } else { + vertical = 'bottom'; + } + } + + // Left and right logic + if (horizontal === 'auto') { + if (parent.width() < offset.left + widget.outerWidth() / 2 && + offset.left + widget.outerWidth() > $(window).width()) { + horizontal = 'right'; + } else { + horizontal = 'left'; + } + } + + if (vertical === 'top') { + widget.addClass('top').removeClass('bottom'); + } else { + widget.addClass('bottom').removeClass('top'); + } + + if (horizontal === 'right') { + widget.addClass('pull-right'); + } else { + widget.removeClass('pull-right'); + } + + // find the first parent element that has a relative css positioning + if (parent.css('position') !== 'relative') { + parent = parent.parents().filter(function () { + return $(this).css('position') === 'relative'; + }).first(); + } + + if (parent.length === 0) { + throw new Error('datetimepicker component should be placed within a relative positioned container'); + } + + widget.css({ + top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(), + bottom: vertical === 'top' ? position.top + element.outerHeight() : 'auto', + left: horizontal === 'left' ? parent.css('padding-left') : 'auto', + right: horizontal === 'left' ? 'auto' : parent.width() - element.outerWidth() + }); + }, + + notifyEvent = function (e) { + if (e.type === 'dp.change' && ((e.date && e.date.isSame(e.oldDate)) || (!e.date && !e.oldDate))) { + return; + } + element.trigger(e); + }, + + showMode = function (dir) { + if (!widget) { + return; + } + if (dir) { + currentViewMode = Math.max(minViewModeNumber, Math.min(2, currentViewMode + dir)); + } + widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show(); + }, + + fillDow = function () { + var row = $('
    '), + currentDate = viewDate.clone().startOf('w'); + + if (options.calendarWeeks === true) { + row.append($(''); + if (options.calendarWeeks) { + row.append(''); + } + html.push(row); + } + clsName = ''; + if (currentDate.isBefore(viewDate, 'M')) { + clsName += ' old'; + } + if (currentDate.isAfter(viewDate, 'M')) { + clsName += ' new'; + } + if (currentDate.isSame(date, 'd') && !unset) { + clsName += ' active'; + } + if (!isValid(currentDate, 'd')) { + clsName += ' disabled'; + } + if (currentDate.isSame(moment(), 'd')) { + clsName += ' today'; + } + if (currentDate.day() === 0 || currentDate.day() === 6) { + clsName += ' weekend'; + } + row.append(''); + currentDate.add(1, 'd'); + } + + daysView.find('tbody').empty().append(html); + + updateMonths(); + + updateYears(); + }, + + fillHours = function () { + var table = widget.find('.timepicker-hours table'), + currentHour = viewDate.clone().startOf('d'), + html = [], + row = $(''); + + if (viewDate.hour() > 11 && !use24Hours) { + currentHour.hour(12); + } + while (currentHour.isSame(viewDate, 'd') && (use24Hours || (viewDate.hour() < 12 && currentHour.hour() < 12) || viewDate.hour() > 11)) { + if (currentHour.hour() % 4 === 0) { + row = $(''); + html.push(row); + } + row.append(''); + currentHour.add(1, 'h'); + } + table.empty().append(html); + }, + + fillMinutes = function () { + var table = widget.find('.timepicker-minutes table'), + currentMinute = viewDate.clone().startOf('h'), + html = [], + row = $(''), + step = options.stepping === 1 ? 5 : options.stepping; + + while (viewDate.isSame(currentMinute, 'h')) { + if (currentMinute.minute() % (step * 4) === 0) { + row = $(''); + html.push(row); + } + row.append(''); + currentMinute.add(step, 'm'); + } + table.empty().append(html); + }, + + fillSeconds = function () { + var table = widget.find('.timepicker-seconds table'), + currentSecond = viewDate.clone().startOf('m'), + html = [], + row = $(''); + + while (viewDate.isSame(currentSecond, 'm')) { + if (currentSecond.second() % 20 === 0) { + row = $(''); + html.push(row); + } + row.append(''); + currentSecond.add(5, 's'); + } + + table.empty().append(html); + }, + + fillTime = function () { + var timeComponents = widget.find('.timepicker span[data-time-component]'); + if (!use24Hours) { + widget.find('.timepicker [data-action=togglePeriod]').text(date.format('A')); + } + timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh')); + timeComponents.filter('[data-time-component=minutes]').text(date.format('mm')); + timeComponents.filter('[data-time-component=seconds]').text(date.format('ss')); + + fillHours(); + fillMinutes(); + fillSeconds(); + }, + + update = function () { + if (!widget) { + return; + } + fillDate(); + fillTime(); + }, + + setValue = function (targetMoment) { + var oldDate = unset ? null : date; + + // case of calling setValue(null or false) + if (!targetMoment) { + unset = true; + input.val(''); + element.data('date', ''); + notifyEvent({ + type: 'dp.change', + date: null, + oldDate: oldDate + }); + update(); + return; + } + + targetMoment = targetMoment.clone().locale(options.locale); + + if (options.stepping !== 1) { + targetMoment.minutes((Math.round(targetMoment.minutes() / options.stepping) * options.stepping) % 60).seconds(0); + } + + if (isValid(targetMoment)) { + date = targetMoment; + viewDate = date.clone(); + input.val(date.format(actualFormat)); + element.data('date', date.format(actualFormat)); + update(); + unset = false; + notifyEvent({ + type: 'dp.change', + date: date.clone(), + oldDate: oldDate + }); + } else { + if (!options.keepInvalid) { + input.val(unset ? '' : date.format(actualFormat)); + } + notifyEvent({ + type: 'dp.error', + date: targetMoment + }); + } + }, + + hide = function () { + var transitioning = false; + if (!widget) { + return picker; + } + // Ignore event if in the middle of a picker transition + widget.find('.collapse').each(function () { + var collapseData = $(this).data('collapse'); + if (collapseData && collapseData.transitioning) { + transitioning = true; + return false; + } + return true; + }); + if (transitioning) { + return picker; + } + if (component && component.hasClass('btn')) { + component.toggleClass('active'); + } + widget.hide(); + + $(window).off('resize', place); + widget.off('click', '[data-action]'); + widget.off('mousedown', false); + + widget.remove(); + widget = false; + + notifyEvent({ + type: 'dp.hide', + date: date.clone() + }); + return picker; + }, + + clear = function () { + setValue(null); + }, + + /******************************************************************************** + * + * Widget UI interaction functions + * + ********************************************************************************/ + actions = { + next: function () { + viewDate.add(datePickerModes[currentViewMode].navStep, datePickerModes[currentViewMode].navFnc); + fillDate(); + }, + + previous: function () { + viewDate.subtract(datePickerModes[currentViewMode].navStep, datePickerModes[currentViewMode].navFnc); + fillDate(); + }, + + pickerSwitch: function () { + showMode(1); + }, + + selectMonth: function (e) { + var month = $(e.target).closest('tbody').find('span').index($(e.target)); + viewDate.month(month); + if (currentViewMode === minViewModeNumber) { + setValue(date.clone().year(viewDate.year()).month(viewDate.month())); + if (!options.inline) { + hide(); + } + } else { + showMode(-1); + fillDate(); + } + }, + + selectYear: function (e) { + var year = parseInt($(e.target).text(), 10) || 0; + viewDate.year(year); + if (currentViewMode === minViewModeNumber) { + setValue(date.clone().year(viewDate.year())); + if (!options.inline) { + hide(); + } + } else { + showMode(-1); + fillDate(); + } + }, + + selectDay: function (e) { + var day = viewDate.clone(); + if ($(e.target).is('.old')) { + day.subtract(1, 'M'); + } + if ($(e.target).is('.new')) { + day.add(1, 'M'); + } + setValue(day.date(parseInt($(e.target).text(), 10))); + if (!hasTime() && !options.keepOpen && !options.inline) { + hide(); + } + }, + + incrementHours: function () { + setValue(date.clone().add(1, 'h')); + }, + + incrementMinutes: function () { + setValue(date.clone().add(options.stepping, 'm')); + }, + + incrementSeconds: function () { + setValue(date.clone().add(1, 's')); + }, + + decrementHours: function () { + setValue(date.clone().subtract(1, 'h')); + }, + + decrementMinutes: function () { + setValue(date.clone().subtract(options.stepping, 'm')); + }, + + decrementSeconds: function () { + setValue(date.clone().subtract(1, 's')); + }, + + togglePeriod: function () { + setValue(date.clone().add((date.hours() >= 12) ? -12 : 12, 'h')); + }, + + togglePicker: function (e) { + var $this = $(e.target), + $parent = $this.closest('ul'), + expanded = $parent.find('.in'), + closed = $parent.find('.collapse:not(.in)'), + collapseData; + + if (expanded && expanded.length) { + collapseData = expanded.data('collapse'); + if (collapseData && collapseData.transitioning) { + return; + } + if (expanded.collapse) { // if collapse plugin is available through bootstrap.js then use it + expanded.collapse('hide'); + closed.collapse('show'); + } else { // otherwise just toggle in class on the two views + expanded.removeClass('in'); + closed.addClass('in'); + } + if ($this.is('span')) { + $this.toggleClass(options.icons.time + ' ' + options.icons.date); + } else { + $this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date); + } + + // NOTE: uncomment if toggled state will be restored in show() + //if (component) { + // component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date); + //} + } + }, + + showPicker: function () { + widget.find('.timepicker > div:not(.timepicker-picker)').hide(); + widget.find('.timepicker .timepicker-picker').show(); + }, + + showHours: function () { + widget.find('.timepicker .timepicker-picker').hide(); + widget.find('.timepicker .timepicker-hours').show(); + }, + + showMinutes: function () { + widget.find('.timepicker .timepicker-picker').hide(); + widget.find('.timepicker .timepicker-minutes').show(); + }, + + showSeconds: function () { + widget.find('.timepicker .timepicker-picker').hide(); + widget.find('.timepicker .timepicker-seconds').show(); + }, + + selectHour: function (e) { + var hour = parseInt($(e.target).text(), 10); + + if (!use24Hours) { + if (date.hours() >= 12) { + if (hour !== 12) { + hour += 12; + } + } else { + if (hour === 12) { + hour = 0; + } + } + } + setValue(date.clone().hours(hour)); + actions.showPicker.call(picker); + }, + + selectMinute: function (e) { + setValue(date.clone().minutes(parseInt($(e.target).text(), 10))); + actions.showPicker.call(picker); + }, + + selectSecond: function (e) { + setValue(date.clone().seconds(parseInt($(e.target).text(), 10))); + actions.showPicker.call(picker); + }, + + clear: clear, + + today: function () { + setValue(moment()); + }, + + close: hide + }, + + doAction = function (e) { + if ($(e.currentTarget).is('.disabled')) { + return false; + } + actions[$(e.currentTarget).data('action')].apply(picker, arguments); + return false; + }, + + show = function () { + var currentMoment, + useCurrentGranularity = { + 'year': function (m) { + return m.month(0).date(1).hours(0).seconds(0).minutes(0); + }, + 'month': function (m) { + return m.date(1).hours(0).seconds(0).minutes(0); + }, + 'day': function (m) { + return m.hours(0).seconds(0).minutes(0); + }, + 'hour': function (m) { + return m.seconds(0).minutes(0); + }, + 'minute': function (m) { + return m.seconds(0); + } + }; + + if (input.prop('disabled') || (!options.ignoreReadonly && input.prop('readonly')) || widget) { + return picker; + } + if (options.useCurrent && unset && ((input.is('input') && input.val().trim().length === 0) || options.inline)) { + currentMoment = moment(); + if (typeof options.useCurrent === 'string') { + currentMoment = useCurrentGranularity[options.useCurrent](currentMoment); + } + setValue(currentMoment); + } + + widget = getTemplate(); + + fillDow(); + fillMonths(); + + widget.find('.timepicker-hours').hide(); + widget.find('.timepicker-minutes').hide(); + widget.find('.timepicker-seconds').hide(); + + update(); + showMode(); + + $(window).on('resize', place); + widget.on('click', '[data-action]', doAction); // this handles clicks on the widget + widget.on('mousedown', false); + + if (component && component.hasClass('btn')) { + component.toggleClass('active'); + } + widget.show(); + place(); + + if (!input.is(':focus')) { + input.focus(); + } + + notifyEvent({ + type: 'dp.show' + }); + return picker; + }, + + toggle = function () { + return (widget ? hide() : show()); + }, + + parseInputDate = function (inputDate) { + if (moment.isMoment(inputDate) || inputDate instanceof Date) { + inputDate = moment(inputDate); + } else { + inputDate = moment(inputDate, parseFormats, options.useStrict); + } + inputDate.locale(options.locale); + return inputDate; + }, + + keydown = function (e) { + //if (e.keyCode === 27 && widget) { // allow escape to hide picker + // hide(); + // return false; + //} + //if (e.keyCode === 40 && !widget) { // allow down to show picker + // show(); + // e.preventDefault(); + //} + //return true; + + var handler = null, + index, + index2, + pressedKeys = [], + pressedModifiers = {}, + currentKey = e.which, + keyBindKeys, + allModifiersPressed, + pressed = 'p'; + + keyState[currentKey] = pressed; + + for (index in keyState) { + if (keyState.hasOwnProperty(index) && keyState[index] === pressed) { + pressedKeys.push(index); + if (parseInt(index, 10) !== currentKey) { + pressedModifiers[index] = true; + } + } + } + + for (index in options.keyBinds) { + if (options.keyBinds.hasOwnProperty(index) && typeof (options.keyBinds[index]) === 'function') { + keyBindKeys = index.split(' '); + if (keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) { + allModifiersPressed = true; + for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) { + if (!(keyMap[keyBindKeys[index2]] in pressedModifiers)) { + allModifiersPressed = false; + break; + } + } + if (allModifiersPressed) { + handler = options.keyBinds[index]; + break; + } + } + } + } + + if (handler) { + handler.call(picker, widget); + e.stopPropagation(); + e.preventDefault(); + } + }, + + keyup = function (e) { + keyState[e.which] = 'r'; + e.stopPropagation(); + e.preventDefault(); + }, + + change = function (e) { + var val = $(e.target).val().trim(), + parsedDate = val ? parseInputDate(val) : null; + setValue(parsedDate); + e.stopImmediatePropagation(); + return false; + }, + + attachDatePickerElementEvents = function () { + input.on({ + 'change': change, + 'blur': options.debug ? '' : hide, + 'keydown': keydown, + 'keyup': keyup + }); + + if (element.is('input')) { + input.on({ + 'focus': show + }); + } else if (component) { + component.on('click', toggle); + component.on('mousedown', false); + } + }, + + detachDatePickerElementEvents = function () { + input.off({ + 'change': change, + 'blur': hide, + 'keydown': keydown, + 'keyup': keyup + }); + + if (element.is('input')) { + input.off({ + 'focus': show + }); + } else if (component) { + component.off('click', toggle); + component.off('mousedown', false); + } + }, + + indexGivenDates = function (givenDatesArray) { + // Store given enabledDates and disabledDates as keys. + // This way we can check their existence in O(1) time instead of looping through whole array. + // (for example: options.enabledDates['2014-02-27'] === true) + var givenDatesIndexed = {}; + $.each(givenDatesArray, function () { + var dDate = parseInputDate(this); + if (dDate.isValid()) { + givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true; + } + }); + return (Object.keys(givenDatesIndexed).length) ? givenDatesIndexed : false; + }, + + initFormatting = function () { + var format = options.format || 'L LT'; + + actualFormat = format.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) { + var newinput = date.localeData().longDateFormat(formatInput) || formatInput; + return newinput.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput2) { //temp fix for #740 + return date.localeData().longDateFormat(formatInput2) || formatInput2; + }); + }); + + + parseFormats = options.extraFormats ? options.extraFormats.slice() : []; + if (parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0) { + parseFormats.push(actualFormat); + } + + use24Hours = (actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.indexOf('h') < 1); + + if (isEnabled('y')) { + minViewModeNumber = 2; + } + if (isEnabled('M')) { + minViewModeNumber = 1; + } + if (isEnabled('d')) { + minViewModeNumber = 0; + } + + currentViewMode = Math.max(minViewModeNumber, currentViewMode); + + if (!unset) { + setValue(date); + } + }; + + /******************************************************************************** + * + * Public API functions + * ===================== + * + * Important: Do not expose direct references to private objects or the options + * object to the outer world. Always return a clone when returning values or make + * a clone when setting a private variable. + * + ********************************************************************************/ + picker.destroy = function () { + hide(); + detachDatePickerElementEvents(); + element.removeData('DateTimePicker'); + element.removeData('date'); + }; + + picker.toggle = toggle; + + picker.show = show; + + picker.hide = hide; + + picker.disable = function () { + hide(); + if (component && component.hasClass('btn')) { + component.addClass('disabled'); + } + input.prop('disabled', true); + return picker; + }; + + picker.enable = function () { + if (component && component.hasClass('btn')) { + component.removeClass('disabled'); + } + input.prop('disabled', false); + return picker; + }; + + picker.ignoreReadonly = function (ignoreReadonly) { + if (arguments.length === 0) { + return options.ignoreReadonly; + } + if (typeof ignoreReadonly !== 'boolean') { + throw new TypeError('ignoreReadonly () expects a boolean parameter'); + } + options.ignoreReadonly = ignoreReadonly; + return picker; + }; + + picker.options = function (newOptions) { + if (arguments.length === 0) { + return $.extend(true, {}, options); + } + + if (!(newOptions instanceof Object)) { + throw new TypeError('options() options parameter should be an object'); + } + $.extend(true, options, newOptions); + $.each(options, function (key, value) { + if (picker[key] !== undefined) { + picker[key](value); + } else { + throw new TypeError('option ' + key + ' is not recognized!'); + } + }); + return picker; + }; + + picker.date = function (newDate) { + if (arguments.length === 0) { + if (unset) { + return null; + } + return date.clone(); + } + + if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) { + throw new TypeError('date() parameter must be one of [null, string, moment or Date]'); + } + + setValue(newDate === null ? null : parseInputDate(newDate)); + return picker; + }; + + picker.format = function (newFormat) { + if (arguments.length === 0) { + return options.format; + } + + if ((typeof newFormat !== 'string') && ((typeof newFormat !== 'boolean') || (newFormat !== false))) { + throw new TypeError('format() expects a sting or boolean:false parameter ' + newFormat); + } + + options.format = newFormat; + if (actualFormat) { + initFormatting(); // reinit formatting + } + return picker; + }; + + picker.dayViewHeaderFormat = function (newFormat) { + if (arguments.length === 0) { + return options.dayViewHeaderFormat; + } + + if (typeof newFormat !== 'string') { + throw new TypeError('dayViewHeaderFormat() expects a string parameter'); + } + + options.dayViewHeaderFormat = newFormat; + return picker; + }; + + picker.extraFormats = function (formats) { + if (arguments.length === 0) { + return options.extraFormats; + } + + if (formats !== false && !(formats instanceof Array)) { + throw new TypeError('extraFormats() expects an array or false parameter'); + } + + options.extraFormats = formats; + if (parseFormats) { + initFormatting(); // reinit formatting + } + return picker; + }; + + picker.disabledDates = function (dates) { + if (arguments.length === 0) { + return (options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates); + } + + if (!dates) { + options.disabledDates = false; + update(); + return picker; + } + if (!(dates instanceof Array)) { + throw new TypeError('disabledDates() expects an array parameter'); + } + options.disabledDates = indexGivenDates(dates); + options.enabledDates = false; + update(); + return picker; + }; + + picker.enabledDates = function (dates) { + if (arguments.length === 0) { + return (options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates); + } + + if (!dates) { + options.enabledDates = false; + update(); + return picker; + } + if (!(dates instanceof Array)) { + throw new TypeError('enabledDates() expects an array parameter'); + } + options.enabledDates = indexGivenDates(dates); + options.disabledDates = false; + update(); + return picker; + }; + + picker.daysOfWeekDisabled = function (daysOfWeekDisabled) { + if (arguments.length === 0) { + return options.daysOfWeekDisabled.splice(0); + } + + if (!(daysOfWeekDisabled instanceof Array)) { + throw new TypeError('daysOfWeekDisabled() expects an array parameter'); + } + options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function (previousValue, currentValue) { + currentValue = parseInt(currentValue, 10); + if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) { + return previousValue; + } + if (previousValue.indexOf(currentValue) === -1) { + previousValue.push(currentValue); + } + return previousValue; + }, []).sort(); + update(); + return picker; + }; + + picker.maxDate = function (maxDate) { + if (arguments.length === 0) { + return options.maxDate ? options.maxDate.clone() : options.maxDate; + } + + if ((typeof maxDate === 'boolean') && maxDate === false) { + options.maxDate = false; + update(); + return picker; + } + + if (typeof maxDate === 'string') { + if (maxDate === 'now' || maxDate === 'moment') { + maxDate = moment(); + } + } + + var parsedDate = parseInputDate(maxDate); + + if (!parsedDate.isValid()) { + throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate); + } + if (options.minDate && parsedDate.isBefore(options.minDate)) { + throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat)); + } + options.maxDate = parsedDate; + if (options.maxDate.isBefore(maxDate)) { + setValue(options.maxDate); + } + if (viewDate.isAfter(parsedDate)) { + viewDate = parsedDate.clone(); + } + update(); + return picker; + }; + + picker.minDate = function (minDate) { + if (arguments.length === 0) { + return options.minDate ? options.minDate.clone() : options.minDate; + } + + if ((typeof minDate === 'boolean') && minDate === false) { + options.minDate = false; + update(); + return picker; + } + + if (typeof minDate === 'string') { + if (minDate === 'now' || minDate === 'moment') { + minDate = moment(); + } + } + + var parsedDate = parseInputDate(minDate); + + if (!parsedDate.isValid()) { + throw new TypeError('minDate() Could not parse date parameter: ' + minDate); + } + if (options.maxDate && parsedDate.isAfter(options.maxDate)) { + throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat)); + } + options.minDate = parsedDate; + if (options.minDate.isAfter(minDate)) { + setValue(options.minDate); + } + if (viewDate.isBefore(parsedDate)) { + viewDate = parsedDate.clone(); + } + update(); + return picker; + }; + + picker.defaultDate = function (defaultDate) { + if (arguments.length === 0) { + return options.defaultDate ? options.defaultDate.clone() : options.defaultDate; + } + if (!defaultDate) { + options.defaultDate = false; + return picker; + } + + if (typeof defaultDate === 'string') { + if (defaultDate === 'now' || defaultDate === 'moment') { + defaultDate = moment(); + } + } + + var parsedDate = parseInputDate(defaultDate); + if (!parsedDate.isValid()) { + throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate); + } + if (!isValid(parsedDate)) { + throw new TypeError('defaultDate() date passed is invalid according to component setup validations'); + } + + options.defaultDate = parsedDate; + + if (options.defaultDate && input.val().trim() === '' && input.attr('placeholder') === undefined) { + setValue(options.defaultDate); + } + return picker; + }; + + picker.locale = function (locale) { + if (arguments.length === 0) { + return options.locale; + } + + if (!moment.localeData(locale)) { + throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!'); + } + + options.locale = locale; + date.locale(options.locale); + viewDate.locale(options.locale); + + if (actualFormat) { + initFormatting(); // reinit formatting + } + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.stepping = function (stepping) { + if (arguments.length === 0) { + return options.stepping; + } + + stepping = parseInt(stepping, 10); + if (isNaN(stepping) || stepping < 1) { + stepping = 1; + } + options.stepping = stepping; + return picker; + }; + + picker.useCurrent = function (useCurrent) { + var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute']; + if (arguments.length === 0) { + return options.useCurrent; + } + + if ((typeof useCurrent !== 'boolean') && (typeof useCurrent !== 'string')) { + throw new TypeError('useCurrent() expects a boolean or string parameter'); + } + if (typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1) { + throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', ')); + } + options.useCurrent = useCurrent; + return picker; + }; + + picker.collapse = function (collapse) { + if (arguments.length === 0) { + return options.collapse; + } + + if (typeof collapse !== 'boolean') { + throw new TypeError('collapse() expects a boolean parameter'); + } + if (options.collapse === collapse) { + return picker; + } + options.collapse = collapse; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.icons = function (icons) { + if (arguments.length === 0) { + return $.extend({}, options.icons); + } + + if (!(icons instanceof Object)) { + throw new TypeError('icons() expects parameter to be an Object'); + } + $.extend(options.icons, icons); + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.useStrict = function (useStrict) { + if (arguments.length === 0) { + return options.useStrict; + } + + if (typeof useStrict !== 'boolean') { + throw new TypeError('useStrict() expects a boolean parameter'); + } + options.useStrict = useStrict; + return picker; + }; + + picker.sideBySide = function (sideBySide) { + if (arguments.length === 0) { + return options.sideBySide; + } + + if (typeof sideBySide !== 'boolean') { + throw new TypeError('sideBySide() expects a boolean parameter'); + } + options.sideBySide = sideBySide; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.viewMode = function (viewMode) { + if (arguments.length === 0) { + return options.viewMode; + } + + if (typeof viewMode !== 'string') { + throw new TypeError('viewMode() expects a string parameter'); + } + + if (viewModes.indexOf(viewMode) === -1) { + throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value'); + } + + options.viewMode = viewMode; + currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber); + + showMode(); + return picker; + }; + + picker.toolbarPlacement = function (toolbarPlacement) { + if (arguments.length === 0) { + return options.toolbarPlacement; + } + + if (typeof toolbarPlacement !== 'string') { + throw new TypeError('toolbarPlacement() expects a string parameter'); + } + if (toolbarPlacements.indexOf(toolbarPlacement) === -1) { + throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value'); + } + options.toolbarPlacement = toolbarPlacement; + + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.widgetPositioning = function (widgetPositioning) { + if (arguments.length === 0) { + return $.extend({}, options.widgetPositioning); + } + + if (({}).toString.call(widgetPositioning) !== '[object Object]') { + throw new TypeError('widgetPositioning() expects an object variable'); + } + if (widgetPositioning.horizontal) { + if (typeof widgetPositioning.horizontal !== 'string') { + throw new TypeError('widgetPositioning() horizontal variable must be a string'); + } + widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase(); + if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) { + throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')'); + } + options.widgetPositioning.horizontal = widgetPositioning.horizontal; + } + if (widgetPositioning.vertical) { + if (typeof widgetPositioning.vertical !== 'string') { + throw new TypeError('widgetPositioning() vertical variable must be a string'); + } + widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase(); + if (verticalModes.indexOf(widgetPositioning.vertical) === -1) { + throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')'); + } + options.widgetPositioning.vertical = widgetPositioning.vertical; + } + update(); + return picker; + }; + + picker.calendarWeeks = function (calendarWeeks) { + if (arguments.length === 0) { + return options.calendarWeeks; + } + + if (typeof calendarWeeks !== 'boolean') { + throw new TypeError('calendarWeeks() expects parameter to be a boolean value'); + } + + options.calendarWeeks = calendarWeeks; + update(); + return picker; + }; + + picker.showTodayButton = function (showTodayButton) { + if (arguments.length === 0) { + return options.showTodayButton; + } + + if (typeof showTodayButton !== 'boolean') { + throw new TypeError('showTodayButton() expects a boolean parameter'); + } + + options.showTodayButton = showTodayButton; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.showClear = function (showClear) { + if (arguments.length === 0) { + return options.showClear; + } + + if (typeof showClear !== 'boolean') { + throw new TypeError('showClear() expects a boolean parameter'); + } + + options.showClear = showClear; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.widgetParent = function (widgetParent) { + if (arguments.length === 0) { + return options.widgetParent; + } + + if (typeof widgetParent === 'string') { + widgetParent = $(widgetParent); + } + + if (widgetParent !== null && (typeof widgetParent !== 'string' && !(widgetParent instanceof $))) { + throw new TypeError('widgetParent() expects a string or a jQuery object parameter'); + } + + options.widgetParent = widgetParent; + if (widget) { + hide(); + show(); + } + return picker; + }; + + picker.keepOpen = function (keepOpen) { + if (arguments.length === 0) { + return options.keepOpen; + } + + if (typeof keepOpen !== 'boolean') { + throw new TypeError('keepOpen() expects a boolean parameter'); + } + + options.keepOpen = keepOpen; + return picker; + }; + + picker.inline = function (inline) { + if (arguments.length === 0) { + return options.inline; + } + + if (typeof inline !== 'boolean') { + throw new TypeError('inline() expects a boolean parameter'); + } + + options.inline = inline; + return picker; + }; + + picker.clear = function () { + clear(); + return picker; + }; + + picker.keyBinds = function (keyBinds) { + options.keyBinds = keyBinds; + return picker; + }; + + picker.debug = function (debug) { + if (typeof debug !== 'boolean') { + throw new TypeError('debug() expects a boolean parameter'); + } + + options.debug = debug; + return picker; + }; + + picker.showClose = function (showClose) { + if (arguments.length === 0) { + return options.showClose; + } + + if (typeof showClose !== 'boolean') { + throw new TypeError('showClose() expects a boolean parameter'); + } + + options.showClose = showClose; + return picker; + }; + + picker.keepInvalid = function (keepInvalid) { + if (arguments.length === 0) { + return options.keepInvalid; + } + + if (typeof keepInvalid !== 'boolean') { + throw new TypeError('keepInvalid() expects a boolean parameter'); + } + options.keepInvalid = keepInvalid; + return picker; + }; + + picker.datepickerInput = function (datepickerInput) { + if (arguments.length === 0) { + return options.datepickerInput; + } + + if (typeof datepickerInput !== 'string') { + throw new TypeError('datepickerInput() expects a string parameter'); + } + + options.datepickerInput = datepickerInput; + return picker; + }; + + // initializing element and component attributes + if (element.is('input')) { + input = element; + } else { + input = element.find(options.datepickerInput); + if (input.size() === 0) { + input = element.find('input'); + } else if (!input.is('input')) { + throw new Error('CSS class "' + options.datepickerInput + '" cannot be applied to non input element'); + } + } + + if (element.hasClass('input-group')) { + // in case there is more then one 'input-group-addon' Issue #48 + if (element.find('.datepickerbutton').size() === 0) { + component = element.find('[class^="input-group-"]'); + } else { + component = element.find('.datepickerbutton'); + } + } + + if (!options.inline && !input.is('input')) { + throw new Error('Could not initialize DateTimePicker without an input element'); + } + + $.extend(true, options, dataToOptions()); + + picker.options(options); + + initFormatting(); + + attachDatePickerElementEvents(); + + if (input.prop('disabled')) { + picker.disable(); + } + if (input.is('input') && input.val().trim().length !== 0) { + setValue(parseInputDate(input.val().trim())); + } + else if (options.defaultDate && input.attr('placeholder') === undefined) { + setValue(options.defaultDate); + } + if (options.inline) { + show(); + } + return picker; + }; + + /******************************************************************************** + * + * jQuery plugin constructor and defaults object + * + ********************************************************************************/ + + $.fn.datetimepicker = function (options) { + return this.each(function () { + var $this = $(this); + if (!$this.data('DateTimePicker')) { + // create a private copy of the defaults object + options = $.extend(true, {}, $.fn.datetimepicker.defaults, options); + $this.data('DateTimePicker', dateTimePicker($this, options)); + } + }); + }; + + $.fn.datetimepicker.defaults = { + format: false, + dayViewHeaderFormat: 'MMMM YYYY', + extraFormats: false, + stepping: 1, + minDate: false, + maxDate: false, + useCurrent: true, + collapse: true, + locale: moment.locale(), + defaultDate: false, + disabledDates: false, + enabledDates: false, + icons: { + time: 'glyphicon glyphicon-time', + date: 'glyphicon glyphicon-calendar', + up: 'glyphicon glyphicon-chevron-up', + down: 'glyphicon glyphicon-chevron-down', + previous: 'glyphicon glyphicon-chevron-left', + next: 'glyphicon glyphicon-chevron-right', + today: 'glyphicon glyphicon-screenshot', + clear: 'glyphicon glyphicon-trash', + close: 'glyphicon glyphicon-remove' + }, + useStrict: false, + sideBySide: false, + daysOfWeekDisabled: [], + calendarWeeks: false, + viewMode: 'days', + toolbarPlacement: 'default', + showTodayButton: false, + showClear: false, + showClose: false, + widgetPositioning: { + horizontal: 'auto', + vertical: 'auto' + }, + widgetParent: null, + ignoreReadonly: false, + keepOpen: false, + inline: false, + keepInvalid: false, + datepickerInput: '.datepickerinput', + keyBinds: { + up: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(7, 'd')); + } else { + this.date(d.clone().add(1, 'm')); + } + }, + down: function (widget) { + if (!widget) { + this.show(); + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(7, 'd')); + } else { + this.date(d.clone().subtract(1, 'm')); + } + }, + 'control up': function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(1, 'y')); + } else { + this.date(d.clone().add(1, 'h')); + } + }, + 'control down': function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(1, 'y')); + } else { + this.date(d.clone().subtract(1, 'h')); + } + }, + left: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(1, 'd')); + } + }, + right: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(1, 'd')); + } + }, + pageUp: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().subtract(1, 'M')); + } + }, + pageDown: function (widget) { + if (!widget) { + return; + } + var d = this.date() || moment(); + if (widget.find('.datepicker').is(':visible')) { + this.date(d.clone().add(1, 'M')); + } + }, + enter: function () { + this.hide(); + }, + escape: function () { + this.hide(); + }, + //tab: function (widget) { //this break the flow of the form. disabling for now + // var toggle = widget.find('.picker-switch a[data-action="togglePicker"]'); + // if(toggle.length > 0) toggle.click(); + //}, + 'control space': function (widget) { + if (widget.find('.timepicker').is(':visible')) { + widget.find('.btn[data-action="togglePeriod"]').click(); + } + }, + t: function () { + this.date(moment()); + }, + 'delete': function () { + this.clear(); + } + }, + debug: false + }; +})); diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/_bootstrap-datetimepicker.less b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/_bootstrap-datetimepicker.less new file mode 100755 index 0000000..6caa303 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/_bootstrap-datetimepicker.less @@ -0,0 +1,343 @@ +/*! + * Datetimepicker for Bootstrap 3 + * ! version : 4.7.14 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +@bs-datetimepicker-timepicker-font-size: 1.2em; +@bs-datetimepicker-active-bg: @btn-primary-bg; +@bs-datetimepicker-active-color: @btn-primary-color; +@bs-datetimepicker-border-radius: @border-radius-base; +@bs-datetimepicker-btn-hover-bg: @gray-lighter; +@bs-datetimepicker-disabled-color: @gray-light; +@bs-datetimepicker-alternate-color: @gray-light; +@bs-datetimepicker-secondary-border-color: #ccc; +@bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2); +@bs-datetimepicker-primary-border-color: white; +@bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + +.bootstrap-datetimepicker-widget { + list-style: none; + + &.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; + + &.timepicker-sbs { + @media (min-width: @screen-sm-min) { + width: 38em; + } + + @media (min-width: @screen-md-min) { + width: 38em; + } + + @media (min-width: @screen-lg-min) { + width: 38em; + } + } + + &:before, &:after { + content: ''; + display: inline-block; + position: absolute; + } + + &.bottom { + &:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid @bs-datetimepicker-secondary-border-color; + border-bottom-color: @bs-datetimepicker-secondary-border-color-rgba; + top: -7px; + left: 7px; + } + + &:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid @bs-datetimepicker-primary-border-color; + top: -6px; + left: 8px; + } + } + + &.top { + &:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid @bs-datetimepicker-secondary-border-color; + border-top-color: @bs-datetimepicker-secondary-border-color-rgba; + bottom: -7px; + left: 6px; + } + + &:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid @bs-datetimepicker-primary-border-color; + bottom: -6px; + left: 7px; + } + } + + &.pull-right { + &:before { + left: auto; + right: 6px; + } + + &:after { + left: auto; + right: 7px; + } + } + } + + .list-unstyled { + margin: 0; + } + + a[data-action] { + padding: 6px 0; + } + + a[data-action]:active { + box-shadow: none; + } + + .timepicker-hour, .timepicker-minute, .timepicker-second { + width: 54px; + font-weight: bold; + font-size: @bs-datetimepicker-timepicker-font-size; + margin: 0; + } + + button[data-action] { + padding: 6px; + } + + .btn[data-action="incrementHours"]::after { + .sr-only(); + content: "Increment Hours"; + } + + .btn[data-action="incrementMinutes"]::after { + .sr-only(); + content: "Increment Minutes"; + } + + .btn[data-action="decrementHours"]::after { + .sr-only(); + content: "Decrement Hours"; + } + + .btn[data-action="decrementMinutes"]::after { + .sr-only(); + content: "Decrement Minutes"; + } + + .btn[data-action="showHours"]::after { + .sr-only(); + content: "Show Hours"; + } + + .btn[data-action="showMinutes"]::after { + .sr-only(); + content: "Show Minutes"; + } + + .btn[data-action="togglePeriod"]::after { + .sr-only(); + content: "Toggle AM/PM"; + } + + .btn[data-action="clear"]::after { + .sr-only(); + content: "Clear the picker"; + } + + .btn[data-action="today"]::after { + .sr-only(); + content: "Set the date to today"; + } + + .picker-switch { + text-align: center; + + &::after { + .sr-only(); + content: "Toggle Date and Time Screens"; + } + + td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; + + span { + line-height: 2.5; + height: 2.5em; + width: 100%; + } + } + } + + table { + width: 100%; + margin: 0; + + + & td, + & th { + text-align: center; + border-radius: @bs-datetimepicker-border-radius; + } + + & th { + height: 20px; + line-height: 20px; + width: 20px; + + &.picker-switch { + width: 145px; + } + + &.disabled, + &.disabled:hover { + background: none; + color: @bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + + &.prev::after { + .sr-only(); + content: "Previous Month"; + } + + &.next::after { + .sr-only(); + content: "Next Month"; + } + } + + & thead tr:first-child th { + cursor: pointer; + + &:hover { + background: @bs-datetimepicker-btn-hover-bg; + } + } + + & td { + height: 54px; + line-height: 54px; + width: 54px; + + &.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: @bs-datetimepicker-alternate-color; + } + + &.day { + height: 20px; + line-height: 20px; + width: 20px; + } + + &.day:hover, + &.hour:hover, + &.minute:hover, + &.second:hover { + background: @bs-datetimepicker-btn-hover-bg; + cursor: pointer; + } + + &.old, + &.new { + color: @bs-datetimepicker-alternate-color; + } + + &.today { + position: relative; + + &:before { + content: ''; + display: inline-block; + border: 0 0 7px 7px solid transparent; + border-bottom-color: @bs-datetimepicker-active-bg; + border-top-color: @bs-datetimepicker-secondary-border-color-rgba; + position: absolute; + bottom: 4px; + right: 4px; + } + } + + &.active, + &.active:hover { + background-color: @bs-datetimepicker-active-bg; + color: @bs-datetimepicker-active-color; + text-shadow: @bs-datetimepicker-text-shadow; + } + + &.active.today:before { + border-bottom-color: #fff; + } + + &.disabled, + &.disabled:hover { + background: none; + color: @bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + + span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: @bs-datetimepicker-border-radius; + + &:hover { + background: @bs-datetimepicker-btn-hover-bg; + } + + &.active { + background-color: @bs-datetimepicker-active-bg; + color: @bs-datetimepicker-active-color; + text-shadow: @bs-datetimepicker-text-shadow; + } + + &.old { + color: @bs-datetimepicker-alternate-color; + } + + &.disabled, + &.disabled:hover { + background: none; + color: @bs-datetimepicker-disabled-color; + cursor: not-allowed; + } + } + } + } + + &.usetwentyfour { + td.hour { + height: 27px; + line-height: 27px; + } + } +} + +.input-group.date { + & .input-group-addon { + cursor: pointer; + } +} diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less new file mode 100755 index 0000000..c7a43cf --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/less/bootstrap-datetimepicker-build.less @@ -0,0 +1,17 @@ +// Import boostrap variables including default color palette and fonts +@import "../../node_modules/bootstrap/less/variables.less"; + +// Import datepicker component +@import "_bootstrap-datetimepicker.less"; + + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} \ No newline at end of file diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec new file mode 100755 index 0000000..d8b86a9 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.CSS.nuspec @@ -0,0 +1,30 @@ + + + + Bootstrap.v3.Datetimepicker.CSS + 4.0.0 + Bootstrap 3 Datetimepicker CSS + Eonasdan + Eonasdan + https://github.com/Eonasdan/bootstrap-datetimepicker + false + A date/time picker component designed to work with Bootstrap 3 and Momentjs. + +For usage, installation and demos see Project Site on GitHub + +For LESS version install Bootstrap.v3.Datetimepicker + Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log + bootstrap date time picker datetimepicker datepicker jquery + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.nuspec b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.nuspec new file mode 100755 index 0000000..a238feb --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/Bootstrap.v3.Datetimepicker.nuspec @@ -0,0 +1,30 @@ + + + + Bootstrap.v3.Datetimepicker + 4.0.0 + Bootstrap 3 Datetimepicker + Eonasdan + Eonasdan + https://github.com/Eonasdan/bootstrap-datetimepicker + false + A date/time picker component designed to work with Bootstrap 3 and Momentjs. + +For usage, installation and demos see Project Site on GitHub + +For CSS version install Bootstrap.v3.Datetimepicker.CSS + Check the change log on Github at https://github.com/Eonasdan/bootstrap-datetimepicker/wiki/Change-Log + bootstrap date time picker datetimepicker datepicker jquery + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/NuGet.exe b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/NuGet.exe new file mode 100755 index 0000000000000000000000000000000000000000..c41a0d0debd870f8df2754f07a9f29c2d89a3d27 GIT binary patch literal 1662976 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§aghoAul?L0X>d$YAi*B*}Ui| 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≀u3%ll>HC17`Qjrp#2UXAU^9R4NKu~g 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%0Ac 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%0DrL)V%eZ8Le!)%3tCGfmdsQCB3>>Xm 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

    ?KYszH*fnDu=4;_B$|9I%@XZ_8?y@!r_ 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 liI`dCHeT!%<7;}X+9xBJ*iwwM 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
    1. Eoy%{Iz*Kx9b1E=UMI90!iDY|Iq z{IAP6O;>TcuHy{d#F@GsXX#!zTlc|K-HCH_3+L)CoTs~Sz8-`N^ftIqZ-+1H?J-Rc z#+UREOxHW(BE1V{=w0z;y&Gogp}1HN!zFq+F4ZG&ncfRu(R<@^JrY;wQMgi%##MSh zT&?%VSM`CIrN`iF`e0n655d>*fQ6GnSdJ=BZCt$vwjGOgISfEeAEqV$T>eFzmJ_C#NS-4G4#bSLfzN62_ z5`7_V*VC|6Psexl3@p<#afiMH%k^crQ(ul1`bvCHUyYS|7QU~q!Cm@V+^w&}Dt$ff z(X(-{o`d`JT->kc;Rkv?9?%Q$L%k3W>P2`+FUD%U1V7SCu|_Y$kM(jqtXJSCdL?I#V_?^SgW7Fuk@36T0ezf z>$P}BKaJn$XYj0k7QfZ&uueaR-|6S^oPGhn*X!}T-he;o7x99A34hcZv0lG|Kk3)7 zL2tsJ^=7=NU&mkc8+b`?!OQwhY}7>u=YL(sE4qqTbsewiCjO?|u}SyB-*q2s)}8o= zZsB#^g@5X9yrBo-UwRvC(c9tQdV9R72cuwwplEbP$>@Tz(G?Y=8>&VqYDO69MmQQq z1e!)Kv>Cn8ZbYKPh(a$T8oiBv=wtLpUt=ITjTrPZ2BT#RL4RW?x{O#1FovPq7>Fhrvb?b~Gknh>?t)j7iwpn1Xj0DcHrB zhIbk>u&Xf(?=n)cn=u#fHs)ifu@Ji(X&7dtV-F((!;MVrX)M7AV;SCKEXQ8PO1#%t zjlGR5>|?CKNMkMDXRO00V?FjYvN77o!TXI|>}TZR14cgfHwtioQHTSLA{=BCV~kOP z4;rO7*eJt?jB*@eRN%u#B@Q)q;Uh*B#u|I^QDZ+2GY;Tm#z7ozRO91D4URAl;}gaa z9BCZICyiqmXPm&NjFULZIEAB)T8uYN;~3)%CKzY&X`>DkjdS>naURDS7w}o59>*CC zINrF3Nya67&S=C5#uc1sT*G9e37DFBmdTGgO>z z=s3gh{8zCv4Li;$)i%rruAu@Qz#jBs3PMBp-`7rtWj#^pvNt}vo-r4fy*jDEP<=#Q@& z12M~p!PktzxW*WQuNy;gtr3fF7{hR#F&y7CM&Np5B)(}HyH7lVS>r5zYt&(#aSp#T&f_`b0)B7Q<9VY2e=siM1>+L_Xf$HIaRq-eu3>}Ggg+b2 zc+t3yzZf_0lF@>fjhonLh~Aw44H>T(Dqb~oyk?mAn_9X3(96!RLpLunxUwfVW^woXqXXbn!V6w z_C~uIi4HRgz07FzHv6HE*<)f#@`2(9ax2AU%<$Q+5c znQ_?09EEMocx-1T;O%B2wl~LO2Xh<-n@QNwoPZ%_GIla2VP|s+-eIO-7jqikY0ki| z<}AF+OvP^IT)f+ykD=y5>~5xEn3;|}%nS@SGqI<+1S8C4c#pXpdzmZoUUN0}HnXsg zxdtQ6wRoSo4x`NV*w@U)Xfp@zH*>L{nTHRU`PknqzyW3<4m68!kXei|W(huMmf~Qu z3?DMfafn%g51W-Z)ZB%Sm{k~S?!`yV{W#1#fRC96akyEHkDE0(!aR&mm`8A=c@&>C zk71m70-rKZ;wbYJjy7vC-aL(C%rlr^p2erlI!rXr;WOrW9BW>{XU%#XXExw?^CBjh zm+(2W5hs{eaH4q)lg%c4-fYH6=5?HG-oPnl3r;m}Vu~sHaQ-)CoMx&x-PCc0Y2r-N zjxmk(dn!9{Np$<74n^nx`kh8J5 zm-#$$Ha7P&UqH^B<^gOn53=QVe}9Y%Rxz?X-Eguk6sOq2aH=gF zQ*06Vf~^-$v-QU5wn&^|i^7? zIqGdgnHM3)yDgSE6FJ^(!6(#9W9R*S0ClMaXe&OJOcXj%(XA<`U$%w#{HJMUHFREao!gxVEJ-mm|luZ7y>K za$MWyGgl(VwQV8uF66kjr7>3_$F(h;c`tHY+cKES57|~? zwQV(iWXr-D+Zz1Xwid70*6|*$BFCd`J@a+sc(i3R-$0Hydk(XP96|P646x^++n$es z_5y5UFT}R?B5Y?b#`g9S46&Eu9riNpVlT%#?G@P7UWrlmUHFK-3S;eiafW?AA8RJE zkJ%3}&qnq!`$6V8$hp^E&AbUY_u6ZiHzPj<`(b?7egwq9WH_j%yg;Xkv>S`Mx=tnS+q;p5r>Ub=<&qjuyP#aTD7+L?>5V z4jF?TD&FDHoubeM`A#}a=B~(S%Hd=VN3N_K7IOr0 zW#w=&_d>3$9B%CG2*N&&Hf)bXuB;sGn4^#@D@S|gXynSu5zO2Vxw3MEF!x8UtQ?)0 z2O?KijxNkG$d#3&EAwFF%F59Vhd4s-(R*qiG!;vd1 zM{nj4$l1~ni6b3RYJBG7zGjh~BMqr6!ByM-aVX0#jmO0|_eMbT-cOl2ABayiZ+20&vaj#<>);N;z zW5)zudl-2n$iS~0nRwc<1iyAH!!wTM_>E&Fo^`CoZyi}!=U9W^Io9Gi$2$Dpu^!JmvhfE; z4*ufE<+HtnJU(*dF*hQQKD_cV(5rwgLCB*9uR?6&Rm7II$Uf{<%zQht4||m`cR==G zuTt#jRfZ8><#>-*1+VRe?0a67*xPFt_VKD>dnB^&dF^G6LhhBk_A^gI?v=a_Fwa2F z6lE{1 zpXKYa$n$efw=_PbG+)AOOZXt ztATk3a(42%h&5i9@MEt=wjW0J5U(p(=XDLg^J-%IIpo~p)r>7(*HQDnfx34K8s0at zjkoB>nZ#T66NPrjnZ#RVZjYQvymjVa-4B2C?$7pmoi8uM1< zafi zxvKYFk2c?IwEN~@N8elw@y)|7zWJ=Y6S;oyEnvP2Ig|JnGT(#ze!#bg`CjBq;#}Av)-W$a9kMO#MfO`~IP);%s>vC_JRG@da`s{#fm}5?dozzj9%DKqnd6Yh zn9eBXQONJ3oYBnj$YV@rKjsAF_fgLN%!$bFqnrbo$0EOva>g)^L$1M`gPD_%$Dz(4 z%oC8uq0XVq$;jhSXDst1Gs;X>yGe9@VVY0gQw#W{udP>9_7I8&I5kb58J zH0EODe%v{Oxdgc%cg|uiMILK7Q<=+<#~RML%;m^qI_G@m3gmar&V_iS<{F-Qt(@X4!>n=@j~`bzvaxqek++f{$q&WYUWOUS@^i$8eTgB`8oQnWgdzA z9R1c|oZotk_shm-{Bn5hSmdYUm&-g3`RVxOVUk}yTb@JCOMV5+6OrE%_!Z*wenmLR zubAzVk^4Ts66UGMeV<<`F7Yd4%TnYT+pio~`BmU*ze={hik#W}b}_$(Tu1p;F|S9i zqx|+VXCqhOe)}=U?*P8-caZJ5$i1FlHRk!%uw@f+?(#d#ycs!n`5j^2f}FejjxujW z&MJP#u*&ZQTlOGl6~B|X&+iml_9OR$ezkbO?=%j!&fr7VSzbE?`8|wPhmTq3*fJdX zo?GW}gmnR*u-e;F0~4(le8#$o zV=d92pN=KtI7`LxmX1l5iO*SfoM3t3M9T-0Ehj#2SvbjZ;bhB=Q>-AIYPG=>s~x^z zwZ~~zFiy8ZaE8?xXIfowmemz!Tir0#3dK2A7|ylAah?@{^Q~UE!0L?)tw?;)io!H2 z8eg*dVY<~H7g+-_!-~O|t-+XS4Z+3MP+Vfg;!ll_^OqNS=Ly5%^HVmtR#Hhnt*GqWPHP#gzKy+_@#b?{mNf&jty#FiO2r&& zF1~He$6RY6ZnV-c&q~KlRtDx%wN_)1m4(}^HCSw|#doZA zSYoZm?N&CHS~>Wxm5XIo9`3O6vD_-aomL@MSVj1rRg9HZ3BGTY;x4NUcU$FHWmVuF zs}lEGyKtXXh5N0&_<^+_4_F8AL+crh{~6}C$kmtsS?uIrhsplu@Ol69nBso{U+}NTS^f<;+y5fY z_rHV-{2MXd{|YYhzlKZvn{cUrGp_W%j;s7{;2QrHeBJ*huJ;#R{OtT?%=K4sqrZ*? z{w8kmw_~xt7rx`~gJu3s+~IFwrN0Z`_jlu7{~+Aw-v$r*x5GpJ?eVaGFn;16g2((j z<8l8kc*?&ke(B#0&-jPpH~wLG&OaQ#_m9AO|6cf$e{a0xABmU!qwt!4H2&t_53l?8 z$3OiC;!Xb;6kLN*bqztyH5BcxSai6Cq0==S16(7}?HY+~U2)jXH3~br;xWXPfOonQ zv8!t=c6W`#Fjo>j?wWvcu4H`5HOa+&H*)@QO~H6q3XXA2!vxn1eA+b&6J4qJjB75A zbN#D=AT<7qt>pXtzx`1`Adi>7S zfahHo@dwu>yx?lYde;^F$#o4ITuu11s~Io5u4AL?2L9@5!7Hwtc-SIqdmY29RWTV7~sS<0agGH?|K5!VUp#FgTzcb_{6G$`Irl zH6R%84+z120iE%IfG#*VpesHU&<%$KgyItcVHh6}j^hF%aC|^7ObY0Y&jmzcazGT$ z2#CfN0sZ(WE0JSApg;3!j7i&uYhqF z>`uZ??g<#~PR4uOlQ7af1^c>FaFBZ%4tCGLSobV^%$K`8ZHTJ!li-D z_)6e)Tpf6W_wXw6a|vu=ehs<*3cShuI&w`CD7tyHj$Bs+%D6dD#chE)+l!GsJkVq= zLGG;r?N}A)g*Aab_(`A>zX-JO%Rm>N33TH(fkAj7unl?zwL{;a_Sh#V7^8wha70jN zd@`sDjtT0Di9y{kH7FG41%+WoP&h6Qioi`ly)ZwhH*OA!-Q6pLqrhT(TX!`(i@BJrw!Jm>0F|{)9DU;y3+$~yu|ID-t?a!eslM8ccqJ8hra2bDgF|gE@XA{=BuHZ_*-bCD^vVEw2t|Y&}em?*th#>{tnaq-J_Tv=$;|069;rZ!IQKPD>sNwvvPy@3@bN?&$4oZIG&Xo#OGMKL7d3S9C0!$bHu5v z%n@H;WsW$Vl{w-}R_2JaS(ziwVP&qkh?TkG%dE^57qc=~T*}H^@fB9)iYr)|E3RVY zM)7r4ZWP~ObWuCZ$m7B!(S-DBv&B{&U9#(D=_px%5_yH?7i663ZlX!@g`Qpc{%ojglWxn_+ zEAz$ASeY*#XJx+lIV^Tc$t-3 z#H-z-TwBE7Sh+>~ot0a}Ke|V=l&erw!lIb9uneJ4G{U0U zVhf8zM_3(Oyu+f^A~ArKMPeW;i^SVlStPb)Ws!J0D~rSqtSk~cva&?%8P=$ki1)Cv zM7)=kC1RhjD{Q%sl_g?dR+fnOvvRvQfR)?DL9E;^KFG@L;zO+5E+%7)K z%5w49uymnZ9M8&f@i|tOixa~#@p)F3i<4PdE>30TPH`qHcZ#!Fxl^3O%AMjoR_+uR zuyUvPA}e=_FR`*hd^s%Est^~mvO-+S$_nw7u;FZ3!O9A86)P*mS6O*Ve4@utm(7e8cWgZOEWbfH1~jFk=IaaJ~npZCbbFId?ie#y!P@hetd7O(c`EM69WW94P> zcUE2&|LD<$Eq}7|viKJ(FN=S(@`~sm9<4TueZ%|Nn#KFWqnIBE&k&l$0pa~!&ElZ& zNPIB7jx7(dvPFD8yk2Y(C$q9eoXW};@rCdPwoGSbi#U^&E#hoeiqg{XCYva|!b(wE z!AenD72eF2S6L}audz~;UT0;nL z&@)=?AwA!-UhE-FW@Qg)Dl2!W@ zTY6^VR#rwz+gKSXy~E1;q#Zr;{qK`@vhqIZJyzZ)z2CEdExTEHpR|XS_euL$IY9b} z_c=iNnUw>iUsyRny3G3=ApOe90n$}g4v>ChmQF@=ZN|bg-Tw%)|-YQYr$6F;z zAMjS5zeH`4FSR3{ic{!8JY6AwgH+%zrV9M^P=UV=D)84o1^z0hz~9&u_$#1-kVC~( zK_5^JH7?-FhTB@IqpS2M@h1ueliJc96iW9{48_tDG@6oWCM}{B^cuZQ1@tcMq8d6z zwe%fbCjL_&A&`P8k_OP@6i$)Aw|dZjd4i{B<{hzuPA8x7c_d z3<{@6ilvd1Ks+T9f169-Z)^$t-7KCrfIg(p>1#Sqmq=0s{z4F6JB8A{^Z-3d<7qOz zM9b(k%BIbHHPT`zeg8pW%#qZehS1|Qk*3i+ z%An=+I^|L!mD2n4F`b~V>1Vn|f0L5~qaEEr;nbIgQ9O;O>9mlR(mV74U8HNI+BlAA z1Wl&-w3yaY0li0u=^Ofqu9L$q@L%%?!d-MP4W`kQOw%ZXKA}J9Hiy7}VIl}KXgx%5-p`HT2CePIsHgYr2278lAGF7 z7(GZ&(X%v}X3|1hN^58XZJ`=EOTW->Bw3u}sXcY4J~V`$q^D^LZKj=cfX>rZGW`E@ zjQMgKL>;Lc^`QsoDN3Oi>2=Ddcc_96)8}-S8mNi9T%4onUV4xor_uB*Jx?=e0cBD) zRgmWx-^*<^eNJD~k93{H0Pa`F^Rw{eVs1~7G>9IdNi>7zQwA-kw`mW3MgP9-cg&Zl zi5xtqt&7@HXS#>(r(u*x6KM`DqqX!7mD7i$1hPL-SBfUj`yb5hFd9d5Xff@fYC2Be z)6aC3)F8e$^can%@svV~XceueZM2j2(ofV()@|%x^du$HL`tDKluobF2CAZ?^aHh! zcN@+L)Qe(hG^NmD+Dvj=er7a|Hj?M-+0L!!=Tdp=cK@yIp4Zjf+IE85GxP&pBG2oZ zxc!S%E;a(G6U9&*O{LY8O`EBb4$_x&fjn=2iQ7NuCfRT2Yo?AAN%2%bKa->Vt&hjs z^u09?;`UK`lAfj{^1RO}+|H&<rGeE1TPGw39q*_HbKG$LV`&Af!a(+pZbt0|kd(*Zh8-_TXMv!ftHP+xkOM$uS$ zk(SV_lt-21`TRWXWB!!Bqzm*b$st@bQ3&;lhM(!XyP$DBaV(TlW_Jl~tO+-{)F zR7v}&hK|!2`i1@=u@mP%vZxJpqEH%1Ni>CKQyO_b<`QmSrH!{<-pXwmou(h?68%AP zXZBedK*MPijiqFoPK#*`mC_;ll76PY==MAK8PP^6rW&fHt7LZJn5R4G9_mXm^eDyA zGn7iZ=v(r>llwdBOp!EzhSC$1KuI){7SeLcr4ssvexN@nuqz*jV(3wdr|~qK7SS3i zrkzwv4b((DErVdEyXbxzNiWiJdYiV>=N@HjorP5-0n<~lkzV>tbIsHcNF!lq=r9vvDN;*J?={#K{R}YR&N}(;Zn@&>$ z{Y_Rl*L(CREu+^dhj!8jbdtUyu_xDq6iEYUC_PO{G?Nz6GFnR;$@BSc<#r!^M$KeJ z@V%l3D23ALHQGe`=?q<@8x(X8-xKn@pMM+7%TLfGN~Kq5Exk=8w1*DSQTmd8pi9(5 zf0NdW?+4vZU8pyWp%t`|{`s7_^&Ib>>+5%0&AVI8hg!{_wVJ)qH!a`Oa2z&sKBaR`Y|c=Eqviqg&16Tg_8j&2w7Ki(1VqTFq~?nm4wZ zx3!vgwwm|dnm=x}?RcyC>sIp*t>(+E=0BLF-v9ae*toT*Ern1wilBe@kyz%Dw_bjp z+XeJ8t)#W&`Pt@hTR_`s4}C&E(^c}kpBvoDeg3o7&aHK8Zo_Q|b)$$|+oHMk>?<+c zK0(jW9NI`X*j~%6=VPAZwt=L`|ExE;by6GZd~4g?+}=wuw_YB`?I`lR{WIK7q!%cS zmeK~=N;}E3W)HWgZp~-8J%4My%QlT`e(&hzv_Cferv9}b?bTj>{)y8*2|t_-gB&b zj`1V6ws}4W&;7nWd(J(cbB^a+<2jdj&NH6# zi)VlK?8lz-i08cGIfr=8AD;7u=X~MWpFQUa&pE<#Zg_$BIgehx^}bhd>v_!N`FbY> z{O8tl{Cu!j;V=6tFL4y|Ohyk^UljRX{qw(n2j$kwFL3(?@1^G<`PLR5;k0^PF0YIF zAFuPg-O&H>I?vn1{g2mq-frub|NZg!v+e)&bMd@g+W&Z+=i^QM|9reoW&izsZsqNc z{g2mqKHk6`|NHII{y!h@hn@fZ?L41nOzD4ro#*2nuKeGxJH7q?zRvRv^8757F`j9W z`k$9N{qvIjr2Nn8`v3FN-&gfkD_{EKKQBG=&+8I(-pB4YSbZqp0 zUON8IOQ|CNIy zg;&HtVYzr4zX85YSShv>R*AO@t9dx_s(7c6C3fSt!rg>5Vt3(nT1#)xIx$>$lS{Mp z;yuD!Vx*8Q_T}I0`tdJv5Aqx2!TfvML;OqH5dMwqVgB`NDF3eYh_G3Fl;125=ij47 z^Dj;D!d7t%|BjR(Y!jarip8l!=pt9mK!;@NYSj`B$20 zJQvabY47Tzqbl$8`@S=iFA`J;jF^NO!bgyi1j4r^U=*cM5yk?w6p@+9L_(99bS8sKh@CQgH8+q&MASUuW}(W7Ct2zXrWYO%#CDnkUsMJ%nXux_gE^ZVU<-^8_h zPXE|H_MGj_d7eD;-1qz5``$bE&de`~NJPzuLv$PNP~VOiM0X$p(Vd7tv=z~Zwj%b> z55)7pujD;qFYp55QSAfv0|yXy>P7hw?rL|7mwC+W5I7Bd1pEOJpw0k)M8u~*A%4@xz*)p@`gh(}7aNRVo8!05gGdU=}bNm;=lO=BcrAKCl3|9QYdIFD(Qr zfJKPHv>3Pos6;HLD}k%j6uAVr8n^~n3Va=?0-mY zh~*PiIjTlYQManqie`!^z4haz6_FIJS)&!P3TeT&8YSLD^0G-f>3*!$Pxab|a5U0_ z&oXH5QLUb|*W%ozy&Ki#oSvTBT*rBF6{)?IDr|eJwYOSrvAvsAhn@E(^^onYQT?{J zM!jfzYjwJ{>agvtQ)ldS>#(<3%X;h!R?pWXT9)O7Rk`hjRfX+UWBjdj)ry{4(Nd$+ z)u?-IZ-aWkPPakrvAvBt-9|)Xvhvnpn^@)5Df|>VFEK(~y-5u&# z+q*;k&h}c>2e#L$&f4CcDibFs%6q3OuuoH4bsbxE-n&$po$fA0Pugg?Th-g%-HM*J z(Q+?)r0!Su*=z4tyX>{wbjjP)6SlWq?X%NuR|joxhdN<rlD4z@e6QsEh4O zopZ|B+c&zbJsbBcU6bs!4KC-Xc-ZBn>t;ozbnA4x_1Z_YdQ_`Dx|H|04$AwU_Ks`s zxb{x5qI9Qp9jEo$KWO!_&ik?U^4(6G*J!m~tGl#%Su2;<>A6R%Os`YQWUXd-opG6` zz308oxQs4zO7Rvt=`PhOpw+5Er{tT99Q8Eap5djx$jSSzUYpixK&um4eX7-bzECrZ{=KN*wi|R?(@BcaK*0Y1O9H54CF7%FwD)t9`a|i}q=k z@$mr_uX+cB)dALr!OtjaXFqcazg$jjE&`i~ zMumIG+|KF0&2sN~o5n;TZ0NU{f3hr={ipnf&$FE;z!urzIVshDVIV6C%$caG&P`aKGm>a7v83fLh`M zrzL5F9aGF?=Sp%stH5);v@gx|z5uMqo{2aV2_JRFvR1~rs!jS4qV{=4Y(@v4X`2J zXMgi(()WN(eB+AvG3HmoS;eFT?%kn8#6l~&qKeTV}0{3P<2X1rIJdoj~ zk)P-yZgbP9n!<&PeN$Wv&hU~`!1G~-m(rijBsRq~PO}&s;F-ik%nBNL+NK%aZSb+@ zbD9q3Zg7Ek9Q=vvLfnU{$|5$!bh;ODw=3G>*uHq?Zi;@eA>L$tnt4of*r7%jI=0k8m68EV;fxpKoO)=U} zyMa6Od#hHaJ!lVHpP|T46ikltbq>ltdbHhLw9i-`j}JVIGi@OH50mu zu@~j!gOBBqla@=M2jzFcruY%KDwECyZEo@dig@$*UxL$!B28&7nTY3qBdDFdnMvqw z-`|6KGam(~1kEre;_s2BS-OCai?EO8^RSPcu#e_&!@Xz{^=K&=XFY8F6wd}>ADu(@ zPax-PrZod}AbLBBCzIm`XLzmiNC`VL*s;zX z3!qbi=4w-1%WFqYp_Y_^4fjo8Q*0#d*-9+PH^nya&Jvo(c9u{%X-T}Z#5(U=KJ~6s z5S!xu5{yjl&zN5Z8{!Pu6rX|nb1By&6N!V;H9{*m z6hq2)nEO-*^fQW_KJ^rMjB77AAjvVsOW+JI%{-=f4chR$0q#?omr}~fU{_u_*po-O zTzQnMN4^LrD35`6`^HYAymV2HBO2W8yN)@`P91X-^MnBP?kcb;g5VU-Cnw|q4}3SV zDUR{lMVC>^?}JToFStiO3GUCO-kr@P9^k92c13ebHkb2Y9{H7W-E=$GS7E;wmPoD!C%kw2Mt0DaG&LJqFX!Jlwn40qNH zI+mw_F^huxLdImhFA&qt5FPGxz4Mn1#hL0lZix=PyAfKm#vIRQG?}IMlD}*jVXRZ`; zjhL@C;40*Yz;@_%U zpr07_+VScCR_)(%RXlO^rs%RzZA{cBBk@EuT3TIK$BDm~{6z9wI@?elZT&9_eB%tI z`SJ15i}8O2{^Q@UMe?01407u*6B5$}mR9EBWToHml~q>y1~>MV)^UjUJCx_B3%i|I zExsXc0bea{gsKwD#SM5}1-=HFmVb7i`JC#_!hPcp<+TUsKixxK%xkTuh*mAOfqzQ? z{C*t1Z;(JawW1F9qpL(r)QC7Ink3L5d@CV=6fu#+`jBWux;S20%M-bOsb##^JIJgbo>fm}o5R4z)zd|(cGO_&QkTPzTmOz}Sld1=%e zIbRIzt{c|+p|L2%`b_{nUj~-wbrhpbscDQFa4kq%;8w8#CEVq3yI0I)d_W62!8Q$7s3TKibQv*UmPgSG4yG-zGz2bs2BZ z704S$Pnx*Y;rqr=pXs|ewC%r~_P=jUXItW=h2w{|dnJ01ME&&`kvble|0&O3+WxIu z$KeSe_0n3-^gq9F@uvDZe{(dEtc}Miif5M2DE3EVk$81&?AD6nRV%NVKEK$XYz)P! zLv`_3w4%5rnk-(tC@*JWD4C4bhwEDWC?J-sC~iu`E>A`_MC(Jz>GiddL_8Uw6aOpQQ(nyZP$}aYb<`Sru!Jej9t#1;?Z%JOf^|GyFV EFFYo8OaK4? literal 0 HcmV?d00001 diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/install.ps1 b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/install.ps1 new file mode 100755 index 0000000..87c030f --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/src/nuget/install.ps1 @@ -0,0 +1,2 @@ +# install.ps1 +$DTE.ItemOperations.Navigate("http://eonasdan.github.io/bootstrap-datetimepicker/", $DTE.vsNavigateOptions.vsNavigateOptionsNewWindow) diff --git a/www/bower_components/eonasdan-bootstrap-datetimepicker/tasks/bump_version.js b/www/bower_components/eonasdan-bootstrap-datetimepicker/tasks/bump_version.js new file mode 100755 index 0000000..a4b8d57 --- /dev/null +++ b/www/bower_components/eonasdan-bootstrap-datetimepicker/tasks/bump_version.js @@ -0,0 +1,88 @@ +module.exports = function (grunt) { + grunt.registerTask('bump_version', function (version) { + if (!version || version.split('.').length !== 3) { + grunt.fail.fatal("malformed version. Use\n\n grunt bump_version:1.2.3") + } + + grunt.config('string-replace.bootstrap-datetimepicker-js', { + files: {'src/js/bootstrap-datetimepicker.js': 'src/js/bootstrap-datetimepicker.js'}, + options: { + replacements: [ + { + pattern: /\/\/! version : .*/, + replacement: '//! version : ' + version + } + ] + } + }); + + grunt.config('string-replace.bootstrap-datetimepicker-css', { + files: {'src/less/bootstrap-datetimepicker.less': 'src/less/bootstrap-datetimepicker.less'}, + options: { + replacements: [ + { + pattern: /\/\/! version : .*/, + replacement: '//! version : ' + version + } + ] + } + }); + + grunt.config('string-replace.package-json', { + files: {'package.json': 'package.json'}, + options: { + replacements: [ + { + pattern: /"version": .*/, + replacement: '"version": "' + version + '",' + } + ] + } + }); + + grunt.config('string-replace.bower-json', { + files: {'bower.json': 'bower.json'}, + options: { + replacements: [ + { + pattern: /"version": .*/, + replacement: '"version": "' + version + '",' + } + ] + } + }); + + grunt.config('string-replace.component-json', { + files: {'component.json': 'component.json'}, + options: { + replacements: [ + { + pattern: /"version": .*/, + replacement: '"version": "' + version + '",' + } + ] + } + }); + + grunt.config('string-replace.composer-json', { + files: {'composer.json': 'composer.json'}, + options: { + replacements: [ + { + pattern: /"version": .*/, + replacement: '"version": "' + version + '",' + } + ] + } + }); + + grunt.task.run([ + 'string-replace:bootstrap-datetimepicker-js', + 'string-replace:bootstrap-datetimepicker-css', + 'string-replace:package-json', + 'string-replace:bower-json', + 'string-replace:component-json', + 'string-replace:composer-json' + ]); + }); +}; diff --git a/www/bower_components/jquery/.bower.json b/www/bower_components/jquery/.bower.json new file mode 100755 index 0000000..ea4b7f6 --- /dev/null +++ b/www/bower_components/jquery/.bower.json @@ -0,0 +1,25 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "homepage": "https://github.com/jquery/jquery-dist", + "version": "3.1.0", + "_release": "3.1.0", + "_resolution": { + "type": "version", + "tag": "3.1.0", + "commit": "6f02bc382c0529d3b4f68f6b2ad21876642dbbfe" + }, + "_source": "https://github.com/jquery/jquery-dist.git", + "_target": ">=1.7", + "_originalSource": "jquery" +} \ No newline at end of file diff --git a/www/bower_components/jquery/AUTHORS.txt b/www/bower_components/jquery/AUTHORS.txt new file mode 100644 index 0000000..ed15d3d --- /dev/null +++ b/www/bower_components/jquery/AUTHORS.txt @@ -0,0 +1,295 @@ +Authors ordered by first contribution. + +John Resig +Gilles van den Hoven +Michael Geary +Stefan Petre +Yehuda Katz +Corey Jewett +Klaus Hartl +Franck Marcia +Jörn Zaefferer +Paul Bakaus +Brandon Aaron +Mike Alsup +Dave Methvin +Ed Engelhardt +Sean Catchpole +Paul Mclanahan +David Serduke +Richard D. Worth +Scott González +Ariel Flesler +Jon Evans +TJ Holowaychuk +Michael Bensoussan +Robert Katić +Louis-Rémi Babé +Earle Castledine +Damian Janowski +Rich Dougherty +Kim Dalsgaard +Andrea Giammarchi +Mark Gibson +Karl Swedberg +Justin Meyer +Ben Alman +James Padolsey +David Petersen +Batiste Bieler +Alexander Farkas +Rick Waldron +Filipe Fortes +Neeraj Singh +Paul Irish +Iraê Carvalho +Matt Curry +Michael Monteleone +Noah Sloan +Tom Viner +Douglas Neiner +Adam J. Sontag +Dave Reed +Ralph Whitbeck +Carl Fürstenberg +Jacob Wright +J. Ryan Stinnett +unknown +temp01 +Heungsub Lee +Colin Snover +Ryan W Tenney +Pinhook +Ron Otten +Jephte Clain +Anton Matzneller +Alex Sexton +Dan Heberden +Henri Wiechers +Russell Holbrook +Julian Aubourg +Gianni Alessandro Chiappetta +Scott Jehl +James Burke +Jonas Pfenniger +Xavi Ramirez +Jared Grippe +Sylvester Keil +Brandon Sterne +Mathias Bynens +Timmy Willison +Corey Frang +Digitalxero +Anton Kovalyov +David Murdoch +Josh Varner +Charles McNulty +Jordan Boesch +Jess Thrysoee +Michael Murray +Lee Carpenter +Alexis Abril +Rob Morgan +John Firebaugh +Sam Bisbee +Gilmore Davidson +Brian Brennan +Xavier Montillet +Daniel Pihlstrom +Sahab Yazdani +avaly +Scott Hughes +Mike Sherov +Greg Hazel +Schalk Neethling +Denis Knauf +Timo Tijhof +Steen Nielsen +Anton Ryzhov +Shi Chuan +Berker Peksag +Toby Brain +Matt Mueller +Justin +Daniel Herman +Oleg Gaidarenko +Richard Gibson +Rafaël Blais Masson +cmc3cn <59194618@qq.com> +Joe Presbrey +Sindre Sorhus +Arne de Bree +Vladislav Zarakovsky +Andrew E Monat +Oskari +Joao Henrique de Andrade Bruni +tsinha +Matt Farmer +Trey Hunner +Jason Moon +Jeffery To +Kris Borchers +Vladimir Zhuravlev +Jacob Thornton +Chad Killingsworth +Nowres Rafid +David Benjamin +Uri Gilad +Chris Faulkner +Elijah Manor +Daniel Chatfield +Nikita Govorov +Wesley Walser +Mike Pennisi +Markus Staab +Dave Riddle +Callum Macrae +Benjamin Truyman +James Huston +Erick Ruiz de Chávez +David Bonner +Akintayo Akinwunmi +MORGAN +Ismail Khair +Carl Danley +Mike Petrovich +Greg Lavallee +Daniel Gálvez +Sai Lung Wong +Tom H Fuertes +Roland Eckl +Jay Merrifield +Allen J Schmidt Jr +Jonathan Sampson +Marcel Greter +Matthias Jäggli +David Fox +Yiming He +Devin Cooper +Paul Ramos +Rod Vagg +Bennett Sorbo +Sebastian Burkhard +Zachary Adam Kaplan +nanto_vi +nanto +Danil Somsikov +Ryunosuke SATO +Jean Boussier +Adam Coulombe +Andrew Plummer +Mark Raddatz +Isaac Z. Schlueter +Karl Sieburg +Pascal Borreli +Nguyen Phuc Lam +Dmitry Gusev +Michał Gołębiowski +Li Xudong +Steven Benner +Tom H Fuertes +Renato Oliveira dos Santos +ros3cin +Jason Bedard +Kyle Robinson Young +Chris Talkington +Eddie Monge +Terry Jones +Jason Merino +Jeremy Dunck +Chris Price +Guy Bedford +Amey Sakhadeo +Mike Sidorov +Anthony Ryan +Dominik D. Geyer +George Kats +Lihan Li +Ronny Springer +Chris Antaki +Marian Sollmann +njhamann +Ilya Kantor +David Hong +John Paul +Jakob Stoeck +Christopher Jones +Forbes Lindesay +S. Andrew Sheppard +Leonardo Balter +Roman Reiß +Benjy Cui +Rodrigo Rosenfeld Rosas +John Hoven +Philip Jägenstedt +Christian Kosmowski +Liang Peng +TJ VanToll +Senya Pugach +Aurelio De Rosa +Nazar Mokrynskyi +Amit Merchant +Jason Bedard +Arthur Verschaeve +Dan Hart +Bin Xin +David Corbacho +Veaceslav Grimalschi +Daniel Husar +Frederic Hemberger +Ben Toews +Aditya Raghavan +Victor Homyakov +Shivaji Varma +Nicolas HENRY +Anne-Gaelle Colom +George Mauer +Leonardo Braga +Stephen Edgar +Thomas Tortorini +Winston Howes +Jon Hester +Alexander O'Mara +Bastian Buchholz +Arthur Stolyar +Calvin Metcalf +Mu Haibao +Richard McDaniel +Chris Rebert +Gabriel Schulhof +Gilad Peleg +Martin Naumann +Marek Lewandowski +Bruno Pérel +Reed Loden +Daniel Nill +Yongwoo Jeon +Sean Henderson +Richard Kraaijenhagen +Connor Atherton +Gary Ye +Christian Grete +Liza Ramo +Julian Alexander Murillo +Joelle Fleurantin +Jae Sung Park +Jun Sun +Josh Soref +Henry Wong +Jon Dufresne +Martijn W. van der Lee +Devin Wilson +Steve Mao +Zack Hall +Bernhard M. Wiedemann +Todor Prikumov +Jha Naman +William Robinet +Alexander Lisianoi +Vitaliy Terziev +Joe Trumbull +Alexander K +Damian Senn +Ralin Chimev +Felipe Sateler +Christophe Tafani-Dereeper diff --git a/www/bower_components/jquery/LICENSE.txt b/www/bower_components/jquery/LICENSE.txt new file mode 100644 index 0000000..9d2b18c --- /dev/null +++ b/www/bower_components/jquery/LICENSE.txt @@ -0,0 +1,36 @@ +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. diff --git a/www/bower_components/jquery/MIT-LICENSE.txt b/www/bower_components/jquery/MIT-LICENSE.txt new file mode 100755 index 0000000..4d4a8e2 --- /dev/null +++ b/www/bower_components/jquery/MIT-LICENSE.txt @@ -0,0 +1,21 @@ +Copyright 2014 jQuery Foundation and other contributors +http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/www/bower_components/jquery/README.md b/www/bower_components/jquery/README.md new file mode 100644 index 0000000..619df43 --- /dev/null +++ b/www/bower_components/jquery/README.md @@ -0,0 +1,65 @@ +# jQuery + +> jQuery is a fast, small, and feature-rich JavaScript library. + +For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/). +For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery). + +## Including jQuery + +Below are some of the most common ways to include jQuery. + +### Browser + +#### Script tag + +```html + +``` + +#### Babel + +[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively. + +```js +import $ from "jquery"; +``` + +#### Browserify/Webpack + +There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this... + +```js +var $ = require("jquery"); +``` + +#### AMD (Asynchronous Module Definition) + +AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html). + +```js +define(["jquery"], function($) { + +}); +``` + +### Node + +To include jQuery in [Node](nodejs.org), first install with npm. + +```sh +npm install jquery +``` + +For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes. + +```js +require("jsdom").env("", function(err, window) { + if (err) { + console.error(err); + return; + } + + var $ = require("jquery")(window); +}); +``` diff --git a/www/bower_components/jquery/bower.json b/www/bower_components/jquery/bower.json new file mode 100755 index 0000000..3ff8453 --- /dev/null +++ b/www/bower_components/jquery/bower.json @@ -0,0 +1,14 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ] +} \ No newline at end of file diff --git a/www/bower_components/jquery/dist/core.js b/www/bower_components/jquery/dist/core.js new file mode 100644 index 0000000..f8fea62 --- /dev/null +++ b/www/bower_components/jquery/dist/core.js @@ -0,0 +1,481 @@ +/* global Symbol */ +// Defining this global in .eslintrc would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + +define( [ + "./var/arr", + "./var/document", + "./var/getProto", + "./var/slice", + "./var/concat", + "./var/push", + "./var/indexOf", + "./var/class2type", + "./var/toString", + "./var/hasOwn", + "./var/fnToString", + "./var/ObjectFunctionString", + "./var/support", + "./core/DOMEval" +], function( arr, document, getProto, slice, concat, push, indexOf, + class2type, toString, hasOwn, fnToString, ObjectFunctionString, + support, DOMEval ) { + +"use strict"; + +var + version = "3.1.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} + +return jQuery; +} ); diff --git a/www/bower_components/jquery/dist/jquery.js b/www/bower_components/jquery/dist/jquery.js new file mode 100755 index 0000000..530037e --- /dev/null +++ b/www/bower_components/jquery/dist/jquery.js @@ -0,0 +1,10074 @@ +/*eslint-disable no-unused-vars*/ +/*! + * jQuery JavaScript Library v3.1.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2016-07-07T21:44Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.1.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.0 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-04 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + // Known :disabled false positives: + // IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset) + // not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Check form elements and option elements for explicit disabling + return "label" in elem && elem.disabled === disabled || + "form" in elem && elem.disabled === disabled || + + // Check non-disabled form elements for fieldset[disabled] ancestors + "form" in elem && elem.disabled === false && ( + // Support: IE6-11+ + // Ancestry is covered for us + elem.isDisabled === disabled || + + // Otherwise, assume any non-" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + resolve.call( undefined, value ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.call( undefined, value ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnotwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? JSON.parse( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ), + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting
    or other required elements. + thead: [ 1, "
    ').addClass('cw').text('#')); + } + + while (currentDate.isBefore(viewDate.clone().endOf('w'))) { + row.append($('').addClass('dow').text(currentDate.format('dd'))); + currentDate.add(1, 'd'); + } + widget.find('.datepicker-days thead').append(row); + }, + + isInDisabledDates = function (testDate) { + return options.disabledDates[testDate.format('YYYY-MM-DD')] === true; + }, + + isInEnabledDates = function (testDate) { + return options.enabledDates[testDate.format('YYYY-MM-DD')] === true; + }, + + isValid = function (targetMoment, granularity) { + if (!targetMoment.isValid()) { + return false; + } + if (options.disabledDates && isInDisabledDates(targetMoment) && granularity !== 'M') { + return false; + } + if (options.enabledDates && !isInEnabledDates(targetMoment) && granularity !== 'M') { + return false; + } + if (options.minDate && targetMoment.isBefore(options.minDate, granularity)) { + return false; + } + if (options.maxDate && targetMoment.isAfter(options.maxDate, granularity)) { + return false; + } + if (granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) { //widget && widget.find('.datepicker-days').length > 0 + return false; + } + return true; + }, + + fillMonths = function () { + var spans = [], + monthsShort = viewDate.clone().startOf('y').hour(12); // hour is changed to avoid DST issues in some browsers + while (monthsShort.isSame(viewDate, 'y')) { + spans.push($('').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM'))); + monthsShort.add(1, 'M'); + } + widget.find('.datepicker-months td').empty().append(spans); + }, + + updateMonths = function () { + var monthsView = widget.find('.datepicker-months'), + monthsViewHeader = monthsView.find('th'), + months = monthsView.find('tbody').find('span'); + + monthsView.find('.disabled').removeClass('disabled'); + + if (!isValid(viewDate.clone().subtract(1, 'y'), 'y')) { + monthsViewHeader.eq(0).addClass('disabled'); + } + + monthsViewHeader.eq(1).text(viewDate.year()); + + if (!isValid(viewDate.clone().add(1, 'y'), 'y')) { + monthsViewHeader.eq(2).addClass('disabled'); + } + + months.removeClass('active'); + if (date.isSame(viewDate, 'y')) { + months.eq(date.month()).addClass('active'); + } + + months.each(function (index) { + if (!isValid(viewDate.clone().month(index), 'M')) { + $(this).addClass('disabled'); + } + }); + }, + + updateYears = function () { + var yearsView = widget.find('.datepicker-years'), + yearsViewHeader = yearsView.find('th'), + startYear = viewDate.clone().subtract(5, 'y'), + endYear = viewDate.clone().add(6, 'y'), + html = ''; + + yearsView.find('.disabled').removeClass('disabled'); + + if (options.minDate && options.minDate.isAfter(startYear, 'y')) { + yearsViewHeader.eq(0).addClass('disabled'); + } + + yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year()); + + if (options.maxDate && options.maxDate.isBefore(endYear, 'y')) { + yearsViewHeader.eq(2).addClass('disabled'); + } + + while (!startYear.isAfter(endYear, 'y')) { + html += '' + startYear.year() + ''; + startYear.add(1, 'y'); + } + + yearsView.find('td').html(html); + }, + + fillDate = function () { + var daysView = widget.find('.datepicker-days'), + daysViewHeader = daysView.find('th'), + currentDate, + html = [], + row, + clsName; + + if (!hasDate()) { + return; + } + + daysView.find('.disabled').removeClass('disabled'); + daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat)); + + if (!isValid(viewDate.clone().subtract(1, 'M'), 'M')) { + daysViewHeader.eq(0).addClass('disabled'); + } + if (!isValid(viewDate.clone().add(1, 'M'), 'M')) { + daysViewHeader.eq(2).addClass('disabled'); + } + + currentDate = viewDate.clone().startOf('M').startOf('week'); + + while (!viewDate.clone().endOf('M').endOf('w').isBefore(currentDate, 'd')) { + if (currentDate.weekday() === 0) { + row = $('
    ' + currentDate.week() + '' + currentDate.date() + '
    ' + currentHour.format(use24Hours ? 'HH' : 'hh') + '
    ' + currentMinute.format('mm') + '
    ' + currentSecond.format('ss') + '
    ", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support: IE <=9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox <=42 + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + return ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +function manipulationTarget( elem, content ) { + if ( jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return elem.getElementsByTagName( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + style = elem.style; + + computed = computed || getStyles( elem ); + + // Support: IE <=9 only + // getPropertyValue is only needed for .css('filter') (#12537) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + + // If we already have the right measurement, avoid augmentation + 4 : + + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var val, + valueIsBorderBox = true, + styles = getStyles( elem ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + if ( elem.getClientRects().length ) { + val = elem.getBoundingClientRect()[ name ]; + } + + // Some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || + ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + style[ name ] = value; + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || + ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function raf() { + if ( timerId ) { + window.requestAnimationFrame( raf ); + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( jQuery.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + if ( percent < 1 && length ) { + return remaining; + } else { + deferred.resolveWith( elem, [ animation ] ); + return false; + } + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + // attach callbacks from options + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnotwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off or if document is hidden + if ( jQuery.fx.off || document.hidden ) { + opt.duration = 0; + + } else { + opt.duration = typeof opt.duration === "number" ? + opt.duration : opt.duration in jQuery.fx.speeds ? + jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Checks the timer has not already been removed + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + if ( timer() ) { + jQuery.fx.start(); + } else { + jQuery.timers.pop(); + } +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( !timerId ) { + timerId = window.requestAnimationFrame ? + window.requestAnimationFrame( raf ) : + window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.stop = function() { + if ( window.cancelAnimationFrame ) { + window.cancelAnimationFrame( timerId ); + } else { + window.clearInterval( timerId ); + } + + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + jQuery.nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + attrNames = value && value.match( rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + +var rclass = /[\t\r\n\f]/g; + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnotwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && + ( " " + curValue + " " ).replace( rclass, " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = jQuery.trim( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnotwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && + ( " " + curValue + " " ).replace( rclass, " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = jQuery.trim( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnotwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + getClass( elem ) + " " ).replace( rclass, " " ) + .indexOf( className ) > -1 + ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g, + rspaces = /[\x20\t\r\n\f]+/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + + // Handle most common string cases + ret.replace( rreturn, "" ) : + + // Handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( jQuery.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rts = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add anti-cache in uncached url if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rts, "" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + +
    +
    +
    + + +
    +
    +
    + + + + diff --git a/www/bower_components/typeahead.js/test/integration/test.js b/www/bower_components/typeahead.js/test/integration/test.js new file mode 100644 index 0000000..37b23a6 --- /dev/null +++ b/www/bower_components/typeahead.js/test/integration/test.js @@ -0,0 +1,395 @@ +/* jshint esnext: true, evil: true, sub: true */ + +var wd = require('yiewd'), + colors = require('colors'), + expect = require('chai').expect, + _ = require('underscore'), + f = require('util').format, + env = process.env; + +var browser, caps; + +browser = (process.env.BROWSER || 'chrome').split(':'); + +caps = { + name: f('[%s] typeahead.js ui', browser.join(' , ')), + browserName: browser[0] +}; + +setIf(caps, 'version', browser[1]); +setIf(caps, 'platform', browser[2]); +setIf(caps, 'tunnel-identifier', env['TRAVIS_JOB_NUMBER']); +setIf(caps, 'build', env['TRAVIS_BUILD_NUMBER']); +setIf(caps, 'tags', env['CI'] ? ['CI'] : ['local']); + +function setIf(obj, key, val) { + val && (obj[key] = val); +} + +describe('jquery-typeahead.js', function() { + var driver, body, input, hint, dropdown, allPassed = true; + + this.timeout(300000); + + before(function(done) { + var host = 'ondemand.saucelabs.com', port = 80, username, password; + + if (env['CI']) { + host = 'localhost'; + port = 4445; + username = env['SAUCE_USERNAME']; + password = env['SAUCE_ACCESS_KEY']; + } + + driver = wd.remote(host, port, username, password); + driver.configureHttp({ + timeout: 30000, + retries: 5, + retryDelay: 200 + }); + + driver.on('status', function(info) { + console.log(info.cyan); + }); + + driver.on('command', function(meth, path, data) { + console.log(' > ' + meth.yellow, path.grey, data || ''); + }); + + driver.run(function*() { + yield this.init(caps); + yield this.get('http://localhost:8888/test/integration/test.html'); + + body = yield this.elementByTagName('body'); + input = yield this.elementById('states'); + hint = yield this.elementByClassName('tt-hint'); + dropdown = yield this.elementByClassName('tt-menu'); + + done(); + }); + }); + + afterEach(function(done) { + allPassed = allPassed && (this.currentTest.state === 'passed'); + + driver.run(function*() { + yield body.click(); + yield this.execute('window.jQuery("#states").typeahead("val", "")'); + done(); + }); + }); + + after(function(done) { + driver.run(function*() { + yield this.quit(); + yield driver.sauceJobStatus(allPassed); + done(); + }); + }); + + describe('on blur', function() { + it('should close dropdown', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + expect(yield dropdown.isDisplayed()).to.equal(true); + + yield body.click(); + expect(yield dropdown.isDisplayed()).to.equal(false); + + done(); + }); + }); + + it('should clear hint', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + expect(yield hint.getValue()).to.equal('michigan'); + + yield body.click(); + expect(yield hint.getValue()).to.equal(''); + + done(); + }); + }); + }); + + describe('on query change', function() { + it('should open dropdown if suggestions', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + + expect(yield dropdown.isDisplayed()).to.equal(true); + + done(); + }); + }); + + it('should close dropdown if no suggestions', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('huh?'); + + expect(yield dropdown.isDisplayed()).to.equal(false); + + done(); + }); + }); + + it('should render suggestions if suggestions', function(done) { + driver.run(function*() { + var suggestions; + + yield input.click(); + yield input.type('mi'); + + suggestions = yield dropdown.elementsByClassName('tt-suggestion'); + + expect(suggestions).to.have.length('4'); + expect(yield suggestions[0].text()).to.equal('Michigan'); + expect(yield suggestions[1].text()).to.equal('Minnesota'); + expect(yield suggestions[2].text()).to.equal('Mississippi'); + expect(yield suggestions[3].text()).to.equal('Missouri'); + + done(); + }); + }); + + it('should show hint if top suggestion is a match', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + + expect(yield hint.getValue()).to.equal('michigan'); + + done(); + }); + }); + + it('should match hint to query', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('NeW JE'); + + expect(yield hint.getValue()).to.equal('NeW JErsey'); + + done(); + }); + }); + + it('should not show hint if top suggestion is not a match', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('ham'); + + expect(yield hint.getValue()).to.equal(''); + + done(); + }); + }); + + it('should not show hint if there is query overflow', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('this is a very long value so '); + + expect(yield hint.getValue()).to.equal(''); + + done(); + }); + }); + }); + + describe('on up arrow', function() { + it('should cycle through suggestions', function(done) { + driver.run(function*() { + var suggestions; + + yield input.click(); + yield input.type('mi'); + + suggestions = yield dropdown.elementsByClassName('tt-suggestion'); + + yield input.type(wd.SPECIAL_KEYS['Up arrow']); + expect(yield input.getValue()).to.equal('Missouri'); + expect(yield suggestions[3].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Up arrow']); + expect(yield input.getValue()).to.equal('Mississippi'); + expect(yield suggestions[2].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Up arrow']); + expect(yield input.getValue()).to.equal('Minnesota'); + expect(yield suggestions[1].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Up arrow']); + expect(yield input.getValue()).to.equal('Michigan'); + expect(yield suggestions[0].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Up arrow']); + expect(yield input.getValue()).to.equal('mi'); + expect(yield suggestions[0].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + expect(yield suggestions[1].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + expect(yield suggestions[2].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + expect(yield suggestions[3].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + + done(); + }); + }); + }); + + describe('on down arrow', function() { + it('should cycle through suggestions', function(done) { + driver.run(function*() { + var suggestions; + + yield input.click(); + yield input.type('mi'); + + suggestions = yield dropdown.elementsByClassName('tt-suggestion'); + + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + expect(yield input.getValue()).to.equal('Michigan'); + expect(yield suggestions[0].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + expect(yield input.getValue()).to.equal('Minnesota'); + expect(yield suggestions[1].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + expect(yield input.getValue()).to.equal('Mississippi'); + expect(yield suggestions[2].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + expect(yield input.getValue()).to.equal('Missouri'); + expect(yield suggestions[3].getAttribute('class')).to.equal('tt-suggestion tt-selectable tt-cursor'); + + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + expect(yield input.getValue()).to.equal('mi'); + expect(yield suggestions[0].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + expect(yield suggestions[1].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + expect(yield suggestions[2].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + expect(yield suggestions[3].getAttribute('class')).to.equal('tt-suggestion tt-selectable'); + + done(); + }); + }); + }); + + describe('on escape', function() { + it('should close dropdown', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + expect(yield dropdown.isDisplayed()).to.equal(true); + + yield input.type(wd.SPECIAL_KEYS['Escape']); + expect(yield dropdown.isDisplayed()).to.equal(false); + + done(); + }); + }); + + it('should clear hint', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + expect(yield hint.getValue()).to.equal('michigan'); + + yield input.type(wd.SPECIAL_KEYS['Escape']); + expect(yield hint.getValue()).to.equal(''); + + done(); + }); + }); + }); + + describe('on tab', function() { + it('should autocomplete if hint is present', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + + yield input.type(wd.SPECIAL_KEYS['Tab']); + expect(yield input.getValue()).to.equal('Michigan'); + + done(); + }); + }); + + it('should select if cursor is on suggestion', function(done) { + driver.run(function*() { + var suggestions; + + yield input.click(); + yield input.type('mi'); + + suggestions = yield dropdown.elementsByClassName('tt-suggestion'); + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + yield input.type(wd.SPECIAL_KEYS['Tab']); + + expect(yield dropdown.isDisplayed()).to.equal(false); + expect(yield input.getValue()).to.equal('Minnesota'); + + done(); + }); + }); + }); + + describe('on right arrow', function() { + it('should autocomplete if hint is present', function(done) { + driver.run(function*() { + yield input.click(); + yield input.type('mi'); + + yield input.type(wd.SPECIAL_KEYS['Right arrow']); + expect(yield input.getValue()).to.equal('Michigan'); + + done(); + }); + }); + }); + + describe('on suggestion click', function() { + it('should select suggestion', function(done) { + driver.run(function*() { + var suggestions; + + yield input.click(); + yield input.type('mi'); + + suggestions = yield dropdown.elementsByClassName('tt-suggestion'); + yield suggestions[1].click(); + + expect(yield dropdown.isDisplayed()).to.equal(false); + expect(yield input.getValue()).to.equal('Minnesota'); + + done(); + }); + }); + }); + + describe('on enter', function() { + it('should select if cursor is on suggestion', function(done) { + driver.run(function*() { + var suggestions; + + yield input.click(); + yield input.type('mi'); + + suggestions = yield dropdown.elementsByClassName('tt-suggestion'); + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + yield input.type(wd.SPECIAL_KEYS['Down arrow']); + yield input.type(wd.SPECIAL_KEYS['Return']); + + expect(yield dropdown.isDisplayed()).to.equal(false); + expect(yield input.getValue()).to.equal('Minnesota'); + + done(); + }); + }); + }); +}); diff --git a/www/bower_components/typeahead.js/test/playground.html b/www/bower_components/typeahead.js/test/playground.html new file mode 100644 index 0000000..8dc2c56 --- /dev/null +++ b/www/bower_components/typeahead.js/test/playground.html @@ -0,0 +1,346 @@ + + + + + + + + + + +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + + + diff --git a/www/bower_components/typeahead.js/test/typeahead/dataset_spec.js b/www/bower_components/typeahead.js/test/typeahead/dataset_spec.js new file mode 100644 index 0000000..bf16503 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/dataset_spec.js @@ -0,0 +1,469 @@ +describe('Dataset', function() { + var www = WWW(), mockSuggestions, mockSuggestionsDisplayFn; + + mockSuggestions = [ + { value: 'one', raw: { value: 'one' } }, + { value: 'two', raw: { value: 'two' } }, + { value: 'html', raw: { value: 'html' } } + ]; + + mockSuggestionsDisplayFn = [ + { display: '4' }, + { display: '5' }, + { display: '6' } + ]; + + beforeEach(function() { + this.dataset = new Dataset({ + name: 'test', + node: $('
    '), + source: this.source = jasmine.createSpy('source') + }, www); + }); + + it('should throw an error if source is missing', function() { + expect(noSource).toThrow(); + + function noSource() { new Dataset({}, www); } + }); + + it('should throw an error if the name is not a valid class name', function() { + expect(fn).toThrow(); + + function fn() { + var d = new Dataset({ + name: 'a space', + node: $('
    '), + source: $.noop + }, www); + } + }); + + describe('#getRoot', function() { + it('should return the root element', function() { + var sel = 'div' + www.selectors.dataset + www.selectors.dataset + '-test'; + expect(this.dataset.$el).toBe(sel); + }); + }); + + describe('#update', function() { + it('should render suggestions', function() { + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('one'); + expect(this.dataset.$el).toContainText('two'); + expect(this.dataset.$el).toContainText('html'); + }); + + it('should escape html chars from display value when using default template', function() { + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('html'); + }); + + it('should respect limit option', function() { + this.dataset.limit = 2; + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('one'); + expect(this.dataset.$el).toContainText('two'); + expect(this.dataset.$el).not.toContainText('three'); + }); + + it('should allow custom display functions', function() { + this.dataset = new Dataset({ + name: 'test', + node: $('
    '), + display: function(o) { return o.display; }, + source: this.source = jasmine.createSpy('source') + }, www); + + this.source.andCallFake(syncMockSuggestionsDisplayFn); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('4'); + expect(this.dataset.$el).toContainText('5'); + expect(this.dataset.$el).toContainText('6'); + }); + + it('should ignore async invocations of sync', function() { + this.source.andCallFake(asyncSync); + this.dataset.update('woah'); + + expect(this.dataset.$el).not.toContainText('one'); + }); + + it('should ignore subesequent invocations of sync', function() { + this.source.andCallFake(multipleSync); + this.dataset.update('woah'); + + expect(this.dataset.$el.find('.tt-suggestion')).toHaveLength(3); + }); + + it('should trigger asyncRequested when needing/expecting backfill', function() { + var spy = jasmine.createSpy(); + + this.dataset.async = true; + this.dataset.onSync('asyncRequested', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + + expect(spy).toHaveBeenCalled(); + }); + + it('should not trigger asyncRequested when not expecting backfill', function() { + var spy = jasmine.createSpy(); + + this.dataset.async = false; + this.dataset.onSync('asyncRequested', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + + expect(spy).not.toHaveBeenCalled(); + }); + + it('should not trigger asyncRequested when not expecting backfill', function() { + var spy = jasmine.createSpy(); + + this.dataset.limit = 2; + this.dataset.async = true; + this.dataset.onSync('asyncRequested', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + + expect(spy).not.toHaveBeenCalled(); + }); + + it('should trigger asyncCanceled when pending aysnc is canceled', function() { + var spy = jasmine.createSpy(); + + this.dataset.async = true; + this.dataset.onSync('asyncCanceled', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + this.dataset.cancel(); + + waits(100); + + runs(function() { + expect(spy).toHaveBeenCalled(); + }); + }); + + it('should not trigger asyncCanceled when cancel happens after update', function() { + var spy = jasmine.createSpy(); + + this.dataset.async = true; + this.dataset.onSync('asyncCanceled', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + + waits(100); + + runs(function() { + this.dataset.cancel(); + expect(spy).not.toHaveBeenCalled(); + }); + }); + + it('should trigger asyncReceived when aysnc is received', function() { + var spy = jasmine.createSpy(); + + this.dataset.async = true; + this.dataset.onSync('asyncReceived', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + + waits(100); + + runs(function() { + expect(spy).toHaveBeenCalled(); + }); + }); + + it('should not trigger asyncReceived if canceled', function() { + var spy = jasmine.createSpy(); + + this.dataset.async = true; + this.dataset.onSync('asyncReceived', spy); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + this.dataset.cancel(); + + waits(100); + + runs(function() { + expect(spy).not.toHaveBeenCalled(); + }); + }); + + it('should not modify sync when async is added', function() { + var $test; + + this.dataset.async = true; + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + $test = this.dataset.$el.find('.tt-suggestion').first(); + $test.addClass('test'); + + waits(100); + + runs(function() { + expect($test).toHaveClass('test'); + }); + }); + + it('should respect limit option in regard to async', function() { + this.dataset.async = true; + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + this.dataset.update('woah'); + + waits(100); + + runs(function() { + expect(this.dataset.$el.find('.tt-suggestion')).toHaveLength(5); + }); + }); + + it('should cancel pending async', function() { + var spy1 = jasmine.createSpy(), spy2 = jasmine.createSpy(); + + this.dataset.async = true; + this.dataset.onSync('asyncCanceled', spy1); + this.dataset.onSync('asyncReceived', spy2); + this.source.andCallFake(fakeGetWithAsyncSuggestions); + + + this.dataset.update('woah'); + this.dataset.update('woah again'); + + waits(100); + + runs(function() { + expect(spy1.callCount).toBe(1); + expect(spy2.callCount).toBe(1); + }); + }); + + it('should render notFound when no suggestions are available', function() { + this.dataset = new Dataset({ + source: this.source, + node: $('
    '), + templates: { + notFound: '

    empty

    ' + } + }, www); + + this.source.andCallFake(syncEmptySuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('empty'); + }); + + it('should render pending when no suggestions are available but async is pending', function() { + this.dataset = new Dataset({ + source: this.source, + node: $('
    '), + async: true, + templates: { + pending: '

    pending

    ' + } + }, www); + + this.source.andCallFake(syncEmptySuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('pending'); + }); + + it('should render header when suggestions are rendered', function() { + this.dataset = new Dataset({ + source: this.source, + node: $('
    '), + templates: { + header: '

    header

    ' + } + }, www); + + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('header'); + }); + + it('should render footer when suggestions are rendered', function() { + this.dataset = new Dataset({ + source: this.source, + node: $('
    '), + templates: { + footer: function(c) { return '

    ' + c.query + '

    '; } + } + }, www); + + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).toContainText('woah'); + }); + + it('should not render header/footer if there is no content', function() { + this.dataset = new Dataset({ + source: this.source, + node: $('
    '), + templates: { + header: '

    header

    ', + footer: '

    footer

    ' + } + }, www); + + this.source.andCallFake(syncEmptySuggestions); + this.dataset.update('woah'); + + expect(this.dataset.$el).not.toContainText('header'); + expect(this.dataset.$el).not.toContainText('footer'); + }); + + it('should not render stale suggestions', function() { + this.source.andCallFake(fakeGetWithAsyncSuggestions); + this.dataset.update('woah'); + + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('nelly'); + + waits(100); + + runs(function() { + expect(this.dataset.$el).toContainText('one'); + expect(this.dataset.$el).toContainText('two'); + expect(this.dataset.$el).toContainText('html'); + expect(this.dataset.$el).not.toContainText('four'); + expect(this.dataset.$el).not.toContainText('five'); + }); + }); + + it('should not render async suggestions if update was canceled', function() { + this.source.andCallFake(fakeGetWithAsyncSuggestions); + this.dataset.update('woah'); + this.dataset.cancel(); + + waits(100); + + runs(function() { + var rendered = this.dataset.$el.find('.tt-suggestion'); + expect(rendered).toHaveLength(3); + }); + }); + + it('should trigger rendered after suggestions are rendered', function() { + var spy; + + this.dataset.onSync('rendered', spy = jasmine.createSpy()); + + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + waitsFor(function() { return spy.callCount; }); + }); + }); + + describe('#clear', function() { + it('should clear suggestions', function() { + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + this.dataset.clear(); + expect(this.dataset.$el).toBeEmpty(); + }); + + it('should cancel pending updates', function() { + var spy; + + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + spy = spyOn(this.dataset, 'cancel'); + + this.dataset.clear(); + expect(spy).toHaveBeenCalled(); + }); + + it('should trigger cleared', function() { + var spy; + + this.dataset.onSync('cleared', spy = jasmine.createSpy()); + this.dataset.clear(); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('#isEmpty', function() { + it('should return true when empty', function() { + expect(this.dataset.isEmpty()).toBe(true); + }); + + it('should return false when not empty', function() { + this.source.andCallFake(syncMockSuggestions); + this.dataset.update('woah'); + + expect(this.dataset.isEmpty()).toBe(false); + }); + }); + + describe('#destroy', function() { + it('should set dataset element to dummy element', function() { + var $prevEl = this.dataset.$el; + + this.dataset.destroy(); + expect(this.dataset.$el).not.toBe($prevEl); + }); + }); + + // helper functions + // ---------------- + + function syncEmptySuggestions(q, sync, async) { + sync([]); + } + + function syncMockSuggestions(q, sync, async) { + sync(mockSuggestions); + } + + function syncMockSuggestionsDisplayFn(q, sync, async) { + sync(mockSuggestionsDisplayFn); + } + + function asyncSync(q, sync, async) { + setTimeout(function() { sync(mockSuggestions); }, 0); + } + + function multipleSync(q, sync, async) { + sync(mockSuggestions); + sync(mockSuggestions); + } + + function fakeGetWithAsyncSuggestions(query, sync, async) { + sync(mockSuggestions); + + setTimeout(function() { + async([ + { value: 'four', raw: { value: 'four' } }, + { value: 'five', raw: { value: 'five' } }, + { value: 'six', raw: { value: 'six' } }, + { value: 'seven', raw: { value: 'seven' } }, + { value: 'eight', raw: { value: 'eight' } }, + ]); + }, 0); + } +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/default_results_spec.js b/www/bower_components/typeahead.js/test/typeahead/default_results_spec.js new file mode 100644 index 0000000..bf47231 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/default_results_spec.js @@ -0,0 +1,103 @@ +describe('DefaultMenu', function() { + var www = WWW(); + + beforeEach(function() { + var $fixture; + + jasmine.Dataset.useMock(); + + setFixtures(''); + + $fixture = $('#jasmine-fixtures'); + this.$node = $fixture.find('#menu-fixture'); + this.$node.html(fixtures.html.dataset); + + this.view = new DefaultMenu({ node: this.$node, datasets: [{}] }, www).bind(); + this.dataset = this.view.datasets[0]; + }); + + describe('when rendered is triggered on a dataset', function() { + it('should hide menu if empty', function() { + this.dataset.isEmpty.andReturn(true); + + this.view._show(); + this.dataset.trigger('rendered'); + + expect(this.$node).not.toBeVisible(); + }); + + it('should not show menu if not open', function() { + this.dataset.isEmpty.andReturn(false); + + this.view._hide(); + this.dataset.trigger('rendered'); + + expect(this.$node).not.toBeVisible(); + }); + + it('should show menu if not empty and open', function() { + this.dataset.isEmpty.andReturn(false); + + this.view._hide(); + this.view.open(); + this.dataset.trigger('rendered'); + + expect(this.$node).toBeVisible(); + }); + }); + + describe('when cleared is triggered on a dataset', function() { + it('should hide menu if empty', function() { + this.dataset.isEmpty.andReturn(true); + + this.view._show(); + this.dataset.trigger('cleared'); + + expect(this.$node).not.toBeVisible(); + }); + + it('should not show menu if not open', function() { + this.dataset.isEmpty.andReturn(false); + + this.view._hide(); + this.dataset.trigger('cleared'); + + expect(this.$node).not.toBeVisible(); + }); + + it('should show menu if not empty and open', function() { + this.dataset.isEmpty.andReturn(false); + + this.view._hide(); + this.view.open(); + this.dataset.trigger('cleared'); + + expect(this.$node).toBeVisible(); + }); + }); + + describe('#open', function() { + it('should show menu if not empty', function() { + spyOn(this.view, '_allDatasetsEmpty').andReturn(false); + this.view.open(); + + expect(this.$node[0].getAttribute('style')).toMatch(/display: block/); + }); + + it('should not show menu if empty', function() { + spyOn(this.view, '_allDatasetsEmpty').andReturn(true); + this.view.open(); + + expect(this.$node).not.toHaveAttr('style', 'display: block;'); + }); + }); + + describe('#close', function() { + it('should hide menu', function() { + this.view._show(); + this.view.close(); + + expect(this.$node).not.toBeVisible(); + }); + }); +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/event_bus_spec.js b/www/bower_components/typeahead.js/test/typeahead/event_bus_spec.js new file mode 100644 index 0000000..9845aa2 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/event_bus_spec.js @@ -0,0 +1,42 @@ +describe('EventBus', function() { + + beforeEach(function() { + var $fixture; + + setFixtures(fixtures.html.input); + + $fixture = $('#jasmine-fixtures'); + this.$el = $fixture.find('.tt-input'); + + this.eventBus = new EventBus({ el: this.$el }); + }); + + it('#trigger should trigger event', function() { + var spy = jasmine.createSpy(); + + this.$el.on('typeahead:fiz', spy); + + this.eventBus.trigger('fiz'); + expect(spy).toHaveBeenCalled(); + }); + + it('#before should return false if default was not prevented', function() { + var spy = jasmine.createSpy(); + + this.$el.on('typeahead:beforefiz', spy); + + expect(this.eventBus.before('fiz')).toBe(false); + expect(spy).toHaveBeenCalled(); + }); + + it('#before should return true if default was prevented', function() { + var spy = jasmine.createSpy().andCallFake(prevent); + + this.$el.on('typeahead:beforefiz', spy); + + expect(this.eventBus.before('fiz')).toBe(true); + expect(spy).toHaveBeenCalled(); + + function prevent($e) { $e.preventDefault(); } + }); +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/event_emitter_spec.js b/www/bower_components/typeahead.js/test/typeahead/event_emitter_spec.js new file mode 100644 index 0000000..5c51ca6 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/event_emitter_spec.js @@ -0,0 +1,111 @@ +describe('EventEmitter', function() { + + beforeEach(function() { + this.spy = jasmine.createSpy(); + this.target = _.mixin({}, EventEmitter); + }); + + it('methods should be chainable', function() { + expect(this.target.onSync()).toEqual(this.target); + expect(this.target.onAsync()).toEqual(this.target); + expect(this.target.off()).toEqual(this.target); + expect(this.target.trigger()).toEqual(this.target); + }); + + it('#on should take the context a callback should be called in', function() { + var context = { val: 3 }, cbContext; + + this.target.onSync('xevent', setCbContext, context).trigger('xevent'); + + waitsFor(assertCbContext, 'callback was called in the wrong context'); + + function setCbContext() { cbContext = this; } + function assertCbContext() { return cbContext === context; } + }); + + it('#onAsync callbacks should be invoked asynchronously', function() { + this.target.onAsync('event', this.spy).trigger('event'); + + expect(this.spy.callCount).toBe(0); + waitsFor(assertCallCount(this.spy, 1), 'the callback was not invoked'); + }); + + it('#onSync callbacks should be invoked synchronously', function() { + this.target.onSync('event', this.spy).trigger('event'); + + expect(this.spy.callCount).toBe(1); + }); + + it('#off should remove callbacks', function() { + this.target + .onSync('event1 event2', this.spy) + .onAsync('event1 event2', this.spy) + .off('event1 event2') + .trigger('event1 event2'); + + waits(100); + runs(assertCallCount(this.spy, 0)); + }); + + it('methods should accept multiple event types', function() { + this.target + .onSync('event1 event2', this.spy) + .onAsync('event1 event2', this.spy) + .trigger('event1 event2'); + + expect(this.spy.callCount).toBe(2); + waitsFor(assertCallCount(this.spy, 4), 'the callback was not invoked'); + }); + + it('the event type should be passed to the callback', function() { + this.target + .onSync('sync', this.spy) + .onAsync('async', this.spy) + .trigger('sync async'); + + waitsFor(assertArgs(this.spy, 0, ['sync']), 'bad args'); + waitsFor(assertArgs(this.spy, 1, ['async']), 'bad args'); + }); + + it('arbitrary args should be passed to the callback', function() { + this.target + .onSync('event', this.spy) + .onAsync('event', this.spy) + .trigger('event', 1, 2); + + waitsFor(assertArgs(this.spy, 0, ['event', 1, 2]), 'bad args'); + waitsFor(assertArgs(this.spy, 1, ['event', 1, 2]), 'bad args'); + }); + + it('callback execution should be cancellable', function() { + var cancelSpy = jasmine.createSpy().andCallFake(cancel); + + this.target + .onSync('one', cancelSpy) + .onSync('one', this.spy) + .onAsync('two', cancelSpy) + .onAsync('two', this.spy) + .onSync('three', cancelSpy) + .onAsync('three', this.spy) + .trigger('one two three'); + + waitsFor(assertCallCount(cancelSpy, 3)); + waitsFor(assertCallCount(this.spy, 0)); + + function cancel() { return false; } + }); + + function assertCallCount(spy, expected) { + return function() { return spy.callCount === expected; }; + } + + function assertArgs(spy, call, expected) { + return function() { + var env = jasmine.getEnv(), + actual = spy.calls[call] ? spy.calls[call].args : undefined; + + return env.equals_(actual, expected); + }; + } + +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/highlight_spec.js b/www/bower_components/typeahead.js/test/typeahead/highlight_spec.js new file mode 100644 index 0000000..952d3f2 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/highlight_spec.js @@ -0,0 +1,117 @@ +describe('highlight', function() { + it('should allow tagName to be specified', function() { + var before = 'abcde', + after = 'abcde', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'bcd', tagName: 'span' }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should allow className to be specified', function() { + var before = 'abcde', + after = 'abcde', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'bcd', className: 'one two' }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should be case insensitive by default', function() { + var before = 'ABCDE', + after = 'ABCDE', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'bcd' }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should support case sensitivity', function() { + var before = 'ABCDE', + after = 'ABCDE', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'bcd', caseSensitive: true }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should support words only matching', function() { + var before = 'tone one phone', + after = 'tone one phone', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'one', wordsOnly: true }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should support matching multiple patterns', function() { + var before = 'tone one phone', + after = 'tone one phone', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: ['tone', 'phone'] }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should support regex chars in the pattern', function() { + var before = '*.js when?', + after = '*.js when?', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: ['*.', '?'] }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should work on complex html structures', function() { + var before = [ + '
    abcde', + 'abcde', + '

    abcde

    ', + '
    ' + ].join(''), + after = [ + '
    abcde', + 'abcde', + '

    abcde

    ', + '
    ' + ].join(''), + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'abc' }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should ignore html tags and attributes', function() { + var before = '', + after = '', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: ['span', 'class'] }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should not match across tags', function() { + var before = 'abc', + after = 'abc', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'abc' }); + expect(testNode.innerHTML).toEqual(after); + }); + + it('should ignore html comments', function() { + var before = '', + after = '', + testNode = buildTestNode(before); + + highlight({ node: testNode, pattern: 'abc' }); + expect(testNode.innerHTML).toEqual(after); + }); + + function buildTestNode(content) { + var node = document.createElement('div'); + node.innerHTML = content; + + return node; + } +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/input_spec.js b/www/bower_components/typeahead.js/test/typeahead/input_spec.js new file mode 100644 index 0000000..31d8438 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/input_spec.js @@ -0,0 +1,538 @@ +describe('Input', function() { + var KEYS, www; + + KEYS = { + enter: 13, + esc: 27, + tab: 9, + left: 37, + right: 39, + up: 38, + down: 40, + normal: 65 // "A" key + }; + + www = WWW(); + + beforeEach(function() { + var $fixture; + + setFixtures(fixtures.html.input + fixtures.html.hint); + + $fixture = $('#jasmine-fixtures'); + this.$input = $fixture.find('.tt-input'); + this.$hint = $fixture.find('.tt-hint'); + + this.view = new Input({ input: this.$input, hint: this.$hint }, www).bind(); + }); + + it('should throw an error if no input is provided', function() { + expect(noInput).toThrow(); + + function noInput() { new Input({}, www); } + }); + + describe('when the blur DOM event is triggered', function() { + it('should reset the input value', function() { + this.view.setQuery('wine'); + this.view.setInputValue('cheese'); + + this.$input.blur(); + + expect(this.$input.val()).toBe('wine'); + }); + + it('should trigger blurred', function() { + var spy; + + this.view.onSync('blurred', spy = jasmine.createSpy()); + this.$input.blur(); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when the focus DOM event is triggered', function() { + it('should update queryWhenFocused', function() { + this.view.setQuery('hi'); + this.$input.focus(); + expect(this.view.hasQueryChangedSinceLastFocus()).toBe(false); + this.view.setQuery('bye'); + expect(this.view.hasQueryChangedSinceLastFocus()).toBe(true); + }); + + it('should trigger focused', function() { + var spy; + + this.view.onSync('focused', spy = jasmine.createSpy()); + this.$input.focus(); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by tab', function() { + it('should trigger tabKeyed if no modifiers were pressed', function() { + var spy; + + this.view.onSync('tabKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.tab); + + expect(spy).toHaveBeenCalled(); + }); + + it('should not trigger tabKeyed if modifiers were pressed', function() { + var spy; + + this.view.onSync('tabKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.tab, true); + + expect(spy).not.toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by esc', function() { + it('should trigger escKeyed', function() { + var spy; + + this.view.onSync('escKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.esc); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by left', function() { + it('should trigger leftKeyed', function() { + var spy; + + this.view.onSync('leftKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.left); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by right', function() { + it('should trigger rightKeyed', function() { + var spy; + + this.view.onSync('rightKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.right); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by enter', function() { + it('should trigger enterKeyed', function() { + var spy; + + this.view.onSync('enterKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.enter); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by up', function() { + it('should trigger upKeyed', function() { + var spy; + + this.view.onSync('upKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.up); + + expect(spy).toHaveBeenCalled(); + }); + + it('should prevent default if no modifers were pressed', function() { + var $e = simulateKeyEvent(this.$input, 'keydown', KEYS.up); + + expect($e.preventDefault).toHaveBeenCalled(); + }); + + it('should not prevent default if modifers were pressed', function() { + var $e = simulateKeyEvent(this.$input, 'keydown', KEYS.up, true); + + expect($e.preventDefault).not.toHaveBeenCalled(); + }); + }); + + describe('when the keydown DOM event is triggered by down', function() { + it('should trigger downKeyed', function() { + var spy; + + this.view.onSync('downKeyed', spy = jasmine.createSpy()); + simulateKeyEvent(this.$input, 'keydown', KEYS.down); + + expect(spy).toHaveBeenCalled(); + }); + + it('should prevent default if no modifers were pressed', function() { + var $e = simulateKeyEvent(this.$input, 'keydown', KEYS.down); + + expect($e.preventDefault).toHaveBeenCalled(); + }); + + it('should not prevent default if modifers were pressed', function() { + var $e = simulateKeyEvent(this.$input, 'keydown', KEYS.down, true); + + expect($e.preventDefault).not.toHaveBeenCalled(); + }); + }); + + // NOTE: have to treat these as async because the ie polyfill acts + // in a async manner + describe('when the input DOM event is triggered', function() { + it('should update query', function() { + this.view.setQuery('wine'); + this.view.setInputValue('cheese'); + + simulateInputEvent(this.$input); + + waitsFor(function() { return this.view.getQuery() === 'cheese'; }); + }); + + it('should trigger queryChanged if the query changed', function() { + var spy; + + this.view.setQuery('wine'); + this.view.setInputValue('cheese'); + this.view.onSync('queryChanged', spy = jasmine.createSpy()); + + simulateInputEvent(this.$input); + + expect(spy).toHaveBeenCalled(); + }); + + it('should trigger whitespaceChanged if whitespace changed', function() { + var spy; + + this.view.setQuery('wine bar'); + this.view.setInputValue('wine bar'); + this.view.onSync('whitespaceChanged', spy = jasmine.createSpy()); + + simulateInputEvent(this.$input); + + expect(spy).toHaveBeenCalled(); + }); + + it('should clear hint if invalid', function() { + spyOn(this.view, 'clearHintIfInvalid'); + simulateInputEvent(this.$input); + expect(this.view.clearHintIfInvalid).toHaveBeenCalled(); + }); + + it('should check lang direction', function() { + var spy; + + this.$input.css('direction', 'rtl'); + this.view.onSync('langDirChanged', spy = jasmine.createSpy()); + + simulateInputEvent(this.$input); + + expect(this.view.dir).toBe('rtl'); + expect(this.$hint).toHaveAttr('dir', 'rtl'); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('.normalizeQuery', function() { + it('should strip leading whitespace', function() { + expect(Input.normalizeQuery(' foo')).toBe('foo'); + }); + + it('should condense whitespace', function() { + expect(Input.normalizeQuery('foo bar')).toBe('foo bar'); + }); + + it('should play nice with non-string values', function() { + expect(Input.normalizeQuery(2)).toBe('2'); + expect(Input.normalizeQuery([])).toBe(''); + expect(Input.normalizeQuery(null)).toBe(''); + expect(Input.normalizeQuery(undefined)).toBe(''); + expect(Input.normalizeQuery(false)).toBe('false'); + }); + }); + + describe('#focus', function() { + it('should focus the input', function() { + this.$input.blur(); + this.view.focus(); + + expect(this.$input).toBeFocused(); + }); + }); + + describe('#blur', function() { + it('should blur the input', function() { + this.$input.focus(); + this.view.blur(); + + expect(this.$input).not.toBeFocused(); + }); + }); + + describe('#getQuery', function() { + it('should act as getter to the query property', function() { + this.view.setQuery('mouse'); + expect(this.view.getQuery()).toBe('mouse'); + }); + }); + + describe('#setQuery', function() { + it('should act as setter to the query property', function() { + this.view.setQuery('mouse'); + expect(this.view.getQuery()).toBe('mouse'); + }); + + it('should update input value', function() { + this.view.setQuery('mouse'); + expect(this.view.getInputValue()).toBe('mouse'); + }); + + it('should trigger queryChanged if the query changed', function() { + var spy; + + this.view.setQuery('wine'); + this.view.onSync('queryChanged', spy = jasmine.createSpy()); + this.view.setQuery('cheese'); + + expect(spy).toHaveBeenCalled(); + }); + + it('should trigger whitespaceChanged if whitespace changed', function() { + var spy; + + this.view.setQuery('wine bar'); + this.view.onSync('whitespaceChanged', spy = jasmine.createSpy()); + this.view.setQuery('wine bar'); + + expect(spy).toHaveBeenCalled(); + }); + + it('should clear hint if invalid', function() { + spyOn(this.view, 'clearHintIfInvalid'); + simulateInputEvent(this.$input); + expect(this.view.clearHintIfInvalid).toHaveBeenCalled(); + }); + }); + + describe('#hasQueryChangedSinceLastFocus', function() { + it('should return true if the query has changed since focus', function() { + this.view.setQuery('hi'); + this.$input.focus(); + this.view.setQuery('bye'); + expect(this.view.hasQueryChangedSinceLastFocus()).toBe(true); + }); + + it('should return false if the query has not changed since focus', function() { + this.view.setQuery('hi'); + this.$input.focus(); + expect(this.view.hasQueryChangedSinceLastFocus()).toBe(false); + }); + }); + + describe('#getInputValue', function() { + it('should act as getter to the input value', function() { + this.$input.val('cheese'); + expect(this.view.getInputValue()).toBe('cheese'); + }); + }); + + describe('#setInputValue', function() { + it('should act as setter to the input value', function() { + this.view.setInputValue('cheese'); + expect(this.view.getInputValue()).toBe('cheese'); + }); + + it('should clear hint if invalid', function() { + spyOn(this.view, 'clearHintIfInvalid'); + this.view.setInputValue('cheese head'); + expect(this.view.clearHintIfInvalid).toHaveBeenCalled(); + }); + + it('should check lang direction', function() { + var spy; + + this.$input.css('direction', 'rtl'); + this.view.onSync('langDirChanged', spy = jasmine.createSpy()); + + simulateInputEvent(this.$input); + + expect(this.view.dir).toBe('rtl'); + expect(this.$hint).toHaveAttr('dir', 'rtl'); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('#getHint/#setHint', function() { + it('should act as getter/setter to value of hint', function() { + this.view.setHint('mountain'); + expect(this.view.getHint()).toBe('mountain'); + }); + }); + + describe('#resetInputValue', function() { + it('should reset input value to last query', function() { + this.view.setQuery('cheese'); + this.view.setInputValue('wine'); + + this.view.resetInputValue(); + expect(this.view.getInputValue()).toBe('cheese'); + }); + }); + + describe('#clearHint', function() { + it('should set the hint value to the empty string', function() { + this.view.setHint('cheese'); + this.view.clearHint(); + + expect(this.view.getHint()).toBe(''); + }); + }); + + describe('#clearHintIfInvalid', function() { + it('should clear hint if input value is empty string', function() { + this.view.setInputValue(''); + this.view.setHint('cheese'); + this.view.clearHintIfInvalid(); + + expect(this.view.getHint()).toBe(''); + }); + + it('should clear hint if input value is not prefix of input', function() { + this.view.setInputValue('milk'); + this.view.setHint('cheese'); + this.view.clearHintIfInvalid(); + + expect(this.view.getHint()).toBe(''); + }); + + it('should clear hint if overflow exists', function() { + spyOn(this.view, 'hasOverflow').andReturn(true); + this.view.setInputValue('che'); + this.view.setHint('cheese'); + this.view.clearHintIfInvalid(); + + expect(this.view.getHint()).toBe(''); + }); + + it('should not clear hint if input value is prefix of input', function() { + this.view.setInputValue('che'); + this.view.setHint('cheese'); + this.view.clearHintIfInvalid(); + + expect(this.view.getHint()).toBe('cheese'); + }); + }); + + describe('#hasOverflow', function() { + it('should return true if the input has overflow text', function() { + var longStr = new Array(1000).join('a'); + + this.view.setInputValue(longStr); + expect(this.view.hasOverflow()).toBe(true); + }); + + it('should return false if the input has no overflow text', function() { + var shortStr = 'aah'; + + this.view.setInputValue(shortStr); + expect(this.view.hasOverflow()).toBe(false); + }); + }); + + describe('#isCursorAtEnd', function() { + it('should return true if the text cursor is at the end', function() { + this.view.setInputValue('boo'); + + setCursorPosition(this.$input, 3); + expect(this.view.isCursorAtEnd()).toBe(true); + }); + + it('should return false if the text cursor is not at the end', function() { + this.view.setInputValue('boo'); + + setCursorPosition(this.$input, 1); + expect(this.view.isCursorAtEnd()).toBe(false); + }); + }); + + describe('#destroy', function() { + it('should remove event handlers', function() { + var $input, $hint; + + $hint = this.view.$hint; + $input = this.view.$input; + + spyOn($hint, 'off'); + spyOn($input, 'off'); + + this.view.destroy(); + + expect($hint.off).toHaveBeenCalledWith('.tt'); + expect($input.off).toHaveBeenCalledWith('.tt'); + }); + + it('should set references to DOM elements to dummy element', function() { + var $hint, $input, $overflowHelper; + + $hint = this.view.$hint; + $input = this.view.$input; + $overflowHelper = this.view.$overflowHelper; + + this.view.destroy(); + + expect(this.view.$hint).not.toBe($hint); + expect(this.view.$input).not.toBe($input); + expect(this.view.$overflowHelper).not.toBe($overflowHelper); + }); + }); + + // helper functions + // ---------------- + + function simulateInputEvent($node) { + var $e, type; + + type = _.isMsie() ? 'keypress' : 'input'; + $e = $.Event(type); + + $node.trigger($e); + } + + function simulateKeyEvent($node, type, key, withModifier) { + var $e; + + $e = $.Event(type, { + keyCode: key, + altKey: !!withModifier, + ctrlKey: !!withModifier, + metaKey: !!withModifier, + shiftKey: !!withModifier + }); + + spyOn($e, 'preventDefault'); + $node.trigger($e); + + return $e; + } + + function setCursorPosition($input, pos) { + var input = $input[0], range; + + if (input.setSelectionRange) { + input.focus(); + input.setSelectionRange(pos, pos); + } + + else if (input.createTextRange) { + range = input.createTextRange(); + range.collapse(true); + range.moveEnd('character', pos); + range.moveStart('character', pos); + range.select(); + } + } +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/plugin_spec.js b/www/bower_components/typeahead.js/test/typeahead/plugin_spec.js new file mode 100644 index 0000000..440fb5d --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/plugin_spec.js @@ -0,0 +1,197 @@ +describe('$plugin', function() { + + beforeEach(function() { + var $fixture; + + setFixtures(''); + + $fixture = $('#jasmine-fixtures'); + this.$input = $fixture.find('.test-input'); + + this.$input.typeahead(null, { + displayKey: 'v', + source: function(q, sync) { + sync([{ v: '1' }, { v: '2' }, { v: '3' }]); + } + }); + }); + + it('#enable should enable the typaahead', function() { + this.$input.typeahead('disable'); + expect(this.$input.typeahead('isEnabled')).toBe(false); + + this.$input.typeahead('enable'); + expect(this.$input.typeahead('isEnabled')).toBe(true); + }); + + it('#disable should disable the typaahead', function() { + this.$input.typeahead('enable'); + expect(this.$input.typeahead('isEnabled')).toBe(true); + + this.$input.typeahead('disable'); + expect(this.$input.typeahead('isEnabled')).toBe(false); + }); + + it('#activate should activate the typaahead', function() { + this.$input.typeahead('deactivate'); + expect(this.$input.typeahead('isActive')).toBe(false); + + this.$input.typeahead('activate'); + expect(this.$input.typeahead('isActive')).toBe(true); + }); + + it('#activate should fail to activate the typaahead if disabled', function() { + this.$input.typeahead('deactivate'); + expect(this.$input.typeahead('isActive')).toBe(false); + this.$input.typeahead('disable'); + + this.$input.typeahead('activate'); + expect(this.$input.typeahead('isActive')).toBe(false); + }); + + it('#deactivate should deactivate the typaahead', function() { + this.$input.typeahead('activate'); + expect(this.$input.typeahead('isActive')).toBe(true); + + this.$input.typeahead('deactivate'); + expect(this.$input.typeahead('isActive')).toBe(false); + }); + + it('#open should open the menu', function() { + this.$input.typeahead('close'); + expect(this.$input.typeahead('isOpen')).toBe(false); + + this.$input.typeahead('open'); + expect(this.$input.typeahead('isOpen')).toBe(true); + }); + + it('#close should close the menu', function() { + this.$input.typeahead('open'); + expect(this.$input.typeahead('isOpen')).toBe(true); + + this.$input.typeahead('close'); + expect(this.$input.typeahead('isOpen')).toBe(false); + }); + + it('#select should select selectable', function() { + var $el; + + // activate and set val to render some selectables + this.$input.typeahead('activate'); + this.$input.typeahead('val', 'o'); + $el = $('.tt-selectable').first(); + + expect(this.$input.typeahead('select', $el)).toBe(true); + expect(this.$input.typeahead('val')).toBe('1'); + }); + + it('#select should return false if not valid selectable', function() { + var body; + + // activate and set val to render some selectables + this.$input.typeahead('activate'); + this.$input.typeahead('val', 'o'); + body = document.body; + + expect(this.$input.typeahead('select', body)).toBe(false); + }); + + it('#autocomplete should autocomplete to selectable', function() { + var $el; + + // activate and set val to render some selectables + this.$input.typeahead('activate'); + this.$input.typeahead('val', 'o'); + $el = $('.tt-selectable').first(); + + expect(this.$input.typeahead('autocomplete', $el)).toBe(true); + expect(this.$input.typeahead('val')).toBe('1'); + }); + + it('#autocomplete should return false if not valid selectable', function() { + var body; + + // activate and set val to render some selectables + this.$input.typeahead('activate'); + this.$input.typeahead('val', 'o'); + body = document.body; + + expect(this.$input.typeahead('autocomplete', body)).toBe(false); + }); + + it('#moveCursor should move cursor', function() { + var $el; + + // activate and set val to render some selectables + this.$input.typeahead('activate'); + this.$input.typeahead('val', 'o'); + $el = $('.tt-selectable').first(); + + expect($el).not.toHaveClass('tt-cursor'); + expect(this.$input.typeahead('moveCursor', 1)).toBe(true); + expect($el).toHaveClass('tt-cursor'); + }); + + it('#select should return false if not valid selectable', function() { + var body; + + // activate and set val to render some selectables + this.$input.typeahead('activate'); + this.$input.typeahead('val', 'o'); + body = document.body; + + expect(this.$input.typeahead('select', body)).toBe(false); + }); + + it('#val() should typeahead value of element', function() { + var $els; + + this.$input.typeahead('val', 'foo'); + $els = this.$input.add('
    '); + + expect($els.typeahead('val')).toBe('foo'); + }); + + it('#val(q) should set query', function() { + this.$input.typeahead('val', 'foo'); + expect(this.$input.typeahead('val')).toBe('foo'); + }); + + it('#destroy should revert modified attributes', function() { + expect(this.$input).toHaveAttr('autocomplete', 'off'); + expect(this.$input).toHaveAttr('dir'); + expect(this.$input).toHaveAttr('spellcheck'); + expect(this.$input).toHaveAttr('style'); + + this.$input.typeahead('destroy'); + + expect(this.$input).toHaveAttr('autocomplete', 'on'); + expect(this.$input).not.toHaveAttr('dir'); + expect(this.$input).not.toHaveAttr('spellcheck'); + expect(this.$input).not.toHaveAttr('style'); + }); + + it('#destroy should remove data', function() { + expect(this.$input.data('tt-www')).toBeTruthy(); + expect(this.$input.data('tt-attrs')).toBeTruthy(); + expect(this.$input.data('tt-typeahead')).toBeTruthy(); + + this.$input.typeahead('destroy'); + + expect(this.$input.data('tt-www')).toBeFalsy(); + expect(this.$input.data('tt-attrs')).toBeFalsy(); + expect(this.$input.data('tt-typeahead')).toBeFalsy(); + }); + + it('#destroy should remove add classes', function() { + expect(this.$input).toHaveClass('tt-input'); + this.$input.typeahead('destroy'); + expect(this.$input).not.toHaveClass('tt-input'); + }); + + it('#destroy should revert DOM changes', function() { + expect($('.twitter-typeahead')).toExist(); + this.$input.typeahead('destroy'); + expect($('.twitter-typeahead')).not.toExist(); + }); +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/results_spec.js b/www/bower_components/typeahead.js/test/typeahead/results_spec.js new file mode 100644 index 0000000..7729d43 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/results_spec.js @@ -0,0 +1,332 @@ +describe('Menu', function() { + var www = WWW(); + + beforeEach(function() { + var $fixture; + + jasmine.Dataset.useMock(); + + setFixtures(''); + + $fixture = $('#jasmine-fixtures'); + this.$node = $fixture.find('#menu-fixture'); + this.$node.html(fixtures.html.dataset); + + this.view = new Menu({ node: this.$node, datasets: [{}] }, www).bind(); + this.dataset = this.view.datasets[0]; + }); + + it('should throw an error if node is missing', function() { + expect(noNode).toThrow(); + function noNode() { new Menu({ datasets: [{}] }, www); } + }); + + describe('when click event is triggered on a selectable', function() { + it('should trigger selectableClicked', function() { + var spy; + + this.view.onSync('selectableClicked', spy = jasmine.createSpy()); + + this.$node.find(www.selectors.selectable).first().click(); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when rendered is triggered on a dataset', function() { + it('should add empty class to node if empty', function() { + this.dataset.isEmpty.andReturn(true); + + this.$node.removeClass(www.classes.empty); + this.dataset.trigger('rendered'); + + expect(this.$node).toHaveClass(www.classes.empty); + }); + + it('should remove empty class from node if not empty', function() { + this.dataset.isEmpty.andReturn(false); + + this.$node.addClass(www.classes.empty); + this.dataset.trigger('rendered'); + + expect(this.$node).not.toHaveClass(www.classes.empty); + }); + + it('should trigger datasetRendered', function() { + var spy; + + this.view.onSync('datasetRendered', spy = jasmine.createSpy()); + this.dataset.trigger('rendered'); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when cleared is triggered on a dataset', function() { + it('should add empty class to node if empty', function() { + this.dataset.isEmpty.andReturn(true); + + this.$node.removeClass(www.classes.empty); + this.dataset.trigger('cleared'); + + expect(this.$node).toHaveClass(www.classes.empty); + }); + + it('should remove empty class from node if not empty', function() { + this.dataset.isEmpty.andReturn(false); + + this.$node.addClass(www.classes.empty); + this.dataset.trigger('cleared'); + + expect(this.$node).not.toHaveClass(www.classes.empty); + }); + + it('should trigger datasetCleared', function() { + var spy; + + this.view.onSync('datasetCleared', spy = jasmine.createSpy()); + this.dataset.trigger('cleared'); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when asyncRequested is triggered on a dataset', function() { + it('should propagate event', function() { + var spy = jasmine.createSpy(); + + this.dataset.onSync('asyncRequested', spy); + this.dataset.trigger('asyncRequested'); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when asyncCanceled is triggered on a dataset', function() { + it('should propagate event', function() { + var spy = jasmine.createSpy(); + + this.dataset.onSync('asyncCanceled', spy); + this.dataset.trigger('asyncCanceled'); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('when asyncReceieved is triggered on a dataset', function() { + it('should propagate event', function() { + var spy = jasmine.createSpy(); + + this.dataset.onSync('asyncReceived', spy); + this.dataset.trigger('asyncReceived'); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('#open', function() { + it('should add open class to node', function() { + this.$node.removeClass(www.classes.open); + this.view.open(); + + expect(this.$node).toHaveClass(www.classes.open); + }); + }); + + describe('#close', function() { + it('should remove open class to node', function() { + this.$node.addClass(www.classes.open); + this.view.close(); + + expect(this.$node).not.toHaveClass(www.classes.open); + }); + + it('should remove cursor', function() { + var $selectable; + + $selectable = this.view._getSelectables().first(); + this.view.setCursor($selectable); + + expect($selectable).toHaveClass(www.classes.cursor); + + this.view.close(); + + expect($selectable).not.toHaveClass(www.classes.cursor); + }); + }); + + describe('#setLanguageDirection', function() { + it('should update css for given language direction', function() { + this.view.setLanguageDirection('rtl'); + expect(this.$node).toHaveAttr('dir', 'rtl'); + + this.view.setLanguageDirection('ltr'); + expect(this.$node).toHaveAttr('dir', 'ltr'); + }); + }); + + describe('#selectableRelativeToCursor', function() { + it('should return selectable delta spots away from cursor', function() { + var $first, $second; + + $first = this.view._getSelectables().eq(0); + $second = this.view._getSelectables().eq(1); + + this.view.setCursor($first); + expect(this.view.selectableRelativeToCursor(+1)).toBe($second); + }); + + it('should support negative deltas', function() { + var $first, $second; + + $first = this.view._getSelectables().eq(0); + $second = this.view._getSelectables().eq(1); + + this.view.setCursor($second); + expect(this.view.selectableRelativeToCursor(-1)).toBe($first); + }); + + it('should wrap', function() { + var $expected, $actual; + + $expected = this.view._getSelectables().eq(-1); + $actual = this.view.selectableRelativeToCursor(-1); + + expect($actual).toBe($expected); + }); + + it('should return null if delta lands on input', function() { + var $first; + + $first = this.view._getSelectables().eq(0); + + this.view.setCursor($first); + expect(this.view.selectableRelativeToCursor(-1)).toBeNull(); + }); + }); + + describe('#setCursor', function() { + it('should remove cursor if null is passed in', function() { + var $selectable; + + $selectable = this.view._getSelectables().eq(0); + this.view.setCursor($selectable); + expect(this.view.getActiveSelectable()).toBe($selectable); + + this.view.setCursor(null); + expect(this.view.getActiveSelectable()).toBeNull(); + }); + + it('should move cursor to passed in selectable', function() { + var $selectable; + + $selectable = this.view._getSelectables().eq(0); + + expect(this.view.getActiveSelectable()).toBeNull(); + this.view.setCursor($selectable); + expect(this.view.getActiveSelectable()).toBe($selectable); + }); + }); + + describe('#getSelectableData', function() { + it('should extract the data from the selectable element', function() { + var $selectable, datum; + + $selectable = $('
    ').data({ + 'tt-selectable-display': 'one', + 'tt-selectable-object': 'two' + }); + + data = this.view.getSelectableData($selectable); + + expect(data).toEqual({ val: 'one', obj: 'two' }); + }); + + it('should return null if no element is given', function() { + expect(this.view.getSelectableData($('notreal'))).toBeNull(); + }); + }); + + describe('#getActiveSelectable', function() { + it('should return the selectable the cursor is on', function() { + var $first; + + $first = this.view._getSelectables().eq(0); + this.view.setCursor($first); + + expect(this.view.getActiveSelectable()).toBe($first); + }); + + it('should return null if the cursor is off', function() { + expect(this.view.getActiveSelectable()).toBeNull(); + }); + }); + + describe('#getTopSelectable', function() { + it('should return the selectable at the top of the menu', function() { + var $first; + + $first = this.view._getSelectables().eq(0); + expect(this.view.getTopSelectable()).toBe($first); + }); + }); + + describe('#update', function() { + it('should invoke update on each dataset if valid update', function() { + this.view.update('fiz'); + expect(this.dataset.update).toHaveBeenCalled(); + }); + + it('should return true when valid update', function() { + expect(this.view.update('fiz')).toBe(true); + }); + + it('should return false when invalid update', function() { + this.view.update('fiz'); + expect(this.view.update('fiz')).toBe(false); + }); + }); + + describe('#empty', function() { + it('should set query to null', function() { + this.view.query = 'fiz'; + this.view.empty(); + + expect(this.view.query).toBeNull(); + }); + + it('should add empty class to node', function() { + this.$node.removeClass(www.classes.empty); + this.view.empty(); + + expect(this.$node).toHaveClass(www.classes.empty); + }); + + it('should invoke clear on each dataset', function() { + this.view.empty(); + expect(this.dataset.clear).toHaveBeenCalled(); + }); + }); + + describe('#destroy', function() { + it('should remove event handlers', function() { + var $node = this.view.$node; + + spyOn($node, 'off'); + this.view.destroy(); + expect($node.off).toHaveBeenCalledWith('.tt'); + }); + + it('should destroy its datasets', function() { + this.view.destroy(); + expect(this.dataset.destroy).toHaveBeenCalled(); + }); + + it('should set node element to dummy element', function() { + var $node = this.view.$node; + + this.view.destroy(); + expect(this.view.$node).not.toBe($node); + }); + }); +}); diff --git a/www/bower_components/typeahead.js/test/typeahead/typeahead_spec.js b/www/bower_components/typeahead.js/test/typeahead/typeahead_spec.js new file mode 100644 index 0000000..199e449 --- /dev/null +++ b/www/bower_components/typeahead.js/test/typeahead/typeahead_spec.js @@ -0,0 +1,1412 @@ +describe('Typeahead', function() { + var www, testData; + + www = WWW(); + + beforeEach(function() { + var $fixture, $input; + + jasmine.Input.useMock(); + jasmine.Dataset.useMock(); + jasmine.Menu.useMock(); + + setFixtures(''); + + $fixture = $('#jasmine-fixtures'); + this.$input = $fixture.find('input'); + + testData = { val: 'foo bar', obj: 'fiz' }; + + this.view = new Typeahead({ + input: new Input(), + menu: new Menu(), + eventBus: new EventBus({ el: this.$input }) + }, www); + + this.input = this.view.input; + this.menu = this.view.menu; + }); + + describe('on selectableClicked', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'selectableClicked'; + payload = $(''); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onSelectableClicked'); + this.menu.trigger(eventName, payload); + expect(this.view._onSelectableClicked).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should select the selectable', function() { + spyOn(this.view, 'select'); + this.menu.trigger(eventName, payload); + expect(this.view.select).toHaveBeenCalledWith(payload); + }); + }); + }); + + describe('on asyncRequested', function() { + var eventName; + + beforeEach(function() { + eventName = 'asyncRequested'; + }); + + it('should trigger typeahead:asyncrequest', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:asyncrequest', spy); + this.menu.trigger(eventName); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('on asyncCanceled', function() { + var eventName; + + beforeEach(function() { + eventName = 'asyncCanceled'; + }); + + it('should trigger typeahead:asynccancel', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:asynccancel', spy); + this.menu.trigger(eventName); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('on asyncReceived', function() { + var eventName; + + beforeEach(function() { + eventName = 'asyncReceived'; + }); + + it('should trigger typeahead:asyncreceive', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:asyncreceive', spy); + this.menu.trigger(eventName); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('on datasetRendered', function() { + var eventName; + + beforeEach(function() { + eventName = 'datasetRendered'; + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onDatasetRendered'); + this.menu.trigger(eventName); + expect(this.view._onDatasetRendered).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should update the hint', function() { + this.input.hasOverflow.andReturn(false); + this.menu.getTopSelectable.andReturn($('')); + this.menu.getSelectableData.andReturn(testData); + this.input.getInputValue.andReturn(testData.val.slice(0, 2)); + + this.menu.trigger(eventName); + + expect(this.input.setHint).toHaveBeenCalled(); + }); + + it('should trigger typeahead:render', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:render', spy); + this.menu.trigger(eventName); + expect(spy).toHaveBeenCalled(); + }); + }); + }); + + describe('on datasetCleared', function() { + var eventName; + + beforeEach(function() { + eventName = 'datasetCleared'; + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onDatasetCleared'); + this.menu.trigger(eventName); + expect(this.view._onDatasetCleared).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should update the hint', function() { + this.input.hasOverflow.andReturn(false); + this.menu.getTopSelectable.andReturn($('')); + this.menu.getSelectableData.andReturn(testData); + this.input.getInputValue.andReturn(testData.val.slice(0, 2)); + + this.menu.trigger(eventName); + + expect(this.input.setHint).toHaveBeenCalled(); + }); + }); + }); + + describe('on focused', function() { + var eventName; + + beforeEach(function() { + eventName = 'focused'; + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should activate typeahead', function() { + this.input.trigger(eventName); + expect(this.view.isActive()).toBe(true); + }); + + it('should open menu', function() { + this.input.trigger(eventName); + expect(this.menu.open).toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should open menu', function() { + this.input.trigger(eventName); + expect(this.menu.open).toHaveBeenCalled(); + }); + + it('should update menu for query if minLength met', function() { + this.input.getQuery.andReturn('bar'); + this.input.trigger(eventName); + expect(this.menu.update).toHaveBeenCalledWith('bar'); + }); + + it('should not update menu for query if minLength not met', function() { + this.view.minLength = 1; + this.input.getQuery.andReturn(''); + this.input.trigger(eventName); + expect(this.menu.update).not.toHaveBeenCalled(); + }); + }); + }); + + describe('on blurred', function() { + var eventName; + + beforeEach(function() { + eventName = 'blurred'; + }); + + it('should trigger typeahead:change if query changed since focus', function() { + var spy = jasmine.createSpy(); + + this.input.hasQueryChangedSinceLastFocus.andReturn(true); + this.$input.on('typeahead:change', spy); + + this.input.trigger(eventName); + + expect(spy).toHaveBeenCalled(); + }); + + it('should not trigger typeahead:change if query has not changed since focus', function() { + var spy = jasmine.createSpy(); + + this.input.hasQueryChangedSinceLastFocus.andReturn(false); + this.$input.on('typeahead:change', spy); + + this.input.trigger(eventName); + + expect(spy).not.toHaveBeenCalled(); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should deactivate typeahead', function() { + this.input.trigger(eventName); + expect(this.view.isActive()).toBe(false); + }); + }); + }); + + describe('on enterKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'enterKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onEnterKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onEnterKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is closed', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(false); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onEnterKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onEnterKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is open', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(true); + }); + + it('should select selectable if there is an active one', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select'); + this.menu.getActiveSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(this.view.select).toHaveBeenCalledWith($el); + }); + + it('should prevent default if active selectale ', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select').andReturn(true); + this.menu.getActiveSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).toHaveBeenCalled(); + }); + + it('should not select selectable if there is no active one', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select'); + + this.input.trigger(eventName, payload); + + expect(this.view.select).not.toHaveBeenCalledWith($el); + }); + + it('should not prevent default if no active selectale', function() { + var $el; + + spyOn(this.view, 'select').andReturn(true); + $el = $(''); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).not.toHaveBeenCalled(); + }); + + it('should not prevent default if selection of active selectable fails', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select').andReturn(false); + this.menu.getActiveSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).not.toHaveBeenCalled(); + }); + }); + }); + + describe('on tabKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'tabKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onTabKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onTabKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is closed', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(false); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onTabKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onTabKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is open', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(true); + }); + + it('should select selectable if there is an active one', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select'); + this.menu.getActiveSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(this.view.select).toHaveBeenCalledWith($el); + }); + + it('should prevent default if active selectale', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select').andReturn(true); + this.menu.getActiveSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).toHaveBeenCalled(); + }); + + it('should not select selectable if there is no active one', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select'); + + this.input.trigger(eventName, payload); + + expect(this.view.select).not.toHaveBeenCalledWith($el); + }); + + it('should not prevent default if no active selectale', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select'); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).not.toHaveBeenCalled(); + }); + + it('should not prevent default if selection of active selectable fails', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'select').andReturn(false); + this.menu.getActiveSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).not.toHaveBeenCalled(); + }); + + it('should autocomplete to top suggestion', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'autocomplete'); + this.menu.getTopSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(this.view.autocomplete).toHaveBeenCalledWith($el); + }); + + it('should prevent default behavior of DOM event if autocompletion succeeds', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'autocomplete').andReturn(true); + this.menu.getTopSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).toHaveBeenCalled(); + }); + + it('should not prevent default behavior of DOM event if autocompletion fails', function() { + var $el; + + $el = $(''); + spyOn(this.view, 'autocomplete').andReturn(false); + this.menu.getTopSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(payload.preventDefault).not.toHaveBeenCalled(); + }); + }); + }); + + describe('on escKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'escKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onEscKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onEscKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should close', function() { + spyOn(this.view, 'close'); + this.input.trigger(eventName, payload); + expect(this.view.close).toHaveBeenCalled(); + }); + }); + }); + + describe('on upKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'upKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onUpKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onUpKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + spyOn(this.view, 'moveCursor'); + }); + + it('should open menu', function() { + this.input.trigger(eventName, payload); + expect(this.menu.open).toHaveBeenCalled(); + }); + + it('should move cursor -1', function() { + this.input.trigger(eventName, payload); + expect(this.view.moveCursor).toHaveBeenCalledWith(-1); + }); + }); + }); + + describe('on downKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'downKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onDownKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onDownKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + spyOn(this.view, 'moveCursor'); + }); + + it('should open menu', function() { + this.input.trigger(eventName, payload); + expect(this.menu.open).toHaveBeenCalled(); + }); + + it('should move cursor +1', function() { + this.input.trigger(eventName, payload); + expect(this.view.moveCursor).toHaveBeenCalledWith(1); + }); + }); + }); + + describe('on leftKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'leftKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onLeftKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onLeftKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is closed', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(false); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onLeftKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onLeftKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is open', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(true); + }); + + it('should autocomplete if language is rtl and text cursor is at end', function() { + var $el = $(''); + + spyOn(this.view, 'autocomplete'); + this.view.dir = 'rtl'; + this.input.isCursorAtEnd.andReturn(true); + this.menu.getTopSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(this.view.autocomplete).toHaveBeenCalledWith($el); + }); + }); + }); + + describe('on rightKeyed', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'rightKeyed'; + payload = jasmine.createSpyObj('event', ['preventDefault']); + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onRightKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onRightKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is closed', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(false); + }); + + it('should do nothing', function() { + spyOn(this.view, '_onRightKeyed'); + this.input.trigger(eventName, payload); + expect(this.view._onRightKeyed).not.toHaveBeenCalled(); + }); + }); + + describe('when active and menu is open', function() { + beforeEach(function() { + this.view.activate(); + this.menu.isOpen.andReturn(true); + }); + + it('should autocomplete if language is rtl and text cursor is at end', function() { + var $el = $(''); + + spyOn(this.view, 'autocomplete'); + this.view.dir = 'ltr'; + this.input.isCursorAtEnd.andReturn(true); + this.menu.getTopSelectable.andReturn($el); + + this.input.trigger(eventName, payload); + + expect(this.view.autocomplete).toHaveBeenCalledWith($el); + }); + }); + }); + + describe('on queryChanged', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'queryChanged'; + payload = ''; + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should not open menu', function() { + this.input.trigger(eventName, payload); + expect(this.menu.open).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + this.view.open(); + }); + + it('should open menu', function() { + this.input.trigger(eventName, payload); + expect(this.menu.open).toHaveBeenCalled(); + }); + + it('should empty menu if minLength is not satisfied', function() { + this.view.minLength = 100; + this.input.trigger(eventName, payload); + + expect(this.menu.empty).toHaveBeenCalled(); + }); + + it('should update menu if minLength is satisfied', function() { + this.input.trigger(eventName, 'fiz'); + expect(this.menu.update).toHaveBeenCalledWith('fiz'); + }); + }); + }); + + describe('on whitespaceChanged', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'whitespaceChanged'; + payload = ''; + }); + + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should not open menu', function() { + this.input.trigger(eventName, payload); + expect(this.menu.open).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should open menu', function() { + this.input.trigger(eventName, payload); + expect(this.menu.open).toHaveBeenCalled(); + }); + + it('should update the hint', function() { + this.input.hasFocus.andReturn(true); + this.input.hasOverflow.andReturn(false); + this.menu.getTopSelectable.andReturn($('')); + this.menu.getSelectableData.andReturn(testData); + + this.input.getInputValue.andReturn(testData.val.slice(0, 2)); + + this.input.trigger(eventName, payload); + + expect(this.input.setHint).toHaveBeenCalledWith(testData.val); + }); + }); + }); + + describe('on langDirChanged', function() { + var eventName, payload; + + beforeEach(function() { + eventName = 'langDirChanged'; + payload = 'rtl'; + }); + + it('should set direction of menu if direction changed', function() { + this.view.dir = 'ltr'; + + this.input.trigger(eventName, payload); + + expect(this.view.dir).toBe(payload); + expect(this.menu.setLanguageDirection).toHaveBeenCalled(); + }); + + it('should do nothing if direction did not changed', function() { + this.view.dir = payload; + + this.input.trigger(eventName, payload); + + expect(this.view.dir).toBe(payload); + expect(this.menu.setLanguageDirection).not.toHaveBeenCalled(); + }); + }); + + describe('#isActive', function() { + it('should return true if active', function() { + this.view.activate(); + expect(this.view.isActive()).toBe(true); + }); + + it('should return false if active', function() { + this.view.deactivate(); + expect(this.view.isActive()).toBe(false); + }); + }); + + describe('#isEnabled', function() { + it('should returned enabled status', function() { + this.view.enable(); + expect(this.view.isEnabled()).toBe(true); + this.view.disable(); + expect(this.view.isEnabled()).toBe(false); + }); + }); + + describe('#enable', function() { + it('should set enabled to true', function() { + this.view.enable(); + expect(this.view.isEnabled()).toBe(true); + }); + }); + + describe('#disable', function() { + it('should set enabled to false', function() { + this.view.disable(); + expect(this.view.isEnabled()).toBe(false); + }); + }); + + describe('#activate', function() { + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should do nothing', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeactive', spy); + this.view.activate(); + expect(spy).not.toHaveBeenCalled(); + }); + }); + + describe('when idle and disabled', function() { + beforeEach(function() { + this.view.disable(); + this.view.activate(); + }); + + it('should do nothing', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeactive', spy); + this.view.activate(); + expect(spy).not.toHaveBeenCalled(); + }); + }); + + describe('when idle and enabled', function() { + beforeEach(function() { + this.view.enable(); + this.view.deactivate(); + }); + + it('should trigger typeahead:beforeactive', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeactive', spy); + this.view.activate(); + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy1, spy2; + + spy1 = jasmine.createSpy().andCallFake(prevent); + spy2 = jasmine.createSpy(); + this.$input.on('typeahead:beforeactive', spy1); + this.$input.on('typeahead:active', spy2); + + this.view.activate(); + + expect(spy1).toHaveBeenCalled(); + expect(spy2).not.toHaveBeenCalled(); + }); + + it('should change state to active', function() { + expect(this.view.isActive()).toBe(false); + this.view.activate(); + expect(this.view.isActive()).toBe(true); + }); + + it('should trigger typeahead:active if not canceled', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:active', spy); + this.view.activate(); + expect(spy).toHaveBeenCalled(); + }); + }); + }); + + describe('#deactivate', function() { + describe('when idle', function() { + beforeEach(function() { + this.view.deactivate(); + }); + + it('should do nothing', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeidle', spy); + this.view.deactivate(); + expect(spy).not.toHaveBeenCalled(); + }); + }); + + describe('when active', function() { + beforeEach(function() { + this.view.activate(); + }); + + it('should trigger typeahead:beforeidle', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeidle', spy); + this.view.deactivate(); + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy1, spy2; + + spy1 = jasmine.createSpy().andCallFake(prevent); + spy2 = jasmine.createSpy(); + this.$input.on('typeahead:beforeidle', spy1); + this.$input.on('typeahead:idle', spy2); + + this.view.deactivate(); + + expect(spy1).toHaveBeenCalled(); + expect(spy2).not.toHaveBeenCalled(); + }); + + it('should close', function() { + spyOn(this.view, 'close'); + this.view.deactivate(); + expect(this.view.close).toHaveBeenCalled(); + }); + + it('should change state to idle', function() { + expect(this.view.isActive()).toBe(true); + this.view.deactivate(); + expect(this.view.isActive()).toBe(false); + }); + + it('should trigger typeahead:idle if not canceled', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:idle', spy); + this.view.deactivate(); + expect(spy).toHaveBeenCalled(); + }); + }); + }); + + describe('#isOpen', function() { + it('should return true if open', function() { + this.menu.isOpen.andReturn(true); + expect(this.view.isOpen()).toBe(true); + }); + + it('should return false if closed', function() { + this.menu.isOpen.andReturn(false); + expect(this.view.isOpen()).toBe(false); + }); + }); + + describe('#open', function() { + describe('when open', function() { + beforeEach(function() { + spyOn(this.view, 'isOpen').andReturn(true); + }); + + it('should do nothing', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeopen', spy); + this.view.open(); + expect(spy).not.toHaveBeenCalled(); + }); + }); + + describe('when closed', function() { + beforeEach(function() { + spyOn(this.view, 'isOpen').andReturn(false); + }); + + it('should trigger typeahead:beforeopen', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeopen', spy); + this.view.open(); + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy1, spy2; + + spy1 = jasmine.createSpy().andCallFake(prevent); + spy2 = jasmine.createSpy(); + this.$input.on('typeahead:beforeopen', spy1); + this.$input.on('typeahead:open', spy2); + + this.view.open(); + + expect(spy1).toHaveBeenCalled(); + expect(spy2).not.toHaveBeenCalled(); + }); + + it('should open menu', function() { + this.view.open(); + expect(this.menu.open).toHaveBeenCalled(); + }); + + it('should update hint if active', function() { + spyOn(this.view, 'isActive').andReturn(true); + + this.input.hasOverflow.andReturn(false); + this.menu.getTopSelectable.andReturn($('')); + this.menu.getSelectableData.andReturn(testData); + this.input.getInputValue.andReturn(testData.val.slice(0, 2)); + + this.view.open(); + + expect(this.input.setHint).toHaveBeenCalled(); + }); + + it('should trigger typeahead:open if not canceled', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:open', spy); + this.view.open(); + expect(spy).toHaveBeenCalled(); + }); + }); + }); + + describe('#close', function() { + describe('when closed', function() { + beforeEach(function() { + spyOn(this.view, 'isOpen').andReturn(false); + }); + + it('should do nothing', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeclose', spy); + this.view.open(); + expect(spy).not.toHaveBeenCalled(); + }); + }); + + describe('when open', function() { + beforeEach(function() { + spyOn(this.view, 'isOpen').andReturn(true); + }); + + it('should trigger typeahead:beforeclose', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforeclose', spy); + this.view.close(); + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy1, spy2; + + spy1 = jasmine.createSpy().andCallFake(prevent); + spy2 = jasmine.createSpy(); + this.$input.on('typeahead:beforeclose', spy1); + this.$input.on('typeahead:close', spy2); + + this.view.close(); + + expect(spy1).toHaveBeenCalled(); + expect(spy2).not.toHaveBeenCalled(); + }); + + it('should close menu', function() { + this.view.close(); + expect(this.menu.close).toHaveBeenCalled(); + }); + + it('should clear hint', function() { + this.view.close(); + expect(this.input.clearHint).toHaveBeenCalled(); + }); + + it('should trigger typeahead:close if not canceled', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:close', spy); + this.view.close(); + expect(spy).toHaveBeenCalled(); + }); + }); + }); + + describe('#getVal', function() { + it('should return the current query', function() { + this.input.getQuery.andReturn('woah'); + expect(this.view.getVal()).toBe('woah'); + }); + }); + + describe('#setVal', function() { + it('should update query', function() { + this.input.hasFocus.andReturn(true); + this.view.setVal('woah'); + expect(this.input.setQuery).toHaveBeenCalledWith('woah'); + }); + }); + + + + + + describe('#select', function() { + it('should do nothing if element is not a selectable', function() { + var spy; + + this.menu.getSelectableData.andReturn(null); + this.$input.on('typeahead:beforeselect', spy = jasmine.createSpy()); + + this.view.select($('')); + + expect(spy).not.toHaveBeenCalled(); + }); + + it('should trigger typeahead:beforeselect', function() { + var spy; + + this.menu.getSelectableData.andReturn(testData); + this.$input.on('typeahead:beforeselect', spy = jasmine.createSpy()); + + this.view.select($('')); + + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy1, spy2; + + spy1 = jasmine.createSpy().andCallFake(prevent); + spy2 = jasmine.createSpy(); + + this.menu.getSelectableData.andReturn(testData); + this.$input.on('typeahead:beforeselect', spy1).on('typeahead:select', spy2); + + this.view.select($('')); + + expect(spy1).toHaveBeenCalled(); + expect(spy2).not.toHaveBeenCalled(); + }); + + it('should update query', function() { + this.menu.getSelectableData.andReturn(testData); + this.view.select($('')); + expect(this.input.setQuery).toHaveBeenCalledWith(testData.val, true); + }); + + it('should trigger typeahead:select', function() { + var spy; + + this.menu.getSelectableData.andReturn(testData); + this.$input.on('typeahead:select', spy = jasmine.createSpy()); + + this.view.select($('')); + + expect(spy).toHaveBeenCalled(); + }); + + it('should close', function() { + spyOn(this.view, 'close'); + this.menu.getSelectableData.andReturn(testData); + + this.view.select($('')); + + expect(this.view.close).toHaveBeenCalled(); + }); + }); + + describe('#autocomplete', function() { + it('should abort if the query matches the top suggestion', function() { + var spy; + + this.input.getQuery.andReturn(testData.val); + this.menu.getSelectableData.andReturn(testData); + this.$input.on('typeahead:beforeautocomplete', spy = jasmine.createSpy()); + + this.view.autocomplete($('')); + + expect(spy).not.toHaveBeenCalled(); + }); + + it('should trigger typeahead:beforeautocomplete', function() { + var spy; + + this.menu.getSelectableData.andReturn(testData); + this.$input.on('typeahead:beforeautocomplete', spy = jasmine.createSpy()); + + this.view.autocomplete($('')); + + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy1, spy2; + + spy1 = jasmine.createSpy().andCallFake(prevent); + spy2 = jasmine.createSpy(); + this.$input.on('typeahead:beforeautocomplete', spy1); + this.$input.on('typeahead:autocomplete', spy2); + this.menu.getSelectableData.andReturn(testData); + + this.view.autocomplete($('')); + + expect(spy1).toHaveBeenCalled(); + expect(spy2).not.toHaveBeenCalled(); + }); + + it('should update the query', function() { + this.menu.getSelectableData.andReturn(testData); + this.view.autocomplete($('')); + expect(this.input.setQuery).toHaveBeenCalledWith(testData.val); + }); + + it('should trigger typeahead:autocomplete', function() { + var spy; + + this.menu.getSelectableData.andReturn(testData); + this.$input.on('typeahead:autocomplete', spy = jasmine.createSpy()); + + this.view.autocomplete($('')); + + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('#moveCursor', function() { + beforeEach(function() { + this.input.getQuery.andReturn('foo'); + }); + + it('should move cursor if minLength is not satisfied', function() { + var spy = jasmine.createSpy(); + + this.view.minLength = 100; + this.menu.update.andReturn(true); + this.$input.on('typeahead:beforecursorchange', spy); + + this.view.moveCursor(1); + + expect(spy).toHaveBeenCalled(); + }); + + it('should move cursor if invalid update', function() { + var spy = jasmine.createSpy(); + + this.menu.update.andReturn(false); + this.$input.on('typeahead:beforecursorchange', spy); + + this.view.moveCursor(1); + + expect(spy).toHaveBeenCalled(); + }); + + it('should not move cursor if valid update', function() { + var spy = jasmine.createSpy(); + + this.menu.update.andReturn(true); + this.$input.on('typeahead:beforecursorchange', spy); + + this.view.moveCursor(1); + + expect(spy).not.toHaveBeenCalled(); + }); + + it('should trigger typeahead:beforecursorchange', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:beforecursorchange', spy); + this.view.moveCursor(1); + expect(spy).toHaveBeenCalled(); + }); + + it('should support cancellation', function() { + var spy = jasmine.createSpy().andCallFake(prevent); + + this.$input.on('typeahead:beforecursorchange', spy); + this.view.moveCursor(1); + expect(this.menu.setCursor).not.toHaveBeenCalled(); + }); + + it('should update the input value if moved to selectable', function() { + this.menu.getSelectableData.andReturn(testData); + this.view.moveCursor(1); + expect(this.input.setInputValue).toHaveBeenCalledWith(testData.val); + }); + + it('should reset the input value if moved to input', function() { + this.view.moveCursor(1); + expect(this.input.resetInputValue).toHaveBeenCalled(); + }); + + it('should update the hint', function() { + this.input.hasOverflow.andReturn(false); + this.menu.getTopSelectable.andReturn($('')); + this.menu.getSelectableData.andCallFake(fake); + this.input.getInputValue.andReturn(testData.val.slice(0, 1)); + + this.view.moveCursor(1); + + expect(this.input.setHint).toHaveBeenCalledWith(testData.val); + + function fake($el) { + return ($el && $el.prop('tagName') === 'FIZ') ? testData : null; + } + }); + + it('should trigger cursorchange after setting cursor', function() { + var spy = jasmine.createSpy(); + + this.$input.on('typeahead:cursorchange', spy); + this.view.moveCursor(1); + expect(spy).toHaveBeenCalled(); + }); + }); + + describe('#destroy', function() { + it('should destroy input', function() { + this.view.destroy(); + + expect(this.input.destroy).toHaveBeenCalled(); + }); + + it('should destroy menu', function() { + this.view.destroy(); + + expect(this.menu.destroy).toHaveBeenCalled(); + }); + }); + + function prevent($e) { $e.preventDefault(); } +}); + diff --git a/www/bower_components/typeahead.js/typeahead.js.jquery.json b/www/bower_components/typeahead.js/typeahead.js.jquery.json new file mode 100644 index 0000000..ac2689e --- /dev/null +++ b/www/bower_components/typeahead.js/typeahead.js.jquery.json @@ -0,0 +1,40 @@ +{ + "licenses": [ + { + "url": "https://github.com/twitter/typeahead.js/blob/master/LICENSE" + } + ], + "dependencies": { + "jquery": ">=1.7" + }, + "docs": "https://github.com/twitter/typeahead.js", + "demo": "http://twitter.github.com/typeahead.js/examples", + "name": "typeahead.js", + "title": "typeahead.js", + "author": { + "name": "Twitter, Inc.", + "url": "https://twitter.com/twitteross" + }, + "description": "fast and fully-featured autocomplete library", + "keywords": [ + "typeahead", + "autocomplete" + ], + "homepage": "http://twitter.github.com/typeahead.js", + "bugs": "https://github.com/twitter/typeahead.js/issues", + "maintainers": [ + { + "name": "Jake Harding", + "url": "https://twitter.com/JakeHarding" + }, + { + "name": "Tim Trueman", + "url": "https://twitter.com/timtrueman" + }, + { + "name": "Veljko Skarich", + "url": "https://twitter.com/vskarich" + } + ], + "version": "0.11.1" +} \ No newline at end of file diff --git a/www/css/_map.scss b/www/css/_map.scss new file mode 100644 index 0000000..9603862 --- /dev/null +++ b/www/css/_map.scss @@ -0,0 +1,125 @@ +/* + Group map on /group/map +*/ +.group-map { + height: 100vh; + width: 100%; + + .groups { + width: 100%; + height: calc(100vh - 130px); + overflow-y: scroll; + + .groupBlock { + cursor: pointer; + + &.focused { + //background-color: #AAA; + //.clickable has already a hover state + } + + img{ + width:92px; + float:left; + margin-right:12px; + } + } + } + + //reset padding in containers + #mapContainer{padding:0;} + + .form-group-container{ + padding-top: 35px; + //the autocomplete field + .form-group { + display: inline-block; + width: 50%; + /*margin-left: auto; + margin-right: auto; + margin-top: 5rem; + */ + } + } + + #logo{ + background-image: url(/img/logo3.png); + background-repeat: no-repeat; + background-position: center; + height: 130px; + } + + .leaflet-container{ + //compute map height + height: calc(100vh - 130px); + } + +.leaflet-popup-content{ + .groupName{ + text-align: center; + font-weight: bold; + font-size: 1.2em; + font-family:Cabin,Helvetica,Arial,sans-serif; + margin-top: 8px; + } + .groupImage{ + max-width: 120px; + max-height: 120px; + display:block; + margin:auto; + } + a{ + color:#3c763d; + } + +} + /* + AUTOCOMPLETE + */ + .autocomplete-input, + .autocomplete-input:focus, + .autocomplete-input:active { + box-shadow: 0 2px 2px 0 rgba(0,0,0,0.16), 0 0 0 1px rgba(0,0,0,0.08); + border: honeydew; + display: block; + width: 100%; + padding: 16px; + font-size: 16px; + border-radius: 2px; + outline: none; + } + + .autocomplete-results { + position: fixed; + width: 50%; + border-bottom: honeydew; + border-left: honeydew; + border-right: honeydew; + border-top: 1px solid #e6e6e6; + box-shadow: 0 2px 4px rgba(0,0,0,0.2); + border-radius: 0 0 2px 2px; + z-index: 1001; + } + + .autocomplete-item { + padding: 4px; + text-align: left; + } + + .autocomplete-icon { + margin-right: 8px; + } + + .fa.fa-map-marker.header { + color: #e53935; + } + + + .icon { + cursor: pointer; + } + + .popup { + cursor: pointer; + } +} diff --git a/www/css/_shop.scss b/www/css/_shop.scss new file mode 100644 index 0000000..3c64381 --- /dev/null +++ b/www/css/_shop.scss @@ -0,0 +1,129 @@ +/* + SHOP +*/ +.shop{ + + .shop-header { + display: flex; + justify-content: space-between; + width: 70%; + padding: 1rem; + margin-bottom: 2rem; + background-color: white; + } + + .categories { + width: 70%; + + .products { + display: flex; + flex-wrap: wrap; + + .product { + display: flex; + width: 250px; + margin-right: 1rem; + margin-bottom: 1rem; + cursor: default; + user-select: none; + + img { + object-fit: cover; + } + + .body { + width: 100%; + background: white; + padding: 10px; + } + + input { + width: 50%; + } + + .button { + cursor: pointer; + } + } + } + } + + .filters { + position: fixed; + bottom: 140px; + right: 47px; + width: 25%; + padding: 1rem; + background-color: white; + cursor: default; + + .filter { + color: #BBB; + cursor: pointer; + + &.active { + color: #070; + } + } + } + + .cart { + position: fixed; + top: 130px; + right: 47px; + width: 25%; + padding: 1rem; + background-color: white; + cursor: default; + + .products-to-order { + margin-bottom: 2rem; + + .product-to-order { + display: flex; + justify-content: space-between; + margin-bottom: .5rem; + + div { + display: flex; + } + + .cart-action-buttons > * { + display: block; + margin-left: .5rem; + width: 2rem; + width: 2rem; + color: white; + text-align: center; + background-color: #070; + cursor: pointer; + line-height: 1.8rem; + border-radius: 50%; + } + } + } + + .cart-footer { + bottom: 1rem; + } + + .total { + display: flex; + justify-content: space-between; + } + + .order-button { + margin-top: 1rem; + padding: .5rem; + background-color: #070; + color: white; + cursor: pointer; + + &--disabled { + background-color: #555; + cursor: not-allowed; + } + } + } + +} diff --git a/www/css/bs3_variables.less b/www/css/bs3_variables.less new file mode 100644 index 0000000..2ae1fdc --- /dev/null +++ b/www/css/bs3_variables.less @@ -0,0 +1,872 @@ +// +// Variables +// -------------------------------------------------- + +//Cagette vars +@lightBeige:#efe9d5; // +@darkBrown:rgb(88, 56, 22); + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +@gray-base: #000; +@gray-darker: lighten(@gray-base, 13.5%); // #222 +@gray-dark: lighten(@gray-base, 20%); // #333 +@gray: lighten(@gray-base, 33.5%); // #555 +@gray-light: lighten(@gray-base, 46.7%); // #777 +@gray-lighter: lighten(@gray-base, 93.5%); // #eee + +@brand-primary: rgb(132, 189, 85); +@brand-success: rgb(255, 228, 0); +@brand-info: rgb(165, 63, 161); +@brand-warning: rgb(240, 173, 78); +@brand-danger: rgb(217, 83, 79); + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +@body-bg: #F8F4E5; +//** Global text color on ``. +@text-color: @gray-dark; + +//** Global textual link color. +@link-color: #3c763d; +//** Link hover color set via `darken()` function. +@link-hover-color: darken(@link-color, 15%); +//** Link hover decoration. +@link-hover-decoration: underline; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. + +@font-family-sans-serif: Cabin, Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +//** Default monospace fonts for ``, ``, and `
    `.
    +@font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
    +@font-family-base:        @font-family-sans-serif;
    +
    +@font-size-base:          16px;
    +@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
    +@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
    +
    +@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px
    +@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px
    +@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px
    +@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px
    +@font-size-h5:            @font-size-base;
    +@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px
    +
    +//** Unit-less `line-height` for use in components like buttons.
    +@line-height-base:        1.428571429; // 20/14
    +//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
    +@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
    +
    +//** By default, this inherits from the ``.
    +@headings-font-family:    inherit;
    +@headings-font-weight:    700;
    +@headings-line-height:    1.1;
    +@headings-color:          inherit;
    +
    +
    +//== Iconography
    +//
    +//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
    +
    +//** Load fonts from this directory.
    +@icon-font-path:          "../fonts/";
    +//** File name for all font files.
    +@icon-font-name:          "glyphicons-halflings-regular";
    +//** Element ID within SVG icon file.
    +@icon-font-svg-id:        "glyphicons_halflingsregular";
    +
    +
    +//== Components
    +//
    +//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
    +
    +@padding-base-vertical:     6px;
    +@padding-base-horizontal:   12px;
    +
    +@padding-large-vertical:    10px;
    +@padding-large-horizontal:  16px;
    +
    +@padding-small-vertical:    5px;
    +@padding-small-horizontal:  10px;
    +
    +@padding-xs-vertical:       1px;
    +@padding-xs-horizontal:     5px;
    +
    +@line-height-large:         1.3333333; // extra decimals for Win 8.1 Chrome
    +@line-height-small:         1.5;
    +
    +@border-radius-base:        4px;
    +@border-radius-large:       6px;
    +@border-radius-small:       3px;
    +
    +//** Global color for active items (e.g., navs or dropdowns).
    +@component-active-color:    #fff;
    +//** Global background color for active items (e.g., navs or dropdowns).
    +@component-active-bg:       @brand-primary;
    +
    +//** Width of the `border` for generating carets that indicate dropdowns.
    +@caret-width-base:          4px;
    +//** Carets increase slightly in size for larger components.
    +@caret-width-large:         5px;
    +
    +
    +//== Tables
    +//
    +//## Customizes the `.table` component with basic values, each used across all table variations.
    +
    +//** Padding for `
    `s and ``s. +@table-cell-padding: 8px; +//** Padding for cells in `.table-condensed`. +@table-condensed-cell-padding: 5px; + +//** Default background color used for all tables. +@table-bg: transparent; +//** Background color used for `.table-striped`. +@table-bg-accent: #f9f9f9; +//** Background color used for `.table-hover`. +@table-bg-hover: #f5f5f5; +@table-bg-active: @table-bg-hover; + +//** Border color for table and cell borders. +@table-border-color: #ddd; + + +//== Buttons +// +//## For each of Bootstrap's buttons, define text, background and border color. + +@btn-font-weight: normal; + +@btn-default-color: #333; +@btn-default-bg: #fff; +@btn-default-border: #ccc; + +@btn-primary-color: #fff; +@btn-primary-bg: @brand-primary; +@btn-primary-border: darken(@btn-primary-bg, 5%); + +@btn-success-color: rgb(88, 56, 22); +@btn-success-bg: @brand-success; +@btn-success-border: darken(@btn-success-bg, 5%); + +@btn-info-color: #fff; +@btn-info-bg: @brand-info; +@btn-info-border: darken(@btn-info-bg, 5%); + +@btn-warning-color: #fff; +@btn-warning-bg: @brand-warning; +@btn-warning-border: darken(@btn-warning-bg, 5%); + +@btn-danger-color: #fff; +@btn-danger-bg: @brand-danger; +@btn-danger-border: darken(@btn-danger-bg, 5%); + +@btn-link-disabled-color: @gray-light; + +// Allows for customizing button radius independently from global border radius +@btn-border-radius-base: @border-radius-base; +@btn-border-radius-large: @border-radius-large; +@btn-border-radius-small: @border-radius-small; + + +//== Forms +// +//## + +//** `` background color +@input-bg: #fff; +//** `` background color +@input-bg-disabled: @gray-lighter; + +//** Text color for ``s +@input-color: @gray; +//** `` border color +@input-border: #ccc; + +// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +@input-border-radius: @border-radius-base; +//** Large `.form-control` border radius +@input-border-radius-large: @border-radius-large; +//** Small `.form-control` border radius +@input-border-radius-small: @border-radius-small; + +//** Border color for inputs on focus +@input-border-focus: #66afe9; + +//** Placeholder text color +@input-color-placeholder: #999; + +//** Default `.form-control` height +@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); +//** Large `.form-control` height +@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); +//** Small `.form-control` height +@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); + +//** `.form-group` margin +@form-group-margin-bottom: 15px; + +@legend-color: @gray-dark; +@legend-border-color: #e5e5e5; + +//** Background color for textual input addons +@input-group-addon-bg: @gray-lighter; +//** Border color for textual input addons +@input-group-addon-border-color: @input-border; + +//** Disabled cursor for form controls and buttons. +@cursor-disabled: not-allowed; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +@dropdown-bg: #fff; +//** Dropdown menu `border-color`. +@dropdown-border: rgba(0,0,0,.15); +//** Dropdown menu `border-color` **for IE8**. +@dropdown-fallback-border: #ccc; +//** Divider color for between dropdown items. +@dropdown-divider-bg: #e5e5e5; + +//** Dropdown link text color. +@dropdown-link-color: @gray-dark; +//** Hover color for dropdown links. +@dropdown-link-hover-color: darken(@gray-dark, 5%); +//** Hover background for dropdown links. +@dropdown-link-hover-bg: #f5f5f5; + +//** Active dropdown menu item text color. +@dropdown-link-active-color: @component-active-color; +//** Active dropdown menu item background color. +@dropdown-link-active-bg: @component-active-bg; + +//** Disabled dropdown menu item background color. +@dropdown-link-disabled-color: @gray-light; + +//** Text color for headers within dropdown menus. +@dropdown-header-color: @gray-light; + +//** Deprecated `@dropdown-caret-color` as of v3.1.0 +@dropdown-caret-color: #000; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +@zindex-navbar: 1000; +@zindex-dropdown: 1000; +@zindex-popover: 1060; +@zindex-tooltip: 1070; +@zindex-navbar-fixed: 1030; +@zindex-modal-background: 1040; +@zindex-modal: 1050; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `@screen-xs` as of v3.0.1 +@screen-xs: 480px; +//** Deprecated `@screen-xs-min` as of v3.2.0 +@screen-xs-min: @screen-xs; +//** Deprecated `@screen-phone` as of v3.0.1 +@screen-phone: @screen-xs-min; + +// Small screen / tablet +//** Deprecated `@screen-sm` as of v3.0.1 +@screen-sm: 768px; +@screen-sm-min: @screen-sm; +//** Deprecated `@screen-tablet` as of v3.0.1 +@screen-tablet: @screen-sm-min; + +// Medium screen / desktop +//** Deprecated `@screen-md` as of v3.0.1 +@screen-md: 992px; +@screen-md-min: @screen-md; +//** Deprecated `@screen-desktop` as of v3.0.1 +@screen-desktop: @screen-md-min; + +// Large screen / wide desktop +//** Deprecated `@screen-lg` as of v3.0.1 +@screen-lg: 1200px; +@screen-lg-min: @screen-lg; +//** Deprecated `@screen-lg-desktop` as of v3.0.1 +@screen-lg-desktop: @screen-lg-min; + +// So media queries don't overlap when required, provide a maximum +@screen-xs-max: (@screen-sm-min - 1); +@screen-sm-max: (@screen-md-min - 1); +@screen-md-max: (@screen-lg-min - 1); + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +@grid-columns: 12; +//** Padding between columns. Gets divided in half for the left and right. +@grid-gutter-width: 30px; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +@grid-float-breakpoint: @screen-sm-min; +//** Point at which the navbar begins collapsing. +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +@container-tablet: (720px + @grid-gutter-width); +//** For `@screen-sm-min` and up. +@container-sm: @container-tablet; + +// Medium screen / desktop +@container-desktop: (940px + @grid-gutter-width); +//** For `@screen-md-min` and up. +@container-md: @container-desktop; + +// Large screen / wide desktop +@container-large-desktop: (1140px + @grid-gutter-width); +//** For `@screen-lg-min` and up. +@container-lg: @container-large-desktop; + + +//== Navbar +// +//## + +// Basics of a navbar +@navbar-height: 50px; +@navbar-margin-bottom: @line-height-computed; +@navbar-border-radius: @border-radius-base; +@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); +@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); +@navbar-collapse-max-height: 340px; + +@navbar-default-color: #777; +@navbar-default-bg: #f8f8f8; +@navbar-default-border: darken(@navbar-default-bg, 6.5%); + +// Navbar links +@navbar-default-link-color: #777; +@navbar-default-link-hover-color: #333; +@navbar-default-link-hover-bg: transparent; +@navbar-default-link-active-color: rgb(233, 82, 22); +@navbar-default-link-active-bg: @lightBeige; +@navbar-default-link-disabled-color: #ccc; +@navbar-default-link-disabled-bg: transparent; + +// Navbar brand label +@navbar-default-brand-color: @navbar-default-link-color; +@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%); +@navbar-default-brand-hover-bg: transparent; + +// Navbar toggle +@navbar-default-toggle-hover-bg: #ddd; +@navbar-default-toggle-icon-bar-bg: #888; +@navbar-default-toggle-border-color: #ddd; + + +//=== Inverted navbar +// Reset inverted navbar basics +@navbar-inverse-color: lighten(@gray-light, 15%); +@navbar-inverse-bg: #222; +@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); + +// Inverted navbar links +@navbar-inverse-link-color: lighten(@gray-light, 15%); +@navbar-inverse-link-hover-color: #fff; +@navbar-inverse-link-hover-bg: transparent; +@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; +@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); +@navbar-inverse-link-disabled-color: #444; +@navbar-inverse-link-disabled-bg: transparent; + +// Inverted navbar brand label +@navbar-inverse-brand-color: @navbar-inverse-link-color; +@navbar-inverse-brand-hover-color: #fff; +@navbar-inverse-brand-hover-bg: transparent; + +// Inverted navbar toggle +@navbar-inverse-toggle-hover-bg: #333; +@navbar-inverse-toggle-icon-bar-bg: #fff; +@navbar-inverse-toggle-border-color: #333; + + +//== Navs +// +//## + +//=== Shared nav styles +@nav-link-padding: 10px 15px; +@nav-link-hover-bg: @gray-lighter; + +@nav-disabled-link-color: @gray-light; +@nav-disabled-link-hover-color: @gray-light; + +//== Tabs +@nav-tabs-border-color: #ddd; + +@nav-tabs-link-hover-border-color: @gray-lighter; + +@nav-tabs-active-link-hover-bg: @body-bg; +@nav-tabs-active-link-hover-color: @gray; +@nav-tabs-active-link-hover-border-color: #ddd; + +@nav-tabs-justified-link-border-color: #ddd; +@nav-tabs-justified-active-link-border-color: @body-bg; + +//== Pills +@nav-pills-border-radius: @border-radius-base; +@nav-pills-active-link-hover-bg: @component-active-bg; +@nav-pills-active-link-hover-color: @component-active-color; + + +//== Pagination +// +//## + +@pagination-color: @link-color; +@pagination-bg: #fff; +@pagination-border: #ddd; + +@pagination-hover-color: @link-hover-color; +@pagination-hover-bg: @gray-lighter; +@pagination-hover-border: #ddd; + +@pagination-active-color: #fff; +@pagination-active-bg: @brand-primary; +@pagination-active-border: @brand-primary; + +@pagination-disabled-color: @gray-light; +@pagination-disabled-bg: #fff; +@pagination-disabled-border: #ddd; + + +//== Pager +// +//## + +@pager-bg: @pagination-bg; +@pager-border: @pagination-border; +@pager-border-radius: 15px; + +@pager-hover-bg: @pagination-hover-bg; + +@pager-active-bg: @pagination-active-bg; +@pager-active-color: @pagination-active-color; + +@pager-disabled-color: @pagination-disabled-color; + + +//== Jumbotron +// +//## + +@jumbotron-padding: 30px; +@jumbotron-color: inherit; +@jumbotron-bg: @gray-lighter; +@jumbotron-heading-color: inherit; +@jumbotron-font-size: ceil((@font-size-base * 1.5)); +@jumbotron-heading-font-size: ceil((@font-size-base * 4.5)); + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +@state-success-text: #3c763d; +@state-success-bg: #dff0d8; +@state-success-border: darken(spin(@state-success-bg, -10), 5%); + +@state-info-text: #31708f; +@state-info-bg: #d9edf7; +@state-info-border: darken(spin(@state-info-bg, -10), 7%); + +@state-warning-text: #8a6d3b; +@state-warning-bg: #fcf8e3; +@state-warning-border: darken(spin(@state-warning-bg, -10), 5%); + +@state-danger-text: #a94442; +@state-danger-bg: #f2dede; +@state-danger-border: darken(spin(@state-danger-bg, -10), 5%); + + +//== Tooltips +// +//## + +//** Tooltip max width +@tooltip-max-width: 200px; +//** Tooltip text color +@tooltip-color: #fff; +//** Tooltip background color +@tooltip-bg: #000; +@tooltip-opacity: .9; + +//** Tooltip arrow width +@tooltip-arrow-width: 5px; +//** Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; + + +//== Popovers +// +//## + +//** Popover body background color +@popover-bg: @darkBrown; +//** Popover maximum width +@popover-max-width: 276px; +//** Popover border color +@popover-border-color: rgba(0,0,0,.2); +//** Popover fallback border color +@popover-fallback-border-color: #ccc; + +//** Popover title background color +@popover-title-bg: darken(@popover-bg, 3%); + +//** Popover arrow width +@popover-arrow-width: 10px; +//** Popover arrow color +@popover-arrow-color: @popover-bg; + +//** Popover outer arrow width +@popover-arrow-outer-width: (@popover-arrow-width + 1); +//** Popover outer arrow color +@popover-arrow-outer-color: fadein(@popover-border-color, 5%); +//** Popover outer arrow fallback color +@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); + + +//== Labels +// +//## + +//** Default label background color +@label-default-bg: @gray-light; +//** Primary label background color +@label-primary-bg: @brand-primary; +//** Success label background color +@label-success-bg: @brand-success; +//** Info label background color +@label-info-bg: @brand-info; +//** Warning label background color +@label-warning-bg: @brand-warning; +//** Danger label background color +@label-danger-bg: @brand-danger; + +//** Default label text color +@label-color: #fff; +//** Default text color of a linked label +@label-link-hover-color: #fff; + + +//== Modals +// +//## + +//** Padding applied to the modal body +@modal-inner-padding: 15px; + +//** Padding applied to the modal title +@modal-title-padding: 15px; +//** Modal title line-height +@modal-title-line-height: @line-height-base; + +//** Background color of modal content area +@modal-content-bg: #fff; +//** Modal content border color +@modal-content-border-color: rgba(0,0,0,.2); +//** Modal content border color **for IE8** +@modal-content-fallback-border-color: #999; + +//** Modal backdrop background color +@modal-backdrop-bg: #000; +//** Modal backdrop opacity +@modal-backdrop-opacity: .5; +//** Modal header border color +@modal-header-border-color: #e5e5e5; +//** Modal footer border color +@modal-footer-border-color: @modal-header-border-color; + +@modal-lg: 900px; +@modal-md: 600px; +@modal-sm: 300px; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +@alert-padding: 15px; +@alert-border-radius: @border-radius-base; +@alert-link-font-weight: bold; + +@alert-success-bg: @state-success-bg; +@alert-success-text: @state-success-text; +@alert-success-border: @state-success-border; + +@alert-info-bg: @state-info-bg; +@alert-info-text: @state-info-text; +@alert-info-border: @state-info-border; + +@alert-warning-bg: @state-warning-bg; +@alert-warning-text: @state-warning-text; +@alert-warning-border: @state-warning-border; + +@alert-danger-bg: @state-danger-bg; +@alert-danger-text: @state-danger-text; +@alert-danger-border: @state-danger-border; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +@progress-bg: #f5f5f5; +//** Progress bar text color +@progress-bar-color: #fff; +//** Variable for setting rounded corners on progress bar. +@progress-border-radius: @border-radius-base; + +//** Default progress bar color +@progress-bar-bg: @brand-primary; +//** Success progress bar color +@progress-bar-success-bg: @brand-success; +//** Warning progress bar color +@progress-bar-warning-bg: @brand-warning; +//** Danger progress bar color +@progress-bar-danger-bg: @brand-danger; +//** Info progress bar color +@progress-bar-info-bg: @brand-info; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +@list-group-bg: #fff; +//** `.list-group-item` border color +@list-group-border: #ddd; +//** List group border radius +@list-group-border-radius: @border-radius-base; + +//** Background color of single list items on hover +@list-group-hover-bg: #f5f5f5; +//** Text color of active list items +@list-group-active-color: @component-active-color; +//** Background color of active list items +@list-group-active-bg: @component-active-bg; +//** Border color of active list elements +@list-group-active-border: @list-group-active-bg; +//** Text color for content within active list items +@list-group-active-text-color: lighten(@list-group-active-bg, 40%); + +//** Text color of disabled list items +@list-group-disabled-color: @gray-light; +//** Background color of disabled list items +@list-group-disabled-bg: @gray-lighter; +//** Text color for content within disabled list items +@list-group-disabled-text-color: @list-group-disabled-color; + +@list-group-link-color: #555; +@list-group-link-hover-color: @list-group-link-color; +@list-group-link-heading-color: #333; + + +//== Panels +// +//## + +@panel-bg: #fff; +@panel-body-padding: 15px; +@panel-heading-padding: 10px 15px; +@panel-footer-padding: @panel-heading-padding; +@panel-border-radius: @border-radius-base; + +//** Border color for elements within panels +@panel-inner-border: #ddd; +@panel-footer-bg: #f5f5f5; + +@panel-default-text: @gray-dark; +@panel-default-border: #ddd; +@panel-default-heading-bg: #f5f5f5; + +@panel-primary-text: #fff; +@panel-primary-border: @brand-primary; +@panel-primary-heading-bg: @brand-primary; + +@panel-success-text: @state-success-text; +@panel-success-border: @state-success-border; +@panel-success-heading-bg: @state-success-bg; + +@panel-info-text: @state-info-text; +@panel-info-border: @state-info-border; +@panel-info-heading-bg: @state-info-bg; + +@panel-warning-text: @state-warning-text; +@panel-warning-border: @state-warning-border; +@panel-warning-heading-bg: @state-warning-bg; + +@panel-danger-text: @state-danger-text; +@panel-danger-border: @state-danger-border; +@panel-danger-heading-bg: @state-danger-bg; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +@thumbnail-padding: 4px; +//** Thumbnail background color +@thumbnail-bg: @body-bg; +//** Thumbnail border color +@thumbnail-border: #ddd; +//** Thumbnail border radius +@thumbnail-border-radius: @border-radius-base; + +//** Custom text color for thumbnail captions +@thumbnail-caption-color: @text-color; +//** Padding around the thumbnail caption +@thumbnail-caption-padding: 9px; + + +//== Wells +// +//## + +@well-bg: #f5f5f5; +@well-border: darken(@well-bg, 7%); + + +//== Badges +// +//## + +@badge-color: #fff; +//** Linked badge text color on hover +@badge-link-hover-color: #fff; +@badge-bg: @gray-light; + +//** Badge text color in active nav link +@badge-active-color: @link-color; +//** Badge background color in active nav link +@badge-active-bg: #fff; + +@badge-font-weight: bold; +@badge-line-height: 1; +@badge-border-radius: 10px; + + +//== Breadcrumbs +// +//## + +@breadcrumb-padding-vertical: 8px; +@breadcrumb-padding-horizontal: 15px; +//** Breadcrumb background color +@breadcrumb-bg: #f5f5f5; +//** Breadcrumb text color +@breadcrumb-color: #ccc; +//** Text color of current page in the breadcrumb +@breadcrumb-active-color: @gray-light; +//** Textual separator for between breadcrumb elements +@breadcrumb-separator: "/"; + + +//== Carousel +// +//## + +@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6); + +@carousel-control-color: #fff; +@carousel-control-width: 15%; +@carousel-control-opacity: .5; +@carousel-control-font-size: 20px; + +@carousel-indicator-active-bg: #fff; +@carousel-indicator-border-color: #fff; + +@carousel-caption-color: #fff; + + +//== Close +// +//## + +@close-font-weight: bold; +@close-color: #000; +@close-text-shadow: 0 1px 0 #fff; + + +//== Code +// +//## + +@code-color: #c7254e; +@code-bg: #f9f2f4; + +@kbd-color: #fff; +@kbd-bg: #333; + +@pre-bg: #f5f5f5; +@pre-color: @gray-dark; +@pre-border-color: #ccc; +@pre-scrollable-max-height: 340px; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +@component-offset-horizontal: 180px; +//** Text muted color +@text-muted: @gray-light; +//** Abbreviations and acronyms border color +@abbr-border-color: @gray-light; +//** Headings small color +@headings-small-color: @gray-light; +//** Blockquote small color +@blockquote-small-color: @gray-light; +//** Blockquote font size +@blockquote-font-size: (@font-size-base * 1.25); +//** Blockquote border color +@blockquote-border-color: @gray-lighter; +//** Page header border color +@page-header-border-color: @gray-lighter; +//** Width of horizontal description list titles +@dl-horizontal-offset: @component-offset-horizontal; +//** Point at which .dl-horizontal becomes horizontal +@dl-horizontal-breakpoint: @grid-float-breakpoint; +//** Horizontal line color. +@hr-border: @gray-lighter; diff --git a/www/css/lemonway.scss b/www/css/lemonway.scss new file mode 100644 index 0000000..9de350c --- /dev/null +++ b/www/css/lemonway.scss @@ -0,0 +1,40 @@ +$primary:#057801; + +body{ + background:url(https://app.cagette.net/img/bg.gif); +} + +.sips_body_page{ + background-color:white;width:auto;margin:auto;text-align:center;font-family:Arial,sans-serif; +} + +br{display:none} +h3{margin:0} +.sips_shop_name_table{display:none;} +.sips_logo{display:none;} +.sips_trans_ref_table{margin:auto;background-color:#fff;padding:10px;border:none;color:#777;font-size:0.8em;} +.sips_trans_ref_table tr + tr +tr{color:$primary;font-size:1.2em;} +.sips_secure_message{color:grey;display:none;text-align:center;width:auto;margin:auto;font-weight:normal;} + +form{ margin:0; padding:5px 2px 0 2px} + +img{margin-top:-15px;} +.sips_card_number_title{color:$primary;font-size:1.2em;} + +.sips_card_number_input{border-radius:5px;border-color:rgb(227,227,227);border-style:solid;border-width:1px;padding:9px 5px 9px 5px;}.sips_expiry_month_card_input{border-radius:5px;border-color:rgb(227,227,227);border-style:solid;border-width:1px;padding:9px 5px 9px 5px;}.sips_expiry_year_card_input{border-radius:5px;border-color:rgb(227,227,227);border-style:solid;border-width:1px;padding:9px 5px 9px 5px;} +.sips_expiry_date_card_title{margin-left:10px;color:#057801;font-size:1.2em;} +.sips_cryptogram_table{border:none;max-width:590px;text-align:center;color:$primary;margin:auto;padding-top:5px;} +.sips_cryptogram_message{border:none;font-size:1em;} +.sips_cvvkey_mandatory_text_input{border-radius:5px;border-color:#d7d7d7;border-style:solid;border-width:1px; padding:9px 5px 9px 5px;min-width:40px;} +.sips_card_cvv2_message{color:$primary;} +.sips_threeD_info_message{color:white;display:none;text-align:center;width:50%;margin:auto;font-size:0.8em;} +.sips_cryptogram_example{display:none;} +.sips_submit_message{color:$primary;font-size:1.2em;display:none;} +.sips_submit_button{background-color:$primary;color:white;font-size:1em;border-radius:5px;border:none;padding:7px 30px 7px 30px;margin: 10px;-webkit-appearance: none;} +.sips_submit_button:active{background-color: white;color: $primary;} +hr{ border: none;background:white;margin: 0;display:none;} +.sips_customer_return_button{font-size:0.6em;margin:0 0 20px 0;background-color:#de4343;color: white;font-size:0.8em;border-radius:5px;border:none;padding:7px 10px 7px 10px;-webkit-appearance: none;} +.sips_customer_return_button:active{ background-color:white;color:#de4343;} +.sips_error_code{color:#de4343;} +.sips_error{color:#de4343;} +.sips_footer_message{display:none;} \ No newline at end of file diff --git a/www/css/print.scss b/www/css/print.scss new file mode 100644 index 0000000..21b8c25 --- /dev/null +++ b/www/css/print.scss @@ -0,0 +1,57 @@ +body +{ + font-family:'Arial'; + font-size:12px; + + table{ + border-collapse: collapse; + + &.table td{ + + border:solid 1px #CCC; + + } + + tr td,th{ + margin:1px; + padding:4px; + vertical-align:top; + text-align:left; + } + + td.total{ + font-weight:bold; + border-top: 2px solid #CCC; + padding-bottom: 12px; + } + + tr.name td{ + border-top:1px solid #000; + } + } + + h1, h2{ + margin-left:auto; + margin-right:auto; + margin-bottom:20px; + text-align:center; + } + + @media print { + hr { + page-break-after: always; + border: 0px #FFF; + } + + .hidden{ + display:none; + } + + } + @media screen { + hr{ + border: 4px #DDD; + border-style: dashed; + } + } +} diff --git a/www/css/style.scss b/www/css/style.scss new file mode 100644 index 0000000..8328e01 --- /dev/null +++ b/www/css/style.scss @@ -0,0 +1,1145 @@ + +/** + + Cagette.net SASS stylesheet + Use it with with bootstrap 3 + +**/ + +@import url('https://fonts.googleapis.com/css?family=Cabin:400,400i,700'); +//@import '_shop'; +@import '_map'; + +/*body{ + background-color:#F8F4E5 !important; +}*/ + +h1,h2,h3,h4{ + margin-top: 4px !important; + margin-bottom: 8px !important; + font-style: italic; +} + +/* buttons */ + +/*.btn { + text-transform: uppercase; + font-size: 14px !important; + padding : 7px 25px !important; + font-weight:normal !important; +} + +/*.btn-lg{ + font-size: 16px !important; +} + +.btn-sm { + font-size: 12px !important; + padding : 5px 10px !important; +} + +.btn-xs { + font-size: 11px !important; + padding : 2px 5px !important; +} + +.btn-link { + text-transform: none; +}*/ + +a{ + cursor:pointer; +} + +/* navigation */ +ul.nav li { + text-transform: uppercase; + font-size: 14px; +} + +/* subnav in contractadmin*/ +.nav-pills > li.active > a { + background-color: #efe9d5 !important; + color: #e95216 !important; +} + +/* Footer */ + +#footer { + background: #84BD55; + border-radius: 8px; + padding: 20px; + ul>li>a { + color: #333; + } + + ul { + margin: 3px 0 0; + padding: 0; + text-align: left; + list-style: none; + font-size: 14px; + } + + .cagsocialmedia li a { + color : #fff; + font-size: 20px; + + min-width: 32px; + /*height: 32px;*/ + padding: 2px 0 0; + display : inline-block; + } + + .cagsocialmedia { + vertical-align: top; + } + + .cagsocialmedia li { + display: inline-block; + text-align: center; + + } + + .cagfb { + background-color : #4267B2; + } + + .cagtwitter { + background-color : #1DA1F2; + } + + .cagyoutube { + background-color : #FF0000; + } + +} + +#subfooter { + /*background-color : #313131; + color : #fff;*/ + text-align: center; + font-size : 14px; + padding : 15px 0 25px 0; + span { + color :#979797; + font-size : 11px; + } +} + +.sqlLog{ + margin-top:24px; + font-size:10px; + background:#AAA; + a{ color:#666; } +} + +.contact{ + border:2px solid #CCC ; + border-radius:8px; + margin:8px; + padding:8px; + width:250px; + min-height: 100px; +} + +.homeBlock{ + margin-bottom:32px; + background:#FFF; + border-radius:8px; + position: relative; + padding:8px; + .content{ + margin: 8px 8px 8px 90px; + + } +} + +//pour les hauts de nav +span.panel-title{ + color: #966125 !important; + font-size: 20px !important; + font-weight:normal !important; +} + +.article{ + margin-bottom:16px; + background:#FFF; + border-radius:8px; + position: relative; + padding:8px; +} + + +.white{ + margin-bottom:16px; + background:#FFF; + border-radius:4px; + position: relative; +} + +.disabled{ + opacity: 0.5; +} + +/* block marron */ +.block{ + margin-bottom: 12px; + background : #FFF; + border-radius : 8px; + position : relative; + padding : 8px; +} + +/* block marron + contours */ +.block2{ + margin-bottom : 32px; + background : #F0D277; + border-radius : 8px; + position : relative; + padding : 8px; + border: 2px solid #C3A04C; +} + +/* product in shop */ +table.product{ + td{ + padding:8px; + vertical-align:top; + } + + width:100%; + height:135px; + overflow:auto; + + .desc{ + font-size:90%; + color:#666; + } + + a.productName{ + line-height: 20px; + display: block; + font-weight:bold; + } +} + + +/* GLOBAL TABLE SKINNING */ + +//separator between rows +table.table tr.head>td{ + //border-top: 1px solid #BBB; + border-top: 3px solid #DDD; + height: 30px; + font-size:120%; + vertical-align: bottom; +} + +//sub-row, darker bg +table.table tr.subrow{ + background-color:#EEE; +} + +//listing have no overflow +table.listing tr td{ + white-space: nowrap; + overflow-x:hidden; +} + +table.table tr.disabled td,table.table tr.inactive td{ + opacity:0.4; +} + + +/* DIV TABLE */ +// used in UserOrder react comp +div.tableHeader{ + font-weight: bold; + color: #AAA; + border-bottom: 1px solid #DDD; + margin-bottom: 12px; +} + + + +/*table.table>tbody>tr>th{ + background-color:white; + color:#BBB; + border-top:none; +}*/ + +div.reportHeader{ + background-color:#DDD; + +} + + + +/* a product order in a table style */ +.productOrder{ + + border-bottom:1px solid #DDD; + margin-bottom:6px; + + + + .infos{ + color:#AAA; + font-size:0.8em; + } + + + +} +/* A product reference */ +.ref{ + color:#AAA; + font-family:monospace; + font-size:0.9em; +} + +/* Link to share */ +.linkToShare{ + font-family:Monospace; + padding: 12px; + border: 1px solid #DDD; + border-radius: 6px; + background-color: #f5f5f5; +} + +/* make like clickable divs */ +.clickable{ + display:block; + border:1px solid #CCC; + border-radius:8px; + color:inherit; + background-color:white; + margin-bottom:12px; + padding:8px; + + &:hover{ + cursor: pointer; + background-color:lighten(#F0D277,10%); + border-color:darken(#F0D277,10%); + text-decoration:none; + transition: all 0.15s ease; + } + + &:active{ + cursor: pointer; + background-color:#F0D277; + border-color:darken(#F0D277,10%); + text-decoration:none; + transform:scale(0.95); + } + + &.disabled{ + background-color: lightgray; + cursor: not-allowed; + } + +} + +/* a cagette group block (use it with .clickable ) */ +.groupBlock{ + height:110px; + overflow:hidden; + vertical-align:top; + position: relative; + .address{ + font-size: 0.9em; + } + .distance { + font-weight: bold; + color: #84bd55; + font-size: 1.2em; + position: absolute; + right: 8px; + bottom: 6px; + } +} + +/* a cagette pro block (use it with .clickable ) */ +.proBlock{ + height:110px; + overflow:hidden; + vertical-align:top; + position: relative; + background:#bad096; + &:hover{ + background:darken(#bad096,10%); + } + /*span.cpro{ + position: absolute; + right:0px; + top:0px; + background:darken(#bad096,30%); + color:yellow; + height: 12px; + padding:4px; + font-weight: bold; + }*/ +} + +.header{ + .accountBlock{ + a{ + color: #777; + } + + } +} + + +/* + SHOP v1 +*/ +.shop{ + + .header{ + background-color:#749E3C; + display:inline-block; + width:100%; + + border-top-left-radius:8px; + border-top-right-radius:8px; + padding:12px; + + font-size: 16px; + line-height: 22px; + + color:white; + a{ color:white; } + .info{ font-weight: bold; } + } + + + .body{ + background:white; + display:inline-block; + width:100%; + padding-top: 12px; + + .catHeader{ + font-weight:bold; + font-size:1.2em; + color:#583816; + border-bottom:1px solid #CCC; + width:100%; + } + } + + + .product{ + + display: inline-block; + + .name{ + padding-left:8px; + } + + .warning{ + font-size:11px; + color:#900; + font-weight:bold; + } + + } + +} + + +.price{ + font-weight:bold; + font-size:1.3em; +} + +.vat{ + color:#999999; + //font-size:80%; +} + +.detail{ + color:#999999; + font-size:90%; + +} + +//in shop page + +#cartContainer.scrolled{ + + position:fixed; + top:125px; +} + +.cartDiv{ + margin-bottom:16px; + background:#007700; + border-radius:8px; + position: relative; + padding:8px; + color:white; + h2{ + color:white !important; + } + a.infos{ + margin-top:8px; + font-size:12px; + color:white !important; + display:block; + } + + #cart{ + + margin-bottom:12px; + + + div.order{ + margin-bottom:8px; + + a{ + margin-right:8px; + } + } + div.total{ + font-size:120%; + //font-weight:bold; + margin-bottom:12px; + margin-top:12px; + border-top:1px solid #FFF; + } + + } +} + + +.place{ + color:#666; + font-weight:bold; + margin-top:13px; + padding:8px; + font-size:13px; + border-top:1px solid #CCC ; +} + +.distribMessage{ + color:#FFF; + font-weight:bold; + padding:4px; + margin-top:13px; + + font-size:13px; + background-color:#080; + /*border-top:1px solid #333 ;*/ +} + + +.dateBoxOffset{ + position: absolute; + top: -16px; + left: -18px; + display: block; +} +.dateBox{ + + border-radius:8px; + background-color:#c59654; + color:#FFF; + font-size:13px; + line-height: 13px; + + text-align:center; + vertical-align:middle; + + width: 90px; + margin:0; + padding:4px; + box-shadow: 4px 4px 0px #292929; + + .box{ + line-height:22px; + background-color:#FFFFFF; + color:#666; + font-size:14px; + font-weight:bold; + text-align:center; + margin: 0px; + border-radius:4px; + } + + /* place link */ + a{ + color: #FFFFFF !important; + } + a:hover{ + color: #FFFFFF !important; + } +} + + + +/* categories */ +span.tag{ + color:white; + font-size:80%; + //font-weight:bold; + padding:4px; + background-color:#666666; + border-radius:4px; + line-height: 30px; +} +span.tag.active{ + padding:12px; + font-size: 16px; + line-height: 45px; +} + + +/** + Popovers for help and tutorials +**/ +.popover{ + + color:white; + font-size:14px; + //font-family:'Arial','sans-serif' !important; + + h3.popover-title{ + padding: 4px; + color:#BB9931 !important; + border-bottom:1px solid #BB9931 !important; + background-color:none; + } + + .popover-content{ + font-size: 16px; + b{ color:#FC0; font-weight:normal; } + } + + + .footer{ + + border-top: 1px solid #BB9931; + height: 45px; + padding: 12px 0; + + .pull-left .btn{ + + background-color:#583816; + color:white; + border:1px solid white; + } + + .pull-right .btn{ + + background-color:#FC0; + color:#583816; + border:1px solid #583816; + } + } +} + +/* skin a modal like a tuto popover */ +.modal.help{ + + .modal-header{ + font-size: 1.3em; + color:#BB9931 !important; + border-bottom:1px solid #BB9931 !important; + font-weight:bold !important; + //font-family:'Arial','sans-serif' !important; + background-color:#583816 !important; + } + + .modal-content{ + background-color:#583816 !important; + color:white; + + } + + .modal-footer{ + border-top:1px solid #BB9931 !important; + } + +} +/* hightlight a zone for tutos */ +.highlight{ + border: 2px dashed orange; + border-radius: 16px; +} + + + +/* Distribution box for the homepage */ +.distrib{ + + margin: 0px 0px 28px 0px; + position:relative; + + .header{ + + display: block; + height: 72px; + overflow:hidden; + border-top-left-radius:8px; + border-top-right-radius:8px; + color:#FFF; + background-color:#749E3C; + vertical-align:middle; + margin:0; + padding: 6px 6px 6px 90px; + + &.disabled{ + background-color:#999; + opacity: 1; + } + &.orders{ + background-color:#B2823F; + } + + .info{ + font-size:16px; + line-height: 22px; + /* place link */ + a{ + color: #FFFFFF !important; + &:hover{ color: #FFFFFF !important; } + } + + } + + .date{ + line-height:23px; + background-color:#FFFFFF; + color:#666; + font-size:14px; + text-align:center; + margin: 0 8px 0 0; + border-radius:6px; + border: 4px solid #C6C6C6; + } + + .address, .closing{ + font-weight:normal; + font-size:0.9em; + line-height: 16px; + } + } + + .myorder{ + font-weight:bold; + color:#999; + background:white; + padding: 11px 0 4px 16px; + } + + .content{ + padding: 6px 6px 6px 6px; + background-color:#85B14D; + border-bottom-left-radius:8px; + border-bottom-right-radius:8px; + + &.disabled{ + background:#AAA; + opacity: 1; + } + + &.orders{ + background:#FFF; + padding-left: 50px; + } + + .footer{ + color:#999; + a{color:#999;} + font-size:0.9em; + + } + } + + + +} + +div.groupImg{ + background:no-repeat center; + background-size: cover; + width: 110px; + height: 110px; +} + +// product thumbnail for shop and home page +div.productImg{ + display:inline-block; + border-radius: 3px; + width:70px; + height:70px; + margin:4px; + background:no-repeat center; + background-size: cover; + //margin:0; +} + +//Product React component +div.product{ + div.productImg{ + margin-right: 12px; + vertical-align: middle; + } + +} + +//Product in ProductSelect React component +div.productSelect{ + /*div.selector{ + width:64px; + height: 64px; + display: inline-block; + cursor: pointer; + + &.active{ + background-color: #007700; + } + + &:hover{ + background-color: #00AA00; + } + }*/ + + div.product{ + display: inline-block; + } + + + +} + +// Cagette Pro Catalogs +div.productBox{ + + div.productImg{ + background-size: cover; + height: 220px; + width:220px; + background-position: center center; + border-radius:6px; + } + + div.productName{ + display:block; + font-weight:bold; + color:#967820; + text-align:center; + font-size:1.2em; + margin-bottom:4px; + } + + .price{ + font-weight:bold; + text-align:right; + } +} + + +// typeahead ( autocomplete js lib ) +.tt-menu{ + background-color:#f5e3ac; +} + +.tt-suggestion{ + background-color:#f5e3ac; + padding:8px; + border-top:1px solid #CCC; + color:darken(#f5e3ac,60%); + cursor:pointer; + font-style:italic; + &:hover{ + background-color:darken(#f5e3ac,10%); + } +} + +//txp product input +#pInput{ + + .txpProduct{ + color:#AAA; + font-weight:bold; + font-size:0.8em; + margin:4px 0; + } + + img{ + max-width:100px; + max-height:100px; + } +} + + +//Product composer +/* +div.ProductComp{ + margin:8px 0; + padding:8px 0; + border-bottom:solid 1px #CCC; +} + +.ComposerApp{ + .add-button{ + vertical-align:top !important; + } +} +*/ + +//basket +div.basketNumber{ + + display:inline-block; + background-color:#333; + border-radius: 10px; + padding: 6px; + + font-weight:bold; + color:#CCC; + +} + +tr.success td div.basketNumber{ + background-color:#070; + color:white; +} + +tr.danger td div.basketNumber{ + background-color:#d9534f; + color:white; +} + +/* fixed bar on bottom for buttons */ +.fixedBar{ + position: fixed; + bottom: 0; + left: 0; + background: white; + width: 100%; + margin: 0; + padding: 8px; + border-top: 3px solid #CCC; + z-index: 99; +} + + + + +/*! + * https://github.com/YouCanBookMe/react-datetime + */ +.rdt { + position: relative; +} +.rdtPicker { + display: none; + position: absolute; + width: 250px; + padding: 4px; + margin-top: 1px; + z-index: 99999 !important; + background: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.1); + border: 1px solid #f9f9f9; +} +.rdtOpen .rdtPicker { + display: block; +} +.rdtStatic .rdtPicker { + box-shadow: none; + position: static; +} + +.rdtPicker .rdtTimeToggle { + text-align: center; +} + +.rdtPicker table { + width: 100%; + margin: 0; +} +.rdtPicker td, +.rdtPicker th { + text-align: center; + height: 28px; +} +.rdtPicker td { + cursor: pointer; +} +.rdtPicker td.rdtDay:hover, +.rdtPicker td.rdtHour:hover, +.rdtPicker td.rdtMinute:hover, +.rdtPicker td.rdtSecond:hover, +.rdtPicker .rdtTimeToggle:hover { + background: #eeeeee; + cursor: pointer; +} +.rdtPicker td.rdtOld, +.rdtPicker td.rdtNew { + color: #999999; +} +.rdtPicker td.rdtToday { + position: relative; +} +.rdtPicker td.rdtToday:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-bottom: 7px solid #428bca; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.rdtPicker td.rdtActive, +.rdtPicker td.rdtActive:hover { + background-color: #428bca; + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.rdtPicker td.rdtActive.rdtToday:before { + border-bottom-color: #fff; +} +.rdtPicker td.rdtDisabled, +.rdtPicker td.rdtDisabled:hover { + background: none; + color: #999999; + cursor: not-allowed; +} + +.rdtPicker td span.rdtOld { + color: #999999; +} +.rdtPicker td span.rdtDisabled, +.rdtPicker td span.rdtDisabled:hover { + background: none; + color: #999999; + cursor: not-allowed; +} +.rdtPicker th { + border-bottom: 1px solid #f9f9f9; +} +.rdtPicker .dow { + width: 14.2857%; + border-bottom: none; +} +.rdtPicker th.rdtSwitch { + width: 100px; +} +.rdtPicker th.rdtNext, +.rdtPicker th.rdtPrev { + font-size: 21px; + vertical-align: top; +} + +.rdtPrev span, +.rdtNext span { + display: block; + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Chrome/Safari/Opera */ + -khtml-user-select: none; /* Konqueror */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; +} + +.rdtPicker th.rdtDisabled, +.rdtPicker th.rdtDisabled:hover { + background: none; + color: #999999; + cursor: not-allowed; +} +.rdtPicker thead tr:first-child th { + cursor: pointer; +} +.rdtPicker thead tr:first-child th:hover { + background: #eeeeee; +} + +.rdtPicker tfoot { + border-top: 1px solid #f9f9f9; +} + +.rdtPicker button { + border: none; + background: none; + cursor: pointer; +} +.rdtPicker button:hover { + background-color: #eee; +} + +.rdtPicker thead button { + width: 100%; + height: 100%; +} + +td.rdtMonth, +td.rdtYear { + height: 50px; + width: 25%; + cursor: pointer; +} +td.rdtMonth:hover, +td.rdtYear:hover { + background: #eee; +} + +.rdtCounters { + display: inline-block; +} + +.rdtCounters > div { + float: left; +} + +.rdtCounter { + height: 100px; +} + +.rdtCounter { + width: 40px; +} + +.rdtCounterSeparator { + line-height: 100px; +} + +.rdtCounter .rdtBtn { + height: 40%; + line-height: 40px; + cursor: pointer; + display: block; + + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Chrome/Safari/Opera */ + -khtml-user-select: none; /* Konqueror */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; +} +.rdtCounter .rdtBtn:hover { + background: #eee; +} +.rdtCounter .rdtCount { + height: 20%; + font-size: 1.2em; +} + +.rdtMilli { + vertical-align: middle; + padding-left: 8px; + width: 48px; +} + +.rdtMilli input { + width: 100%; + font-size: 1.2em; + margin-top: 37px; +} \ No newline at end of file diff --git a/www/favicon.ico b/www/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c025942c7101a1a52d339c1442b4f6525e1cbcf3 GIT binary patch literal 1150 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/fonts/glyphicons-halflings-regular.ttf b/www/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/www/fonts/glyphicons-halflings-regular.woff2 b/www/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/www/img/AB.png b/www/img/AB.png new file mode 100644 index 0000000000000000000000000000000000000000..73c41737a001faec66f88380c872acfd12548449 GIT binary patch literal 3955 zcmV-(4~+1MP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}000DzNklXX>3+a!brPv~M=H{j||4h8Q z_ilIhcYlA*>BYSp>qW2Xyg1K!zUSe4;PCLFhgz56{|GB16$1bikm9LOD1k7dGoS

    kSNpdgGf3ZVo*RaBr7Kt#g;3=jZ;7&1nQ zfUqbLRH34Pu(2g05*5-=R8&F=MP#rr2m+BAXXBoDfp`u%F((GV^9x`TF;*1$AYW!< ztl;84lvE&!(1-8(u0ppi+1&HOA9p8bq}z(m3s%=fk1-Fc=AY3TgpvSV{3Du5{md?0mQG}zo{-U<-K3F{+0VH%8|+Os;jx1 zhPe=U)$yu~pAprU=01BVb9ryqeus=>qJj9;WmQ&HMO8G&`}ye;roGs(5y01--*gUi zsY89a>oF7YL!X(lekN)hUuD~w9r-Z7e%6}#RSnxacKPBHF)iG)G>|Y5-}Uq9V6b80 z?39}dMDmhXMW|siGGX?lIkmCMi|MZJY_Ad(0yoOhbI+d!P`C5W%CgER94o4!hMoij zezd;%K<|-+O)xlw%$qcK`P9Ws+?}~{=2pjTFU@R2l~BY}e^dLbe-2!%h*cOiAhxRE zus2*^UUO_+8-SJj)*kLT+B9X+bN4(w?C0ArAM4CqBGQPBkW#1u)j7$#t_|Hd(DQvF zl8D>5A+|(TR7lke!nWS_zUT5&><$U5}B&iwQlJ3ySH|p`uKVwwSQIX>HgndKmJxO$c=Z#88yE63IS0~ ztTGvya6Wy3RnOf%|MT?|aT{kghM0(~D_+b-3!(S!!|%V+(DLNLbtn3MTsD2hg>;v% zVu@lVns&2=!2Rl}Pv=iw@XXyK8&Cmrf-yP5A_J8N}c`pU2UXOgj`!`8APFcAQ< zi)))UH@yvD#doWOBw`|@3gG08Qy_F_djT|0X^h*l3Ym&{MT8s>1riX5m<$;LDO5xqV+}}&7*yO#5hXMNMGH{WMC%eY1OhP; zqQ-$jK};nu3KM}0K|xf~X%wmg2w*K+Lxuqm5g^4ERD=|S!GI}JkU#)|bPSqD3(Hhe zm_{2#Bti`cP=Ek42Ct*6EsiO{-(YlKzzC$r7Wn7nu^0Zg?th8D2LPi+L9Mp_kq7_) N002ovPDHLkV1iblVWR*5 literal 0 HcmV?d00001 diff --git a/www/img/AMAPéi-micro.png b/www/img/AMAPéi-micro.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf715a6032c41372de76be2ec50a689e2a4e65a GIT binary patch literal 27907 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%0Dy!5 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 Bldu2) literal 0 HcmV?d00001 diff --git a/www/img/facebook-32.png b/www/img/facebook-32.png new file mode 100755 index 0000000000000000000000000000000000000000..be55deddc3fc615ccd1d49235976cecc8e8d0eab GIT binary patch literal 991 zcmV<510ei~P)q1ouJThj*#d6U`qd-LYKH#-Cc>DbrT<#4*f?uv>K$|&hnYB-yj z2|vHne?#g-er?@<_IfC=yn9E-IyBV#%gM)BB!v0=)kkv=X%JNeP_CY4S|8( zTi4@PVg{qpcv&3?)OoSE%7uqdhcNc-Yd571XLxn60k1#)z>kR}$}Q1Y5=(p@G=+kQ zjE{$@)8PtDCNqe}(^x2p{7Qg(-H>bwqF_9p0%KTEkxa>^M0{m64sbp%gKjrP=k`Xl zHP)a){4SOgm!Hhhvz$P(DPtVkJeR+$)`Q*yYvK1+qN;KcC{+z}wBiK{U9u?ypI7+Z zE)|D6o3Xsk4_|fFALo@~NVbRo1LO8R=xA@is^F5p!gW{)hGbJN!ocRS|C`nswIR3%jy1P-_^w_23N#AH22X6y@B01bo#lkpoV{_@n2aE!mW8y$Znd%D+l% zG7Tp+mRw{!Vfri~BwqzwB!?o7q>RmNa5^34C0FV>0hMe$0@4Aid2sRgCPNsD<@~XY zhOtvuUd_=JirENosNz(%ng{J|%|)feP3Pnj?&Ta^GV?jWWdw*`5>|vU&DK^G+n3CI z6^K7nVm$)PX4@>buND?fWrvcA#>(qJvHkp_3rVOd)+4a}=*_t`fAx@I&d%Ojrgn7Z zY$sHNqSQAHl6*4CPRQVOJ8UMQX84#%rHkrJovpCk@WfOc0pB9q zNm%?by&VabWJ2xab2qS`$bq3D5^Clj_eH@#;)BRDOoMjxkxOA55pr!{QN#Jbg#dM%ud*_=X96i zstjv{hGbq@&Bv1mTMc8E2HzVyACYfCq6PEZFq@eU58c0@U(bIFFaYf=<8eP8H#h(Q N002ovPDHLkV1lDZ(&+#I literal 0 HcmV?d00001 diff --git a/www/img/go.png b/www/img/go.png new file mode 100755 index 0000000000000000000000000000000000000000..c69a5b03a4269a0bfb546dbf177f8460bba852ce GIT binary patch literal 2378 zcmW+&c|6ox8~+UxgQ4*fBg=4=+xBY45-p6eWVyEt3KeD{Tq(418*^vuYtc}nMN_Gp zY>m>bdlkcvXeFJ?UyS!iz}J-~LSTo(A?XdxGr@zM8=o=c|dqOSLgK+QRtI_0ABD zg8K+#@ze};+ady_AT#{6VV0R26fiE%a{8d^Sh2f#tM6GDQp?Q~bO##+x3B-PtJ){v zXEiLrOAi+2@{!*=SrEqaENt84Tog1j(;+q7inru{gs1(SEEmarZ(a}T`n zLH@gL{6G5S=(oX-3!tsB0sy5#efMW7f-HjJ=PJNqd|pmyZWWB)MU(ghZtCe!P`|j1 zf|5H$0O(|P4#Ofj2!HS{;AY|q79aXyKkG%G3{;bB0WifSrR5nbkODdV*0?6lGF|(# zaKCcsTfBxOwsl|88)z|Km;?zAhwp%9;)Z0Q-SNXyY{EeU7L#pR z`$51eiA)SUd2L-Un(oM0!kQcvA}<&*g+nw>P)=z0uV>uFZxM>47MJ8dzOzCL^RZgc zv|XI&GS2oFx!PB1S5a{H@(FbbX)-5xvms^k3R1T7bL?GnG&I!X^HNs~Uev^8(}k9{ z$&Zn_d@EI~9Xts{!|c>eO1we*ExXI9$;#$8HgCZ7a^)JYjc$;Ydm&~->`f(+$zoNE zIJn;GS@BYGjD3x3Lq2Pv-J~pFL)24o=P?tHrbvC?e=*6_4g;x+%>8K3z#!0=b^tt; zJd2sO{8vI?+JD;O|`p0`Gc_QL@#)14Fwn&pO zk;*gcvY#5;kj=OpV%b`{{R$@oCy$H!jo{2fE-B`kD7+0*PJydA%hOsJUqe=<>m5)X zUjbjcq)8-p`;}%{JRepW&K|A<84m8m_^dA`<4dcEZ%v#f1Em#CMPvtb2h=GyhSh#y z&x6!3B|gEmIU2%QK7@%Eh$az~M^VnI%uVy`WxFOgZ9^tlA?EO6@G*7bl~YTCyLJ=)L=prrfX8}#~Eps?(xHT?%xye(554B#huj4kklS2lPR0C_FRtX-hGK_fNT@4{GQGRC@pls*y=`SD?Yp`aMp0T$V4%fVuHsmB1(?7h5K$@>a5B~D9VG2$gHV4n)i6w z%}U4D*;-^ByOb&pCHI6!Re8tMW|PS)S9Tpere*dXSm~ip^zzj7XX*de+$?b7F~EZZ zF=>Lq=z;Q`N0*nE<zy+#0|hO4gFblxOwyZA=>MDlrNRHiq>qBu%J+_F3r|7Qyi ztu)t5en&2dECnE{oMq3f@BO5cy}jw12?OHl~f5D zH{Dkx{N+ZfAzAW6yTiXU^nU<<$Xr6X4YLy#*<)v8TC%3D2^Bz^xBdEQA;oU7QW5#_ z(y8PBfi(x@c>gA9bjtjQE)0`anndtY+Y@J>hi9)84chPM;&ycM`)DX5h24JAE4hvi zd=($0U3whgK86T6#7_}O>fBIb-Ikq|d2($*?;9-6vedz*4+f0zo#uyP!@0Z*tnx0S zl)tUtcL1IOt|fl*eAh-S#h#?0veA3*JG{8AB(?&=xkuk}P!)^h&sMPkex^#vpRRv6c zMot2Wow8Snf!jC#L?uUXxVn*<`-^>ZTlNi}rd=;m>TPy|u3?Ank-Es5V@(DYg`98m z`q@p6$svJ;<)}8VtS?o~fwk|}Qp{ZEd-gmE=jQ#^0!%GxTH^JzZU>ewpwMSpUv^P) z>`7dnPwAcVkaubu8NGFblT;BRt#Pp4{;&M@kiueRV2t!azfD)(r+-+Ml{`uL_NM%{ z(m$?68%7U0<9Cp@SHm^>Mc=08iFu!E93@I^5i%qWK{@UW6YS1 zE}ImW#d^qHI%*jAfBjCp9Q?NUoIMJ~EPnf7e0y$oD|ajKYFzZq&o&*ZW0k4ba(vJD z@gert!I|YDueavy^;7_u&WceyT-~$MGly8Y@9~69^mc}Sgb3sCXm=bRrLlw{uF#4% zs=(Fp8qSX}$CCs-PpW&03WcJG*4X_>B + + + +]> + + + + + + + + + + + + + + diff --git a/www/img/home2.svg b/www/img/home2.svg new file mode 100644 index 0000000..6add336 --- /dev/null +++ b/www/img/home2.svg @@ -0,0 +1,37 @@ + + + + +]> + + + + + + + + + + + + + + diff --git a/www/img/icons/Thumbs.db b/www/img/icons/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..4ec50bac2e426dcffe598c3d049713060e21ca55 GIT binary patch literal 1093632 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/cd_edit.png b/www/img/icons/cd_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..b0dc194b0525e847fbbe1241e93959a2f645c623 GIT binary patch literal 790 zcmV+x1L^#UP)-<$VlrT{=eK4py~mkA9q zM}&zO;URR)cG5pTu#nIa%IK^g^MN?lA~H6Ty9f%~_%Rm%v*mmWj|t?0N4kt2?5P<9 z<3PVHfj(yf(}E0%oK%9@m=E(k5IGRgGJ~if`y|P`b5cZyISPlUB18XZL0sLp=R~ww z0s6Q^sD42~rzL{r$iCC?tOVV71m10AGuWh8l2)0K$uI$x#b$ROqw@_r<9I(AMw>AV zR}fg)1T4!*I?fJ+9e^i+@P-~sU1eAqXaM)&8Z@sTjxzzy;TQ4Qv_%3ubQ3%V=i=!3 z5s7`-MRgx~-|hFXZuAxdQfF=sD~EhW25AmR?DXlEX66x>cCR$r0@|0T{bnsoKi zsQU%vKZ6KOyh7U5kG*vhxR2GDLjj$EhgQD{jXnh1>XCq@uc%ybJ%gGyA?>>l!S(=) zomFslRHLS;JC;2Hw;qGm5XuIBwTpC-8L+gUziW<0T~DA&7NoqDkOJjMEYxA;Qwe@^ z9NUCDyhQV=1P2cU(ts}kaCSQLOl>as4kZ6=#OI&F(|QvYJBP9T#?l^^QK8cCRHLOB zU^Wk7Ve}ED{S(q!6?Os@5GfOnt{C5@yzp!(M`g@!q%f6BKiUoVa2*`q-ymo$MQW`a z0{0m1wi5K4Jh1td ziw3gwEvyY!(OYvK(=&Fk0sHST@Ji4tFZ40?%caa8P5Q(0zkne2A0MmR4NNf_{a-Q?Lv zlXvM;av~}SDyB3_``6^JfkOrKJf+7H^|ViC(*KLFUZ5!dWWXp~#4k-8B?I}mDHLMq zJkxJeL{k@{r9ckn%M`oElqxuqmnGw=qF7W01(jQxeOcDG^wD6#r!lsw@hJg2NANak z$#PCepFmO!3@IgZ4yLetu_q2?5DLe1rr!J%gCx#ZNfv_!b8EXwaHyDnvxg-~PN$Qv z+8N;==Y(U1iieazYAf+uW==9D$>U=3e$P_D1L4Lc2jdeHc)ebR9*r=!o|Y=JN|U-W zaC(zCJV%Up4q4wXH+VcbiO=W5Fbq5%5BKd43B{}{gHY&u28Z{slsx-EmyIl<%2wsO zTrT{6KbB>&wY5bilVM?DfxEUI>g`M6t4;Lp=Ljbuo`pSA&|zj~hK-F4ve_*0c$`Qi zLNpph*L9R}b8|CSZOlt+lG3B?3 zhK9y$*+J5zU11H@BzbwK$l{kX=EFH=gIQb~7Ec2v>#=b=Hb(yb}@(&i(Y~tii#p5jVyfeAt}w2NTp(hoN0nO=D^FGowjKJbAceN z67Z(Wjp|-EIvhTDNfaPhjcJ&6A!H$dV+EHV^5Y@3rrCwk_9+-$0R-tEHIM@H^-u^W z2hhhMB4Ba&q0xyjiSwdby%(x4A_k`+k6?mc9%_AzV2}j_m{;z-p5|BEE1{^_j>0B8 z`mDh32|#D^&~#?um<0q1kZ35*IlxWS&#wu`0t`lr3+lE>3J{?BD&RdYp|W+532cnl zZDx4LG)AK_O##NSIT$Sxs~cE=_`~{#dKOSf=2sNbY4)(dbM zXPsdhaWO#ED1d92Kz@S_T|>(Q?vx$Jqnb;&P_PGOoeuPd1sDt?PH>Gj*<3;CCNYQ< z?J?Zd97dA*01}G#+@w}dAAbEhE%9^dAOyGM@-II3i!w^Zlj;JMxZ_VRZITUgms+KGy zYENT#MwBx;O%bu|C|lh@e5VndE7*=RFSjC2xe>8X*Wqf(5pd0!NYKQSd9(XO*1h#B zUM7A-!cUtI{o}LfF}rXuHwxF(C$TGi(_~zBM%1#~xWaX2@H^5YyxZ=t#)dS-nsEI; XafIoi2i@$300000NkvXXu0mjfN6%>) literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_bar.png b/www/img/icons/chart_bar.png new file mode 100755 index 0000000000000000000000000000000000000000..9051fbc609b92b15af9be410e368b7adc20283b8 GIT binary patch literal 541 zcmV+&0^V&qIn(Wzh!))n z^W^$!aM&X3bCX~Vo|JLOLCb!-`g!yN7b-yh!|sbVZ|M~fElQAyiB?lO%sjz z7TJ==TTk%_A{ znxkIa+E~RC#EKF{U0G~y<6)R9(uCp7&f7|JN}RHwEO@{EgbF~D3a1<@ip|9yZb^6$ fo@6A$W#9P^w2GuX0-m@}00000NkvXXu0mjfB69Bi literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_bar_add.png b/www/img/icons/chart_bar_add.png new file mode 100755 index 0000000000000000000000000000000000000000..d283e846a29f929681435f01c961faf486f274a6 GIT binary patch literal 626 zcmV-&0*(ENP)v?QT{`n=t5=RT+5AJm{BbjCAW=lY$)Da?%jsp?V9`R99QPKcuTq)0YGwL-(m(ExjR zzuclKmIO;e`|<-qG<-6WDBZP8-RFN8Ox*-kikvBOrm?96F3M(~{l;?gmI5KBPtkOY!&7>tk<7nGEZ-Y!L3%G}C~r6|OhNInrl zqM|;42>1ZrLyRHVOl)v{XpDkl^VKAerZ3ijA_ypt(BA64R z80Y(Hh{E@82W;)EvAMI#{Pa^6UeD0o(N$jIQP(YWX%`EErHrMF_GXrsb|5O2g|h>< zS^xBg@!?5ceO{!qsIvO;9rd3>6eoS>vAY)*fLY))&;S3R-CpH1QEovYWmCYySByZom|YEI8%B`R1GhlckjSpUF2{PTyTgQ57!`qvAzz zqRdR~&DsJuuN>Roji{mtBqkobY_#vd1jR>XWmO0<(brXB&1n08mJz%tHYgGkF7Kde zWOG2edbw;-l@x>&gkty#&L?b01W`Jxk%o=`a4>!xRLNo_i;?DA#Yw`rNQlr?O*FQO zkb;nj!0T5a0S+Bz&3J533SUOB+cLz2Edb7!0B0cx1Yy-BTu_WtLQM456m2ONpPWm< z3*HBU4LBFb)jB#vz&Z#4yl1VYSf4On@v-dUl-%R=%v0j>7o=XtjZSd8_KjT4`eo<9 zdk{fPC>^W=_I0Z3g&_JCdpTCl)!obD|BB)W!1_yo3B|7_u;pC;i{dA52tYEI|a~eRQO%X$#2w7ptC!l0{32(CI}(lp$fzNf0TbdAIVWCque*=#U*c zs1=bX}|=>LcQ-(oKM)02%@YgMyfV)Z*0?hzBX{Wscn$j;|pZ= z;eni|cI*UIvKYx?Wa*~jBw<`6L?{&#Z+D%ewDO(PUH#kW=o{kSd#^D4^yxlMECXt z;eukEvaaP<_LisV?B9i}oT9lkil($nchFpz>AmAK$4E1Yk|LY`8%?Z1>mPePa^Zn`}{-!`% zaM+rqkm?3Rz&fywnYjs0?3*RhOXb#=D3;p7YJMBP#nj+F<`s-Hc=4FJqo8#IA;6Zc zFuaYa{0^@Te?-fJOU#U2W^#OiU(QZ2`on&fiY3b318nRm6U5_;BRjhDc+wywC!`Q* z89Ku!AAAgj$mCCFnECwyUrZn4kA+^k%ReJQi4uvTXjHP463=>ndzX2$|Hb^RSNljs kcg4)j9~}97>MsA`39(pz6}>#e>i_@%07*qoM6N<$f^l1B*8l(j literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_bar_error.png b/www/img/icons/chart_bar_error.png new file mode 100755 index 0000000000000000000000000000000000000000..bdacea5e5e1657df6b370a33720220fde962ce6f GIT binary patch literal 671 zcmV;Q0$}}#P)k7dBh(1Fmof__N_LYSE8EF!#ZI!fu@I4kQj}7N4aJOW zC{yma4U+MF|Mzy@b1Xh-%A_f$PN&Y|cb@0eQ!z9Cr<%uF9ys^KvMNy^XC;afL^-u* zPGwwx5S8`aEr=>=AlbM$I5K_(E-5i9Uw#NF8`CB=QFA(eK-~#Z6rU8yMrbbh>11qx z9o*aaqAHdIOF}t+KOq`E8A+7tgv^M~|4^{07gVX_OeJT2K2m}hE@V=MuE~!$y6P$~ zuf3nOp!dx1Xh2~}Km-N{VBijjP;(KVlrkz=N)|U?W_8a>G^KriTL_Vg2m}vFAPGN$ z5t8D9vbyyqbLOpJ>g;8_dwQ<_(B;1VccLVp2q96Z4-ExAfcFq1wYuV?F~vTzta^ji z8Exc|OLQ#V#TMGxwxEx#i+1Acooe5?WVgJXjX+nDxt5LX5YEghr;YuCa04Iski*|+HKTue*r zS4_S^rHOkNh5$wV5HlCfrTxtVrpHL-aPJY*Bv=qEWh`aZ_1$OV?&CBSuQB-!j81Gp z)1)pwKYhrVlP9Q*73bT>mVdRZEvAO4j%xceQN_&e{Q^Z5f`6;uX>b4l002ovPDHLk FV1mc4Ec5^X literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_bar_link.png b/www/img/icons/chart_bar_link.png new file mode 100755 index 0000000000000000000000000000000000000000..bf18aed48b8ea9db86bb7621d1c9c63cdd121c41 GIT binary patch literal 712 zcmV;(0yq7MP)2BUt+C1Pcjhr)VWuX(u*z zK_L=?WW}hUEchaBuF0-qHhUlEo^$3{tc8V2z$u5}oB#ir@tkw~Px*gpUbirwvXUqKy|(sUy)2ZG=@>OFgmwP;g)bMDVP|vzFyqK^aG^ zEZRa_)=~eP1*Z+3G4P@UM#Hx4G~$#*3sKs%khFT3SpNl}(k4J9pbcoll5!|5#7fZC z(Vi0|6wXbYbUHPpsYWLnr8K@Iii|OkDA1ZDiYSCLc;&C`Dy*gaX^}{VX-!jlW;Rh= zUu3bih~Jar>C$6-iGOWY3au0mUccecmVS;MJ3$zR3=Di>V)7XW`(X6&C|N&C5CoJ; zCCoeUB}yPoA&!}u{M^zCfUtm#;TFHsCy!|pxw zyn4-a5CE|J@-7)q7#|-epU*cBEDXuup`S<42XmD#cvnWQInf5E40ZK`N}RLq zBa83f%q*uO+hkn-px3iWUBhj*zEtZ=#J?K1BwoS4fri4we+W?%x_!2UEjG9A57v+ddMu0 zbbp6n;=LcDNq6gD2L9C2J@8#y?*rTbgTj6Ps|^D5|MCj{`@<*H#t`wKg(3XGf2QyU zf0@G{{9_BdAC4aSKNVGeAq>dh`~N>9tN(u{wmT>x9B`-HYmvir?8JeOFVbz5u> zH|V#x^ai*A`gyzm|72hZ`OUy04pZPY)6&ahrsWHdS>_MiW?QUvoolwwWxnYbrv=9G zAbFr`rQinWXqscE(MN|a!$l4~hCDEFhknBjyGi=*G17r<_V)jl zB|4H8rP?#iOLZRs>9-bTIvMExwy4+UuxQe`XV#)U8P$NSZU2ojH2n=T)ZNqrEM0*# zI5i4uc*w#O3aL7Q*+%*5QW{Y@8K%V=Ja7ZFGq?QL&e;54D`OK7Z~U*7wgHIO|JMZJ s)OG(gKsaSB6tDTOk-Qp=;RaBG0e_Hjj63iYg#Z8m07*qoM6N<$g46R|L;wH) literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_curve_add.png b/www/img/icons/chart_curve_add.png new file mode 100755 index 0000000000000000000000000000000000000000..f9e2050460f240983415928fdebdbb94111818f5 GIT binary patch literal 761 zcmVRLq zBa83f%q*uO+hkn-px3iWUBhj*zEtZ=#J?K1BwoS4fri4we+W?%x_!2UEjG9A57v+ddMu0 zbbp6n;=LcDNq6gD2L9C2J@8#y?*rTbgTj6Ps|^D5|MCj{`@<*H#t`wKg(3XGf2QyU zf0@G{{9_BdAC4aSKNVGeAq>dh`~N>9tN(u{wmT>x9B`-HYmvir?8;%0k4&7Bhd zEv?W0e`Jfprz!qw*Wd=|=k5OglYu4VHv@|}OtaTaOD~U^mM=VJnLmh{;(o1hb>jam zSEl~I@NC!r{@q#s!~1prn`cY*fEDZI?)*PTRKo$L*|EcDnq#NYM~5!MMGifNJhAOA z-#1>K@PFgANuaR$-?Jz6fB&9zkOAMp8g#R_|FB!KO=7K?Xn+=w@yEZBQ3BsxC{u^W@{txca_}{xL1#B~j r2JzuxKnw;d?f~LXAZJ7A4v;ti!dZAcanXRV00000NkvXXu0mjf_r!r> literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_curve_delete.png b/www/img/icons/chart_curve_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..b411391c40582c6f465b9bb73e454efd7c0566f7 GIT binary patch literal 782 zcmV+p1M&QcP)RLq zBa83f%q*uO+hkn-px3iWUBhj*zEtZ=#J?K1BwoS4fri4we+W?%x_!2UEjG9A57v+ddMu0 zbbp6n;=LcDNq6gD2L9C2J@8#y?*rTbgTj6Ps|^D5|MCj{`@<*H#t`wKg(3XGf2QyU zf0@G{{9_BdAC4aSKNVGeAq>dh`~N>9tN(u{wmT>x9B`-HYmvir?8x@xqa?hX`q zy~l~=-%eNNN7oE_ufh$`&)fa~Cj(2!Zw3}|m}ak;mR=q+Enj%dGJnups(JZ*iN)XV zTYLZiySC&1*A+$oPiO1?+2zcV3s$U`yYv4XQ4I%}X2%YrX^x#nA04_37diA8^6YeB zzWWWR`Tr!}|NqMc|Nn1O{QtVk;XhFP9$15J_V)jlB|4H8rP?#iOLZRs>9-bTIvFqn zLC*encHMtu@V;K+KS&&6K-RYZMj4v^h8gN^>H(InKpLDHg*7~6K{U|MkH5@K{{J7S z=|>sE|93$AFoXF&Q2Ytl0PV~z|FttV|JTac1jHNvYo%=f;`RSEK{$2Y|FXE0|Ho3) z|352N{Qs(w_5a-z#{av0+5YcvWv(JR*BuF$tpM719~ujfL7GA005Pq04UpJhGXMYp M07*qoM6N<$g8Vm(7ytkO literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_curve_edit.png b/www/img/icons/chart_curve_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..bd07673b55bef41b65858e7646f8117bb8e4ab71 GIT binary patch literal 822 zcmV-61Ihe}P)^(c>Y@u(F7)kFf>aU6kDVZZvH#RKW*PIV|R95O53!9 z$YjiEgA@hRg&A6E`h_sRzdDN0Tviqh`o z@ZI!-oUu<)OJPrt!|vdB$DogEN%o~PjHKPFtq2YWy~E?3H1p+fWU@wOXGI9af_jic zzW6 zZY)?sjpnY+HV&h0T@la&%RpzBLW^C31b-a}TXG?6%|dIE1)lpI04wkwXnwDjCRV4)Bpeg07*qoM6N<$f*6Q* AYXATM literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_curve_error.png b/www/img/icons/chart_curve_error.png new file mode 100755 index 0000000000000000000000000000000000000000..906dd038368a493b9095ef94543ad9bb04e70232 GIT binary patch literal 837 zcmV-L1G@Z)P)RLq zBa83f%q*uO+hkn-px3nzYqrG@BROuk=6e{6WbkRr#t3u z?!CA!;Kz^GTmJue*7yJ2-L3yGFZ0}VX|X%&Z*l1ja0B%7cK`p$z!LJCfkhmq*>9GW z_tGV9-{0I^^Z&==rvHaJjQ{_7yXOD-dCvdN&2|h1x>gEqfL`v-|8qn&9N;#07){HW zWcl^}-s=B9UoHCo?M~wVL+ytDzdtPh|KZ-Y|EH!{T{}6^f){RpZua*7mL)op7Ny!V z%}aG3*_7$LJvhtp;d@}feSc8$|Ld&?2)-Q)^vZ<)4-ZcIf3(Y}4q-snw*N*Mn*N3v z>Tc=*mafO9+Z8-K)c61Ai|Jt7zut}pdcg=xf4i6U|J(D8{|`3nzB<^btpzqfJ9Eo_ z?TpR;wK6sV@y7oNGeW6fbe z=e;@7Zt(4JtNyn`&AQ)!Hhnu#ula3%t;RQ?rf+*IRln^mSN^uAOzAKH(R5;6} zkZVkmVHC$-#Z21FbTg-xit~aX%Eb$q*EvaZ1(tWr(}1B5w9p4)Z6!^N#9p zW|mWq&Ee>A7I3`(7L>gOKgj|ium;uAYtfOl=(vU-vGLeyJU7xbxXMlPUP(+|SvYt;shRIQJ!S8JnXYRoKP zmQH|a@GFIb%`+0TmSL}Aw9ltRrS~sYDKyMb-*r|P+|7{5w*)2QMuC2>n^Nn#Pakz; zOtVXfw%cdV6ZT}QM;(Q#pZRwpbh!!!WOdVsS_*AkLk(Is3+QKGLlvDLY_NC4Hg-GJ zBWdUbM1X>|05uQ@?8otQ?HPK}FBurZYL#6poWIJMoo`;VWas&^THM z7e_=O84`l@X&!V<)WNCSk>Fc{Y#0Ny!e_uK3v^|dQ?G}Y(-!dhE#pQ2+@EO$<@;vn znQnqxQ!-pq0P+bbh?I#ysz$!JS0eP^f`SoXiUW8Iu|LlKf4b|L0Jpym$)RXhX~@e`cKKoJe%3_!ppxsQO1LzUV= zR!=;5RXTy6s13+D{a_aS5BSP!9#sTzu0%+d{a@aHZ>`b{@k;;z002ovPDHLkV1gHd BcP;<` literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_curve_link.png b/www/img/icons/chart_curve_link.png new file mode 100755 index 0000000000000000000000000000000000000000..144eafe08695598a02e1cbc54f470888fc5786b0 GIT binary patch literal 829 zcmV-D1H$}?P)Ma{BCQzS3CU@k3h0*+qU+C)VqBzQXSX@1qZ^5S>)?En1F?|pX;2>?jjfp}!K zj6sFfUA`>==f+sA*y4V=dFhj1Fyml8+4%{a%Krof<|SoroDj|oPV&EkCMQq~Gvu^3EJ$m|2AA1f(^6i3#GlX0T`T%|#mNgrf`vJL z>5AY!X4oQNYDXct&~WHr%d}Z}>E-G&BPXzu&3dr;BxW0S?^L@t%rbgIxt-o1yUQC{ z7cjIASS$WWWksgx1;NcPA8x>&r8Ig%$F!bD0mjLrE6i+oQqg7I5Ht=Gg3$g0eZj<} z(3z5Vfjw22CANB+ytmr>HonU9Gojkux+V;!rVj_G8T0D`n&tysqm^ccW8)*g;`Vit z9&-zx~ca)*si-N*Q)FlL&_3t4_+F3px6PF|u3e7z|Juo{v3vRa?Mn*>9 z`pv6Ln)Z6%m#Il2b2^=XI;cwsGOi3kZ^H3BI-Opk)oSNm6B8g+l!OEVK}4ZYfW=|~ zyUn$i-pifQ8pqalI>ryDctIUJ7PZnuNWhC2Lp&Z2BoYY$no%Y!6MaPj zrBdl51k}r~fm-(pQY(9*NOBQOce>$m-*Xrk7yzr)3L1?DbUGa|qYUj#=57#)L{nRS z4TVA>WinYMPCh;_q73a&2X%h~c-L>T2pyh000000NkvXX Hu0mjf(aLT? literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_line.png b/www/img/icons/chart_line.png new file mode 100755 index 0000000000000000000000000000000000000000..85020f3205adc903896aae3ac8b2431d81d25a92 GIT binary patch literal 526 zcmV+p0`dKcP)vZ>%h3)%~ z#+IbJ;FFDG??-c+T_21rm1LV#4~LF)_b?ghyQZ9u#u#o3H=L6>&|AoXU?qv@1Je4>AlGSTjH9nQnv` zZj`d7z#wVmBfa>gsDTLdFI#`g-3Fu!5 z$Es7u?8}cWwJkZs2@EU)U|{|IH*L!Qck23oaHd4px(fwB|2_x$_YKg$rO1-+wT;%l zQ`7tXR!Mt3P6M2(&pepC=Hh>#e_xW77aS^%7ub~^eqd9yzkqI;iK+$w0LJvVLF}yV Q@Bjb+07*qoM6N<$f}^baNdN!< literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_line_add.png b/www/img/icons/chart_line_add.png new file mode 100755 index 0000000000000000000000000000000000000000..5571a5ebc987ff07de879946160880c5482a09db GIT binary patch literal 655 zcmV;A0&x9_P)vZ>%h3)%~ z#+IbJ;FFDG??-c+T_21rm1LV#4~LF)_b?ghyQZ9u#u#o3H=L6>&|AoXU?qv@1Je4>AlGSTjH9nQnv` zZj`d7z#wVmBfa>gsDTLdFI#`gwkE^?tk-a$sPvRx(fwB|2_x$_YKg$rN}ONuWhvcotob7gjSb78!u1z zzwz3n{~*w_C-r~-o^+4_-x-{$&pepC=Hh>#e_!H?PM>PS|J$z2`Hu`XU789q;6H;y z#qk2W(!&pIiuM=aGQcuN`g`}Tr2p-^62O| literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_line_delete.png b/www/img/icons/chart_line_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..5b0aa901297c4b1a1c2654fdad228e19d53cfc6d GIT binary patch literal 675 zcmV;U0$lxxP)vZ>%h3)%~ z#+IbJ;FFDG??-c+T_21rm1LV#4~LF)_b?ghyQZ9u#u#o3H=L6>&|AoXU?qv@1Je4>AlGSTjH9nQnv` zZj`d7z#wVmBfa>gsDTLdFI#`gTJ`Gy0&d=K|H zvHaWV%KQk3D^LOv=wAuPs#C}8%a1L!Ejh#q3@ig+VEz3!ZOZ>!cItmG7F+!MzP0!N zziT`Ge_c`Z|8%zQpIy!@xeTs#7Ycy>eGc^R8=!wnkzMp&+i3keHND^a9NE8o18V+1 z$@l;Na>4)q+Z6x5?sE9Q(}npSgH!dH2b0%a{15c+OI*;5By_w^G0LE;P! z6~_zgN)JD3p3giF1zAS%sxH4A}orI5s%T@qwybq0q#~{rhaR7ospkimCL{b0%002ov JPDHLkV1g1wP}u+g literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_line_edit.png b/www/img/icons/chart_line_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..9cf660733d4271a2be337617957da5db7eb23b9a GIT binary patch literal 718 zcmV;<0x|uGP)vZ>%h3)%~ z#+IbJ;FFDG??-c+T_21rmp^v$%%xy#>Os{Qx#@uvUJ z4|MQ$Waqj#4p|Ns4d{QuWG@&CU+ivIuUTGjviGaX)>?R7Cg2}GcOB^;|x9kVY#w$!%d z5a;oHrLyOz%b}X%{(pZM_5b6Q>i>79I(@p?V`c(RiLP}Q3V{B74)pIEpnpq2g4>!U zgRku<{`vRYq5t3SC;$KPDE9vcpi6E~b^dmv$3g)mDLYl4c`$j+#s5J6z61%($&^jL zx~=N}#qAURKRFrt|Lgte|8Fl;{J%BD@#T$P3nh%a;81bAz^?T01Dm4#;J9AZ>HPoy zrw9LU%nJFxuS)9w(HWlq4>p-Rz0_f@LsVvJPSyVX^Z1niKTl5lf3nr_|Ed(3&pRvi z^oh=mp|*nG+v7EU@9psXy{Fgd;O25&C48wB06Lk&#h$7;IsgCw07*qoM6N<$g4-sJ AV*mgE literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_line_error.png b/www/img/icons/chart_line_error.png new file mode 100755 index 0000000000000000000000000000000000000000..ff23c03a8a9ae7f2a852d5e98010f973f2159545 GIT binary patch literal 741 zcmVNon?^(g@=7(m0P4# zS@uF^lyA;-;f-`HKIhC0gH7U$R&h>oiG-F)j@?nX5Qkh@mGuYg&BrEfcmMRa+}OvH zW=p}!(PG2+bwl=g#z<4SE#Al|b*bb7bv+8nufO2(hu%bOV7nl>{MqIxzvRgtjHSX2){ z{16D5;Zy(lUctE2QuBZ)7Lb#wzzo$RCVpmh(>k7Jg0Nol*^$j_83$-p<9~)JTQ#dAXuGdH1!!Y8b2gkDmG9# z?4Bp!jI`hE|2~51tqZo89Ij7HE3wALeFZ_M@UbQE-tsFk0v__is&pgvkcPgNO&b@D zGTIxnRClFH>W@e;t)xHVuNtHkW|(;O0{p!#-HRp>?P+|MoI$|_+UF5R{H~x>AyR$< X=nrZU-jyx=00000NkvXXu0mjf=^vZ>%h3)%~ z#+IbJ;FFDG??-c+T_21rm1LV#4~LF)_b?ghyQZ9u#u#o3H=L6>&|AoXU?qv@1Je4>AlGSTjH9nQnv` zZj`d7z#wVmBfa>gsDTLdFI!hq-@bX#X+L@z8vo6kH}8K}amoKn){fuj1c#~B)YRMs ziM6)2zRSwWDz&q-<3{$cgk#0gf)Z9d-K|58&^ z|4*7U>3?Nq<$n;{+uQpONDgEONG*d?^_d5g*IfJ$^zTa}BcraSrl#*81N{B{x$N!j zKkwbU_y4(b=l&l$bm;%uwQK)_#6WT&13+pS94d|%*p(iBU{kceKv!2cGd(^1J;;Ed zprDL1_pvLhz$}0$$<<2sYMAyO(5{~^}XKP+xvdis#R~-ty}kh`t<4l z3kwVXS5#Dh*&s2H97qjFEs6nZYHG|tCmMKpdEHM*N%@kUo&6n%e};#L#{sc3ko^fH f29g7*0jUK58Cr#m=F_A89qTKGV%LqLqA&{k|D2>yV7qLmg~*x1@cbjz3zP!z2FhV16<-TNNz zuIz$fLNt0{xWmll%$dUkM1*+|PHJ2ZGvdmC35A3UoF6R(-~DS$BH+@Xy#VYsLyQ>z zxq>v8$ny|FSR~0W2u4ic`k5mcbEIiLksz4Y#KyE{9LLn}_oq&%6$}Oga?Zh83$3-^ zU4V1$eaMkz85m>bTh*c{3ch%tltQ=L4Q7$u>-Ff*JP6K)r(~Ul_41v6uR1rSij#*! zl14&E?hS3Iagod#Oo#p}d7WbijUO{Mqc5?@<$>unxw*22 z?bQuGkPsSMOgEm)qR1=cLLyZOm>T65_V?)|o0p=i_uUiST44Cz-W mqJp!8r`H!$*8T4x&4Leh&Epbde3h>N00007f4xW*L}=Ip56|I&4-dab0EEr-e;4KEPYQmU+1ds( z)h~nw3SOI6tu{|revn>V4-Z^i`bP8hcid+i94)>L52&|4lQPzbYAfu$^gKMU=@0?I zaU3kmq9>ryXb=Pep66lPHl}G(sZ=lw16|k2<#J>)8B|q8mSz3{T-T-7vy;grp))wM zFq}QTkm#J$k1#y9r*rW9_ADR>GfyT^AE%jmG{$6oq${VEhe%k5h~C>z!Z^U?`{UTH zGVi|nl@_$#rkj!04+E{ zDL6%BT11$vkMdx>in(@&)bdalI9wed|6-PG^DKiGcHy)Z`MYYXWh6yJklh61&N0U9 z7$dc47Z|wJPyfvbk?T9zt!|;NfGmsB6cK2ILwFr?K zNQYR|Rf-e`!QxO$i%|0Z+`sRhd)=afDXBfu zp)>e6SDClGd*5ov|+hA_DkBeX;yXW=}-67>L5X~ZT%Y7$(I4GO2nfa{NbKhVN3P6Pn{ z3dlK-`vagARySMF+Tc<#fY?|?vH1X6?m_@a;sE={gTX@lFk4#4pDaEu57{uxZ6o<< z@qI6#O!+5+UtxB1p6~D63y4)H@IO4TRBhX*zW{g%134O4{TKiM002ovPDHLkV1hlF B{lowO literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_pie.png b/www/img/icons/chart_pie.png new file mode 100755 index 0000000000000000000000000000000000000000..fe00fa050a833fade14de445c554b21ff2266632 GIT binary patch literal 918 zcmV;H18Mw;P) z)5~v^RUF3g=bd?{7w4U(okA~6ODQu&AyTU)qaihDP=g^ZV5Kfhx?#trq@YHED?=nm z8X{F=Fli(%K&l}`AXu0%WX=(eO^E>Cfm*WCSBpMff|A0@P&0}b- z@vu|b_butF9--78p(rVogpgvCg!(S1p8cR&zh3^)8!?W*Wjq8aNzH zSpmoJP*=GgH>dKrnER?fW_*%Wj@zr0*Zui{_|PN3iC>TI+Zak*tPO9#w7Q3JJCC3a zV5jvo&RzX%snXq-j2JJCCKFaPcWV{5XYKvx54R5jK;Xmiqfw#6K%KP_V|Ed#`y;sT ztRPX@g88|-V2s`i>)nU8)Kx_5YbwyzXn{x#yz=&N6aWHTQcq{~E~`XS$nyzsS73cG z3QL6WP3FRQEO`2wAm>1$IgG-LK(wkHZA}qNaO(LBV0(k1a%AlSlq*pcu+U!h1V)QL zgVw}BN1A;dn&m(!J1{?U7yV-=mn2ht$Ch6^GqI93 ze+WNbT38m_O&H+JhxUC)WkQh%K3KqM@|PRK9ha^TE=rQe56?E8-@O!mOY_{s^E~~+ zrER?s(gWuj#5~m2gfP8eLrE$<02qDwZRYF#Q&Vl1x2yzvG^f0?x!E#`zrkO#K}6uf z191&uyJ(I-hT*FvIFc>{fH_#|IIB4w*PKo}@s=_t-U8qAV2))0#vr+bkRFJD&g~Ht zCg+jKWo*w;eE?u;o0&f2Z>pWiGPkB0;zk~!#wPeSgJuLNI7oO%#KI^Pr%}w^geyh& z?9h=#00@LWKC|erv2Np98pst8YG{N{93Bxo5>O($wzBNzVh zg|)61U)Dl=s^Xhk-THM1{5S%=@JIV|JKj0xDM_xYzV}>pVm|e*{jX;NfaR@ES)NqA sTB$w0a+2D0+Z&ca0*O=8=#zfKm;e9(07*qoM6N<$f`+80v;Y7A literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_pie_add.png b/www/img/icons/chart_pie_add.png new file mode 100755 index 0000000000000000000000000000000000000000..bf0822ee1c2330582ac8d5d23bb055b7b26b1843 GIT binary patch literal 975 zcmV;=12FuFP)N-T$EI`5GE^Ew&>_I1R3ak8;ov#X^Zh>GbDrnv!rb(x_aE@u=jNli zuFL(7OunsKIn^bV+9j1}lFC9_azse=y;tpcx7d9t|HGG~CJ&_D2YM$Cw^>>B*^|Ys zRbF2KSKhr$%<^OE zGO6quHHDSjS-gp1h_?c6`~Jn=XHn$QsVmyT z$n4LEwA`1qd`BBL1-&ZkFu$UhU9c^6z3czOwQIRd?+Ek_ZFC9?w3D?8_xbdv}_5h=fLfX!S-a}Ro9Hq zJZ+9Xb9QSt(y}p47h%|xtn+hgDTA^^;vQg#&%c^D)qi9@_U-01ZioQ#2O2rOxm zOnptmmU?WDO?~-u*jkq6Z7l$Ac>EvtEjwwWL%TW(@oD_wavWh|3xO>pN=TCFMf{r1 z3$^e4!Z0uMmpslk)(%#EGiZ_dwg;Sx?_4%?L2(!x@Le^M(>d|{ZL^Bn;6 zoa^BF(gc9i9(?0!ZM|+=s@qj+m!q;xZZ20BPA*I~cShc+sCwkhmbzAA;q6>o{FUK} xOU%!$^*#jrU(KD79^iE#2&93&D<3T!{1?J?)wFqC(+U6p002ovPDHLkV1jg+)R_PP literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_pie_delete.png b/www/img/icons/chart_pie_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..5ab9efd55489c87196fdb984644e6e06655d64b6 GIT binary patch literal 983 zcmV;|11S87P)v*Gz>VKO;FIU(QKXc3 z+_B_gom--t39*w2+QtM2<7}8R@slbx9jTO^-p_YO2%boJ3>+Olw3(aYn~jz2F;(-y zRBTlFS7Iuc!i98xX4%`R&(a)HWD>+;SgD4f zGdF%1KQ|gtPuybE+#9bAAf0CjRd~_3Ca5z)yZ-}>U8>uQWH}9Caa6c;G*_(0aOOH_ ziFKJ=JKnN3s0!0T?x8?tmZK&d0HbUd0BD4=4P3F{f`S(PIn;Y2_-8tcL^g3c7VKY5 zDQ}I0{kWMSAchTN$wpJe4bEr`05pRVTJ2lmX%D`Hx%@r!jT|j-LmWR;eB|5<1gF_YfI-jxIDWqGSg!H%x<$2H5}GpC*6K>;Hk?u!lu{68 zBR+K&+o#T8*}@$x_`(R8(IW6Jw83o4X-R0WB=m&Y5cQZ1Q8=~@Z6pa81~}n}q`t*Q z`)4%0vk%_bv!LTch+e(&>XmKoE|)ADno}yj#W%HjL}LteG7ZO|aLNX3gMu@H@YpG= z-_il!?O&jr*^On>gQ$;&RjJ7LUG6VV&O0Szk8&#kOr+tiSp|m@*p$Mi41zKQOEd7* z#DK1gKyLx~a2lGChUzHw8UXmu51cEtZ`q-arM|Ko>SIpz3V<+3#=!+eQ4I((df5}W z_#QZ&1p!c6QemseD^I?$*z|&KbI~J(*y#wfOqFL&e*vC^-G=ZLX@vj)002ovPDHLk FV1gBE&J+Lu literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_pie_edit.png b/www/img/icons/chart_pie_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..3debc12d5ee0b8454165cf2ef52c976c414a16a4 GIT binary patch literal 986 zcmV<0110>4P)jsHp9U>bEUr=&5Gt!&3TRri2n1-U zTm;cl1%x@3A|OLSg|^f}FF-+{1yod0sQpVz1#)bOntA(hlJ~=VemUpK^H2a#-YZ+5 z>UBn&kdmt8w((kz%*HfD%pO)S+QMpr`3J9NE{MJIWa0n+d-UOvsY~$@YEBN_9;ij5 zr3s4R26VjC;)=E$gp4MQDIeuJ;f|#dW&KxiT+0XdQ7UTs z{>9!)JFSe8;vXYR&DPS^ad0mWf)MF~J^)0W$%{{`Pms;S%@7$SV5y@Ku8PL_o>E9# z#MmL-#$jI=l4jSAL17?KaOVYRX&vNt-owT70C!)3qW>0(Oqan_Mg z#Xg;^LgUY2;=b9NIy~ovh$~egSD-cx? z32ORpTMp!z?q@5Wp;}{ur1Ba}@(?_}Aw*Y+KXm!tVU(lw;jSB&I>cy_Akycdvabf` z>P6Tj__c(Q+e>%%byO-RQCwYyv1T4@`dWZ|ib;Jn+A{;5Q^K#)ZOZ3rTA; z?@OPI4RMNCV&ycGndA(nTc>DyR`W7)%vK{GbB+ga3?75kJ*Qq-1eDT)GwQscpD4SE z{J4I(RJI|W^}UPzSJrfBC`qOy<8{bBjAnXsCJYIfbGBn@fC=Xa1NNRo=<{hH7zxGm zL!9~h#G*IHjuyIDEZ1wH0FxCmSmk9HWNyJ&2k)IZ49?;Gcx6mNw#aC-<>w{Ej2yhi??9k?7RKdx(!2B zqCWt;1*Reb&56tLupkh%{LQXE>D=?*P=#J!JtmJPR;}?89P*xXwM*bqN7bJfg$X9H)NvVL#5#asQu*UTQh1&55X+otlN8~^|S07*qo IM6N<$f|4H26951J literal 0 HcmV?d00001 diff --git a/www/img/icons/chart_pie_error.png b/www/img/icons/chart_pie_error.png new file mode 100755 index 0000000000000000000000000000000000000000..7344174fe9ace47ea4f47bd3202ff9cdddb2d8ae GIT binary patch literal 989 zcmV<310wv1P)ZI*IfwoU}x-gg-1~(b99V%+GpGGY8 z8^{uU$6!iFWSvjuhK=!Aj?@%GQLY!1(0xw?gl=S#2?r!Z)J&dX}_ZNc=!eVprSpJN*DI5EHfY;rNK z{JLiC-2$!qnbPnM)X)Ben+q?2aRr=E82}VrC--{q^h9p_-8I7qJ9%WX^h(p5_bs6( zk~{VIZs-2(c_n3AkX>Al8rKI%`|9xEVIepp=_eC3@@@CPwL|S=;rg5Dnqbq6d&np+ z``D7@z(SoB-j;hi&zI+i_4qrK*T0FK>JJ!6jlp2#djL?n(vb^7CntqY&KTkHEF)YF z+p?hC9>h`=-VW8iDuebRcBvcN4!(~((hKjRNlhca0{|Q%qbc@M<_)$rn#HRsK$63- zH3HqQ!xf6W?90(%vwMKBVP$$zvAYe2YGSk3n>#50IGmrKow1j+1JbQHkQj!us2CQ> zU~ZEMe<%W5AAqn4qAeR>^9i`!DXiPv5;PfqcU22ZjeDLGlzz#>YbzG3B{-X&MbUZ> ztV|3-aKx|OLA0eBlDr1+ynsK?AA2ZldyllT#`)?x)nfecXlwS-jR!Ah$&L{Sa~^qdNE1k7nZ!vgDnzZR{ZF7F-cgf}WVh* zAu>`9<<2tvIX{h?Q`hp+kSow_~4Io9a|l>H+{N+gjmJ6ISs{@ zvEQ`^U;g^Znlszc;+CEpZK-v6r~cW*zYFHkfwQ{@0YH9#{G68w)?e=0io0e6zpUTE zdS(N)&Ja?IaS%e^*6l-YY%eeLR+JQ?&hG-HqW|z)x4i%$Tby<`dsz1}^#;-R)iDL|i(5|Ai}a z8)NDZdVO^1K5JAV!6JFs`8>E#At+NGEU@U`zs=lk8oD>Q%qf5G>_Twh(3*b2wx;Hu zw#J?rYB&SNbFeHMl;q$maUii|LU0;=01*1cHxoDdF3#6|yM06Hro@{0(J0er-9_*Q zgA;qBKV>$S9bjoUYUmJl_{$MbE@PKxeYLfA{-8*y}cc6ZEY}3liFe<3;@N&#hMBL&Km>Q)8S_idrA7* zREgII0GB;($eb1Q^z=a2bpQY%1hOotilPhxKq8S~(xY$eXxP=PS5XqtvlD1?fN3S_g{wRk)(4-XG7J_gj+*DHR%zfsrqLBlZ0G)+?g$SW%= rF9S%FmX;0zaB$9Z$z*bw5Yq7Zkp%;s8}r$h6cUMpt8KZ&`memftw9r2BH zXZp!+CFaEnJk?xA$eKJbHrNPn>;Axd{TeCT;zL2Z2lqOE#$fse--k~9GCAnb$WrIY zUzF=05;%7ScRp;-^ba=g4+!_yjOVxZHrAy=-Qy;3W{V_ws3i3@rj zN6Uq**d4Ifp5hMksmBf!JrmJQC(GkeNV1GOW##ZtQFwF|H80+P{}RL%{YNk_%ft(I z#;Cz`v~ti@ZP83cwQ@*mu2Dwn=d>z@4RV(M%#h6&LDo!N4vuc zo|;?G=MQ0U0&vMd?WX`v6t{tSSteePbgELlMO}xKy8^QHBD{2ALkbX%5TpZC;3a)d zD?(MwgLzpdUa8!vFvP literal 0 HcmV?d00001 diff --git a/www/img/icons/clock_add.png b/www/img/icons/clock_add.png new file mode 100755 index 0000000000000000000000000000000000000000..598b839b818bd0178517bdd88669bd8f9897a5f6 GIT binary patch literal 925 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/clock_link.png b/www/img/icons/clock_link.png new file mode 100755 index 0000000000000000000000000000000000000000..481cf04c12df9c3a81e58f2b660566059d55eae5 GIT binary patch literal 961 zcmV;y13vtTP)=R~W}{mY5~mvTuu@_L=O9S(e2Z7eNN1X^TnY65PZkMq2E!Myv#IPD|MoT56%$ ziZCq#3bD0~B5HgoEtjrXkwUE?RZ5qlvz1m_+VWC_|IRsa&2I9$dG2$b|L@#;aybB8 z>K69_K}qlu9uYpI{r^LH8{enx)0?|Yg zbBPrEp#-|`O~W`8#MK*3@b+w3o^1crL$W#SAdX+Wsj0U3(C!SvM0TUs+jtz$U%kc> zsVT{I;C%ly42~B#W#aKuhwC?X2K2VCZPZb9&4=@M{Fo#=r&rgJOsDaOu>%nzT3B9& zyj@u+eBlL!%m_fgqlS6R2;{u%7BnBYsdc26A(AKW2jbs!pXq zc^yaEhH$7_i~zoPN$R2h(sba6MQ2#d`+0xF4aI$ zRRfRDhZCpkQCwUMi9`auUXR+^T2>21B8c}NN>YhJp@?Vy_05u|a^YS{MyaZ2f}_ng z ziy5>oEG$H6Y3U;>C@(LcXW{<-{?7=>fq?=nceM9W+x?0x=n};ZJH45VhjX-Vl@c$LMez8BK{Fk5J9h%Toeig^+qC6 z^g__y1W_;*DNWEus)9z4+SUg1)0oC4joIC7vYAb0XU;b}`+2c3_Q1J(AKvr697Ai3 zH*T1~Y2YLvK!56l7Va8v+-L?a0RixG>V%#HFp6K30Nzcsz4YRq_Sf$57eC9-uDbJI z+2<=j_l|yQp!}SfX=};ElTC)qzVjC_&~Q>O8@VqyWgQuO(>nBgYiV(G^Y-#w{QK4m zj+2b2OH={yLlfnD9M2Av4ng#OU5KV3IF5B}2ejooI)NtPq- z?`))DuZhNB!;ScDc8#zuMrz|c_j;p}*q)wF>e35_)|$7^U3@>*aQLl`W`_pRJbS#I zqU%!deA-%D0H|pAe0+hbqsiu1DR}YsK7QqqQzpP_rS-w8hU%8$zOE+96-^?MVB))P zDY-782$v>)Ak(!UH}B({`*2nAQGhsr_+EEK8MsoVsi_W$G%4HW&e9SSmw#gFkLx_~ zVS6n{=fPHP-MB_}Wreg9iQQRe ze;78NIdl1Ua|bY0+A3qjt1M>AM1~2bMehTB#7u)sCPPphzK4|c^OQp@1yvu|8^`1Rql9jVO^rWPyq`j(K*<%v~I4%{UU zM2JGsN-0BY{XYQU!&i^ptgo-P^Mzt`dh}*&#;`GC7Eh;ZfG`X(tBR_Q43XNODWz(F zv9YlH Bw}b!y literal 0 HcmV?d00001 diff --git a/www/img/icons/clock_play.png b/www/img/icons/clock_play.png new file mode 100755 index 0000000000000000000000000000000000000000..fb4ebc850a94b2c8c59502f38230ac54f164dc7c GIT binary patch literal 943 zcmV;g15o^lP)GE3cNY&!T;=j^f;gxRLSB zG&}X{iKV^(TLqKq((nH^HB^n^chQay$`D@KFoIjnHWarF`VjOrt_N+()gGrw;^Es) zekWfGF_*F4W6rycY4)M|Xov1W$d9~teRyOXfP(u9xvB$sk2`Shbq^GVew4gr@kzaP zX59LCdg%EwGkF7;F9pnouEP1|#-f#;Y_{cdNG`6*NqK5QVM8yJbeph7olboIHi!w*0{lB+uni}?Wrdw+^I36lWz9>_zB+Q!R?Y#*eJ+7IfA?SK}c<`81b)DS%WfNkkdw7agekd(LJt;LA} zdbHK;#S3jCdh9L?O#>;7i74;R$JJH|5^G}+nRTnh9}srxzBoes97%U|kSfg>rh$!m z0rw0++Cc#)*?5$g^H5Ak8dDIh+>J>2=C!_n&;)r9(Xr)x6+{IbvXosg^g6)PJa~^6 zM$(5Xqmkbs!zIIM{D^?Dr7 zWwB4O8@cTnIMbzn`GdXciH?#bSZFs>;4sc(r;{{_Ow*WTd* Ro>>3@002ovPDHLkV1hPn!1DkA literal 0 HcmV?d00001 diff --git a/www/img/icons/clock_red.png b/www/img/icons/clock_red.png new file mode 100755 index 0000000000000000000000000000000000000000..2842cc3386709236ba7608965c716054c08ecfe0 GIT binary patch literal 889 zcmV-<1BU#GP)Q5?pHNP6ih=t5yPA=98JOh~fJLk|&ANKv*VsNrUUhFJuyu9hv;ma*PeD|1sb z>Y+6B(ON1k?Ls1ni`{d>-PzgMnb~o6oZ0z0Gv!$Q;deOv&;R@2e1}5;prXCh96}{w zm@q_`r}zJc^cMd)A0#Bt^eOfsl|Z->eQlYT4n2kVDmx(DT>U~VF7hfxg^Xe?V5al) zynOxgXX2ZJ(A21nA@hTTM8hC(k2=Q<9`(zUz2IM1*zk>|g6OOU-+UcxM-$j~H@L>D z;4hRR%ez)LUuWzl@>xPK8D!k za&Y(WfN467V8_O|^!>g%*_GlW+GOfeGnM(-o#2~rEfTrgwGbb85N*GO*u-}z@-)<# z4C&if2(B84Ep?b|IE0Djq}b=Wx$lTJ`FB94jyR)EJNQR;5p8LNUaG2srfJNS7LS8- zTtuY(CPJmTV7G6%Xk?%-YEhw=YpOxaQI4sPUrbSJYb#_~HuimeePG`WLpqTU#!&?> zEyHUX=t;9}ZfJSgh)*k~f!%ILcXu}`Dk?BEGz5WRq3y^3?Y@r4hIGa>AkW0GcN(D` z+6P678DdG2;B-0-@yN)C(c>m*XqjmUHj)=g-85?;=j3=JwU-eqIgaq#VPjZP6buXu zKoA5olfaXHNQbjPSJ@C=vwrppvFsz2eEC^0ogT1f$`DuM_`mcXW3}REYYRfTxnNeM zR+ex@MR}N5`OPnn85Thj3{Lf|nei9p{NS07HJ>oP0~zDYoo2U zQY*UdG_Gr#>AG!R)-|`>)Lq@#-Pv(WNA2x=lUX$I42N&d^B(3f!vWwrpK?P89pNB8 z5X0E{ztGvlf#)_N_Rl#NGI2wRGo2M1zN-N7DxThVe$>T8uJ!~yvCMXQ8}eMg|H zHcg~{8!<@>@ZaT*NVZKaJ-(;tDBlwLXq+dfTLQRJ;m3{YHVsyv7n)FQoTY@FdPT0@ z-%eg7F_iP(xhX`-)mOUQbAUhk#yX54eM!XSJ_mZ=7p?$_YvnQ8bO=DLu97aP+8-7sDkbeT#N*a;HyK&4Y zU}wJdq_zWg+mKz!A9&!zwdXF>(qyIgCuBvz)x3Q8DJat2jfXGZLTCu%l<^Z-FLMS1 z)?^A|ilGXp?>OM^QW5O#M-M$XtkdJR=?M-V*W;zt24`5szAPJ9FLMS1R-Ae+Zp*bn zmv2Y2tWronyx|B=WSrAv!Tt#yy}-wSianX-V7<&43`joqfM0vT41HlG-nqkQrI+?b zR6OI$&?HLm^#L9Qc=S1hecA89dYLmAkaXadZmI4u_FlIl-RMFGEi9-4k$!^e5Cur< z)Qq!%g+4?V)>j8{mxEFkrw1t}Lwu{+bOO=O}tb0*s3 z;?SOygu2nA{{~pC)+DFXi8p4UFL75cX74s&?p~7ytGzT$T(k&nQ>LJ0@?^9oCZZ}j z`nOzCQW8VRZnqmn#l_-`^=bOJwMTeD9Dr{aGX}l|3pCN2kbrOT@hFRm`W;YEP!L7b w6FtPV|9@qMbJVChHnC#lNKLd5{D=|3Up1H0p?}@CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00002z8@H#eso9vK+4F-h&nJZ&{G7+WHR>s{e4_qTwrf+4t zo}Sk7`8;yD9400vG!kEtGboCJ$;nB0ydu)MsC zrluyXzP`StsD;JFMHe4lUth<{$_gY&LO2{oe}6wa0=0$N*;!HDc=xP zGnYF%JCJ1=$z&2vr!(Ey*l1{NZ8iA){`CC(ya4fcpU-#ccDs+;+S+6tiPf{SGhvr2 zQ;--M8bW(}yWzS@cXzjeG60KH`i!KUM1jQ>oB#e%Zg6L7WWGu8f3f0;{|@fi^gbbu zMx!mm!^7J4_O=l7bf|2?RSyLh4Jr*XM+s*`=%WZM^9Z{oocaIl!k@|JwX(9!VVt1xutof=Wt6k zLhSxrQ|#b+5}?d#wU#zFH+9wmSwoOxbVANu8-ICvC9OZP{@IRIMx}06RoYSO|-wdx|%W=3>I87B3X;u?cVu^ z;VyxF2;9b|J!~>#$>nkxsI*$GOl#-o=X+S&e!t&$gfL`&i~u zsRYGh5fnus!hPJgpcSsMv2k#EdU}ko0zHtGOC%EHg^{A!Y!*3=Bk!t;!{MNHk@g~y z2m}IwDw1%=pitc_W_G{D{G&il8C{Xwocj8wwNOO=jZ1qtXAtNDN$f_3b9yBRcuLaf+-$^4woBr_S;YlEx^y^MLD~>^I9dCo11%s zD&sf-J3c;EC!nGep|SJt`oQ_@73jlX0pi~POgA7c*kE&E`L}uxFarexVtT!vE)|5s z;XF=Y=;`TUL;&dnsI%Aso($J=5#CyXS6Exkg4gTyWipxP7|vlsL&N?0`ufe@-d?(u zkQ{#`KYZH9i_y_eG49s=LNp*;OMt7gCr{Rxm*rXsT4${yX7A% zfy$qf9&)?}vKa=y;!H;A_w0Y4^U%=H0D}AJh#6!4Va@lZeCFUKFEg9WSL2BK@OYsz Z`4?5=&N;mrg`ofd002ovPDHLkV1fozjIRIy literal 0 HcmV?d00001 diff --git a/www/img/icons/cog_edit.png b/www/img/icons/cog_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..47b75a456a4bb1487dac02c60b7e2e9cb5e210a6 GIT binary patch literal 865 zcmV-n1D^beP)GR@vSHz5C(pPxHny(nM!6aSI^7R#-{J~?A^0H*YCdW>wX><0M=1!YHEsWHk&65 z2EzpTxW}DK*f^ce)R~!?WFk%?;`Pu5C{Y@ z9*YwPJjH96dcf=xJG z*kl}##L?N=83%;ar!Pg^cVqOf0lN#g5Vlp~vzQCln=Feu@%+Ain zAxsXvy}hQ%p)0kKIRWUX89RYeM1w`x^47xBl|kR;=6}n}%d;PbNXFDkg2d$HB$&Tm z{utC0|DU)7(XWO0;TB^4`9-wVaC#H&fkYyy8yXslc|4xD*f81w?^q4!T|J^pT>J`N z!zOX^g^2B+#!yvN6)P_<|3AiofdL_tJahBjw(;Om)xxQMf{?WUJ4;0fJMO^QaUmuX zzldkm(9nR~++1P8J!ouf?5?h^rbixT09(uOy~>BS_9Toi+4ykpEG-e7Pv>wrR8CF~ z&1SQ^k9z?Ck8E=Xrk5^E*cXKych#SXij`csx@x zGc!|URR8Z@-ez@mRk*aYR7k)D1f1O3+Cn0cfYE47n$6~dk&%%?lgT7JmVkge2$-9n zpJ&`|cahWSWTMe1B9RCPkQp8xE+RzCz`y|4+uPfbN3gQ8A`gedNTpH;g+d_UJ)6yz z4Fm%4`~4Ui8p;yz9;plr!(e=T98FD4@*DwCRS>UPNT$c> zo?c&Hhu7h@aN6V&1tPx8*gZ6@Cpc++uq*h z%caUBNc8pfL9JGoQH984W#PvAo3T{LfK|&gzA{=34Ob$Oa01d}ZgX>!_ec+@0!bWg zZEZY3$Xrps^HGnZy)XhpB3Q?|L8|5NS5;MU0@4z1Yinz~tE(%$yu8el&>VC+oqM!b zUL6>`@#Ao36o+40kdBOD!6?DqJJo5CNE9zGFZbp`ByG}=Ao-x^>hZYYdRL3xpb>|0 z6`ap5;#bOuW!+V@D=SQS@4#R%DEj;RvukT>Jeao2=Q7}vRgO%u2W+?sPHhPeVp4pM znlagO1$C0!>KuVyub0#0>B}QT(5O{=_V(-eMuI!|d>{K8qCYcqi&%MqnBx`RKD=zn zdk0FTvZJ=PmaD0$VVtk8J&HM7koo$CSKkj+5(}mL%0|UtnPE5^&TTuC#b@(A6Cn_a z#p1%bmzNUkZUmXM6^BWZLDKNgG~wu{ABkB#Z1U5FW51~DdFk%7wj^U$U*M)x=Q;b+ v;*9-?keyPTVF`$}%1*IX=}Fe|;KcNA$#nLD6jKLZ00000NkvXXu0mjfo}8uk literal 0 HcmV?d00001 diff --git a/www/img/icons/cog_go.png b/www/img/icons/cog_go.png new file mode 100755 index 0000000000000000000000000000000000000000..3262767cda95a217ac8d3fabf6c4bfe3514fd770 GIT binary patch literal 859 zcmV-h1El-)HU~Z@BQ7|ITsWqFPt%czwZJk^u%JZL0Ogu z7-JwwQn0tTclx3}?kvID+L{XidsxQ^&e&|W7P?hu`JbU6)Keq zD2hUaNxZkB72a$%4^2)^`UtC|A7te-nGAX1Xrjep5qO>_@7ffX%SGn`-ED7gLpU5( zk(@u5K{Og2Z)$29rKuELp-_NyIt_Job>MI~K&R7bgynLX>`sh~jA#lt3}_YQwqglZ ztJPR4mEiF3kO&v?|I7ONdO%xaZnyg`4MVH2u&{85WF^F8xkx0!oK7d7&*!07ENT-s zHZ~xYO7;1CzImGB_xm6GXq~MiVV0C|gzZGQ)-QC?rN*&h*fy7fxUu2>pgCsM)-Q?tMb$Vds z*E@*sEW?$R-d!Zlo`yI#H#gqa);3B?D6pBWXVBO67?`R6Qy3_qLZ+|_MxhlJx8`9r z{Xs@mdTouNQ0N7+J#TJqhNGh+O#w+J@OC~45~`3D2_z=L-&zrFU%dy%Qdzg0ic~cM z%s{~na19L&^isj*=4PpCtqL-e!E)J#V5X7%DWt(#}Pq3W$oGSy^Pc4j%jrk7_ z4xV5*S(C}slXQfB*Dx$m5ut)=uA6Vdoof#vmX1Pr{o_H2ueAT3P;2Ktrs3gX7h2gv zE62G1jK||?p|odbXLH|f%y4eoeRKHd`|tRw^&nXM?`u5!c)i}iTrM|2E9N*Z__gcJ lE2dmBR}@y4olxbIzJJd{=EC=vF*^VN002ovPDHLkV1lGDi4On( literal 0 HcmV?d00001 diff --git a/www/img/icons/coins.png b/www/img/icons/coins.png new file mode 100755 index 0000000000000000000000000000000000000000..0ca9074d66e7a008dbdd265a48ff37f454941be9 GIT binary patch literal 732 zcmV<20wev2P)7$(F5I~EPw2+A2=20Sy*#|n7r8sf)7*RgqMLv3&KWmL+^F4r z7i0Z}>kq&FSJ~Z9+<5!dQFwCOz1ndvw%m_4J#=sT@Q1U19`B}1iL1?~3va{ZF~|VI zfHw0WI@T{zdi2I_>3m@YYk3d;l(JU>d+bPFLOo8G;T$3)1!qp*$dock%HEEk|V0 z3L2&;r~p>tQh+yD{T!MxBF4;%7xC6JH1CtlE}+w%Xkuu&haUcdHC?=ZKr(+GZJfIQ zJ6@GU%>XYSae67{=&NN{rB<>+N;FbBA#_{A0WZW7cXJ0E=}(_?dx9< zr?bEW55s(NboZ^^cb|S1s~AxnBh?-gQ{Ob@*3}OO`vCi&FRqICO$~lSg*6r5QDf7DTmJy^bFNy&p3d3; O0000Fn@9 z6}_p-po(}ZBq}nQNbG73P@(2?NiZt6&X~)Q>%%i4kr8qQ=3COEo>Z8 z*gxJ~L9Bf2mp|AW?4AJafQ|B5v`GBm0)<^C(Vi8&d>zzaGr9rvL%;kwm?qdJ*cN`F zOcqt~+Pr7&1#Vw8>eV~{)UEe zBiv}!KK=I6or}I0!A1+%jcFuZMU#K=`u1Z}C8^y<qlji`q{QWr=E3G!ag_G z_nO;N#PJ=nv_`o0C*ktKkBxus*Q*bvceNp!u2=KJyN6kimuW;5e!ersP&@v~d3bGL zL=5kUl{40IL=1Ccby6%>#?RN60G7VkIr73|1VIEh)s6TUxDXWT zs&peQbYX%;a3Ml#B!N_onSc(OOp=+*$GtQ6-rw(iyA+ctc;M^~59e`ImCZ?K$0t?v zp(>*);;E3R=sd!;{%=9RgLFV+mBTn)0(Z^)#jt!uQqRedPJ=Z z_@5kt?prW*$m+P^HpIy1o3}jyVnLD$PPPHs#dek;aj|Br?*BYcZ1W$omHSB2M&brR z@i1cGBOeHEI7Tq|C7LWFK_8-mHL?|u%XCHG#2bU3EBl4g;}&n{Nfsg9Y@goGG15*HQ0<^0KM#w90$_`+XUOjFN}~y z>v--w+G$~<7J)N@&3Y(U14x9LHfV|@tB`guM#v3KqWLN|tg$+~LFF&Q;_X1JrxoDl z(J6Do7bDnc0lV=ONmtP14c_1cHdT_^b2N@vd)6STjdAGA&xEA|PG@#%&-|n5>rc)W zCS02-PEf=vl<@n%z#sSq)M7Fv9NtH6`!3%6U1jpSQ{)#P;{0-&zVbcB_ZFSFW`6Xo z5ggYgix<%DJ2YJ(96NzY?~z4o*m@OH7xJSeIC1g4`_)}Yo4~gjzjfATPUW|Kg#^Q( z<;X&i|^ZNRWr#pPVFRH$(hHl`Jc@d3urM&Fn54lrL`PX7e3_ppL@2%x)G0ch8 zX|dcoc)q>_uylL4RGZ7+*(k3aAtI**(xB))9@w8d`yYJHm@9=_7d-#~002ovPDHLk FV1nt|Z+QR! literal 0 HcmV?d00001 diff --git a/www/img/icons/color_swatch.png b/www/img/icons/color_swatch.png new file mode 100755 index 0000000000000000000000000000000000000000..6e6e85212b85b7ba0918570c2ebede3047596237 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5iLZjC;k_h{kHThqfC`(hFmxSO zSd?`bB$R({-*5T0gITA{|Fu6pn0eqpx>}JTL$UWimE@yNe}L98c)I$ztaD0e0sx43 BPNV<; literal 0 HcmV?d00001 diff --git a/www/img/icons/color_wheel.png b/www/img/icons/color_wheel.png new file mode 100755 index 0000000000000000000000000000000000000000..809fb00e5aa1f28726db3e2a5adf8f536bfbcbf1 GIT binary patch literal 892 zcmV-?1B3jDP)n`HO=N{yXhvI{h!_0ot^nS)JXfldwbvK_6nsG2Z&Wi&v@PQ zheULFT39nvnw}fe2u3u2dsOe=oVI#j9M1QC>zmd3XI9C7d+1ER`oBP|zA^0tJC|RwkIug^e1fA zX~N2H7aFgMFJ&|`u{>vFkyaX=K50U-_$2WeLXrR?y%y9osP$m;9(wLDa(L0IUjO100%{ufD~Y>02&pjbm4v#?whc82VKwMSB#SqZE`$mB-jcCHlU+0 z5!eC}fZ@6i#^osNm{8QAUxQqp!Je3uR3kxXnuJ~O)qerH3OWj$UL38Ff>!fEx(x_D ze9vUyrvmBUlf}BOj>p;pw*yU}8i3vdQv(|vr;&lW3vL^{HjGO;yJh@AvLL%V=8X-d zj-N^keq9GM0OdgtfE|S-5NpMdyD8XjL8D3d)Ci3ms|*JAHOZR#{F@d3_1R~2nP^IO zx1jHVVL;UcM?t(JNH>#EYr=^m)YgmC{@kfR@+(bUGOoFIyidRT#pP%sAgjUt2GomC z-GbUC?3chRN8#8QO)J9o??pQO=z9z5hjj@+!++`xv!lb9;ml&Wvph&Nw86?bNyh%=cqNQD8i+$LPB!e5mg zGpxOzX7}R-bs>C2a6nYto*kyOG|b@Xj8Ib}DhS31*TztPJc)IANu4e{-2WFIIaS?u SuzCdm00004%P)i2vikyMR~)n*keF9=!Gc_n*K2@qsNT?}H4v4a974 z1ArVJApZ0B-@pGKzWw|E^3%Wn&p!V9|K$C@{}12&`+x7vzyG&i{r!LE6~yrB1;;^# zm?0Y=moxPMSn>r>N00000NkvXX Hu0mjf$^yWL literal 0 HcmV?d00001 diff --git a/www/img/icons/comment_add.png b/www/img/icons/comment_add.png new file mode 100755 index 0000000000000000000000000000000000000000..75e78dede2c9cc3b789b880e5cfc930e60bf2c91 GIT binary patch literal 530 zcmV+t0`2{YP)~sR==D{nWel_pb&wQ zmrP)tTX!KGk)Sk|wtZaUrliFMw8)@DB*yUg%5WWG5T6(V4-98P2Jan%`$mH2CMxfq z+T@bruYw${Wles0MWFb|;3xR>p5Y`0A6-c}5Tk;D`5i8(NGiA>_&gYcZy8+IQP@fF zZXmTF{tLW(AMNV7m2gb(;iZIqf*k=ah{%H8=`Ai$Cv75^d>yNTn3+NncKU5>gAg(yWFU6q^MCd-9z5C;@-l1LJzY$X{vI4G2|m$FQQvK%ZWWD8>- zgBiw>v1GpI?|EmK(9D?Pt^eVDzka{xd6!QHK=zl&{!Nfkrw-)wa9%lZ5e+BOkzk~6 zb`NhB39iQI(vgtta};&~Py9F*i3oR3gsTUF{+^(_C7hTDhu4ICg9NR?Ca>sR5R#a$ zg0P~t8SBSO2K9G@Glq|E2nQeV&ZUGcy-m>2zaj()4h827pPD{kBVq5#25&OFu5&K1 zZ$Y$w#8tIM3A+q$Ur5+scugk+7OSALdr=5t9Uh{Pd>x{jwKK^o{&9%j&aTn&d1W2y zExSmgD!@cq5T@eg7*6z|mh?c)uMdeO+6$8zUDcUbEs4eRSQBVl4RdcXmJ6d%lj=Y1 z3T|p2-xQrZ4kh`~6T?s?0c8O|Z8(gLap+Sj$Qc~LIppMuxoDeKhQFQ7ZB;NPdEKq| zKERb8J8}SqUP@&!aZd6*F{tz+w*;+OA#)3PQP7u#!%*&pgIo_xCCgEt;yds5U)P)+ mI@7OINTTfluFUYPSbql#9Qmg?vhGv>0000+d`M13jj6(1&OTfK) zg!qUPVgGHUxLV}I1}ul#Fzc;Br`N~2tN2UM;u$wjO|KGs%@7Q_4glGCOy56_G3R!? z>v7<%+Ya@+0M}rU362yLEYfg7Cb)5SH?+V#Xxtre9s4nKZWn?f-mEDouwH?+FD?;tGeKp(!2F0zvT?C)LP^6Ev*qJN7M`JO$ro7H zs9RU)9gY7Ht*ot^&vZXZDa)Ugf&)Yg1xe0XL6y?}uVE_`?(Q9lvEUEN#mz=NKU_+g eqns}GFZ~5YF8XjkorNI)0000kO-!8JjERGZgNx4o8zwI5pnrkJT^AW7B+k01lLkoCLBu@bfRhnJSkT}{ z5cwz-C?AEk;`Q7|NyO0V@Jst%?>X<@)8|?6hNplZoH}p}R=_wBd4A);huvr*D{8ta zv>weaRZy(zA{a{x)NMK$oUyoq;&Q_jA9Yid>V_!Q3{lkDazCTg+2GL8fKO$yVv7pZ zw#ZdlB3o|B^q?JFdAt+nq80!As0d}1Z|KFR(*lEh^G}{es&~_I}wY;n4d5jAs0d}gj@(+ z%6*K*29I(Myv%_UPWDD&5qS@s3~ZAJGDH vT*SlN0ce3)r#d%-F%SaNZe6;L@E^Vb!Ji3~dec0&00000NkvXXu0mjflI-*P literal 0 HcmV?d00001 diff --git a/www/img/icons/comments_add.png b/www/img/icons/comments_add.png new file mode 100755 index 0000000000000000000000000000000000000000..b32563442dac029c917d2904a9b18699286228fa GIT binary patch literal 648 zcmV;30(bq1P)+T3bY=D1?}_NlY?Ho5{==PS1UvlqjYh_;~Z)+;i@`X96ce<835NqD^>4 z&XOGf0{;@=hx@N*ld4p4l~reDjUrhpR@CV9f@0l`W(F}47g(HMcGd5)tFmQBWlN4) zva0$#ktvJ8U{eF>D&mYUS}ayos$i>R-q!og44#*4SLN7QiqjOoolCvH@_0Ib%9!*{ z6Iog3kb+N=+>-pnU?fMOHjgh#DFJzSa zr=~gCYkDH){NQL{E?_QTF5oToImZ%%?|Kft>?cE#_{4{V%E1ld`g*!OkTk8$ZoV> zKJX^+zklnS93z%haS*(H5Yf4Nh<wEBWegKV6 z>~o(OY$)C;Hz4-DOD#^Xc?KafsKud);N~}=u!W3~T`atL)M&$9vr~7LRrWkLHXNZ5 i7Wa^nT-#rJc;A#1+9e&U9~QBdhb7i%XEvtC8q~e*9 zTGor!c}UBO!Tp8?(pAKoEsCX!Dv~OwaI#?S|7Y+#Qz)whJ4xaq8BjDPqnKjt1re<^tvd-qJefSYq(anuCjd93vneh6K+h(i&yD!a1MnYqE;KZ-O};W0OdWKgI_pLK zle)Hr=PlJ{;*D|xQkXchK9;-N1yEG%b|6WX&N<<4bB3E4Y$IN>=XK}S-Z!3BGt%RR zcEyG7o^?>|EvvpZ=hdbo)D!63ewiH?<=TAz5V4&90#T#$5FJ5q1^@s607*qoM6N<$ Eg00gme*gdg literal 0 HcmV?d00001 diff --git a/www/img/icons/compress.png b/www/img/icons/compress.png new file mode 100755 index 0000000000000000000000000000000000000000..8606ff0fd23c97d71d43afa0bd587e47c1e90441 GIT binary patch literal 766 zcmVZcJ%1+b$|lEg|m$p?$2s-?aFIU^lhS4 zt=5>B*onJiX5((A#g&zdZ;7N+zyNUJY~v8{(NtqH{`+@8xk&m zG`u_jq?FJb9n=hw%`FbbD_m;*4&fCDuR=V`pUsP7fU1Tp7Q?_nK-IQ85K85YX7gRJ zgwtoomKC%RWTO%Skh+*{%b>T>VfXA~9;mZE6vn=~?YHE7)8Zq;mfF}l;^WAReVKbv2dyl8I zZdsNM9oTISwn$ahzw_tMS*<#q^{;+1adq)i5#6)A{L5!4^#~!-uOE5i^$%Jv0}EmF z8*kM!$D7UP9;w~?<@c-q)vuj615`xxpt}~#kmfz_<a!u4Ek1OWvhNg%r^rdTXsY3VK8?SdPP#w89em&*t9`8-y> z{{XWmi9uo#0y2mREC>R)tyU|D<2Xwun+7u3ce~yHC8N{n5>SE*7ca{{mxCuK52M#x z6?VgqVUHr69iApkt_fp7}UIJIX)^0!0b=W3KH zu#9)c?;$B!KqeOeo#x5*?d$d(>1am)Y%kbK4HaZEF7DqvCglmk2%DRMFl4hCO2bI^ zX=T@9j!era3Mj9K%ggW14jP4g$@9D^u1>q%4oF>&Q{%YG^bC$1Iv|Sn?VXTj+j1A` z_4;iBxjK9L%sJ01;N^>_f2ih9=zM1B|Mb6I%0_FShXA!&ZGuYnYi{m5Mm>)<#Bd!= zpw*3PwK}@fZ5>`FlHMWvu(WdP)7sBGH8?p(}ako9KYX(!NC_${+66f zCL^323pYiGbgW{=R3}SA9sZ^M67CqjK_%js%5CkR;me zO?bAIxNg3Ro($a-cu31+pwdB9n{8&kSIhHe>aHBjVXA_CRI@ z^iBXW91h1XCKo*~ZXPqvsnh6OjES;@0=+mMNtWPHly!FDxdig|gWCPa(Ea&26soIrWMt?>>7bAgsH$4Y)5&Bq8mV)C%YB7Y+Jw5j^+Hk8>AUFv z&`yo)gA$EKn@UpK+S;xY$oZXByDL@Ihu$X-O`7@r?DzRA6X`K2l^#WNxC<>WFJptl zO&yXgxs)7>#kLY#ED||;DijJqRXu2EXxy03=c9(D--^EXGrJ@OqsiBFdd$}K z%S6%_$lmt!JU(1H|HXST8NZXhS$l1}(mg$J6&O${e1)u?zBm5_@-L-Nh&J@-00000 LNkvXXu0mjfve9f* literal 0 HcmV?d00001 diff --git a/www/img/icons/computer_delete.png b/www/img/icons/computer_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..5e9b26836cea5f91bc94770592555da48addc64d GIT binary patch literal 775 zcmV+i1Ni)jP)IB7 zSr<&xRLO(9u(h={_FdAy0EUK!3MrvO*Y&f3KmiO&g5y9$Q%*Rnqqp}J)W0Ps5{YA+ zTvAd}77B$hJ~0JmcN`av>kyC&o4^difI2!lYS^~zClf(Ane0=k)bElpKc6BX2ZxUw z7vEG)E-$Y@I=vv+U4C3v=?dc);zUun5HFrTLsj)o!Os7L0!HQJ=8iapNsuI(y-9es z%;F+$U)e1f2jlO+YD-U^_7t#GX63+eQ88p$hD0W3jn@p|Iv!*7_8PHvvwI-30(vI^ z8H%E;Gdb&d@a8e&oHmZmbX1fj6qwoeNU{V)RrBn^a|z_V&UuWTpW3mMv4jc%z!Pr> zm%xmXO$DNUZ%CM4u*7P0pc^%V?Wpaag{2o`$?Tx6NFIQkt&?r+^PlIUHWP#Y%SY5* zYC<4Vg_YqxjJ$n~vQ*du@cC5Sy1YZQ$22W0FB?L#-|wR`Tr9LUW80ZV1jk~)n;R%7 z)Umaq5|d*Is8rXTSggM;cTmU|X_^+{?j(~*gVY6Tf6O4bIRcz$%BxaaN}(A)vFM9Y|u11$~II*CeXV}4Kt5h{aWbSmSRg)zoxZBrQl+iPQ*@N>AMLYl{sL3^s-3vtl?VU;002ovPDHLk FV1kc^U#9>7 literal 0 HcmV?d00001 diff --git a/www/img/icons/computer_edit.png b/www/img/icons/computer_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..34c72fe521f38a62bafe480939dae2f09359741f GIT binary patch literal 792 zcmV+z1LypSP)XJ>QW+#knvSxsA!iY&~)5F#Wfv4?&j69V6gpqF|Hdgwi*2U&^A2P1m( zwG?87QWFXzm)SH{C0BiLH?ek|m1O5Yw!w`uF@yv8xr+$drk02h8dkA3A>-Bayoi1nu1j_>3O)x&67t!cDh*w%b$)ad_`wt0-nYz z$gd87mrOX^^$_z(O43yqS3?&~1nYXtlPyu*Z^3uEo$G?JCw z2)JvCWu%kCA)@!zDOMiCFp*msLv@*jK+|RDKL;U5Hu7pc(i30sBX}EzP{CBw^hHw3 zzVY!7?WIPs*QV;*&xB;du0eX{DSQD5`OG1tCS#a&UB!`x<4j?&x{5X1uDj6R-+w=( z4M%R=eTn&@2S_b{g0rp}TWhK@wbktSr8#%Hlp1Nmxt+TZiA1VM86ykHb?Dzm5Nh!m{6#539VR9^r70wOi!1tM(B7`KwUjX#i+jVe(%oN_dd__z0W&E2!a2tNF?$& zm&=_uO;e`~$}+OqEa#`nzW`#fSQ!=cdA;7##lLh8M%buc7~~I2w(1 zak0<+Y>&vtW;+D$sO&gI#7))$ATa zU9cUVsuuX2&+zGCJO62`{m0})2F$%Zu9IWL51X?cO%H%7| zR(Dg4EnSfS%*c)6m`dblL7~2!sU1V0^AxZa!Nik(?7egoMJr!Wj0OVmZz^y&blkbP zTiRoqIi%BM&uRjdst0Z(P3%ds(}uP35j6*|A^qk)L~dVR0d?~3$jI9R>w`kM+~aoD z)QKT@+t0#Ik5la`T6-E`XJ@d@l|UeP7%M;D$zj{_U+C@ay-Fb6`|FiMenUlNy^~lc zNNyIBFXIFfgrb!J&SMyTa0^2-waE>Da5!8+*3ETvbYkuObu{+egQiZC)Rdgh%|&)Q z8!-Dhip1dU7aIVfP)H;B&3_5|}IFP3a~35lF6iQ+x8YRd8jCpeL9`~Q!*A8(?sN;y`xk9r!hDb z3S(($Sw4e=s0v(~wh>)=PJukHoMj>utihA_H!)**r3y*F z8yAFA;E2`R%VhpvvKL`GRDH)nFk+$7yAL&0O<2ukkpBLL2s5%Pl0Yrw$@Y0NKMUb{ z1MQJ>u&M91V}nO1wLFXcp`%zc)^YjSF*KOnd4iG>4c9N!$@ZA0g=|(w|CAxY-+oPz z5}FTEW7;NG^i|aDZpNCK#nAd4XjI8t@%Z!O#X%t-@OV7cIXef-wy?t+Ca^8Zek{)* zP+o<^>`RQNlBkYj-Wf>rcKbYZM2AS)kbX5rgT#l zih&_Q(57*Qd{Jm>qlr%5QJbsxdHT2&(JZQFM& z%TftJD8n>OfiIPR5oEL3ASLvKLZRE0l|C4h1lNU}O*!Fk2*bleP!CJaWHRj{IU0@D z*VNSD`}`7wy6bYd+$ACohsX@WfI2-rZ8(loK_MsY+7zg1+Cj@$U)PApMe<6A{HBWJ zc>Dwkg$=3B#l?k7Ek6x>`Bu!1&TuV(oLd>t<6n5 zxpz(~j;B9CxIKRDX32rDDpbY9aHJNDF(?$Q9O79JaK}Z1^AU*zL*8iwFZX~62hQ4Av_x<+*@a_)ES%MJ$$?c~9)&6JsOp}&L{S3ag+K;T-%kV^lPE3> zAs8SBbFUHF_Cggbq9LLLp_n-8ll7N|g5?bxO_5~;PhE$jPogRs$BvUj-K8cZH^xc? ztX!vv*{^@^i-u?bmNriUd2&=lMIaCC=qRr2lnA_D6^}bl%jK~w8@g_gD;L#P4&kjq zc&lBw_9U2F0GJ=#GBMLPhj+O+RO;l@(a{fWyBmct;`jR#wbm4TnBa9Cw-j!^hvIBu zVo-002ovPDHLkV1jNh BU;h9A literal 0 HcmV?d00001 diff --git a/www/img/icons/computer_link.png b/www/img/icons/computer_link.png new file mode 100755 index 0000000000000000000000000000000000000000..3859db214765ad84536acf95b7fb667570697ec5 GIT binary patch literal 792 zcmV+z1LypSP)5M>TH{B>uwY0wtGA0+Y*fG8|ORs-ktON{mwbxCmDu;|E*Xo_NZ2? zjaRExg*?a$J2*IC|5W-HKq8T_P{N$mYW1q>F;plCx(*RdIX0UW3k$EI{4F^ik6-2F zj*gC=*49?6f87SN>$(Bm&P{631d~YsBVG<;X_QobW zTT#>S;O<4i_&&A_R@;63MneHhWmXQfwY5W*Wk_Ul)A*SI486hFcWyvD8_gcbtbpDL zK!(X=I%0Cu^Wx?)WA^wu<_iH)mQYY_jz^Lum=xuZU3e~md}DGA#`#YVQ7+bm3IV_y zH-t-I#uGLZwA3op$~L+j?fCL74b^Bzsl12%{e6trCy^;-k%&hdO=JMMS*KRW>wJAB9qB909slU+@JIy5{V$0G~v?V zAZGjld|X{ccXt>1`};+b-|rW`x7Ur4kzs6XY(OCyGvRRPG6O9xE;`+Aw}a<-`jiWi zcW>eI`RLf%P%4#>&1Nw>JBv}@E!3)euvjcOau>W_?=y$PF??rgN_p})NEayrg&NDp znHQJDW2YEQPfsHl4Au_;0)c>C)3glB@_0PxaXRT(0qJxaYinzwc9+YA&dyE-$!%_K z%HeSM`{8Ax5^^+&7~Q@Lp->2RyB%h;Sxj(ucXxvPcClD|zOu5?LS?I|R4Pk~ZvFx_ WAFY|n`T1f10000zR>QH2KN`fNj zBHaWZEgiB#>49kYe(borqx+hj`JS_1d)R}7LjHa+tu+qg(TC+eO4&q(D;ZL8C8o8; zLEfZxiIlQ~iE1b1qBZ2=VhsA0V`*@y@M|Sc2@Wtadv3g0hOc*O(ADVFjPTWAYz(JXS z8MBaa%aCO{h8lvp*ONKIh5Bg|-DNo^;jg=q=uDZ@vodOJXfu;GK`ze`H-VrWK!nUg zje)ufRUJ&ouB2nYB2_pI=gji&GcuBL=+DM-wBZ)fbc7&a9AP1Ztk5)S4Ah03bqXOt zxx}VdK|CIVljyc=oqO1G{;Qew7T~%?tSw{^mi$E(2^Td6>M8+m4H!qrBtj~%w(Y~Q zVrXkVOEN#2&@(U(cX3H&S97B(;-}{)?<>?0)RjVZqrJ&ONChgCgE9%PC}CSBp!+d1 z`bkAqacXYz!94aLsJZ!K=3b*?T#ge1nL>bsZNf4&8mt(EkXYZ?MK0YwH2ZOI9{(VN z&%WPH*v6AY+yG?)mZ`CxE@5ZK2lW}4Pr-ctMRE2V`yf8$PurT4&^p3q*2kt>M8OM& zl@MbQ=U&8BS_$dSjo(q&2Pyd!8`}{~Xr#A_DDL|G({Ha$;Xe@?&|@q4QbvV}D#ixB ey}zEqA^Zgf(1+rQ>#k7%0000@ zcBf_(#ZX_-sEX?*?9!(0{Bl__G*A>pqqyNz-JwmMeLB3br>{{IMX~DC@qV7t3SKP# z`S8;fU;WT=%}r-cOzypXPb*-3Ew8%sb7mA5#*W8%v^9cO0QbA;S*^D+wQoBcTSq`E c0001h|Fw(1Q4#~PfdBvi07*qoM6N<$f=H>olK=n! literal 0 HcmV?d00001 diff --git a/www/img/icons/contrast_decrease.png b/www/img/icons/contrast_decrease.png new file mode 100755 index 0000000000000000000000000000000000000000..0155bf5c0bb0df2d20b1c9d67158f743cea1bfa4 GIT binary patch literal 695 zcmV;o0!aOdP)>d)<)F=Uup^koXw) zd$^lX+9>bw{3ek|{4)BRj2R&K#BR5r2Lb`7+wBI6#iH6JNrK^U2-RwJxmYY-CX>mM z4q^mMa=BcnTrSh)a!CmxbhTR1$z(#u<1wAhW>geKieQ?_WN17d4{Nv`MuK3@;c%S$ zd_FLn%`l(O0SN$!K$c}dAdE&Ms8lM@>-Au>*}RR#VjRQn{7EF`_xn9os}(Q<<^b#U zS`|$%7K@Nhr@`rTg3IM%y?Lb*pi`LVd9_yNtSE|3!1Pk7#QLM^tyT*-j$`SEbpkvD zS#&`Vbf6|IvIb_^G#U+HzNiQFF=~@Arp<&!E))vty=K>R4WkiMF#1zAHdclatdTuC z^#hR=Y$}1i*aB!m#n^+3!C(M3n@vxffsLg|B7xA|BRIPM0)&+sm_Eh+0b-4z3lhlP>ijqV=Y(3>@G1n{ePcPzh>Rb@txK@5f)j3gr^by;*J!Vt3YP?H2^}0d}_~oR8x}F zP+7a)=0c0KaN<-oIn`BFMIUPFOKX}*3K0^y-dJ%y9^n(i;V{Gv`#hA~_=y(=(v$Hh z9@bW#6=DnwYZb!al0($-+uA0}H@EbmB!oc|oqS^W7)FjP-#D&_;wB&h0t_FABhMDX zFoYpm3FmdXFnn@k+essMa1LRx!)Lnj$+Lw8J&aMR*kLPSjxg$cHF+5)JW-pEc15Bs1GuRuW6QjX9FP@ez51?&;seYxIvr*M3QBdYG d7%TMO+&^g%zBmG9R)GKj002ovPDHLkV1hr^w`c$W literal 0 HcmV?d00001 diff --git a/www/img/icons/contrast_increase.png b/www/img/icons/contrast_increase.png new file mode 100755 index 0000000000000000000000000000000000000000..a3e7f5200a762f96b74035926f0a45f22d8c2006 GIT binary patch literal 717 zcmV;;0y6!HP)3IxR-RFpwsgT-ZXG)rg2BNZV+Y(9X?3n+SqH+PP^q{w;SVX;^|4Fm#u!Y=(55^*>jt16WW zPyq$Nd_Lz*@YCruM59sA>2zQ)7^pV)MFI@+noK4>R|=lZW+DOknM{W2!~3OD3G{kB z$@hu`xNy-=MZp z8d9)8MgaSriy)UNVEAcBu$;68`}KMq)M~XTo50dk?02nTS+l^(c{6;s@txS0*5GlW zQ20tME0@b+&b(~=F5g>&3zl+3)vn5kFviW)4#^%j*FpW;Kp>lIrtnq;t75M>sh>plf=^)<~ z2)YS^r^O6n8#%l4J}>9+z5=m&1VRZVlyKsX)pVQF#;oDit@>KHT>wt9HSZFjPy~29 z&ughAz)8F@X2KXBpKk(2+_AqA0nJ!TjR^1=^1*;UeO|FC28CD%7#WZ_%TCJAaY&Mm8y)OMIz{xTv zv-NsS=ku8!kB7kNbfU##LA6?qRjXC`TY(o@zh19|h5c|ikgn@=xm-jHqLoTTFPF>m z7lD^;W{`Kg9c{N;S}s?#-|uO&*$`YABC4vgLZKj;0=!W)hfz>i`(r+i9|v(1^AeR0PN$?YPB*gBP$$Dr&9sLMLZsV3p5%H6&*(z zAR#L<0v3x!z~yq$WHJ$x84iaOi^bk0@cAnE`FuV_2CvskilUIm<1u%{Mxznk?{_Md zN)(Ai-c96lm5Rk8Ll3YFyAU0Z$AXBgNPurnW*pL&iN~IVtNi+^ULCu&uzdXc=%tD#Ux p3j_ihC#gQ4PvPIvUti*a1jn*n;#uCM}X>FjAph?v>HMSz1 zf;3HmQp)fUut1?Oj4&`TKsnC2z=)5XlYE)v=6sKH?ztlXFfxpDv!GF+Q=nI1=tJK> z)BIUKOgy7Nd;3kr=-fVHy#5%we{jeLLt%bvH^RPlC7E$Y*@!h*`a}?GjY$GGq&7@a%@Tx%C8vwF8lXfELN2$TzXkYy*Ch+<~�$xF_*&%15 zB*T_3AX-q$zz}$UIw`+p!e)WS?n33<^>s&1&I(xCtWah->dvT zlk;@30hM|iP6P?&m*26-MFB%#|A5C~VO%V{IK>h&5)otfwqcaoAZ=g@xqS*twq+i< zM8F>m5dn;kMH#-KMn+dml*sqcOVNV)g;%P8{>x676~rb~r8XfEXT=e5{>~?YOAmbz zKdzITiDd+!tv0mR{WeIgd~}QXa<5RRwMm-P ziA0tOonx6Yn5=ejf?oZ#NW-fNn9t`>tyXEJQW3uee2VqU%jL3O zDwV`9fKS`>DOS~Au-R-t(=;CI^%~IC6G8}~xm->#0IXj5xnaBAg4Jq;LZM)Y&1MTY zogdr{KK*_l(&@Bp09dmKlF=%PEEX#Z3*_^8ST2_gVCI0`ZpZt9?&9${F#xSrOT%X2 z1_WS647=S9i9`Y<$qWvMle=3i7I3{@Argsb27rx;18@VDf?}J^#xp0ANidltP!tFM zkJCUG;c)l`sMqTRJC0>w1{7mfbTpk#8NkE=XdU+r1_KC%La!3oeC6?Y43EcyXOJX` zizkx_4@FVn{axYZ-EKE17K;!F1YS*Ka}`uor6_t%0)+@2jYh^eQ9K+DQA}9~Uk*|> zn-w#ejE-YNCx^prAM7yza-4I45g$8m^55K?|L?r+odSTVNnJ96LXt|7TGI4L>d~Fz z&-h8>1xd<>>vgSt=Y;X^$Jv9(As-4y`R%SPp?5wYYBW2LD^|g`7v>f>k`%^{A!C3N&EeR0q1EmI9?j zT<^fuCti3LD9UEdoCoe2BcvKUvD7KhHa~-21gL%Aj#%s&OGVR_$6iSuSoaqp%eN%J z76DWmU8pyEP^yWrwDz7wF9N262N52Jg#ie_jHv7Leqfv#&`?`&#}Fpfom5)T>7B!> zWsOHK0qlpu1b_k9E1Iu8-65F`u4B0T$PKrdAs|z3NmX=VY5BDbP=DEtvNfR%4Y5Zu z5VMpOD@qkb3GkT!aIm-Gn* z`85iZ>7zVE#RF?u>-GjXzTT2IfyTsX6XN-%yiPPHr0n_^E8Hzpe7MH(L!#e?D90zS zP^g}fN@{04Qcb!flJ%iEo~?q;Y!zl{=dXt}`IHwd0cyqO;QYY^WD0dM6YM#f=E3C+ z!2-R=&FDY;{gfv^)4f+|?c7Tj^US!+(gqX%T+i_HIx{<~voklC*uOv1|9t14Z-oeY TX1>|Jb)Dfc3=%9wAxt9|F z+d&sV7i|Ri?b*J^NGvsH()NE*Nyw=rHOq z9m05cXZVv}DLkU1y6J^t9{Ie+&$xra;?lD0_4(zg1yOkVF~Tl8PyD8)GkMUbW%rR#bC7lH zW%k*fs%0@X=TU8A0Wzs(2GkeDrphJpj*`W_=V8Q>S%%hUVMG&|vdP5cv~+zSM(r5L zpk_q)&Qt7?cq5sCsciwPJ89hPlW@GQ1=qU$Sc|6_M~rNO8=m1wO9sa2uK|I2rl?eL zT~6cT0}tkd3eMer$IdfNqs&lA<*}XA&^z>6AT1e~Jc~;*4J*EzV+KU5Yj?Brt{(qr zZ8L5S1Q6NMSc+`^00WL8nY7Hn?e#GOich5aUJ=JG++neU8!4Q(I1!F%48;^V^!D|a z4UC`W{X$aBU{}jyHt+*yo5%4bq~LVpD~Qp(vO#Dw#r{liJqga{D7R4KaEAERXdHzC zu(GYOsh_;Up{YN>64bT|>t2 zQspYQIp!?(;ZbSE6T)gtVKbqg{VOuYU0$?tJyJvGo4;4N@-ba~vSMy|JkGaw^$FY~ utNgH&m+yDjgvO2${t_?#`!W5`bN&ejO$WoA0n6Y30000VN9{w9DwJzd%Gm5%l6k(Srw1f=C@i5k%a|<)Grew%RTzD&|xaqcXf< z9*@@$bXSuRnUR_GMnrG_gFk+>+ij)QYU#~plQkL*gL7`wYBg4^R`qhZto$k<$f_Xo z<#I{K-n-q7Ow**(=_LO_v`{FR`Fvje zCh%1@e~?F`5v|v2G7LjvFc=W3dWbN_cqWrko&v(J{s`D?He|Qk1!*YBtJR9ERvYzt zJ(|zwGN#k%P%@d+p8}#;49X}KB%94HV55G&Pm9Gu2v{Y$-LC8hs*A_t>?u&M*9|ml zyWL6wWCWZ}Ck=-~vRJGF7W(*b$n)iLp-3cRJO#v!q9QpfKQN-6~U9q_TF$F*h9sL-j zNpc$weSXQZ6Gag%5kOy9HfA1@g zVA*&|VjFHeVhIV!`DzQM7F-a@NRTNvNlYYp4z%6NAQuJno^MeOJ!7dzy8e(=;etr6 z4q2h83Vb36o=G4!6u79$u)6u4LoN!;_)kItHmh9g5CP1HxVh+sSiS*Mlqx_uVfwL~ z+}p|}Y*;r1{g* z9DE4_W&SW~qUN5hWN@-RUJ#q3Ngxr&iJp;+4aEd;HM{A>I)B?7>yL4`Nc6h^we^ve z3YC6fwXTqAQWr8=Cd?emR={YnNptkhuSFVP{Q?6Lt^ zqF4A?)Arx1JpP&Pyh<4sUhXnam)AJ@xmkE-VuVGbg_|=vm|INb-=FD!zVlDxJ_uiv SXLQ>D0000yhD literal 0 HcmV?d00001 diff --git a/www/img/icons/control_pause.png b/www/img/icons/control_pause.png new file mode 100755 index 0000000000000000000000000000000000000000..2d9ce9c4ec4b787b77e2407809c8887b6252dc6e GIT binary patch literal 598 zcmV-c0;&CpP)U3VE{tZoOXQ3gborPd)C!*bfsFfgUA%b`K z{k54{z0H}ACRrHvW^d-rdyicUV+{VYtX~gCqfs0|(-=vN2o1PiuPW{>+#Atov}dlj zm>FQRf_YAoB-!b7g57TC=llI0*6TIQX0twmlwz@1Su_y<#c()O27`fy#f%p1x~?-# z)7Wme<7b=AhIKj}t=(=bMjvNzr~MuZg=Ct#TCD`Id5F*FgY9+;-ENndyrfd8-V+sI zk|x?lbD>axN~J2Ai^W%{R^I>_0Z9u6gEF#73lqsO`axO|3~qzj{hRS`0}LC%>-AD? zlFkeU5t@ED93Che0EA(j5rE6(g7f(t5ddbb)O7oPG}&BpJRae6I)RyiO6J&XwmSe5 z5%qypxm=P~KCwUk1<-E^%&v%&sfQfOPbAd^dMUz$2)JWFR zn(5E_apM_H=DRN?Tj1j{9obJa2Z=)=&L)N3y%h6eCr3~F>o%;x+TQ>p^I2c0Y>yvi zIld-=tn@%V9S}8IT_{!R5Z+_Ch0UxTYjubYFr%4GeU;lC74TEKeW=Sl5HvMAeX=Gi zUD%DrWY78$Ld*n!b75@ktedM+7b-uxz>7nb#SWC}9Rsqt73OZQ@HmbM0hR#sjmFrz z`Qn2R+;S%k^W^LfTz4f%8vIhZ??Cw@GT3qQ2$+f;Bm~?nEIi6bESWz7m0cmx39em$$Y&@l88-}q`@)p_|Tj# z*1_TN$urdYuZuK(mFK)s`?7zHi^MWe;3cvrICC;Dz(yzzbJPMi?R@k1RUUs#H=pHg zvrjkZN3JD?ns*D2owV@K;bCSR0s0c1`uAh{pXdA&89xkjaU%7W00000NkvXXu0mjf DW6MO* literal 0 HcmV?d00001 diff --git a/www/img/icons/control_play.png b/www/img/icons/control_play.png new file mode 100755 index 0000000000000000000000000000000000000000..0846555d0ca84cb99d4c70dad80144a232604041 GIT binary patch literal 592 zcmV-W0k7R5;6} zlgp~&KoEw{L*wq6jM9+RMU)_iNO6K~b@$|K=nj zb2!5=4Mjq_zrU*f>U2#vSVnMZ9ja4cY`AdOM*t}k^goWqfa3Iq(>2kSH;P81hAqIyBm_{t1>+!KRdtb~{1AK7>C~ zD-Nov`UX!X6ET_La7f{B_|*cRuZGR%^C`gjd@jmW6h*+;8;{2{8ja|Fzf-YTq+l@k zGLg?!DijI~9$+CG0*bxx-)TO!p6i!Q&%N5)kR|pVJuNho7M&@5o@ZpsgYXg z6pCpqAEgW*0v6~{n89ISU>M4A&V?DNy7MOQX68Ka`MBqf0l?U(ZY+X9l}VLZ)#Om- z;Wxvd@uT21RmKNz1dH$Bj0zp6>Db9B7mX*l{i7uPYA;7kd3g)QVC)rxA$;8vC|jea zS%$3%AWB_OF8f4{mJFo|55c22v$T`7VytGO85j|cC%=pBjskcjxd*)11x{77(<9$R zNrwG!M09PX(8Nd#urDkdGiz{FkfHKZhPUAguyq;A^$wKyj&8EE8)WXSvDl6Q4NN}z z2Zd#i!U*1a7=Vq#3W3jRZ6Z9$+&MVBAqrVEFbBV-XzUqFMNrFnb9RsDb%-T!q1pza zrNBj9g5~vhG_q(g8Ht^6IILQuOJK}cdY)autaf$;u_Hxz{;liNSF+ zP7JVo4aPtM&mF+{jGz3=veK}ME-bIS)D6sEz9#6p*nx(m=)Gd##2kGE&YZW%&7_NU zaJbxh3nsTeLlsIj==Xtu`3s4ZJ3jM?zzC+xEl8DG(CzhM_b>rg=Lda=hWnnX#UBVW zoG_R&W`Q?ax-3JI?gr8ns1oY(%Y_9|I!G4+85=MXv^z2{WgQJlI?w zaoVx2#b| zLX6^UF84fh?wy$kBLC~BD2js0>zp+XR}r`}LU#$3n|fVSTQ&_fqK z-dP1W_0w_)Fx(96Hd?S$6Ag!Gb0{2;SA#|hQKxxo4lC@GkWvoF>433OT)ML_c*YrK zxk(GV+5xw=j}C#*d_)ZQm|^vSE$e_Rfi{EB*{sr@#u0%!GuA`kT6eip5)*9h(VoI2 z7I~jC*1{1PRmB(0C&t&XN#G6@eBuONxMW%!n+~_GQB^!(14SOFz%!m0KGcES_nU0K zx*VUU%kcb!9C_-b+%XxB2spb0jf9EGvCrBTt7=&<*|?4A1r-;+e)BJV19u#CG)&jc Qk^lez07*qoM6N<$f+7R3%K!iX literal 0 HcmV?d00001 diff --git a/www/img/icons/control_repeat_blue.png b/www/img/icons/control_repeat_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..406ec333bc036690d4639cbec70e8f586e977699 GIT binary patch literal 750 zcmV`dI4bfJkF0x@cXCL|Igq$5O2KprVjQ%O+X7O;#( z4BD1bI(<+cEez0UoerJ8pvUZH<2j7y zcZNUt)xrxJYFpmPCdcPpZrKy&*VZ>ApFbcitp@qg#TeIQPnn2A+}{k&#TSQNduHE8 zR1lLg6t#%bX_+CDEg*4_f_v33^v*=h#I2ZA3~EX24{j>CdV}A=`*V zT4vz!`I!OrPI2eFNk)w9XPLPE(JbD&MP{&ll+#ia(bqqy8yG)*4e)6tkBnME*Ypl9 z-y3DbfrSJUUwt@@D-R}c|4op+OgNr~#cI=AsIxgE+;$>~av4mxb*QrFQBlRSu^2P( z#4-pavM8REG5;k1bN7TkM8nPocv)tTbCDe=Sn=D!1EK%memuVc8qO zwkWfiP|txa2~#c~+AY08Q|E`jSGoE#-RjvgwZ5L>o_F>0mY3bqi%w2z>#*|89S-gW g7yS2U`k(Lo6ZXgk;$VJhmjD0&07*qoM6N<$g5UmA*#H0l literal 0 HcmV?d00001 diff --git a/www/img/icons/control_rewind.png b/www/img/icons/control_rewind.png new file mode 100755 index 0000000000000000000000000000000000000000..c0294477171e87351813135e50e05766b5607b0a GIT binary patch literal 614 zcmV-s0-61ZP)jUp9KZp49DjNvG4H?RHybjH%6LlQtR+QmfUZ9|2q} zb1_@3R&Y9<;C{c0I3ABMpUdND#U4V-<+4^P zmE;$|hi&#L-fp+BSS&zQRT1m;8m7~!4xyB?d_FJf0A4Ra+kcClPUnkQQ53O{tKaWK zCX*pLfH#XG8LeWiR_h-DK5r;AuD_5{@H zb&4IwGM39FxLj^tf(vG|nGhgMQJgRykHusLg8@XN(Ps&Kz61{+kB1PTO^?STGGd^0 zLI@0pL%7{;P%IW991cI5$mc2*3I&EG;6f2*N9brY5<+}p0(|FU#zT6!NV!~2&StY3 zjt&2KI2?o<1mR`E%xIkpwLl;se|weF>9m|oCK)eD*v6h<%{X^{d4LO<&*zhW{FoAn zgcONHNGKGd!C+AJ`~4~xQLooa_`CG$*Z8mT4&e|nrfoDRBme*a07*qoM6N<$f-U?5 AUH||9 literal 0 HcmV?d00001 diff --git a/www/img/icons/control_rewind_blue.png b/www/img/icons/control_rewind_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..15d1584bdbb2c26a9fc4c8269aa54615a58a4657 GIT binary patch literal 745 zcmV1hlor z)=Ec^h7>5J3?Bj(D6|X+0|UcQj&m*_Qg!D|-c07sd7pF6opXl(U}#WhWg0W$d_xV%ATb~UcS*dC+@kfS*m{?64KBH-eM78JQAu#&2c z7TM!?0X98;&a@msh@1ehFDx4~_smCS0rm@Z$dv@5Y^ec>Jl}_`uDh5!i#cpZh5&_) z{y|~cgJzZ1d%`?CxkdJIg%by0u(~PqB0%Zdj?maMmYO=M!=;B#0>~5_5YO>&?w*4H z@LRbi!eNPrxg`gUUIeK8JG(3%R{o~|7so$K+8_qZe0Iz($pKd%d&oOhA&AGYXkKE` zO8~w=kN^smCS05H!-WT*2mpbXAJK6B{s*`+;U?8|s%XO8{Hs1d`DH6am$(L0coEX9 z)c+Ho)WS9-4?6~g4NrO@c2FaKCYmmR!DQ~YpfIn+s8pr^?KThtmU&}3Kr*7R^y^Rk z5Xsb_*=oc3w-9KI@B4=+yK6a8uQ@#oTkf1PnlL+NjAm=Zh)+xqld|idFEF=^(avw| z4U*w)Kx6;tnV0ZXQD@SHtHr7{`Y12 bpX>Y!%!CO%>C8GV00000NkvXXu0mjfJYGkQ literal 0 HcmV?d00001 diff --git a/www/img/icons/control_start.png b/www/img/icons/control_start.png new file mode 100755 index 0000000000000000000000000000000000000000..7dd1c07fbade1ec8d985d95fd89385667bf83e3a GIT binary patch literal 604 zcmV-i0;BzjP)V=42{wMyJ==FL^x7*b^oepca+Xm;{Xf~Uy(P(J3T21*D zAjGN=^W}0$$K#Q1x0{T^;Xw2GoT}9-uT(1Pmw*qkc|M;B58k`oj!e^})9EDV04fefqL?N$IB5&$S;dHP}hDFLVh>akw0DUnDp3(#t{3=|9E&1OS( zyMvrg7bTNPIYt05old2T%jH7RXwM2F~VlEOTqhl>IpEJOe`0XNaO*i*Xs-w zM;fqav)QCzHk(OTpMddrEITt83@989KT;6=)$sFvzsthux=wFzy4(=~R{#u$L%LqC zR4f)L7z{p&DEg`t3I&ecu;80x$iEP)ITpohD^Ctgf=H~o==W*|y0)VM;-LQd9lR=YF)677| z!Jh8V_;KSkP5LJrlF9S+j0qkk+2iPm7~x{#{$ZSbvzK9J-4zqYVC)27V7~717pTZd znit9v$VwYJS3ROyLxp^?0)a!0U)oMn7(0Xv0eUoZ@gH)t)d5_J+J%bT22oSJ)g^nf zqQZVCEIYOm2+rB;rB+cID%~N1o%g50=A<=fWgC_GFUb) z%s4&22M=t~3G+RMgR^pz#KbcfK)ZtsdJ$j@d{400GnQJeAz+sPu#&f$`6hKh0J%~V zq(%oWs|qZyzh}{lfSK@dRK#JSxg@DDP3^*cD+kP0j(npKkSQvp3bk_uYtD5My##O+ z;RpcDs9R5c#9;NFP5{z^GN_^r%PX%(0OOZ~7+aNFP*XZk{E2|i#E`vI`YjCrsfz|V zndEsDXoqvug2CxaF}ZvhdOaY6!{9q~KO+jO!o5Vk0qt%NcD}`cvVR;6QTNzYGWq-= zUX+?7V0e7VLW2m6_>T!vT6W8eRsOC$*+0hNMWWwDsLfA)S*X-WV71;M{bCzP)O;^z5vZ zY!uIB*x&E}vNJj4{?GTJBigE^o7UKdzE#&EBXnfjM2N9qUNJ=7T*(!I*v$dVF@wV! zPcbfCO)dpCHwm6#49koVc}1IZ;f0opGWdxBx;Rl@XzG}46S&UgQ6wI6lQE987w+r= zQ{sp)?}bM^PSu zImdUlKjSCCE4u7+Z)8{a(f*WH^6Vt$sa4Pdn>Gm|hqxOd&DgzL7wR=Ny zr>K3{Pb3xpRu)a{!~pxkvN5v>H{?FlfAoQu4ArC_RK=cUva=WC?yvFKjtvbQVdguH zW&aC4ZFY(9WQu1%h2k`_XyA-}%`(_CmTH1G9&H+WxB<7lEP>07F324X&LtI=*Ebks z(O^1xbS&VonymqWF(ZPe(4cg#Lb0wAqrP?lYk_qESz>U=ricNSk8nlkTJZI`2;B0p zP~cS}qly76ue`DhoFBiW8A<6uOVzAiF)Myh40}1zPD8j{)c_{NT znF;osE(x$5WnrFL;%2<>{$AzD&vfr)$@TcfHvM#Qg`uALgat1xJn{IMSx=b0LuW4k dO#kzpe*)_`5%$M*g6RMN002ovPDHLkV1l_FIQ#$r literal 0 HcmV?d00001 diff --git a/www/img/icons/controller.png b/www/img/icons/controller.png new file mode 100755 index 0000000000000000000000000000000000000000..5cf76ed029a4468cfcd05c1a50089a98e718418f GIT binary patch literal 666 zcmV;L0%iS)P) zlg*1#VHC#iD%uAHty;DTg0}q?ty;8bDFzCDreJ80{BB+R< zJENR4PZMQi-K$n$6{M+e{`y zCzHvi{{^55g~BV5NOa+FIKC8%#WFEpk_S+;0uA4flMsu=wvk9g@eiQYYGoUZ#;;nf zwk?;-FdB`3VHmiWEa5y`gl|tCa~huHAQ%j?r0MVf0GiFFt=sK#C%yTk;Ec=V5(eW1 zy!^<*iw^+Bx5qH>dSE^ra{Kc6JlJfuBMv}5)@Yi~=Nw?K*=zV6|Ft zLOAX<8jU;B^k)=l4vT=l&3kn^9UxVL)9GYU)9I9}vfXZjQmOn(B@&4pQul^EU^1CN zHk*ZXIt^qGkTG9cEEbJkuV?WZo6QC!5(!Z8c%13?`&?OQ#B#^uF;uHnNTpKPc_2n0 zqyCI{R;g4puH&IXp%AEOGKB zFaZe_Htgq(0OW7HPl9o7Hk+@=e6O@xZTY%@-!Rz$1Rlkwh5!Hn07*qoM6N<$f($t; AN&o-= literal 0 HcmV?d00001 diff --git a/www/img/icons/controller_add.png b/www/img/icons/controller_add.png new file mode 100755 index 0000000000000000000000000000000000000000..efecb3871b9220d8192afe89ab66caa666b69e0c GIT binary patch literal 759 zcmV zliy2|Q5eVHtNwu?$ZopyMku8m$t8i5HDPWtH@CgpQd`@%^Bh_X>&gS)_izr+_j8{2InNPXE|-9%^dU|HGTJ2nWd;3w^ zTUb~y%+JqP{C_nhR^2%i$S;f+0UmhZ|^^}Tt(B1%XlkG&}cLe#>dC= z@pzo4MMg?Dl}cf8aS>jxmnx4=u@$-xP4KNs_!w7Uoqmj))&^W_y$E4+baa|3PeuZe z+2L@+IyySk=H_NFsdo*R%AQX)cs|=fL!5a4>&zpZYpE*DIXIqX#7#bQn$?i2D4u=to#ZW93VYAuFwSe zlV3sn^F#p zO;I0mE*EY(x3LD!mZT4XmATQHvj2Z=rMusL=fYxGPhR+5xQFxo{LVe+{J7E4QNzf{ z$bA6ZVZ;p&4_`2uOiOyb{^Fqk^wMgzQjJCvQK?idhXSb8>SIc!a#1dqFG(blQxscX zULFVrgS^k@<2@cv)#Y;e91h2|{{l#UzyGmVEZ#8~3||6)K!}-l*#lC}@59!t15;B| zRlD6T{|B(XzV2RKUEN<m<3!P3kAOP4$g-rQ;UI5gU z%jNJRnMZWHfI^{wa=9#s;FR0n-(O=*zss@a@B}z$t}7aif>jBl(a4js*{o3I#>NH| z3dL7$W@e^F)ViS#$Ye5byWNyAZV!VHH3C6A);3g&}7O3-NBmkK$ z7E4?vlNCiG5txe3+b1f!%nVZp&~p;dv?2BUI^NtmUf^stTQ8kNlOO>74qNY1_=!ip}mL@OCus&$l-zgamdQTiIf4 z4h|0PvH9-x_4S1g?) zliyELVI0P}>K|z9qN`S`S*>My(M=b%{)4tQH*2fA!Yxx+hAy!Jp#(A(!X`9JVhTFY zg-ej%v7wSpR%?VHEJWq^4>@2YPwzR6)~YMd_MEeG_CBBQ`##_AVX4(>nM$Q<1Hjsk zSW2a`NiLV$rBdmceF5m((9jTfaB$E+FfedvUjTtXaDdO}FYtIgJBPzLNPqMBd?Js> zQ+GHVb&JJPHJi;2lgV`9zW`cJr?aEGyL(F}lZ9L^mzS6+a)DOP>A?Do36qnPRjpRb z`v(vR1m;&(R(>okEmgfvU5Kufd~Boc{;0g#t6ZOZ5K44|Q0E{Ba| z9?^|$L_J-|gbYXoGz^?xD-;U%Na$BsB%C@8_}ko2WLb^W7cFW#YY0qV#dh=qv&&#G zh~D1bHI~t6+@q-tLj#b>WMF?cfzQS^R8wzJO~{Z9n_(SoM|r1&N~HoWmkX9&uP-GM z31(Zgu}~-=olawM(Ffmj7t+BgRKGofTilB8nJIjHc^OuNlsQUgXD3)Xoz6-pPaA0f zZ5|mJi9Z+Irq*qJ*iF6$wRRJ3(K%FNJ;+Dq;26HN!@1j$WwY7OSmWd4_h)BkL3e@% z&}5ZTQ6iQ6ITBnY%0>BW+b@N#lcNkH=90tvw56Zv!r0i@5z^O^-|t5}9!I%chW^E! zddw}u?v|3NUJkXBBeXD2D#8Y}IRp3OGuy6*r%y4%pin4A$(Vu+6Ub1(J$$iFrNh|G z+E7iB43dUFG>uy66XHHC?0qK;41oNNhsj`s#bR-d^ta}Ea=!Ln)J%DVXDL#NB9$m7 t|0Lyj&_odvW#b*EY(2-Qg?mRmKLN4t3DC`EWF7zj002ovPDHLkV1gAoYv2F? literal 0 HcmV?d00001 diff --git a/www/img/icons/creditcards.png b/www/img/icons/creditcards.png new file mode 100755 index 0000000000000000000000000000000000000000..4eae583e15294a046d9ba4421f6b832361b7c516 GIT binary patch literal 693 zcmV;m0!safP)Q4qy{_r0XCiLueP)TcDHRjFwyR49fBE=0SrAQVAxqZ`35;M!d_>Nn7(Yg2F` z1vlcNi$EwyQ)xj+tCU)6UTm8-FYn%Q@nZgv>VaV{%$;-Qo;&K+v&9$F$=H(~+lm8- z0Adgk#0Z!mi!m4@6ib!2?_bW}qk+)1(fHHTL+1etq;Uer#c88T|dM4_%NSVb{RO;L$#*c>!gO`EEaw+pK$^dpxC_E1xZNEcKya6MW%d@1@X+oh8 zN-6#Y&+{UVuEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#`ZKMgf6%T?Ed*Cat6T(z(gze_Vj!CM zy6@eO?#%UBLOT}?40F9R=iD>%#+We%%UB#s+R_AGvw8Yw4_Zs>2F6fS)&oeXpp>-P z(4Hm2FoZ|N+3e;VNHZ};&)gBvnMk6jHRTlU@9U0$Oo&egxTGs^ATns~z)sFnC~aG*pjzb8G=xt@DLRNB;YZL<4tG!V^NUq+~Mv ztN7=;N57-Juq!r;ZvU(T-}ZaSebaUsBWyIhc|_vmN(Q*NXt96)H+}<~rj3txZX_4TvTUMq|>LbhG>RIrFwD2p$R<_?X9=nQy+C-KR+@(T#b~rFBi9 zr&5dmoxyQzf`pXp1)&Yw77)Uws6}TRmSsWbtx3IRhjPdcS z@OpJ@ZmytO{i^P5+l0rqtpjE*E)+5p*rVbL*xpW|(WoF2xulZw`6M+7fop`YNC6S> zQg}|jV5`?l*xE{=)v97_>t}iDL2v`r=>RQ5JN_iu51ZVtjDaPH(RlDP!p6H`bm zy@1CwO|?;sDQf-$1 zE-6j&QvG?{oz?v&g7sn=ABwA(pM8dfH@9GTeeh};w8Ol{_?_^>!N{=(Q_*RR^vCdd zCyVsQReUSd9%+Yt&P1|6?lvJv*d;v4JTA`v1@HWV%by88XaE2J07*qoM6N<$f>mTU AbpQYW literal 0 HcmV?d00001 diff --git a/www/img/icons/css_delete.png b/www/img/icons/css_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..326aba44079378741a091b4f6dd003ba16ebc546 GIT binary patch literal 654 zcmV;90&)F`P)38XA*m5;4_2X81rH+VK@dEO0Z*QU9z7KV=|Q{-f(ZT#9+ZM8 zC7_fnsFxNCDJi6tYD|LS+9YPPyE8k^n`u)84~0B<%#ZiJZ@%|tCMJZyAQs1fHZXzd zIM4oDLliOT0z%Npr3YY)gL5XMp`0^>VF;6w$Hq?efz%Trq8--+G$)eXF^VY0v9?y! z1Z2M7RsbE;2^z$AK)bFLC6l&P;AsNQ93hoTBbz;gZr4S#SwSv$PVR?TU0uM`)O8q! ziS_ljaNRAn&zO%mV_~0}z?+-zWuPa)XR)#2pwsz*eExz;u2hQhkP#4u^H3^~1k@C& zlQzg&tvaez2cG9*a`G}PYXtRr8Mb{G6BAdky^km%vj#Op-zJIS*7*W@ZXXS`c)k+))+Vdhr;C8eeeY z<}4EVlkh$*qFgE>ZAb-Fn^q8DdHMN2o$mX~C%AZf4$0~}VCex;!)YALjiXWe2-Ej{ z)zL)4`s>>E?w!`2`wPhyuT^L1bqV3iQK*+kB&6HxYc zuV5|A!uJ~JN`iLFK+hUNY(KxTRLIN^+19=6C^OCYSG2z~d~O;%?1}ra{eEYskemDc o^V=PR$HuuKY7+JI>LPpi2eb^A3F^mTJ^%m!07*qoM6N<$f>8%1?f?J) literal 0 HcmV?d00001 diff --git a/www/img/icons/css_go.png b/www/img/icons/css_go.png new file mode 100755 index 0000000000000000000000000000000000000000..6cdf38c36670ec170cf88493142a6277f3a16d3d GIT binary patch literal 655 zcmV;A0&x9_P)s4B8sX20TCgDKpLQ_sjDn>cie5y6M(y6rsZg6xGOU=ZxaAO6m8+|dxuFu zBGNt4z9$`3SJx3jF##lGBa=BsHrvDQ?mBC0v*dDTF$+vjzoN7ADwUOK=H}k9zP^lE zKqR6#%k{Cim}h(YH!Up}xcBlJcc1rjq`D4~fNCIwhzeD~T~G}G zY;G1uG7{wKut|Og~B%?4Kz2jGctagNQ#&#A|=vhMO1|Z1gZg5<^JoNxCLSt zViB5-pQgR>99yLw9)5kq(3xRWBhn#6mqE;2kh#P#Yv(jw7b2QgDqFUs#xk{EU4$Di*66T|{R1Dnwn-PwM&!!A#k@}#3E z!Yoi#RrAlc86_zpDx5r;LrhUO3LDGR*EaHLCC`_Y&kWXdlNuYlxAiMjEgv2kg2)MtT% p16oH?J8G4gqG{`|QD556{{`7)p*DCclOO;9002ovPDHLkV1n4+5xf8Z literal 0 HcmV?d00001 diff --git a/www/img/icons/css_valid.png b/www/img/icons/css_valid.png new file mode 100755 index 0000000000000000000000000000000000000000..4c72ca5a409ea885dffbb3264e2366fbfcc5c910 GIT binary patch literal 661 zcmV;G0&4wR5;6> zlg~?3Q546&Z+ztBFqN8GzR{3Ep)nU)K?E*r;i@30aMiL+tNwxd7upK8ZV?mxSQH`5 z%Ar*T#@I+IrS-H4hWWva@BVt7d)~}2tqd<*&Y649=bZ03bDtB2A&#=hAu(mbu$SSx&5U`}~?nFnhY5J!9yY(*U$u({C36O#Y_4|(d vR?5yHAZy=);3Sb;#Xw~LUCvQI=hpfQ1cAs#UOhiO00000NkvXXu0mjfn^rF8 literal 0 HcmV?d00001 diff --git a/www/img/icons/cup.png b/www/img/icons/cup.png new file mode 100755 index 0000000000000000000000000000000000000000..b7bfcd15fb2f7ce658185bd7ef4729815e2f18b9 GIT binary patch literal 633 zcmV-<0*3vGP)DAD_Iw@kR+3LLZX?3 zyhGkEvUzKYKpu0v_u>?yY~y}#nAbh$p6}dm6adQqK)FzXa=E-qP)ntfS|}9Md_I4Y z%jHh8*{qt$WYlyzt)^0`-M<7XmC7CwTlIP!6`0meW$j(o%*9*fiupyDJZx7&n@&K>z*>QCDhTzTp zTlnzwp?s_A3C!nn*-|JJ`k^?T&hB6^z;e07X0ws&YPAxuvwwlMjasdSU@%xy91e#I zzZYAh^udB=a16G~?^>-EC_Ew4q~Q1a4;7oucH0!-LK+*Y)he3JCK`a7P}Mc?vlj7AM;VkzMEhOwnj`hl1MBj6s4Nlz_+^kH@of;eX>V_G&2` Tt35or00000NkvXXu0mjf&s-qj literal 0 HcmV?d00001 diff --git a/www/img/icons/cup_add.png b/www/img/icons/cup_add.png new file mode 100755 index 0000000000000000000000000000000000000000..4ecaece296e6c59fc3c208778e6d7eb5ea11c6af GIT binary patch literal 715 zcmV;+0yO=JP)n#+EeykZ4|N(vXz=Khh*^5}QRJzvJ8?K~WJw2M(8+H|N}Q?|s7nuzvyjuL8kf zu#H0s1Ok%Z@0Zrr)@FS^->lc`l~z|*C6C7=x!vxzUj)|I*E={d9*IP-xw(n0tu29k zJ}+V}mlMcjGT@?cxmeIJuLP8-+pvxpV>_=cizp9L8M#J-q9?DWDtZh2hl* zJ}pl3J4s}-SvVYyhTU%OB-=8PtJSKws5yP;kI)VFqEspg5v$cIGj3;ld3hO)Mgui2 zqJKUB?VSr4Ki`RwGlvBxx{l(_-5&8RBs)3lIE*fYcw3Pn55AlK`4VV4N$bQ-BtN`QoV22Wtl z%SY>fDx3~2U4~}qDhZSsUpq-;W@g4uR%KZh^%7b_Cm$ZfqVFYsT)NL=B+&dF8Qa0J z%V;!C^Vv42ZW>kVFI3&yhe!I0Q0uz|S^d8IyMvz}hs|c&Yq3~re8%8{)F|A4b`58T x_T#bslE_Sv_M!)W`|9}RevWOj-HiQo{tZX32x6?^3R(aF002ovPDHLkV1l2WJjnn6 literal 0 HcmV?d00001 diff --git a/www/img/icons/cup_delete.png b/www/img/icons/cup_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..59a6d9c614cc3ffbde67dbefb8b228663a9fc8d1 GIT binary patch literal 731 zcmV<10wn#3P)2lh<3J$3PPi4XeC4&38aV$Tv&_9v^Ek!r4eZZ6+yO`AwsM% zsZeodoR`{6`a8@6m3cp6-ZN!2F^~W2o?8Qf5kXz}xcv7&-*>)q&bU0v1sd_Jw$>z(j;JQHrWTkCSUv@0ts+U4ct)=dKI>+5Zt7zqZ0$Y!(1<#Gb~ zd|vFCOhzD;N`Z^Q>2yXM4o901;A9mi%Y{M#nM4%tUys2wI*eDh`|#rWMS;n|ewdz) zVCn5RkBK3jPGfO#QC?VBP?2qk$dyV(1l~Ko?~j-q>c_^$h7hsa?God5J{b%K$g+$o z7nyl92;Jq=c+jQ7$cY024^OG_toMxg=a(EP7K@@JtJV6E>2$hyGMPlFR6?~{6??f{ z79eN811}qaKmZntCBQTq%@}?zvc|g)60A3lKz8XY5{ZB}PmuYfFgG_h%-Y-AkJSYz zkdF<1zaQan7@<%IG#Sdc^mqW4uHBebDPio~3FED9m`tW^tf{H#U_CpLi4=>)5RFDf zM*4P*-hiw35K3?ELiSDJ%kxWc_Uy%ss__C-DwX?r2B}u73A;o{Boc_n;{qgPJh=;B zIT`mmfWGa(%@$;a4rBVLBFOmKLLz#--bYp?NfPxE>Oy2&UV4dNS7BfWW{)(=KdvKV z4IEp|X7f0otxR>(sOqEWk6h_ N002ovPDHLkV1fdAP!RwC literal 0 HcmV?d00001 diff --git a/www/img/icons/cup_edit.png b/www/img/icons/cup_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..0b8f1e1ef51432c8171204b03b17ba5deda6c523 GIT binary patch literal 778 zcmV+l1NHogP);pE=-K9H0nZ#HcDiJQAvy_EQm%EUkhUqm|YI1TC1PYtY7P4Bc*%Uy`Dq@!7@i-!5Bk1qc!B}5|wn{Z#m7k|-uPTM{ zsRp0Bn#r9orlzLQ+uJK!EEbg#dr&balSz8pgFXY>Os*y={1W5Ox z0Dm@4>_E(Q4e9xA%zrtHsP!B?YzdqVr(k~b;u({Zlasp)P?|%=22m6d3B(@n+pakDXPGE*48Lm5kuc8wk zj|Zgj7b$?$Y6a5L(jpKLKEAvKcUKu4Z)-5xSAe-dA)@wD3_s3CBqY!t5wr1^Katcb zqBSOysaaR00%n8oJ~{%fY(09&t3B1Z@bz;_Y?+vKD=yRZlUtGtmU~#})1a?n51LMI z0@top%qhKIzu~XjSg?DYbhCJK(olIIsjuE^>QHapxY9QM0L{1vkTsmPBLDyZ07*qo IM6N<$f(Ry4Qvd(} literal 0 HcmV?d00001 diff --git a/www/img/icons/cup_error.png b/www/img/icons/cup_error.png new file mode 100755 index 0000000000000000000000000000000000000000..68798748d2f0bd564505dc5e4b1b106bdfc6bb1d GIT binary patch literal 790 zcmV+x1L^#UP)&h=z!kfV#M-iHk8^b#X9p5(kYFB#urxC~>Px z8B8#0>Oc*OKnXOofdYvT+uFa^ANu#M_dbNEF)p0s=Dc&>{m%WqlXD1T4Er&PeVX?7 zAQFl6aCc9zQWOQ;Tf{d%@~>Fr$6PK~Xct37G8&DZ<9=MH({)&_RuDpVesaHCOqlS= zWD><dGO9=x^LY@}9{u|E3=a(olH_!esAk_yxrBv@>1u-Xryux#8hqOSxPI?*Rt9 zcc9T|)FOpK0j$1_TzC|g)_yb-zH&dcEj4{LVn`|Ru%&)xLU0W78BIx^F80yCkhB^`Fvh|T~4kbzdi{|b0g|G zKWxq$po#a;X{pMBGZ>)@3kx{`79f!{nM}~@^`MlXx;2TG?km9dS4_Wr1#@EwB)x>% zk9ol^iN$&;<<~|{5Vj_jH-9J zmXOowyyf@%!@M8JWHO+Hp%C?oEij05Ov_kfqT#M+~KmEP$HAVzJDb&E`~YK*bU&4lOS)!|(Zs4{tl6X_Mkj-CcB76>)m& zOQC6(VYI)Co^iwH^TA{?g^Wg{gvAz_cw=LOA8fpQ;*az;lwx&tm7D1GdXdmLU({+f zLZJ|X)MTKw9*UA|G-pa6%Sh(5WSv9DogDtoDVnjevcgLm9v=Qo6bi+>*XzaF+8Tnv zAm7*5*EuX%nA;txxY?cvU%(4mHe4TjqX!pSk!;NFGxCJkgQPp=1 zS6dIm?y!MQ3PVFfQj(UIc0O#t4$`r~>2#u4c?Ly7G799!k^3wG_f%KVX_2Ai^(CZB zV=$;0fJUR)PNJiuPldnE#Iv)raJ$_o6q3+mZASO#6E1vdkwQ9H0=cmP1Ct*4Y5BmqvZfD%J$-H<8Gup+=;CA(`eRKB3DR9Yz6rgQ$~*d_A(g^hJ7O= zBSAW2P(#)zPGW5ovgH!QmXmoZKJ?eOkw*TyzkCaJm65ogpML``p5oUq-p_^r0000< KMNUMnLSTZ4&}I$* literal 0 HcmV?d00001 diff --git a/www/img/icons/cup_key.png b/www/img/icons/cup_key.png new file mode 100755 index 0000000000000000000000000000000000000000..7ae160ce25e67b62abe27c2761781d424d3df560 GIT binary patch literal 776 zcmV+j1NZ!iP)cSajUKNoTl`+$cilDl%$Sc#xP(ezRoDoTF8j7W^ zvab!B&TV?yS8iixZf-l+o8N!i$@pA(RErP(krXL;H^5)edpm<)!~~-DYi5{J-tRLmC8^g5;7(YWOjZ7bcVSaD|L1RB+S{X8{ z3ar|jkuWsDJ5Y^J@`iVmR4T2^8wh=owZY@@!0-3N=kr0>jOX<=Y$b=VxzvQs$YZS9 zn!vHmVB}?MRAFJ^;r#7_SP%t+L9i@~Kp-G~FMPO%@7{KB{;No{4d8sW;M~{N2*TkoLZJ{?`y>Jrmk`p_W1W$KTR4fdw+0(7B5v8Ad49I|97STc zU@|&7>Lf<6SS;cUg7hGKBQ>PdK5TfZz%j>R>XE|QaSXOL>DCKban-Lsk;E>-9<5e8 zLUzjweTUv(Aw56C`d0}!XC=(NM=>V9%WK|_zxpgI+PmXp((Cm_I-M@-QPpEBdLJ9i z3D7-dP(5kQsnzPDzkZFgod;SS{S{HV^N4@o^1d@W<^2FSLkhmR{)z1X0000v^zY@WzjBN@nJgmb;$k^0I zBn6_*4Q1A*OqYr?whE?mZfP)@+de(dQy!$~QeXJ+KJVxIJfG*+`zipGe}VE}1$K6J z$_V!D?QMG`60vV>ZOv|OZqA0oVf)6$hJAf~-5v}E%YGBs-Q6vxz}Wu&K8}u#kV>Tl z$H&L=OeT|pgM$N*DAv~2Vu3)QTm&dsO~J)v{OT%NhpF9wFM)X*C zZo&K4F7o+=!^1zuzBHsGO7e`FRwJ zMdV53?XwX$9^S*#Ml~$D+X8FTUA%a7U+(ro0c0{6X=!3Hqv?YM&j-iga+!<8VxZwkFl`Epi;HHZqM|}` zF2IhoCQMCDVQg#+Hk%CwgMl;g%&nNG-wY8&4NlD2q>M2wx6yWiA(B0jQU^t9{fdSOj)uE-O1>@u6 z!n4g>Pfw4Cbar-T6gpQ}WM*b2(%;{Yp`jrWh{xm5Xf)sraa-Jm+wDembv5SZ=DaL0 zI5?R7`8g`eCBoINuC8Evd%Fnq_V%Kxs!9Ut>+1zi>87`L#)6>(iTCM2l=zw0Y7n?b!)0v{Vq^X?`7X(U6OE1$_Zq(G&d~9xR{?^vk qmL+^|XlQ66sL4KIj_=rqeSZLw72dYRtc%V70000I0T{~(qIu$a8Oa`;1VJZ+NJ#? z)Z`G6Xm=;i@Oy^O@W4+X<|%s@Z9U8K%Cou=JW=N{umR|dc<1KC5j-&Bmny}u z1Gr;ImmX!ZVOvnb2Z3IG9yvhp5kdn#W^JX2LP{w9t>Mgm0h`0-w1g7ei1zafe zdny~;a&&9~i}?5QG&nFlE(hRq9e(XsJj>7i0YpGB?|)P=F8}}l07*qoM6N<$f=`l= A>i_@% literal 0 HcmV?d00001 diff --git a/www/img/icons/cut.png b/www/img/icons/cut.png new file mode 100755 index 0000000000000000000000000000000000000000..f215d6f6b7c81ab344a3e53e0e5e756c58c82d90 GIT binary patch literal 648 zcmV;30(bq1P)Sxb0Y6MkDSd{nPwTp^L>b`TxVmKBiF^NLQ>My+_!0?|)hBPe_#}P$?rlUF;M20U z`oNWE|K(DrsR+gN%g)?+`OfqmmmiA8O_U(YfPnV(E$8mN{jZQVJ-L7LxzmTQJ^!PS zHqDyoKn&^H)Oq>Q$Nzns&wsn~^6P)|vPC&W#R9Kw95|FC`?q!91!~-K_R;^uDLWSs zj7A}sG%2IZxvQP(HeS-nn71T-`ku2F9(?#8KXKbp!Qe&~yaot4r%3=c-cDF`=YPn& z3!hUrzxqFO*Ny)VU;p?Y-nniMuVuI+UIUD>=B$ZZdhM^2Z-JeJcbDl-H)3?9>AG_?ve_7A86r2Wlb?y7)ShoTkzeah}rl)Oq{=a0=sekDkpZ?d4n{v>% zcgJPxg7sgx4Lmup8sO5j^?B5iYcCv|)*VgT_U6A?-trsfIcr`APCfD&B(EM;R_0K# z{lAb!kTg~UrQ ilDgypkCC?sx*7nVRiSN*cNM8!e}HvIH<9>qC z*u%>#zg$gv<}MShGjnAGJ2PkOK6By0hyU>tw;vUW?dQg807&yrQ=RMQ-E97!vNQg4 z-N*j_tUWjWKLolUYSQlg5=m36r4lDH;xu5ThU}a(Zr1-N2ys|V5M&R&;$i)N&feSq zmz{a{|DKP-|BKF6|7S?@XW}&Au#M51wR+0yLF^T(QZp|FIQ=hOeEQ!tf5-oe6~*Qr zu++b@&qD8hH!l+xRs;50>EAnPZ~Anzf$E{VUiSajXvrViWT0~Tn2ph=HZBI{xzd8= zCmhZH_X%+*U^QU6B!BX8TcaQ6fr?gZ%5MN_lGviFy#9=X>EBjP28k8wGE;1k*-!zk~CMF9Bv_3(^PCOq;$< zN?sD2BV4j9Yl`*+fsWQD?H_4>L?~r48B=l;Spkuc)A?yA6iP)R5d;DO`2BwH_g=3D z!!XcjG|+Ch%jCP5&1Rc|$N`LEvA9yN*EyX%X^loByIQT_h>#+l_9wi@{(Z?D2RE zUDq)j4#hY2{Z&BrR!Yn$4g z^!3C0RHpz#W@n--_jThHPEAe2R834DnuV#1kUlxXv}=C^n7~&>f1RO6h@8fUuT`wRE91*{Z%LW-oO8KckjTdf s77ewwyuEar+*b)ffn+a07*qoM6N<$f>LlT?EnA( literal 0 HcmV?d00001 diff --git a/www/img/icons/database_connect.png b/www/img/icons/database_connect.png new file mode 100755 index 0000000000000000000000000000000000000000..3a111977cd9dcd631ce1de85d5ce82b9ed477c27 GIT binary patch literal 763 zcmV-F$IpKw}ImgOJ; z7f9UkeLqXqGzqfxt7QF3)<-1d`T2Q|JMMspFO%GpXf%2y9*-j&4kHu_f!^zMI#5*= zjYb2lR%?Ug7ES=x*VkWXGMU+li3xBVcdBjIby2NWQLEKf0>=*tFc*u({#ko6nFJ|g z?nDoqo*3BN+=QlS$mjD227?eqk(Hq9I@;|vn$0FssT2kLZQ|-id%$+QRo569<9qv% zBnjnm8M$1JiK%TxQD9jX1VLcAK49g|FTrt~4?&Sj3z0ZJ?)<=HM1kjdtcg@W0W=PK zM#c1;^}sOgal>-cAqn6)AN*Jv@9IG$QdhCIwua^9WsnCLfUZ<{=zsybx}CIan}V?0 z(jf9aq{ui*&$pQ6>FH?{i$&Pv&LM~b`VLgXi0VYFk?86scD^Y%BLayFDZKrnV|#lW zi9~`4jsobO0XnL2(RM88rUON{plT*+du<%376#5=!^`(R3b$_eU!?$QpE}}O=L(Xl zTXHla@d^=2JO_a%GalgJ`5qcOEzISoaA`8ae&guqD6-iso5p&*t_ugM(H#y2M2}E4 z!@_QpjO%X=M%RSdwJ?@atIWY8Xx%dePiIz*;vQsHA#%EP6lrG0Mp{)++EaGtq_b;C96!L6rv t?W2=fDwT$aV2XrKn)Z2danU+@{s+9Sw^uGDfpq`?002ovPDHLkV1o6HVQ&Bc literal 0 HcmV?d00001 diff --git a/www/img/icons/database_delete.png b/www/img/icons/database_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..cce652e845cde732ac3ce9a4132b597301ad660e GIT binary patch literal 659 zcmV;E0&M+>P)ps_J1 zHhTmGl@tMUh=_=a3Fb%)BqZVTW3s!xH?UsxE?7A5@n+t<@6Gq#%m~l(@IOPFT;%il z03|#}Sa4nU2-$-Kn!4}FekQv@$S0FY$L9!N0g;c={9!m8K4zLG48uSu6aw$J+ii5a zT~sO+G#ZW9!I0fqFSvY9*@h|sR=YqL#x%oU@(yD@pz0* zr-R{eDEHX6V*RaK<|4rWl@GKt@8COeKZT>%ICBq4+h_I-+?Y*V28oxmqBc+Oz5 zc>4@kzJgDe<1lkKXYEtktsNC`FoTI)4qLaF!_1E&4qv>EKx`iUcee83)!MzalltZ# z3K)~8`*H_w9^uf5^9X)<39-6>(AOuJvu0IKc#FRkFoCa%ULtC>8v6bIR-H|{S~CWm zy|LB2yL+L!Vs5g8ONBz=aUzj0EX$JbfSV}a#vT*B_2)32Uc<0oLyzLS9V$=7hM4?~ znM@`|iEa~8)bZW?7q}d~l*7K(I`+@}grT|_=WaH**u tj~DMRZZpzVy^OjT85Vq(G=8XD@S91FH}kp`d7hyPh1 z5CCa%X>*RH50W(1GMNlqE*ChCgTvu4bCM)M5Co)BDTG2HvvyYjmSvI4<)A2v`CcxU zQ79BpEEdf*P56K_c;lUWy=bic9s#4IZm`yWps?HR<^;5uf_%3rLf1Uy7}ym7{u3SG zgQxL#;V@<+y-&7GK#MIB!!Xb^&5SuEhPoOV9{wDJpWonQN~qlHho`!h-y&cUDCjiw zot3{JSR;b3Z$U9V2&bDtVsaL$Qu?FFtIb;kXm<)qqyl<=9Kq@&_)r^^)N|OJWjH)_ za7i;6X_aj`duRB^h5&`toyKA^3V-E1_yb`=eg>PPj8Y+p^vFkpk)_tg?(s>=HO~R< zNVkfdL~{$}rBQI|9QHR{MrpYhcBg@2p$?h%pAnUsbBDUeKUv#oTc6-&EEZdf$Kwze zM&QwZLDd6D&pd?=1#1F{N2f6?Hf8gwvt`>|pf)ft5F|nm_AI~XywcT&?}K--v^WN? z_7vo-s3)9F{TXfF{hpqll^q2vdwBb}datvKg-yfc+gC^|#8-K5)%lB$rlxi}-rEGO xUZ|2A>wRp~(I5;*aZFyx-fDe3J-^%i_y?+(!m^mX(n$aS002ovPDHLkV1gwlT*CkW literal 0 HcmV?d00001 diff --git a/www/img/icons/database_error.png b/www/img/icons/database_error.png new file mode 100755 index 0000000000000000000000000000000000000000..578221aaab1c7f6f1f5f9eb4adf02aaad93bf407 GIT binary patch literal 682 zcmV;b0#*HqP)87 z5D7ClS`>i>siY*D_Hz7r-uLe7+&8^)8l^=KKF+=8o%5aVo_ns%Fbw?9=NR3j(`lIq z&l4_j&X15iM4%;qPxcepJA`yB7SpX9o27t~=V*Q3@ApT8!5};y58Q4y#D7Im(CKtg zsZ`KtG+vYMVmuzNnu#JnAeBlzFPF=roH6NRj2XFH&PXPcD^{M}l0uuKfk5D&XAXrz zpdx3t^?;lvW4&I7%jJSB%WyiKrmxrQq19@kTCE}+4x6zP2^(duC2SE#)bB9=iVf68`kSQeakO%!CNk8ZR-m z?*w*FFTmM-3w@)sMZq=#Gl@t{bZZ!XeF5)YAM_uOFn#O_`sF9!I-5*jRo65I^~*E( zBNu?dI#%!A!!BPRgIX3|y(Et%5U{H2%16kyA-q#PaP>1aiIe;_%$~lEAY1pW-a6^s zLLj7ztD;GSyh8%7JcV!OIC$?J<@T`{kAM$r)ZhXRM9)c@I=uF`f~8C*(=8T@aDLBH z?I;- zi%TAvMLVRO5!65AQFy%kz&7qVzqz^CG<5E!W7`eUT(0v?OSAIJVzcSlpH|(e&rbmL QkpKVy07*qoM6N<$f|gM=-T(jq literal 0 HcmV?d00001 diff --git a/www/img/icons/database_gear.png b/www/img/icons/database_gear.png new file mode 100755 index 0000000000000000000000000000000000000000..7c0ab2b4c643f33162c0ebd80c4b0f8418acef2c GIT binary patch literal 468 zcmV;_0W1EAP)xrrOlR+AYYd7dzkRXrG^eM& z0Ukd7oRTC-k|gQnMef{;h-hbg699m%$}xbdi0=mUTP2n)`eug$pemyB(~7A5(p8B9 zpo-`-pi=3n1vBanKvhJor`FPV@4HbW;>w}!^`!?_&$o+c)M|~!f&*g2sIl2&+nRI7 z2dg4_dK!Hio3Z4v0sAzDZropP7e%esh`Tl#_R2+_g}2LFOq{)tc4JXTKlp1=*9P-? z()(@ByuPV7UnkqEhjpwo;fJpEp5FC1>gt?lJU4c>+hFP*|&0tGt{!YG|5fRw@-UpUxK})gOY{KjH!sGG4?RHzSe!mY<6j86&kw_%0+>rt+UvTG zPNxG!QLHl_`>TN6lhf(69Pnfg>e~`ot!6OL_K}%<0mC@>2*2;ZcEFQ4iGwF{@R*{j z7!M|qd3hZgQye2(un7;}EWl(MRHj3v{mH--l93DO%KKRTaX^3MX`58z^<+{ z6<23&!!Q{PW`ItyBW>gC_$Bnz0p8cvrP&8U;E(_Zug)QpWlpZPzmjE&ksHm>&{4WL zcWMqjtuMUYDzy&;xOM)i=ubqW(I5dCx}hU{e1gb^CAKTo5EzT#!}bO?zL#36j`?8+ z3*~b8c`}*w$6_%IbOkHrWx4~^auW|u<6?Xs@2VxNZ5G?Ij>|hs<|oJSYs}?xlO%MH zkQM~t1b+*>9q#P0c*i_HG3Qv{e6_1E^9qr_9C}QDj%+r2jL4@6j4t)_BWY1InA104 gM*QcJxn<}50%n)c1HutrKL7v#07*qoM6N<$f)5Qpt^fc4 literal 0 HcmV?d00001 diff --git a/www/img/icons/database_key.png b/www/img/icons/database_key.png new file mode 100755 index 0000000000000000000000000000000000000000..333414767983f2db7c3d182cd6b4966cd136a255 GIT binary patch literal 764 zcmV8(Zs~5pkxC`Czx(!Sg&Qcw=J& zxm*s3L;~q_`XljO2nK`6ZG=!LG!>7>X*g{!E0s!GG#b@LMn(oHxKb?nwAIwq;D1(M zUk?)G%uc_FICawM>MCqD8?06<%x1Ih6Gai3Oa{qh5=~7_6o5SeCX)%-Y!;H

      ={4^ZidAM3m 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/date_delete.png b/www/img/icons/date_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..969a6b7239275cbafd223931e3fdc9b1eb482e22 GIT binary patch literal 716 zcmV;-0yF)IP)>S9ti-HZasiwT2Zq>OIr z=IlZz8_bQi*}hUMa6)amu~;i{Bi6px`S-rZZ7iJjz<=*~-sgFK@Bi$aBLX0zA|X~P zl~X#M&aY4?E|Hw2dlj)Nm1@FZFnDMW-K)*fpAcC*L;d$fi-$F`?lc1IcXncJWCSk<24EW;L|87zUVlG!dwa1% zK<4&#EVQ&>MJh#{I64AI%VhX5K90oL7`~5=B1T}*;bH6%P?&&1eSP>!T!p&2aKN(v z0(?Fn%H{I0DwRse<#K{(&^1o&|SzZ9pdrYNLzbK^s&!i5r*(@Aa&*1l~ zTL2l#YeYyAMei}Ns+n&BK(E)s;c&p^ay8cc419OaAwD~VpN}O7-xg!-vJ@6I^F#n> ywOTj%jB%3QYHncV$|+)70`s&C#=Ghio&5{95~Nu0qnc;{0000 z@XyTPsyR0SRfgYWB;#@lX7&;LFB_CN(vlFNpK`2z!)0~roDYPN22vGz@NlK4CUscB_jiDRu&dAGht6p$FI~> zSP4iSACK2DG3bwuhMQFMA7DK>8NZ8*v0PLHPeB1(1m?)jhMj;G2*{R}23tucX1lIq zzNa3h4;L`;Ccjbw@H~%TFnFZ4x3{q(bi*@TgO#a%V0{VxsjuK(mM$L(2m}H!7!2_F ze9-IlFpW0BYkq<)S1&w2USMOIK~T_Qx}#b=6hO@?l}g%q-8}@K`7w4jwAfg<2e1A< zte>hd*?tGw#>=Pv0Z_vpgkc!0F0t@UKf;d4Az-V7=&Zn+r4~Zx74So<{hxRcu&17n zb?_K!Lgrf#9XGIQu7mA;8RiY&!ExNtfF*MeW(FUSvNaIxRoHai#0sf|nm7H6(tV)E z3}0mmAjTbPwrILAGf<1kZ%tU_%Mq|wz-xMlxz(OF(|4Fu*JQ_7OwArVn5X(bJ(SSusOn}JF5z(;QjVNh};HlMM5^1N4#l=N# zS=O1*x8`|y=`lahceoJY6E&h%#wk*-*OANRpzAtv*#&H^K0{YH0rTf3oRm4~D@Szo4obB7?WV%I}Ul zsL@;v5;B?C?ET_fc*9Y21$M!$JsOq^*;kqfgZ1S!*hF#;olA&QQ&S^RsZ z!Dvj@5{+4Gn!L@-#FEX1Kp=p3B)&;c$9h^CqeV6wOLjX`qiYrufW+>$0PnN2F|E&SS6qp0`e6X;{(~1kH^D0 zhx0eU<#Hh&kEc{D7DF@|Wkd&^qn?z2NF)M}$AgWH4Y=KII2;aKosi(Nx*9)Y(fM_Fc7960CGx%0 zJTTLN+opEhG`65ee-V9#R*cN|$(D;)3QFs{8j~^5q1mCkc>Br8aVn@h??$XP~qz j9lZnHOfHwp{nYy#Q$vKsy(sM?00000NkvXXu0mjft$0VR literal 0 HcmV?d00001 diff --git a/www/img/icons/date_link.png b/www/img/icons/date_link.png new file mode 100755 index 0000000000000000000000000000000000000000..9f0aada7140f32ce4712e2b03025da8edd62a6c8 GIT binary patch literal 764 zcmV;Ru)A>AdQ$FlwxQIMIuQLq#R2`6HmQ(^~UI1 z=C`5Bp-?E2NF-A1!*8QFaVZ-NdW*e|j_`J61;0;Ep>1s74gLw+l;dN#mY2~uJ40`M zUD!OjZjcNl>|{|CSZp>71_Mmn?U*zgVV5MKW^yrGt->}rGXwJwm}8~k9cEcZu3Q#Q z`C<_ofplhP(V3pcz-&e?pBJ`Vp)dx(h+_%RY?S@y{5*=C4wfjpo2W??p!fUesw#fb zStfm_X$aBzNcJT_lK-#ZgVPDW#R9$8gGx>sD}k8^=>5b5ymT5!mHT@<66m;!bULl8 zs`{$-`+fcC=}9OHzi|x5%6LJ#-7d1(EIb|$N~MzEetUb1)z#I}$j2hR1i-dGKq(W2gKuXadIW8R0_>z6C1Q#GBvx=XyBBV&FOT0dj`Ocl}ZI)HaD@iw8f_ybVp>h{H}350{GgG2;``m*9heF= u2qu$BWS*seg72+XOH{x#=&sT6CI55DN5t*xzxdh4vruFz3HIvUK)W=dVA z1o40|dZg;=BsS%8?0UUYjIPu$!FmrQ=#bRL0 zW^8nKBi`AGcv~BS&COs;rgDt*dw&yrZEwfw@Gxfj`{5cKL}Xw9(Y`+H_w-NE-^wtn&EU!_>XU`YVWUJMR z1^XH-o(RH;ETYK*_{cF(vQ;u%Hk^yuFwI3u^hNq9s#nu?Og`bvkS04)%_N@TrQ;3>2FkW`ei1Ll5n!` zNhKT%5dNIc8u^Izie_;dQ#_-tWX zI-P!8C=@<(4xcUSPN#3Z2ta*tr~b@E06&A0H#Uw}hz7xQ1&rT!GnahHABnXf%pet0iY23wD!ZNL2O^w!J0B9`u#p^+C1$66v3^K z3vWMOpwzu#gmp3=homj{V9!jrsKap3jSnX_o*aI9sfxvQa>bKKlc+ WlT<+U@H$xl00000x$iEP)-YXOeA2OND zefrk;?i5-sm%CFe7T>cE-}!O!&{P!hgS}Q(aAj@|t@U+yi;Eb;iLfoQx{8UJ8GPT^ zK!0ID+R{QOszSm}MkE3w7K7`$7>dU+7z!b-suDW6=)=R(HaIc@{gjwv)zdR{O~X#J zDV?hIIy@q2kB*`}Gz3@Iu~V%|+fJ<(5Ww%T0eCUWzBxIGdb^Ej%ATUuR02w;6Mnm>~baaII`Fa1z15qy`;NZQzJq*+2 zXJ==TN~I8uMnRba_(VYkZ$FuM{(2W~-^QC~H_>Xf;4e$1QUNUxs1;d_bFP0$u=!2F za`_7;5@EEOzyB)JG);Ikc@922Jd|ffP{G|NA0I52JdBS;pwYrOoilcJ;&y1YW#(iu z$;%_F)9BTBpsEqZt8vP#sRFj;!0lKvc#&3_3G(?o40>A5%E9~l`vH+0qIuAL*s7Xn z|FmHDT(~_)8hwOl4_I>roOx<$3cX%WwgmsLdi3C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/www/img/icons/disconnect.png b/www/img/icons/disconnect.png new file mode 100755 index 0000000000000000000000000000000000000000..b335cb11c4d1a397b307883adcfe1e00c4cf8e6a GIT binary patch literal 796 zcmV+%1LOROP)h5&w{Y-QlBkdy7eSyz8|k(w=syt3MbOGZFmTy2f|dnI3kj6Sz)H!` z%1hM3FiovS8#Qs98Rxs5^PSs#9S4da6*};44(Iv3@B5rb3BwQ$Is?0$0ilY#Q^EELL=6SfS*Ly93GR<|lPYvfPXoM^)HN1)!-B@N5Zi(e|Ge`rl{XLurIiz-D}wH~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI literal 0 HcmV?d00001 diff --git a/www/img/icons/disk_multiple.png b/www/img/icons/disk_multiple.png new file mode 100755 index 0000000000000000000000000000000000000000..fc5a52f5e4a7e8eb54bcd59728e88a2db5f046ed GIT binary patch literal 691 zcmV;k0!;mhP)h|XiB@gI zjUjC!t---iaHXP+)r{6Ojx+c3eOp)#T8qGEea`PZ=iwYN#&8(f07GMovvqMO`yt0_ zV{GIqh=SUrg*L*EVuk5U_QA?{|KdLZm9oqA&I{b?sAXd2Gmr0G+E?`AZ62*91#}$* zh%tuyPiAI&x-YV_mTQj!pIA(Bw8r7bRXMZUbwz}06c5|lmvZ$Nsq_x5imrlk>1*KX6(-bq8O z2^19ECQj9aBx7KUR8RS!t_)7SYimBz-4JgeVb>Gt0MQyT5n9SDtu2!)2FyRdD{|O( Z{ssThAulbFM%4fS002ovPDHLkV1fh$IWzzO literal 0 HcmV?d00001 diff --git a/www/img/icons/door.png b/www/img/icons/door.png new file mode 100755 index 0000000000000000000000000000000000000000..369fc46ed259191014664e8a16bea76e7513f8b6 GIT binary patch literal 412 zcmV;N0b~A&P)%thM>W-PO4z!6ryTDvQjnlZlgy>*`kliP$?n1x#3mBv=H* zZvSv|{Wk%bFo}=%C%C=cB-|2gZto+r=@*a)F<})kF(DFGf{cEF%qX{I6ar>BlQ09$ zKtwM=E70{BMdbz}7ZEfCIhx`>6H;PlIK|!Y1xVX8?flcwAM>e&;Vo+vaG^ z2pyX9GZt*w3IyWpBqouZ9TBDUCjj71ahpsggwSp?!_6p~6Ug^zToTz0k=O|cA@C)B z=4SI+2S7F9CYUB%6Rwf$PD%xpU1zsvH^-J3qhIec&_95xadrGMyZiUG;F`#)xFk#y zurJ!PJ?Af*(aYIc}SHy&e#bYkLxyZiN`;lMHCXuWKOBa9QbyiY}R8)+l!c;Lu zGC@p$z~K6Ij22J0)wsbx511;JB7MDISvY@^uJR9Nq@bi~L`zglHEQK03t2do(0Qs6*PW_{1G!HjEs!rv9U46 z$HzPJ|EKO<)u6Ypk6L#x)$Sg;sx@Y2o4k8D`Z@f|JD)qaVu_iqHj_a!UF&Z3Ql+}r bBu@VX$p^JhV-$eD00000NkvXXu0mjfw@)|D literal 0 HcmV?d00001 diff --git a/www/img/icons/door_open.png b/www/img/icons/door_open.png new file mode 100755 index 0000000000000000000000000000000000000000..64bab57ddd0e95ad9a73a3828ec29b5d0b4dd675 GIT binary patch literal 508 zcmVjv0zFqT|_}Gg5c7fH`2AZ7W59X^b!J!cjQKk5f=?+6Od?2ip|XV za}o2aVlr?zXY)SuzK59<5o~(S-oAM4Zm-OARNqAS>D|jO?sih$KIXi4#zC#p8KB*6 zhr2T^Gn@5ikAoUcb$HCpdndR#asC03%nV>=v|23yQc6ob;v>x`Pk}_f8e)=(a71(& zuqvL;W`>(lMgvR>P$S&_bg(E|oK*{Mf@#6E0Euv?l<^#(s{aI-7D5%5GI0madt{~$%;b@oK6JNMtzMm)GS2eE@_I zS~TaE^z1tT1me$mOd>fuB1*9ukjYHe@2!~sjG5tP)N7xSr3G9P+3oKa++V)SLaGru zn`QvjgqvWRa7{oUyOUDA37GDE%9f3r>9Muk`Z$59p<W>iYj7vxikNWw_8sK+%_fnobvCa5%KNOO6e%CReDLPLmVwdHp%H5J z8cVW-n2=oPDz8D+5J{LSmLlCXMPg`l3MX6KVJNMw&n~!g&9zA<=CHFVyLz1l^k+DTiboyDIuKD~MJE&R)Oo;bO6gPHCylVLL*a<{&sTsdkI7k&ZU WO{4dBd(FK70000k8yT(1{FYQ%eS|; zm`o-RZoVTR{e-VIhqwI*@698e;uMa`17cSLjDP=8fDVU4RsnS8Z94N(YF@*3(F0$4 zfa7WccWVI`$$I$2KUI8TegR;jN^7ao%gZYfmZXUHr+K`!3i#+L;%mCJVqO6-QJb`Wzkm6y zdWlr63*W^xBEov}S^$&R>(#p5?x)3Kp>&7LPwULD0+^gmrwKcHWY#OW8%2BFWlgZRE7!1(s^(^f!rJbe79GNxG aJ%0hDwGFRvSa|pV0000lQkd! literal 0 HcmV?d00001 diff --git a/www/img/icons/drink_empty.png b/www/img/icons/drink_empty.png new file mode 100755 index 0000000000000000000000000000000000000000..a40211ed412d95be06d475239a37c35fea158538 GIT binary patch literal 433 zcmV;i0Z#sjP)awcLgG1Ps>cqvbu;_Vq%$)JuarzB@HWl1!ZPF;C7L( zfnnMp{=@G#I2=L#pCCC))^Xy>1k(9bGie+eiDo<>3#hIg$F>C#B&%FfLPtmE4jr9a zG;-_{Q4m3n>C>c45seEj&?r%+MTanmAQ|J49v^ggr_Bq`JW!*DM#w+}NzbLsGCexH z(&UkQs(hlcVXn_1f*?uzfvMA@#REld=}z(wK;rh8c|(_Lw3$2sh-%+83%t?gYAR0w zBx>IpebHxQ^qXe@vKcLNP9XT_ljCh!!_LrUl~Y!8E6yeB4A{0s@_S@RP$z*(3_rfS z*ERu>_6-ID8Z@Z$!T^IKJgo@`D=KGHs4-;769x8Jz^zQ(5VWl+{_JvPk$HSoZ`Px@ bZR7F{-p6Gno?>^M00000NkvXXu0mjfT}81Z literal 0 HcmV?d00001 diff --git a/www/img/icons/drive.png b/www/img/icons/drive.png new file mode 100755 index 0000000000000000000000000000000000000000..37b7c9b27d39acaaecf06951b024ac08afbfd4d2 GIT binary patch literal 346 zcmV-g0j2(lP)`6pHR4C7- zkv&QTK@f$%UVGNSAB4p~7X&kJu`rW(3s2w)1kd9QoMeZ&fx$)tn+OJimk zjCT$JD?{UrQ?3~v=-g&C?-zWP;E3TkpyGrhTDFaQSzpwKU?tq9Uh&CO=Y?-R7%>t` z!bl_(!*h(_r3OLS;FuM!k+?!xBDEihL=?r53TBrP2>202N!*Y~*dL6MvS5Ku!P&n9 sT@vv>?encL=G!4ixo5^&>-PTUFAyGx1U4B=kpKVy07*qoM6N<$g0$g{=l}o! literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_add.png b/www/img/icons/drive_add.png new file mode 100755 index 0000000000000000000000000000000000000000..29a35d5aa8d270d0cc2e2fb29de8c8b5a82022d0 GIT binary patch literal 623 zcmV-#0+9WQP)JieWo?|tumGdpatSl}!}!5N1pKRTVx zYtQov9GK7Nn9XJZrqgMF$z(#YQ7)H@#ADO~CtouR!$~HSBI(}|Zd2EFIF5r}uUD*8 zDh=U)D?W_J;}{GEFikTcg^Bdt@Anal#gNHlNOYYqH(0CH66%RW0;AFBgk5Tdh>S6) zsw&i@(I_I327D}hnA}^In5vQP$D)maB4FVOQ z0hf5YdVgCqA3E{(5>wnYI+BvLk;4J;Fx*1L!MP-8z)TFztX+(o=;@1Xf{ z8zaR&EeYiS+`6&~Pw{a1dUSK7c$Mb_%(D;egYqi>H=r0SR#1Hd3 zbY|nm@?BBzL2(N&Tbo$0>hYiWzmcyj9o@cp-I~M4TIne^cJIJaO+4GKx~F$XWFb(ha-_q6-cG~B>a{s~x5BE5t9KSg>n~%S){RQIedSx-2#tZ-e002ov JPDHLkV1g!V6x{#- literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_burn.png b/www/img/icons/drive_burn.png new file mode 100755 index 0000000000000000000000000000000000000000..80fd79f982e772844d58a90c9fdcf751c0181120 GIT binary patch literal 608 zcmV-m0-ybfP)tfHeA#B@4EsZ>I@+pVj_wGl1!`;fAZ@BPyc*{%{DQ6l*Sduq6YK_q`$aad3fgM z_ekw|u=PEl%wY6A95^RJ9cwfir`*e7?3P6{#i4zSea*qf&Ng&+6F8!a!yEs&#rMg> zOSbMY{eHn3+8ew!u><|u0$y@(gU6WP*mpM{*FPp7qvaX!cXz}sg}~)M{7V417_C?E um_6W6ZUPfY#aDvu>=s~f6Xp literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_cd.png b/www/img/icons/drive_cd.png new file mode 100755 index 0000000000000000000000000000000000000000..1850b701cf20400207e7c4ce777940ec1645f43c GIT binary patch literal 734 zcmV<40wMj0P)D#T)oK}@`dJc1(dv;c^7(ug?CMS@EEn0?c*sF z3P%K-mYq3^jLc5Vc7U&qeYB>sSiC!n&6bXU$Aw?*ANcTP2ld^3TsrOB+sG!&+U=d3nBC^}~9=5(gAg^T*vPof+XAnft!b-uy=-!z-7P+jc zv~mVcbAF0*g7f+PkE=Ip+Rv11s(S3Gv~3AI6Wa!(4~vFDNf>(bM7aita;@NCt)OQH%@Lt=~vM!s(GvByx=5c=nMq9A|(cadvYV nf7)x?G!(;T;jb-r_;_P+#g$MH7vfLQmHX~h5`qmw zX%SqwFr*kv!PKM2!+a za=FeGc#O|esT54pL?jaNK|vs`yWK95$s}}LC(;csU1yC(gR`g8X;_wZPA-i?K*ktk zS?27CL;|r`4Ap8C?RLAU5IaeyS*b`>Rqld4sD$ElI>l%-LO!2Iv)SBGh-o++qTlcH z0}@4am=wicfoP;@8n4S{vxF%q#7eW0(+6^D zK*hm7u-N;I^p71#?@ZXq1st#5=VS8*0!W}-F6T=oFy*6rAF+f3tUP>zh<*#FUu)Rg z*}{#Z=vf2$17g0QT){rre2<%@$58hTVEZNJ=2N(?Eo0^T7bxC|Rx6dtTHu!XQTW>L zL#T^7aPR5gEBs;!^Y+QvP5htL?kGQ3*B@Mq9elv})WnIGJGNwe+ehz0k7@48)wj)0 z+s?016qX#q(SV`dW3EU2nqBlc@2+dlhJ(XLvdflTdDin#Z|>HdSAPI_FMg8I(Y~ty O00008>xgSt#M+4&ytoi#D*N41Z+^B#|P?m6e)_e2b?4zY&OB_}=DAs^R7#8!Y=OY%G)-&ea=GZxpJUOcs;X$US{MulrCP1l zj1&;#EnU|!8jTQ(#pa+zAg_nRAu^c^^7%ZI-k|NK=yW;}dp4VeX_~v_vK0mjAt1|g z#GX#4kxVAhXf)98_e%=1vvl^#hvM;g6c6fKNRybU<6(bF!;fGm( zXAbWw%ru!yU>HVJAZ84L0Nc|HimNAZc{zn=uZOsK_2jO)JZ>3y5u9IAMtJqZ@6xbyTAC>K0R6i|e-w$hhSe<|P&aDrLuIK1~Z zY~O<{sSJU@j%f8L}k)_ncR%Yp;$U*>^^d=_ENrHe3iQt_Z2vVu}yz dAF*M&_z5zVZIKEdNDEf2-s&}Y^ic31co00R|9}S-FA@q~ z1q;#;e^rr&XrtIjwGF1}(zLNg!zP<;)}57vSQHN(80NjleBU?o-Wz5Z26kf{c4@Zy zBArgpZf|dgO^2@Qs8*{D*EFr+l}d$TEE0)~5{^*|CitW%it(aPq3QK719D!Rt zgstUQNX^{WYy>KmO33H))&)^=tyTkFCPmsiYYBvUG&l|%N8$5Fh)jdi)eU#&9vcya zNr{LEWVU3L%yGY8*w?y(qr)xm^p2ylHVv_jA@g<-Rh>ihotZ|e)GIj=)SdPn!V<=Y z1$g?-qMW+}CVYe7aDrEJsO+D>X32n!2504-Zjlga{h}HSj&$6nW`5U+~3(a=n wM2C8~*KZr{mthE%IdwgMapK0pmw!#;FKVxMw^?5FRsaA107*qoM6N<$f)5QvuK)l5 literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_error.png b/www/img/icons/drive_error.png new file mode 100755 index 0000000000000000000000000000000000000000..309f63962c0e70dfab9154b1d241e63a7a70ac96 GIT binary patch literal 705 zcmV;y0zUnTP);h;AU9E{Nf?}n4dHXi&Fj3?{Kq#TSk zQPapp!o`EsHbz1ei)l$XP&pV;1eRsjdDDQc;nqpMyxGls@B7|+Gt9Cq9A`;5=2AwR zYPI@yI2F7lgTWZOu8-00_bC=KnM{g!j7s3-%XYiH7z_r*q5s$6GHo^+ip3)8 z^?E9s%@%|Mu6SS5G&Gw{I2?{K=`fM@jYb1ruNRR>ghZG5?*c2A%R=4n_oLlzAF)fN z5RowkS(b&m$K!#^Dd%^s_SSPi%=8=Zns;wqy$M)q7NeRl7wYR zI+*ZTt&TwA61=AtG4<&g?3h7!7(h52CQec!RjQRh2}YoAm9-Ie?!gn#Fl@iV>4iJ+ z>01~Y`gp`5!H7hbW3d>b(I{qTBbX1hFf)Gx=xw9)bPaB;3$^Q8Kog(@ zqtOZc`T|X#g2(rVtMBq|^1l4uL}ck628C6eoK6duESJl@;k8^lbjvW%ySU)n#6s#e zRNH%)dgI_SFdJl70{c4>)?aR5v+2*XNsnp!@zUME-1SGHb55>W;*NA|z4(kodJarJ z0XVPX!;_WomT6v@n4t9VVk3TQEi6lWu#6vc8;-m`*?AuOm5=!P`oVK$(hD>Cy1KoZ n?ph}A1#i|rSmOwamKFL7N2-X}^&G=H00000NkvXXu0mjf#EU~5 literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_go.png b/www/img/icons/drive_go.png new file mode 100755 index 0000000000000000000000000000000000000000..fc53379efcda49dc4b2fc0eb7bc12bf908425a53 GIT binary patch literal 661 zcmV;G0&4wR5;6} zQ_E@-Q5gPaa(xuUD*8Dh=U) zD{du|NeqWWL?V$HXdX!Y!C-(yB7saML!ujex*;{2O`)Djr7#|kPuQhW2q;Ms0)c=~ zkH_PP#bVGj4c%_H7$kMFPPNjeXf!IqSD$x6*>zo*ripw$k5;R-5hNwUFfba8!~yx6 z=rAe!W9?@Z6U#s;`2>;BIVg%EToOTn*l9o@UXrjZ%kl{a6J?6!^cr66Z{p$NQ>dy+ zm_m?Lsa6Uipdf-Tsn=YYU!iM*@iq1QD%O^6;K(%ay#ENB>Pu0!An<`?HJ8hY-2KIH zcfAb9D}@EUQ{QK< v0Jmp<;WRC~B^izzSeUp@_IuU)>d*fH-<_8fCSRm-00000NkvXXu0mjf03lk8@*o6WkjbwgV1sRJML-eYFIZ)SIxWm!0haX6s~?x9+( zzBf%XWdpgTa7&F_X!pDUVSLcJiXv>n%kh5hv)VO}6Rrcu*>p&}cN$ z*=)AxD6knHhe9Dpk_4a6H%^*Nq;s>`geZ!L#bQLdWIq>KxmRlJO3asib}Wl10= zMNuHjvNIqG9*stzVUl<6VtW-=pfBJA{vDXxH?tGP_G@_N?1IAz zxY2L>-wnbtbW~Tik=vSvplMnmpU+>P_{$t0<+qR!zvIl!JFxV(U}hJeUv*)2WbpQk zalI$JMDWVR3!6@-^ZR^0hgrbsbb{mYc#Ff~ zaEq6h7tG~UDiykfVW_fn~}VltVi=>K&uQzDT-rBZ>xU=T^C(`9175WnkmI+)F7 zAd|^%P4|tsAB{$!(P+T!b|dH$dtBz4%_gB63ncKeA(q}^@@i^YNr5{l4F%)(iC zhG(AVL8Vd=OB@i!>3F~bCW$DEM4|@4j=<;gCrG!@K&R8ea5$_r8jZG6 zAQ>OHu8Z+_49l{Tq|HQHk47VGZEeBxJR&`iuiLEK?JD+ME{ExK`kP#`LWztq=(?`h z9mhc?lR>N1!eB6{abhRw(fsn76!D&H|3dpiyy(@l<;Q-O67NiUbn zY9@U89>6pWgno!vw!setY_1~|TzyXp&<6hU?M;q=Spa`EfKdc9r) zPauILKg43Oaj{sW^Z88o;39xw7&IDpQ zluRb6R4UPOxopepp_oi25Ak?>TqqQ1zu&74SkNwrLI~0{O;tBdlM;yp4F&^RtyVQ% zzNeE;r_~z~6pcoeaCLttIB&Nb9gjyUm&-Jt&)Yhx91aKC?RI3_wnu<)2Ot3`0$bO0 z%49Oij|5dzp3P>eRVL#Jp-{+605bal3|!t-b^e}wK2N99Nd-fY6h3?@&jB`ku$iax zzssqrikyIF!UN?uYaE8@$J?8@%;1CV^G|G XPW_rzx-w*Y00000NkvXXu0mjf+4B7p literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_rename.png b/www/img/icons/drive_rename.png new file mode 100755 index 0000000000000000000000000000000000000000..2a9f38b447dfe58b6e7e4f4dd19e51c606c01956 GIT binary patch literal 494 zcmVs8_uTX4Y-kx0Zb3`2sxi@(iqI1I;eFrUw>rfCj@fm`tmI1lXe8A$nG9B|)eT*?LZDI#!C+9TClU$7<8j!wjp=k+4X}DD zm6Bc=6pO{A3KM3tSWRjB3u3Y&vbW!FM!Ds*80#CD*ylh07*qoM6N<$f^*j1_y7O^ literal 0 HcmV?d00001 diff --git a/www/img/icons/drive_user.png b/www/img/icons/drive_user.png new file mode 100755 index 0000000000000000000000000000000000000000..0b4751ce423771231ff45a8703c639e4f06ad7c2 GIT binary patch literal 712 zcmV;(0yq7MP)MFsn&r|Epyjypv6#aTeRpe$bx~OS(J+u ziKs+K&9O<-nNg&9`o@MFKSrPWdgqp6fvY)iIQPDHf9H38=iJLll7yp}0!K8}Xpzh1 zB7?zTS$6dMeTbqs_Fk_y_HMUJF&YR2{Dk93f(*W_(P(0JyPX~S-zH_M)oR3IF_cOr ze=rz~vI=Cz`xc7@JkLX`)s8`vKw4KS6_`vWxLhtGU6DUWxlAU**lji&8jZ$3<&qQv zavTSxQpwnjMkDlkJ;LEI3Wb7SMeI~MX{AFtosRj4z0>L7?enKNOufY6P~KZl;o99* z_+_}f9qy)>v zL>mIhl32+K#h(fDsR-ug-LRRBq#I_(G1P@T%yKUXt0Gp?N=^yLDFLyQ85~aB3|xnP zMu&s?E>s2^Uazl1{5xuvU<4$P*Xw1GoaB7itzk16$C;%in5=Wy*~%j&=x|d0KTbds zpai4Qjrx#Ir?ItNM092W@wNAuRRhI?Su`ar5{U$>nhS+OZ)7c3CT({sQJ54y?Thu~E`U_x6Nu+_cBE@$l?6fBdTRU0H+XuR5x7B4VVArq=3l>9ie- z;>Z5f$7Habi0|)YP_F!d)oO*??Pg$)#{+RNM0xWw^d@6UH7$W;b>8NF)*lrM-)}Yd us~6=;4J0j@Ob#l1ePdzK{+P2k^1lIQD~Yof+B8c500004{FP;YV zAe~^`&|0W3;HDm2rM4TZb!vv~wlvL4?Jtm$#e;!|=lT8ed_T`iLJbB3*q^(v7c(<~ z@PkSILi|{vuz&oyS#LG(Kgz5X?YWd4Fce?AK6Cl$oNs|W?7Q%_dj{R34t^+))r}9r z?c$y1ryyf?;(5RS;jA~sHgyf#e}HEPB3{y4h=#(9*Wp^V=QH+;*|XDA@8lXhS_&I` z61396N&y8py@JBWZ+Fp$2XAycM^r8y9CO;iJn^fXJ4Zcs@1AcsZ<8L zKSesENH~&epvE{HeD^><+(VoL>bt+_LZL9o=kvlTz)(Eza5&P*WD-|AS?uh;MJ7b! zl2^mrIR!V9Tlms`kEPT-WV2ZW0)cccmrIXEP*rus=kuZ6ZX-NCiHqa6P~2XFs=Wfk z_VKaR!i}j#@Le8_Mg#G99QAsAc_@8BmCNOMp654Xu^2j?4*LE6$cA8$&rDGiXqpDg zvY42dfYa%OAP59@l~ELBB^V51=#3`Oefa zrqC4IA@)(sosif75R%{TA62p@n9C!vb)m!}k;n+JUMiIq%$BSpS!3&%mafPy UGkGjIO#lD@07*qoM6N<$f+^-cqW}N^ literal 0 HcmV?d00001 diff --git a/www/img/icons/dvd.png b/www/img/icons/dvd.png new file mode 100755 index 0000000000000000000000000000000000000000..9d94de5df00c518c84b400de7176f15843af7f4b GIT binary patch literal 764 zcmVMI6@>P|2u(tv7b=KIl+wsgV@<@e*jCUY7=e;6+2+<% z=39E)&Y3&g&fIj=+>6`P?QFX`&qGIYeyIZ&_j7LU>vx{}ex9QMp!i!3hoiz`v1q5J zrk2OX#(tU2=D5jZ;*3V)&^yD>+0y!>h12O&N@ks8&IN-(#9}e*?d>6x$sn0b!tHip z=;c#!Sl4IJY6i-V0sff3@H~%Vv513%0}zNH2#7|b$mjDY=Jz4)bFfUm$BX9=Yyo#%fy_^Vi~$?>=7ebQy10Lgqx+IAtGPE$iF zm7BanwY5CZL_29lFjQ zCM5tP8H3V#SK46~Hk%C{9UVGFd3ibhRb(~<9FNE0^ZC%$*0xFk48y?V@xX4kL$BA< zViH545Y5XuGFZRgk3b-RNF;)mmX;_5kRsVcAVef5=jG_w@MD4TQnA7|E;L`+Jpmw+ z&7}Y}T982`mbNgn%46mSkGahVUVR)#&H2WW{~Dre(~oa! zJ}e1wsLs_D)K%4|=|$3LG&-x*ibz5_%J3Ro!V1=Xi&*h2V2O2L(fu7Bo}&X4B2n~f zU!$_RZsh1D4h{|~`=0eqfB0;K@28tW2w>SWk0ox7LRddTk8gBz6qV|#NtH^aJoYp7 z^zhOb?3 uWiDU67;9>7h&43TGxZI%!;-n8wEj1TbK{B5NGa9;0000WP)`Q5?tj59obeby-AUR|b{@bs>~!*$bhSkC@X$Ba2>;$TV}|${4yOb`fp`t(z$+ zx$R;$S<3Q-`M9_C;-=G4b8l|W?V0=boKugO-gw~4@0=g!`#Hb!CITSZDU-=mWH11dn0G4IpbUHCHF@eFs zK{}bl<>h6X7jooay22ojA8KM9(NiY!z5y=U8A(|Gvm||U2cHasvR9sox z10WL2I{{_PS+po_qV9DWZb(Ydq3lFS*(K|qEeIeIg)MZxeT-+H8GK>;Ft?&bkM1_E z_8h}0=BQ;~hgkLe42I_4V8|+?S1i@vLXTdI!o~w>`jBKYnS6YF9Kk4ml>rN^zFEwB zeqh!)g=xD9=Ub0slzoStZP?OB0Ds@JR4UEuc+sx^G^~Q>myJRQV8%I#X~%aI-#LVC zZ4J7#)zsWIRxMPJ+Wt&!ZEbmvS|1EFG}m#OF*PRVzfp+AZAR-rJu0M!@k(1uS0<5+ zd4N>3`+GJwH=V3&sO`UAQ^j7sb}?LDQ5r5SKgSj`M`jBf4<2fm!&`SJUH&hMQ6|8M|s4oam`l_?a8 zQJGA(B$Z0HBoawLEEXF@BGK6U$+7ao_4|QZtoE5EX=+?JI5{d9$^Q@V&pd6hSdhtN5R1h?A$GeRKA#WibQ+m-6sf2Y3i$`Tc-E^N z8Ge$#51>0!b26C(9jR0bbZs`95exJ+ zVRv_zLELUP35;7nW*0U~>L|vUNd)@cj$~eRU<19i?SvPp`y8LK0B+{Y*^HqnGALhu2t7= z9|2Hh%?ANJ6=$KSFM_;+i`m-KnBjNh^3@xp_@TD`VV_o9M^CuA{W(asd?n|*u7NIeySlb!R7aSacz5>WE;9^0o}X8BMf<9{cu`u(_0YD- e&Q5Bk^?w15=i8y;o%>k;0000F>2yJ z#Jp50{XIN9>>L~%)JY@~QNLJpYVZ1;fl8%fkg$-1!xoDL4u=D7w;Mj64=$Gr8qEqs zFB&3k!g{fQ-;}&dunm7OnM{bs;|K%-pd@Cq8JnA%h(@D`NBxNSb&$(mqNTawb5mnY z@{WMonS#UNFsLUIiGZ3LjYbdzK}$pap9p$a5DOYGKH7`A$7Nz#K*Gn#wqstemj*l@ z4=u6TY|v`8pz6_R1U{D*A+Lt+B24B^`SsYnyEoI4NLXmKT0upp)6o!hW=dqY+v#yA z=pqGbxK;}=n*yw!3nM_JeO~wD@_N61RPgQ_edJlMPa4rquQ!_V03)E^g z^m;uM3I+Q5`e=Z9udlDu^|4nK__g>DA?pb2@)r1)-y*uEAiKC4rv=oa1Vl-wP&F#0 z=a0dmu0hPNfZucrTVKnd5tm}A_Zlu2{A5s5mU>K#EV&nu_P@g z+nzySwG=^15eTvqgNTC}r4rxFPNbjV##ro(6ZA#m^ZCN*>1k{bR!mEI_&!>N#j$5t zSLVaFT8OQMO6c3q;)hxZ^Ts9`1zlifa65KxB9F&o)IY704U9-I*vtgnYtXjmVXEpN zzO<6NwlJYt_z0)diSF)hFj?&J^z?MbuAiy4ww6&@eZQmr%29;o1PCdgL)mZ|LpKg# zW=agnn;vkuoG^>U5+>kXf<*F99tbs-q{L)RoVer(J5pSbN#vZ%QfK9G+DJHU@A^Mv W{p7H4O;zsz0000C6`ri7_|ADA6V43{+Gs zb#88rbi*Xa-rS3u(~UXzqTAie-S+9+TZ$>sg%9W4!+oA}zUQ990l?WGwOXAkm&=7y zQ&WrM4e|!$M*I%B9RC}p%4rP zJ;dFw=(i$%zfjPg`Iq1iJZZIBkxr)(jYh#p91aJ3J|B|FB+^L=G-ZN(dH}CG>Xq$n zjhTA_W@ZLXBobgAnx?_LTPzj?gF#jrr#27^>ye7B;Oj&$nqOA-vjPHNB+E{P!(kTK z+1X(w>+9<<8jWDalSvwpkP-2)fn7y{q^9~&s`lxVTn>RnYiny@VltUnh^d(ox!rEI zACHBIKu16)>2Hx0#-UUyQC?my;$&xM0GrK*va+%zR-n`A zU^bhfQmN3_*T+Ik>vFkZHZDUq@c>&ZQrH%{VYl0{y1ELF#{({x>th8BybCcBCd?R< zmYQqWG)O>)EzpnLg;qO@d7TAD#|DZ^ZfzYBFxiF8%PMFFiV)izLu{i9e(N|E$LgWd zJMcwoL_yI_{h<!UH6!rXb6HALP zz&_J}xVI0Kr3`azIfy#y5wuNUq4zfO3ky?u`PVP82T33hh!hG1JVEj+*MCB9*J4Rp ziU8TT=xQw@<~zT$a*veq1`dS)!s=Y@-bw82?9AY|Hcx*VmB8jTK=(}u$6OcU9x*$6 zWQ9vgILo$_tpb#L1PcCXucGN>*4|~}@pu`}8tQr;S3RWF-FcvVR>b`?hr&E2o*0N;1=MDdx4(VVfd(+ZMTq zMxvM+sMBSwG<3O3Zn)`mluoDfvYY?TduXCb(1Abi^FBQP-+7+*oRjYdpOO~LJUW5vA)*P<4k9WPN* zlp!xHc<8$dAa5pSr_%}YxLhuf{m94&W@l$i}u&e1VoRsd|PV%JRO$laDX2ICl7>Kl5Eo~w* z6VT-3Bpo}JZ4^L78BJ6?O?BviTrLNP!x1o8EEfJ(s>s@8EZ6j1!28IX}GtKt%RwlH=ftg21UejD!~~WWSAtR9TMn*AWOU+l8i2 z0|<*aH@sm4FDOM62wA@XZ@yO0##hQRly#(|{$nwcB%wH3unni9!s`Edh}WojiTP<; z8j4y|kl&IBUK1O+%^XyA=OMl>1p9Ls9{NY(^ZA0Vt}a++sZVJh#ISJyan%RW__+*{ zz9*NVusautk}&Lhuw`j?CWA!-N=r+bd5?2D8sCXw_^GBL(L#TmDc^%r z&vqiDWIL|Z9)qBZhXhe5{4;$VeyPkO>n;uddO?1iLOVKyfjUmGq4CHh#${#IPAKMB7KAG_Zz-$NU2qgPyRYDi-8^{UGW@v7L1(bmYAaBFzvS(ShGCfDAq g&DfF2@LOB|8#4yVi|tZ9MgRZ+07*qoM6N<$g0=sL_y7O^ literal 0 HcmV?d00001 diff --git a/www/img/icons/dvd_key.png b/www/img/icons/dvd_key.png new file mode 100755 index 0000000000000000000000000000000000000000..da9307f66d45c824e1dab3417fc1fc2cca1348c1 GIT binary patch literal 816 zcmV-01JC@4P)_EVp2MD zq8T=|l(FsRwsdn&ZLNL1eYtJ#?sIgK3emyC=edW^>vhj__qiMZIe*9E;$pGUXdIZH zo?g}K^*<&iCVuI3I!de6szx=c(xdwi5|hc4%fd<)PPyG~1Ofqs!(qf?F@!=PSgjVQ z2D=%xvP(0d=*>GM_yfOpI-SU7vxvvzAd;=EE%^O@q|<3+(=-^Gg3&OBr+xS5d!IbY zI}ng36F8Mhfm{s3fZRJA4g`ZiPMV~5kce84No-(h@-;diH)}Wn3m36%XQI(42Sg$f zPU7`?VYAsl>ghCtSjdKC)XH^{Vx#qLW9DAlo#Gr8R(d=hkf11vgUHN8~=dA z78WovGQt65-QM2j>Ll+ForHg>1x#cKz8Nt#m)}4n68Sj+*~CLcLW0!zx_x#Kd&W92 zK@Eat8T_B6aE@L@dtF)Nn1BQi^L59&W+VgSNbE?F*d0P}O$ypA!}>sJ=GX|lh^+hw zvo9MFb@qYYyp6cK4fOXLpzXC-lAcce^Ce!X$cLf-99G9JB1~Ney>SU~rwB0{f%DN* zb3)1;B!xnuoSU1&Zjk+y-gQ{EzQXcp0Crt1+o~EdM-6C7h?VDOu_hP7)Ga{EPd`KkCCG}0W)I%K= u`(M<;>`YHdMsn?pr>eSA&BDb;_x}cBh2mUtnJEDP0000S}P$VM)Y%`)vL%rt*x{`~HJUuLZBW(OY5bH3;Ke%|MO&UtwNcz=e^=WFtKJY&nt z%l@UMrJsw7i^;jUxzP0VwCnAZ>(<}(SIOq)W*sp*iMbey#gIrOkWQzO%jJ+tr4S5m z!!>Rxy>yzV#vDWS*8soGA9r_mQLR>y&*woQ(P$L$cpT+&8P)OyN*5t`R%T$cKK2eh zds=@5pes{zu~-DXN~IF$b2uEv`T0467A}r)ncYU^@&`VBcmq@a{V4_@=9{GLN;aEi zhD;{IAV)_>;5ZIcFPBTmr8pF_LDof)gid>}@<6X{;t{j+;NSo>LZJ{d(LGbp$;k=J z3zsPZ2oPh8h1!O3J2dwYA3$z)#{AP@*(XJ-c+8ylFM zoMgrHet3Au^qNKo8;L})zrT;u(^K^H^u!r}7S&7?LW62Gy>|C~kKjun%z}#^L)zJO z_77lUVgj?Xv#{B0EZ6JxSYKa9V`C#MLsq6)pW870dIo}yPVU+k*4Eb0+}sSi-OgI1 zpOR`8iv_*Cz2L}@sYW}bHA0d2+do6pXf*I|Z9yy+LnstNp-{l#aKLCZvRp)TW51a} zbUIyz{Ya$1Nmm-Qn%Qa;;O9Q0t?f2eS6AWp``I?!ZZ`x10W9`c3}7;u@(eIMJX~iU zG_5>(qDP;mj{zPU^k{8uC6G2qrBW6&Z)s_PL?Ve(0QnD+SBGg}V4zN+l)sbSl~zYz zjAGtBkA;N=xLhu1wOSYq29{HeoX*6^$VifGGkEQ2HZ(Nc=4iA18bTrRJu)T*jV xr6Ql}&Y?uw@m{S~=SbwqyKH-VdxQ*}{|kdM&x8`N2Uq|A002ovPDHLkV1f$qd6fVF literal 0 HcmV?d00001 diff --git a/www/img/icons/email.png b/www/img/icons/email.png new file mode 100755 index 0000000000000000000000000000000000000000..7348aed77fe6a64c2210a202f12c6eccae7fcf24 GIT binary patch literal 641 zcmV-{0)G98P)Az`{eoOom?Tf*9)f$7n8&|1&5M4#i^32;+&E? zC3Q;bRFQN#y*%%=_V)Mfa<$xe^kB0TO;vJPkN*k(2v-CI7)OaWj?&eKPos(H4wGh_ zIC;6#q1B5SMap5{(Hc0~XO7OfqZ=x{kupu8-H&9azl`L1pTuu^Znm3EA)kCoG=JuwsyNLEtY83i->Z~j3y~F)`RA1k>zTES07po!kBVS2y#L{jCt|CMY&v{ zxmqM|`OA#P2{R&)OcQd}v0kt6_Dh#`Z$i5_;q|93je3Q^PcfR{TmBHRmr;rWahz~G z2x-&;d_O~HkmKXt5Cd#Bs?-+qj3zOiUdU24KowBIUPg(gPNmxqX)Fiia~V*$y;5L( zrGNmU;81MA$F2k%oeUXQ@}N%bXz=qOij$4IYk4W=jfhDxfCz{PGXe-#ge#VfYTyoj zh4JvDePrW{lf(Oux2xG;VZmlSvDU+Qf@i=O!B`MLglhttCUHDIKkc7RvVeTifTlZGEZNAHZ7i+XD6HF1R0l=P zfyscSl7Z{b3aDs0m6Ms>RMQy=_$j(NqsYBiu(n~MBTC@sVniQ-D7XOPL4s1%z@zCE z#9N|hjR!nUwAQdZiP;?yq&uRRc&DJEnrMqqk0|m)F^Qn8x?}}ytx;sVA|RXQQLVw6 z-Q)+esR)vZ5Jso+9>FEb93>v#dzD8l7V^#ng}-dn>P-cNcgHd->U2#00Q?OKQ zcz8OiAj99uA_H|SPuZW&3N@X~?e9Wq4Gk3w0(oB67DQMxk;EU&)A-1l*) zwF(-Bfg`;q0Oz2az;d{^L@9A{Qbthn!_By>J%pVcu5B})M)9MP!_mWskZ#$7$!|}P z`+5u2Qa>-D{OhOAee6jGom7INCCqpO8QNurRMbW%$JB@W*x%C&Mj3iL2f>JmzJ2}B zsxKVD*jQa0xIB>v$lMc?Cfaft8sNECd2?0Pr~ovTHJW zhZo`7;X$R(W_se*OR8zHHsnH0(1X6wG?qmLRW8mX3QWjrC&-BgIgP4H4{F0Mkd5YX zg_2gTCQGcXb|K(*;@R7zNic|RhAfL84ObVj(rhejztEEy?Phh8hQPIXFT%&D_;M|!65~o_|==)((s!ROj<^0mjv8#Q4o4cZdw^<0!s>!kTS(r+Q&T!<%0QV&g zIu#0QcaBCa&9OMfMn}lB|3q?Wdf_{a%k)2VbaYTb5FW(i@x0&f7rVN;9<{f((^xEK z{hdR$x{ZuHCd=}H&d$yd%ex|q;;s4ldFSBZVDV4VRt`4A$DK~+WLsMsjYgxE&EJ0k Xsy$=Xcu`==00000NkvXXu0mjfruKII literal 0 HcmV?d00001 diff --git a/www/img/icons/email_delete.png b/www/img/icons/email_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..a9932b1ad5ee05b4aa191ace4d859609098568cd GIT binary patch literal 756 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/email_link.png b/www/img/icons/email_link.png new file mode 100755 index 0000000000000000000000000000000000000000..2c49f78a657c1ba1ec0ca6a28455721b20d4ec50 GIT binary patch literal 821 zcmV-51Iqk~P)@&xZvixulsk-;T#44a~v_p20ZGUos{+e ziqz?x2bDc`a!X|=H&x$AMYoNVcg>OOowMZH)34;Je1??Brir-Kni02|lNTF@eWxU< zNk%>3@}$y)izYH)GssfVp3xDiE3_bkWMX`Nts^t6W3>pK-9Ht?o9O^7?i6NLjsQv?P*iV0iU-X5Sd9M&!sd>k z-}n)V&Ti=SdNj)vcx!UOwiJe3ap)x zhTreU^71mwW;2vMYG|~5SX^`qp4Dm_$qtT$Tu~De0*V@+3QHb<@Jz?l?%DX)jK3n%GeMWMRG`GqGK;aY9f#^aZ zOePZ?4hJk23kC-Vah~@swT#Cppt+@$Wc};h+}xV#>gq5Bl$Mr`=jZ3Ai;9XMkw^s5 zntHTH0W_NhILR;mh%Tj488#RUA*0aU)W&v_?a!!auqSM92 z#VeJSmGRoz+9WTwtgP$?uL8c_qaN+i49)%pyygIR5QP`^00000NkvXXu0mjf)cSaJ literal 0 HcmV?d00001 diff --git a/www/img/icons/email_open.png b/www/img/icons/email_open.png new file mode 100755 index 0000000000000000000000000000000000000000..7b6f9813d41f1d95c8f1cf1495c2314dcf16d3fb GIT binary patch literal 783 zcmV+q1MvKbP)FGA|gUiBpPKsNC^f4AtjM-BOo6I z6r`2%Aq86cL2037X}jIFyW8#V&zXS`i5Q*a$xLSEecpE_F9(1-jh2z%g|>+>+9xA0 zkA`ml?cS-I4VJBEmYFboVFjV6ilGGo&n=#={}R-6x+aGgB1p&v)GVM86wScQ&nTXB zxV()Yx6hm^cssa#jvorBcDDqH1WO7Kif0)qmB@%>Gn58D97J7@zwm_MRj>bE`@}Bp zw=N%IUV^D*3FYq{D0}w<#cynQ*tSI0c9ar2tzlGk`gkVb2Lt-h!U1+kCK~*&K_&Eg zBa1QAcKdbiwZ-XEGCIUmmSv@bUpq<3R0cN(WOi1<+aaYj^vwovvBKizD$OfKf^3*t zR*wY-2^CREWpg+t!?!14)f;1Hg^#T$ZeGF0j);QBIfEujA4UQ4w zNg^VWy=WTlU;>5#6gAADc`ObgsZas9yG=GGSPAOrw~1)(ceCIa2^Lcs1{H>cG-|sx z&^i^zCubH1(vjd+-8>UG_jIg=bbMYEQ2D`$>W=jjJZN)b-Xmkum1P_Y3Lece!FpJS z!>?lC`#zZ!Ci@+_*F777byLAt?~&jo5nMJ|NvG*p4yY_Uy|}ik{~@5z3VKO`8J7Yf zK`WRCms>h+q)5+>IRvcjsPGB~y!!?`1Q)?g*ou&Kgj7kMY4<4@AgvzQmr(HHo5AH2 zwR@tHqVEVPBc9SA${J~94M{}<6;sj#nUXm~5M|xA5s~vvmM!jVVbes;o!;2_ve8U# z#kiJNIi=-SS+z^mR_#j7w05;_TDwNLUVq4q`svKor(cqJzj!aV1D~<*HB>(T#!&X?LweP`h!V z#f5ew2F#+kh=_`{(2cDWLBy7tHkri1Wb7oF$^3io``&etX-G&e+`Bj&F87>!L{-_T zzWA|n)Q0xwK!hlEuby~r@XH;Es=BQ|oSK=Ky1b~fiyf`hx;lOJKmBOx*5ppyZNQnY zZ~pS#)g`UB6YVg?ZhbEqmlQM~s!=ZT#ob{;{A zoFhq;@h1;+eW88s^ed&e?78U$KQ^2*kB{~9*UT+WJUhs~LIDwr0&yZF>u%v)#Hr6O z@xq}3d-JPrPJB~-!^Z8k`SC}FO5IqAV@F|cf$GPfk;!B>jF!OSY(VC<nfc3_W}hQUTZitf6w{8c71n-2vV^f1S5q93fvQmQ1tj zB^?@`daTGwy+Hz`LksuJ_dS8xX&mZOe^A|Uz zL^d@{{_qFm&m3WNIEVD|XPdoO*#Jg|a-^R=%mY)Gt002ovPDHLkV1h-Zv9=jZ#r=d=hWyU?P}@^H?N!+D;^s4D+csb3rJhKW>ZSD{se zW>rw(t_Xc9oXqah$=UN}_66>SX;I;fY3wMNTr--k1NCS;f-gNFdDT@E;ZW@!9rz94 z`pq8AwOk4o9wZJjJRP{n{DzRK$no}>V__jrL&E}+cikkP2KLq;(930j?KgF*42Eki zL=ueSr;C(^N<6$hhAJ${3x(x^$utsX*6`)d;Yktl4F`2J08pVl$ahAX21$za_Y|qA zNoZ-!uw|RFG(W-3>jpRe1fRU2a#d#}o_2r$K!i3^yBV1-qAq6p?pnTsEn&(6ux0BA zYA11H_eteeBA&Lg3L-R-sYc>4UO%n{lLhmOJgTT0WpUj#Ai;YIWq=B?y6H6DQJ3FH z<-FyXApCh>JX4<@q2s-viU{G43p_<^ybjV-MKRe0D+p2*KLNZ=@Sm?@f=a}vunDhc z|De~7Jiw$I36cTq*AKvKhbngb4Sc>xs(LN)$RKux-m;9POQv3gx6$Tvk=PfwsX@YA z8x^??pq^y-7BlZp6V6?Psou%pl_QhRvTXe^9WEPb_@ddDs^8H)r*SWY6S&eneEb1* z)0kA2FuM-VGD^>{QhM39e?zDC{AT5$^Ja&5PE|E^6w>on6I28s4wrbQhFJN+t=`k@X24nQI!m9kbZt8EmoWWHeFN=fO8(U#im?Cy002ov JPDHLkV1hIwPW%7> literal 0 HcmV?d00001 diff --git a/www/img/icons/emoticon_grin.png b/www/img/icons/emoticon_grin.png new file mode 100755 index 0000000000000000000000000000000000000000..fc60c5e1cd0dfd034d9e755302c9cd163d317a9b GIT binary patch literal 714 zcmV;*0yX`KP)1zIPd!!Rpoyw`fI~IH*r;ZRp=I> zLlsmQ7a^s>^~6cdZk{)rFL2LIrwX@BeP5$VcA&8uP><%8@Rxe=(cb`W z#GKM(=U}koJX*00zcGn~%c#qPDI+Lr#@K-H^8><#(bIM3^idIDM@)?>Gm+MNaS7J& z`83#Xhzn7l{{a!jl-3g|ZRP9O#jFSoJJ0J%0H8u|(9j>(7)Y1~x6a7pC6EI60xzC{ z*eq`C9X|X>#lHTyczOW>013a6 ziYkcELTMF}TV?ufHJAjLU*u6m-3q&Fo&q7>(^v$kkW-hB;T<&%?Nrq6!32@5`{G$& zc!RDDfhrIuS8 z?8Y3h*`bPE`v}YTiB=sTw={z-FjSN=Gid5W_!K{KCoc9qZheMGvWJpn8>lB-d`V&U zCXw=8n5yH){1jit2GY)Qx&5l9{+I=T+1n;A wo<0$}y{E$!z*)wfCFLvwhp+u5O#f2f0aLAAZZV~`sQ>@~07*qoM6N<$g0=}oVE_OC literal 0 HcmV?d00001 diff --git a/www/img/icons/emoticon_happy.png b/www/img/icons/emoticon_happy.png new file mode 100755 index 0000000000000000000000000000000000000000..6b7336e175438cf27c9bcae4669f9711e09304e0 GIT binary patch literal 731 zcmV<10wn#3P)l%u5=V2goM%QPGY7PBv-7BC^0g7Fa2Kgj6IQyYY!iS>F3t^;Y z{`dVv-isd(F{Bofw-%8$vKIg>me+{)A@}VXl%+GsE>t2jcM|EqamZ6;kUSPnE=BU) zeuy6|$S$@a+)Ca8AoGfHhCIrBUVy*v68!x);UCyy{SEN-)*vyqhXD>Owvbo=q+gJz zCkOfU^N3FMBN+)mjLmJb^;pE?#E-YTSlnhTG?QEa@O-`cN-qPdAue>|r>37@WzWyjAHen>@2_o+^B&_t+-Fms#M`L_^0`U`~aor)ql1d5Pg z6owrVjF7Of7j1n54cD~V+Wq~W=b7nXZIaQU<}$-D^Wh8g9iyuJPn7-MaF0z&l@1k7 zi;z(T6-GoDP~qCfbDCc}Z`LYsk4>`*H%xtJgQ?D-@mf%i7IOIIQNnlKSrOW6T6Aa~ zzzv!ft#0lKwzQ#%D*U(CNVtT$BA5z-ik%o65YF5q{4ms7cV2r-06S=ERhf?MznhZa zGrpJw`vq|!>WixoQA~L~vGVh0X>qPIVC$n@kA zgAe9Vv7m|wv0n;2S!@A_bF_Ik?_SL^JGp@R5EaWzcA1Gc%VZkUm>_}pGHl31$w(sf z+uZ2Ept_z!a-O424U9dTV*JG{cuTUO^>-YP_8i z`v#vMN1_$fg^2rkMu;VMV$!FWzJD?AEISTe*2Mszrd1b3X#X~G3v?T?bR#BKi;99M zL3}eC>Q11E<1D@G!$!0px~z-qtUQ0moD|RXF?n)b7)X-x9v-g}ON5Q~a~p7C&aIOn|YYgCp0srauA_td0R8BpPn z2tBHx!h{GTDqKz<)yndDvwQ>h)by!v&Ey9=O|}P3tOoUHEyR~z5ls#kL^zW>rq6x@ zxKVRVvwio1b*ItfDtz?~5`95k9ZV}h>t>7%h(6vSDn2{jeoF5*0d~}^R%JTYeJdqF z8DB4eT|!)h`uY!uD5fP(tfiZ;V`nQOZ0tC#3ju%%1Hs0jlqNu;0=RFCJ_tb?;2S)D z0%9w;@@stbp5)e{lz0XJ0ss+?m|QPXFQBf5isiuJm8e+MTlV)=P>E1m!7aWdp520Y zjx<#eVH+(Oq_&8PrMl#q|D0fPp$$dJroWO)7ikF^s0)Dz@9As;RH&(|C-4q@gW^n_ z)P@t}_jLmhPQNCcy2|=o5hVasM2P)7!BfE2fCMU*g)b}U=;|ezSxYjrmX5AoN=s`{ zX<&jR;^WwespUU-WW!gOL>?8$<*Lk1j#DkqQ7z9gJ2_4^Sp*G;XLe8vr?CwlHDxT_ zGwmXLNcG-GiG52YoFbfyu~<%n3Yp|Qx#SFO*$zzRAkz=eRh(tht_wQfG}8QSb0Xf} zf2TEn9AZnj(hGcT26c5zJWVXU6VE0}Zyr;6H*#|Kkly{x%Ck33zj&^+Z5!-Ntl3Vm zA^>r?$n$OX9iPXB3(j(W&qW>iV-^5DT{kK542p2bdwN_0oMpmUMx14M@1?(l>0jzQ Xr>}D#C{Y5K00000NkvXXu0mjf8wo&0 literal 0 HcmV?d00001 diff --git a/www/img/icons/emoticon_tongue.png b/www/img/icons/emoticon_tongue.png new file mode 100755 index 0000000000000000000000000000000000000000..ecafd2ffc542f88ec6e42eb7c57ee253ee7a3fcc GIT binary patch literal 727 zcmV;|0x127P)@Qs&9_62n*m}Y|JO&A-Hy&om}^zi7~6MB0IV8=~|D%HZa>m>>1 z@o5F@0^%~%r{5u>m|_=&;x^`akX^RiP9H-~-}B*?Y=@Dk2nqIPg@kNiRh7>~2S0hPs5$m6+LgMb;RDO$<}@1QWC( zKE!6cS$>1Nwl;~0x=;c2IqED?vnOk$Xp-X=5+rO8uG~&it73ER{s4F`HC|kZab<#N zJ*Yt?qrA$|v}K;RGj*!-bF4qyi59mr{rEy`GcNrUq?sG$Sh#jzw7Kgj6c%vxr}*Rp z>QYQtrcmz1vyuACd(>Zz9p5pmH-C%r^ffaep35tGhPtEGTM3#15Qob=i_@?8_++Hw zEN6F~)3HBx0buH?DT!xDgah8w=W=kC31=B|mXTfO|5B!Z(Kjm{e&X4d%*g-%002ov JPDHLkV1iW*MF{`^ literal 0 HcmV?d00001 diff --git a/www/img/icons/emoticon_unhappy.png b/www/img/icons/emoticon_unhappy.png new file mode 100755 index 0000000000000000000000000000000000000000..fd5d030ef773ddbd3f18925487a870ae7679b08b GIT binary patch literal 723 zcmV;^0xbQBP)nI31uuPEx(b2EPDKzMg2IC! z1S@@jQACFdqKw6YEZj=hS9jm{d7haL#U>dYYEHv2^W)FV{Ee#eKT-30!OfVgDx)f# z5TQ>MRCpr7vK;P}hO60nz*0M4#`U-gZXsRsl9|a;nTHdTwPU zDB&vwuq%j*P+$205yhlhNu+vMo;@3i(AGSxUjqOYMuWBsSxtgO1#qk6CyO94_?QRx zKx~LBy}(EB$aG%Fif0rc01#o&H1#8u0_w`BSPq^{qhe8SIWQ2S5}`K4Ej^>AaW~=_ zTo33X)quFA>X3>>U5xtpXKqm+BT*5E@SgVS8C58&t0eIbd`!4p;>FWBO5Z{dM}5Z7 z-Q7SY zRRtnU+2Zp(L1QcF+PCx%bW&eiMtlYJ5j$IwVVpI!Vv~gw2mV%qCO3uhz5jFCglR^LI?Ip4kMsCGM^*WsD)?OphMkxyJu0+| zkWd8`MnxD>;n9Ixn%>>-?4BSPc3M<;;#Bw6I;9CTQVwcSvx?mq!~4=dFG6=&hkn=x z2;Ms#TH5m3J=%p9AHrs*5N{0)a^Mu=7M{ZKUA%=?cq<<|D{t$Y9f1GdDOcrd=)#Mb zxLXXr93+)AoVj=iRGA*%B3=oXub(Fry}iDe-e@Z;FD_(}?B9Za^K;gRD$1?D@#%a+-~0vqwuU8or-y0ZV_*kR)~P8Gy0f#- zK#vhR*o+e@M@2ytHxegYc@-^gWo_auexB~edz#v3<>Yhcnphr})b-XzD$e1CU66pl zvt*JpERXch2R?V3?(5JWvjDL8)QO3uSA=$JNd$Qad`1JGp}?pA(u2Q*>0jyxXpdYZ THlv1D00000NkvXXu0mjf4(Upu literal 0 HcmV?d00001 diff --git a/www/img/icons/emoticon_wink.png b/www/img/icons/emoticon_wink.png new file mode 100755 index 0000000000000000000000000000000000000000..a631949b5126181d03d2cc657dcc36c0f2c3ae48 GIT binary patch literal 712 zcmV;(0yq7MP)(qcS7fXtvA0;;08>+3O7teOQp%zqTvQmk4Dq@*%u_^?FA9et#8o5RRGs- z8Z=*jFWAS8b%g3KO_4M^U0l1vRYZa%HuO90z%HmEX@+J8GM!8d$d z06T}c1obiBW)^t)JmNrICHXBid>uMJFT&34P5LEvxyN0giU_IY6+8uOR1G02mTbO^AXBl*H0onaP>T38HsKXOu((2x zoqmA{D^LOV^%1CB1+X)Nq}LuKnx4QG=~)JNIu=IS=5aZKu$aPt&Jo3_ zUXu6SXvsk)AGXcggpL(P`gF&fOm9BgnW<=m)EsX1DL#6Sx)_trk;+x$*~RQ=FSBEP zrw+C1-Bnheyk(Ax=UQ1+OJ%rmAHkXc#NiUp_sKCn47C@W<>KK>+V{s_0C;!PWX01W u!ZGiubwzNNC(hF6EbTRy|ME=#5eOSYYtbpBV}~vsBnU!_?2tr-P=|^T zED%wc9ezHgW@NMb!^uT_|SvCpFLJylbx zY%bpaTGI8IYXMN$9w<3j9VkA~NYOKEQXsj?6a9_hcwfU$acAhJhB)zb_w@MVUEy@S zX&I>K-R!bhu3?(6bHWIg$HEl7{9g>>&l_qdd+UYb(1~BCo9LptNq&8>!yoJ3Ui(i5 zRJ|XnYBklL!{@$-7=3mJ>P@1c=7Oc79e-V7yf+%lD2!I;Y&nXBZ>=B!5?CB>LvEx6 znI%n)qqi$#X#wKB(U7XP2P=+4{b@j#r%9-K(8UqtSDk>0UKzf*HM9yqMZ1D!$2MdZ zR=`U>0zhOH1XqN?nY@AQqB7)Fp4{v&dKXvb43hZKvnN8;Po;+jY*}~*Z|W9Q0W%{D z^T}Cc<|r(Su=1K=P5>Z4 zg`et&Va}tdzBS-G-ZcO)zCWpJvGQwrHZ`@wpM420ac@bI5~KkTFfGEM3sPWO8co4^fI6lPnA)Y{ef%@{+SnoUk0+dW+*{8WvF8}}l07*qoM6N<$g7cXs A&j0`b literal 0 HcmV?d00001 diff --git a/www/img/icons/error_add.png b/www/img/icons/error_add.png new file mode 100755 index 0000000000000000000000000000000000000000..4c974840e957a8f7a012410b90ff06a055534a5a GIT binary patch literal 710 zcmV;%0y+JOP)0|UoKa{= z&8FsYq_B&mZpt0E>87*hKHb{)+V{Wr9ETXWS}*)~Iqy0D-}9XJoR~5ld`QhI}Rf=kyg=`}az> z6_9YbOIPpz>6=3??LutnEEWbESt4dJveA!-IcBl=q-xF5yQ};Uf$LrUNN8S3D*2Ff zbrXRM%i3cFK@;Lu8FI-LxMy#JR_##yCLrM|r?xJW&qR@l7?7~ZSV6+xhV{>4L`-L( zn{2|(zGhrfoy7SL5v1)r)uzDtw(e8d{ETdz8%bvu5>_b@G;hAb=-4UTd36Cgx(8oe z6x7q#AXZnSLC#e&;p3i}R`Shb;0q98XrPydIV-D^%tSm zUxq-=O>rEfd`H~zffeL4LBfv>vcV0=+KF3yOwj$zREm=3`CK2oDueOV3ra~_rl z55P9C4@*z?V6ksEOpkZMsH}wOdL_E3Rw$?zHmsOxVLK4Yx!IzJX)B~s$7$t$JfPax s%FN7MvwKjApdjfaM3}Y5P)NtNS4FfTR?fV zd-U$^Je{j6ms;sQ$x0W9{2-vej@j?m;OyLe^1lK^PMq$}3&x@WMEwRh-t6*Cz1o?$ z>cF%nuOm281Az}gh&nMld>8cd%-U52h@9bipA$oD9`n;Rh6YFOJ#egzJJ9aSS18Hcm)GW2(nZvGY^a*Dk@ixapIxS$TyUW9VEi<~naf zFm{1`b{2!D6IX6cV&K;Zm@nFVL~V~yKksY`|V;Z_*$Z^m%-M)Z`*z%-lyh!i<5!3<%tf`X=mVpsf`mZDQ^xca3$ zm2*@k!+lW(Yxx>{D3kJC#nh!$1>$^GBwf%HQ#P_}ft=~M93TG)8Pw_BIl6BR00000 LNkvXXu0mjf|4UE) literal 0 HcmV?d00001 diff --git a/www/img/icons/error_go.png b/www/img/icons/error_go.png new file mode 100755 index 0000000000000000000000000000000000000000..caa1838d7f1deb211954f417f44196d131762a33 GIT binary patch literal 734 zcmV<40wMj0P)B81U&hml7ftTkzJn#82Ff)=N+_m4tia#>Z zED;~bI?|((@r+mjthjMa_A%$0tfL-QbPg*LnU_WAg~uA`bk8XfVKMue{f|q-zK6T5 z$+$@!kfN4#c5k}DXoQw#g?X#j%8Ke&msn`eT!P~gh zHx954K@vhr&4ZG+`hMNW>{NV8fvu^oY$D5Q1iV26C?>7a-M}^ zf+7V1!ylPMVQx91B8Cg`?xBTxqe=5WDy=kaC@M|QuY#QKhWa@G0EkNg#f0(jFm#fT zq(fIa<`(Bsvbh3LeZkN_`bKD^)UAxX(*OX?;)Z5%EeUj&Ln?`^^>#>7P)wMLOu%Z% z#{0>)_#PZZQ_%FyFws`rLW<6?B9I~^a*dRT3jsj_aVg-iIZ@^~jCT_~7#@6%x*tZE zq`GHV=^FpWu6ko=kNu#n>&wdlL2&yUSp1p7YT&3fgcO-N#0$9Ug7g~-`rQ^qx~m@y2OU8A z#zh~=7n#Z$Z*fx-GOtDf07cgx0suCz_W(2~Y(0tf@FX@P6EPuM_dgn$vj9LucO)%W zw%HgMW>=#oL>nZ>M&NEf08>)#)k<{$fCT_r>rPi=BV=hFh6WS^qqze>C6Ek}o{M5% za|@JGowu0t{&hgNzySHZxy@LTNh);YzZ2zSp_ zl$^T&Dnc|NLb&RD_!4>pt@VHdP)ZGER%5ZmWEe$lryR&y;2u^3cOkO4#6c%-(EY6a{600000NkvXXu0mjfxS2AI literal 0 HcmV?d00001 diff --git a/www/img/icons/eye.png b/www/img/icons/eye.png new file mode 100755 index 0000000000000000000000000000000000000000..564a1a9714ff37aee1c8758109113e434eff7862 GIT binary patch literal 750 zcmVWW=I5Rl}zuENrQ28Pt;CX(qKOcDU|M8F&Z%jVGSZA7t& zSX&s1bi|{*v*DgAz3ST9+K6Us3~0Q9*~BWe6PID=&0x|wWdf!IWgI(}6lv9v-FpSS zw1U9OL{Ex%ACuJL>=wxTZg0 zEf8`!jsrze5UvA~SqG-HeEY!{P)iC{?3#nq?S616TB~hnMW{0-6j9tLvf?&u+XiC{ z?O_E0jiYQZlqIojGL$5a1qk9N)mlxpmZq1W6gHT`ec`8K>j$jl3}`WfukS z{=!u2#P1a^U!H8Xl5T`7??NT1t zUc_pqB=&-xQ}oxwg~5^6HaUDuDLGXE;y3!@QP_pOFSc-kKKIu gX8xa5{%_a#2W_ovs9z>%07*qoM6N<$f|edvg8%>k literal 0 HcmV?d00001 diff --git a/www/img/icons/feed.png b/www/img/icons/feed.png new file mode 100755 index 0000000000000000000000000000000000000000..315c4f4fa62cb720326ba3f54259666ba3999e42 GIT binary patch literal 691 zcmV;k0!;mhP)bpQb1=l6TxbDZwj&S={?7%qx-u`rsG(Zp`-rh=e^=%((1yvsuf5d=&62Zj)Y zH&JviNS_F4_Hj|T(1j4$p-!}kixP9&dB4uv^MveG?dGf%sUCoc2!IFxD6wHRA2^dX zXRVk!-qSfk(jcaUKn#RP48(whfPlJUpApdrA!TQi_4D+fVoM;3I0gZ8{=Xv~Po;geVA+Em9@0Wq2 zr>OTZEGR05L=gf1T;ucCxq6Q6EgJiH@@-lVaAlQyw`jIF^c=&IVnj|95hHbE_cnt| zTzZQ?F4Ne@(bH(~&3nM%m)I@ID{@jJ2qZPjr)jhpe9hViOwH5k&|T#EmmL3(vHeUQ zq^!t^Al6JD;=mHq^Bg?J-8-zG2Od7gZbknG;K9czYjPqG*xjPo0k(c4%lPXTpw(qq z@aGMnxtFS(np+2kC} z7P02O874ZkJH$v#nCUVx$({yDN`IX@o2wyvTD#e`qN`_w5<}$3F+_TL{y z@MRP|R@VB<7X5M7OKHel5p5DuZd2LP^mcc@yZiO|gzD2e3w_4ri~)#<0Ehs9I+h%+ zEqXIo=rgYW-Z7;;BzagiGdi95D<_xSo(Ra@Z~W%Ib%wDs3!CdlVJHbR%eNk zBqEX^M6!%x7d^Y_IX0F9NuJokZTkWHNjLfP1ZTdWv4KFAA#mwDEmzYdY9iz)pX1ad z3)5__kZA_mImnE!wn$VIw_7&<^lA9oyNc7ih}sMe`f zNgGs%A|iT+dHj9uJH*Y8vcAB#udp};?0$yQ5Y;M`I%%C6Q4l|SsS&cb zW%eCnah?PrkZ)t>0dBa5jSGDIoa4EYZ#K%-HZMxcYew7JJu&^6oF)X4jFFeg7g_v) z*`ss~P%Qa8DVZ&l?c001>#pke-RVz!I)Bni>sArOjP4z58>V}J>-Vz$FQ+EKoZg`pMkVv{y%udh7U8T9PdaStfa-U#H$HMqJrX zp-9Zw+CxW)&Jr=Iq^YUZ-)%2#w_5(&+UBw!=T6$Sv^Eo}59loP8rN$~6LnNjLk$(w td8e)2N9}FOF=%aOMlM%>d42BE=>H4U@GgW~M}PnT002ovPDHLkV1nQTVmkl; literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_delete.png b/www/img/icons/feed_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..5e332b4cc4fdc60e44e5f3a5c2068bfb24100241 GIT binary patch literal 746 zcmVR2Ufr z!QE?>bpQb1=l6Tx_juY4x@=z=P6pe>%4jL0NnK<&eL_if5qT#RMdU$*Zh{&81L95L zO&DD_7+8@}CSp)*WlCA;?EgkB#DS5 z2$7NHSuX2M+-b(b(YnIc}V#wT?hhAaHw`@?Erv+6XC|OI(>`_97dr zWS!jm98aEN*Ek^1Xi#g=%*jbb#K7hfS3e>K(n$9xqleisz(YrwIn9l8)SKjW8ZBx> z5fS}kyzn89z01(Etj+S}TP$1v_Ps*iDD^tECXFUJQ5zBhvQBzNc;IE8I7QbW)9*8X z9yoB6VjHyvjTSYch=9K@^XZ#RpJro~tb<41rg9G#PO`pCslwi8s5NP{$w@`TNDE_&;5My3+ZMQK`iLm%dRncM%eu@YyWU%63k71W9ZRZb;@!wh^O-N1*>(YP6xI2d_Rfq-Kd)d)PS06D7 zF*ASds+dKMWW&FI73P)_-R<_JP=8!kso#WtRc$m;LyjCZG+DIW-1>&R6=X?aXDlua ct+b#19|+d#a=?|~qW}N^07*qoM6N<$g8W@n0ssI2 literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_disk.png b/www/img/icons/feed_disk.png new file mode 100755 index 0000000000000000000000000000000000000000..a158c998dfcbbe2f8620b0f54f7a8a6fc3c9a858 GIT binary patch literal 738 zcmV<80v-K{P)`Ew}GIDXe~09L=$a8VrKH@y}8$OLiM7__PonVT>udg01*JtVAJZb=e4pu z@3Q+J>zZArXc0?7AO=Dt24X-#KtLX``F*$j@inDV*X%M?!Q2W3wtwcIbz-E5h!hBs zoSB$nW{H_=-4YZnVuy#%0?tw&@Y@tUKj7w99PH2< z=fP)r>Mf3)0R-xr!n?u1=*Z1|{o#gtCfYW)PYLmqiLpY;!JUnP3xoHS5)=fq#+hDVdcokc z>mEP-fM=E_eE7{RuRgZ`0N(jx$7;GNiU_#9!6z5EeuaY_{i=3*zX5AM{0-o+VXtCm zcPNCU6cHmiGT5f~Ia}X}@th)4kCHdfFG(rOC}d+LRaMzL7%C+Q6qz$G)0&|7rOvO> zVO4wmy+6c2GfL7Z$;dgA8EYjah?(h!IJN@hMw14rQKN`0WWh)XK~7oDNz>GZ!$t`N z2HVtqT4U_|ZofaR6-wuyKB7rOL^3%fowDtXcYFTbJ5U-THyH8hC0a-6Z5X9j6k3vj zx7S}XH8wAZcKUxhx3Vhg=vPCfTUKp;+cmR72cw!3CzacU6LZW??0e$mX_M{aM0O94 zn;CD6wJAdoswYjh=Ug_YE1|(5FQiq2`<6}KHK|kHtx2_zl8{GI==-I2)AnBNe~SJJ U?f9j-VE_OC07*qoM6N<$f^rf`ssI20 literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_edit.png b/www/img/icons/feed_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..f1fde7a9ceeb500d97e5618ee9c0deb9d38519fc GIT binary patch literal 801 zcmV++1K#|JP)e=rfe*WBnrlp8ZPW$Jjl(9T(mJHUQ8Ae6R(RN zBt&l>IH@82B_<96Vnjt@==hy+8Qa*{9D{Z1*RJ(>qRN|EGex6fB>({d0096{!>qAn z+Q~RmG-~%tC7na0(u9~OB1A-i5D_Azh!CN%$?UJC%(rL7VkMnJR8ka%Nnzn{9$X;= zQUQS!qClfTa~mB8=r~)7K`KqiGB^Slp}NNHAGq@kn~xFEXdvRhd9qJYC#WNeDbF$S zB~uq!TO^%h-%(!ui0uaf5!EUiRcZ+dv49X!p5yxGgorrMHo(9!@77$_iD&M_LM?ZT< z$hGsr`!>ekQb|3O?|wyP?u<-RkCYeGk2M1jwxrUY~Lxr z>xhker-V#Ry17g4(KT&NyJc4&i`5|_)!^U>(#=etH-GL!`UZ9MAGLAs6CqubtoB&C zbk(+Ut86YNA%M`Jy`SyFwD+2?HLP^@>*zZong3KO(@Ncz`@31ufv*L~yrMGS)^8}ll)QBZ$)Ue6-@47m9$7{zw zbMwpzw=P_=rMO>Mnli9blU_W>jce34X~_`?W{jErh2}Q$oo?T~FZt_hJ^K&I<@UJ$ z$E3c_r)B#N(A`68Gc7r$Cde3zDlcoz6pSh;sq@C=R{Og<4e#x-HCfPm^SY+>gakDt fh>bpQb1=l#8B^Gr88*5;<+!eZ${N?VekMPBtm7fM%AcU^T;2fL6Uvi^hcrtqea zx-AeYL1q~@RuFPxN)I?AR_Wji15$M4tkWP^9KhNqp-&;}3?01yBG6*@jEmVDY6 zo_4~_;kL;+@*zTlEF)xOfshe0Kt4ohvhOJ1DCIhf=eYJg^%^o#LdNPXnvW0(BC-bEn_T{mzkgwU zg`rJ6b%a+>vi$%cqb%u{R0RbM0U@J%lfS+uWHbWfd)fOo4^8v@`z)N|+BpUl#elM= zPeVY!)P7!Ub8m^x0!#D!bey?&t&cR_j~$bfd*qAf8B~-N1wn+I3`3iknB|$bc;zIm zo#Mh5?q2yyv$eh<5;pV&%OQxHH%OzdI%ekNwwanRb@s)rRYb9W)x?vJ`R_qTcXWgNlNl{j zBL{4mVR)2~EH2+LefYT0$Yn!2gywFK?t4LK?v@Qdp|NR3KK8ilo%4&?;AO4hDJM*6 zi>SCT`LsHcVv_18#VExj#U#Zj#U!OzrIddEA0e?C7b@lbXaE2J07*qoM6N<$g0=E( A_W%F@ literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_go.png b/www/img/icons/feed_go.png new file mode 100755 index 0000000000000000000000000000000000000000..f2eed1ecf085b18d5f4f9679392fd5d9226c63a5 GIT binary patch literal 761 zcmVNYz3XHMWKZ)I$ZA9z+8kMGt~U9g5&Zh(&K+f_RX4 zs)%?{ECm;+D8`7410u4FBqL8ri3Nm+&1KHNLx_k2J)?|1$<6@|KhMH67f;j4Njqc( z2|++WbBrh6=7CqZ?J?Fa^ZARkXMlsx(l<({Lz0u_q{K?75uv_=y@Tu>WN3ofSDAm4 zvUF_jW$VeBH>v@RWQ(jIAqa@@&sjcsj`?XeR;h32zL)5}iJ2)$*0HZ=&{O3FX(uBq zNr?r7Ko!_pq5TER-)XJ=s;Y8nnMw0Z|DFQ|n}=ObHaxmD=VWKZwv<>25w(i(7pQmB z{!;$mc@GXht*A;xStwPOu3dGf2epB*_zbk?Xr*KwcJ#s53&)mg0vtj-1GZeqOi>`m*%{;`>0#nZ5pPc&ck*!nkF^1l*o}F rMT!JD!$YjA`D(r}P@rKdS#tb;x8Nj$twIaT00000NkvXXu0mjf9~xne literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_key.png b/www/img/icons/feed_key.png new file mode 100755 index 0000000000000000000000000000000000000000..156bfa97196cf588f37d632622df97ebe44e33ff GIT binary patch literal 771 zcmV+e1N{7nP)$D~!L#YUl~BZHvq649ZAxf5_EO z>2z#tE(pVArP0&Yr$1tCNned9B4GVGQ*U$iJe3u4-8}O?J^S6ed`@fYlEP!hRc=p7 ziX+yts>RSFiinXcvb)T}6|TI;?H|c?^Yj_DG$=grl6G}YS7}JvP5IfwD#s5?bs&&r zoH#?ShlQV*`JB=SJ%iHw%9Q@l1O1p>RvG^^ygS^39y{hqBmzj)x}YqG}oLVMd^Qx&;Z zUDDXKFE{ML>NTkbvKHEWcbZ&*h3hK4T}scruCe-wG%c9DRM9=(abU1dXz!I2`iLYS z98y%?bHe?H$oCL4`UX^O+w)K_t#z|MZ0W6*Jo?B1u`4g8Ip%M$xi}f>FDT~ACX|iq zpoJQDiu+X`KB%^~qxk!*;q4t-Xdp%2WbLlA{{tv__{?i0Ac+6~002ovPDHLkV1g3t BZaV+~ literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_link.png b/www/img/icons/feed_link.png new file mode 100755 index 0000000000000000000000000000000000000000..c45a534597a9bc21d7763c6672e5ab3a7fdf2659 GIT binary patch literal 806 zcmV+>1KIqEP)e)p@r>Lu`Vf5 zW#SyQDjfx$ew|kj^TZG!BFm^}G#fNX1cZpk6@LGk5Rn8HuVdYtELhHS2e^EMYo|z? zG*Yq_b%KC^{>|+DitV59)GlTwIQ;=P&H@|WrL>MTrQRfK(jaIFFaZQp)z9II3+#>U3nY^;)ikkhxug~^8Nm4EFS z9(L^0_ne=c(?2j^?b@{_9?iLU@Sy4GXov$;llOAY$&WU&k*g6bhicdd8VQ z8-|C66^li)v$Lwzs-s7bDnCEy7ZiFIN;Hr+(K2xVoSz>JfYHnIwAu}$qoWFi0;tt$ z@@8iA#6>&a*{XW$rud^lz53@5DGr)HzuVdIY3W>Q)%qcG&JOe z?b{8k81&cpRoBL^Jc!bl^>+3f(XZTUF*)1gv)h|>FL_eOye{pWJ$HVvFq?C1=`O7( k$kMudm8qEpGY@wD4`V|Pq6VErV*mgE07*qoM6N<$f-*aKT>t<8 literal 0 HcmV?d00001 diff --git a/www/img/icons/feed_magnify.png b/www/img/icons/feed_magnify.png new file mode 100755 index 0000000000000000000000000000000000000000..3023695d8c6c1e1bae579de69a9c03bae48cb968 GIT binary patch literal 737 zcmV<70v`Q|P)Wh5E$7yrg zg2#?^OdKI;5K}@R20|nTVn9MbKwYu=Tc`QMX{l7l#1XQD$vF~q|K!dhF_J_?5`;)y zGcrbdmiFmR3X%qKkZ0xr^AtN=KgZG;s%-@78i9@53_eJosE?4cyTii#dlM8xDA zuYSu5pYrHQHkbMNLsotPW=}COLzdAiDN1rueMkss3^RU^@q-+i=kjMR-7Iwfxo$ff zFwl5YYxWJtFT5@m6+KcB0e7!(_8r=Xd19X7ahJwU*(`=UJvAb2B)a!<8(W!+kAL7; z?k{f%d3w>q+v8oKznINzKvsX^gOP zk;QLpw?5HqHk4VZUz3%!!8B3UDP=`Y3S!OpVW#GQy5#CvL+ysVs1y}tzXo++cV~yP zCMN=cy>*IRVEqPJ=D^-HTYHt!eW{_r)O|w@Yj+Fvf7h&T-J>Lxqb^bL<9jq(tXv^0 zJ@v;|mNrki@z9I1T9k;(ZX~Cq9K1%eEBS#MkKBI*XX`r^Xa>XhWCbuJe`$z&$u+?!#3$#k($ zYR7OtSWq_`d@g`$Q!*K&ZitJ+5!`(XL1V(834FnW{-jyU1<<@%I!hcMIOuP83PwdK z*l+r5lmxLch5Ar*ZfG!cXl4Sq?@jccD}`>kRWP^o1)w)Y=bn%cFn5jGRP`5i>mIDv z2FzDFu0Fd+ofzKNG34TD{s_Gn3P1j6BN;?lB8iM7+R5OhhUVH){t}gE0;iXy(&+6F zVe2~Ed}_rA#R-PYEZsRSiN$aE&zM0T3!L_-$#*xTexwFS&LebIg|Kz|gm0{WzxgAP z+8bw8?LkA+?uyz}@w3IXZ=L$e>JLp?JK9_dQ16R#s!!&07-##4dm(}|53Gf@6rdFA z8GuCfNuhL&K=dI04?tQ!smiP_tF4idL}xi0;rP>1z;BVkXSJz1o%8PH0@!<3s4|Hq c@8sS41@Sp1TCQ_Hr~m)}07*qoM6N<$f@uN`6aWAK literal 0 HcmV?d00001 diff --git a/www/img/icons/film.png b/www/img/icons/film.png new file mode 100755 index 0000000000000000000000000000000000000000..b0ce7bb198a3b268bd634d2b26e9b710f3797d37 GIT binary patch literal 653 zcmV;80&@L{P)WO3(`_cf+b25@DJ#zdQm}8GzWtq2-QnZ8W6mB^kfeK5f%S{ zUW%tGMCwrwic~ZrQcG=4f?5bkV+3dRk8hw6bk~y$KX#b!y*J4EJ~>;dRASqrSu;ZpM>?P}K~6AT zWv6Dmq?v&9LdXC(m%WCO6ma_di$R(v$@ad_>@R41N3N5lSJq9@6CGhX84-$%Xrd_6 z;){?{E|Ytt5$S-&Au>t4wDlIxdkfe-a22LMj``McG};r8@{GsRPm*+8fFey6C)@ifDBXVyTw(N@Xd41b45OFg6x_QA zpwLiigyy~cVoPxW^r~C7ZQpr%>1$*HKmv~AY-qJw4;gUecS--wnqslISSS=^KA&Ic n@BK|Onfz#3R%n{$a)0j^sqv5F(1NTL00000NkvXXu0mjf3S}fX literal 0 HcmV?d00001 diff --git a/www/img/icons/film_add.png b/www/img/icons/film_add.png new file mode 100755 index 0000000000000000000000000000000000000000..40d681feba594596c64e0947b8cae5ce9086f919 GIT binary patch literal 739 zcmV<90v!E`P)GL6il?1Z7P2*|7g?{OO9$@TbH1?j^i>BB&)xBSKKI=BdzS+s=YPijNo#8> z*V5AR)9?3h9JknJv&E~ct9MK$)0#*?;BA_wANhPfI2?{62Z2#lRW+c~=~hJo0)xOm zJRVPmX1?&(C%^N7u`S*k-QpKxJ^Z(|9^Pm)X0%%ELPbRdL;|nZyG-C)6h(2$>2CPu zHV}LVG)@CAV;R;g61NZ@w6lP;HQ#_4pj`q>&t7&BZ`>!@b{&p2>% z;uFft%U6_2<&0b|Pl^NtP7rvQyz7!PR)fwp2bz|(sCys8g|R5kjl@7;mcYXji6kKs z)YjH=1P+m;7l+bqc)r<%r<)y!q^=_J`7#F6mmrhL*y7^iP(eWfClc80_O#V%Wl0vt zwop`5#OLSdv$?ssX_0`yoW)`Zk)#&_^V?|u0JO~k^enKn{t&OHI?)`q?>5}4fxY|e zuBk)XbwFS?n-d0uVVESnbhw2(ueuR>LE$YI0sECfc%li8@ENF@PxkK%^m=`=va)i9 zBrR&;%I)(Q{dgav@drZx=%4f;JlQA+e(wti%o3O;Nv|Gm!E!^6DEAou9&c76g5d9W zURG8Hg+eh;lK%B18OT0MwP%M?*Rq2fby;=r6z($h=w)1caPPQFyo1ux(o9K72}LBL z^bM2>7yD0RfN}3VS(t_E0~tuA()Gf^!c1OX-ojCTB3az0XgskiY+KQ=H}?tm{{Txk VbfZtx1EK%`002ovPDHLkV1hC*Sxo={ literal 0 HcmV?d00001 diff --git a/www/img/icons/film_delete.png b/www/img/icons/film_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..23a2508c5cb8bdba45e6472961b91d29efae0f42 GIT binary patch literal 730 zcmV<00ww*4P)LxFQii)DB zo36qj!ATU1Fr*8$5YuuNd_J?HeSTut3w2Y&E!&h!7B=Q$6DS(b(Wx$L<^ zG#dS2nx>EV-rn9GC{!E{hX-|C4@fCTJ3BkKFB4F(!Z3`-#K}k`Qm`!wXK5q$t?Gb+ z4&o5mbx%{9EV4Nuqy=FDr#v^Yr5I>D*JGz}J+UK~v*ivH93XBJ!@cTVp5n9I=5%w5 zyLkdN+{Guk5aJW@kmz640R>BldP2I?KEzY+P^a90&8S3I@*w(Wsv*P)NpC+wxC#k$ zB0&$Uy$)b^X)$I*GZxY{NX~{ZJnzZQZxY!W?9LT#B@~m_{|d;ik-$$VZ!_0Ws~v~KDE}>)eEA-mz6>LD=A!2C zS7C7=rVhrtuXOKKQ?@*TO85!(XA5UBqkp8%fW=oaRMa0v(dXA-kB-7Q`V3{hQpIA{ z`TP-PiKoQrm0KuDj-hD1AJ`xL_YYj!0L5fw`6C1=e2ggD87JaXVPL z?*-O8Z$@Tu5^1WRpHpBc7|$0_R==ld+Jjij)Uxj{*iNkLiNjaQVOLblPfLtVF~fp& zi{*ajU@$mDf^uSDWMrgnk literal 0 HcmV?d00001 diff --git a/www/img/icons/film_edit.png b/www/img/icons/film_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..af66b73f2097d34f01d86c6a4a4d7f1980f94dd8 GIT binary patch literal 855 zcmV-d1E~CoP)l$D+s&Mu=$; z6r}`(5yA|KE~bWoW;aJ}R+>6%H+7ruIos)3N#vy$exDxx|L1+4|NC;~<>l`pkw_}x zs;sOuW0q4~T>L>4MYAMHj>g8ujDKq?5~hd4;oHRF($Z3SHUknzsUQlb*Hk2oA-0pd zm~^N@idDpbNitXjIFfW73$#Gl$yODK*Abc14HP7NOH>i|*Zd7(T<{4BjX{tFgWyEA zpc94!#@J`#7ST211|&=%))A79@5GDo4lGw*g(7T$&Akm>UMmh{s`e*ofS6s+}$NBwN{M(cm^&sus=E*n>5JUWHdv~ zX&}Lbaoq@zat9Gk#7)MqCqEFkck{OSf*}t&(-L@{7JO=|y&N@2AhsHf#vI$3fmt$8 zU}Z)yWBY@gIqQU8ON|p-^%LGb63`k+fMLTI203SI>Br@{5K zZIq1$3YVUG()oKpy1tL7C-`UzMf7saVi|VKd5+|)Enq{nP^x82_*2o}+!~RBf$YVn z+dKZoNS$*?yqic{Z%CDu-QSU`+Q3O%G6uV^L7%Kf$h`nxn_EI96gu?j z&qES>{}`s6JjBIWFwoIGcD~;E<$k-XlK#xk=?0uEPyK);Yv%@+E;6cCWSAiH6R(1< hk%NVo-a7D~^9#54wyk$25e)zU002ovPDHLkV1gTsf-L|5 literal 0 HcmV?d00001 diff --git a/www/img/icons/film_error.png b/www/img/icons/film_error.png new file mode 100755 index 0000000000000000000000000000000000000000..88f3d69bcaa67e9674375232e16f385ff7370776 GIT binary patch literal 800 zcmV+*1K<3KP)4(U?CVpBcg61u#2F`i-AOS z6QvhHNLC1TSx})FYT3sYZjgqW&d*JEK6^$g!|lM27vA^%|ITyH^S+GV@BgYONDo6x~8MxPFa?p66bwBpPETP;UsND-NrQ?1@%M&*+qL( zn`F@FAxJ6&1-M{u$M$UC?Bx$S3Re=v8wDB)4ioo@U?2OCi*fUu#%SYI&c=n|<}BO< zCkVnX;xRFlRsjXgL?t0v*g?FDeL}hR9yGE8z0u8xe!oH__wZ=~niN(AdusV2WHClaC`8Qi7ueDPg%J_)Y_c{U zwpaV_j4Wjmn2Do2&zJUI9Z&0kp4FhKHYabFr;#~PJ-L`kut0Q&!(qvBv%8F=E{HN9 zP(zz+4`7Q$U@(?2=FNLi<*^vQcO9#6HoWLx?*jeVETWLmeoWlPf;Ix$z61VyS2TW@f zloF?jf`hhv)yWm86()~*Xy!Mpc^)Y7VahI}%?zsk|}Qna-_RO@suqG?RMAG|+MmOpXj9_^S0eqpIl_@crGgX;oH?s-jZ)N($=w eh~%iM1OEW6IIf4)XAG_Y0000s+KnkY`Eo6h&V=bWA+7NR@wyLq4U|DET3pYsaU)z#lsRm~+9=1NbpotRP@QR?BSgMY-(!CUtKd&Fi%mGr^Lm|%1SMffWkU;#IdzCBL&UGNwUk% z3w3;hXa?gNmU=Q(-80<)DkYZ9q5-ko%lN?eIUdbj+ zNQ|)`L?h9?t^*3D5`Kc)lD^?%tP?)NJ&4LSybYf~_iP~;JICqkrwCgjflLIcSm-hX zC7Z06WmSkScoB}2V{qQ7?_VYKcURCGd(G=TlEDO~ z(CBCi0p}ZRwi-}gR@J|x$~&{u^2NTfu7%?dax5>aMwTT;I$0A5atT96>=BBk3YfJF zh@+)=F+%g#I1b!O-j!j`Lw@>R%*SKs{{1;xde?4ixgL({f}|CJkYXH0d-x8DlCQz4 zG8`#53q@0*s0vhQ7>|siFmpemY*G9g`VjHn7VY{LBE)mzioa$e3H2M{(9cMCAqXOR#lX@1Tgnr->YYTBeqS6v!3>T6kRG3WqCo3x$(B3 zLi6Ce2?`$`uhseluh-j80yoh!G&JN(G)7612HZE7ww8Df;r(Fq7~K;+Jh1#9Xj;Mx rxbAV+2r)%9SQb^qJz1*-|E>Q8ss6iyye%@B00000NkvXXu0mjfIy`F+ literal 0 HcmV?d00001 diff --git a/www/img/icons/film_key.png b/www/img/icons/film_key.png new file mode 100755 index 0000000000000000000000000000000000000000..58921624ea7ad94f49d7503917298b534f9dba65 GIT binary patch literal 835 zcmV-J1HAl+P)!JGa#`+3sF6FCXg_P*h=nl zVSS5|%jbY8I+zCREckVFm@dO7|=`h%V0s3!wCy#g@Q7qq;a6=GBi#`J7dsP z`Ca`gZvDuOsu!8@kEiD~^tBrXTun{Q2#KQ(hhuRp7Ry!wdV71n`Io4%#>VO*$ywObA>YN&Z~)`FsN&kB7Njt}b2I@tY5~s-I=Xj_awxP5R^J z3U#HsK<9aW=? N002ovPDHLkV1n_Ef++w1 literal 0 HcmV?d00001 diff --git a/www/img/icons/film_link.png b/www/img/icons/film_link.png new file mode 100755 index 0000000000000000000000000000000000000000..0f24e86e4028717876f6650558d2451ec644bd4e GIT binary patch literal 830 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 D3;i%v literal 0 HcmV?d00001 diff --git a/www/img/icons/flag_pink.png b/www/img/icons/flag_pink.png new file mode 100755 index 0000000000000000000000000000000000000000..5f15e526c0a3244f5dca94d7d6f0eb8f28e99c7c GIT binary patch literal 651 zcmV;60(AX}P)d+j7)2IFP!RM|;6qPprtQl^u+-aqSi}MFlnvfmsk?R-o-Gupj{b7%)rcR2bHge)vq!@bbYa3An=n z<*|lTk-eWn&pM#_2J}#jh5#E?Hqhx1em|E7pr|gu(nJS3ZXcC^EDmV1+m9pV!$%HW z@&OeT^{bRbZCeSMpit4>t>x{(+5)(Ts-WgpT|2$oPW9&jRr7pUO!00L?qAWVA3t`b!EDVfFf(juaajm2ewGR{_!ijCMa-%ku z>$op!<~*r02llbqYHiJS(kyd+tkv+ibN;>WSsXOT3wQD7h4Y^0$MYPXQv{%>ko@_!-JTr^1YfBMxRMTQ8AJL!*9Aeer6K*nRJ;@dF@_iub z17@P6i(vxv1F@bA`kEO6Us?`4JQ! z+XpBxssP=ppWO*3a76=;vz89E!L&k7RBB#s#=4x|`{;RWi+t!IE^*bqWO#wVi zZaDrJ`239IDQR~A@SPN4Q)MLfe0(Ho6*XLA>R!qE%?Pz?(Q&$j0%Z!&arDJqo0|XS zU@}q{la?&y6AStZF0gbbNC9Iwvjvd{hnLO2;v)S6++;8BDhT)x)T;{uW2MxECPn{*ELdZ1op0xyVpxzDdhz3h^YVPo^S(T97!Wp}{CC5s zOO0&MCbYN{*S_u5sKy(UFm7-Lr)M|odnZ1F`|tp z;QLC~;7ZS9V!0QqC_yL9nVW1CJTMZN4M(R$+ zOTZBsFr_4h`&3JNv0I_O8fwI~`z}0v3|$@I8UFpf@&;uE8s7DoF&~bRfJhmzX*a6< zs}(O~Kx~cpZxH}pS*S{qZRPWYW?G`zW8AQcn3#1@S*BcNV6f!zir{5lPjYZSt>eR~E27PJ0+es0y~s0ch&nN;M*NkCc% zXiQ#beHkC&om4IpK8qPut?)aNVjs<%39&#|d3=N1!OZi|I!ONj#Vr@M%?lVEC`+Fg zAQwL{?FfzVoB-$9WC=Ju7r^r86-w*!nR~wgLM67#gs;7-00000NkvXXu0mjfgI^=` literal 0 HcmV?d00001 diff --git a/www/img/icons/flag_yellow.png b/www/img/icons/flag_yellow.png new file mode 100755 index 0000000000000000000000000000000000000000..14c89a5430dd9e34b445564c972634474d0aebf9 GIT binary patch literal 671 zcmV;Q0$}}#P)h~F3KnqFOq_yZYrcmh=dA~yr_$e+EQlLNOGM%Ml;i# zU7Vw6Zfq9mSh}^jHcU1p^JCLZD)&8iwzFjZJLh0y1$p5v{=642&yVMMd0qklkxl-4 z(M8=Y*1b6uGPP|>4YuT`RLb%n4=(L%zJGQLxM;W>UlFiB6XECJF0cUu7*7+ty}2;F z$iZSFgb#K51w;U7TAHJ!%Yznj4XknkpGg9?Cj=tncaV(Pu*kZQi0HutwHVN~Vz#dy z?bmnnK*b+mb6>}?_`=jZ#9R*%o32OVJB?(ZAJO?1uu&s|o*D$)H=w90g!f}38ZYGW zz$O8p=(;nXx{H4CfX`SUBs_Xqz?h(#i-rRvaF3io=dD6abXW1kNIxP?iIpSj?Wx$b z3_jBy_|1Dc;0l--67ewKMJxQCo0xJ+mkbSu;p!Ft4Rlf0oS|{aQrJ-ezvUp8Lx_x3 zf|*qy86QQ=Pa*1S#uu{;V{K(HlSg^LnFh2}S$JV`x&48y2sa2SQ(^A?I@lE=Sas)EyF>d_)lVCHYIEUy zbsEa6J9wZZ4XE4CdrjneSRacpBp1O#uEo2il0@cCa0R6=D|ZSVWX`|hBK-r%dTNTZ z0=`-mC$j>CVtvDr^a`&E=)8S^2dY;CJYW8W{JA0X?l;dl(LPG4VetR}002ovPDHLk FV1l@oDiix(K@^6+>g^d@v4;gkbWsEoXE%32*i1tcpTNXd5CcIl)ECgqz|2rE6EW}s7R?kl za1q`0GCkMruC6-2LANtwVlsgzsp4?{@7$`KBv!G66>Vie3h?3OmEEkjwdLG0PgLVi z`!N((f$A@n17Ldj#`};0I3@iHJ5M{#IZz|UIYRm4(!uV7eYIYIwQf&}_2J~}>pQ^n z6o8--^T(=hkBNQ_k{-_GWE;FMW7!p}f{NG3nHZ{D5<3d8&tLh%a4AqqnjMkr3m&fkMdECD3N5}Unig5wy40;>lo4j~k+e}v)` zR6)J8Mk*u=SpB`p6o)7j?S0T@9?bz#m@l>gc*zk__|*!FMcHwP!gwLJvS~9c0px8E zWg@#5J*h%>dq^uaFBvVQ$3&c*y#>&P@VnG_z zkezqQ&je1b~~$O}L9 zo^;|X_f#3CS5n-cFHBf|3c+u^PpWoka6G0Rsr|AOXUJ zbHD{5nUGu>5YB96PUmjGgM{$-j5TbT8bBGbz2R zHjvpHkWu0*cCs9&;{|Ugi`d3|T+)Vj%kXX`qqQ>4W)|B!_mMlW`2x#YyU0W#8Pyvn z-<;pE4zUG8k-yYxmFW4%eIAbtF|hR_$8YW;YMMc&ZY1$9z5S(QZA)e!-q6)Y`+^>Z zzdYprlOaC7jZYg%{Ey!L(s5u9Pz1(+vk%UU4EzNDb1nO~@as(g0000WdP)hGNhxyAUiWDzvzAp&MOTEEMdb z-KY>(MO>5!t%8VV7Yo%QYGN8YNyf}*Cds_{bMJfa-s57@1`%R=;N!qq{J!tNIfw}V zSC>!nb?#@X*H7?^&ws3+j;XJ@K4fRgr*T&=dxA;QrFmAo*X`tIwBNtPka>1QBzs=m z{g0)1*_R&2(GuTpzQa)xj3mu(+O)`;Va<)v(SK@8z+Ic0Zlmda4xjavYPGDY5 zFf%&E-w*RNuZ&sW32iN4H3Sv-bCerFjl4%J8W&=wzo+`*5{ckf*7fdTVFFB8ACmlrB(d?gOB#nOp>jh}F32Bg8Hs zHo)l@AP#XFT#cr*Cf(hD*f!GL1B^eu#=Y0Fn7|<7VqEkJi5Kb+XFy^QgSaYUE4Vm7 zYye8VbvHhth{7Uq5sByPvI|SFI6!O(u@%H=oXG;{e*qG@xwtyp6qQpMT*ebgg3Exk zBh~;R;?=wIELLlg(3vHGHsAjBk| literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_brick.png b/www/img/icons/folder_brick.png new file mode 100755 index 0000000000000000000000000000000000000000..5dea9769a2c160625e9858f79e3ae16006df4a08 GIT binary patch literal 735 zcmV<50wDc~P)X=_7qeB4SLW3qiVT!56v^ahZ*4{{+FMqC1zm7hMQ0y6_JWp?^RP z)}pkQwqUW9(#A)lX)>AV%w+C4E}~V7^#_Lo7w+e9?lr2)zf!B!ysfRRVh{wQBj`uX7Aw8)BgFv&O-ky7BrtfQQkXqB>oLV@q_ip*Uq9`#gONJQNYY5h)(}H`T@yzctU-I Raqs{D002ovPDHLkV1j*fRJs5F literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_bug.png b/www/img/icons/folder_bug.png new file mode 100755 index 0000000000000000000000000000000000000000..4f791b684b7b97da5d64472b33d5820f762abdf1 GIT binary patch literal 829 zcmV-D1H$}?P)_96=|(GO{L8?@n2w;q7vUL+;Fb_ma5X+-J+XMx7AJc51J)}zACp) z%^6jl5wPj|7Z%1!Udmz84g)tm_X&z4LmRChyo@%_A)3v(n%e49GdfuRb({LGe>e`S-g&F#K>GgZ z@7yWn=_};uY}~;|XFsLxhGc#|n;kMYzg>H|c3xAHG1F%H{E|6zz1KSQ>|T;#fqpwj z@8~@`m$p-F319y93x5@cnC~Xvwu~kk8#+!^8)HBLlm=s{zrKb{Y7v))2e>v?VDGXm zT)KCGl~1)(E;!V>W`&6SVG*f^1hf2+kBNgSNX)~S6t6zLoo_Dp;FySQ>6QGM`<1ns zS9tI96TIHEVC4NHcdr7*A~Xq=fHfN$x)l@PWTSBrjmxNbh@S=U{sm|t6Ol7MJ1o_tkW@mo8YBg}5RH8x zKoga05;3vosRrUt13druz{%auqr8YA#iK$2b1^{lv#HYG;1s0PmeerU00000NkvXX Hu0mjf;2(pv literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_camera.png b/www/img/icons/folder_camera.png new file mode 100755 index 0000000000000000000000000000000000000000..c9519416dd4c314413210b2cf30d803e0be7b4f0 GIT binary patch literal 729 zcmV;~0w(>5P)9iwQ23rWgy{SU?|b1z@kNMgD|5I z+C&Q%F0?XIQ!9zYvT|nLd-uKj?)|p#M`Y2aFB}e>#o=%`UnL^^&-uHB!NI{H;L5hK zi0r@^!|?F1>hJFttu>>gqe|^gFfcG6y}i9GEG$r|R2Ul@xrU><>lpfesbOYjhPJjgYHMrh?(XKzmo}{m@jUWhESy>^U&l3bevp@g1 zW4fyL=uxFS0E)$9w6?bL=tDhE-+MrglMRiuA3n^)!~|VkUChnR(b(9CF(&6L@s2c| zxSLfP>8tAq)-W zav6~t!~>O4h^JUvTO$m^zZe+hiA%6a4spWz`Z}u%lU%Etrb*_1>*rh#zx%1cYGg(X$qqQbU60+GW`RY9+;};3T5MvBJ#=|ch zV1MUT_IElCMiEsx!}x;{#Kr(<9bi+9wVLeS3$z1MQ&RxrK1M{W#)U5tyMY(JB@x5v z6Z;USQA%*eA=V<+P-y94@%9a7XJ^&s5@SSMiZfr3bOV%+*a}Dr5+mXvHo&E2#Fjy+ zT~kg(6c$OpA?c4z*bOAz*y1u`ONb2+r*ZK|0KH=%iTj?0>(!=`E8>ctNETcXWZzZ? z3F2+C@+?+sk;KKn40JrSbgTC`LJx}KKVMG(^&-K^y=_VT?>qklwf%D)EyQ}q00000 LNkvXXu0mjfDN{)R literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_database.png b/www/img/icons/folder_database.png new file mode 100755 index 0000000000000000000000000000000000000000..5193e2eff36d6624e9712baebb81da20959056bc GIT binary patch literal 687 zcmV;g0#N;lP)l`516uN0Cy%QCn*#P zN4+?XnV6U$gm4+)tOVYBPqW#iR4O4NG#U+RwHhG=0M1IFaU5fYPBd9i&QF= zBOt%>{_2-vWqR6}e=Q|zuYC{Uu?29>0nqF9j!t;*`+!k9HF4uzWQ+mrU&a`G`uoz? z#gBS;ID~+64r9zo0Iw1eXI_!I(0|i?-!<9Z@v?#tyr}>L)YYlM;xxzWB zci)1-?#>Q-`)#}rhzPl%F?4Yb=iJRf0!x1A0_U$k1q4)4Y2){ok#wD5&4{9uo~C&1 zQXYT84`6>h%AjLt$N-1h{%&j_q^YWt>=;P1=igr4zlL%fL;19?jRI!bA-Ztb`U~VH VYY-ljn{ogE002ovPDHLkV1lweE*Ss- literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_delete.png b/www/img/icons/folder_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..112b01638e6f3b5995ff11a07c7ef9e3e50b2780 GIT binary patch literal 666 zcmV;L0%iS)P)#NXU(rVJZ0_Z7&gXp3z2_(q;VkBGMmsaW16Y~9 zp7fgr29!F<6RP>ub)&O4fa*V43V`C3yGz;wP~!A;4tPPFm}sl;XZ|Jd$pb)31sm2?QX#5xu zDMxIG3FC+rZ21>aF->7BLCkLhiNJ=4Xh0M6jm8n%ee?z>@vSZsmO#QHQGTDG?-71; z|3Slt3Z$mMI}gV3jscN_SKq?<{>Mjwg2jd#=*TQ%RKcRuE)beKot?IvC(#|lF1=DdvMQ?PApSc z(OerDrLOlX<;5AkFU)$g!?9p2(@mCY5j}K^A z`%F()Gos|V2Oy!%=+bUOREP)Iz!8ao4L~j+rb@K)1;4cy?z}jjz=<|ot9ojHO7-2^ z`+I{3!zhCP=C$6fDzWuJ*>mjD0&07*qoM6N<$f)0Et AfB*mh literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_edit.png b/www/img/icons/folder_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..ad669cc7814eb52a0990c156e4358bd8d523089c GIT binary patch literal 733 zcmV<30wVp1P)Ln`3m6cBjUs{~SZF1Q|l+PQ4$F&BPWU{LQ5Rm}%Yp+9Uy#II9~vucwq!AZ0U3VS=&d(VjEIGJ6F` zxEYZ+Do*Dgo&xS90WcC^bwyaXLaY<13Xc{ys@jsg}$ z5G+=Y;0}5=7O5P92480MbaXQ7%}6B`AYHKOFX}h+}d5}LKg{F2q&8;J?*AuZJvty1~9)ANwocD zyswqfv|ByYH|QiPmSI$m{Oe0B$hidL4Saj?irNjUNTgedgFr;v@FyS$FAiPZ+kvpX z-^tbQJARF~w@xzf^f?uc>#?PNS(q}q__!blpq^>0+$ab5#~RNbYmZJJIiAFc>3MLM zPag)Sv-P!|JI?j?{%Z?=0rqdL^*1#yN_MoZL{i~%zgRlF`+VQf|HkwKvQRq#2{xLW P00000NkvXXu0mjfz!^#T literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_error.png b/www/img/icons/folder_error.png new file mode 100755 index 0000000000000000000000000000000000000000..1af8809513d4c9d70db4b7b91b28ccc8e960fd7c GIT binary patch literal 727 zcmV;|0x127P)k#I6Z`-y*Ux@M08f%%l`nO z@l-64O`xJk`4{0rj^gBNYW$6$A&5oQ0giObg#;?wmNmerFRqL&f!YPa!aV7gQ~33* zfT5J{XKv&rjcsR%B~qAp1|l#14-k69lZ|9rPcN;iD1z8A!apyV{{Def^AYlcmq^zM z{^pAiC{+MejVefK5RK;0sDQdzB%ERX_b_W4yQtl`hv6@eNyHcMHGr_%2LY<$kZ=mI zQ;5wWHis>aF*}hXy&*$1-$TQ$)67hSNE9p|b`fAz4H4@8pl%us^QfCAA3&5LZg$f(DBDB;xHPT~|VaAD}{1e9QKZbBw*~ zMXcCm4YU$mAHIFO9iJnQ!&w5gNgG!mb-C4wrL6ZgL^9&m+c z>c7)*W<%?-n@u~DM8!T-E$^RwWp8&YCbk}uhk1AJ(xi%Xt_bM6v43>;$w!-F-cQuc zP~~L6BbLmP`#iu<@71UAl|IY`*6+XDT~<+4q$+i}B7&+m{RPs0S{LgvUQz%6002ov JPDHLkV1mJ{Oh^C# literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_explore.png b/www/img/icons/folder_explore.png new file mode 100755 index 0000000000000000000000000000000000000000..0ba939184d5e2257e380004ed799f00f66a49277 GIT binary patch literal 679 zcmV;Y0$BZtP)|B!lwB?F)%&66ocFx{jBe!85I&EQ#75Y65B5(Mx_0d{Cg3j-*JeIvt~v(9 ztY`S8F>>s+V~sTmN;}4H=Z!HS)(DKjt$rUaPhR;f5G}c|OUlyu`rOm=z&+MjoL2Ek zTm0^)e6oN~%J`&=(gmjK2N~YhK_xcK zEoV5BWBb;K=H{^+EtW(wWXLTdS4FOhvL)n}sIMf1VICJdydZX>U~@QG{;*1X#WjC) zr1dbuM}d?FAAx%5Xv>qN8EFR2i(h1**=X>G)oOfg_U7?X#32k3>qH~N`C9QvE@}^n zGhqY6++vD;yw#&i6Q>Sed3?u6;$N;m{5aHRIk}}XyzB+bjo7>Llo{{)Y8o@oYqL`? z&lySlkNcO8o-Otluk{V>>wfd%Vbe(Bf8CuZo#-Fld&_&*ZX~f0KLJ#yHcZ$RnzjG{ N002ovPDHLkV1gJ z|Dc7=n2G635A>de;xc@E0j2M7@H(t5!rCkp!6?yvUBi##N-2;Uj8ZU_h2kts&Oq;J zIC=x#-G;d=3|@e@3y=pxC{>(o@>d=Z*%;^yN~LK5XljM_0a%;>=V0Ixe7FyNry#Yr z=72zHahAv?5GUB&EZ*`Lf_OJ>I*aHrB-nttEU{D@QY~O!U8H-@dGIg>CCx6}zq1} z;{+Te_dkL{0bV{?a)uE@AR>2Fx75VHCIjaZip zz4c^JPNZ>ZEfNQp2HA;3K41}DyOoZJ{IZC3{+2-1AN~69++l>1DANDjT>;dj#mUp( Zp8hoRQY~32;;v|2 z6e-B2B zCE(hxS3dK-rRD4TH?wNZx>((BtjuOJ_pgyBGdA>1yDCbtXz88 ZdJfaffI=X}!C?RZ002ovPDHLkV1kN7cwztm literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_go.png b/www/img/icons/folder_go.png new file mode 100755 index 0000000000000000000000000000000000000000..34a736f70261338c9bca98c38b78193740fa83a0 GIT binary patch literal 694 zcmV;n0!jUeP)N@Zw27r|iugjyK_i?%mf=ZN1k*q&Uedp~2B7g_+fS`hk+Nr1A{hI)z0`VHB6Nndl zX$Di6C%-U4JXr@~z-vS-U`e(1B@n-FV+JTmdRsylL39C=TOrljOR~Cct>JYCvg#mK z1ulqf0!%<`#~!NMu5Ba=9u&fmP-Zhc6E?!yaAE01t20W#1|(JmqlC- zu^GHsMqCzbhR}vI*0gbTWQ<2wA~0LlNQ8*Dc(aJuEaI~Cy?zX0(B7i0rEb>&+G>xJ z3k&o-xX8WohAjXsqHu`)jo1ugGgz-V-_eT`kMj#kXL{&TC&D=t zDS)urCatsVt!&16hZE0Sc81**wR}pC@@4w{a?#MB{`E|khgw{yHQH-JtJz=E5u9kb zz}Ukc-s|q!`(``1y|H=m(r1&lJyin$Xxq0vwCmG)?a3aY8mvDz{qFmxE%s(BuO5DJ zao=8%%g&`=etrMina`JM0D#h8Jll;L2^RBAyP%^_Ir7+%R=MGUyuLc0fTceq_VSCIxlQXj!^EtWD%$RJW zX!AVkD?c8*u(*8SKuQ%@sC2qF_E=cn!Sx&DIVH#~lNqxqs}H+#{({Zn-5=@{)nku5 zf3}-aBFOu1S^wxm_pI)=v}cv8*Vq`5TY6m%JnGJ+i+=z5+uz2M$%)!Lrb^SB-TFjs zI#kR0$JPvgy5YYwXYD@xvV|(KJ<;r3^2e!42m{A`)tOG6Dc~%w|7dJ^j)lfdl{m00<<522?CW@PXKACkTpQB_fKD)<(q6!a}sL(AX*3`zS0F zw6d`gQ6nNMK~Z8t%sab#@63NJ?$yLsPBCXV|NLj>KQK-b|H7&B_YQ%s0xN|BLAfl% zK+1oi+h>k$?dokba4tnaZVoGI#E^0B%H#h38c1|CdK&a!zQu;VzF&Ic9iQI5;=<{E zOk$B2fcGhV>({Ym=PnYT;FAj8dn$>?49pfWFbM-XI%?E9m%txc2@y@C?;dP_QCqrs zvvdCUvJMaop1&SuR6~Utiv&Ku`O2}q5X?xO{KmC=Zd9CGkhF8ehj);`CslmXQ3g;_ zrG|hIjFg}jmUXm;2Z&h$eksn?3DH0>GBo(tcq2oDp#9|0NXea-WyGwCOjz?1`Rq5& zZX2Qb>=8GQ7%)_3U|1H(c2}F=Izu#4oN5-DWOJZwmVA1O`o?2a8>?8cdKu2SVl1iP zq|WCjCz6WKVvL$h$vtUjFUvNa1PmmEu_XV<`@sjqFpI?*6lRb$srDY{%ZD*8-Mv39 zIGmD8iY;vJC5n?MPNOhEx5ioCJqcl=)TdCKrE^V6r8aC2uN`dwq_mMNVEHHtlf~gM zQSQf4m@1nK11UgzKG2j*azqrqmyP9(zs#oRo2^xh85S5Qv+*!D)|Jmx>sZ}O6|g#} z2gNp!Az!fbk=SZUnYHH)TJ4J;uOHlj*oULO*xx{adzxXo{Zsk@(!pF(RdX`D00000 LNkvXXu0mjftamTb literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_key.png b/www/img/icons/folder_key.png new file mode 100755 index 0000000000000000000000000000000000000000..fb9b4c2bbc2c94a4f777e5c3d953dea265f7b846 GIT binary patch literal 720 zcmV;>0x$iEP)Q5eU6=iGPZUQ_QKgBcNt&>&x>Nl_%pLP-{EP)t*^8f(^47Ru^ckc9;ncG5Hn z$wpF4h8c|SG30W;@4WAM&pD699qz1jPo2)`>HL4s|2+Mbh|tP9Dmzt|fpo_ES>$xI?G%C|#pH zn}?`QbvjO|i96e#XR_G*pNXHuZEC>1g@^^m2zk1LbU5d@t~JhF6b7+`hZK{t7K-?yV@KHLV-Bua}n zIMa@JjjMfT=Er@!`GHDJkxF+n{-BQP>|t@&D5Olg4rKYi0iz`2?F^<4VrnFnGGXrt zy0)$bpl!h*TLzl5QNet0I%onCO)#&A`Rn=t4F%tdx$F`wuIO+;;LkporSoW zoq$9{T!gQWHXgeQVvG2sfVdLa;%vQ)xEe?d$()Q3BjPPS`Pt~?N{B7a-V3vx%l`l( z7UH=8BcgDK{XHuzHf_5SVk=Ftj~d^!a{yv|!Pb9uB-Qp1A8L^{@FB<|#KnL?bmLUo z;i5>y__zs(;tTIDAL>Kciz57QrUg)s4PLJQE&Txw*NhpH^5>@j0000@MUe#( zhB3noqr8rL=gzt3o^$T+_gLKVGSl!Zzde1v-@eZys>*CLbp3cx>})$+C}a+0vUa(; zuwcV+YbPt!dL_CU);O`^z@_&x8(`$t=}cRPf4N=GyxD zM7%!<;-;UA>YyV;ukYgOS;P-;jT&Ai#gq+xelxcE1taS9c5OWuhzKZvGWqrn(d)|; z*X9Ktw2Ufd(- zSc~Tru{k7FvWquRAB?Cx?Ekpz=)En5w3Xd83sde7sJ?tMy_A8OEe){Z=%X@#!FfKO zPwm|x$@m9cTxb5KeRQnbk04ZQio?gb2F?ZK3nf1F@A!=}G(qrLuSvntR6siqXN@Md(3YB z1Q!9`v^tHZE^EUI$Rb1p@KN8JdR-7aKtKgB*r+xG5XX0i&+OcSw)XxzzjmB^@Jsp$ Xg^DuH;4UY{00000NkvXXu0mjf{%TnI literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_link.png b/www/img/icons/folder_link.png new file mode 100755 index 0000000000000000000000000000000000000000..b9b75f6c398044761b2e211639a3b3ea5dffda06 GIT binary patch literal 785 zcmV+s1Md8ZP)aL6K`V-vR#JLK(X*jEKVNlbHxH0QOXN4CTjfvGt40I|M#Ku+)Yiq8d z;L28c;TGg(*&-*FfRgVFU3!q0bKn5y+w&YMOEeLrM3go2};w-m?^(jqeZAz2= zL*$E|+nBzw5`1~&d{HnejR`pp>Gc7meprxN9t68G0wK!~R}w-lLD(()XLo=+p9zi1 z=86KRES~3g$*>K{#fON0>%{i-Rcw831>-k@nY{~UrUN@)b%g6=XPXGQk0pwNVJV+w zqhRK2*zxsX)1w8u`H8F=|Ghf>#)>;2#|sV1xT0X_I4_<*pC+(CE+r1;*Z|TI8@M$i z*d-lO3zv}$G$5CpN9eh9kKmasBji}*;vbP^#=-v_K_>cy4EBLtz6Ex%6{+9_B)^|S z!hagM#0)}%dj*eV={z3?zdeTC)u(vt>V&z^2#3Rg-flhS-!~vKtwevfR?M0Edok2? zHY=CQ4-^D8DJSp@k{b>@wzk4zu^<|aA{-9Gfx%$lO768pBDvDi(!x+d zeSQ6SO-&82P$*DWS0_Sanxi!;puHu6!{kw^RP$!DnQ=Ou+itfTcDo&IZEa|8Zx>^l zqcz$?drJi6<>mXTtE;POYipO9nwpXtjfNv+)M|Aj;S`DEG)HT+hxYyg@Y?10VPWjL P00000NkvXXu0mjfBPD6B literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_magnify.png b/www/img/icons/folder_magnify.png new file mode 100755 index 0000000000000000000000000000000000000000..0a3e7985c183ffe1e5547ae02e56c2f160a9f3c0 GIT binary patch literal 686 zcmV;f0#W^mP)D5KR;Vfzpb!Z%f>egXcc4dbT1v5p6tGa?~4~cr@F?*lxpV^g36B#KYBzmnZT=P ztU#cJlp8~0$(9F7oRNX)Cvl||NCS*gXn$uoxwwWOL_|iRZDU%Zz_0slQ_$jLLxRmY zYQN^Gtv{u{{(_hrr|*biyHKPvp-87(y3%oSyAf`6gSqQdvkem?<%kV2VFIy&t*;YR z^XwItnC$Lnb@LeS)+TUb3F<+F@;111vPk~infZG&LxGEul+|^@8c0|rs+7r$%#!LE zr5D8z0$30Mgs&^xY<*ag!SRckT)wd25;?dXeRPlB*e?_;Hrzy)UL(dsw1?<2V)huH zyi4xws{Xj*>4;d`B@z+iV{2a;#ioMj5;iI##sghy=F5nwf&>hoN|`HnUZxu!1c+FT zjea*e84uB==DyhMT;3-T(Gavh~9-=EPu=N`}Ih&YW^IR@kVBB2dh1b*<~=i`|vgv%&02Yx*P)SD11&;F(U0?j>H Ur1R|wc>n+a07*qoM6N<$g6sr4fB*mh literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_page.png b/www/img/icons/folder_page.png new file mode 100755 index 0000000000000000000000000000000000000000..1ef6e11438f3226f88bdc457f55d677d1f2f8409 GIT binary patch literal 688 zcmV;h0#E&kP)CVGc zN?Hxg{(SJp>2>GN9JetoZ(aZH;Ije%0FdZ{S!LRVX%}YG;=d8L^N!mJkCd*SBx($jgG)S}+Le)f;q=GIn30YFNh3ZW|nh}2rL)`=3ju9K*d z<&~Gte>sT=5|RjR+}A(|O&3gS5t&*G5h0Um$c5IgEgxJl_8nzY#B+YU^|Fhvzo-^U z6fNn3(lBMcl9{Silx)4RpURdFw}1BZ?>}8S&h8fk5`hjKW@sP$LJL*otPOMf+jp$? zcC^*PiL>vkTOZln=wuc^%A^$j`TU&aa3ETVYE{(r=bgN835`stIePGw{uwD`7K9Y) z=4)VDHnkl3YL%JeLce6>Uubzae&kQ4(g>C+WwLc_Qfq*FlK?}j&#@fb05W&WX zs7RER>}K7~?sqveuf<-nYKRA3hB+LbdC!>{CyArNId=s(54dp(7#BBzuaY8?jufy` zmStgPnpU3Y+S=OM1eO4Q9AMSVG#Cuj?RM2}x7BPmWoGL4``X^#-UOE1F)gf`*=sW+ z#)z3w6a|Zmi<6o(O>cSr6G@Wby(dW$vMi(1>CkGm4j~_2th}9>UtV@@nkAk+xY-;z zAxV<4E1Ywf*&)EmU%$NexaOQ2%~;?ZS9y7HsvVLf!8teCPXL&5Vwn{`9ump~{5;Mz z@X5m8Gx-NJ1XRw)P+&z3MNzfi)BpaF#%_}@J99_@SqVgZeE}3mPMzk`-KQgf(~Lq+ zHE^grpz4XUYa1-47pTvjWcrrICx3pvKJCDh&Yol8#yuc{goqS7_vxoKQ21lGv)3LW zi4Z~$2q~4MkQ4jwQ0So0MYd02b*e#*$A(}6F$T)kF1@{P%ChV>&`c?iq7kc~$T~xa z?Ngt1kh!5F8K^?BqTZ-6lX;W$X4pb0IRdg4vi+e#2jXA^>!R=rg##3GP!2ZvRHQ0n z+xmO;s&}G6Ym@RLIIS>4_D^{q3B6vEDiyAvGHkpeHC#BN8{LcEx^4hiFz_l Z{RV0XY_dNf>kh&a;2ZlkWYymR@qWf#HF|^E)s7jy`z}ZOho~ zD6RPe)NA9ojzH4Gk3xn@`KmX4>cNY-Qnjj-!{4&mf-ec!j7O*V1huJity15lFO^;S z6LWhgn1tsBYPgD`r^MO0_0f-fr4$J3gp1!EX7%ws^!t{uxyE8+x<6QRRo`Hh9wi)U zgR+2l9$F%7l8qPN#Uw5`CA>`qF8p{F-$vZGdxCrK+3WbOLoS@*SmPWcw{Icz^ZdGU z{gg+l9I*)|$sks+y*d-sHl5`LdU=s(W(uFbM8NI>(3<4CYj>Uh;_URR9!hdn_vkDv z6EDqRlP+$y%*fLpqEO8L@)J4JCGY3ZCM9+Xw7xpZiEn;BaQyV;IgixA%iqS(!><7r zL=YRITW7G*Rm!;zjm0KylOn3irm>^^>Gc%tHwKP!zct0o0iUE1$CA4>1~l0uATp(*OVf07*qoM6N<$g6ge~ A^#A|> literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_picture.png b/www/img/icons/folder_picture.png new file mode 100755 index 0000000000000000000000000000000000000000..052b33638eaa0f870a255bfdd5df5b79fb01a89e GIT binary patch literal 713 zcmV;)0yh1LP)Sp5G=H^urQrsC0eOy7edOd zZ7d~Lu~=e+5HQOw5_MxTbLZpEz4x5+{#{`tTev=tN#ehp|LXfMhP~b!qlMPY3^O+5 zlq{J!O})4fIKi;rd-I*MTbsRJ-?(RkrCAgCdT00TzzNEVZm-w3>$fIc-v5w|;a^m3 zm#KyF08Pzpe zb7ryOZdEg)0T~jLaO1mYch`nz&X^V4BRa)fD-uj=XaCldc=sB!STP zt;b%x&@nR*M+9c1pMS(1#*56;r$6GE{SWx%#sTA(KPSb605cl~l4`u|Hh+9WZdaff zVm1Js!Vp(~d!HC1SK5~L;STM!*NHK5?u9Ez5QtXDTXMUKT=?RE#qB-LTE(49d%VXn zE5Ley^+2!)QW-FW3lrJU+(Od^V#BJ zAQpu6Q*3UZXLH;6hw_9p`2lbCfQaG@q-RZ^I>Hr@UQU`nhdI;qPXi?DsEmmZ5T}!Pu vECtogXE(on?K#A&7z6%~0K44cy2R4oP`hnXtk|+}00000NkvXXu0mjf(HBcn literal 0 HcmV?d00001 diff --git a/www/img/icons/folder_star.png b/www/img/icons/folder_star.png new file mode 100755 index 0000000000000000000000000000000000000000..448e46fd5ac04933a1121e0d07748d2894e93940 GIT binary patch literal 755 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 FV1mw881w)D literal 0 HcmV?d00001 diff --git a/www/img/icons/font_add.png b/www/img/icons/font_add.png new file mode 100755 index 0000000000000000000000000000000000000000..b709ebaef4f32cf6551275bbcc3413ed5f51b75a GIT binary patch literal 634 zcmV-=0)_pFP)JJns=rXO>fi=YdvYp=OyIuL^83ysEIf(LtP34vHf@P1syLa4L>s)tjLDRY?|E+S*&m<}gEDA3wCC|S1 zC~n%F`=*)aLx8xUX62**Ryh}!5;VXx>jJY=!}V2J^Y4E*NjsaSAA6F^IPpwJ<+6wW zU8=5LQujKb`Z+F#fckUgU8t^YpU|s(=Orx83-p>b9R3rvXOE zXGG&B-+ooO{Lz1}<{Ou-vd(X^%s98zwd(4Pig^qE=T46QpVsI9KeEN)lV^oq4T=E< zv8NgBOD@j_`PDq_3`$^y)HdH}T%GuT%ay7BFFf1zzkheu|L}g@|K{0}Jzxd;F{ikI z(c@COKW(O z#rEI&moVY>|A6M}Z?yxC^eQ{;6;QI@qowV8c#%)F;s0${=KMznn=VZS89-cmx6G0L z-n}d7fBUWku;%ui38*e0gnR5;6H z`2YVu10|S&W(GL4-*9m5zR~L0cWa7s=goeHmKzfsTW-vJJns=rXO>fi=YdvYp=OyIuL^83ysEIf(LtP34vHf@P1syLa4L>s)tjLDRY?|E+S*&m<}gEDA3wCC|S1 zC~n%F`=*)aLx8xUX62**Ryh}!5;VXx>jJY=!}V2J^Y4E*NjsaSAA6F^IPpwJ<+6wW zU8=5LQujKb`Z+F#fckUgU8t^YpU|s(=Orx83-p>b9R3rvXOE zXGG&B-+ooO{Lz1}<{Ou-vd(X^%s98zwd(4Pg-vb$w*;&H+vCLYZ>KBsBOtCoF~A`9 zG^2gV<=G&=nx~yX39Po5?5pQXZ2o`W+WY_CwH^Pzt|v5TWziw`K>00000NkvXXu0mjfI;~OA literal 0 HcmV?d00001 diff --git a/www/img/icons/font_go.png b/www/img/icons/font_go.png new file mode 100755 index 0000000000000000000000000000000000000000..75eba80d629fdc8279afbd40369813bae7548a52 GIT binary patch literal 700 zcmV;t0z>_YP)!+vDhPTEsU#vi5`}*=t3m zOG=I7^=;SgcAeD!1Q6)vqouCPiA6pkZI#eMm0J!{NC4PUm?hpST<@&f1R)!bRM!&q z1%jTh#a^c`HkBT$^xp|cDKystTu4&1uL89tXYt`@A7Z}-1r^Nk?%}ew0N})}Vd5!p zh06{&eLcPN&jvf|?%j_t-4wV@q*jnhLO~T6xa3&3{~%b}h$K&2L(~1#$j-4MH9=4J!Xg9B zNTQXxa^zxPJ{1%~3KZm(p)l_d4to5^GPB{!Eykz00Sx@;|CVORC)<_j>Qld@jDaZz zDi|uf)y66RB@EBLNAE=UC=&?9!`deQ+r~h(G`SI(6vnfMgxg){D+Lwutc1Si0swhN#FwOv#}l83ts6rCW;r!9Q9l zl<41549yYiq6clJ;(J(YgF_14nmKFB@QK(mo6I~sr{BJxJ$rsp0HSt^ntND0Z;o48 z>O2Ckm9}n?$F`*>$L{;{zT>f+bCm7tpaqw^4q@%k z&cHHt3=3xZmt6rQ_dtDM#)Xwp66-Thu=<9?(zFvpy0gAr0U4Z3smE5f@pZNr!NoqT zEjSPuCQzMw(H;?yvf{+e;!7(;4hv)+d%cjKFiBL%egy0aeCof8z<>rLEjMsF|CBRH z86WcxAYvS6H;Yq)jY1Z-rrjWiu~m;clLmJlDAE7UhMJ*jBxp}s&nQkrZvqDXxsiv3 zSJ78>4W2GFIu$$+Ic&5Pq{1?zhIy(24enCZy35e>z6~XgVx$x%k(+>tPw)9SL~R?4 zs${`1bqjTFC3F)dxIIw>)!QP7$vk+;^#2c5r{lsjtwKYnfnn+j{~{GK;|I8rvPFU z5NbS#W7m)ofjNER&&ggR6fXi0xd4%4143#8JZlhXW+2TN#8b=5@L&-EUlY^cTT=>w zb_~+jfcRCYfdj}H0J49#sP#gtxE~%YBJiQ3AjMgoQJKuMITA}Iz|zizG7pw|7R*XF j=$D`QjOCK>V3B}dL4UFUkhgq600000NkvXXu0mjf1x-zB literal 0 HcmV?d00001 diff --git a/www/img/icons/group_add.png b/www/img/icons/group_add.png new file mode 100755 index 0000000000000000000000000000000000000000..06c5350cb197e64439aa1d0b1aa438b013c2f4a1 GIT binary patch literal 807 zcmV+?1K9kDP)mo3jW}i{%_@b6dHYnoXT!P3L{yXgdAxrsZYf zWtGn6Fta7-gNCWosY{E%J)~Q2p<+ThPn(n)hWUlVmmfdQ=X*FL0HnPnjy}$wR(mbZ zx1PY9#(k}c=g|-q=yB-J|DI-E_(_Vj+1;_w=7ycBOZBYY7odT8j9BROhpm@`AH$Wf z>4LGKJq3%}^ZUL4s_3JYc5^Qlhg4WIKg05S73L>;&|mCl-4}ow9>bk!$=q0)?0{po z6Dt-y>;nXf60Yk03E+~w*h+TjBEcX-#iFbw(|yMXVd_u2j*qWhg|HiPFH0JTB?qXs01CQi` z;2Ti-Qit3|Ed+!H^&_hgDCQAga(%sPx*A;3V83xD&;twuaL1LRd=9a^ zDBPBMqtckTdD*pHZzn)X`rMop)Kf&w4y3i{{nJN5&YN;-8f5V#Lb6Tpyz#;+&q^#v l5PBP&h9y_*-@Dw^-!JB5sxM9&*;W7m002ovPDHLkV1kg{c8>r6 literal 0 HcmV?d00001 diff --git a/www/img/icons/group_delete.png b/www/img/icons/group_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..4489ca238aa5ca3fa16cca8789fbeb1907750dba GIT binary patch literal 827 zcmV-B1H}A^P) z^gW64MQdglX6sW?C*VL5#6(%7Cn_gWAsZ9nu_h6Dnj|#6l_NnJ2bU-(VpkyL(wpA* zDE1YmNMWFG><;oZLS&C5;O z(5&@-0`51qAgw|Hp`;4WhBqOUE~1fXvARLRkgx!e1^I}EFAv?(=}DcZ(7ekyocNCQ z_BjJ`W&!>%5Znv+cK}=k$@Bx=9%e9VTCsO6XPhF>O^uYP9LMd^<`M{A=n|`AZJDm8A+@B2c=23){C>RO^S&eiq`i_&3*gLFg*Ys& z$Fa~9xYfuDs*ec|I`rp#PnbtNL71BZJ=V5k*qxfRVDY{L_3R@Ot11jObuwJzWw0ru zU~NAMT~+Yvz65gG;WE2M4abNaTbifX7?s2Fz88Z}&YAZmh^5AH^(~n{*R=|G3@SKv zov;r{kjJ{D^efayZSe;Q|wDjs1pP)Sc{BUjR zEvRx6p>NAZE1wPtlR$L}1+T|g_&S$^&E;XJyT=(6E)4a4>E9#$sPVQ5aoWE~SGS`+216GGRQb4p}yUaTmb-qIPCF$G%mQ53R6(O+~O4MjS-Hi@Y*UVP^F;y2&VGtc+Y0id%HQI2~lo!JJn!zKG5 zFVI!z2kGV7Tj_24^S@y@$ZkJrpjdZ#q;wC~^2A@Cu_-|=c{g*U+yV-r4~T|TD0ns) zDLa6!Z2g%{30RK1Qk88&%+|A@ZY#vx2Ns4~1&}0|4Qxu_V0WD=V~4JMZ|7pUyBw;n z3Mi#a#NRl}`>%j%Ye31OoSS8O*n;IrQu{iaHZvpqmy|pjhAQKrtcpfmP5_Sh7z-@J zOm?gjkZlfaFk}aeN~X|Y+m=& z_X^5my&x-%LJ7?YOb-&C2V6j>n2f1j4usO1NNEWL=W{NCD*|EdYsp#_WIF3}dL?E5 z6jqaS5fj~PsDJdKqw*Tk>b*g4^aF+E2|3Gtd1YYaBx67niN*0E5PcNXCYxb?FaqD?0yJfwlr?6Y*r~mO zu3e6kQxIQO)xC^F8Q{|dP$X(p7x`jFQ{4R5+faRR`Ax5fW)%hoYnZ5iU>>6tbR=5* zZ00@&?UfQ_AwaHJ!NbCG4A!P$aWq>yUDfNZS;1WU5^_Hf%1YEGn2y!N85`*gWSmiO zlS1Gc(*Wul&Gc$OoOv0MGh30ynW&|AjTR-*hY3xH5YY_?QG`D6E?n>ZFMQg< UUKwzvZ2$lO07*qoM6N<$g6uMT`~Uy| literal 0 HcmV?d00001 diff --git a/www/img/icons/group_gear.png b/www/img/icons/group_gear.png new file mode 100755 index 0000000000000000000000000000000000000000..2544f2e637a3d3891b482d994a99b11a65526958 GIT binary patch literal 824 zcmV-81IPS{P)FgJR)_jt=7u%giVi!tIp5Wsn{YCIwmH&0TjuHt39I@th`siH>$zv2L%>B60ntAn%xs1DdBd8TgzSlHr59J zWINVeCV1=;6sKJ^{uhuz31`V!*H$D93KVzZeH>cEu;fYBPmhs@FC9X7I{9$a-^T^^ zIU*|W{GlBHX6)&BIqSN=Hid%iYOKkHR9TAdZUSbr866W^l-Y_AAvmkP$U76V1*oB2 zc0A`KqP^%Y+%1LB@u)C76~JmCpdG4!-EK#3Z!g3SA@s%;JTp`yh7+aO0?26O))||A zM`2d071Ptxu-R;IyWN2#vCwG~345S5jc8)pm- z4uUV{W9h}szkvN$#QC!P?5)B!7rkCDL?RLH8R*E=(;=&qVt#%e1VNy@y!?-OU#uZL zi8r!p_X48VM(`W;(CKu6;<_<6HwTqUg+p=5kl?OdE?=IQn1E8L1e?tUDKw#;O3gK| zbx!(G>IT?@K$;y$eftA~<`E1G44|i{2XaNdPbQNscXf54udff;+1aW9;0VcC8u@Fu zO$y!{511B!XXf$v*96O9v%V!u~mfrM_A(pRtvLg z6HJ#;mP>i&#lFtwyMMiJ3G=*7X)`Ly>RiQPY))aMg=|}bVy3ZtuFetjt!#Yl%f`Ic z4Re~Km?*ILye$Fgzdu_)(u##{63Zh>EcTF?ecgig6uX&i3H-coa3;$itbG}+#p+ZY zmL_!2cgP_Lxv2f8fJ3!n<+Cm=$b+dMLutzq44Xmu!^rP?Egv5mlA&)Dp-XWWXW6G) zoMO-H`$NEVv!vy-JXU3aRBTR(l!x5HRAlCfkoY7P4R6Yk)-HjK*t*P?e|+zTK+3T1 zdKPgFbxC2EtPn!Yr$Zi0gM#aU(h(t|)UIHc+97=)8Z~c=5v_}YON0}-A;@D`)Vy!k z{8gAHo(k!39Kw~3NN&0bhT;U`dbwbcp_nFp|6dqSeF67W=fG7ufK_Y@VLcty138GP zxr)ouLkN&EFkj^JTd>0+N029o+9)hi^!Uz zi4}t4t)SC+%}b3_t4N&$*!@6A2M}0v5>@>&s0|BL_GF=?JHsHkgMv;8IBG9YM8qc( z0bxswr8=$**5-m=uLrXgVCvQos9D4H0&`r+F$GO}5N?kTAf(h4k07*qoM6N<$f?!vBasU7T literal 0 HcmV?d00001 diff --git a/www/img/icons/group_key.png b/www/img/icons/group_key.png new file mode 100755 index 0000000000000000000000000000000000000000..257f111ca8b746ca6dcfc618cff50450c5b528b0 GIT binary patch literal 813 zcmV+|1JeA7P)^BE6mGC3Yb4)(b)otU zX3K2MrEJ?`KUdphf9?l9vwhD}G?g}6i#4aQI|Z?J*@ps(nWsdHP0rA&B0zL!LMwO2 zqRa}T`F1}J1xSKVX6lAiSp6)4d8izQP6-wUThW$sS#u~L(D!cSSk<%bwc$o=jW@wK zs)Vjxgk*-Nd|x1vY|qML-Ch-iks%4En4?1+`$R8df9m8M%)fpGU2_sTq>tegak14U z-r>YQ0Mq>(C6DE`l}#sOcS^F@$Sn{cL(GLT*B|38G}I`<;mEsCc8PQT_zsX2a;2j% z+8<5)hZw8jqMAd6D2xJWlov{exM+Dp#c~fDWp zm@JVDx#}L4K8C@(Qi+vOK9;+9n5YQAP@2d83rkN4MyJ9Lo8RlOq2*yiUx<}q9*8+U zrlg*KfumP*62u8{dkS-)K1W4~57uYWL41pWX^sOz!vrx!ML*xoL;^rM;$HhGkkfBy z*8{?OIg(0bh!>Tiwrv2t)lpE(Lk(+_3=q?PFwM|moS>qg?_{b7wWg75e5F(>yT#Z% zz6HS;5b*_Iv;)HW7JMoT2QgOwc#t1bo`+H$O^uY(x#!GQP%3g~tZR6&*&?F=i6ogry*ZfP4+pMu8g zM&x^d^%h_#fi49bn@d6%C-0y;#{<2>o7iuyq{+%Cx7OsqL|1B+()md*$UHU3yb+|O rzC?FX0Nx3`%|&ru4YQ>*`hLJ~_forVmOT^)00000NkvXXu0mjfWV&c+ literal 0 HcmV?d00001 diff --git a/www/img/icons/group_link.png b/www/img/icons/group_link.png new file mode 100755 index 0000000000000000000000000000000000000000..c77ed8812e4523f5dffd636de73f257c5905ad5d GIT binary patch literal 858 zcmV-g1Eu_lP)`6pHR5;6x z&|6HBVHgK+>Y|If=&FlO7iNcxvUSio=LLOXuJAyRCe1uhAOkGKFHur7QOPVqJ`K#x zLsO(w5L;u_=1fOTr;z2bHRU1|*VatUY%2YWZ|k&L^Wwifd*1i?ZO_91!1!PC;{%1QW1meMY0UgO z|Ed+fQ5zPA?C?ILph-Sv{U?w{>=E1%9G|0-2pCgYE0TnuekxnG?6s13*Io$kLp7XL z={P9b?+D2{u;~vVC44vQjv&HUo=D*L)avD^xLb@Hm1-2+%0l~aBT70o2+H4Ae~8?> z@h6~9IO439oQCb%MT|7%!A!=3N@Af(9D%xlJeb_sxb0G))Rl>ru^MF9FCk14V*CkI zCIq&;?X>)LFw0c}dUpcatE?2YwYA7s zXXEBmC2l@fqTqTi-779Ff*@Z2k16UGu>Pn)MP;WiSE!Og1GlTK*addTcL9NY$ zQcGfFY?$sjolg4CC6^E#9Rra_1d5`dQmN=V zDk^G~&*wY*2uYG383F97_;~rF#fPIl@YUrgEY{M%S^F0pi#Umnjt;opZgh8d!)mpH z$z(2YIGl}sK%>ztFGNk3Ci@9Ft^xYv)N!WnV?W8kdu=`*Zy8}bMptC zPB$A96En(q(;yCWXn0pc;~VY4@?H>`4xHj9;(|y5sq8YO()6#SFsZFNm#>w{Wb@y% kBoqoivDs|T_jL|^1L{1O_lxzn82|tP07*qoM6N<$g0nk}s{jB1 literal 0 HcmV?d00001 diff --git a/www/img/icons/heart.png b/www/img/icons/heart.png new file mode 100755 index 0000000000000000000000000000000000000000..d9ee53e590a68a95a9fa9483f0ebd14f3f25bb72 GIT binary patch literal 749 zcmV{UrO36YoGex>*KgTU04Sb0lNGJEiq?mmQbVHD$?08PR{#RY@(Jtf90i82`&dI!dW7jO<!P=IT3`*tHLxxjwl=}>+*)uJ zQXzyPPN^^yrLNn-L6|)gDrKnEAdbPP1a+KXt(F*+N-)2L{Eb_PQs+ab)QQT6Pw(ST zBha=K(orHRSCfHi4O9%(3e<(Lb`^!uF>+VB$3*L{zr`0-_;)Y*n?E-k7dr!rf-5ve?cY>d<{Q2T>(phfG`V$89Qfr0$5PaI$GcI;T;lseVaJa_ff4eP;K@^|hsa{cCz zXuY%j{{3s?^}(OQ^lJ0wCa2U<(RxpI&Wzye%Qu%q>x1omeM7&Az4w3Z$LrQ@df3^y f|6iKmf8+cE7K65BSFA1B00000NkvXXu0mjfxAtvo literal 0 HcmV?d00001 diff --git a/www/img/icons/heart_add.png b/www/img/icons/heart_add.png new file mode 100755 index 0000000000000000000000000000000000000000..d4195ff80251f62483a2759d15559b4393fdf7bd GIT binary patch literal 820 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 Hu0mjf$tY@` literal 0 HcmV?d00001 diff --git a/www/img/icons/hourglass_go.png b/www/img/icons/hourglass_go.png new file mode 100755 index 0000000000000000000000000000000000000000..b2d3a98bc4688cdfa1dc3ae3723a5a65e0e0df9b GIT binary patch literal 866 zcmV-o1D*VdP)EzKo)jY&y1zSlD`B1nde zmwy#mhVwyd0QaI z|0IfHZz3l>9_idFYXd<4)DCI{(lIq=m)5YN(P4E>hdI?c`X*M;CSS(ztQxWzHOkv( zkX|_~*eDwS`Uv}%ONIR^-3VD$u4*wczlMRyRSc1$`0FAvg`>Jx6~iT)%Ub~Y@H!Uk z%R1&|pJhuJ{h^`Dm7R0Q5XuMBDu(R;EN=sBq_9cR&@NY^ZFmVxfn21Y`E$;x?z8OR znP+4AUqErww4`%P2`K@jl@B%OXWlG3RW$!LT(geDg?ZTYuYf}Fv;(hIA@3etLLk=> z0dLO3k9`JSdA5isy@hwJsR(}Wf-5Npw2n!8&9(qI4O6@i&C|Le#R~ls4Ycx>BnbTR ztkMTjd@saQ_##Ub3%7!cuzEtRQ$;mB*4%~()b;;_VsVWwYjwb#+!J`)!T`7VCD=`g z$QQ>G$U|g`V&KEQ3d=}JaWIs!rCsP1W}#6chUCjE#%7kWpwi$*<`G;=Jp`we{kV{{ z2Oca3WYkCD9>*ES!i?1Bp_KJDnf~R1-P4`$WIN$hxG_RJc1bteXwaD`EF%gle=AJ8 sKor&zg_Twjl+Gf22ZHXJMsL>n7d!LPMJ&Eto&W#<07*qoM6N<$g0UNkpa1{> literal 0 HcmV?d00001 diff --git a/www/img/icons/hourglass_link.png b/www/img/icons/hourglass_link.png new file mode 100755 index 0000000000000000000000000000000000000000..ecc59b0abe2c63a263c3c1ff9cf35a88575c129a GIT binary patch literal 871 zcmV-t1DO1YP)Oo{xzq%%#lJ z5=G}XEzwPzy2?K1rp|e`oX6$dN zltkh~-UIZBZXYRxZq~-QYh>l)iwarDxtQF*vrYh5G%RYEnClY5JS4-4wgPLq8mvxK z!!lBaMO7h8?{h)6i7{C#0Ff68Io}nOfN%(=YoARV3zo;qD9W)kT!MuG8RoikK(=N; z-;fM#Sprm9A&ej|XR@c3qzmy4yd(3t&J+~WfX^9Kxxz! zG^7TgRGJQHU6->%KtFvmhuvfI2Uy#-Vein6eVZNYJ3ldH-ovPI7lyS1kgEr1*Q`R? zY3M!D_nA=^gtVHEi8Kf_cjZ{n9>Wsi6An4-_d)_JR(B{ABo)fTmUZ-K9;t zMSdi=VcIxk!ky#mC{!9}BptIZzlZ-298*8EGN>_HF>2U`tlOyi+sr=&jYG@Beb6Pn+cQYO>;Z4va(TGS&7uN3?!HLEeNFw-^9d3lJ2FYrETzdyr-_N zu4f$K+CfWe6R~K|m6jquKOYv01tdvgU|<00uXB<3Di8Y4UykS=K@iLgo6XK-!quuJ zWshzh^3Gleg+gd_I*7&T@bmKnhr@wHB7s04U}|4B+a44Y)JaPc5)!sp4Lv&Nx1KIqEP)v;U&v3%|^C`Ga3?LtY&4dQB4Oz;1v;J%z!D&%WRH@BZ?x; z3)8@IUIv@hG|@IwyHLC`l{1<4BK>wam95g|i|?Cfzt876&-Zx_0f5*l-9`IJI&mHu zE6$@xB)6N}7VeR;!X8D!TAw;;&0Bsj?A071cO>X3K0wl7WZ1;Tg!4LHyNcnzoeQ7t zNW`aSlm8WXYkek&ir$13=ngczvf zV0vnjNpCF&K8px}dunv+`LIb-sOC$_jD(;IBI$xC|7`(+9cA>Vir_V#z{?k7SX^Ah z^71m~W@q439Ycqfhi7+gp#A14n1n1!e>$EdeATG|f798Y=ggzwEKH2Q!qU2QA(Se?dwqG69%>n$6rtE z%F(845Az8c{w(XgimJg96!jLMz?zS6I1HUm2baqQx7&@nx;lhHA!r6vs2|fqJETOu zLxeu2OQ(3(au%dg>AcZsWI(zXn9XJg1cLe8k~0h0wOL=&HK}7X k{AKr*U4z7Szv)i%9gTgghwgU$Q~&?~07*qoM6N<$g31kYk^lez literal 0 HcmV?d00001 diff --git a/www/img/icons/house_go.png b/www/img/icons/house_go.png new file mode 100755 index 0000000000000000000000000000000000000000..5457dbd3cdfea5274b7c38c9373f4e838993416b GIT binary patch literal 861 zcmV-j1ETziP)XFYYOQsT3iq4v1n+*XGK$uN_ml6wuh-}MeSh~Q01%s{EBOdX$6CW< zSZmUq$gTEm39ESwqbA*Pu_w!UQJa0#sLgdF|4X1waUf~Xq?55Q-js;f%_-2AhoZ0G zn5nPOll-SZljcbFWICIM3lC zEEtmy)1j{jgI45)$6{~jDx)ygB0#?)5-ogB>R!4Bxk1pIqzj_-#Z594E_n3B5+myaFFO8t#FTCz}2nMbp zxtjxyA`V8Q5uw#K2vqEWU+FG*$*d4pe;ieVLU0=WVJF&w@Y(=4@$A17^yGm+h3{uC zp}XNE&x;Da8uXRR<$jPzB#=s_pnE}aaWNe7x364K`oT8Ga>ZTXFhRrL4qUPsAh!CZ nf5t{Y%+1%WmpxfLca*mw0K_85Qj7(Qf zhc;c}922^zIU~GfWrBWCw_J`0J^kKa7w|$a9C$d-dCvR1=Vbw4?T4%U1l6aETXC!7 zqXW8xsHf)iil^=jb(r=5(N}Sjq6b4hD<4yxa=d#|fk2BGL-nblAxj$dUjw%)o*K|5 zgvM+FOm``1s4(5FLGW1({Ei|F)Tf8shIHys1GnZBHK0a0{7;Xq41f=)fXY9Tzgxp?#X71r0+vAMa4h51=@YR|!G z6v2B>frnM+VJ(OYTZFL`Ysio?9%#Gx=baLII2%)wZ?Unl!3_V!{M;-Y(lp#x=AgH+ z7_HJw)No?PS#+{|k0pJ_*DgVyk-hur#@ANjK;=BhNF97xm;ewX0wm(F)*9WTMmZAWBP1i2yR049(5W%od~; z2nCSH3%7_#rMmJviyr=}?7xB9kxGav_%PL*7z46;PEHQIUN0slCgAh=(9_d{Y#tYN zUNy6Y!DIl7zIo(=o%1Ebm^_|ZkQ|kj$##iBNl6K~TrPM#9>iiX15$Ii9EggAAz~mc zlm6V3!EySCM4}Hin{BhJt83lqbTV&OsZ`8QkeYC$M>Isc#~>yq=15jnRzhxW?vhk0 ujVKg~D2*QyiR226Y`XqNIMO2;qWuMC>Xau@Fa^s10000aI= literal 0 HcmV?d00001 diff --git a/www/img/icons/html.png b/www/img/icons/html.png new file mode 100755 index 0000000000000000000000000000000000000000..55d1072eafda48abb0a5fcecb98b114d866077b9 GIT binary patch literal 578 zcmV-I0=@l-P)dis)>+`f+#3Rv=dSV4I&~|Vk?LiBG~#L1X~NSQGbAyogj#ie_$n8 z*oYwUieR#5zw>=_v)By?+NE%sVPM|5yzfjE5$wfk_Go)9(A<0e{hvFiJ0eb2MFf%t zDJxl&RDw>Nl#~WweRba-&_F#fn|ifCG!S=00#QfIDe64k{5mZFusu=CnSq>Qvt$j5 zI$4b(K~|@Tvozn3#yaJ|Be;BKfh@+AwFR!7UF7D*61OfavvGQ!VN-Ga+zO*%#qEoS z8E0dX4NpRyRS|XCrXq{e4r(61{zg^7gBPDUwmjg}k(Q%NLkD6fm6*tZ=)6^ARRw9CNHr!!-b)EovamKwdDMpr>=!|-tf?S+boQE&JP}G_9P5@nR zSOjlBPI$jHA&U_KsTjQko(uJ_ROpKn!K^ckXTHmZd+_Mh7C&~BUYvvb=Xi2w6%i+L zP+hwJF0QUE^66)$h?CXHvdjEbu3a_69GS^`e5Gac*$0~K9VHcGVKhe>RE(rT+Ca5J zv_?D-3(OpKFrQAl`$E;pyKkaTN=V?@iK2u!kqwFy=F?aM-2b}R>c4;EZ`t2+*gqpJ QK>z>%07*qoM6N<$f@8}2CIA2c literal 0 HcmV?d00001 diff --git a/www/img/icons/html_add.png b/www/img/icons/html_add.png new file mode 100755 index 0000000000000000000000000000000000000000..f1c08b7d6895600e813d05db9ff339f56289b9da GIT binary patch literal 698 zcmV;r0!96aP)GYch2$-=^h zQVJ0^k`=iwScsT0WZcd--+ABnd7lTRY!o%WUt(rVM9KuEOi*_8;z#2zM3oQ}Cqf8N zh*3Df1)=ap9+aXGGJaax+r}S;s1c(fYDhGK7(tZ~j37#giWlX~?NKs*`!+5_1yMty z;-e8n31WCroJ4#uoG3mhoz;w@A*B4IW(@Y#a3QjxzsA<(9qd@y$nHnKc$&TqGsvA_1`Q{e zLGB`|#<`p4>6!C@!GR@oclL7U*=6oOy+D2X3zD_Rp4+DW4&IJAd{CSyE*M@ECyE!P zT@SKl<2op%Y+kgVp<8<>k#gbEHPUb2g~CT_ttD!cO0>6?=%|*cS4&K*W^_#{^QAFL zIjORF(SCk8xb_V5yZT7dKsHtcPF{V71w)-;Ua+8;i{KTDO3&iYJR82pqv5+88a&7G z8@p&NRWL1+m>K`FY~QS7-SgTHujpGv?~Hz4zJJKQ$9H-A>g!NqX8ez3`(_;n_5wBF gJ8Bpk0QT%*y_loy;s5{u07*qoM6N<$f-kT=jQ{`u literal 0 HcmV?d00001 diff --git a/www/img/icons/html_delete.png b/www/img/icons/html_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..1bd28489e55af96b73429471606072a80143216b GIT binary patch literal 688 zcmV;h0#E&kP)P}pU>|WE!{&llBw4ut;O*J;G z?4X<_99Tb_)^ftJ&2y={NW(?62&7JgAW9`ma6zfGq}+P;gCv0~55KdZ*20SU6}qZr z+RG_R=2Xa=ks>IX3t8@jrYMz`go7JvWNAX~1T&-VBC626yaNN8L8&(*4IgnK#qvm6 zFAV3E!YkJv58_2>G!+B#W+a;N{%eB|cdxVd-d5i2Yv)Msc9wm-jXF>EtMD{^8)i&S zhWaGuE~09@zH^nG>2o$6K2BxnDvEbc`Oy1}x7Hxpa_OV(T{DYsqYfVwCyEPyoS!(? z;l5q$IeD74&o80B4`$3{BwNgrC!fg1#)ZO1I$KNlmW0-j5Gsa9LXec8Ml~Oxb>33g zb>{B}UYO53ev*wAfg6wev0$iE%nKG2a}m5^QQ2Cq(s=WT_6MhM#UKq}e5}MsQX`p4 z8vA;>E|fdl&n>J;mZjeq9~Qn0m11bx`DChbe$}(+Y(6@0q7;+Gv1I)QH+MXh%fA7S WOLjj|mpRh_0000a3s>5r;x& z)rla24@6K9wNMI$woo;;iYcWgx##Y)_gZ@`GY~rIK*;wM?#@D#EKtb;Ri}RV+xZ`A zhKLbW5rLpih)NVCB&QZ51f^o$_?kuh$5C@~cGMirj;JGMh&ZB#WFx6@>CS5^-kI$x z*+9+FY^3an8lp~8BWfmz6V*s!vxAJU1LZp>H^%BYH{(W(lf7_Huti#Mk!3i$5YD@KNTS-ZT&g}Yxe zHM@_MZK#_}5W{MvtfSJX(dsQYuycs2EU2U6?sQ_t493?C5H&F}yq=?%x6n<2C>gIa zRVO$x86g?xufOKlC~WES-NBtwM=&7 z)yx#_fo1&o;yw@m_=SJ(ougQF?1?u)ad9jfo)i~jV)6)0N+e4(npicwfo)@Zc|7%i zTR%Udes~7&j8eEe@8jcd%X;hRXN&LtcKfeneE#yR|H{0=-FY8lCyP2;&*ETtZ2GJ} a<(;=eRf2_>Pt-a90000 zlh11tK@`Wovq_Uwo0hbVwIoqQhQVnOkuXz^e{MG*vVUi||+dlBkEy;#AUC>|=7 zf?$Pu5)ttv6zruGW7H~Y+hl*t%+C0oNdv`8rNb_7c4j{Beczk6!di>1jIoC&E-I}j zga0{vb>>p_^3=Iw8{l!mPbve0C9#n?I)01xKABiqJSL(S+| zhYX|#jfW+z)dw)reao-^_+3J8mqFCfEeD2$Jaw>$>Gyvyez*tuj=%}wV=-Tg@#fPS z&L8Q=)3?Bd(LPMfd_kc@z(k6vXze5Avx4~=58r>a3?YEqGhb2d>%hLjJSx38Y|jPQ zUCyH!r-*pgG^wDOXvEF|JzhE9hio9=*4*_rk`$~dYt-cgAtuxy9Qxu0u+0=fBeF;& z^Wl5v#W$aC7#k0`NGTnCTne#J4+*7kZ4=Q!tSn3-5v)WKF=4mSiVQ~9>)%d+#l4qx z{9MysLHD){Ca(=cac&a}aq{N8Jv&lD?NH*Ie}D8_lU}{{dpp^$#|VDB0)4P3h)NUdleE mCFsAYz*qF2A-4KEx5r->H>;=VK>mmT00000oSgT$J*kO*Aq9I~CW*s{G*(t$KS{OS+#aO%?udUme<*TTEO`Fr@r_QT zk=#}u-n~>Vm!+9S1PE{@3<)G~CPb<$Za;W?3+O}|+q)?*Pn355=}S(XIZmEANjZci zf5 zj<%@MX^bD1^BwlS^+AD|$dm-1wial0hwPI;CDM?Y9SXW#@w-UF0SQ8OgplRTleOB2 zUjkDS|0U9pI|lSN*EvXUa~*UIclJdZ#)Npbwh9>YT?Z;=B8|l&^t~P~om?<5Lre$+ z;%`P>SL7`djY#8Y9$wv9dv|3p)9Ovu3r^Sp@>J&i__b$%mxew<#AEK)K4_tuGzR_Dj zPEIW+13!^2!Lpmfum?NCj6AtX3WL`1|z0WJO$R6%tkR)SoHv)7)V z2J!;SiNK5OjY!w+2h{D`h38lT^}tkNg#0yvV}#EiXX)>`NH!2DT1ckB7?;L|{Tz(8 z;ur_j0K^3mj0hqIV+lr?y8Vsi$6LOTA8J(bfmHy@>b zcO$Rop0fUa(vNo6-E;xeS_D{{pDQU43O%OnNC$xlI9%J##D`I$O)boS8oT7?XD#2H zp@F_)^gFKH=_e!=bR0Mbz~#1kjL!}OW4;TpGi>5Em#V5QmwXEgf`!BCTAaDqG;d>5 z^tO*M_~HzHzE&w0V25WOoga94ESc3NYfJ6YaewCBwAXT|mGRkO%EV>r%_P8({OdYL nyXyvlE}#-v1%_wt#(IAOCI8(qh6s|AZQ;I8AMQ)(8AgTxri_~QH!8j7P*R` zMc^VU=$D{HL=sFyKO~Ajq>MlFfA48AXxr=Z6VbHN*b1^Vu&p;5ljX0cxTq=?a5f!hw>Y;n!k*~vFnseWh_8s^dl9C`3w#?js<@l-uiyFgp|$5{ nCx+WSD{<@TkixBf{e_-iDvsiFH^U=e00000NkvXXu0mjf5N;`P literal 0 HcmV?d00001 diff --git a/www/img/icons/image_edit.png b/www/img/icons/image_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..0aa4cc6512ea19fbb5241bc67ba90a9f8243c960 GIT binary patch literal 783 zcmV+q1MvKbP)5LVcnTf5GZ5SK z3kX3yRAdV+P=@A0X4ocLjyN{1GvCa2Zx4f0Mm_b1^KcIL{`sAI&kt=e|j1aOt8IKFRjAQ%V;Axt!&Q}+Z~gVtlY#!Wcv zuDrJsNE(EPTsx2x5C_g)V`_dDwxMvf4bqPkBtr@eDfrsf%!$MMiMv9iS{R9elqSVR z)0tPc5JaRzZGN<2CWLZG!mX&0p=0>~b`OL3$D@B9k<{xM9y~l^u8U0nz0Se4#tee$N z){M2pzFo)T6MSiGBQmVDbov*_F?_8-8Xlx!C&Nsmz|%-Y$y>6D))DQ#gs}Rt(lhX? zJ}!P(GQ9L)ZM*!P;CBTF9ZtvJrWbUN$aV3ZxD%gJ#8B!E^50fauc z(%JeF*;-Bc6HoVctJ% z#J}bQxxs95eQ_-5U|T|`2qxI_#-5W8myg8t{8iDA-)X%=;eu5}di&_8f3NTO4h{EI zwYbm%fNg=-My|PRb|Kn|y%-Jk?%Hsw>EplF`6o(16g6JqaoYd@ N002ovPDHLkV1gC;Y5M>G literal 0 HcmV?d00001 diff --git a/www/img/icons/image_link.png b/www/img/icons/image_link.png new file mode 100755 index 0000000000000000000000000000000000000000..4bdb3541ecb728c1e2b0bef1b0546fa0878c99fa GIT binary patch literal 773 zcmV+g1N!`lP)a^7G6T^gLQYt)lJ)S*4dqT-(Sy@A_4#a000000OYX$@Tp_vAnm)d zTn=Ab0RTV+0E`r@8*%c}_x2php{&yWw_e!Z+|X>MlyZSU1(FCNs6Z$OtDbrDi-S0n z!PBFmCmmdyTk*4u|()Gt$l9F|wevfQ0pZ+G_t zlWJK_L`lj?NtTk7GFg@xs%5GQfE=JgQ4AX%SxW=}000Pq069Q~{%TLZcb$|(RH`Ud zRVE=K)KY1%x-6mskOM?;d8zI1OH2CIKozBbR~D?6w@H8v#Z}k4OGE}B2Z-R}!VQKl z^neJWDWV79su3411OUjPLIhcD4HaekjK=C8S{rWh``jhH%@0e%ql)vNnc33t$;lIL zjwq(4rs_FB1W}b1fBoFOw}w3j59oHgw$9D@>WA<3t+DT^#}z}lPN!qd(9gqP{{%Ixgy^BE)% z9@>7F#!c(NYp=hf-yhh!cdyCGNi#Durl+U%2Ln$(`!X0E9W8QLHfXNm{_+qP}1jg5^>)a&)r ztyZg96h#f$;^N|Sm~S*1r!lm$vQoC&?aSS6_lf@j6IvVn17&DY00000NkvXXu0mjf DgX?L9 literal 0 HcmV?d00001 diff --git a/www/img/icons/images.png b/www/img/icons/images.png new file mode 100755 index 0000000000000000000000000000000000000000..184860d1e0b16cdd0698a884186aa27c3b685106 GIT binary patch literal 661 zcmV;G0&4wR5;6p zlih36P#lKyR|!_HEbWGst|FC=iQ<@LbGEBn!qA~>^`=bSiulnBr?QncO;#pi6;Zs= zE5Qp<+)W8it;X7qG?~p1m)CPnztUmZ#RJJX$@_cqa>9+wNjCzsvg!_rnj_d^tc!C} z)Q@x?#ZBGNBVH`Zj(sOsLg54o9R~-vBzft{d=Q_JF@P(P4aH z5rNrN_=Fq|1VyW#8F!Fu(8+xAESBFc;{Lk?9=^Ycld&v_8TK+`0d=x@@j(PDA8%px zLle(T2Gs0LSit9aqRaK$cs>_Jscym*k~J1kA&H)AE}TlnF?=b7!Sg8)Ww^pQID;9u zC$aGm@=IlOFc!dpyQG98;>{t z;K|p&h|8~-wr?s6WqcIHcEDgr+$@!=(1_vy38012hx0`X`ENTN=o;1bhSJE71W+tD z;G84@$9QRBXj*jSA^cvU--B7JvbhUf_1^bP? vP|eszjZh`mO}g5B1MG#;NxNxl+u!*If$Q>9A- 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�?_OK>kI(++yB^ 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%0DQQK=DKNo7z8M61u+V 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 Png5x6=ATLS>)ro<>O}mF literal 0 HcmV?d00001 diff --git a/www/img/icons/accept.png b/www/img/icons/accept.png new file mode 100755 index 0000000000000000000000000000000000000000..89c8129a490b329f3165f32fa0781701aab417ea GIT binary patch literal 781 zcmV+o1M>WdP)4-QibtN)VXQDpczE`xXAkUjh%RI>;okxb7K@0kpyQ1k_Y(|Oe7$m(^ zNYX>mI||sUbmn+c3<&FnE=4u#()KBS^SH8e)Qs5i!#lY=$-1gbH6VluzU=m=EP78&5vQ z-?+fFP-G2l&l_QzYealK$;1Rl?FkzXR&Jv@fBPNjCr#AYRyJ7UJQ0v#?)7Ott=>3`#-pV!7>9}>Q1jL)H6h&gkP@3nI=+F3nA~M>u#(n* z8T!#8oEw&-mED4!h4s!N@Jo3S7N&Q6%6l3}nlcd~X@>;uelvPsSkXIgg~e+^T1zSf z3SNj(5%jK~i8@b;C9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/www/img/icons/anchor.png b/www/img/icons/anchor.png new file mode 100755 index 0000000000000000000000000000000000000000..9b3422c61e5d23434d085834b82eed7a7363976e GIT binary patch literal 523 zcmV+m0`&cfP)JNR5;6} zQ!#78Koq{K0R;zL3K^ueKcPdX4$`e#^8*A?$4(UrP73NEC=L?Wb`e}#+M#4AI28&O z(h7D{iBLo^6ibLnntoS;4W+RSeem(_-M#O-mv=AJwr%ns(1oktvOHk&-Wjo2=gN^Bj3SRR*}a0NpG5_ zolK`M<47b@MJ$6*<9VLqM#|QJ9FOl*`~9c!VzJ0#yuW&YL-uTJXs#7SsfEK~0YXX4 z0b#F1DNRn42?6;6#8Y4fXr9klsZ0WbcEP)8e6`gpm!y1M!N^ZV(=IC*t) z{^;nqJv-tM$9J1L2QJ2DN!#51=1_l@G`2=6e0lehL%sic%`_4--LFM}IF!KzJCseW zq1I3__Z40|e?qyK1__gzP(qrBf-G7SQbQ`#Lw94WVe(o`qg+f4hy;Qju)q#I(9{`% zQmAGomzhQ!b|gq>KqL@IkO~$=Koi}a$u6d07kiS}NoYVMJjAeZpaB*;wwcDdEbK@K zNP;B7RzhQ|H9AlUO<`J>m1(5R)Pb-iLBb@7Jp)}LHdAb-VVgYxVoTzGoqu{~a>6uj zeqCRFI9pC#h09bGwy9;oHcp6(RB%jeY^F=Ll!S+9JkVe4nDG7tJMQiP00000Ag3?`k8$#1J0F}NdayEtTz+~+#EG995YAF(1xew#=1J)ogJuY z3Lxu(1VP;KAh`GKm^?X0f~UCV*)Nf5F(3GKr=#9qzp;L29U)FF98>T4&VoHZ|-ho>^FRq4ws;uOVa=V002ovPDHLk FV1kR43LgLf literal 0 HcmV?d00001 diff --git a/www/img/icons/application_cascade.png b/www/img/icons/application_cascade.png new file mode 100755 index 0000000000000000000000000000000000000000..da5c622eaca0deb4866135926af1d2aa5101d106 GIT binary patch literal 524 zcmV+n0`vWeP)}lwk9A2Ze|&iZoIgAZ3MTi0rviU@eS5?r z4KA#JuLrmglUjU7y&F^VIw}$Rg3uR)V-k9U&=-WhAoK;n1)+F@6(FfbKq!_YoYN6- z@oomdg%KbsI|VMR`^0v};X*@SkkbJdKbzvy#h(jwfiBRE_p0E=F98r%Yr~OBPWzsj6v!X?6(f7#B3EJn O0000hj32+Ia2PFSwHp_;8^u8>r6{e*krHy43#H^jT&z}Wa&xpokqZtA zFR&Fehhe_gp*x{i&XLj%HzdqAeQvxDT1Rjn;gaWw} z5^~2QShuR2o0yn9fA7Y?Xzt(DKhn`?rmhAn(VT1h2r!!4rBZw52P-vSDzPZb#g$`y ztkj8XEoxZ`Y73PkKp{LJ5D~&7@Je_kT)~2i-c6l&IJJyK&5~gfN`_2W7%3TM2{XqE zQA8qFq861?%N|ZG0Wt%FLJ$TKq7Wo2$Odl0Q&0;JYFQzcn1MtBWCjLiAQxdE1Cmih zK`p|mAf*(48Y1z>=gVSoY2jATaZ?l66O4$*k`47+`l zweRoK+p__ghH^x(%m8DN8Gl-sYSGx#3kS}zEMMMC5wqj&noaWd37uvw=_X01NGD-Z+i^1;8t2&z(w`{C(PM?|mR`Ky`;pI zld+0ZK^TRQ&AxX;a%I->Ls?9Vv(;_9E)=9HE>13WHNsnHAS>LKQkMbVH_QE8X!1!(q^p{6+N_ X4^=JUQP|Z100000NkvXXu0mjfgEH)N literal 0 HcmV?d00001 diff --git a/www/img/icons/application_edit.png b/www/img/icons/application_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..fb2efb8775442af862ef0ef111f371e5857928d3 GIT binary patch literal 703 zcmV;w0zmzVP)FxeKF=OosmQ6jmTLP{}-6iF>nO8f(+aY2!Xm^*5Av6NhR zD0!Nar%`rnu~v@R4hO^8&iS41=VQN>+65QO>m_E!|B#IbuI^pAy5?9WYjHC`6;s8j z!_-hy%sJEya}KAD$C|Z-~!ZLFQctG09Uhp@QPcl?mU}7$E{?cz}t3fC%LK?;}5+keI!OTyHb6 z@j}nbBm-HHT&CJnb^IYBAVSCka_RdNzT74;XDve?FCx*eM2ky^TZSvCN4lf#zADBt{VLMZ58~8Xlk&tIj2}J+_M1=n24SuBB zC|kIW{HG=&F(WrHgY=^pRBSp=QTYN)m5{Hh{2@SBTQi04uPMk>dS9PrQdx|l%yhmz zOH#Sz0@1`YLTX0HPj&aS)SnFM)H&2CwbI1q`b)fRK1k<-HpW#}^Sv*{jiIgdH9W>t zQ6<#EFflVmJF;g{aA;S(kLP%K=NdiTT|X03N>|n%ZExo<#LO72ZdK{vlG)|{vIVoS lXs&IrKfQB()Zh|+zd6v%`rDz z6?4Z`Q8OB=D}|}4g>&PV`$y8ABR#`axw_DjV?F8$MI8o4(qhF!@oS#-Dpfr2Tk7gu z9B5~~P7lozrS3*l&J+jS95pZ;Ge^zP%+btIH_Ga?wKkxpL;-gq2|^GEK?n&XBBUXZ zCMo{&1?6``R7r{2s+7nwB?@Xv6aW!Hf{+9uB!UD8USfG}ociW{R6gA&tqw${Miktf zRU$+I2qJ_aB#BV`@POLpE*iIXQJ8xO`57WJB?@NB8W8~zq5x=qfp72b(XhD*{c(pa zou~Nz_6BYlW=0gUN`+M-hzOC05Pf-bljip0usq4cwd>S3mH099i0`wH$toF9a5bU? z5I{r_pzwJTEiBQnsfex2fE${BN?Y$)=AT@lie;i;W~>n)0OHExv#T`i+K&}q;Z~x% zuLCQ8B$u0}amOLLY9@%}#NgOi%g$~6ri!Vds_fbDl#>T@wC=7!^Aot2d479}?!HbW z*$6eqcr`C*eJwEdkCSfuyE`#n&&HzI*;w%0FZ)<=o_G qU&+mJGu#X}!_9Fs+#Jks_tsxXE+vBxy0Iew0000u4Z literal 0 HcmV?d00001 diff --git a/www/img/icons/application_form.png b/www/img/icons/application_form.png new file mode 100755 index 0000000000000000000000000000000000000000..807b862cfc087b70dcdd971af3ac92688484e998 GIT binary patch literal 467 zcmV;^0WAKBP)4nWfMy23V#h*$3p-!?D%AI~T5+JJ;5Qi)|`;Y?)XOj2U`VS70o zp1%L~Y4f1;U-b7MEOk38OU$EtImvzCpiEkKCg)@3^{;h@nc_6NuOBn7?ZF9Ev4w3+ zWiSxI_v2&k@_b{1R8kdeGLx;rFK&F@c}mqZ4YwJO$7q^VC6&nL^Y#-6g9F*zM-oa= z70W0^1X#=%!t{DQE-wCJ^Pd1r08&yFDUlL$EtoM3e+;?Hv-Nc(QI%=il9}v$`OS^N z)(TbAG~DLw><`m+N>!Xf5_@kR0j83~eKLh5sv-%=fC#``TU}jaG#UW`VS>Ph2!jLJ zROR&N$x3B;J002ov JPDHLkV1im=zqk7R5;6} zlg(=rK^VsO-|*I>7Z08a{s)Rsf(J|SV_Rz!8yef7kVJ&ghD4GkA*3yaw3HgOrMaY5 zCEF^>3bs|O#wgl0$9$0`oBc>UmB*RcC2f(EL>GQM^S=AeGc)h*Z~(affwPP)k4&ZW zy8GEaTu%wfT{sti;{L*S+?&tAF_*=7d}1I*%E6Q~85vri^Z} zN8TMU1G@6RU=6$lGjJvM&}=rl=7#UJVc>l73ynqtIzxx9>ufBFVp|%dhW84l0cn`3 zs_37{w$MmS3)?-Krs10Bm0>`;T~`z+b%IhiRXNdszQ6MDg<(KHRjnpNmSv_4xkj`` za)urv8+pROgH^-8k@yNpl2A3FW2q|rb?$g7jPaSPu!j1;KROSKbIdTX&wfIsQaRQG z8XrBv^AAh#tPEl;H;pev0payKxEwx%-jP#5ZZx)yQmI5Jn`&^>U?^|_>2DFFe?(av z+_;JG#w}{_o3lkXQ79A%1r!N|7R8ocbf3k`T;f_-wuiF&l>i>!Ju~? z*C#Th%WJGr{q8i**?JHVhTs!;Hrbcq4|mYXjU$DVmx8A;B@DBbsnVGBpwnwhiv0wY eZrfBp&Hn+e<03_si;HOh0000Y=*2{WUucY-zdJL^dl3I%>;ad8o^ z7>UT-aEZGeIS2v;T;fmM9XBTt$%UH}0?1h*2qK@)Ge19v#5w^G0dO}Gk-On;h*g0V zg0c5w{A6?(dp$&D`V;BhwH(@f3^+wpiDS%+&U-Vg>20eaQ79BhObrh(SA506v+ZnZ z$g})zgzWPtJU(945y>2Pr{~-rKqTCq^~N9e(A;`~%*Utj>?T{b@1P-MscT0g(~ZNI{bH#Y_Utm11j?0+FF&hK-qRX-TePYY3~f zgtoM;)~2M+AJew!(sr+7^KN&$cgxoJcJAGZGzzQ(AD(j#=leYm&p8hTfchUO*=18r zr!~koJq|$qh+zB()q@3G>7PU6y;(H$c~Nhe#3lU)C~l9VR_BJ=;N(S}WT3GGbJ~$L zY!^k>SWYq!Z~hmmJ4PWHsEvN4)9Gy^Z?)wOR0E3;1OdDR51!|xxx?Z3jR~6$3lGcS zw`wrecMQ|rMHQ4-uw*icvKH@8Qe-U(ejNgB1!Gqt;e8II!iaktI@}570bpEkH@7b5obwc$sUX75)sc{ zLoV$^I#`Q!&qeqKv2}x;Q6ZOcK?qbLvr>-a zyc(hY)2O@Nn=hiGX9AH(WK#{q_3OcQFyqRCxB{6^XTi-jVaae3jL(UZMoZqHPUiu` zFod;2WZ-*e#Qe)flJ*;9mgV@eat;ZSNkD%BUpZPjbEd(ZH>lOVM>tFq!k`K6p&rZ) zt12-&(V<8oA9F-Oc!oCq@PvQW{0``D3AONE*fZt6-G6K6?>+q?gw;DtTL1t607*qoM6N<$g3ymi=>Px# literal 0 HcmV?d00001 diff --git a/www/img/icons/application_form_magnify.png b/www/img/icons/application_form_magnify.png new file mode 100755 index 0000000000000000000000000000000000000000..7b7fbd17e39353723122664abae8461f3788227d GIT binary patch literal 612 zcmV-q0-ODbP)PDrjnPX=rH; zqQ${l4iyS4Fv&4giDwVmm?Q$ zhTL&8OyXERuCJ_Y++wrjMj8GD99k(+b> z<{<5wp8G;7au@E7lX7q%1U@V;^Dm<#Bbba-gga)&*~B}OVT z8FJ_8^ce^a9*{dnoOjg?w)UFTS_KNZh~pjN>QDihNJTD3CPDxgha7@4JUq?D&XIEY9KSYW_M1j`N1m2BQ6{jt9pgXOIG5 z7fYv3PRIVYk-8wpOV0eq;C3`{e8D((T~xwBz-I8+ZE$ y`XBWUUFlg}deaE*PP<-CUAQ$+zVt#$I(`F{%rIviW}jLB00009TL{7iX$V@PAta(9$|8b7D6wp-IURZdO^p#W zhGj%3h}IwkopYY&+|PAgc}vbAem;r__Cgn?7OtN?KmKI17sC;NJK>JG5gvFrVTMN# zW|%vN_vh}?(%S8}PbcQ9@iXId`-X{dTVVoMbkJeoYg zZe4x6LQzFH#h^6;2oKD`3ETs7$J)T!z`_|=FnatD=0;HwL7^lRK_n3h@B_uHVGm~Ku92vAS`gf?5Br# z8{9Z~kHXz3lDn}(5=ayYND`_NGav5KA9U$9znOkFMd9ugsm+;f5|St+frNR>{r5M? zxnXQ%jM1ZG)Va%*SCi!2P^2)Y=l}vFAwaUKcgHXPW0kkyS9ex(J9 zLu@IU7soQkH&cA1hmXWM zDZ#H?v3PJ5$Hq5OmbDN{wJ%9%wAR zT-Qu9!vIN`896F;t~rD&@Nfe0`Nv1rEgogE>hi36i1p_V%rE6ZqX5JdGmz-z3Rm#{ z+Z*c0z*?bg!mefM79{Zs`zK3~u)rkEuD#mHG}dlY@$@R6?<^o~D%1C9AK Udps;mZ~y=R07*qoM6N<$f`qvmMgRZ+ literal 0 HcmV?d00001 diff --git a/www/img/icons/application_home.png b/www/img/icons/application_home.png new file mode 100755 index 0000000000000000000000000000000000000000..b60d0c85afc41d8888b874fb21fbb215a8678065 GIT binary patch literal 685 zcmV;e0#f~nP)I{hwZ<~aTagPdH^@uK zjY~?Dw;H9EMl7~jY&PfYJf}U+@AtF+YUNh@d;&9LB7zNj@9bW&y4W^QvDgey#Z(a$ zObs=~L{KwK1W{#5ln!@vbRT?hX7fc?Y${&J*Tmt>8vaK-T#*aFMOR5JtPGU-m&=A} z>TO{pOGy&t!=mG4xtM^3mKOte|UGJg?xP-rE$mV9Ba&%vrgIZ=IbKrquG}+;$3iho_m~IZ?q2fogS#R3qlEKgP5f zb4V+{nb+8a*%6*zK1`NoxG2O^Q9NgAj0pmk@4U(5NB5aEw}I1btqcwh5yvsj&CT4t zSL8s;X;8+f3SOuxj0=K*R0A{}A)k+EY-}V50x%;N*Wq#y<`|=@crHs*yjQ(1c>V1S zpUNF9?O#T1TuY%)U{Zb(?E`NqE$`v{vo;n^UCgH9MzS=+b0&&+^W}AtO2Rb}@>rRo0Q0^~dYKRD`il?SH=a@Wg zGEo%asTrQ@{?c`K*V%NlilCy12&#&tDXNN^VJesyYKp0%ig%Y$ftfK8Artf$>Q*=b T>SSUs00000NkvXXu0mjf_=`4z literal 0 HcmV?d00001 diff --git a/www/img/icons/application_key.png b/www/img/icons/application_key.png new file mode 100755 index 0000000000000000000000000000000000000000..998d65c6942453d764e0d5427e6a361cbdaca856 GIT binary patch literal 670 zcmV;P0%84$P)VY)5dRg+A)?a2)_PUQ=}3+N6D zvAM#+@`kM!V{-tZdE@rkmJI_g-<_cXFa;ngdkio&ynqp0w=gY5C?&SnjoM& zmLZk=!p^n}tjxWn(MBqDrqw?XSpzw#bPoa{5GYRc6RZqTzb8$8W`H2Mi*wCy7`V3k zOsG`{R2=|dh679l4TW;{JzHB(;tL}rw>7ZhztMPfA5xs}3CnT3=0E^5LqxE@KtZa3 zc=0nX$RaLJqAm+71(tu5g3x^B3ISA#L|9#Hl>J0*_#u*r(Q*-|Kf%>vam2^IDaOYa zu7s-kXN0N{VQKOOxzXorX+4NVgNR>ZY%rpxR3Z@J>HG=0dT;fHv(qz~&IfUadXIX= zdylHp+0@7W_G3iZ9>TDm;nyX4#||);*ozrNiA|a6zHD86?LYpuG{ZkEO_ z+;HhiElFxjo6yjHV871y>^#rs^RXwCT*&fzIWyybxb6!Br}uWWU;9$Bf*GKSsUj+v z8fuD(pk|l|qDo!0UmO{kxHx#D=eBF#)81E=FC^>ptVCh4Bz?ebSMrvWzAUg(nYV;x z&cwLV+rmnnxcZLBnJG~v2nK}tXOutoV-he?G$bx z+bC({FJWHT=iUt#X!bBen!k*-=p@PWvgC{e!HNhnW4l8{R)d>tR6uCaqq{zj!VO;W#; z=I-mb+9r}T#Z-x$suC48_VSB{1!iC0r8N1H^86&l9p|WTJgFy@`WU!f)*0Mw4O9TnqBr{Y-GHDVuib)O%q7o!E zKlFxCD=Me;C78Guop0xOj_&HYpW_Dm*t+3@`&{>Re&;#QbB+dp=6|HIxRxBDrUi@fE_t7hH*d!sYoQrtW@#bM76y@j{#K^yGu+Y%mKB@Gh?6AT=?YQ30NZKe^FU`jD8!o`SZhpef2|bb8oqiKx}PSX=Ml zPpyStYfYXXpH2?}Y{RJJ!2oi<&p};TK}S+S+g$})Z3*j525N|?ZghFxdh>+}pxvhG zGk`)6rXB-{4Ai03Fi?wD)KO4x$=GO0Jb&iKa}_{G#Q{4z9Iy-OF-d*(m3BeRA&BbK z^=B$Txc7MvKx%ipc$rQk6bd1cNFW#tVzpdGZF38^haSzwg)nqF-C@mC?4t@`l4KbR zED(uAP_0%`sZ@~5<@oh{JdRSS#JxhHz`fDY(Oa5JbMN<#=5;m;pU;Ql$_i!!0hrBZ z*ladLqfvM~9^R7|U^9XUg3!=7qi^>B;cyr;Gcz0@NfL}kBQlu`ip3)G`8-mo6!&OG z0KeZa(!a2D?#>(jWtk`Zu%CBwz)9;x96LS&gTVlc#ll5Bc_&U^-~hYbUf=g;9bv_m z_?>N1J()~yE-x=57K_24C(^PW7KQHHYn09vi~kY2ApYBHIAPfkv@9S(=c)EgTc jvoejazDXX-B1Y!m%PGQ6x$c z#f9@AK!Oh=jElv$CqBcNDKEr@t}K+jhk=(*)=6Nf9`DW>GPMDbI$#A zadnmXt6lDNZUb=D%3-T`<7 zxtL}GCkYVlWRqqF51NHf9Yl>2gOi8|vh54F$BDrs0>$iLAcx_0>Z+sNt2+U0SgfoD!Wm8sxbT>nyV*Byc6US+Mev^`pI%-cR#%pfrES|$2%tg@7${Im zLBJqCKm^~%kqyWahMtFC{m)BDn@^W+n<9Vs4o8^{xZi&Mv#JmPg~hDhyn9@iQaYl1 zb`JLD2V96U6l8WL=?n97fC_~~t>ED5npj0DEXy*Oju~q^dmy7QgiIy_{eJ&PQrd=O zTr3tLpD%!=R5+2n4HYIFZ-%8JGt|1(g~rh-D=YFj+Az zW(A5Kmc(%jan)&(SOLdLpDi*0KTl?3g3&8WuNWgH;XS@00@rm1q##!+l~R*`BVp_N zo+o>~-p$tT{t5Bs0?k82!-S(@;vSVo<7@Jfu3S^qP;(9ryrKIh{yWa!k>a)0QvY16 P00000NkvXXu0mjf=yc!b literal 0 HcmV?d00001 diff --git a/www/img/icons/application_put.png b/www/img/icons/application_put.png new file mode 100755 index 0000000000000000000000000000000000000000..c30cf59894473550b70d2ab97e2244af64c2ecd0 GIT binary patch literal 585 zcmV-P0=E5$P);No%bTEi-Lr>D_AI6iV#?A3~B^FfP%5GR1nd|DqtT_3=slpZLAdaE7%DZ zq7q}81xXPN76HNi^JdngC8_mhYI?w^U( z2gw6K?&>VvIx{ig&f_gAfExg@R2*<~)WC4e95q8rugZ<6&Z+ic)U*Onzk&oo-0>i| zIATHwf=EC_k<7^~keAhcD{H`r6aW_ify}`K%$&?2NJcK8;%KOhO|6b#^*;~+_kTbl z;Odxw3lN0NvI;PYFxpfMsWxLE%Z0^vw@I-i#zYz>Ufg_xS!EE)l=cip0Fkc0GbiElsF znK^ijVHt@UnK|0x!SlPMyan7K-~PV!>fW=oV5*oJs*0JRDPew=cw&P?(*;Eu5;d~( zYlq(NDUO%dUjxW~rt#|X#V_sY_PH1n-EQ~u$EWMFd)E6M=kt$dKcrzwpH{xkji3Jo X7}OeR*sz>k00000NkvXXu0mjfdXfo6 literal 0 HcmV?d00001 diff --git a/www/img/icons/application_side_boxes.png b/www/img/icons/application_side_boxes.png new file mode 100755 index 0000000000000000000000000000000000000000..efbf3c4f8a3d485eca2601b06000e1fa43ce9e96 GIT binary patch literal 478 zcmV<40U`d0P)-eKLnyL&KL-^knRT*t=6EDnIfI_sQg({rxtSLaN#|N7L+jNg3p|2%yD-j}Gh zXvRmU^d_Srz3KUHVs2t?!s1VuJ3E_%f+l0r+rG8QqFO3-kf}E^YipI8gG!@$(9}@S z`}+MSi%N!^3N=9_6InD0(NxPclhKf6N&+Qt0&=3L&`3d3rJxxfozk0(hV)X+R0$a} zpu`nPGGScUSKXc>P>6^?647;xo_#xhBK?{PAT#LZ1hW-T!t|5p9p`b~K3L-2ju*E^JkQ)1ep^i@O zO=b{e1r;|mMRr4XdiVLhU+?-1LR>b8k4JEKb|Q?7&0alocKG31%X{1b370S#E=Mlh z47uZGm_+aH)LdQtc4J|(HeC##9-i7&?TP(Wwxg%nvMFG?XeE!WwO?%4dh*C0g`0Ef zLWe*W2m~ULJ9D?Vcyg2zhfmSB_aH?q_}l12oh-VGO(x^z>t|%^tu|H~?#@1A}DkjYKCU z+(ih1ZZ45UNo*=A1>;x7$x=HZ6aOQ3vM@3>JKKNsNKIzQgqa};O9@HH9hc$e$c0Nt lWUm$`Yv+TzvlEdW`VF>D22IH@9z*~D002ovPDHLkV1mW`@~!{? literal 0 HcmV?d00001 diff --git a/www/img/icons/application_side_expand.png b/www/img/icons/application_side_expand.png new file mode 100755 index 0000000000000000000000000000000000000000..030cf7c37839cc02c5d08cb35de9f62640063c88 GIT binary patch literal 581 zcmV-L0=oT)P)bXLFrOI}#XAMrnzM!yjS$@!NeFNp5HyTkm?RpyuK%q>=#nO`L` zH==;V1|c9pf>tvp`m*qu(YM#h+5@Fh#;&%E$O|J1=7!iLIYm)$u;VZno}ZxjRuP@|>+C(Q4%^EH7|#@HX#1eW147;PK_BBq1TB ztSj<@D99YKNph?(W`E3bY~OK?cAwzMa0QZtGz8KlA(A^$=I%s7L~>CS1&w->X#C+#Snv+#Q#Y8#3W?Shv&pgYxkM5>5!j*M^V=GM TxI=}Z00000NkvXXu0mjfz>*Jk literal 0 HcmV?d00001 diff --git a/www/img/icons/application_side_list.png b/www/img/icons/application_side_list.png new file mode 100755 index 0000000000000000000000000000000000000000..248eaf1ac1473e89184b1b037f7c077ba76ad99f GIT binary patch literal 510 zcmV*ZfP_n!43{GpZid`(Gfd*b z+4f|A|KP#fXDi!vur$~@v#^*iE^r!)CllKOw(F$zJUKk(w0^dp2@hX=@qc;r`m6uX z-6!w8M|BrryaywFplKS0!y!|L$G@=7vCc6UjX9SuoyTN^iaTLvncg*K)lx~xNX042 z)XoX&j8IKR81KRLAMa?}meFX$RLPK2p(e28SQbGhLUlP|XPMp&W|ag=;0efyqC$|2 zP$eTQy?}e^B~8P~Akh zvI%SFo^y0`#Ky)3Q#mDqfRYj}5nLivNrX@9^wyYFQX&-oDup0-LOuBQeRsUsuE-3T zFf$}!ZOg64pOHH*!_AQkmyig%^pd+XkIbBY0|KZP(ksAG%K!iX07*qoM6N<$g5MkB AmjD0& literal 0 HcmV?d00001 diff --git a/www/img/icons/application_side_tree.png b/www/img/icons/application_side_tree.png new file mode 100755 index 0000000000000000000000000000000000000000..f04a52b3dfb8dabf3491ec7e052ed1a5f7dedcc2 GIT binary patch literal 483 zcmV<90UZ8`P)pN_*poPV}fK3`pE3vW?6l<|D5Xc({VhY=BuCHMV1+hrG zRkDirp7VD{3|xW)!hTy z&t80bcW_)5_ZLUq{><*|a}%?RjUNHWWi!Y&>vL}E=OCkb`Tnc^=hcUAy3Ug~pS4Ai zf@ZZ^(RCfQR;JeHzwlA`C|tpB7x(Vo!oz6_5>3~2)LOZ!duS=Ly?fM?8MH^Wx#7jrYe3uiJoxB~poHWZ_I?<4jWG_RV^Fa4>!S z<-_K7zwuyW>&Du8xwFPqte-A&3)t=#)n##f!d0DB7glf)6EYsY(dy7=k^w=~}g0OK393~W$5=0atlITpQLO+;BL(=rAq$z+S zAfPiSKr)@7L`NTxVX}xuDVk!L(P+eEGGTXThuP5)d*d;)>4filyUeE(_P_2jn@{+$ z|C!(OIit}CDY@|K(@!^pEn^)+ETDcHG z0Jez;%!*B6r4%|KZAzGCr~^&!6io-1l?bqDB7#c-x(F=MSfc4AaVdacC4&ET{L^(b zvT6G1ufy^4k9AX-C`D!>iL4b#$i_;XMi!QkXvVCBZLXtmO@9G#_%iGj4i?)00000< KMNUMnLSTX;N$uzW literal 0 HcmV?d00001 diff --git a/www/img/icons/application_tile_horizontal.png b/www/img/icons/application_tile_horizontal.png new file mode 100755 index 0000000000000000000000000000000000000000..8a1191c389aafecbb9493f14f13de25e34f36f71 GIT binary patch literal 432 zcmV;h0Z;ykP)~HSm3sN|U6QrN-pa}fa=>kAy*54Rm aM*ISgWgjfIBP3%00000 zld)=4K@^6+dv{}4Y=qQeVU@}tM6j^36YGGDjg6qBwU$%~R)ORVZ1Ms&K0^u{3%3Y@ zASi3DyPIt8obw-xdy|`4NnAWIGt8O8$DIG4DI$UwJ0D*?ez>}QJd2wWgoGrLH>*j= z98)mhgioKpzkdJr=^j8I;L-Z(Zf|K&t}H=B5I{sb07Vc1ist;z*mi*qFilZT>JuWO zErKAB$a3eP@ytuw=mWR~n@?`DXuN!PLcxWsZyk?Al4tUtK7 z)>|I1a-*~AvhwpT{I2S?3@|=ZS8@}JuPPh5A@f!oKT{}$MV-7EUD=C(AAx)Hk^e2H4jA zqMp?=kuw0+)g#_`oi1?9<#Nbovq&bBC~8$C5(!-9btsAgS(XtFhdHm)k*NX1z-X03 zG8Gg^r3&tfI)C33bX?!-xX71rcB|p^M&taBv7`Z@X|tuRJjYBXgH$SoSS-eXXf(HUrW$71hbZ=gB zq@LsPI6|Qi1A@UI?nO&JpATNI7aos?^V)2(0Wi;h=Z$iuigL{bsi-}bDj<2`f<&uj zXu|-!oBL`^RX*oPy+3+`7O%$BV#=F5s5ZNTR%-+=hQq>kNSrJ|)Q}_wH2fMH1v~(6Q9)T8`;*=P O0000CjNr zUW1fN1d-Gd7r2N>l%796-}n2KALIT2^YO?eu@~9M*vzf-7i;%d+Nwx^J95X|kPDY1 zGh9Mum^%l$6{Q6;tonHam& z&u-m)+9C;(lg!W0^P=Y{J$aeIu9KK&6b^;p+My?$?QijWYk;}0r)e}Am>WqzqNC`2 z&bQ6)?2D%u>Kdo4V?>9yzpnCg;~hszOJrF_;)Rg}bEBg#TjxYM(AWKi=r@UR2yLC= z^Xf3~moMO(#>D=QByLU;NZgGixEo2m zUZ+l-#NFwTM29LuhehJSZEZZ_k>_v$^`U`{uGrzP*mgoQg002ovPDHLkV1oRO19t!b literal 0 HcmV?d00001 diff --git a/www/img/icons/application_view_icons.png b/www/img/icons/application_view_icons.png new file mode 100755 index 0000000000000000000000000000000000000000..6a93cdaa78cc42caed19920ae622af7e35f6067a GIT binary patch literal 476 zcmV<20VDp2P)yh(bgPr6Nj-nT19X7DZ8zeUKOl_Tl|>1YLMH z=jlD?b+Sb_xgR_*#(SP~INR$20GAV7?rFuloUPPDd!HchGLr8gZI>aqRf53gD~KB} z;7=4_D*g<@>Ld7K_aG;3>sUvEaJphdb1M87A#!by06TZW*wPh{Ku&%@CmC6|-~wsq zjb0RsMFKOF(Fjbu5Fwh)ru|I#tR-Lz>qIaxcgh90?Z1KrCWc|y!1T|aZ~=a*-(Ag4 zSPUtVz{2m+IDzS#IpP9w-9EN;RO;3eG#U+?z$0h4Kv;Wfk8B+i3#{n6-UibhNOQqt z?12jeFM)^6#o@C#4HjCL*d?a8z!%N)t>y1HEak5ffl*Zzs?{nz*J?G;G`=UdUjg$j zC=)9;^kAC{HL0z0x7{1P|EQ`>eA9tOij?;P^H=75o6^EkKQu SuK{QP0000x=~R!WME*cb6K0H8ItD70ARH|h P00000NkvXXu0mjfzPQHT literal 0 HcmV?d00001 diff --git a/www/img/icons/application_view_tile.png b/www/img/icons/application_view_tile.png new file mode 100755 index 0000000000000000000000000000000000000000..3bc0bd32fceb21d70368f7842a00a53d6369ba48 GIT binary patch literal 465 zcmV;?0WSWDP)zJNu3H-P zO&@UpeyZQXi7jKe-Hk?r-sue;aDce_XqkvXP+W#F_*ot`jB?BS93Uw71|U^ZjLH`yP%FO7U<6!nLCG} z$SDlWwtp^MwsrC67-bFzu!t;6Q^%|k2MJ$kfh*aj@vhNOIJ zWFxBVQIH79u!vw98!Ll~y$OKnm}QK5wtxPNU<+B6{mDR{T_7M%l&baHE>bEbHX04+ zn+OzZ0e^b{APT{9E#RmJ5)l*`)B%#z1i)YIM#v1#3=Jvuyn6YS$$CoGDq?9U@APAh~ZOF>jp#TVKsZ^rDVDQJO z=z(unDix`Pp@6(DbUGbswOaq~fE^0}P{J^D(r7fOTCGyOUUzmBMUy*UwAN0eHX3ch z0VGKh>h*fm?RK3*p0=MB(nc}0O&K6sv)ObGuro)jd=1C!>krB`s44?r3Yg)uiG7!8OBL$a-Fo@&0(0LjNH2#KGJZi@q2YVKu xMc5!EfO4vTMwnf`nA&W_@!!aPwbiWO`5Vn?>V~$MffN7$002ovPDHLkV1l0g-PQmA literal 0 HcmV?d00001 diff --git a/www/img/icons/arrow_branch.png b/www/img/icons/arrow_branch.png new file mode 100755 index 0000000000000000000000000000000000000000..7542db1d1a57f9f3ccc6d5d4dc82ddada796e67f GIT binary patch literal 582 zcmV-M0=fN(P)8HN)#RH5YnYUGP-mK>R8bw z2t8C_N?y`%B@?pVvm%P1(=O${na{Vw7Aotm+uS~f8Ro~wbIxHo`d;S7O>X_I!*}m4(;rQL3lRx0{4$S^45y5Zuub!<^(wd zDg1Ydq7a)PBNSH(^bYo1I&!_cv8F)Tfk3iCfaGzKcdABUEYJ~V4lNs7(L31l-D~h- zlLeyC;Rle^b>Pb0!o4OezZxjWAc9)nJe_NP=QDRgIAC4B#i)@%!f@-iPyu79xm3 z&=Ei~gdfA((>G@?t|CClgk~>+;;$k`$HzXCdi?6@>wW;(eSTM7w8{L??AcXUU@Ta{ zLrZBBKD>>O2Im`9qM4R5P3BW3krlN(mI5Z z(KV^C5HyzvLrS5djW#mEchkd0<@IzkP&T zje~)eD;&7qVC!q^K`R)J4I}kERX%bq_9+7Zgt9nQ1hjexG(6abiLr9H+N>B-7 z2>SBph(duFLM%ZMg!96nVfPZi`0RE{To_%f(_e%DKo9^(nOQLYoR{*7@^cGNURr@4 zzkZ(Ce|2}YP~a51^_3ecKqY3A9#W~)94RvZ5Lhx&%iTlGqzqJ)REFGQ7YYk+-h&8H zSWpD2LHy$fOifSwLOD8d@zwpm007W@bKhnf=_J{@wR~IV`r=Zk3O;}Rf{Doq5z1{E zIsfv~>-Wn(Sk20NF7Mj0E;nzqrn&}V6|v_rc**3>7Z)bS{%hr>c-THN=6y>p_+sGG zVAk^%RuiWM004bvt5qlzG?JaJFPIi!hzCPM5F-#u+HVZ3^__nM0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIFPbXFR5;7s zk=srhQ51%Gi+LO^77wV16dAzbG@wAMB7&i`(b(8xDqyU&#ij;pOFf{D;3PUo6_qH7 z@zCD%DY)SY{?6Vev}G>5=v^;XviDy5`&RNV6#!MZ;uAv`-s;%-AVco=6~AW@oV#X; zoCz$&Z(d;jHilq%pcXjuFe4{!G(v;>9DU>S79m;;B2ox|%Nj+MJXx5%p2GUiG!j?S z2%Y&cbj&LR9?=RJ#?#^`7Ar|SI}E|PVW`sPXn8=Gxtzq(^&D1yr10dMQz3B4@Y_lP zuSye$7RF#%H`Lg#dZzwixa6krr|(Pf7aR(KLtwFRkwCIM1ACSQfoTSJFpr@l7akX# z@D=Rv9@rED+g2a?Hy@G7U^9C3eb%8a_?P-$1a5i9WKAS#+qN85)~E=vH{A*SvKG1z z?dVFiLHkbgJ49E`%y@DfW=~%tej1}mHwt<_YB9MVMN|yeVJaZ7Jh>K;f_N^45j&cq zYibm9%abEw2)<1>?5kF^y-^EP;Mg%$3H-V=jgh?XuO0tco$p(rOKHJp92n09(Vu4V zFxf1qxGkd?5d9d=dtu7-P^)33OCji3)S!K#g=w8v*PN>ytji{-6HO9rn%8(HWsOpaN*gR#GpYXhHKL|EB8l4*TSU_vTR+aX-(Oi?S;8XyR2It;Uw(aI)9^S|=&95eX@({k9USGy;sUSUzeJ^< zMds$`SXy48v$4bI@E9?)it=aq5A%!jd|dcIDK=`4J{pRP&HSggJxd`56RH!pk4D8J p8dUC|epvAzhprq*3?{^oguj5GN{z3E7kmH!002ovPDHLkV1kL#`6U1V literal 0 HcmV?d00001 diff --git a/www/img/icons/arrow_join.png b/www/img/icons/arrow_join.png new file mode 100755 index 0000000000000000000000000000000000000000..a128413d8892dede67a722b755a0e5a241e22cef GIT binary patch literal 626 zcmV-&0*(ENP)rYsPY01;xw|q+1XP62ZKNNf0i}lORw#-+^ z#eWjGI5)D~*%m(1>5Uva|KRl7dV8+T7A`G}x7k6Q#1cL#?^nclzafIHF=frdfxTM;5eU`G(t3ZL>h zq%#>uD8p~AzniHE4Br`SCb{0b_i(V?*A7x4Yp)<*$j^%sM0Q8xU9lJpTqqXT@nX^1 z5K1V0^Sv}x0%NoVtwF!n4+^nruOj~?pIo^7eBkL7YanOml9_B4qKQB-fL6CVNJ_L8 zqEZAEp`_BgUC2WzPE>s=#feq$gGR5;6H z{Qv(y10{fofkH6I3@AO3$p*x`Nil#0jeqs;pT9Ds7{CaN1)$9r#n~kE{`~pF@bLXZ zhF?E_GyM7i!oL`P0x_8Wj$ni2F7#hzWPxfvDaITYg5=lqDRUe#ScX*(E2x=9XYzD6%FONbQIbA#VsuBq0ij+PPf#`3M zpvPY0@wz6#pQ1M#cCJ4HtBQCgjp?eMD}Ow?B1lUn;`#{$MeS% z{6Rm$gJCR2mS9S5Qr^HNj0iI6M|{5JQ7pJHG!RSBu=Xz)&p=c#F*=4sGKu^2{X2Z< zASEEw`V6Q2&NEMPuTwY#5DA1Cf aOZ5%-nC^v5N+ApY0000%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001 diff --git a/www/img/icons/arrow_redo.png b/www/img/icons/arrow_redo.png new file mode 100755 index 0000000000000000000000000000000000000000..fdc394c7c59b83cc2b876abc41064c75eb365877 GIT binary patch literal 625 zcmV-%0*?KOP)FZj9*=u@@4&g|7erBn|Ebu&JU%m$={t4j zMA?=F80s{QH%n(hsfF%mohhehBz1^t6ID+NGJzBtYm#sZbA{ZEu?vrT)(Lb!?K~){ zH(Aw`uB}Xq9=*Zczi=_)|A3QuQ}znM~D7~ zjUb95oVKv23l4|e@$lZ*dJFeEA1zqO!B_8JKbXnR;M>>lDE=(2>_dXN zph(~`!iy8(2_#ButL^3%VaH2WCpD^U)OZxp@C)2#hU)y+@T%ZNzJigNk%37 zz-WYJwT%teVfiEI+B*@v4ey@58(ld4VY_&5-ox`e@AKg+0U-I`y79bmuw_~y6+4rZ zBG5EdFDS+@M0OSE`>d7SUDOzKZ&h*4eB1iX7tOd9RiYtW2mQ--bUahxr1`i{RG@dM zL#}_X=DDO1{;UI$pFu=dLYT_=5d8WC-sLfjr7UO-HKMAwa=!>)kEhvuwre zuW3yF@ZxFCkI*+ad|5kOX%5zu8IQjhan)UqgSrFGA_0nQFn@Z08DSEUToCSz4Z1ls z&fDbq$T&7|6iq$_uDI$@q1_kQ@dfqk*0>{SDL6V)94@)ete)j++*>bIc9sj}Y;R1o z#OpH+Yt-^4wfv{nern^iVag8-LrYk6ae86R!cq$1)rW52v1)b7{)|O}AG6Uw?DO|Ft)k{$F)%(f{RF=l?I+ zlJnnhy4xL`1{54hojLt{-~Wv_SN(53T=hS3efa;Fl|lb2w&(vZ*_{2~XR7ONye`Pu zoA?0e-~T}W{*PZ9b_gaOFw5hT_Y~(tZoT$Qj_p>QLT-Dpnng!_d8sIiCa_~9WpM}{jZm=`Cltb^#NWN0R6i=Yh}{^)FrY1 zts6}Ln^hV9kC-0#zxPDb|Kx?y|5Z~IXW}#f=--za%M<=jKim6%%IU8E6Hm4O?>pJ@ zzvo2be~`FJvceg~cv%O$F0gC1*cmrB?0?kE;Q#uCTK~1P)&8reDgReaQaGRxhpHK8 wAOih+0O;RKWM?MbJPl^eOx0CX$&G|C05z+&w|oy)!1^@s6 literal 0 HcmV?d00001 diff --git a/www/img/icons/arrow_right.png b/www/img/icons/arrow_right.png new file mode 100755 index 0000000000000000000000000000000000000000..b1a1819238c6de8f9e50988f4151261fa6ba64ea GIT binary patch literal 349 zcmV-j0iyniP)o>#A+qW*AYQLZl(!&BX$x7Ik;qO170ssEM z@$bKXf%rGW?|(r27bf-TSv zD}TdX0CM*JhkLO)8|Y^+n~Q^sK~hqR;q|N647YFGy>NTZJsWr!5CaSfwJm@a><8NX v2&h?|*nn(6-Ko08>y5Bipj zFuyiPrdN8pDqvvkw%oSbD|$YUB3aMBizpn!0@bH?0kAfUJ+m=Vt{!e1UD z_AQ7AnZ&Yq3oU^QbQ$1o#v~>3AqYSCl3VwJuGp2*ve%Mr?A16`oZg&5Nc6*_Q~a<`f+n=r+3NUh>M=H*cV_-chG}N7Vspn9Y`Se z0C&>eX!bRrM=;=eq7!GFC$R4w=n|A@e`7&l%LDhi6W$FLp7k-fKe@oJG0^dCs2ftC zB0v*S$*EwIXr4EM`7n&hl5iB`A4lL?b)cQ2aNKqjRZp2DO_QVx^`6pHR5;7E zlj%-cQ51!F4&J~xM61?D4NeiKN{NVy6X-Qqxk8=MfEX_jL}^8BK|~N7FhJC_i5-lo zIHJodz)CX1Y{)@S~!d8q1l+bMV!}{YL?7wC( z%edaW=F&F+ z($9?`K8YY%uR)_%0MQCxd3ndPa;Y~P?U+0ni$XZM7r6Hug|3%ZMP*Zkl*~_HJgCLk zA%$#B#@zrWY4GPt5fc}9icOq|ZdVP>t`f>G-FQBfO2-8VoE7L?C-B-QL8&<(Elc$< z9F9VNpaHd~Mzw{9XMM@!tpI_e9I`cn>D7RVpdQ8}3WkFbsCW7qu?h_iA<}x2LUHGS zH_L_8E5^i;Hs-n?bM4!dqv}ItRGh3xVBa~)+_!mXcGsfbDMZdlCbCp%NFPW!OYKP{ oAG`}3ZPvAA3WJ2dfsV78ToP)wU4~UJxT^#Yl8pW;T)B2y+W_BqqmW z&#t|w0SE!KR$a#7aL!?!V{G>0(f7&GF0n$i_yAiovkXpE$M|c8KDe}2*w(W8jK3Y2*x)V03j=u2XF48q6F<0_UD&z zFmi~T?K=p$491faq~>RsPR$VB89_xzOpK2V+=|x$1lD3~x!;g2Mz5ELE831k>xd528II@{FM*4t5cwMI2$KMmfFm;RN43xW+e;$tzEyd|PV<@i4gUfKh|U-I$hymfQ} zt?kWDj37pE;wZ>1WHG%+SvbnRqEaTN#u*-slSm{u7_C6WGBh|el4$>24G=QE;Y9f< z)G2BOvC3T5Jn;{4ig%R|E{ITA5W$|ds8uW$Z^f(HeLnnp>dACn(D>^wEGjH6Et2~F zjpx1H%%|rOCx{iqDPk27MT{DNK*OCgPK;oDLHt!jVx&(zZS&Lq>Ld9Y&Ck!LvbvJw zmn1{|Z(}o^vo(KE_?L8-a>7*bay4g1#tO$)YSGB-# z09u8rA}2Xye`S%*{zU3D^_fPdmiyPg-%=noKoSatC_xfp1wO}z@<18F!7w5ZBTtQy zk>Q?#Vu_u^$z|>m7x@d+R@cH9d2;6$#K=oAGXHn~_+m9`^0Ksl zybr&x6m>QAki2vjRQTUKo@})pZ5^O0;;V6NP3$@V;4k*yCND4)s8xvJbzU?;j6jsI zmJlOe00i|<1M%2^mY^!=O@UVms-Tw!6e7N`0#c#W>-;y{_WlDAEgOIU0000T|{kC~{~#l_0}%A4(11APN%oTu?? z=X074W`VoO1edlFk(}Pe+k{l13cG z@Zg{ebmFvrg4(aE)ymt0PXG|#hrbo`l9pd&CJJNeG5oRLh@uE|LN0g+kPAk_jD!Dj z_W)6I$xu?r4rM_XOv2giIes?kpb5$I1f+0vQ(N0DRX_d*AT>Qam_gH;poF6zhu1W2 zZM?3O0ATjZ%VV0p@0F|Xy0#$W%*eA545VUQHZIT}1^_dzn{lzTg$Dx@C_=$eZ`855 zuv2PZ+%F%lcB{7yKrj%JgDv*_6XP~T7zIHv>jS`+?hIW08PEt5;h|3hYY}w9A7ik8 fw0GAAdk6dl5~BQt8lE;000000NkvXXu0mjf^Ze9L literal 0 HcmV?d00001 diff --git a/www/img/icons/arrow_undo.png b/www/img/icons/arrow_undo.png new file mode 100755 index 0000000000000000000000000000000000000000..6972c5e5946080ca1dec4de09d9430d3edf6c555 GIT binary patch literal 631 zcmV--0*L*IP)`NY~_X_4^RN+9OmbDu*=G*+_}E z3jR}&gbG0=R0#?Z-=09KI|YP8=#E5@+>uO|=1VUCOole%Li*0J2^Gy8+;b?&km6gg zf;aDGp1r#I_V|We$e$~WifFF9R7MCMwsmwsME9<<@yx?a+v)qKuKbNe>k1{IrVt}k zbbSs~bXr8Se}V_b4opa0GhLA`RHceaP=N}IElbSa8@d(ij1Q|4CvOirm96w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000*uQQn7Ao3L@HcVN_JG5Oz^iELqtfic#8+p{{13 zB!rfdf2k)SDwJS|D58iKOKXwBFIFGcC-AUOfLS9bv(H0S%=6T$O9SC=2fMD%gnJC9? z!Kh(gvt=Cx?1R~s3W9x8mCUENrT{!2(+x==*z->Z(e<;6aicYvPErVhHT_;HRWCrO zX>Ant#Yi-31=*-(@?ZTrNtR{}?1a^q3-ss0eBi>@Qc)edAUbFFjhvR`kHwNKL}lr> zmx4@#VC|1-HQcog=-UoF%!Jv#1q7>sa}xhtBKb#7NeGlV;rH6OFmr?PNPiwMRD=jG zfZ3f5vy;Gqe4sZI=uW3=7L4|E%(QHx)3_-#2chPTcz1*X$TTNe2v#yoR){KnCQhcg z(YBd3W>A0&#{D#mmPqQSlM)|3A^ATXx8dz!8(tOJd5pyIa?we$G^;NU;SSgD5WO`G z1giu)7o5cCBA8D%u7}Z)i7#g)f3PVT=*fasvkLEz*?bEIkm>TthSk)+f{EIdAk!W) z?VGx_0qAlea5(`l58AzP0|-{W*Cx;y=hMVxgG_4#JISQPBo@rv^)uedmP%+LWdH!1u~sTvRX(MC)0C( q-3yOhdA{Gl2X{NXPYNCLME(Md?VydvM~!0u0000?P)rx$R<IWI`!e`47o+X|cM zhswMI)6H-!+|Ry*GtmT2KZBZTgf*vuh@Iv~E3-o`X2T^+DyW5TGfmLUU@4QG+c^0c z#zg&+`J#c@0((YV&ur`*Iawk7JMET#>EkfEJtz9cD4oNF6e!0Aw?I&|=qKwHAy9XoQ zA^YBJr@&gw)O7(`yrYQGx{Yirh2eMScnk9(q^&}_PQ*$`FTOgh0*()5P;Djfw78dp Z{0&Uoz&aZx@__&V002ovPDHLkV1iM?Q(XW6 literal 0 HcmV?d00001 diff --git a/www/img/icons/attach.png b/www/img/icons/attach.png new file mode 100755 index 0000000000000000000000000000000000000000..ea897cc9f18ca49aa0f30bad4e6b67e4afc7f498 GIT binary patch literal 391 zcmV;20eJq2P)`oHYyCmI1nr3DC<^9@PyNudrDc9~P$75b!T6T2tv<*K=EzTZ+r6P_ zRz+%oP};s~_x>mm z0pQ)E-O{|Rir?=|;*4Oe!&-;44r3gf)-Iu~;|c?9A1D^Up9`F|I42nWf1;W7*36nQ zf;E<>;mrl})wIO~mSnh(rWZa#2NtdEEaCGAoUuGEYF=CvMF*C~(sQg&{KX2n%}a}8 zOciIa_PHI{);|Uxur%sZTk(iBku+YSk$2)hv%D-q|J4zkv8~S}=sv#n$c;b8Tl>=) z-YmU{U%3OXd?U497niTyWAILy_At!M7x2Apj>MrbEUAGs! z2*LgDY3~W0-&vFXRK&wM!Rq38<&LrY0BYvaiV-PIt`q?gL7d=KY=+X85uHPH9zBu9 z7RL}2PHTd~U4qGM(<>iJyKg2kEiRMk2-UR2{gu0rAcG5XIGqJs1my@XYarq;!Wm6| z;5%{y*&m2<7C?yz`F2(1ES-^c+p9yX-baE5husHL>x|gN$EFoidu&lgFg_;qBqAn^eBg zmrfDE=lozB5#`f+?N@-W=9l=-*J{u77@tgMX{kLa7Z#4ze?Tq%=1F}hk fKwICJqlf+jPqmTX#t3U(00000NkvXXu0mjfGA@$z literal 0 HcmV?d00001 diff --git a/www/img/icons/award_star_bronze_1.png b/www/img/icons/award_star_bronze_1.png new file mode 100755 index 0000000000000000000000000000000000000000..658c7117bb8c5f7f6127b82725880898c3d7fbb1 GIT binary patch literal 733 zcmV<30wVp1P)5#ZOj$V zV$6R8et`Hsp^Y06t?}x?-BN{Jo+A{GLpF=}{yzmtYh)C=wic&;1MX^#S<^tIK8mw$ z9j5mS;s?n^1>U{8t&EN(863h(*qFLQ=;hn-R;7@>ex(0vvZCi*>q5p75xCt@M#zpM z*Z|q?@X7EteIjT$hYlRP@ApxiZy$PlmbH;D0hOKL_{*WZ;MR^|Dic+L1tK5@y>d4> zXDufE6I)H=Wxil#C-axq0i?$W%}gE53ocb3M9Ce~cq*pr4r68}P%}Rp!|ZI1=W3eKQ{(8&6eg2G=4KE}@YE!+_s=wG z)yj?Wi=|CWjtmfUw}tvT?>o~yi1Cr^9Fogm)I5&s5bN!p#FzaA_^&C@GMJ`fX;)}= z5K#fB0E~v<&l+~pTpQ_Hbc_JlkpsFSk>9$Ch@B!-R)IDix^hJgZHdi`3)**;A=W+} zt0nUFG38I&2bR2ge6xJwHJ&|-TDl&zbzpIUHhXn+ZJGP%0^v7ruA^itSBHu$h4w+w z&L~mIqJj#PGAqhVOEX1tY{nVK(RuHFv=}WVrUQp_xcB^j9L~Ad&|0%#r=L{ogPY3f z4!uHZg;a9h6+#J0a`(`5{}%0Mo*4@oH;YU-0;QA1Qb~kT^YO3Swpc8|wFF=bv<62? zY$@0n33K%OS8VAZ?>YLSi`>qj&9`d&Y*T9wm4vIN9j zkP|P4lYpD0Bjgn4X$;UBv_dZ5O~RdzicMmQDXe%u##|`bv~(aghASFAo&;Q6a|ogD zsQtBmS$G5$4I-kGsOcaoK83aupcO`1Iwk`5hZekp0}sgXR2hFB(%HO16fJ6JWl^G_ z5*Z#x#>1$11U(Z)8yZW5@V|X5iHUle#xE=#VqkOtzh{T*b9=LU>LXg&=(!nmB90QX zxIJ$Cy-!2fx_m+W&lac~ijkew;hG*o3kQS)N`f;V)7&wxjdrA5BLJqiLS`2yQ;)!F zMsWGEk;+2mEGwX)cx!4v<1QcCI3WFN@qTL~^HJkK`pdQ(nZZsha~hGg4x~|$8X(m^ znUU}Fw4NiatLr*KZ{zAnwP$R&Jfo*|RL{EdFGe#L4Mh%X#Cm!=lt?e lJ9R~yy?yVmASqoe`3;e&U@M_8ssaE2002ovPDHLkV1gayPXYh{ literal 0 HcmV?d00001 diff --git a/www/img/icons/award_star_bronze_3.png b/www/img/icons/award_star_bronze_3.png new file mode 100755 index 0000000000000000000000000000000000000000..396e4b3a2583924c56773430b5f2a5de992bb696 GIT binary patch literal 754 zcmVD`bm3d zGTu>FRh`dR#u#|GJA}tuhQSMPp)+>o{OWh73pXD}T${kJM?CzXpH!75YRGK?HI?Gz zo8Fw@!L~jYmlqicA7i=FXk;H0N!9s3d(aspCafT z#S#=yNti3b k7t7WKJKJs|Y|BUf0tz8#4)XPX9{>OV07*qoM6N<$fPbrirq-~0P{ulMSj*I8(*O_yaV*n;RGqTmwM3Zg;V@I^LajC_gJLk|%viB%8v zXb`=WSiKo*!O$dgOXnuF?pAZ*qAgv&dGGaluiN$B-}ley!894P1BY{7&gcABA_Bm( z?~coX7h0LTvWPQ+wGL|?&N_^7JbvF6`Uihvy8k7`2JzP%XD!YNM*kaVR;@LwYK&lw z z6|B8&1-9?(`Rg>qd^(dwc0|)e>Qg*bJIY-(QKo*L!x`K6zku-%b{)C!d!}zH9q?%4 zd;F$7MCu-+Gcv-Nb5}TjDd@X6xc|tl02Q9v78mi_#EItw-ukiU(4npq2e)+{gh-U| z>Q@Y$^uF2Gk$y)cf^&k^rA*VFg{uInGS)aJiT14`AR>qpBFQHpu^rKQL>JJxG`6&W zpm16fF8@imnC)qKMFxD63wm7;40;{Cwf@#_Bn)t29;dTlOQ0N8ckU$WZ^9W(VfqX5 z)7fLh7y?itLSaC)I?M6sgS*?jdtOAs>xj9DxDsMlKzRh;O%wd^3zem^SWo7F{-=k{ z`)chH^Ixi32cO3udSkbW)#FSau_bV2GL!QxU&``8YA>;tPFB*x{C0B0=4UP*Uf)8p zTW+X$&4@0{A_@?PLV;NR8lB|+)LyDDkD)&6Ch^A*&D*zlqU5l@aV0|a^Hs^6DCOgf zK`&h++R%*77O8G*f#+WP?+4y)!gH#59grJph&v(W)pbxf^C7v3iCGky4lN>GQid~*jzV&2Y;Nxe8 b&C!1V<3gG|1vXA400000NkvXXu0mjfBS@ei literal 0 HcmV?d00001 diff --git a/www/img/icons/award_star_gold_1.png b/www/img/icons/award_star_gold_1.png new file mode 100755 index 0000000000000000000000000000000000000000..97a22b72eea2e8d65655993c68a9e03f6a40aa9e GIT binary patch literal 753 zcmVPWf;dl@9%f?!cp_eSg3A+l4!Fq^t+ti}&IAe0X@D=QWZj zM%;Z?uCWO_G=wDZ9(j)>jD55+NwV|jvC>tN3^K{^fV>&V*w6!et5~&pa*WZwJy*mn$*RS=E{iBzuX~I|52pZlZsC^BkvS{J~dNA2rd+&Bn zDPttzeo9qHVOn0H7x@0?K2+P{2W3YuKv0gI{t`DZ{% z^)uSl+#vB}3L>aG4!cswJw`5%TN)=W%p(lmIqdQjHn;eWkwjs@obZk>!UG>wB^pj6 zJBPQA@h%5(0Th8rU=r2%$dMnrMsDoxS0p)Oii?!LYWDh=q4NEw(&6(bk$r@sRpbjO zUIP;n<+9A(?2qj-J%=u`3F{W-TmM-l$V z6zWcE#Z*)dyL<*2KpukuZ7vZZD=nXBc*ijUh^IQs>R!T_1d1YTE{iGKO;BD#`7_Tp z-nnR6O6#}%g{8r#E4*kAYY&kBcxtMq4O+!H+m&<9B%$t@BKNE>6je&Y}T$>)>rA=-mG16ocaoM?$_R#KKptL1a;2QYaEZL?ZqH!+`{1Z+cmQ zQ1}3XixLgQQmBz(W@=0D%tV*%@ux?(vz_nL)r+<|qt*=^_D2k+IGc>M2?jCYw+~gHPWej16&S4+k!e$e1 z8c9@6m=~ktaJufDrrfG+$c_;0J)+AXR6rg~4wG9-^p5hyBV-q^eLX8w@MpP7yr zI9b1TYcYNFC1gjDpGL8Q!VH)cpWS8T^zmRH(%bc+_AeM>^BXFW=c(D>`upR9L6DHD zC{{rhL(1sa$1_)@d!GESEwpUYlqoDZ*YYIB z@KEmIZ1sp^{p%0ukJJJYwH*M!esx7LKIulW$P&a@Bxzp10@XKE-7~GSi1H( z@@-F$4UO~wSO2qv5d5>I>G8t&$-Ru98~DgOHgvwPo%gSox^JHNWdP)CrU4o&u6xvM} zE>!43A_c(|D^&=#^_8j(DoK2_jE_hv6Jy4XCZqY^$FGYRnNZ?^!{r{%_q&I4&NY&l zv&~qvd5Z(RR~bC;k(pzXlvwbd5QMWYK{tDPH|x#` z?|dmjqV)3WHS2M)r?Ko39dCYxjXl=-S;5x{1m~G9T9#F%v9YJM{3q7c-eIY3^LBNH zsp1UYzqSJ3^XKq5i_=M(Yo4+?HAJGel}(jrSW=PV^0hI7^F0d+ocpG&d*ttlp36fy z)|dZAvTi$xMeoy`=;zAyQHKA@_1x<1>@H=DB<#gi87XQ|P!t4TTB& zq=+B<$dU8W&pVoi_DKms5Z)Fi>b5_6U?dTrts7H$<8lckp&$}9A3*skWS<~gz)lX~ zi;ob7U@h^p`^5Rj9Yzwx<7P{+^hQmeRwkG4L~)J~KOxvW_#()GNn(;!1ZOD>9wk3G za)LCw%-kXsj+px3Ihk6stsz>m6~*JoO`}jm{yCTkmw!m^)G;4Fqr2sM?Vs1g>W`Hr z&AJ!&`uf7tn;;?0pfCf9F+`02dMs~eXq$uoH-(y=nlhP+ep|>Q11MlHAdfNC6e;g@aPD2@LIrTdYx{lty>00000 LNkvXXu0mjfmic>9 literal 0 HcmV?d00001 diff --git a/www/img/icons/award_star_silver_1.png b/www/img/icons/award_star_silver_1.png new file mode 100755 index 0000000000000000000000000000000000000000..028a54626a0aac09911d57f4fb475098f5a76361 GIT binary patch literal 714 zcmV;*0yX`KP)fArj&{$f(hg~Pe`ob!G6yckK6Kt94NpER>OV46q( zwTmK1MDR|u>fiw2+jr1@{ldr?4i=8Y^YdUCI46;brn5x|u-6D?{1reDs0=nX;Qa7# z{-z|i5};F>PJvxtr+|jr4WpeM7@ADLx?BL`G4|P6su+9mLZTNX2qk_wz?^5yOziHWLHFBXekkbc}G;BKUEEtks` w1RezffuwAYL?TI_&v!4KPQSq&*j~i^1*0~MIoPHs^#A|>07*qoM6N<$f=#+TMF0Q* literal 0 HcmV?d00001 diff --git a/www/img/icons/award_star_silver_2.png b/www/img/icons/award_star_silver_2.png new file mode 100755 index 0000000000000000000000000000000000000000..e487c3a19e6de398863e819239a594bf033c3547 GIT binary patch literal 734 zcmV<40wMj0P)lhS)MHDPD zN^nu$NDZ3R#lmf9$bw~4(f#`U_MX!ux3B{*@A=OAJkR%@=RJa980fCp+X>@(D2jzf z0h*yh)3v?Oq3S9wxGv$ri$}=bc`tN17W6DtQK1`uz>KKs`d}@Mb?m_ z5l~a%)+B`G%d}UZYJ0Vg(qBL!0TG8Fnye(EVnhxhU+6ij>+NHIku3s^xm+&ZvfXaS?(Qx(lHG8@j>qE@ zrBW%HPN#n`KMo354zw?o%jF6YC#R>Uv)%JlDwU1JVkhV3=I+rOxY*124Ljn86uv6q Qr~m)}07*qoM6N<$g31I`ng9R* literal 0 HcmV?d00001 diff --git a/www/img/icons/award_star_silver_3.png b/www/img/icons/award_star_silver_3.png new file mode 100755 index 0000000000000000000000000000000000000000..1d72d47247ceaddb46f918d53ec4444d633912f6 GIT binary patch literal 738 zcmV<80v-K{P)Y)`XtzyIql2{sy6=Hu9+tjql+xOzk)<~?R3&ZZt%=gXAx2x3abu`xKgN6FU ztvTdqR_-fsPsm+$v5g2F{&wVy{xABFA=M z>Tg$mz@w??JKYAiqlT`oE)2OXoN={bDZS1`^p*q*kAjg;*-d@vV*wYO2F~{MptG|R zZl#Q+58tqoDd?Z$cO%UhgO)<#mU{;p6#;L>jklv)NFsR-vjYHa0e}wY9}S8QZ(dwW|Fum-# zX2Z$8|*3m`ciVNwH*EI!K4;uvAKH6fHzx?V&@^We*)X?7dsir9(vp z8s0qC66hg_FvDdP+YZ*QQXq*asiJ^PAt__udR03JSKMNpvg7nRd;*rSO>RS?^_43zGp9!-$Vr8Z;-c)wwgHkS+YjrxEH>PP4=o*Ja%j@-qQ7nuXR|G+z`F#G__zp#^)oN!YNg~y1 z^~|0zhm_4`@5r+3Xt&!}L!nR@MFO-?D2!7|UpJf0T_|9HeV`8KcGd}Kc-Emip&y|t z_#%p8-7t&=E*g!lG#ZU>nBYAEj>EBt4o4jhM;RJ-I-N_<7<3u_xS}Xbk7%04w(w;0 zJ9vZz;{qIPf*|w*bT@RBO#o`l2JF2T=VSmKyFa;k3+QnBw+YIugUjVAvW{-In@tq= zcswQ8$Dl7zB!&WY@O=0src$Xc9HR*Gv(tqJp|8MRP(`o?-T@Vz_k&BxWbzRI>pqdd zgAD|epI0;lNkiCmk4uxq&x&fK#JHU*5m%y`?~DO@!TL22^LGT+1A&?K|( zYdz4JEapD|xm?ahV&zG!d?u55n@*>{uB@z}*A?8Dnwo;o=L7kmHrYQ>EDQ$2$Ii~q zd`nA9Ua3^3nbPLvgs&1Mmc#j=S+0$#6I6p2J&x7#la3=BZ8*W3I0`k+#& zE-|o7CVN*zRSr&1Ph)(1yfhw<7e}MfieNCf-{bKJoKEKsN;uNp-Mv$%)0L~$>fO!F z&E;~ryo4Z-NF+mrIg-ib2Lgbq33;9eRjUbwLa^CvA_9TqI8nP*jyvY+^&9$gxY%}T z{efPLhK7cw0$_M}cqAMSm-_wwVz=8Za5xKu?O?- zc^F2;5E%~Rr1;RY0$^}(P)Go{TrOcC5P-#Esb({iSk-Li8qMj?;hYiS{9~}CObKSiQ5Oj@%7N~b%kV2yzWN_>s$J96xdd!ErX7~R;bKQW|LpL2;YAlw2H{OX6m%2x z9k^~Jj3Ckr9VnQr!KB%;i_&6Q-*(XV^lcB9Pu|&GNonSO7$7c6eYa1wJ=xR_(A>>1`N5p7 zsCYibaSEm3C|Z4d`qoJIKLgO*40(CD#Kb~u;S1PEWOj9F847I;D8ro>?l*53aI{A1 zw@@0=mf-t&P#)*lE?-*hbMX_6_(>;&HVm-K$D;kYD4FDlj`cs$<#J_l7sY6*DV#2{0r?SCzu$9X+Hvz4A#KOj%eOjUg_)^kmHOR* z1`3r%1NNDUgv3N)up5mIjhZ)>YP>$qw8+_m~#CmCO(2yCKyGw00000NkvXXu0mjf DL5fvw literal 0 HcmV?d00001 diff --git a/www/img/icons/basket_edit.png b/www/img/icons/basket_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..8138bbdf05086e7f8629fddd2620ef1afc403cb9 GIT binary patch literal 811 zcmV+`1JwM9P)=;R!)R*{6v_K`G+ksyda;zeC!nj>s}-s|U^l!%WrJook$c!=9!O}3 zv>H?DEKFO32*|HtRC0n&3I>BxqFEC}vnIS=?@Uim&vqmdL6g$B>G%7g)9FCupnYBx zTX2_RY0M6+e#Y0am*^Fx#}b`x42Q!Y0PuJ`RG-fWyWQ?{xm?g{wYRKRE4&8kvoGUS zh<&nR!6U*(unphl`Vna1ZIg&9#|8%n(cRsh;&eKbZ8qB(qtSR+qtTER3dR26w(EBm z$1AtCHu|yg;VvSBg_u;bG2E1kM-K`-JNI_G-OB_3L^WzhM+ekub&lC=Mwcq9W-(Zf zt*8&{GYmxMX;_)yV@66@(zn#3prD{^2jFlx+AS7Kie9fzR;g5Exm7*;pR0z_f(2)+xA}nxCH^<8U~sI{=f(L?r-FDwR}&!2q4;MqQ}A1X~-uh|aRH zIiG_i;w0}SS7LQSKJxPNa@lP5EQ7%~`1AQ%TU+DJ&CSWO;Jj#5Vttl| zNT3W;VoJnRoqmqT13T>+UF4@7Gi p$Kzd3(&DbClpb5@$)kJy#_u2g$edtF$hQCh002ovPDHLkV1k`ddgA~9 literal 0 HcmV?d00001 diff --git a/www/img/icons/basket_error.png b/www/img/icons/basket_error.png new file mode 100755 index 0000000000000000000000000000000000000000..3978b2923ad6c7b4a5dc47ef27f8476f8a707d76 GIT binary patch literal 794 zcmV+#1LgdQP)sl!)1JQyAh{Jt+NLd0LFDr+7@6S2w{R5lYZfG1_t~4R>k90x6E9S7 zX$X7_K$Rek?eFet(@HT{eqG8Wp|g&hS~UZ&*Ly>fqz(+oX0tqo(QGy|Hv8*zTVs_X z5D0*=JOxa`MU>Si*q6hOWG0jOl1`@qF~TBI(&==~DAtUL^E}TpPN#FEzEZ33`~8On z6$gdlt9gT|la2ZAc?CgGi=ueRWHL3Qh>=CoKrk4DL?WTbggqLKwj=IaSXkJMjnAv; zlj|k5UHZbxEl|dXYV_>LA*>Jke7?Mc53I#vnL%JXJpcC6G(J1H<-n zjGQc9WQZ6-0r&Dvv|6oMw4_0DotlKdw+OD`hK`d>O1TS2X71OS$w4NxL--R5&+J39 zr!T*#UA_lMpP$`B)8H_!e#x4RxoCaNEEi|Yjem>%l4acjK=DVE=fyuAA=Ktrvw>RP5<&7h*Ts$HjZ`yyrZ>m-jgw3IO##wdLW` z(o#+$k;wfg0RQ=7U59z*^NUbyP3m1)yUQ#z{4s!-E889O5ZY&<@V!HK;5{Nm3*dMKVciQ>hdP0O4?$8;ivd2n1rGPzZLrz1rvV!DuvA@tHE*8a@HNK?ku| zT$2F{g~E>%nQ}NDk7H_Ts$gPbg5~%7OWbbvKAX+PF`LbK27{q^U|?W(<8aAWv7d)( zeG%@6>)8YXfj}^t-D7fc@)H4oOydTFL0GNU>jLXp@R`zdGkp^ErsHXmrwY!52JNmZ zIH%s5Hql13w6t_&0b^rh<0B&@1x}}vWwBT|CX*?@jVXn9Q3v;eHfyve`q3Y12OaCf zZEFQiJ!XN|%B{=-JRT310KhN|*X43Sr_)_)B>QH}s-OV!@iz3nY(kH}9+J^!=%=Nq zHJ?FYH}!MlIcS>xLBe8bwb~+;O0}oPcm$4kKdiG#(9u3Td-H@qS}`~+L6h|Y3cGT? z@9(6FHvl9okg%XsDj}1}aCMN4i<5$NH}`)5qM)n=Nef1O00000NkvXX Hu0mjfkRfIr literal 0 HcmV?d00001 diff --git a/www/img/icons/basket_put.png b/www/img/icons/basket_put.png new file mode 100755 index 0000000000000000000000000000000000000000..be62faaaab2773a6e951c3b54eec1303214cf4c2 GIT binary patch literal 733 zcmV<30wVp1P)k4ls z?I!B3WVC@<#F`aNER-!jYPQ1Y^<$s!$F}~@D5-FE;K%=co^zga&hzoIN~J=Z*|kUe zD`H8cmBJe3ob|WC?;=|ty?Cj+a{UZ=3Z(t?V;sNiq;AO_1TYM zPddZX*@@zRx3KW}R`+afoaTiIvgn)1YHXwU@^eb98>x5uee1xLyIor*7_=9!tCxmo zGWUdLeuQX7ct)>N$@RwUDYCLW_1nuA{yOaG>FGO)qU-}C%d!TvdpsWYaBN%*+0JNH zf|D+{4AaYaqHv^tZ+#>Z$xD*-Nfbqbepg|kVzb#?Nan)CRgFf&qS5H9jvZ$0iPe#l zrwunLkw_eGv+C-@;qZuFuh$ie#UZED=|Ylr7K_C?7-JuExm*hp2*3@}a5nNvz=7{Y zXfyO1vw!#k)K`T>5Q$z;wq}JHQfXLgiiH zVjvLc+jxmspaum5)2}Pq0E;%@*NsD`QmOQ~`VMOS&Rdz^@7Hh*27}U1CMl+92*+qN P00000NkvXXu0mjfPQ5eU+*>qNCZ^P_vEK24YDO;&<-m{sob!F>yPR`|({-J4jrtym zb5yFCuiu36=jXm0q-};_JA=2{t{u0uQ%li_n(AKh*?$G-9;wrPrdET;9w3i&jQqQr zj#l+p@8$C4wzhC%Z zqu52Y`la^M(hc%c=h@v3p>Swu=&s3R5|YW}^@@rL4}z3&p-^ZK$8jHGu~;zz$Y38> zf^jFy1l;(JK#QQCp)RmyG#Zy=S$<^j`F!E^_4V(l;1e8LU>HXRzaR*c(16)&ehqDg zzJ)ztv)Pz7y4`Np!i$Y}Fo=Q4c^Fs)<m=o#NJYL~O_d2{_ZQE6RdRS=e>s&?%ixKg{_r{LAR*=-`}H~;_u literal 0 HcmV?d00001 diff --git a/www/img/icons/bell.png b/www/img/icons/bell.png new file mode 100755 index 0000000000000000000000000000000000000000..6e0015df4f737ded7e7e14b546616e704f023226 GIT binary patch literal 789 zcmV+w1M2*VP)w3Y+732PG_{dW-vWnGW?ek+eegcN?|t9z2?7xGKN@MGRD*J^ z&rlky@ZUE!D5>oxB^64H+e}Jso>dhAcXJ|I^4Pu&0hSi(IWgLX71SJg^}9{IANt4a z6@3vO@*Gyvx&UJ2j;g6eXHOcITv{wUTQS>}4p&n=2Fk;r%w^@S*8a(S*4l9Z?xB2q zbEz@ceIA}S32-WSa5Toip*ae*h-LZ>K#V(y+NX@kSg_V%$^H^^#w5(VjmNa^Al#Zr zxKskTv?tM3%<%;PqbiC^j8kOR6?gv~_-2jxYPk=$UI?e|FeaO0Fjl)4b{QYeM$$#= z33NONUJd|;c@3 zEdc1N;!Mt4u3_FH!uuLNdh0_mSQm{kBBv%A#u5&?pX`FYmIHU&F-*wfPx9%`;Lgug8DbunAt zBaI+kWJ7UF0I#(WUwSj4$>*c9h=G}AiU3$-A0$Ax*`Bq(7C5v$WSb3D;V`_ofN@<0 zyyGH_s4k);Wh-=dcVI!ug{|Qbq&Jv@e+2kN0@9!>-iNlrSST`i(3d5k^wJhQO4^KW zF%1@J6soS$C)Ne{CC_FFV2Y&a z4Co4YFjq&xTp5X`tPqr@&_w?P@T)qFu}N};o>QJmcZySJ(R-Md ToJi+(00000NkvXXu0mjf*@atu literal 0 HcmV?d00001 diff --git a/www/img/icons/bell_add.png b/www/img/icons/bell_add.png new file mode 100755 index 0000000000000000000000000000000000000000..7db01d627922c6ef45c8cb85020fb230d1f9bcb2 GIT binary patch literal 816 zcmV-01JC@4P)r0JK8p ziZcp8(3p9#IermhN~gTGd#xC^6fa0Bd6~45i+Xr!rFioZZMAX=*zNTYoNo zSQVJ-x`3HCA+X3en6CH7bW11{>5Rd30Lti0sdY+s5#LPJSTt8+PInq#-v;Be<`8Tx z`(Y)yu&Tq+S-@I$07giHO&O=CyRO)J?_+sZhwsKr*tB7=XpUgA$seOtUNB2MVX3E5 zC{Lj+%YDfK7?85nHvM@lO_#$yo(%h7G!}Z#!TKr~BQ-wgf5yRw5&|aip4DqiDNdq3 zg)!j(=qp&0^TwN)H>TtL3s3aac%ZM^52KVUEq>4yvCvhx8|Eq&Y^oC&mjt0Y$xY$_ zbUbu_JWK{*W{3|%T?ELq0BDMjL7m6MM+p}*N^j_knRr|^N|CNH7r>NfClLebD$h=%@R&`Y3>flz&e1}v0LKysfjbUpTVbhVK{ty z7xGlskfY+Qnsb!AjT8JWaiUwgIKdT~JPxw52}BC^B42fVwKKib^_n->NYCS4x0J`a u@JpjzEWDVV_P{vjpLA?W^OPRYXMO`Z^tmZ;1l9Zi00003@?;{2!fhnpdDVjACjRc9&&}_7G!fzd+)6QD z^js-e&7gSabE~uFe+JIvM-+_c8dsFa%V9nCP%1n`ZFBWufExnUQvL%p9uS{|rz9GS zB=!3FwxC?C>qzOkK(&;gR>D#|QwS&aKZYg&_8%qOwV#PcJgvI6HTU@27vKC>pjyg5 zVT6Z2i;vBcNZ*ECKSi+9#%s3_ElPTFnA)FPPXm7ks-=7e_$ZRT{odHfEPaN9effQq zW20OLJrYKI8_Xd_qvq6Z&b%<6pVke&3Vg;>lTT^MiAQiZzQDS&h_Y?`o`b#JCDbqU zn}P&_Wh=D@_>P=RPan#}M~@IVD|pQl=-xKsxpX!xyd4*>=V2x_FicdS*xpgCJ;1Z% zU}!Lnv(sSt+amq_iav=F0^*52YHJpT2!?3rgE!Obba7nyeizW~Yihn(`4!)H85o$N zUWwCe4REQpPWM`msav9$x?;29@%x8Av2x-&5=)J{%lDhF0%#(_;(G_aiDgoUr|vky zm#2ypjy{XM)#itCk(AM4$T#V(k1%u3lZ0}&VlS0Bx3~~oU9P;S?N)i=_<{5BeaRWr z45Qhb7|$iBpR4fsr$r84b-3&3aU!c{q46~&lC;e%Kb99S?!EE8W7Yhbx!mc&#PaNg z&CC3;Fd1+0$2@+uAOdTadTmC3hI^7`n$7^#kr*Hlal`IvegYu)Ek%Lu%lyrJD_ z&L6*!HC#uIc^=OXI}#n(XlWr&!hsCQtw$vWGj$RSg4MP#$JT9~>*(5N&#&*-6OANOx%eB+tcDd0+ph(OOzXSet)ue=n#fRxPKJ!7q4Td0;96nICJD&_1!IjO3|5$ zB?m6qJ0|JPj^WOKMAWJi)R#~rO?G5}x#h+&;9;Orbn?K3RQBnYtlT7BF%S3ddx+;E zzK5AgqM-}%ezvFMqYrZN->*2k%otxsA%lG*M~%!Q2k}?GqPcJtab3bqk4-Ou*)vQk zDnq0+U6BWX8G8DGJ+wPN{OsFCkL?rG-p6duqJhu-)h6q87fEEXA3KI;W|2r(Z^=@p zLD1B~ww^3r>mIkSO_N9nU7BVaVE1;h?4`+#PGRTwuyWHvyat}HGo1$RhFq!L`k65F z>Fyq7{+3N`shc}8&i3)+G+Q8Ie$oM+J6S$aE8V+xclHZ*?tYS> z-Dcvo1MJ!NI;-mz1BEwXbC#J47fEMaq9}$_7)f>jfEP|x_O4XdO21tFlDt!(R$fHK zCp)|stFMiCRZt{<8WT42~V9+p44CDi|?-{ImoJvRNYc z_%M+doc!kO*b~N9Yn(YhF+cvs#i5va2MyPNzyFxTQVvTuuT#2w_R^MH2t7YJ`|*^k rqKHUbBZ;dBDypdXDyoQ}s)K(4xVc{-Vpqm500000NkvXXu0mjfWm$>@ literal 0 HcmV?d00001 diff --git a/www/img/icons/bell_go.png b/www/img/icons/bell_go.png new file mode 100755 index 0000000000000000000000000000000000000000..b89bb343458ea62488d810fd38a052c6a0572b30 GIT binary patch literal 836 zcmV-K1H1f*P)Yz&dqT~oxC<;gIOR^S%DIiX_Scdk}vgKP!L@}D(FJ>QuL4&2|W}( z1Vs^zWETnXMvxi>si`B5la80k%W*t&&OT@Fwt_;DMf+txto41Yz1Cg=V+{Xu`h8v> zQCXQ3(tSn82CHKJ3B2^WDBuzWj8eu<8AZ#!B%=d?AA|cB<9`+S8@=}-U@y~PBb1pf zCc7Byn_{4l)IMat;ah%nGRC*N{eAKxG+Pl#6B;5Ff`7 z7sJ4G21%xLMW89{o-?n|ZA~eMuJnV1?m{H9U_`}SSOSTtAW?!^vmFtQ;C!r(*$5q9 z5fF*x$0s_WM82c9!-u#yidbewJP%rJu?UPwFz~+;HLA#PuE*JtE>vi&b6FtD^Ryw< z^97owA|W9c!5%9@;|aK}#pCLvfCqLPYAw8Z_B`aL6(KX(i-+!LWyuYPc~KxN{=}AB zo_32nX?yP0ax~TXPTPsK_n%npu_(Toq=W=)l|pQ6pBy! zcf7ss=~I+f>)hUaga*gJgG=ymnD>Qh&?o`X3FZ_Dg_*^eCkx_-q1Ldt{Fc%hzjtD2 z`gvrg7X#gGTo8rEN0VyJLYg%jZkvaX)&!R&9bF@BXd7&uTu`xD_>9nsz6z^tMQy zJJHemUXnn!aJX-!iL0IZ6WIn;VKs!{_|5d7OJSl=IGs@P;?7*la?VfOO=or#Hn2Yc O0000JYm9`uEdlL{An(2adpq%j49-vJ2@kpJ&w0~X z3{(g04JcXAl?1l_6F>%;(hO3o>(VB1=WP!5Z-oJ&@XM4`W zJzj|)E)zV~Ygl;~2d6$1j+SURI^toH2ipDskiny*-Y!`(urb?+?S&WcSh!g2=isaP z0^A*^;WD0rt2-HkRSd5WFl{85WN?YR>z;c=3h$Z)-|eMv4_t!N%*J9{G-m30Wu6VnZYn z6|&jvLo}tYDrjJ+Ari}z5)|KLL#0x|;c&oix1+bW7u636p;ibnX&a+^{r&y4hsWbp z`d*={JZQ338Uaa>7}k*ylu5IY%1ePzD1=(AMsaa5UGq}7$jHbrQILXyf;GQCka;C^ zs#Gqc0dI;}NQ{q#*=&Z@YDHgPA9Ok$;yLU+KA(S(0?6g^Ek8h5SXgdO_N@&Ha7UPo zgai(fl9G^?mPU)Jr?}raY9_4?qyaf!NsCa4whoB`YiITV7t?R(_snS9ar!M}D2<$rt79lD%ze cjq*_5UuZ|Dxxf{wWB>pF07*qoM6N<$f_V&p-v9sr literal 0 HcmV?d00001 diff --git a/www/img/icons/bin.png b/www/img/icons/bin.png new file mode 100755 index 0000000000000000000000000000000000000000..ebad933c8b3729a9b27dc34c5a111600b8d46fdb GIT binary patch literal 476 zcmV<20VDp2P)!P6q=I0_iwCeRuEs-nY*ui2wlBo{da&-rimXk_dpOx8l9Y2eXq^TiLre{gv0N zh@vQpp3E(_zQv8WAB*@mevb>S`MD?sAf3NIKIx==eZ#Jr9#7|~0H2e>)YKJ;10yn{ zb~SBXr^1(^@_cc&7(P~SnNU?q95~@CRVtL1isxZE)U%{&!=XelB6GnODxd1btErjO zj_6poZCs)d1RVpU;qKVX8HX|rHyyQURHCLW%8}-eFWR-IYhR*iQ-E&#nFI_$K^_5DwQb0QR_*>mIH#Cqd99N2l)Z|DPKCCbQ(9lp- zvu47Wa~kew3p-R8Jp8%booy=RR$@JQDF}+Z*eRMM5iCB+Uxaqp3-6bf0D%9C#5QQ<|d}62BjvZR2H60wE-&n>*?YcA|c6o&|A+rkb&Vsas2(@ zRZChzd<-rL%s+C)K`AUj&@4exERnTGr7g|ufjFlYo2X-lQc?WBS5|%h$H~-pP=>{CWcO1^&sC zas{(rHNEeVX?R|+D*2koKAT-1TVxuXF7Gt2pCrhe%W27Qah0e`>%4W-qEi^2ys8L$ zkzFy>C52%M!-~#H9Xt(|Evme3 znsTM3@O9jy7lMk63GZ(u8Hac+{l2Nv{)WYyc2KzeV81veQkLz}aZs=_c)I$ztaD0e F0sv?9ij)8V literal 0 HcmV?d00001 diff --git a/www/img/icons/bin_empty.png b/www/img/icons/bin_empty.png new file mode 100755 index 0000000000000000000000000000000000000000..375b8bf6a09803b8fcee625fc5f38a949b5a1439 GIT binary patch literal 475 zcmV<10VMv3P)rCP_(<-a*jb_Hyre&wGyNNooK906+!+3lsI|p?tm?Ex#0xHV4K10Z9#DVK`pc ze*7w-lmAYiqVQ^K;s*qy{gNXl3K__@vT?o(V&K zcsjVVE#qaQIuQ57;gih|+H#dz(D2^m2pQGkc(XiPHv7qxcY;izAvom~vS-bB@7UaK zL)NX}h(uIcx2`~1o@>ob`KK>8W8A9k5@R}Q0cp50?UzkmTM})nYN>`oEg%iMGT-&} z_59V;^#>H9fVBA5b5zGCT|Ep8R4PHGL|Q!gtm(MZas<&1m0H7?fb{C)mF3rRxlv=@ zIH+Z>+^mjrjf~>_+vV_K8L+b&88i{a`h`7P#Ww_cAT-3>7iG?d zKQ=FfJTtdc)9<~|e5oamr>PvpaLsiMK% z)`3JKfz0M{+kjr+tJMf=)!zW)RDC`lVzC%#5o2Rx@Or(N z+pwWr_G0Cy#KMLfiChPqPN$_Y0QGvkUkCxe-;Z!O3?8>yEmSHM!)YC#@*XrA4QQHX z0BF760&r5HP@qa>L#*q%0boI`Rx<$XRMi0R97hX46Bz=Guz(YJks&PLZ=UBdyUk`p zsZ`>ej0K>|afib(q9}^d4OeFfM;4ipp)QvTJ3Bi(j$5}tCq9+UX8HLVTi_P?ApdRO zZnqn4=W;oEbYjW^%*@QBNDxgXlO=9ZRaFCIR%heN3`nQbC8{1JXzH(jfvvZ<_c95_ zgTY{*$Kx^fYu?80?k<*>m$`D3z?1*|Or`|_fk8U72%SNQDjC;Ho*|D@?i7hr`}2PR X#`)v2r!)w#00000NkvXXu0mjfQIK%^ literal 0 HcmV?d00001 diff --git a/www/img/icons/book.png b/www/img/icons/book.png new file mode 100755 index 0000000000000000000000000000000000000000..b0f4dd7928cc5714e002fd2a6e8f2faac0073f00 GIT binary patch literal 593 zcmV-X0l6k>CGhc0FIuigU9U^L+D`6bSr zIEp(+L4eIgaZT(|{B!*DbrTYc1t0J9*MLJm+n zOEVloE20S^g6s|1rvjjuW1W$TV;&TbK2|slm=91)Q{X{Kg;c!Saglq7xo8`(>{A}G zw@`8gScq(adr(4@;>^%e<~7+uNMv&?8L0#%0yj~@DW&fPImKeyFHkRKuNERO3(SOB z?S)niZbFEN`0<|w+LjBKR#DU7F3d&rQGGY&Y)Fv0w002i=Jm_>x9jBX>wg3XCKK`E f>xbvJ_5i;DeEQXvyE?}U00000NkvXXu0mjfKqCEw literal 0 HcmV?d00001 diff --git a/www/img/icons/book_add.png b/www/img/icons/book_add.png new file mode 100755 index 0000000000000000000000000000000000000000..e2f084727408f27356022964c059b02017988b05 GIT binary patch literal 714 zcmV;*0yX`KP)>I+w#Eg*+A?cQ*gTsOTO&elT=?-PprnusH^iNrUAVMeNReFOLbFcMel&QL3~P_-NYJIZZM z$*ztjRyCBdoPe6gbXRyJOBUy07*qoM6N<$f)d9;DgXcg literal 0 HcmV?d00001 diff --git a/www/img/icons/book_addresses.png b/www/img/icons/book_addresses.png new file mode 100755 index 0000000000000000000000000000000000000000..b73419ba82098bbdca1989d31fa798756c987524 GIT binary patch literal 770 zcmV+d1O5DoP)LHt}U(fC{;>Yum{xmD^Y@B5nN0h99fKm3?`0_{sl~q#>Lf`Xq^mk zkPrtoHo*|Z3nt2x}Jy`Dy+VWv$$5Q(e+JC7mM8^t0(iL(m}3r?Oq>CBlk z+U+S25g-Hs)ayudKxvr*V(ri6%46oq;@1yc0P zA3d#Jwv=Vd%^Q~uhdUw?5#qmljMYF15n(hM*?Rc9vGHS$KYP}#o8KGsA85A5J$?L5 z*MC`7uV)9h3*UUa-*A}z_>9dmBBYe0l)#gR7WI4g9iBg>J=3wbH*kCHJ4ZXOSYQ27 zDru6(55yX)S@&n6~krBum)TC;$e8swaf zMkA1;lB^Q1DT^mw z_wd1AvaF1rQ^f`GXt>pMc(a6@v#P4V>fhgb;ib1-`{@%;>^~y%NUa>Var+02W?K%X zYERjjxIaDC&rwE%l#-mYDhz}(!NW^0=wBZMH5C_+RAIVF!K23~z}<>ANUn_?}3M|H~;_u07*qoM6N<$f@;M1& literal 0 HcmV?d00001 diff --git a/www/img/icons/book_delete.png b/www/img/icons/book_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..d9a6340d723dc9b47169f3470c503ae0514c840e GIT binary patch literal 719 zcmV;=0x=?)~1m0FJ8hb!d!Yu0W+yAtWhc z*}ae_E)-c*SA)6F0RT)5(LjlN(j#U@j*&Uo8i!f8Sj^uk+*2o^bAxTO*OM%hKM2Jh&W@l4NSi2qVCCAlJZX` zf$_0Cn&-##49Ml!zH<{EMW{NWj#cyMmJ_^t)kS0dJmP$T@nKe*hK>*g-q220wjnJ98}m)EabiEnKG)?OAx~Z6__u- zVj)yS6Ro_77yvtqg*D!%oomRiETS<1QHiTcTzy$%hRmV_J9dA|I{;Ld6g!%^b#IKh zx!0%&08&+!164spaZYg}SWy-N!{w`k?*k~# z2@}&5Qht&k2ryxUl{jyyBauu|NDp(e`xokVbuxUmN4;QjUv&nE6Rb0YVaT3s?Xmn= z9jeNmyM1g+KWB0A8*;5%m@lno^yj`4H3h~A&RDGTxiI(_p|Mz}I4iWI|6tFiG7Y&M z%#Qy}%8U4*VFlR_^SK(pS|KuqNI?BGUNQ;3vO4vEy&Gp~T-!r9b%|8QV`69&6GShA zh5x#%L&R8z4J@H?SSJ`KtmHmlca+Gr^%6|}grBk`v&{svBZ&1s?>gH5*sm#Yf(Z?w zaRkP(ql@^{3+~fO!2DTpU9|G{-Zoxz`ps{k7FY?b=-ti^T z^FHcQN?2)T>h^tp82OB``E>0W{i#(7v{#if0`DuhzOg%h>5b$bt6{W$4Tw8RQ z7g6@TMv4s+ISM*J;iEG=x^#@kcYY(C-%NRCikr!UWHL)p#t@OG?O^3)fwPCHG3Skh|?C7Z~pX@)~r^*3ES@GmJTU(dWwV{QH rsGh5(PUcLu_A^ng|9SQ51*2b9!67)iy>GqcMEC5#P* zVFs9y6`M&Fk9XyF_s^Z^0?3gy95h(oU+9Rwek)@(Jp>s{F@^E+FQ%NKmRrJ~$N;dZ zztA3S8EB`YwI9m}sA;xUv+XTSb=1}7*tp{mvjCXQ>+kF2=F>NnN|Tr>06MM03{zu# zVv@wA{2PBP5anue^sMNld(nJEz)Vp!L<~_Ss4-d^N|?B&1tzY4r4;sZfq&fj~5 z^MN2nED771uduXd3#H;C%<{7U@iZU=CH0cGQ=aLOHwhq#oj?vyY zUI_p`2q6hLFC;-oypWeK^fF3Aa}zRgjkbY(Y;Ai@Ra{AdDBk%D;05o6f<2_IZ#N{* z89R4@`lczC)qiAlo2zWWrx_p($^t2}a#2LXyh+r(15@PZ6S_7ZV^^WX*s1jmGXOOs z4MK1M=atl_td`p}b*w@sUtl`L&~PuBex|mz$l%6df=iFix&skIQo(tl+mF)QGe}*- zcP#vXsETJ-i-4j@k(Onhi1UXZjI1ckJR@<;nsozM6fyMaE-i)A5WgpGYyph5`*+T` zuF5Z^YwPia#p@#{rvZ0v-55QP{XAo6d6~y&_F!t5>Z}@Rkk}+e6*F7>8&yNBiO-YD QcK`qY07*qoM6N<$g5Ksv>;M1& literal 0 HcmV?d00001 diff --git a/www/img/icons/book_go.png b/www/img/icons/book_go.png new file mode 100755 index 0000000000000000000000000000000000000000..cd4e1964c4fc6288ffe2a52bdb8279b38f4694e2 GIT binary patch literal 745 zcmVmRp;U2rehpEP*hRW`OfcGbt-Xp_8t4T*WE8WOyF#D z9CyH-V)EHx8i{%B{osXDs{u+B2M#;@S?%dgK7Oj<-b{i5X1Kv*?Hkj%V_sUtOcVgv zS?%dc{_g9d`;RJK5HPo*suk6jE}qZ)wi4U-AK@ne?n|n@E4lgfEfW(B+zbF~s&L26 znVf2n<$<{|V}Yd9T4LRXm8|WopbGAWnWO5c8Dh?K7P)j~;CBE=)fo9WMQd6n%Q9jf z5G(eD7E0w-Iu^{s+AZ#%iNfS8S&qrg`>Zu-5laS}D!75JLeFb21I68zZ0J5KRz^M2$@4U)k8T zgL-VFkKYe{E;Sn_h$6X=M%8P7)_@ZjChry%T^y#rN8 zgBBLdXn4-~hi3^E$Rx0)qlc}l_wZz7h&wL^HBZ^*MH_f b^BKPbr%B>ylaEW500000NkvXXu0mjfu(4I; literal 0 HcmV?d00001 diff --git a/www/img/icons/book_key.png b/www/img/icons/book_key.png new file mode 100755 index 0000000000000000000000000000000000000000..d8e23ec9329a160181b5dd14079e95d769e681ff GIT binary patch literal 779 zcmV+m1N8ifP)JNR5;6R zlTA!qRTRg6@6BT%D1r!D5(}0f7+??^@jDV1BqUmldz&sajk_i;>)xf?E={XR8-;~U zTChZ*#`+PPnvkG?B9K6gb;1k-Grarmz2~@iGbqYQZccJ@@9+Ho=bjs=Diaqz9#GZK z6$&UXDT*qfN}BX=iMLp@yMFu12i*V>>4EbKPv!bMgZqE&qFTEIDNIm-;%=D(qliYQ zs74BaS9AR*gV%;m(%F$iQv#xrR+Y4RdrKpY4G}ND`5s3As6Lz<=wkZrZxjj@R0II2 zsZd2lDV8e4CgI;vwLlPMBc2@WqUW(zya!c5MDbqnA~;bFV#{Zf3&#Nz?}g3#C9+{1 zaU5e!f|GRLks+$f()K_-qIwJf5HC1yF~;!Lb3Lj2R2{0y<@sND;$V`C&#p3ADg0l7 z^@6t!=R-bS_!(mz&MV#tj({OI&ohH1n)~19#3LVZ@5A2l(-&7~4gt;yiM1pG8rBok z)j_C8AoRxbjPfsp$*d@79`#bsiTxjP*D#STEJAbcVmul6xIr zS)!rsabmwk$LMgQD;F;PqreN+Sd8_l9j_!+$e*qiTi77Xx@76B~49=xNSlyLfC}bgym~1@zP4^d{i5l#Ce=?7%Ny2`rHqUMBniA zD`RMKi@@)(c=LdyP$Uq`)<)^=vsc%r4twCe;uD`*5aEU9pBNrJLz2Hl6g9IrmoU5c z248PRkTT2n_t&YFV58fe*<5d*O+HQosR$j002ov JPDHLkV1g02XZ-*G literal 0 HcmV?d00001 diff --git a/www/img/icons/book_link.png b/www/img/icons/book_link.png new file mode 100755 index 0000000000000000000000000000000000000000..dd0820e86d0ae7484a9d1fea509ce168ad44699a GIT binary patch literal 789 zcmV+w1M2*VP)Ibg27S@bI=*bsb;IgkCPuV5Vkc|%HT6t6!`B9|*t zHpjbmR#Y%cB>BZ6G~K|TYq0zotNP0+pjRo1^k6y zQ(zK-ZCXSU!1IwY=-xjmu$Tf4f+)hU{HAV5V3E@>O&HWaHz0u%1Ry{!z_DJC&*o_V zmjEy=8pfOy7Z^<;&>NY@@?}se=09I0f1Ga6p zG?rs_c2-+00f7M84&%w5U zF$P?S$NA+oaJ9O6Q0&X}iyNdtz%UGZB(nkoV~cB?a3#4vc;;xhAxr%76YzLEP+hO? z?&=*KAO<-*-2YJsNtsLr645Ah?T~_PZC=>bAwxEs1zuLUTn1HDfe;f*X#rxIfMnHN zCkx2!77hx9g01U1<+RIcy&ye$%m2*Tg(5LgBW?-F5D%H?w4^?K`MF2rr8R>tbKv2HLCJnr;&f?m);TU^d+FTbf$I2?vz zu_%a}F76$EB-+Qz3WY+@p6JIiy|6tv*_UrkzroC_NREjv$g&J>w;TL^zkno3;B-10 z1jS4szAx;Z4ITI~jtNz zZhT67I+aW`o%x}m4?^&tT}aQ)3kRJY0g-8BG}Y8W4bg1z9Q?8S!u?m3O8F!oWuISO k(%#-l{_i$Awz|&00Xevia);hrMF0Q*07*qoM6N<$f^aM`9RL6T literal 0 HcmV?d00001 diff --git a/www/img/icons/book_open.png b/www/img/icons/book_open.png new file mode 100755 index 0000000000000000000000000000000000000000..7d863f949741ff83fd8373a77c0d95a3d95e441f GIT binary patch literal 622 zcmV-!0+IcRP)YeaZ-G+53gSTz{SPWVdFiPaPX+$~@n)fi9>qgJ zh4fN-QcEhq^wI<|vImjml9)pF*W2zl+qWbTPaSyKyqWKt`DS)j3xa?yVgf%ewhl|m zA$_0x^Rx4E@d&=>uRoSN*Cm&aL#`7&zr0;L(pKMn1G#$ZszFkMC^?B8f`0w&-UD$u zd-(?iK6#!;xZ`>J^A9DGiTfguewDOKwDEKoL}`ZE_M}0=xvsgf$usmJeV$oo28d0#yu!pdgpag$giC zhlKP!CMX3wsPMGgZ5n>Xg+hV--ENofAcH61#0B7Hvl-7Il}g2A6;lfG`FxbX8A>p$ z0P;GW4il9Mr9jO9)xB^Rgy%*CSTdQ6D;kDDnM{U{5Q21FA4#ZM71$_Dba8z<-Y_Na zS@|v#c0PZNDux9AoXD-ZoWP~q)7QrC`Gr3gZ6sTvbKG`S=Qf*6}Nf4;Z7Z{zN!O--ANbYb~sXZM@=W_MPrR;$>|(APVL z9?v<)29FSdeXBlhS+G{-_{fQm(s$|pt3F04wDk%Eai0K>nDfCMZg4J%Tm>-+#q|66 z8(eUXMZynJwbm5eoE>%wcnw@1t#WGynhm$k?XL&soFn!ri`4f$cVy<%2mLsExU->z zZx*xss|zVtj$|^aY{nS+ySuS>yS}Tnbt?kCHpJucS_vZi7oW4eS02jdvmho#X{ij; zASmWb3g!Cg&?GXM48q|syk4&gstfW5ufx~d(b5UV8T>6lg%x6ea*97xpv5pT@eDFq zp-_Nnno3HNxizp%!hp9l*G6j*sWM<7rm?Hgq>7h^v`h)1B=y2@X=W?ZT z$YtMx?9VKI<#P?vWl4;(2C}r%>Gaw&UVVOfffyvn3OyrEa&l~WX&F&m?+<#OqiY~^j9wuSWM=zzA_@B9}<+jo_mWWEvr O0000i3lOYrtSl@<#7b-w zf}j{s!5HvocfT|9z82@(O@vrwU^wRt=bd>tXQpGD!`Kvuv@XEI8~tgUP2L`{+*)U@I@ zrVtr5X14??iAF(=0+k>q)v`Scm$9&=i`*knBsnaUVL1>ti*O1xfzmiD$%Md-h*6M( z@*iB)icu3eU424Ok{kp%Y!1dvp%f0`ac9vcupx^$vU0xuKpJcBvej0UYk%)EV>mIx2hV}QRf#LX^Uh(%`7hZ~|KEf#uQ31s002ovPDHLkV1hgQ{`mj^ literal 0 HcmV?d00001 diff --git a/www/img/icons/brick.png b/www/img/icons/brick.png new file mode 100755 index 0000000000000000000000000000000000000000..7851cf34c946e5667221e3478668503eb1cd733f GIT binary patch literal 452 zcmV;#0XzPQP)Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O5P)$DtCMgZgg9MW%rA`w{qe=RC&!sIosTV%x&Y5$*@4M&R5da8Mgu~%CZnwK` zGMSDDw5Qlvxg&vldQFc=`4&GHz1 zqa4aTal{E2d+%?xN~Hpa!-4hnbq>4T&SMfsJx<_sI*km-<#Jq+5R1j&@p!Pjyv#v+ zijkXszmH5N1FBhET(k&GslU0oiDWW~R4T<4NnN^593>J7ghC+%0s-iBy1u~diQR4& zJ3Bkr-rh#3R02C6wzjrT9nn4#iJ(v@z~}REq|<3=wOUcI*=(F(e}5l)dwZx>tK4op z9zX2?sZtZEFc=JSkXwyLBT@r7fhdaD-Q7j2)k3{q=c;tHXf(7dbQ@Zxg0jAF6KM@h+4sC6jtTy+RLI zIeishH}wCE^>ao^1fxHPUa!B*=4)mnI-uq<2Oz|6c+rSn>=*hio4|XDI#$RoWYMPX?k900000 LNkvXXu0mjfahOHG literal 0 HcmV?d00001 diff --git a/www/img/icons/brick_delete.png b/www/img/icons/brick_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..3a8c373482e071726fcf2e8967eb3c762b224cbe GIT binary patch literal 745 zcmVk(*8wLyDN6qc8lhZhzWexdK7n$>DOH&Eb@W1hKn8Q^d@kW41g?RL@Wbg;d>&1>|H z_R!v=L|lNWxBqtA-QC5~(h_2^7>CVfq3AG<**(V(o?;pYD#p|9T1vg`zE3EEYGZ7mG!H z3=*MUPy!O*&Ws$JzJ?#pH|Ql-(faThp{Xl)KQ;bEU}HMXF2|(VY|c=3_xAQstJQcj zNr2+J?w!YXM#j5wVCD=kJBr$?>u}u~${$}zlgTt}G#X#B*&b|eZgLS4qXw?sl%p51 z|1;Ku7bEOAL%kFKf?lt`%;sxhBkIxJ@OV786E00000NkvXXu0mjf_hDCw literal 0 HcmV?d00001 diff --git a/www/img/icons/brick_edit.png b/www/img/icons/brick_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..eb06df3bb3e38de2faf51d80a05e8254d13fb18e GIT binary patch literal 775 zcmV+i1Ni)jP)^9OfoSNCh6N{UH*G>^7ov@7G7j2))Sp-vPxR_~|#}oBaGXXEK?XK|Y^H zHk(B1f~_(T2#W< zvaL<2kX^Wk+SW9-V%M=b+k-`2ClPnyl}cXV$lX>%QAD9oKqix6;&?ocXf%qjM~iIW z4r(PA#H9|DR@zYr^SQ^mz+r?4uyTP%4!Uj$G3|@^f^JjEqDb4hL3OR}pcKA@uPUsqI85-ih+cW#mYc zi0T}yV>}fm2znF>#s1x2Qlrr{snu#3KhP}(-}k}y;R(|2Hi+?dY|h`tqN){Y<$y?p zaw0sq=UXrho&gF8gkM~M(ASI^Qdy9lgzj1YCn7%n-^X;n>!?(5DN%7hg_ zql4Wy8ok7Z25lz}lpb~*ktPRPq%ZQ*4qNZB!+VJ-egn1}Am_E)CmFH^{)}n~c zK%gbmsn_!1fEEZw6+o5S1JRT2pT}L{dCN-wn+1Y@JEnE)< zgQ(SNU~FK;u)4a6P$;y=E9MQXRx28f2FE&`PLxWeD7KYm7P(xG6eL6jzFa62ZpC7;FUe$*GgI4yjV!E^2Ak_Q^sTS#j*M|* z9><68Ld(BsZ2T;YumYEaZ4biXu$#^Au(;hF@H?HwXYiiB0NI>?t``3GQZPe0*pFgX zL?ID=aCT&2RA_xnV`F2dJo<-lu=~V7`$>hd&M~Pf7NQyShk77L4nVnx_fPJx8M=O6 z*zYyYJsK?ZUYqbqVjf1bOg-AQD?(BND5jJ6{Bks6!ak$9rOJzsLz{-qdQFDzgt3#s cjW*i<0Fgc1D3~yzp{gHSP{di*#8D&?(h#;bi2r7yUe@M_9Z^R^1th67Ma+}U=ey(q{ z%~>)Q;cRVlbJ5&n%2W)U;$S+(K9zyBt*3JiDKhoI1BdsV_j#W8ea|5PNIG0D*E5U7 z66xyd`pdxfEVk3#Z2_~{oMA8+{vd6!m|m|xvLnHN#V}P%QJ}ZC7h_{%NTpIpCX*N) z9py20#_q7Y8;&>uWnbT_HZwDW?(S{`gFz0H$;4x6j@CIrPfw4Q0-;cdD>8V!URbSG z=yW;`wr4TsCXq;BWMl*^N3B-t2~|o=OiaM<_ahJpa7Ct`zBU{U4GqERbi!`8L#0wB z2(>4zt*v2UVF6Q9Q<$Ef2CWa1larf{*nVJO0ORB1u-R-J!^6X9Z*P}~(P-oZD=RBl zUS7uR>@2tI^Z7P=z*NiL=b=!07GJ;F;BYv&+qSkgi8YWDNRou5r6t5-F+?H}uF6Vt zyWL!|xHA_|Ew^z?c?$jZJ}#hCDkVZ^`#Thr?l%iM7ujJ_6Bn65+CbO^3N2U=TO*NG^KHr9~2xj9}2BVoNL)#c(-Kn}D29Z&q=YesW_ z1q5#+N<j%go#9EE}){AAsopP$F#;vyc>dRg+DzH&5tDMkI~BGgzO zpw?OprK=8iJM(bj2}y1~Nv&3!q0wmS>1=;_JRaOpord8@GsN$&Aq+M`<9R_z9zo%% zMUi*~S=A(Vw36g(`wJZ%9oclg;tfR>uC^RQep3c6y*z+>+KZ4oYfzw*A+wr94_A^i zJAS4O&<@KK3WZ%Rm%C}Ru4UKliQgCUky%9|H2LJNzi~HE%kkq?dvUOmWNnTA1HB~u UMVP_&o&W#<07*qoM6N<$f>=0SnE(I) literal 0 HcmV?d00001 diff --git a/www/img/icons/brick_link.png b/www/img/icons/brick_link.png new file mode 100755 index 0000000000000000000000000000000000000000..9ebf013a23a56653655a736a7e149deb7365ea03 GIT binary patch literal 764 zcmV&SR3v>A``^efOSo-hEdApp;^Jd;9y!%1UfzX6Bh- z%-mbG|0Na{7Ruai_Y+DEb1s+b!*9k%Q!whMxjtZKA*?o;i1g&jy0@( zaU=-@d-h+o%gal6JRXEXA&L3`d2 z%jIxzZ~*p9O-;EJp_Ds0If38rM<5W8ic~K>FOK&2_p!CLg^i63OioVb6k$)zWHLx3 z5;!|M!}<9+#QSi1dRlbEcxPt^;cysUuU8@%3}RwpLRIGG<|IKnoyP6$Eh3SKw7a*r zSDXP=IYc&YZf;7@?fCe($^l9ORaJ3wbAx0uiC8QqRr$2t-Cfy8%XCI3B%pxJW>XdM zw~zPt_s}#A@pxQ5Ly)4szaMtH9lgE1SXx@b+S(fW`ub$fYPE8J7#bSNDzme*Ub07{ zQKV8SjEs!%0@v5ql8ggm!@$6Rbi^E8vBqpRM-}l+@5OSMrl+TWj*gC^qoV@>u{fQb zov5v?g~?>X@bEC&+uLPaQ&Ypn-y~^mZA}+f(&2EFH8eE%dU|@ENpN*_1-)L6_4Rc* zFuq@`IjX9vp1QiaK9ZojyZhnQURP99d=u;%37VRkpwsD4U0sd3x;hEQB&e^i|3QN0 z=H|Os1fRqaw!?#igLmS4HE!G3*ce(`TF}wd|HNMlZ|>D)M67h? zOIjz3DJbk0=97q(mSBd~-ilc0Oupt^z$#N6O&at_s8u-PL@9M^gQuq(+UH^IB$&*DHP!HzH+vkEzC?S52tN1$mKhziPkOR=y$ zhl#aO1Xly_M?EkN>tM6E5T&Ht4dh{0oQr6Q1b3J=sM^ACOsvD=TSP81#0oTC1v|Df zgpp-GhL(KrE_8t&(jeFR1W%(osQ12tvSpHp_}~HR_8G{VUO;FILQv(P-b)es=)ZlJM#c>{Wx-rgY3D#Ol9rJl39A<60Xo5cneo(9g5a4q>ayzV-7%Ue2}0_ z&TIets{Cl`n(nefrZ+9F8|N&Kp}^StU2b+&pVj;XvgEdBL3Wlp00000NkvXXu0mjf DwZ3{L literal 0 HcmV?d00001 diff --git a/www/img/icons/briefcase.png b/www/img/icons/briefcase.png new file mode 100755 index 0000000000000000000000000000000000000000..05c564912953467ae888192196aeca2f6db0a406 GIT binary patch literal 793 zcmV+!1LpjRP)wCLzo!u5vjB%3bO!v(<`_0eVUfez^@RtZWvFJys zmGdnDZpkw!t9(+21YEn-ihl~B1qBIC$}CuB14>X1 zU~*Un>6SGZ3Y^8*Q&uVSbD7}5T-49a>2vqn$7#MU@h6((L#!%+= zz%VT|T?$}o@{26(rTuQtd|!BWdNe#6g6~WN^yIoCkxFeKNq#aJCqJG$+l06391?5G z7z>TBP=XG7ma%A``8El+=7!znQNd|bAZ=Jk8A7QPMip0;lwx{5q%cngmVeuX$bNi! zqrCTYUHx_Eeh+kB0G;YJRksPqvt2K8IKWmHFg!IfMBoOAQ&Z@^bIi5NVcR<~{)uxg zY|Ik&{88-~C*A1W?HJn{l#TYlO?I~A&~eSM?)n~-RV0se6$@AD0E_GXV`XdVUHN0T~Y^HSDgA^X!&oW$jpM5h9)mbXmSy~HD zw(w^mE;n9P!K0&YL?RJfsH;OT7({E!J;dI5QDC=imt=c(^T;}l=)l&CLvanNo7&*_ z`=M!?3Q8mr7#tkL(Cg>WG9ie(_q)AF`O?+Z)u!uu3$ZvUnUEhN9WYI^y}!Rdoge!L XLaEPO;P?1x00000NkvXXu0mjfUe98= literal 0 HcmV?d00001 diff --git a/www/img/icons/bug.png b/www/img/icons/bug.png new file mode 100755 index 0000000000000000000000000000000000000000..2d5fb90ec6ee08f53947e0266a87b03f75893446 GIT binary patch literal 774 zcmV+h1Nr=kP) zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/www/img/icons/bug_add.png b/www/img/icons/bug_add.png new file mode 100755 index 0000000000000000000000000000000000000000..ced78174740958c5e11583682dac645197c09e78 GIT binary patch literal 806 zcmV+>1KIqEP)`=&gfiynuLKNZXG^E&{Pmo=c@q3lv(pO2HUs^S=b~RK*#7&0iej;CY0$=&!}s zlPnn>f-S)ydndO_sP#!8nj+R?CkfAP%XVTzFwO9TP1xb;uc#KsVI@l}Q45e-dhki*R$I z2-9muy!q^gVO|BPfeBvOF`d^nvNfldX*DM?__P--&T^EHL~V~MQP7!$$#>nDeBT4g zbPGxt7D_0BtwZmh)yP<8H860+R0_4Z46G^!QX3=jcx?dt&Gptu5gh%A!qs$BNJZe! zpi8Gf>I6~l|Lc}p0gYR}o2;3W`|jYN2NngaMkxJ}tqVn$`{Hh8DpL5+419Tj?8J72 k;<$%Q*reM26FaHB-E4&O1t4_>`E~n3&`B&r=tE$5)r`S6ZK!@$4#rInBo9QPYpNc{st)6*$_vbLI@z_C zSR{3BXeV`A19V(;ytsw3Aqk31@hC8*Ku}MBq4I>JO^o1Z+S?5Vq|Q}RCwLFoT7iz3 zKW&JH?s*lina@IQh(c1U5D8r|=$vjq-B>l4rJmp?xEZ%d;I{cp5*ikWW)}1>Yf;>v z2$?<-Ntz&t+aqyzyd3flG4734fKf~bT}fN=EO3)<@qlP#SrR&9p&pSUw@ZY?79rxa zCvj)26w=lhq&9_-04mTGG>KIe`^(6|AoZvD_iUbT(t{@o}nj%QdnpkBqzIJEG}nEv_4LaGnGzdzg#fm;?Ah z7NbT4DE0#tPWXHy5JSO~_y4?qW)XdysifnQCKGaPHkf(zb=uaM9&8@pN)BQ~NVRVJ ziM-@Ajl0x&&Gmv4NS)|DvG36p%j5+3oflZQ*>*VN!O+9#d&< zYo8QOm{;z_yR{l;}?JZ=-4>sE5JZmeq?fn90A$P1xW-&(q O0000{*+c^G!iQ-|(6%~LCN zA@Y!iBF(UtNGXJ#^nk?NWwKXJ&2s67_xAd{w%2Q~yc~D9jDi0}CJUZQwS#(;Yq$^K=%m$}|b|DLo2FO9X^c3YQci2rS?u zyuuA3MgEA&(tkZW6u-3e?k=VtilH35gP#*!7%T}^5nj&k8cmWIlP=lzD0`HFh;m1y z)Cc2yX+||%ZhL~ zB+&>;()&0&7=sm6Hx@_zp?d3s`4_Pmm)U%JA~|BZw#2^;)U#8xwQ6U;juxkr+cDJ_ z^+)Un)ucDRKaay`uI>D*bW8K~7SslGE=A1JSj0Hmkm!Z(B@KzY+=m*^F0Uv%p&A$A z$6H^_ttJ`CwNnnKQ~Ng5sM%}bDIL*JLoA*(X5oF0Cl<$jFw-B6*HXdfVF|_f=MFT9 zsx&)begeaC546Yb#^Y;_=twaCFp$bN+Vqe#iNql0@=~`HOFh}>Nfw|gaL+<>j0x+% zpGlMOq_tEj{s))aQXQ9DCAJ-PQO1n_iPiH94U>E_m{*tA00000NkvXXu0mjf-H(&g literal 0 HcmV?d00001 diff --git a/www/img/icons/bug_error.png b/www/img/icons/bug_error.png new file mode 100755 index 0000000000000000000000000000000000000000..c4e8c28096ae0acb84b63a7b51ed824b8d3fc62d GIT binary patch literal 841 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 N002ovPDHLkV1oK8Ta5q! literal 0 HcmV?d00001 diff --git a/www/img/icons/building_error.png b/www/img/icons/building_error.png new file mode 100755 index 0000000000000000000000000000000000000000..a342eefc68fc3afc61b30ceaec06c47d306904f0 GIT binary patch literal 653 zcmV;80&@L{P)@1)Y*u3o>2#VzB0*hU9nol%SS;q-oY_-I%jI%JA`t)z!KzAc zZ!fA!JRUDnPy{f>05Cqk@iMDm1w;jFp|9QGy6*o0p68*e96h+Qt&tGg9bjUq5>dg( zhJs2vO}!l>*l`8Nadrj(9IMUzyV*ME(qls59 z5P`}p;(i7d?4NfupT5qT>)n~W+a1UQt|hJpvA!4kORE@LdXCr}EfpULg^wWF8C2Hk zI@gMLU)j4iMY!Wa{ddpY$^)#i1Fq-kLVBLHtTNyvw+H}2qkS)f` z?(TK-0aaaIq*5uh)?$odX*R}?$z(_*5=0^qVzC&Vot=TDJ*6u(-}i||qX4XgRh9Pk zc2t#kJie-eRe&)DfOq4?n^^@bASzf3mkt?R*WDQKJP%dnXx;p}jfCp00m<}ELU zPO|5~w(4>&YX>5N5swQkU04;YSOn!qc9z2pr^$JR;K=uZ?2-Gy@G>AG2ZLoLq_SVw zqY)hAVO5y%Dy!j5`ZXegV;qb% z)Q0v^7urvKRg|)l3U=?<%jj%^p>K)#yvOlU0BdZIHKG%_@xXR3L_Gb9ym5Fo+>0k3 zj&X_Av~VhVkxw&&^iTF{ZDs4&(B09oBJjNYAwU4gV;N_X2py}Q>qFrQfnWtgUxzs6 zb_Bw6wddD-rp+RHFR*B(q_QA3`s;yCE#?0MOlp8%R|7kz00000NkvXXu0mjfed04y literal 0 HcmV?d00001 diff --git a/www/img/icons/building_key.png b/www/img/icons/building_key.png new file mode 100755 index 0000000000000000000000000000000000000000..8b79e30ed9ecc6b675b5a097e75c2bdbfa6d1e56 GIT binary patch literal 705 zcmV;y0zUnTP)Hq$Cs}SPFq*^i6iInN3M=Jz}^!yqE;r7tu#N~*Zc9^0GN z)|7EeL=ux=FeqAUlu~SuN-4tOFe4))`2BvWs;X#dX|cBVcz0^?c$`2W0KiUIL}+eq zMno7I8cM1l2~bJ_@G-P?GA*DD7%^xK=W7*?Y!022)Mhwbq zRiHE&qd9B$a6D^_neNBe54BG`NeKYdmoDzgu7AHGGi!m`%ePtl+VyDcLG^rH=k&WI zz;PTzgio^tXc3eFqoHK=H4R1M?5{aP^zR^PIW+}&<<85&TYX5HA!YIzD@|k6B(_-rI|qroOg#&2 zPKMTQcmX;_ZsuCX`fwn#km0#Ot`@ganK_3)`h)VObBOyMOD{7%u!gmoe_a-@EGXXBXtR n#g?NR)6?O**LtS=Q?2_41-p0PftuMh00000NkvXXu0mjfc@aOR literal 0 HcmV?d00001 diff --git a/www/img/icons/building_link.png b/www/img/icons/building_link.png new file mode 100755 index 0000000000000000000000000000000000000000..a340629ac968cd8dbcfd651458fe48339c2d199b GIT binary patch literal 668 zcmV;N0%QG&P)6&op&*3N9K@Tao`hUlY4MOlS^~C*LXTc87OyG2#h-Pn~377JF}e`F+?!If#D5r-~8V9-rIp;7+7Yv!eL{Pe+5gf zkNf)z{U%PCt!lMu5JI5qI%bydPN#!XsRWP5gFqmFSS)6m-7#OLO(qlg{eE%24Cd!( zG%9R9pPy4O2jJQG`toyH8DR`U0cudD2zc~B$7nRV8ZaJ@MV6gA{}wh9xV;?Uq$!K6 zI-M%eS$0Yd>}~7NH0^o-U%T$^72}kzSHM5=z_0a9R=*(>P%`a>!4y1sIJsWIIXS~{ zID~XsM5EDw!{I=;-9{u5fz4*a@$n}y%5*yYS5cI=l}hFP1>nue;XSiW!g;PI#+gVY zFc=KbY&KCS6kxa8`TSuvo6%~uk?M5gR z66b6-3$>+U!(sjQ^5E4D13VXi*QFP?Ow{yQtBh{xlQWf}c`U;L3r zAC5q_N1Hr`sgeYM=;V;-)abAEOzNp30JUE=t_qn<23D(8_;^WRja~bG^DcG))(1_z zg=8{m%mRA79>U=;yk0LX77N;}iM3h{k|e?B^TFkEVWS#V)Nf_e!_hJz!RGI-NOYZ?JI_RaHAI;og7fL3{3ZGN}as0000C#5QQ<|d}62BjvZR2H60wE-$B_jGX#(Kw&{<9vg>5sw;c`@i>p z_kaC=>wowE^MCGt=k0FV8~^>E{g3+d|7HJ+|I4@QcRd)^xi$V8^Vx_G`+r6+RSGlL znKt8REw4uuU$^wNG<`ek&pG#xJ(Hh0`*ZlR^+%Epor$llpY=cF-^u@z|Ed2wufXdW aBfwxkOHd_T*GCNK1O`u6KbLh*2~7Ys?Or1Q literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_arrow_down.png b/www/img/icons/bullet_arrow_down.png new file mode 100755 index 0000000000000000000000000000000000000000..9b23c06d7b4f4689dc8c9fd4e9d4d1f199fe376f GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%M_H=O!(Kw&{<9vg>5sxM-`@i?U z_W%6<>VNmY^FQu?=k0EK8(;qS{{MRQfQxhfe|^4DBSLrMi_=~IrT?G*6aRH>fZ%Fr xHSdzT`JeW`iC!n;=N{%MvhUm!=_W-^hCUIl<$=usRzPbQJYD@<);T3K0RSKzPZ9tC literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_arrow_top.png b/www/img/icons/bullet_arrow_top.png new file mode 100755 index 0000000000000000000000000000000000000000..0ce86d2b2bc8eb047ca749fff00716b15c5bd9a8 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%s@N{tu(Kvs0!a}YF0}=J!QSUY7M7z;-RJ$7n8*6-IkwdUVS%nn(+HZ=IM>KhySVgJojLZytKsQlJks9 zg>q@PUpbdv;&|+P!{NQ{65)mBh3B(*yP58!PISKz-O48F^~6K0e}RJHfr*NaZ|Z(M akrr=d7xdAvd!`9=1B0ilpUXO@geCyB6I2-h literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_arrow_up.png b/www/img/icons/bullet_arrow_up.png new file mode 100755 index 0000000000000000000000000000000000000000..24df0f42129c291ddb3dd50c8ba2884dc23a2c43 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%M_H=O!(Kw&{<9vg>5sxM7Y}K&+ zaVqV>2dg?$?}z`N|7UG5-|D8TLf!k;{Mi5T|C#@x_qjwjYRvdu`ttwR|Kb1QzwCco x|Ef}l>({^Sf7bts|6%{R{?h*$`OZ2jjF;IsFRaMi76-J3!PC{xWt~$(698OLQAz*+ literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_black.png b/www/img/icons/bullet_black.png new file mode 100755 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhDX@>Vt8IAj)#jg!+?Z23wnf7d! zNAH#A4i6V)y_WtvZQ1hT)TAWgjoY{t%BOsI;8VOzQvNniDZk5xCy$)UQWb1PRjRoz l1#moJy|?3|{zvx%+XakOf%ava&w)pvdYw!Pm*LM8> zx}xa+>1^FUyPR2ai85fP3-jG?K+XRr`TqZ3F8Kd{o8tf1T@L?&;`fL$0Oag{XV?8l z2Jh=7{)5DcbAc=K<1cfQ|NjSS`ccO4{~ZuN%wYZx6n{dL0f)n-8cwFD{(e@j`2STU z>;JncjQ{ugvi#ZM%3MW!EQHHe0ByVvjfKa!G>;}_2nGNF&fymKM6jp;0000iurf=~3UFXxqI7+S%~yN; z&QFMWB8?geDax2;<5v0zO%9O+HCOhCe@lCtqI|U`n(Bw>E`n0X60GiU=_L{j`ZeTrWl7@6TVgmzQ|3 z5;Op46VsoczbZwwqJ7S==^_3_&=Ox0MY;dOCY;|ap-3z08F!}8RFQf3;+NC07*qoM6N<$g0j}hYXATM literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_feed.png b/www/img/icons/bullet_feed.png new file mode 100755 index 0000000000000000000000000000000000000000..1a0e0f18f8bf7b2c5bcac354aa09be0ebab3f284 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>J@N{tuu{fRlV-?hn1vRw7=~`H|6d*}wJTwx9NUJ^A-PC{g+mZ-(ezrYk@A zSA66PNIvzSX`%9eCjvLPn~<&zkcB#E_)bRoqqqjuJxZi%ZEMd z&v*NvhWGUx|LY&|dWg;8xl+M&hVS8ire(E1*YzxOk&ZD2*!*kie8d0ob9Fh%G9Y=r;n&8^QUAkdX#Dq|D$hyKfc&Ml|8p0c z|4m?!%b@Oan%jHPb>P21W3>NYd-<1_&1WU%JGUHShzcVz!>-In&hVRPdDrmgA!XB=w& zAG5&bziK_hADjk6&({3E^3;U?OHcIvUwEwR|Gc9eKtr;M1&07*qoM6N<$ Ef*qF6bpQYW literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_green.png b/www/img/icons/bullet_green.png new file mode 100755 index 0000000000000000000000000000000000000000..058ad261f520490be9d3fc2e322392fdedfd1cbd GIT binary patch literal 295 zcmV+?0oeYDP)ef43{&%10 z`rmr0`TyJtv;LcOX%laN^>UMjsi!CYUwmcZ|JfI2{-1ED=f8fLD)C;hoM$LyF)D9~S@raHZk@o8xu=?=BAbx-CyJk|+c2F0@|%^WDn-Kc3b7|M6nh z{|^`I{(pPa@c-rv`wv7JaBHSX+n2kY|Gz!R`v3h=@&9l4pV{WeA)K@>rLPPXC_&Fo|~u=OHx8Q*=y2zb-wG%)4f&?mZqzQ e4THQu3lFzu{izqk|8%^q0F(5@h6w@ zuSbE=i9QOwKvPc#-iPCap~BwXFHIr_gU^WCH%x0(Cm8h3e{9o}5`YUO%{ zPiLR-*D%CfK42<(c~V-?1q(}8{p2N#A`c~!wa4X-$LfsZ0%WH-1^Zy?%r3<3e~Rbycg=S_Egdz d?>~Yc*m~Z+JF!m3&mHJ+22WQ%mvv4FO#s^$Z2kZM literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_picture.png b/www/img/icons/bullet_picture.png new file mode 100755 index 0000000000000000000000000000000000000000..386cb302f16b36e4ae67dc9f0aea1b4a051c22c6 GIT binary patch literal 470 zcmV;{0V)28P)``2`~zsHhc-<7$F60BN8G$;h9Qc)$m zPjaF(rLGTDO~!4K5|M!ls#FRA{~+9_mh$B%Z0UrmNw|v!8R{*)VvIsyE!@@WjQ0Lu zG45gF&|%`^8m{Z2fQS@JKovnbzF5W>!$F>t_qCIs%wUXRcKm?<7uRk6jy>0U{$XW$ zkEc3qYB0utYFr3Nl5}@-_vnko8F3szAXJEHK*aJ;t?e|ae*4Gt7rT9)_)n@C%m4rY M07*qoM6N<$f~O_aVE_OC literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_pink.png b/www/img/icons/bullet_pink.png new file mode 100755 index 0000000000000000000000000000000000000000..0c9f73e3f58fec93410ca240016ef0522241aebe GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=8@N{tuu{izqk~P;M2a(o?Ym~XI z^0KETC^sqCab0$O!=k-0z-7w?M;1Xr?oLLkMCemR4UW__o=Snfs{&byph%e z=77^@l_n}qHB|c9pq{s5_I-v&H_y*pYjU~LY5(eqL#|WUf--*EUEAAGxHvbtb|TLazB;OXk;vd$@?2>?vIZ1eyC literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_purple.png b/www/img/icons/bullet_purple.png new file mode 100755 index 0000000000000000000000000000000000000000..52ba5036b95383f6c14176ae33300b859e4d27d8 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i>p@N{tuu{izq(ta+-M44kBpIe=q zx`X8@9}gS%(w5FYFVig+ojZ_cD5YzW==f41NB?BP0gvSsuL~|cX5(?+BsuSEuz#(i z(0!iz2et`~ZLD6*`-~P&eW1fC)8o%D^YrBE+t1g1f3V_>QFkv3+p8U`|6X{$=uzRE zYb8;$Jas}77I1~H-7TjsdDijKvCOxpB#s?yRPsxju2(W^mhtCPasN(mSRK@VvcWVc q!c)dr)HS~K;xqxD$MKK)8^oXLysE8u-|YeP1B0ilpUXO@geCyg%6BgS literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_red.png b/www/img/icons/bullet_red.png new file mode 100755 index 0000000000000000000000000000000000000000..0cd803115831933aa171497cfe9c1af983035f86 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=8^mK6yu{izqk}mh50EX6wkMFui zZg|fh<-*g%H9O|;u|DY#DW^u;K&o-|vHe`x?xbw1zYx$2><(A#;6QU!sSfhO( ioL~suuJh6Vfb_?jd)=>7iZy|bXYh3Ob6Mw<&;$Tq>~Ep~ literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_star.png b/www/img/icons/bullet_star.png new file mode 100755 index 0000000000000000000000000000000000000000..fab774a3288143c3ca5ef4a6354476a816d20b29 GIT binary patch literal 331 zcmV-R0kr;!P)clpQjpWPb8b##8}RLd@5ygx>`#(pz>k}$oIkF|*aK~E`Efn%|Bp+N z|GyqlYyW&e-v0A$8BQV$NSgWcM%Moyw~GJ&deHs<=iR3N-_Hg9|8m&q|L5&8GYK1T zJ%$-*`^F!)N`MCR01asV|LsD^f1vFfKW>v|CMpboe%Jke!RPC#5QQ<|d}62BjvZR2H60wE-$h^mK6y(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz1H+_;eX)`ni0%X8XBDc-`=Ph(Uan2 zYsR{H!kvIN--9isvHznRsC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz4q@v|B?28{s)#N@CGn3@%_y|zAV9T z66e<&B4?b6oF&azg|C(V&1ZbI_D}pL`}(^FT2yXwG1Ph~$Q@h8mJYOz!PC{xWt~$( F699+YQR)By literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_white.png b/www/img/icons/bullet_white.png new file mode 100755 index 0000000000000000000000000000000000000000..a9af8d44bf3c001adc41e3774f526bd1d1448b1f GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%M_H=O!(Kvthf+1gnf`Cilxr3SC zCq+y2HhAz(;&}R`x^q^&(wiOs&2u-u^*?dO$=Q}CfYva0y85}Sb4q9e0M-pfO8@`> literal 0 HcmV?d00001 diff --git a/www/img/icons/bullet_wrench.png b/www/img/icons/bullet_wrench.png new file mode 100755 index 0000000000000000000000000000000000000000..67817e6e5a785b0a1f35598671f5d96f433298f1 GIT binary patch literal 448 zcmV;x0YCnUP)7VG(pVO&BhbRxxA@I^akcY^KxeXPXwzY<`A1LBLBqoDFV3>hv=E-l& zLuDq)&@>DpLa1JUfu)4d;axw6$9paSuD`@Jb3oHHkE*I&S(Zn!SWK7-&@^p9QIt-r z)dC>|k|brO0%TcUvn&ga<3JR}p&$rGBofg%jys$Ph(@Ds(=<`9*TM7rZ8#i$D-;R{ zg+iad0+J-niK2K}tyVz@L8VdwAq1sT2`tNYe+2k!o8mH!QPL>Fwr%8cIq15Mcsve< zVLE=l-!m5AjJ7wBe*DUo`|u?iI8L1*7z`RL%Wl#%?WQPder$c_6~(fb3t z9fO=s)r1xNys<0toy$Ta)Ef4L9Xj#;LuHACPs?SaC)p1!HoK`$|DN0S(B^2t{U;k3 z{z`Gkym)-$S?qyE;12cK15evqWFMuk`FjMfG>*N*A!+l(#* jF-_{7+4G}*QQ$ohjSunXc9>@Z9nawD>gTe~DWM4f1nGD{ literal 0 HcmV?d00001 diff --git a/www/img/icons/cake.png b/www/img/icons/cake.png new file mode 100755 index 0000000000000000000000000000000000000000..4ef151aeef90cba37e483fff6db393e3f3c215a0 GIT binary patch literal 676 zcmV;V0$crwP)zhG}s4?zzVdkG3gj2<%zA*q!$2x>uX%NDCytJWaYrPXj4 zU1!!qgC^xq+`MO3-MxA@QLjVPPv?85H*G=(KHPIYzrN>QxF!Im4#IxZ@krPd?&kid z_ZSiplU6Pr0XN$E74*}446)Vy(5l0Tt?p~}o7mB#KX>@D#~Be*<>IiI~I2tp#x z12i!dI9uRn_jAuUmOh`s_#3O#Q@}+t$Jn&L2-mkQOn%5i(=-?p`Lj?c!2VW(AbHes1cgEB@zPzW^m!s{<8 zH^}g>l=Q%z`79itWZZZq>1T&4kE_!Ru7HeXVR6SO2noJcy-wyON8U|XUoeAf zHk*)T8OiUqhEc#)EX_nb3VMysq8mBfIar@DEC@xNQ&ko5*l*<1J}BWse+#xk2O71^ zZKRS>{bS{FIWTbz8yidq6)TE@^|cgAnWrExWsHLC$l+FDW*C*!T_{XINt{JZ95tYc z_p#09P!;b%OW8qQ$`}Pj@4<%r;2b2&DJYXe*!EsR<%dl-6KGEyY2+ae zQs4@dsSC*31|bfe!20Q-oXHShTsI61&!<8X5%II3+V+8k*E-I+hzUk`L)aOtuD0000< KMNUMnLSTY|9xOrt literal 0 HcmV?d00001 diff --git a/www/img/icons/calculator.png b/www/img/icons/calculator.png new file mode 100755 index 0000000000000000000000000000000000000000..701a60a5a4d5673d0e3dd3fc8f316a2ebdd7fad9 GIT binary patch literal 543 zcmV+)0^t3LP)@VozFAzEvI&~0#LAwY>5FK39Rg@@bp>BeO zw$McyP2NlT?u|(Uk#_LH<=ljK?mhP;k2#J5heX6H%H{HXCX=~NBoZlARe>=^i32c& z5WqPH!!SOV%jHw0Qn@9fcc5CW>Jq=4|6^OL)m9$QSCC95(-PFn^7EgPn-5p9Xf%2j zT0v11s^jrE9G#rvGccKoT*Is1-&Wq)um?di)g6Ha$O`*a;Q$Laz(Aw!N@+sNvdAvNPK8Qq^wr_gSuSaWLG&M-o9;vBq+hGMlxGxKZ0_1Wz znv69PFh5E+M2titU>*W4;JO)kE$QxbPq19@+D+v)+U|OcH05hn- z^9BftDEsz1&z7-itp~p6;XLO&pY!G6%mJ8_$z&S0+uaEUg9wMi zh(scYMx&J3p4I(+KO7FnP@zzmSkG_KVzb!_V*ZBHGE)W)qD@1Djh;ybvT`|Cqe%}M^Wu8PdaGPVM$wTbzq|{0}G7TcW!EaA!?fWL5dnF z2D1#A%gQ1{g%n-+HK!)Dlhy}{SMT#sR?}5CT<^_$KhO1hFK%8Q0G>o5QQGbHy4UN4 z-|t5t5I`^(q@BEzx!diA)oSg?WHKG`{1kndOr{LiH}UWKW;UBQh5$~dv&;3qNOBK< z6Dck!h5#fUsZ-Y;K)kqu^Qu)$YLd8c>lvnXFEC?xNzX_*9FAdt%jFsXCOPxeHuELp zFTfqg-O+$vuZLo>h+A49r%wOWlrp#YD^1Eo?) zL9N-#D4jluZnryn2R0iWqF%3~TCHMjZ4ISTiKfZra#Wd2hTget8v!s|Ec7rG3PG#Y zqE@TXG#ZVD!hAj-R4NrsU^ZKZ0Y;;d0$QyWn$0E}jRs9aK$S`b<#HJryByEY9z^Wu z7^36+8mIXIK&#bJKqL}@!C;_}a5xOTUQa<$W(IF&597;275Zqho@L z6tK9oL;;;nhpOFf57H3D&j|6EGeai==5_;&5FOuzq!RQ3MdquSQhNU0$7%aMdZXDe6pPbIMdfFJbdI- zo#K;Stn+@~=uTRl*mol(KG5Bm6XL_wF}xG+!V{68w>-|5{uhAg>BRnd?u%s-o9lIA aCiCwjy#9~3ed^Z$00005{JVI0Q&7rJd-bKnj|5%n4Y6@5>kN(HX=3gQZxSrZA^D5`8Z{esFV$a=C&4Y&IK|N+p5V^n66#)oqx|kqlhGx5);u zsv>-l96t2NFEmRe1Q3hGh}cmhru%PZV>^(XtHf%s42#($e$7cdlnQdcQ79CqhaHY} zyWNhyM|@1ZpfK^W6`$NCSeYwDeEb%?>QfjQ=vx#MNy1E(6}NLiqLca7_c-C zw*4#yshx1P6=Oh9fCs{Q+!ZvgX5YGU0KZFcF+ZJhDUou^;chBKPt~sF{`&m~w!YgI xP*SiXDXQ3;es!-nZI>P$eqOh4_jYDZKLCCG2jOQ#mq`Es002ovPDHLkV1gc3OCJCL literal 0 HcmV?d00001 diff --git a/www/img/icons/calculator_error.png b/www/img/icons/calculator_error.png new file mode 100755 index 0000000000000000000000000000000000000000..0bc4288a47268f2dc44b7ece051373f6be4d8e02 GIT binary patch literal 731 zcmV<10wn#3P)Mg|`>;I-sPfu@FiJ7-B z5|_*6qaY1OALCy(e|OAov)Q`p_c(zliX0sd2iiOxEQUZ`q}Qmfe}3P@ZZ4V#n3SqX zy9GjBu_){nSP+^Cn6XCPzUJeo>pE{*1$DkheC<4swzh#ltQNEGXEGTqEG)oow_|;M z9f?GOU#mC$1U)}ypq92_nr5>CLMofVU=V>ofS=6POa;;Zpfo7p;PDas{`LZ9qkxJ6 zgBU!JWf}2!oGVycTf^ewB3cz0o~{tux(2cR`6Zkv>_b3LWEKjA5Dtg=b(n%Hm(Ih; zC*bb%fc%<=w|^W*TRtH3@S?4ez#u$WSy@3W7USJtU6t|a)qQmKjR0jCso6Ok@F-{} zIT&SaxPd^^wVHxRB*F>K_BwH@+Y5I`38wmmzMlzFOylH*C=6A-mAZG%U2CGQX-0Bs zNunrJ=7PYJpT+6WWtgR9TB~4av=64XiB?w@hX=;`Hh zI*t6hI1cp;!Rao*GPdaBOL+Y(OEXQFtyZQ1XqF;uNpo*7jv`sfxNoIST{2!@t*;BJ-ko6&RX1Gnf{r!El>X(K%C+p|)lFLAvS4UDUb| z(NtO&f_mYYleP&VL@lBi!?ADAIn?^$ssrbJ&U>D7KJWKA4{slUKC{{EU07IXClU#) zt*s%IN+F$2^GffOUtV5DEEan|K0Y3zo*&MSxw*NjSP$`kJB~ym?|J}>i;G>co+`{w z@h>M6O3?!#d1Tk_KZDkn$4&n$=mRAf9+Y7Wy~gc_Z+MR^9*_3|mX?;z0D94U>yPF; z;h%uV@h9g4PEJm+v$KOnqk&qjhDxP^t*tGTN+lEu1>|zMzbp8jfE)UsaB!e?Vdk_`FT#F-EL!le;>QMyJ$9>tfpSCvsbHCu6ZYZ@@6KJ zK``~9pS5{dQ#!r?FjI-L&o_V&2h=ku{#kH>>@xy%X(Lb>Vb z>5rqMqxU2d$t4B^gP}78CX0%K+cZ3cd$aUdYMf{m^v_~~m`weDl+&_@K%&-6e002ovPDHLk FV1i#7Nd^D_ literal 0 HcmV?d00001 diff --git a/www/img/icons/calendar.png b/www/img/icons/calendar.png new file mode 100755 index 0000000000000000000000000000000000000000..658913852d60fc6ca8557568d26b8e93e7d56525 GIT binary patch literal 675 zcmV;U0$lxxP)w!? zFisFv!T|cmRtW;1f$>$s0G>^*GP-h`H-mzTP&3`b(d;hDCL-{+T2LSiJi1S%34OTG znWn~v^Brk?FQB#MFuosf?qnt!t(A%g#tAAA`tV{p&t%~)6GMus628BV?|aP6=Lr0O zrxPn=6Fy3{fE84gngF`mQ;ZG4p#ul`mYb)mJw@Q%q_eddamvg>kv)yI#B0M!3sxev z!1s9dp#Z>KE{BK5@W%p1Kt!2cEYj2vBiUHDJ-HCTS{r%b!`Wj=!r&Tb+LFBfRN!=5 zl7aC&Ul)Foh{s4J>JU)^p9+C-Q44MR8(8|WK})8dx#e}T%`v`wFOp3_q9I1QsXihN zJVaEgK9Y|1KAJgEb`m$%VXVVh!8pM>`_Eli`}OBJfVb0i{tF{QT8%v&>u>-7002ov JPDHLkV1feuD8K*! literal 0 HcmV?d00001 diff --git a/www/img/icons/calendar_add.png b/www/img/icons/calendar_add.png new file mode 100755 index 0000000000000000000000000000000000000000..17679db6bdaa6771296fb016d21b0fdfc79e48b2 GIT binary patch literal 723 zcmV;^0xbQBP)5ETnpqPAn6zU<&FIp9Il1xF$N9eryjdy0$g_1Iflt9aIG62{ zJh%k%4xHmhLo?3#;voiuIS4Atz|yRg7EJQs@{lI*wgUi{`ac_PABetl_Z_I|3#8?`eD|ed6f0%TQcqH8_?!MPbDcMaNaP9 zID)f}I*Fo?b1j|35nOoE$%C)^xO?7^8AZ<;nKNMoiOUGW!7B)eqks)d%85f*Ut3O5 z2y1J~34@4P(`OKd5v!{!vZqb$PX^8#GKfRC{H%*7-3NGlMMxrkzLPKvXnpw>efz<- zL+i*V2}yntup}dJsUeA?2-Z}W0WfXy6oMdN)xt6+rt=t6;#s+T8Fd@$sj8kz$=Hk3 zZm&ETLN;{(Q5bOJWj6qApFR-~(46b$`TH|e&0c^HJqyOKzz2@nc}oH6k;Ja!@6_`> zujX8rB$7<5R4{TFutjs$=EoolyOHUV|OXy7|=wB>Mn!!NA5kcv+BTC4y7002ovPDHLk FV1h%aQKkR@ literal 0 HcmV?d00001 diff --git a/www/img/icons/calendar_delete.png b/www/img/icons/calendar_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..69a3b10ad106f0c1603e5016097973b248988c05 GIT binary patch literal 742 zcmVObCawiW7N$cdk%fiWKxW)*|jDAeXeGGH=bv+%Yb0At;_2hK@Oz=OUd zs6-?p5s4eiKq3J^HYb3p(tNXDf2NI|X&Y2k)pL&rR8{r-lc>JX5!F{Zqn!Mn)@{e0 ztExr>#tEWI7{JAjA%ei?Qs)q109T(4(LQ*HM^^+DA=cHzg0d-OO+?_2wV*&4cx9KC{J4yRV93}AK&+g zwcMfM)k|8NPohPoEGb+E)aL}OpsK_IXs9iwqXp(vRMOr1iH6!@@}8DaG~C6!t$UeV zwUG4d+e~k3<<9EZE+3+)0|2J%w4g8ypIp?PHkaI_hqUo z3Q-OHH!`*J78Nt{34<6TNlVY5uZkS^{&t<)HSgBt&-pBVMkBEhC;4*D*}UiZ-t)bNi10tl2Ds4Bw_k+q zN_0qTjnd$0jZzw=1yAWwrBI%rw0?AC^W3lvphb3dpFZx^Nsl-4-_nbkW% z1e6C_f$RF`R1(}2BwcV_2KUzEx@ycQfnPodp@_pEqiw)f(B2w8H6A_Us z&HlZrB_@NPYb08~NBTNzMFt}BwX;fEPOOdD0It$#5o`;pTjE%j$<+sOYzt~y<0KNh z7|JeY%G?rqyI$fLDY7R_Cu{1=iRl&uuq}fP;Q%$Q3D$>$)IN^0y5JQQfsh6SZd0{|4;Lu{NrgNbv>7>S(4%y3Ed7tnpb16j6@?@kB+6a1+I zuuOxxjvjLQKCoEE5iDLuDprBz2+96@x*OVH)ky*c3)4Sm19+b2dtkzhfjV+0&&HD= z(PyWa9CR4z&7-IFCFZJ=1akAyTChxh6S&H6VZqESIvOjOzkCN{J~r~Yriu1jy*$73 z6r;U$IB>~PU6BqP~898YX3J=*#1Z=w1DX^nQc3%5aJ00000NkvXX Hu0mjfn=oBS literal 0 HcmV?d00001 diff --git a/www/img/icons/calendar_link.png b/www/img/icons/calendar_link.png new file mode 100755 index 0000000000000000000000000000000000000000..6b106b9429aaf978ef93ef331a3a58ede07d677c GIT binary patch literal 795 zcmV+$1LXXPP))y9?D}-jUWvgMWybY$46!FOgIME@ZA%%FuOX7|428g%rR1ovp z*vgiRA}dotRFqhtz4&&XgOmBP_2T=S-|zc;f1h*Cvpq=wlKw~ZG2jX*`<1C7(`&`tbA{n!tvE#FW*>_g>)FHj747mfgZ&YfT+`Un4_TfNJ% zBY^4E7ByiO0RuvyHy1G706MaOw#z^xA86nK>a#%A8Jd-JeZUc*%Mm;TkYR@$cwP=X zl>$$SfyqL^o(GIx0|p7K@-)pB8Q&!U?c~14PSBqZ^pT;S9H9F;&`E~d1wbnSv|OTD zVY4RzXdxeqH6OkSuqKAxe!7m##CywZytmKA*Wg|hIr_x}KtHvH@b3dUU|}`83F~YC zw)p_;L{j@rl#CUj*jk9`w|;!x2;-`DE&-?1Axz{KJvY%{B1noFUsSHom7p+<8Dj9CI^RDy~c1@*LA9kS(J zNJ&XKNdc;n6@-56V`^cY1`GxR{C+=tJ|CP;C+ZvYFt&HX>-AF4?RL{lMn;B~0+d5O z3TW(^z-^fVo~0$^Gr1&i0V0tIO-)UZ%jLA@^Z8KMYAA$Zm|Y4`m_K2M0Lm)rpwVb3 zAQp=ujmv|>;ef~Efy?EB)oKNgcOHSQFa@Yoswf4N_bp>P9K-!yGbEBy3XoMO!QpVg z<#LgknMuXg98MaPRn-(wP*4z}fHKoZcS*-mBwPIm7qjx9y=#DZ$O4WPo<})uLy<0h*&I+6735Ff^4F5qzk}@P)Ff}Nlc zJ+V-1gdjvrBToYb_&=5JJoz%#Q=n#p0PUsg;0_wW6hzWF z6d(Z#0TH%uy+T9>YJjQ_4o41w#S|V(NC8qn46yPY0ExQO163;l8LV%BTT)_{lxVdB zLqhH!O}vfXt+G~AtirG?JdRPE!p4;(u<%+06sOr5$!l?%`w$ZJisblGeq3lk?M znK(IF&Lv~|%q&@!^#Q8MB|waLDd+L)A8Bgth=QmR)CiKix0+Qk`lsOTj2++4X|3MA z_x{3e%gn9zko@i4h1Ih`tu0ZJsAx1qji_-~z~gH-D8wdL6`?9WFzi$qo8J^aVr5)w?g*$f-IAT>umA~g7`KN%tnR;#U}<7 z5hMW@Lgq>E$!K>yytk^`8I7CZh3ZpP+&cH%(^WC8HJ%e5f2P*XvcxkWwQ`kGkO~lt zlII$NusS59(6q0vCnq`@4S~{naJ;w4`Jc)kW_~B`6%d;_oLG1Va7$7Us|13;&iz}O z`@n5r_O9P&2_$L=A|D7_Q*>C^p+!i-1T+MZ9OX=AAZiJ?X%jKvPl*mHtAuC}!6424^=42In{JdU?xY>Aa%fe%j@!RS-}GG7@u}MX(vJ z>tJ!K2+sw+>=e;Z=V0Y$3Gq1LUIFdtdibFSPSgUs;JGo3ze>ZS-Ld{OC?6xeX_GkI zowC?tTM$B330MKQ%?H2kQ68M0%NJfGeerSnSF=wtJ002ovPDHLkV1gqb2Y3Jg literal 0 HcmV?d00001 diff --git a/www/img/icons/calendar_view_week.png b/www/img/icons/calendar_view_week.png new file mode 100755 index 0000000000000000000000000000000000000000..8fe695f51fce503e1a4838ac4a93f5b9ab95553c GIT binary patch literal 480 zcmV<60U!Q}P)@KEQ1dB*OY;8rG{0D1W!OBLkw-N=dwXm~N1QE3ov=J3VoAfqnBj^Uw zM54xfXXYG>dvA7&AS)Rd=55|*zRs-J<}fw^c=>n$4xMPD-K#DN!X#CQA!mRGN}D zZ(TUGF#(W$<^0Ccwg1U{{qg71`xTV51~7eg8EmKo6-0FJwt;A&35ej=)z?JS>H=Vx zgW<$+P+1ltJpkL>eL3^by|8WH ze>3}MeDdL&w}0&U;_Xe_W&{u=wB$OQFuT8lHo6K%Lkr8Qp~<2Rk*PT#N?1z*LjAZG z0V$SMWb~P*tCKk(rKJTl0EW#?05TH;58iGu9(7SR_g>A2D(<}aN*l$^r(ZZS?mmu3 z3%3x}wQ%n2F|r2jd;b;=GO3$dFC@Re@#xc;wls|_B8y59C9?8Bz|QWU=Kw2*J?FpO W9yz<&(0nxj0000gJ-O!jxnD7oNLq;%;3B=$mW~C-A78b#}Ym zUa~ApY&IL$YPE8+w{2VKx^DRW{x^j};R(m*^Z8S9-^=ClFHtNO4^>s2WHK4B90Evd zRNvv@{p&Eky~2wRC-6pYqSb0Y8jr^>3G5|f?PqEtk*KFqDSspqL8sF}uh+wHIK<_n z6MX#q6V3T;+&aAjAq2YJ?gK?pbdSdaP1D3|HoL3QsY$Qbi+a6|a5#)~It`Knl7dhu zghr!*N~MB8Ab@N(i+;b4$z&p9n$6}7jROaR0fNCGwg*Re{(gmpDPU86x^Us%)obw2 z=aha6oFxO>?KYy(sFbSkv{)<Xg3cSx! zV*;wSwBMGSfGRX({TECm3Yn@1ESF0eb3TJT z!7c-;DBO+#(G_BEZ~a#M_t*Fbci5Cwkwgrt00000NkvXXu0mjf2e~nc literal 0 HcmV?d00001 diff --git a/www/img/icons/camera_add.png b/www/img/icons/camera_add.png new file mode 100755 index 0000000000000000000000000000000000000000..08b5da9891cffe3ee397f528734dc5de406c1c53 GIT binary patch literal 800 zcmV+*1K<3KP)ZO`s5Iy)3 z^blxIm6b3;gecZ(Yy%rC)TwiGbGzG}ySMLLQF<%r!0&t)?)Uq?-}!y#FkRR2KTG1< z)YR0ya=9F+R;zWjT8&jI6_cVUW*#+7V-|}=wcG8l$HvA+dH%@ANFRlt)6>(NEEo(P z5=AlB+uIASh6o0tU*6*C#bZ#Hp5f8^4%l3sh{qGxvf1ooBHIXD`he*5dLvz3U3Qnt zg;Xkq)zwvOY;2&}(}9nl*AXk6L{HyoFvhU5vT|7v1dA-okR*xa^Z7FpbvmUa5x+Y1OiB>)5zs=MougiJ1+6WwY4=gHa4PK@44?hVMmi8@CoU=D$G!@wY3GShap^=L#b{X2m10@ z&n_7S#P06yyH=~!aMt6jM_MtX%EaAUrYSh0en(>Y1KRyIoa!IIQ2%*U${9ERlE#EA|+nOZ}Sdl>J2yu_f-k7Rrn5_KL;CX@F` zj-{cYfh{gBGG2holXvKL zj1ND@#GC7oMGIcMnkfta^5QgId$>3{* ze^{whg4JrZPS6`MxN($ zfj|IE4Fy;cS$cyT*N#J5o50ie-Eg>ju(A@nnayUOQLuvslitsFc6Nq)dwXTK+l_cU zj#MgzOeTX?Z#QNZw-7C!#;Lw@AcP>9Ob&1yCrXk8K@doxP&hBpuE!h>2g2bnTrL;< zen03_K%at^mKH=J5zNia!Rd4&7z|=_a}&8-&Z>zCC2JfpB7y)(LieI{&0(l4=b%t3Dn*7w`;kx*auv>`)3D6J)nbUM*n-6rY{NcvxB$V8a7@*RZ=L^f5ifi zud7IK2idrK**&p5KU+&y>QLZq$nFq)OAwv5eohX$&YuRo_ewiIZ}U3o(0MaKQ72s_A300000NkvXXu0mjfhN@V) literal 0 HcmV?d00001 diff --git a/www/img/icons/camera_edit.png b/www/img/icons/camera_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..b5015b103aae138c81088270f9f11da15bcad8ac GIT binary patch literal 872 zcmV-u1DE`XP)gnzR}dAN!lccO`E2gRvSvH)rF`K)PSFY3td^OAd0KH5V99U5f`EqDcV&x zMR6f^BgHTE1J(~|N}8%wscm1=(3dp-m*hR?MORf<4%``LxaZz;?ww0CO~d~zPTvLw z1}+r}g+QrPT2rZ1NU>Pt^ZC4>pQ@@7Q4|%c)jARih0g2#Jv}{J>G5@FXlR-A_xGDw zmQDKoe&}o{plZ<%qd0MRBb1pz+<4LolcNpO)1P`}S-wfZCTcqM9jwRWiL|%3TOAGu zW@l$1NfHu?1lGG+@$B6aV(CtFY~2My2o@F=jxY=(8Vm+-97k4GR(5kVYm3QbLL?G_ z-EN1^=L3}jDh2iR^@v8J7#kad&1OR&5WwQ%B9h5u)h8B^Js{#1jMVXFUy z)3c{iscL&{vWy*WH^f{7ott>rw{%01?tm3E6jF_lUcANKSuaqVMJ|`C1|Y#;u#fij zGQEfvi-k1R$fWP|K9q?aHtS1R>;eThU}p3+Lid-|#k5+Tf!{Oqh^!u_dsp{rN6!r+ zHhcl|-(EpWA28sjN(nz}>M6Mxz&V;}e-eUODhLu)h9a yaBR0V-`VWowzs*V@x@p9_|mCESHd&@8t0!9oOz=HFLpWr0000D;+3^E$z4{$MYU~w{WF-|B0J{Ada(M245 zM5B?xRH<4DOwsYEL^vFoOr=tHX|O<{NFU%@T3P}kw@ic3zAP5Kq0fOcC&R$^&w90dyv`v)9HVCDVj?z;#J8&v)1#8j&)P*@IG zl|zUOWi=QUpz#kgwRGSCYTsBsga!vU78>(_w3lYQgq=;Lm~?kll}x< zsTfRnC<;VuXxc_Wst3z_yv0nfuLV zGo~m?i>7Hrk|ax`(Xg^p*L7mE*<`2F`Eqh{a)RZLjg1Y_V>2F)@0022=@UH9m!r`r zm>LQ&Bf0h(x3Bj>{`L%y-}b}d9Y8vr884MePbk)oS&!K&zg1I2=eM67YCDh(scw zt$?Wo8K(oRKQpcS=llS9qiX2 z96<5lIf8nff>aqj?g6Z}Kc^((5rJ^1fI14R(E?SsgQF9&+wOqp6+l<9sH!;W?889U zFltQ^pGV$9`s({jz^bpWuOr$W!CJ)wNuXoWWn3E^hej1?x<*Ykuv5t*(sKz1asw+; z9QsN>1XjILshHz&l}Z@y?KRE$NF_7y_hJSLRiWw%6iq=@s^Oe}1P4kTA4V4-(3wtb zZEZcEN^Bh+9b|cVnJ|LxTTQ5%3a=wT!J0{yt8ByB-i6id0v0!xAS|6)Apd$yH=hRe zCN)>4tuO;a?m==fIEqi(iDiyMZh}+n{@4V; nyF}D;{j00000NkvXXu0mjf57}={ literal 0 HcmV?d00001 diff --git a/www/img/icons/camera_link.png b/www/img/icons/camera_link.png new file mode 100755 index 0000000000000000000000000000000000000000..d2ac9f9350ba1b79b64d454dd8bbdc21c718cb62 GIT binary patch literal 839 zcmV-N1GxN&P)jCRQ2LkQkC`7#N(`Wzd0W z)SBREOthvcHI*MJr3DJ5rS$iC&Lt3>eaX4^y_fTy`!1#sw(C4`CBTT>a|!bh(@DuI-T(Q z{h(Grt-#@MAQp>Zb#)bXyB)z`5WBm(I6OQQIq`Vhr*dK@lR-;M3#w)ho_{EzSd-8o zeg;X0+wIq2J3c1*YhacPOe7L$Yikp&%DfbdMRas@;LVQ;%9;$LjzTY^F6;35k68fs z_xA<3QmKFhzF?_x0a9B;p{^&O0#zo3NFs@rilzrmNCbm9kKcJ047kd9Rem(BaR#O$ zGKC^bI5{~HIhPrn7r0&vrlN&H0oiO8;cyrm8yh@jnf^D_m6eq+eQi}v`g*-y@9U9~kyi3WgY0VK*4RXJq0rgcDLhfD z)efjVITDGa|0&?}`4sBePbV&ufDQsFOqK4&Bigsgt;@9QNVhs^ktIfBe*xE3qL_Mp RB%c5P002ovPDHLkV1lB^g8={l literal 0 HcmV?d00001 diff --git a/www/img/icons/camera_small.png b/www/img/icons/camera_small.png new file mode 100755 index 0000000000000000000000000000000000000000..454b0b0199df99a52603dc9d50fb108f138a36b5 GIT binary patch literal 489 zcmV4nF=aJh$b&b^ONN^wktaAf>FK-e!dO}leb)%S#D|82Kh z)M_Sl@!Vs?A}E~6 zxJaeYXf%+^<k76bVRR$kAvNPi6?SJ&zf9ynYGbI1cmq98A08I9RXOOm1)s zwryjvSh%L`L77Dy0Syt1$78SeE5LL*g=w0&Jh31V2O_bN3HMFS^-G}e*;M)Q6>s#cP zI`Y#S($G6W`W@NI5g|L-MKl0Zmu$m^(0~^Lwo5OO~d#(vPfz1rk%1hOvQ!2cN2d2?-uHXIEo8vToeK|KINWnNa4+Xt#u)Ykn|6RndSZEQHfCZG5CcC=T z`(o_NTOjbCK|GPF4%)<=%>`agEOIe^kJ+gSd~H}=`AYZIyJS-%Y|LeBxc&DE@kHvV zh>Ui%*7I#PNlilw1y@n@6l>qJC^2jm6{4Z3p@!y54^361Eu)pbu{`o1V_kbZ`MR$y zdh}&Y@Fjlr^zxZmgL6TIkJ-*qG#j-x`OjkRipD3485n}nXu!{oDbIFDjcz9A?M5% z2PG>yimcp1&>5MK%jHlg6reM+k&%A@^fo!tWxH|QR0Ma}26yDTXd(nZ3#(s)-0F2- zez{50^fbdT&}y|H>u{>mC3+bKC)$uY9*^5a08#oQKc4{{)TYPG8KIs|3 z4ORT?V0lH~l?0j&3hB7!W2DOBEbhsYf_b7(V%tAvUOfK}hzhb~cin-F00000 LNkvXXu0mjfWpp$z literal 0 HcmV?d00001 diff --git a/www/img/icons/car_delete.png b/www/img/icons/car_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..2803b567847e69fe64b0691dd30dc83d5cb8e61b GIT binary patch literal 689 zcmV;i0#5yjP)O%0M7oPLI-^+QP?|IL8KS>CIorH`X z#{U;kx03cgzm1lD&iP@kbCb?=Y=W5?V_7}Rrs(-_;>oo){}iC`H#cZ?N9}vbmIR%1 zFb>LqUnCTbuQtCJ{X9Zj;%93SH5XfYC4n}U-rJ%075Y!Dm1|o2KLgO>T-6vG~ zU~R__Y6#D#b0=pEa*kw>#ikhTYrejO78!u~M-2O{7X0h`!Spj`&?4f`5S^I6JW_j*t8PJ zvW&#i3M5M{M0yFvsP|eYai!-03M21;xEHWkv7}aG!u?@3_kw}O#>S}A=@c%POHdx# zsv8(Pr*i&jP~^wYdlkZ{=g+|{pU>AvYnt#p|5xdXh_44m_7@FzBa>dhI@OYE3e_<$ zZRa+6J1Xy+_7vT%DrKrF&msApA(l||?1t!-wtJm@9S82DmgjFPx>RjABG%JZH+%FO X1fWDOL6s`T00000NkvXXu0mjfK8`i% literal 0 HcmV?d00001 diff --git a/www/img/icons/cart.png b/www/img/icons/cart.png new file mode 100755 index 0000000000000000000000000000000000000000..1baf7b9fde1195da75a09a4ac8a7cdcc11542c3a GIT binary patch literal 421 zcmV;W0b2fvP)|9mIxVK*qV(LJCr#hETgDW!z&|9$wh3`VrtfF?un9PlRLs>2y(-4 zrLKn+LM$+c2R9RpV`rECN`sK@HGt)oU|=2}GdOWzXOuyDL72-1pjr{L%5=%8 zRQ(pEyJS{6KMcTc^`djdIyOcaz(RmDeoTeB8zvcNthS*`>A=K4->m8f9c)wTh(V)x P00000NkvXXu0mjfbTF;3 literal 0 HcmV?d00001 diff --git a/www/img/icons/cart_add.png b/www/img/icons/cart_add.png new file mode 100755 index 0000000000000000000000000000000000000000..45c2900089c5b3867019ddf2d1c9c41552d66b32 GIT binary patch literal 711 zcmV;&0yzDNP)uCxwbv=KH9zoUDon>V zr>UxI+l z#KOV?tXAtCMJ|^E)z;P)Ha0epPNyNuGGeh9*4Njuva*6;Fo-}P0FTGRu}4QoI5;?f z$z&=kve_(-kB`yqcK=$PP6rN$<5RocMzvanBuNc}!7!r8WHP+bYPFEh=h197LA^$! zfn+j?{r!DJA`y-Wg+eHo%iPh-%*WOJf!=_4JdR?q$TO(d>pTNeCUT`x=_#{;C=?2$j;X1sGkv$Py1I(P z!$Twz39zJva5zj#0@-C@2}IWEbb{S(Co+D!Mh2YN-Q7j4Rs)eqd1+}0rBaCoa%Hv( z_V)ImR4Tvy@g2C`Zb};S^YgG+ER-}@($Hu$P#T`&g=Gkj-rm5_>p@&oUYt1fLwX|J ze5DHBL!@j);j;`WIfC2L1zdi5R^$Me%XOaFdp9>XM@hqIG(xY}Q_`58p2l6>Rjidv zSo>h6-65tPLP|ZR0blt578bWNJ3BinisDB`9zE&c`pZjrU$*1q7cN?9zz+a>(-SOd zeqB2|JMjDcJn8ZAag2?P;mWgfcq8A3P9ElDU1GT3!LQP4wNR;4n4FyKbHIS=TjBtW t@&m3+C;j&_I88CIp4At!{qxjQ|2w4%;hGY8=Cl9+002ovPDHLkV1ip>OPc@y literal 0 HcmV?d00001 diff --git a/www/img/icons/cart_delete.png b/www/img/icons/cart_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..ac5bce5c8862ff091d89763a9c0ed19a70e639a5 GIT binary patch literal 742 zcmVy4^0M)9E7~PQm4Jv4X#i>2wOI zRH|*W+0?aK4YJwnF$x&tVRE%v1))#~tyT-vYBkjBbJSTCeRBEc-5YwfMssp)=!%M=N`K@UcJA@FCzC%1C**Ti`$vEb7M z#Ts?^`j+?NC4&`CzviI$={-Ftmv-4ojK||Q5M>V$A1;aO4mN*`U~|h0{MrYAk1s$V zk%C^Q=4}-zr;nG2V`{jav#X!KFy+1v0a22=1R0U3pl!)07)2~?QeZA!iu>VoZOn9222<0v z*_>{&&CTH?(D~_>E9czAE;OB+evM6@zV{=9K@6gc!wZM=Jmx!`m*JDd zXti1{0sD=&MB)B>h zj(dB1iPBK3)le#x=vNEzbD<6gv>$ulsz9%mV|S?@i=8F-(pG$_ppk5Ej^5pv75xEM zf{xusl6r}dvKW%*HQRYk?CI$_%_#l8tE&qNg#sGsBT%+y%-9~#(Hi_(tH2I3NvNX) z;nvG11Oh=ikAM+NOkTNME>t#DY%YGT$GlC3#7r6XqUG3{dx0foQL5o7FTsF?d_JGf zBVar&W^Bo>%S8OKyNa;p4kqi5!KW^T{q+?XI-6M=GqtF$u8#cmm?RPj8hPiC@pm9I zBgahBHJBbAPuc4(T&%6F74mpI0!G1WEW3Jyep_`W>ufH~I@+$gEu!-$3ti`La_RM5 T)9mKtTqbJf(rJ5aze{dD~bnS8HAT_H56d@9+Ejex4r>0Plb5p9Kbk0a~pV zy}i9qsZ`f^p->2<0)YU0J|8HG!sO&6#>dAoIywrw-42Vz0+Y!EywGFe(8k<{~On&vLD*(|1}rjW^GK@0DIP$=BL z>la2wMo=geFflO!mNehta1bZ{u+@ZwyEeU=v|z?wXYB9qCu02ejcl%#>FH@C5(yA7 zaWN(A3nlv*#Y@bUH#BJv}|>?(RmPstr-=WfYg4D1PX| z+JXy_p_>rgY1sMeBE7X;+V{qM(XjH)iemNw=tpPqZPkhyZ4G3?>tA;@7#J8h%94Jp zR;vkVbar+^BNre|HKVko2Qz;IbjKNNWg4-b8iS|n!uN>c+<{617FG*66$-^IsZ_cs z6}L68PA|W(;I5B}XC>>{C~{={N`xfU!b$^nr(4*yv@hRwsCqMf|CywvR-QL~~kw}D){QNqzvVhVWh2j#+V9D}J*-*~M zkb7aov*sg~Jpr=gtpqzxGl8~K4C}F8}}l literal 0 HcmV?d00001 diff --git a/www/img/icons/cart_go.png b/www/img/icons/cart_go.png new file mode 100755 index 0000000000000000000000000000000000000000..20ee0584f61fbc7a4759ccda9a3d805460bc70c8 GIT binary patch literal 763 zcmVaV?~72n$)U z(3)sy@M190gjOOI`b?=sg7TQhow?pSp#)+iF`neiNzTl7zwe&&jl>wk|AggV0r7a8 zX_^K~DR{jhC6h^0f?*iYb^TC^j}E2)`u%?N_xEFMZ4FaXQ;QaHg>X1*0*(q*RWUg^ zS?cNO@nkX?%*@QJ@&lh)1oQIpGOSiB3WWkZ9uKnFEPOtn*>7)e$I{Xgy1Kexx7$7W zd>-j^S{xXS#bOCdBodJli3DqEYQo0GMu@*4)oL}QC<@^+L$WNBa=C2QQmJJ2x3{;& zb&5h+op^}*H8(d46+|%GY&Ig8IU^CwPN$P}cXz|(a*<##D2RlDg1}0(HBL`Yvw?vD z@S&nose}YrFbi<8SPZSWUy>cViI9E=xm*rILqpQO0ufx&gH$Soj*bqKIS>fI;c%GD zZnvB8y};Xg0k7y|!M<-E>7bD&CMH;IU1{43FhhfCP^i4;aRt!py^Q(QH~3s2*riI{ zyZb+w^fxEojfdIQ;7#a^`@_&-fT6rufYW*sbKhQLA@`QbRBbe!I6gjpp0nQL?6(BF zNZF;D;OzQWXj}#5YBXKLPvsZ-d=YGEI~KAsE7$FrpI4pYu#Msyv^Lo9efwma(rkj6oIv4xraO`e2x4AjJ z%qz7ynhQf^4{kb_bA{+YnXnXn>q!`dZ29f?yO6Y;L=T4x=brERp5Nyj5dcxGQ1bWi zI@E|~{sy#ouKYZ$PITH2MX0eH`#OyGSr(6+m;b-PEAA$uU*3ZMY)6yhB7WyXp%8+> zAVx+;;C8#8i_+;dXe=%+VqswcYW_at++FBCJi)tF7QwU?FUIcRmiauc_16it<#HMO z`}<&7HZNLQT0*5#!QtVd5R$PQFnoN9@TwDRLIcw$Ifj${c*!;4y8c4t;NSpTTU&5A z9N%mNqCsDmrec@N#qc~Yyx(Xv)*m;Rot?${ z`ntfNSS(_GejbJG0vO9#w772{J5NkZU~O%Ux}&eJ?_AXuVzC%Xr4r`m=0Hd@@pzm% zF?3u4i=kqR#li#v0V>9cHIhPIHk(DEPyiKgZf+tR4r60ugEkbL{eC}kxg5H>x{hkz z0mpF|9UX<&>&4K}5G4&l8YYto27>{5y&luk)6i%%NB=yeTG83rd8WO+9ZIG0dsTz+ z@$suBA+hMg@DQUsAr>6%U9UW+EYZKlsm&;344G1h9{W_ga)!^XZ4iT&V zc2}#_DuqI^L&PenRQjW;0l8@%AuX(HWn~4Elam7J?(S}AwOSA{d_JFW#-tWvv3R>C t1GCvI!0PSoJu!hyCR0fy5-P@@`Cr&f$(>anrvU%}002ovPDHLkV1l9|S^WS2 literal 0 HcmV?d00001 diff --git a/www/img/icons/cart_remove.png b/www/img/icons/cart_remove.png new file mode 100755 index 0000000000000000000000000000000000000000..360217b526d10a3a39e0acfbc4f4a41bbf986734 GIT binary patch literal 769 zcmV+c1OEJpP)m=n&zdgPnpxQq~{D&6m05<{G#c-_mW$Ue%e~ zz`fum33Dj^=QhnX%iLgNfhl_HBn(1)`Sv`|L0V3t!;c4k&+q&F{hrVB69EvFi`xFH z7oJ5bQ0uv#KCgzxxfgF1Zyk>$Uqiq264jO~!hacPgc?kIl3+0(K z-c3zSVSIcXcDo&;qoXfG$z&2V;_)~HLBM9;{6hg6B#Qgj` z2x)G1c9wSH=(q$HN5y)*o^v{#RE#s2%AkjZ4IA?xgLIFL@K zA(zWf%I?ABO=O&hm&d$z@ZEbC6 zX=(XcV&HPQZjTa>l6HF&*VMp~gzprfM$L=2nF#@3kB zqM@PTdszlLosPj$sZ?hs5R1i<#>Pe}#-I7$7+=lQ6LRxi00000NkvXXu0mjf3)^L| literal 0 HcmV?d00001 diff --git a/www/img/icons/cd.png b/www/img/icons/cd.png new file mode 100755 index 0000000000000000000000000000000000000000..ef4322357cbc34e0b5eeed34f9fdf553a1de2ee7 GIT binary patch literal 673 zcmV;S0$%-zP)fk+XBT$+GFLor|=G~7Z=&Bd_^zJLLP z{dbOmhNM(Q`mp7h`OloWYysF>=iU40Tf#?V356IC6~fPKul?5pw+W80zw#nVEgemD zincj})E^?AZGqXAKHDz@mch}3iwfqB3rPo#(gwa141DiTF(xO6U^eE%d{-hX0gf3o z8{W?(@4ZV6pRS)EXbxQZMi1!D!oC#YJOO&yAsn%9V=twmsxF*P_%ZxvD(XXc8T9DS zr0103x=g@fvEJ!1y5C7b$Hz+ryB7+I5>V>_sj5lWnV>%bWD?LRmBAb^h}fbg923Y3 zqK41OM-q_X|0W}n)p3}pGlwoCoNU0Ppf+VweFB8`9D=Abd!7lXx6+7Cma$90A4ue; zVKQTfc(bHa=}i!!qJ}b>M^UnvkNQWze=dVN?ZJ22Mf(14f#NRkt=PP(cyuKepkb#y3Gz>xmDvuMC zIuoRtGlX&@?9*%nGA0rvwq8W9jW)GLrXJl50KN-ci9ozQ$MNkH;k<IV|^+8goU4jB6C^%Mg5h>3Q7RCr>7r_DEKw7k44$|vUmJAm;${=2wBT`(Pek9N? z+*$Z3+nYyu(=ufrbdbTWW%|!LE6aD^rgi=em@XcV9q^{200000NkvXX Hu0mjf|3D;c literal 0 HcmV?d00001 diff --git a/www/img/icons/cd_add.png b/www/img/icons/cd_add.png new file mode 100755 index 0000000000000000000000000000000000000000..b0254effa6c39214d063f84c2fab1ee1d95e162d GIT binary patch literal 758 zcmV|(^b7zP# z!cC-!Ea4|iEcUm)J+YH85|w#Z1iq+@Uy_1&;Q+DB9_;QYSgfJxJY>*Fo_n+CN42IR zCIj!+^O*7E@hzjEM4}qOVobxdO_Qd9kp*%UXjg&MQ%gC#SlNY;t3jo2G(fJ^;|&v| zWXtF>3^75HVOb8N zKuK|`Ca?<#@hXIf%;G#VkTzobG_!~aN`6KrYvBS5CW!6^34f{#D{ZRzdrrd}D>9AL zGB7QOFgj8gb0o38b=1K7y9l#O#_P2#k%6bpfakZfFfJsuhB3*R zao^OB+arCrI(!ZzGo!5~Xq&jQRe~S_(IODe6FI=YQ-&{5hUwE=44JRvqi-C1f`h?+ z7ncnu(K~pNZ?&;Ptr4k5KeK=<34DzJ_D~fcHWXZYbRM(br)23(`QX^Zktqx=R22ncUklHj|3B2M=Ej;gbFYo^Us{nc2wR$w1%nAHOrh o-8

    FMnZ2${J4mGP`F_6qgCw{eE9nBu>-wk5ZP%wc3 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

    +5r0s`+SD?Zl8QR}J!s>Vm&)>N&)(S?k1p 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

    tH3Os}6%a;=9l>d%E0Th5`Dj!x+Z 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 z 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�{@$ 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 f3rpV8z+xpL9 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 z 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

    lW3nIld0 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 FV1mD6$SME; literal 0 HcmV?d00001 diff --git a/www/img/icons/ipod_cast.png b/www/img/icons/ipod_cast.png new file mode 100755 index 0000000000000000000000000000000000000000..6f6d3406cb1062c517d384639dd27c4cc22eb48d GIT binary patch literal 711 zcmV;&0yzDNP)D!zG=Q}^X1IIGPP@%!z!@w<+I){Owi4hXU{7EgS}yl zc|){1MO6fra^Nn5rN9@UeQ+WWuYp1y7AD>y#AR;0_H6)^>LFI00w6c8@D^I}-8gM` zEiQFih+>?Dsa7V36-q&PdkRr}vYO!I%cG!&i0^b*o=}v$gIIDN>EFi$7uFJdKzL74 zejS1MNqwV3W=NrfrVz^SBARq4&VpBJM+=FO--#s~DCEJhAym^$G2e+0XHb4Svt#|# z?RS_S>9SGY>fMDo2;46OrQ3vSisXLvu{6^{KHI|dk3QnNipbJ+lsm}cv?RI>+)^rp za2votPy%0wkv(lWOY8B)+VdS+>rSN`i*4Im0{)d?5lAKy2@;9KM)=}? t0ZOTKI-PD)O4XNtV67Ik)}J@}{{WOyO8m_F|55+|002ovPDHLkV1m*nKHUHS literal 0 HcmV?d00001 diff --git a/www/img/icons/ipod_cast_add.png b/www/img/icons/ipod_cast_add.png new file mode 100755 index 0000000000000000000000000000000000000000..c3257f5f1e2987bc9ee17954cb2623367578f778 GIT binary patch literal 796 zcmV+%1LOROP)MUvn@5JJ+GVOV$(UKosaQ4~Q%!7dWiGJCPo3{GAL5i_55R32!XGq!Wm^*YDRxAkYq2tC!GUUX}>pbx9cO zbYt8Eyte^d2jF2rT>)n;V808v6u@XJ;HUw*F1pc?oAd|3X;pYj#R9;micz7Ibdxtb znah%)FP7p(Q4BVM8A}268Fn4uZ_9-LNetm$DrRG_*QLQBPa$0e=>}me38MR|0=j|} zXwRqN>A4vCDgouO7+7frgOOGh_%6~@3%XL+?xez6IftP}z)}vFZ_!-=bjaqQKAnok zC!_?SF$#gE9F`&7j|iLAXR}r%lWr|s^%2rF;8~so?J^1J8eq5{f$C@lT8`{O!{Jr* z(irlrX@+!{5vDEoQ#WJD_8HE3^Ml{+2!%pld7cNyaq#>72oCjs9(50}sL$R;g$wAt z4cywa)Z08BISe^ww6zy^Su{UN5#tb^QK0Oynj z?>>2<9KHsbG85UwyPFdL!n_-RPX3FSyobjz5K&=ZhJGYE&Av-e`YsEAp9uh;&nE(+ z(dcGQR%c;wN{hdbeNrO;kO1&_JR)FzejXDO6JjK#d-2G70S(@KvADsL|9=CQ%e4@{ zeT}UiXPftd^%jbqgLXx_EI{ zrKMEGW9*{2Sf;_Sa^d}jOm<7w~Tld8ZU$6A~+4uS^^E1pz4T=@&l270ZN6D*P^TeJVsR%^+Gpl?xn|BQJ6CH zJUpsWFJR`=P`X>50eJ5w;=QfnuN7rk#c?H$hQer}YY@5}m@_+gblgDYp=c`h$8l$m zN?k78*sdb$6C_$njQFaAUa6+5r~X1L_S^tX*T9+$kI#rR2g=g|lf^*S0lJ3D{)d_ELK!Rz(X(PaD5>Uttmv_4D}hp9aa1*=CS zp*u;(1E|i>wj1g1^tDe-P4U0DTu+~ozg9=#nvvjWmlA$TV!H#>HmjX_?S2 z8|nk|^1)U@>%QgF9)0+vbMFeqMVXRR$ccfXc!r8M}+M35Z(54=eI0P!Lo3Z>vVl!7-Qw}2O= z3LZ5%NiC?SQc6r%jpSp4>1IE(`+PH-w{Ah=0JUDw(Ftl#gmTCG;c22qy~8EyUh2pEt2jNHcp_?KUsWyEB^ z5r7+Dz_H9s0DuogpjS(CNP_FSRM%d7dJhcq{p_o?Us8a|b@RgEt_9njF(`+UVdtY6 ziN^$8oJ=OrzW?NT3fvWaY;5qOOM!%`o=i%H3k&idDVPrj0fQ6j?;?ziH@0K19FBVz ze_X$_NDLA&0FPI;hwdKzeqIwMoc!=Q*1UYP0+w}JLS4cf$ANCQ3!0`8-8wcZd`>=*&{n(n(H&ZS7D9~VA-qjs07hjXczMlGufO!-eHz~S57b({Ty!0 z^|sa|9GsAVnvr&^)e3>|OaNfBx#s55PVQ6(oXK0-#3%zC7L54L4{ueldkJW1R95TUzXcT$G-|YwZ3uzC7C+PJG?~lg zv_tF}9Lz9`k3b+0_INxX0$taGolfVSr|u82E+>M?WOC7HG|+4|1%cb`#%MGOIbj_M zI2hS%mi2l)L9kpdg&$2I%d&`!F+pIF98JJ?fOI--`g}g{MGB{HPUg5ozHumu0!fn4 zYPI0^`%mkDgH5_o(=;ga86JN7P;YOp@%r+`{n@dDa=9GlLEG(iGIue5Fc`$0xxvNb z6PU4NE4`ciE`KK9QmM;Qsg$<~sF({%i$^+^?KoQxsb_Z&~CSx=zu3>E?rbA z6%vtHm{mkRo6W?TzSB98NQh{UKnc2aI2_s_t8l*)3rD)3UuzRkk`jD2k+1;!akJU{ xbDN;s?V?_<+oCyiON~@Sqwc?8=JcFTu|F2lW40ifwh{mU002ovPDHLkV1k___RjzS literal 0 HcmV?d00001 diff --git a/www/img/icons/joystick_add.png b/www/img/icons/joystick_add.png new file mode 100755 index 0000000000000000000000000000000000000000..77e710772f40faddcc2c3fa16c4a92a07347d052 GIT binary patch literal 669 zcmV;O0%HA%P)oJ(_x`dc-QTAF>c@ApwG7GW}(_5=eGiNtt&dmG7Q5)@Rc)nG6f z4g>>;+%e5AmkXUvhgYD}>4XD~uO24u{cfHuTv>!2!Pu^1Ezg>ZnyVj0mdBudbHYQy5W6F+U%V?2A(Bf)G0G#ZTy zB-Ye%v)PP%J`eJpSbARI_>eT8e!{xN;mgh2FdB`%Qvg~_YO9800000NkvXXu0mjf Dt8y)8 literal 0 HcmV?d00001 diff --git a/www/img/icons/joystick_delete.png b/www/img/icons/joystick_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..5d44b592503becbcba424255921ffdad0390417d GIT binary patch literal 671 zcmV;Q0$}}#P)*h{!Z>@B+0F%S_t zL=uExOSA(;co2~&X01@7)osa8#~DW*r#FwZkU4B0e0;;q_x;{`|M@>+nkFVAnM?)^ z!`SHcdP2Y7ho))Y6h(<95(#;-*8!W*b^W2=?-$%|H!MJ z@qh}+(t2kXwjxr+A&MfLPA5vG61-mT|LuS_o7Rf5EJIW~xVW>8jgt$;U%q*tj%Kc}BY*Or!!q*AGSOef1o)-bJdI2`7) z*(?f$0;<(2JNK$M4{_lHw4Ws?o3GLRwGGw14`pp?eR;hWWdKUkBasMC0cf>aY>>Kd zoc;IDFjLRt*x3u1nwy7K%Hf0b3QhUbEp`Oj#8c}clgU^nVuGovItHBn_ynhJ+=c7Q z8$h}b_W=)%3bQC|ns*$3L}RNq8V&Y58timBtnSwpxO{WK`Q^XjtsVw9B*JJ13=j&1 z*gv<7^KaFEJcn9*iRl;Dp=))hmfc$%3=UfiU48N3^HqQ=65>v_*`zV_8SgXU*zS6%{~AC002ovPDHLk FV1lFjDy{$k literal 0 HcmV?d00001 diff --git a/www/img/icons/joystick_error.png b/www/img/icons/joystick_error.png new file mode 100755 index 0000000000000000000000000000000000000000..b32149e27a37adb1c567ba71ff61364f380138c2 GIT binary patch literal 711 zcmV;&0yzDNP)d&Xs0pH>F-Fp)`Pg*#IlEx0A%{E|26ktDGjHbqIK~+IPb?O* z$g=!ik|bNV+eNF@`qpSPR>I-1*dIHJ0jJaHJeir9u?d0z6;LP?%=vu&G5xyMA3HJ# zP_Ngg)9ExanT!U|>-DJBYL-E<0|69_jg1YiR4QqJcDt?F&;Xw2HP3OJ2KWmZ8bC8Z zC=_BwqY*Sn&D3v018Cy#dcB}QBAdJa~xOCSge{VTu}$c;~!UA}|8w@<<3_TdoK1a)ZDYE=U?>NVK)IT$Txp)|9U z+rq+i7Zm9SsWJzf?nmX^MrbE*gmZ6|p*GkKoxa?X?hD9M+@sRvFH{EqYA??u6x z2pu{uGnrwz*>rh zfvUA@7b#acN?M*mBG3rQV?e^+0R5m3YXWyRZL5Bt@3vAw{9JaEW$}=f4bXO52yBH{ z;G~ZN|GLn>k~{On3Swd-Sy(gFkOdyw-RP%&exwl01RJRp))TI*SsngruhZksQ*NT%!X?K00007oX;fYS5fR?a$bad^&iuHSu~`3%VTtO}r!shMd`!61c%6R9aJGSh8X%)P*raU)hwAiO6D z)GH7M>Os=K8*y(FIo?C~yJ{<%*U%nBM$Zz%Wh5q=k@+A)HgpoHzyZX@8&HV#!QWjA z`_+cv-}i0Xg^24s7I-VE#u4*AQoR#N?{>t-#LOH})WMk9;P)owvi_IE6!o^=Lf3R#&PVCy|Gc4obnhMMwvBLinP_YpwW)P1ST? zrfe04-x)FNzro&t&e;ir^8^J56p&nqIY_fO@GcRuAKQt!4<44sunkb-j=jm5S_@$&_dyonDz^$r}kLbDn<^FJI)(KksQ7G*l%&dIcv63Kcm5d9~ zQDnp25a#b;Oe2ojja#pmUoF|#dr&8W-hPZ#rZfF!J@DLVkx!Vn%)K#giqbQ`G;LE> ldR%0)iYQ5Amu3}R{|RMS>3;1N)RF)I002ovPDHLkV1l&ZPDKC! literal 0 HcmV?d00001 diff --git a/www/img/icons/key_delete.png b/www/img/icons/key_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..00dec80d84e295960ce1dc1e67697a8069cb7a81 GIT binary patch literal 724 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/layers.png b/www/img/icons/layers.png new file mode 100755 index 0000000000000000000000000000000000000000..00818f63635ef3b3c04260c0d8f160b19570cb62 GIT binary patch literal 597 zcmV-b0;>IqP)62!*BTExOSjY%3)*jT5svJpGKf=$3CUqKK-1RDzx8ymlZ zwS;W;-7_=ySiHB1u9f68hg;0tAIzK-5q6bH&%Yeqk1(r}i84|~$mldU469wb{r=gf zuYVfkh}abCXHiD56XS1@m(?2&*9kHq6O|^j@r%)9WR;gBSR*+^{BUiAhv zLTNl5-SWcMf`$Z#q6Tzk02$5(j=VTsw!_ijI|?3O5Ws14CO8uvli9}fO~g1=Dv?Sg z6QM+>P3O~zsHL}l?cjL#8yuEVU~n|V*x($S*`2dri>5x}hU56pjd4M7=H5jVf&jnh_YoHFW1pQh33@EE+GcT-uHR1*sID5Hzvg z6g2}hp<@K+0FD7#ACek+3k!>iLhA`|uU)j;i__)Z&Fgb3t?v-b7s4*agaQ+5 literal 0 HcmV?d00001 diff --git a/www/img/icons/layout.png b/www/img/icons/layout.png new file mode 100755 index 0000000000000000000000000000000000000000..ea086b0428b38a89060a9a375185955b46ef8a16 GIT binary patch literal 480 zcmV<60U!Q}P)bIK^Vv3-yA1LIIsp&s02Z_@K!5`#FX}eq)v)_0l`)ftgN*V#4liHAy(R@)k5$_ zz+fRLk_!vjJvlS)-*?c3MK>79^8`s8M#QZ=d~*vp16%_xfrJQ{sH#8}z|64B_Dt0J z`P0WPW8(JB3js+iKY0CE|LOkIcXC92S;ReA+hk1aZ*^gg4_~%hT%<6a;!6vI(h<04K{gA?%Sd&@y6=YWeinIdj=VUB~cY!neEQ@}0VeaXlS6Fk3nozGu) zn5I8Ji!4)AIGIuW7!!BH}EWfPj0kw!x&q?jF;~BwWO0 zvkjpC_R$R{_2*~VkEAVJq{#Mc>CUTjlCENQ+$@0%Sw@yX8JQsokiZ5|y~hPf9L7(i W;q(Z^C>$XG00001r;P) zZezzV10q@u{(~D3H{r}Lkl<_rHY2+rym24G3$cBt|B)I7p>=x@2E_E70t<%J@A>aj zyX(JK%`Pzi-qR0QF<5QQPJ{u`T_?bT4rSZ_H!r*R-=cUM+<@2bzoB550l^j95C%kb z90v;;=WY34xAek)y_`)b20VN7_5YfKEB}|wO!%MH=l?&k%j>^yc@dHe+Kz%X=%laz zU%KGzf9;gDCcszBu1x)Z;n}YL{kyaNhxhCLH_w*rfw-XU2;6{@`IrWP zY}|Nx!vBreCV|C!_N4yr-;)k9;5*oWh^9mTUl0tqi6&npJ$x10^Z5HznC|jkhtXU{*?AXX+vSK$&lqrKo z4P`-MYRWlh-uHXoo+plGVQMtjm29&SnPTept1G}>;1qBiY)nF?X%bBWNhny_l)Z3d z&-N3@T)lWSVVldhUf%V8y7}mh3o^f*rno=*oe{IP>4|aPep(t*WGZD`whRe#WKrpOeww^A5*|8>ZEI3iJG3d@;ddSaaQQiv*3SWXm^*Pk(vkYVP=SQ%7gX+6s4|5yBQ}3^T_6XQ zZDbP)D!Ze~6zXIkQ9PYpWTZE?jfD>%Y1@{Swk5itNez`{Q)G&e7J>b9cP_BngG&!t zi|rp2nJV;T^4jymwofAMkUFri0;>ZDmaq-jpk-+0DUxkA;uk8$FcGE_?o$8&002ov JPDHLkV1i%8-68-0 literal 0 HcmV?d00001 diff --git a/www/img/icons/layout_delete.png b/www/img/icons/layout_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..4bd45f1316a102817972acb897d940ca07bfec05 GIT binary patch literal 608 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 RNtOTr002ovPDHLkV1g5*h$sL6 literal 0 HcmV?d00001 diff --git a/www/img/icons/lightbulb_delete.png b/www/img/icons/lightbulb_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..f4781daa84ce5f06b6064ea1098fe50803d84bb9 GIT binary patch literal 857 zcmV-f1E&0mP)q$gGR5;6R zl37SpVHk!DMysr;XmK|eDC@AeE|5Z7h|Z2W;Eq> z%yfxic{HE14`%YV?o_L_BVlx@OOdg;-}}Pqst>T*FAY4^0GFi~!s;)GoE{QyfMA~j zKU)uLOFR~;Z)z>=ihvCOM*nT6V@5TwMt4DU8i;hnJPDBLq7tNNY4!2Ht^E z1zQ)}mHWH^hq@?-H`bB{6GVQ7R0@({2PCIQl3*jSF}Rj%0nrNc_jpjBZr6JO%fs1} z%Qi-OXUL>kNG=O8EqRO{xoGlDM*xjP72r*S&=j2Iynv-2&z&MW3xVl_zz&o6Y7%=K z!paCS43Hgk!?n^3-uxb%DG8#(fT^70k{4iUPc%9g`^oePaK;y8LKbXa@55Fnhpjdi zma+(NR3;eB9jwv0;0%M9&O7lhfu&QKZR^V;aV_BV3Yd!n!Rk|po`TWJNlnIF)()&r zhCz}vFnvyhwm7203$XWO$QJA5Q>zoDWPuvcAI^HrEcFPCAqK222@CmqAu^p<{#gli z#!;TCN<6&b9?)&d!1>B(dUd=E_Ns?}0c5h<%<7(CI^#5Y?jAzxB^g?-Znrdr`YJa7 z+%h+%oYa;-n4c>N1J@o7aqcoiQxNp|=P;Ul23*}+Na{u~6-gM3KPEH>%MyGxU(Js4 z*Wrb)V%I(vrlBbJJl>?ALd~^ZV2K$8k$_@1kmV0L_ad4?e6{}p+j(v|?l<9j_Vt*tPdX$%bwqdsa693`;;G4ZKBSR&HPeL?m> zZ3$>8&yKlq{R$Hr8X^S+U68V)0$lxZN5naWKg`ek@H=iB+9G8_W2kT1mVm9)ee0l- jOq_McCe`RRyU+gs*;)rnB`lAt00000NkvXXu0mjfi8g(R literal 0 HcmV?d00001 diff --git a/www/img/icons/lightbulb_off.png b/www/img/icons/lightbulb_off.png new file mode 100755 index 0000000000000000000000000000000000000000..e95b8c5b1244a41c9dfacd733ec652a532052a45 GIT binary patch literal 700 zcmV;t0z>_YP)!y2hX0`01t+}>V>!L2Ii?(iJ%bC$d(ON6}*wnOwG9V2N zOG`{7!B5mwL_|_S2m}#C`CdG|@7W+M+U(-lIXipb-}9Vv-Vy*Mg_?2)&x|dud>nH6 z+Pg4Y7{H$F@$4DL`b~nbIs5knvB+k zHj8ub763Kx9CrFf76K8`6xv9LChyt?+yu)3H}{cgBtWFDjV( zT46G1p#RVaN{MFkER1%KNN}rd=ywA89=YD?5^*~T(5|_U4sv3(jyQy?qF#!I-YIcK zeuGD!Ck%N2HSJIh+U=tYeo@e&trgAm(x7tzP$_D_zeF>F>u*g-I^VNp4(M<9KQ~%~ z3}FWb=nBN{ra3RFTFeCC z!$l`CCu*vADm$NUP}Jde?Il#nFW_p845!NWW$Et^{&SQIRV}^fRyMzZQmIB=eG~3I zc!HA^Wx-;#MFG+)=LYmWJqQGXuvo_MLh%Zf$0hUI2Iy7tvy~@~#>&eNWlKvX*<(i} i@%N3@m$wc0AN>MB3Mf9{XhoL*00003kp_oQM4NsQ6$aEKj6mx0hg})10sT;E2V;K zUHNY7qG&TIJ`gc&M*EmdrgP_>>zSLTO=}7j2M*`nnfbo+_|8cvrSLzG(R^{I&fHg| z3Nfi70*Jk=pS3m4lD_qhO!oanz~FpWe?InrjDM6H7D@P(w+NOTuL0gfPQ>)8EiKPO>RV|@%G(EApK7|ni6$Or7s}#zN5D2fFuoW z?SUp(cysDe%D^FVRe!-fK+o2zXp zH&*H~_``&05AX{CqjQ9Pq)Pw`p&~+e-<5=lgjH9A;4MsYR*p|Xp3o{VtL6Q8vD&1u z_TBwgt>E(`Zp(h8_8f=r&cr~-uy!|BC|zGKq17aQeR}wL=f1PUhPjus5Lo&7j={xc zCLhQZ=E~bn;<}`gh7Bu?>ih@P+*yw5-^u2k8!el-HG?lt4o$V&*`tbh^4#JtCOgRB z@^-thiGaZ!P|20J4^o7;v)78_|FldDe9Z$i&;9^|y&bKi-n=y{JsccrzVF2T076QP UWao5~B>(^b07*qoM6N<$g7%3ha{vGU literal 0 HcmV?d00001 diff --git a/www/img/icons/lightning_add.png b/www/img/icons/lightning_add.png new file mode 100755 index 0000000000000000000000000000000000000000..dac3c9050cd1ec973e93370f917bca2f06fe420c GIT binary patch literal 746 zcmVR5;6} zQr}BcVHoxg@IIoOz{C_FkX>Oj)x$T^-or(4Io9&zA%s>3`~3neJ;|LkE5gf`w#IA;av{V4EB^<#! zB9FzGXNbCPfwSa+H6BHf#)#PK5HOXKbU9p~WGQh8yucGQ8oav^+(a%yW7!A{W{T3i-_H?PT9GgX0%t6b6(YvG zq>c)N#`6#y$-xRaAD($6fPXtRdwEB98b8;yhqu2^Q3`7 zkmJqYbtXWB*0u8ty9G#BGaV zK{OtC+@mjqTUP*k$1cC^?T#%4_tMd8d4-LuXQEjk*aS{?bW1STnFeyYZv8&<#_`)JidW z8<_=K;UmF(%&0xoDfK!!&HLVSPXE0+I8C$bz{h{ifA9DGuX7|J1pa3!=?87N=Dy(K zqA4mk2RK=_zPFItGyc7}Zm8rR0V20<^R}86VCIi(69z+c`4i%6zHo~Cm%#GiiJPjc z+y)A)Yn>3f0j}#1Nga0gImB1TO)?|0D?O-fGdgc~Za)YXov@+_eI0i986?AVh^_j- z8L!OjfhDl?@%VXrjz@*0f2t}U)ON1Ic^&`_+1t|JGN}q@kg0WGv z0h_~vSa8zJ;Hsx#nZvs##F&JRXNybQYTLfuOD@Qxo7; zb1kfuU+@D zT1Z*wnCp24V^Ky$O(PuMeTa>|#FuxkSa4#z&6ce(lts1Ta3iub3eDezK;P%Jaw0pY zdm(kSAZMl%r6q;3kVKo3N&eckf7t0NLpU&is5Z4iVtWzg0p|`cP=96f4cyoXnMKzs{AvK_${3I2JB+KxN0Ufu@$4=bzE&*^yIyyx1BT6wnTq{7MmcwQ@C bH~oJAm=C4+@afe?00000NkvXXu0mjf4;oKi literal 0 HcmV?d00001 diff --git a/www/img/icons/lightning_go.png b/www/img/icons/lightning_go.png new file mode 100755 index 0000000000000000000000000000000000000000..29039e6a8b40f6ed99cae87f21ea8bf7650f265b GIT binary patch literal 739 zcmV<90v!E`P)ZgH#N0snj1RZ=5O!&o^!gea_a6n@WA=tJm=FUBKRM1W*hOrV~>U9f`~wv z0Tu|Y=)%0J6Hoe^LggC>gr#M3MGJ%lAchdF!VuE253mxEF{r-t40G)#`jbf6HD_`WwU$M6V#vcM2*Q#qvS~OkA~o z2X+9Mdw=9?o+sdf%>_z*h8O~qfunFgSf^kugh83b=D^9J(VPUr{K(}ELQD!`%%7PJ z?Ct=T=ZB$^(QAR`p;x)CV4LkdROfK{`n>)VP_cHf(h#k|mIYVoX~ZK>M2OYH#R7NA zC|vQRGY(=1aUytrq|_-S?Jn~~ebu-#6>{G$ z;Iu>2K>%gc%R!i`>EriVc(@Y%d9-x~vXMRtlG+efgGAvu^>|a(&{& zi#?t96Q26xH5Wm`ASN&bGl?jQ3$~$m>`Ow7tFbhel@i4YmQkqm)z}W~Y{bXOcjySeo>2x3)2;HwxvuqoCi6>( zE1z8&OJ>Jv@7Yr}`zB9kxMNB&8m3!icqK{XA4Z;5)n(h+sJMkx;HE>i-atjR|2L6A V!PJ$`dXYaZs9=SbAto%g@>T~?_bH&lTUn@`uo|1bXE{eSR(AO)ESb=V4`uk}mK|39Px&03WLbv~pzk+s7D@lK^ zn+aB+sp)&Y_x-B3>;6ywU--WQNUr<8>TU0P-|L#1U&;A)67w(+> pDf@fM7q9#F25QXo3rUI;002ro52U44e~JJA002ovPDHLkV1l;_q@Mr) literal 0 HcmV?d00001 diff --git a/www/img/icons/link_add.png b/www/img/icons/link_add.png new file mode 100755 index 0000000000000000000000000000000000000000..00be352c5783c0f009db7286bb4ac86f306634db GIT binary patch literal 570 zcmV-A0>%A_P)O?!~#Vdl*A~_RMaJeHZc^62(la$ zXNk(f!J;Kx`k;bWQJvnEklKv4E*yUMoqNvtUEX^F0D`|j@Q(r{5=p1oY+msBe7DJD z5^lHq%4)R^@aW?E8gVou4QYP_h{fV|l}fb|4u?^%*HNq0P$(4O@pvv=E?2Qytv(Z1 zDwRMQ(vqhcAQFj2>~{NorBb;y7z}$#rSi>WG9eO)!0B{?dg5r7N~NwyOP=o=ta!a% zE*g!p8jYqyDwRIw^LdoZWfY4=WHK2LM>EopmORY>hGAw|mc5I|PN#3O*(?%?1Z*}N91cgL4{iEji;aEEtZ88I z%HD_Pm~b;dC=|BwEA}fCic6!>_++tII36#0y?%nn(Cp&Gi)U*JyQeW6UFQ%wFhd_= zFktBpwDhgV{lnb$$vU>rBA^N!nh-iRQgVr8yH8%}^ zZn9za?@#`2175f^8t6qZXKdU|Cq1|P4!%N`c|6eCU*|IMpHVxOJgs;lasU7T07*qo IM6N<$g1>>Oks2`oIPl8XEc) z7Z-oHdiCnNh=_=7-rnASQd3j^Pnt9-52PSJKmR|74-yB-uUN6-AxJ$)AIt?^O-)VT zCr_T74pjKb-rk;L@7}!}=gytu04X?h=n%)+wQD(m;%Y$oCm?ko^&ov<19WwDGt<-4 z-%p!1tt2QYXs4s2<1aTixBr2Gf&W1YfV4h{4-yB-gVcf4gYO zty=YV-MV%Er%#{$zp$_nY(Pat1(**K2g!rffz*TafelboQ)31?&%n#e>wZc~%9rfy z?C(JQGdw&z4x}IUyRt?v{0wJ6^R0W@A*Z8= z&I?WjSJx&^y7yBz?2M*SZ18QRLbAs(#0rsh%4F{kwbCf;j=k00000NkvXXu0mjf-HSTy literal 0 HcmV?d00001 diff --git a/www/img/icons/link_delete.png b/www/img/icons/link_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..f66e2974efabf02bc8537899e25594978da8eadf GIT binary patch literal 600 zcmV-e0;m0nP)PbXFR5;7s zQbA~vVHh@k7qp$ajUZx&gbqS_iCr|e_8-)LqL<%OF#5$(JDAmU3Z>uMWC-Hc^m(S-Bi9|X+pYImKESqKGXh#~-{uQ9t>n~cZ)~J`?O(xSR&-1X`?Ps8wINFhhwB(rt++ar#gb&GNvR^C~zm>~np74t45QQ4l*wv8+v6+o86(g*3M%S_5fp9@M!XJD7zzCD0++nw0<1$_~** zQs@V3kR!#AEgGBVrfuf78Z(%>=H@rs#?$wWE?sQUtrs46dEOr$UY?f*fc7t-{U-~m ztE=~RcXwac>-8C@(+Q16GbfYDDoN}o^903FHL8c|{bK=>$=u!4)YNY>nUG4QkVqup z_xqvMYQLz}>OedmU#GZWFbLP+Rm7eOF#TMQ@keY-*h<@J<>loU6bi+1G#bqa1Ojhk zW8S z`FuW%jg27?2*B-jL)lqDWTH0WI?f;+(O@edL_Q%ydh`mWo`?`0Y+D*N^XRl=WHdK7PZ^EItjpy} zdpsUE91h6ka@Y()WFjhT5h1M22tmxZVr8-yGmhG&kH&Ll+ef6+>AOhTWgHGCDHe-Y zdwO~Z5{0{Rrgiay^7n8%h`G!7@kxzoYu#$ZP;t7b54?Q`E>6Bt6t?mK5J?f%=i9JM zDw(#`=VJp^M~WKhVb@_%)Z2@R*Z1&kqy=lqR;0&o;IozWJ!Y&b`KuFMx9fqGS;QV( z!f@|FyuaT7zwXpR*id-;a3jFMu%@C#&gw_4uqA~^s6002ovPDHLkV1m3RKd%4) literal 0 HcmV?d00001 diff --git a/www/img/icons/link_error.png b/www/img/icons/link_error.png new file mode 100755 index 0000000000000000000000000000000000000000..ab694b1ac4d7f1b68677912cd1ec0f99018d0dcf GIT binary patch literal 698 zcmV;r0!96aP)8OAT^C6!q-hsL7qc;vnlp1n2-QX8u+%$OL$pGNEQCpFO@jD}SYymh zC~6e=WjY5HWgF#|xz8nyvQ6D!+wouYbj|`RMY{T^^4I*=!bqARrQn zz;3svtyXI^nM{^gE*6V{X_%IIY5=KJddzG#FD4R+f>x^?Q7V-`+S}XV^?G5kSm5qD zkMINS&kH(jXkcIL;VAliKD}D4-Yl2Pmw28>JRZkrG=#)cJ@TmlCLf*h zFb&f(PYocENG|I2`i0)!-j24mwr5REO%;Vg0gXn3TU{qGKh=lo@-!v_n(8oT^Dr&* z)ByE#sZ^?|o}QkC!NI|NFc^g2?}x)?!g$~$O7o9V`szkOc!KcVGnM0N)ko&30mNeQ zCfasGOH0d)PN!Qo8jVGh$yg5GQIF-4LnwW5AbNctD)}MAxn}g+51E<5Hw*OPik~~M@=5zUQfKKX zH;{>VG3Jt8-4O8hw%nMBx>3&hSF5k2PSX)&t2;>>K)yXhv`g|mV&AiST>x!wmgEGK z3p`45^bO_$YhoDHr4N{W*@x#=abR5lZ7&z=ZXl!1y@XaGv=Vu7t)7Ih>>|`ec*{=0 gckUpe%iBkP0k>nXO;Ji58vp+WKzZym|j?YHA+l_EP7bFIf1E~S2MKQq0 z$cW9y$ER!J#EJi3ym;~d?%lip4<0=Dzp=6LUUhZ#p_?~v{s4&`IdbGbNDW9WNDtfq zLqkKq;^N{DSFc`u7ZDM$&D-1iPikuF|4EZ3{jaR7{10M-#6WT@R;+jkQVY_9?1HYQ zrl#+cCr?iI_xIVNnQjsGCEAU$vcG=ad^ z*Y|pFZ}0n6t5&^Tw{G44{H3=4a~E0sPhVj2KWVPv|C;ro|5u%!_`hVe|9{s$iGP~f z8d`7z)YR0NfzCGY^76W$l9KWzJ3IS(_G0t@8_rGpzxM1Du*MaqC;XqVr{w>_<6ZwV zmb(2nZD;?j+sw#_Gk%kS{sn37+m-*nb4T|7)@^D38#X8YZ`zvvf5xHa|1k?}{;SqA z{KRQM^lZ)lD^E@Mzw|`!|Aoi8{?9ww0W>7*|MWvm|I?Ow{8y}HxGr7Ez=_j4b?z7aYu(NNH*UVw|7iys{wFPV`!8S1a8a_7ft{qJtliA`I)0(^fB9;LGeFI3 pB$Rr>${ literal 0 HcmV?d00001 diff --git a/www/img/icons/lock.png b/www/img/icons/lock.png new file mode 100755 index 0000000000000000000000000000000000000000..2ebc4f6f9663e32cad77d67ef93ab8843dfea3c0 GIT binary patch literal 749 zcmVe|tv9>?g+k#9o0pTxd@;_sq{kwlU;^VvV*?BV8P@}BoaZTQUROpWV6|-M`|^n&)=+8tHo3*<<$NU zU`%V~ZF;?hBSYsjJ6%JzV}E(D{pOLqQklliUf9um_tGl-wty`y*p?eYNW56P>X@1s zZs7KrRZKtmV7Lqj^5Fgr7_`LjhdJK@ltF&O`j7?*NUM$KvmNGz)3WjM?V$vHlPT0AFyF?kLE<#HZabCSW3-oa*6;Z zrXD`Ulwd<^2glP%1Y1Kc1Ij%DU^=ME(jKf6APNlA$Uu;J4bVilQHSWX5uJ$9Zsp4M z0%!@LvyTxz=Z6stxlichODIY+yNGt%RM;m`>H4LOKLFs9Y%b5aUN|2|{0Zw|<_~i} fmXz*V19AKYaD# zqJ;$!L?LRd}e49w&t(~$j)WaBu0@9%c*o7Cy&!r|R_?)koZzV9A^F^1ALJUm>k z>-uF))7mI1DM0aqVnS8b!JeL;<rL6_6GkUAaFSyzVmv$^|CA@kw_qu$?)4DNfMk+r%@LUhi56*+}GEa@Z5ADr7_&ySe%yVMuuAZa>R&dhFhLUY|yB)Du3cf5wWt^UJH@SAv{y6^y!r3!*jPK9NF%|U4$$flqzeSn<%3|-B_Ru=%13nc{9B6NO} zjGv)5q;nk{P3=fL9VC1WHg)*%WHN^Frs(C$?Nu9cAlhtC5?qmKw=Y&mrvUEPQAJ(WZm`O>-V zqM`fJ!CUawH1n;sC_$0Q1Dy=w9)w`Bucsq2QZiFsrP)|OXnq{;=f`lxe+O5eorcw9 z;n4gl0heH@Jqz1r69luR_=F<8gs$P_*9~|v^&IWZ`|x=BCd~BuW5H1lygsnSYr-p8LY@h*(vx=xS@d5|3BLf^$(>I_TlFFU0000F?<1APhrPm6@3t=I7^Y-uqpp zyJtoLmzlB>Ksqs;7m*vqVzEDpBBrOOsnu$T2xi7Wx^eZ$)Yx5M190O1xfOtj40m^T zZ+FfyJ3ITvdw*C&{t*#=y?1fAtG+M}yaG05rfm5;fcJi1E|+6&ZVu<%iII_!w*bwf z!ExXcaP`X2_~m>)e|zElc^exWJGdIKJ`6*u)hgcmzZ0H50KZ?@d-hhayxi>U?4(|= zKl(=EyZe9G!?{5|e##;uoc!@IDRY>3%*XAVaP8S1RF#cwiyYtln8DLegE)a1zx;fN zfRG@SCEyrn0O>ZsKpf($oExfvIsjf@fAH0Ti3be7@E7UKI)We%+5*`Em_q#%vh<3m z@d5R9vi&1i)Jy=p2Q`q0O8E(4xQ4>c{k*?3j_C$^4-8RxSte>M(%#pFnP4tT0vwoO z;wTL6AZ%R+fg(-e`9hXnA_~QRKG!msuY>6dAOtYyFcT2R;)`cg%8wxQ=x3$bXo5vl zW~QmkzKhpY#hgnda4x1wL}8$hRPF}|BewnaC)=EdrH^zLduUy1i4&-;21KBW`iM%o zOe)t7ZFxwyf_hl0&{+HzSF6(A+kv6++DU+!klAvI?A8=PYbJieumw~gYS7-OBCd(4 z#J;>w0HP*uZjQz-yvMxz(thPcB>q?;@m&Rg{{XvsrAoLsMFs!>002ovPDHLkV1mrW BXp#T` literal 0 HcmV?d00001 diff --git a/www/img/icons/lock_delete.png b/www/img/icons/lock_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..ecb50a93fd53c590b260ce9bbf88341386f7b0cf GIT binary patch literal 815 zcmV+~1JL}5P)5&PNmf`5mIF?X(>Nr_OzAky>%LC^xjHsh2Y&83|M~y#eBXD@6&Pcv9797xHKu7^ zH4LMjVgm&zeo~C-x<1g;)AOscUZ?~Jg+e>2`EEl)gWv6TLli~O8pUD}sZnrfJSVp4c1)t9s z&@>IvXmlo<%_=mv@!<2Rsi`>*OzZ+AC0Op0%M(hryId~BVlhzD(O@u`sF0fI@9*zO zBoYxtQLNhk0n~HNbQ+(>@z>xv&W_g*+xj&g%)UCq#$v6Q&p0j3$J)jrF%8Vn!SvN{fuF<+_4FOc_Bsec4HZ@aP7kF`AfJJ;^aX0+8%#Y9r#}d$mMQ>Y|L@r?0{8Z$n|?5h5=~G1^ge$$AHj+-1zLv@U!O6N`8BLUfo#6Qx24@sY;} z9O#B4_6)+{Nw{Y2L20T56WC?B48XNAlHl2@KyuX*fQsf*=h3X`cyeMGj!k~x@RikT zm9P6CnS!zcpppkB8N@x9B!G2*gN&4Il-D7-?Z}58qWZx_V)Pw(>d7uiFeJ>a0&ofT z#aB_TViqb@}g8~$BiXmB+@3yzMZ{VN7WC4D^zmAgoT`rf$ZnuMFS=o7-ne@ z=zLdKSKvPYCEIB8v)Ajb5=9ZwXcRop>!*X`I5?e7XDfBVd{17oh+bK*PKiy_4nC-jk;Xt zueW*fk~5~DKa!!CX?1tRMiZ} zo>R!oKY_5qVCh>5Qd(R|3mZo{kck&B90vmyjLAatX+UMjooz_PhLK4G;PAF0J@*J~ zzKlFu1yQha_(W5=5ir=J99ke8o=Gnas2Yy`-|!W=1KRFoY&N68Pt=E)G(Jy;nW zMVep2;f_h8ovdCaRJsd_h{VJw62TEHL?*Es&!DWP72-lKO!*oz>lKI%e1h}jHK57nhq2wufGe;=lf)bV^ltWZi);*ZOL}(uO9zQ_izDih2&1l;1BOiW3;*%(J zQ~4yykev(AC75^LfTh9&e~Z~@A=yq~k|qjJgd{16#M}AB@4vbhi=h?^Ed(L}K&wJD|>xJihJn!@Tp5O2HzLI5G*jhtFLq5|q zdpPGE6hR75tWt~{hVihwyE~5^OWFb$92{(==8@{^>O+3N9}b5D^bbwbkjZ4QM2mnf z_4f8o{{ukHKHB_LS65fh7(+UpMxjs;(;>?;!r`!8oJ=McDAy8?$4grP4)LJm?MNh2 zuj@MI=H?bvRgKcOON98Iot<3~z{IYeq{Ox}ki~4dlrZm5*%LAIDh ze^&wvPv8BKASQ`IhAmtV7%euqo82;HJ7LTmQ(G@Ncf0xg}; z3}!bgKj)#F1_A2Osb;;bqILgCmM>%|B_gF*g;{RgO- z+hE^v%Lw|aFqIy|SZeeOSxe3ofCnT5KKEmO4ItiK#(#uOKPCdB_$>BjJ`xS|T6UQF$ z^2RB!G8RXAV0&R-9DOs4-*38M$U9ZMTziF)0^Jw^yt#e>9x2Gxz6Fgs00000NkvXX Hu0mjf94>kU literal 0 HcmV?d00001 diff --git a/www/img/icons/lock_open.png b/www/img/icons/lock_open.png new file mode 100755 index 0000000000000000000000000000000000000000..a471765ff1432092e7113e56b42f2798968b443f GIT binary patch literal 727 zcmV;|0x127P)rLKlJyH=-*k3W|aiVYC~e{STzB+=%NyKm^5w z3m4+bm8cXnzG}0Gw2c^Ol0K$0_ity0#@^}dhsl97GUJu9lkxh`Okt_0|=(|h`!tol*)tahk*i! zgS8GLCq{|Gd7N1T=a4u`0gM4BU}M^~w|L$b3WtyL{rO$Q?PPfL6z$J7;&2In&vryC zqT@6`g9u_Zg@Xt1vO7RIY-D-g8eo{1!oIz%ujUZ52IBq#JOI%e5ertc^kIf}?KOA? zx9*6-2qdQcN5WDRs@&WP6I?Nxm{No*quRTbIBKa{opLb zA%3`w)e+)sGB0CNfHFvOi&e6QxioJs_E&O>(i(H5HPdeu45xa7-3Gh;%9Wh4nr0hffOdNC-?LD$p>QUytZsFT-LsVDm- zkkSuK6Kx&cjl{J`-nH0(5h`dBM1#Fu?T7^`3P5)5#Nmi=+?@y~3iOBukAMi~N&`d$ z;nBbdW?w(fN{^ns%ib@_e0kqddisx3UCQcxgClhAKEkK3ZBvskK4+6J=duqo6B*0Z z`QiTU4DIirW#!`(Ko${HDwSbi45$P5fJ;R`n&p9uvCp3Qf^#rZhr`|b(6_bjBcSYSnl@17o0 z)pF+)RYBDvVi7U3XstoS#P(n4-TRk-s+O?SZ#U-- z)uGNa_H`=zYUj&~Kt|x~lMf81CQ;)Mqo`42MrV0VSw3O~Bc64YMQmPO#FhK~#Q+g& zXE?Du&d;pTaAb>yqyOehmQ`|mY#Y(V0i&PCsjeu(8q2JJvj#Qku+h#oIx!g|#bS-c ziX%BTMcU{e0b{07G2|4MWE_{!c_(24iWf`S(m^_V9x;_3r|*R!TCfs0LU3^RChxt& zIfwTSAENUNhk1oQi}g9Zn{Y$;-|Kn4Z@$Iqxp_zk5y&5xNH2$q6FF-#i1j9?bWg>zm73!<7nwNua&|TB_w2 XJTQQHJy`Yt00000NkvXXu0mjf949vz literal 0 HcmV?d00001 diff --git a/www/img/icons/lorry_delete.png b/www/img/icons/lorry_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..66217f52624e760da3f2d580396f1c90a259cb66 GIT binary patch literal 683 zcmV;c0#yBpP)%;e;!*Jc25-JmCI%BTIqI9dck*$7$fCUN^nZ8d@iAQQ zX#k5NvAFI%c=`S=fDFO4kr~92YhWuN%V5i(G-vU_sv?jhSW?u7f;buu;{Nk@r2r6c zE{)#Zli0|a^(8y7FZ~ZLEDPa6q7fwp2D1yxI8YOWvkqATaTaV-{-Dba3fYX2 zBf*!%I#QOm2&~-%lSOWEdB$<_ofq;iz)*5Hw)PtC_Em(FaoExdw5FQ?oP#-Y{D`Uw zLb(R&&?ca>q35f9OhXM3TIwnUu_xGXn(-J(%EPua zT=d_40N{xU=U0S*6PLF>(2YuXVrtEH!W3x_%(Zl%uPOR5f^=#D8vxc;J;dUe-&U9k zOUs8ozn!3;n*~_)c42wRV0zxL0uRl0;~eeYd*#!eLm_g8C7!sOgbzQEt?#Ao=_5Tn^=QTAA5Q0H44#5pbGC^d5$hc_@ z1iISyrOiM_;pCM388t6*xtEU8Qgn%oEH_%6H*x=JA6=nL4a!wF&J5f-&}Nq@=9M-5 zw^r8Qiz`Pf!MH#qHgCJzIdX%JQv{b^P9PMW1JgJRjUo_?B(wI1%D&=a`4H_(u&JmJ z6-6%GelobqEJ4?kIK6rRadm1bWt~#gtn>xfk?j_66*nR}+l{GdFG|MElT&lkSRhfh{ zHwWz33*>J;hWMvf_->SdL`)I156nQkX{An33x#aslBIdL&W-&?&H;-740k+7^{Gox zV?%h{5rjHvC-)OjpZ0uEK1TJhYeO~GZrO`aOi8S-Y{0hdm8hxN4W}y(o(zMS!RFtg zxb^~?s}_)@eR=)oQ$FtZ```L}zFu0N?Cb3r+*vR^ms3~{9v>y&1ggBH;93+8$2dGY zyl8347?qAny3Z77t38|RIe0IBVJK^*fBipOW+}dn1u@=r?U_B@t22_CBk;hR5cKLyQ7s6|!W3KN{|4Nj Vo8&VeC8+=a002ovPDHLkV1kBFM!o<5 literal 0 HcmV?d00001 diff --git a/www/img/icons/lorry_flatbed.png b/www/img/icons/lorry_flatbed.png new file mode 100755 index 0000000000000000000000000000000000000000..8b20f55034322d068b664b01e5a99098b64f5541 GIT binary patch literal 450 zcmV;z0X_bSP)|Gy8kTQ_kj z#DMGb3pZSzo%8?PwABA6CdB+d)D`@HSCi-e&DHk**OZw2Uy`Hse_om*$jSeY-gx_e z_MV6T_g{JaUn6<}!~l@yXXjVL@uQOq|KHs|`TxzWt^cpCuYqHblMh^Z^MCK9*Z+52 zeDz-?Y!1YLcwgK9vEEkyqdm?4N4lB(4|6g2AL69@KgeG5e}Jvpe?M#G|2~$A|Fx`x z{%cwV{@1Vw_^)p6|6k3_4-p2Mnws}gQd0isE4dEz%xDk41~1Rl9;{Q|l4}F|eS8iylz4ix#b- z2uqU?YoWCXGkb`pw@3`F?Edff&CJ*0s+)=e2ZqC$#o^2uCJG@im&#&}mD7Lg^oXjK znklM+sz<~l;%3o%hlp!C(A2s2Hvv^GE!?(`5R{-sFu_a-Dg^bI3PFVz_ipa_qXQ9- znUJ1L5>znpnEDKg!^E**@p7)^wQ%M9lc1ugsEU`9U6=M>&k=DHRUiE4uG-l_WV+R*P#2>v#(a#4 zCl<$wf+|`&chd82bXFk8xfm74{Jf$};*v@J>bEvRw#S*^Ci*GOUrklQ$TRAAyBfB<)5DYUT1S3pi>G1@+YmTA8P*aS+=gAQg3k!Mn;W52KPl+|XB{bNz8ymlY4I5ZeT<8K)pAK?919}}r@hQ7XM!^$13DXAltFdl^vsIIQw z4zvI%;0AE2_6%DOtv`X7BBp3CK1~jjzo?j(AG>+<`r%inG(>-Uro&e&EOriOj#wO( z1vSx@iaqoUchf%5_Sp#y$>z`({qHxfYs#9cE341#9B3bPMnkeWyaD)cfr`dxN-aA# hWm@s2ISkIse*qhAp}qdd4(I>?002ovPDHLkV1g_sL3#iH literal 0 HcmV?d00001 diff --git a/www/img/icons/lorry_link.png b/www/img/icons/lorry_link.png new file mode 100755 index 0000000000000000000000000000000000000000..5e6663e5c4abc40cc076fe45ee627e332d8e4412 GIT binary patch literal 775 zcmV+i1Ni)jP) zss$BMK`ojTfnEp>@j@`Sskt1w&-de;({q-MqM!?3czDip&iQ>j=RHReLSQFf4R-jc z^N+418Do1nXJE{vFkqT8^lCN?Io98tycs+37l8z~gd-4wK`;)%O-M39WP-?eC7YOe zK6(6~4x|bvkhYnwY~-?*K$%HhhSl!HMB{BdxbdF0kW-Vq8s_Er-TsHFwCD*A{I^#Y zdxvZ14uNrj}_2nYw(>XAm!_-NE!qix`-tV)46rq~}2mKCowL5U{ z@n>hH1;fyA(H%#zW@+29K^FC@eOd2n_G2V@81@DQORHG~S{*QS162Y}r_A)yHqfX7 zWft4#ApwTTkx1rIB3D%cT`yOFb&a0NiI+=dB$o0>6&vAd@nSW-h$EH~6up4hvq^Yc zn(<|31Ffoto}M0?IvM{4@o|Fw1P2!!tj>XB{bw+A;VcS;0+Pvnc>U@Hx@xC!YG4=* z_4Qa;SwX#Z8gIYbuPgE@2ZO=Ia5&svEEeH*yT$q8Vdc))7`C>ygwN+wLZMIvl*wd} zPN!kF+c7#iifA;t`RghVO-)UGnwy*Z>U26yIWaps`yrptmj(w1(cRsRNF;*3zCPq~ zIVRWSo~EWIt11VHL?TYr^UL zR(^kt)XIU5j*h3jy}f(d+S<6Ps?N2wH7qPFz-qO^@At#w@zA?4HK_Ee zZ1H-%AySM|?`{HF?yH002ovPDHLk FV1k}6a9;ob literal 0 HcmV?d00001 diff --git a/www/img/icons/magifier_zoom_out.png b/www/img/icons/magifier_zoom_out.png new file mode 100755 index 0000000000000000000000000000000000000000..81f28199ac1c979f440f0586e6e0da48672e74a4 GIT binary patch literal 657 zcmV;C0&e|@P)8VI0S0!CoiyA}k0DS`b78y(oGU6a>AkUK9~n*^7|=kr7cwRFWv6%Z}9bXJxHq zv!bQ7t!|lawm;5>vpILy?iOC&HfG!Hc8BBJ-HKqfMb?WCJa0aq=l6SfssL2|4?ho1 zYF_hZS|)5^i5(2(3eSVtLjTwt+viCU4@P*+9|NQ!zmCYHkC8wnWH2cSOj5$smpmL3 zY1}4f$SympsTgoXWWvkj!KP${W<>az96Yfc0&EV^Sqav$1oSUxqGI6Xq{vddRFu7n z`2LdsHzi;=Dtr$y0$QI$*opyl-1%;k%_tFkSWDaJm;MHp-}I<6Z; z`=uSavTxAsh-+>P#z@O32VYD;@Uw_<1$Q)qo>w&5O)gAWuE2V33*Ucwqps{ny7nxp zX|aTf%a1~AQ*W?v_D-PC*yD@0=#7-ucnX}S5B~d&FdbXR-#fBe_gkP615I1CPtR;N z4-*FwcN*ZjSr5aZ75rZZR34vLukCGEW45>LLezQ{#QvpNP(bBYeXX{uZkgF|xEA`o r)y)eIsC4dIvZ!Ov;+nFL_^*5eZM*&99gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3FJNMp+(Bt!=q9U!ZZOlw$c zuAy5i+nTd|<_>NivLu&tYWf+obh7aHN%Hi45`pBR)x`tA#^U98gM4FFC6h~&)aWQw>e5Y84Gj%C?Fa5wL3#v12nvm3<6OafjJt}U((Qj zn8!nMmXr-qoCO7XcZRS8(x9RlIA>F^1(GoPldw}sc)rpQ>IL9yYf!7MN);5mno3dL zFr9-f3^@5I0h2d@QBNW#I`RB4IwvonO1T#W1?;?jrZNjp_!1ar;E|a)8g&BH^;Scq zt%uAgf}pb+yKn5ouFDnCJb}hGpY=s(m>77B`PIn4hUqw48S;@<+#YViwZYT4_>vEC z?=frJc<3Fn+HA3jXTwUklhgJ-dYkmNL^YBTW!uzZM O0000v4+f|_@RWw>5)RM`NuV&uI^xiO$D8`6BxXk0tJ?EWs<_-8>2;-) zWKcp3o`T%Jbv8DZ00H?+2@8dyT21gt$m6G*2l$?iC6Iztstut4r2wd-3P8bM5!|^x z6MJ9rp47dzLZAW(K~IDt2)_Q5!O~ibDk+Onsseb-MV?(yFmrC!xqLisbKh@i`-x=iJSj(h!<$+YCJC zMh+7C(a}Ik*keF=COGS#EATV${Oe*7f!k~yXly>8nc$8|D~`n~7tbU)p80iOW6x*> zfhd3a=HED-HQ7{p(#WSK4HSf6DS~k8V+{yoc_aZyUS8kc%l3kxbZR=z9LMhG;Wrw3 z8^CWiKHr1Xmw!h<2Y=(jgSQm?7a{$E6f%b+jDrMKM)1nw&G3%||GEwVKPFC*l;udx P00000NkvXXu0mjfxkDO? literal 0 HcmV?d00001 diff --git a/www/img/icons/map.png b/www/img/icons/map.png new file mode 100755 index 0000000000000000000000000000000000000000..f90ef25ec7f1cb0fdae38d9fe2d9edeee9928ef1 GIT binary patch literal 804 zcmV+<1Ka$GP)mbpQb1@7I~O+ue5CWtZi#AZox@gcwb{Xkx^Rf;Ty8yn6DWhJV4kC*wg94<7Vt zlteKm5+jKLV^qM1yt2HO4YZw^&a^Wfzb_m+@y40e_0^+M6ajz$03Zl}fU=sqfA9W} z@#^~O(a%3QB{YI^J_A4y)M^1_vjjn1H`Mc5t@6>y50A!C6seTL>`UqQ7p$DgY@K|> zQm^as;HM{#Qwj<3}(>R-AM4&+cd0t49%y2X`UaCBJg8YmB)K#uA{Z>9n zOp8>WCg#&r06`o8oz6gaIn`fY2FR)ssCr@3rc|5f%`bIJO$zbt__PK3gH51Sff`H}0ZWac9&q~*( zO@qNscV0VSU%X#sYO9)Qx4M=(eR(m}UFhondELHSnO2hr&mMO3 zv6gmw!P2y#u0c!?LPO88NyxOTj>XWm>*77F&55fo9Z?)iynObdfA;SdwVRl$W~G3* zEGt!2+1T-%ja32&!XdoMS_mM#IQK#{6D_nvjYu`GlvO3XdE)qYJJ;7%4Eq2Gf?M=uT9%H^ z8mm>^ym`Tm?6?O@iCV4h@k*i;m#t2+H|C_oG_K0ZUyH!)t9 zyt~8Xrz-|8Z%~=;n(eJ9SD&=DQc@l%Yqok=B@hunr_+_CEy-%4IhOnPSvp_*rN}#? z-f5k7s@KhQvedAb2_T3AV03gswVoNT*FpKMEk-{$FV3H`v2jgjv~5%Mipt26Ui+?6 z^tOOF0GdfAO}ohay70)oeq{YKx#v#Yv~V!Xh2@6AiwZM}BW3p*+TVj&2qPds6D z&~>@ha<^ADH96(czF^dCwVE49N@+h}!!>jVp_u}(=ED!IB0$PL2Qr=e?sTvy{x27_t zx~6K&d}8zc1xwkAa;SP^`+MNXzT=*r*{LuT5rhz_sjG&XNnj=^34AL7flM9_nKD# O0000rXG#NL7kjUIN;Xf(FQ!U7F;#?Ic#SV*+6vCtSr zB4QNKU_yitIYM&0)PsZLfW4iWo!Q;F@%zI3(O1sQ%*`CER;vIY000OAAYfRmd-&kt zFVW20%)!q;IU!Vn;rajoK~O3MkPc!5Wm!?Kmr8~AkH2>?s#dECLt*fhlksHmlF(cJx=(n%j-lt7;=P-L#K20u=(tvRo3UI%^%>@xtT1WMAG?7MV)_ zq^uX~=ZP$dt@jfF1W^Dq8k3r>M7z}jwKsNZ96K*6p0Z`;s;tqowRuH-WJSMsTeb40 zfG7aEokSexNL*Z6_RpYVWchn(3)&%ZGwPCx`Bwy=Sy@-~QJ>P~Y{O-j$y$oIhjtlcoxkW$DjUSh9EwYSUC5sZBq?VwWhl=bbF<0 zadMyV>e0hLZkU^Wxmt@51V8`)JfGaM{q98*St1@Cv)JD2>~Pbm{{g6=P22q_L-GIs N002ovPDHLkV1gmUl12ak literal 0 HcmV?d00001 diff --git a/www/img/icons/map_edit.png b/www/img/icons/map_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..93d4d7e5ff6c719515b90f39169103a252592951 GIT binary patch literal 876 zcmV-y1C#uTP)<~|mI`fywX|v|Ht`@Blg5Km<3)}{Z-f&EHT($e=$1y4^7g5>CQYRjDG3sv zr}oVZU6(`3r}omBbGUo=I&-x%+%Nm&axM=yeUxcYsYSeTL}Qr>gB`xVi9c#n2?D}P zw+VtZf*?Q|Gc@W|>S2{;J)m9>NTM1dEkH1ZZJt*I9kc6XH@x!;nb&$K_3b7bFHld0 z$>np{%D}X2f-pj)0SG4l5PaV!2&z!Z5_KgwpUuN_Ep&L5xN(@UYEW!m;Xvgg%6XdF zg)8iLJ22Vdc_q*>dC$c^F-F(>n= zXp5o-wID=9Q|(MqPe62T5&e3BeEkf=eZx5YhuB(}!L*Y zZPu|tvTt5PRTZPXLwG|k(pdWxdzbLX>>ZMp;*+@;L)cdJYXm_9zf$9;)d!qkSmNfv zEwZMIw{ME*{s)Nl2+PUQ5iVm-Oi_sy1|kUH=6j(d&uo~m+_WfGA2D`l9Pja0iB{jk zuwt5(LCW7vbI&MZ6bEQC`J2|7>6ImBR`1|AIjnp0j5vdoo}8lj;6s$HiTnZ9zrVqc z`$j2ub}(gUXfp)}lN#kTCSyC;iz|$0M@U*F)^5E^SIH*Y+QY{6pSkhW1lsGOv)KTx zX){0&G05TKNDga$nX$vi$*f%C_X|HT`}Gz#zq*RMxEsUl#KywLB8?LSFq0%DO;h^2 z$LTM?=O3M;`P-Ka9e5tUyvfR~dG?t&}89kynmRT`ZP*UQ(6` z2$k6{7#}S1?C2onmN30uAk-P!gdGA&l2U$HzVsJ$Njv@DAMu|600000;GBGqrEGw;Tan07PX6DVCH*elYzhBsU=<(Atb2GcE)hYl8004pj2*~on z?Z0oIsm;vI?0)<8cZ5oi6(axyL8%l#Jcc44urK8oFbZfPvTC3~!6G!%z>b0s0K&P{+vu#W_io~a`h@zXK zC=!O33<^$5v$zuQxtBw2-c%}R$1S$lOBt!iu*6DWiCUXC7B{^|j znI|ggXHNdO-trP-k0nqF8MbQv_-{1JlsVf(hkEGJ?evxLG4bxj~o4;Q#>3iv`_q_Jh zegQQh2$-Cj*Ug50h+}`Gby<;mbo&u`S;&iAp|sptvSZT&qIBTd5BAs*o>qghES+Ea z-K85pYc^YwB#~sPyeurP{%TZYvSMVEk93DUJ2yWl8pX~I-c<{Tv%ZylWPGe?qS2NN zQ%RP{^2{BR3$h}YmxY_1KTS91U0nLc<>f2x?H*7g2%(~7(jdgf^M*B{Db5nd&%Gio zQc0G&dv?2BcRl99;@8eEp7ZL#6Fxrnsalrh@;tY3dZ&#u1Q6`n@+1f$fWyb`6Dkdt zmoIzc@P{@|Ey(gugnfse_OahVzBqrvaduZl%W_EUGX2~lqZrjZY@1Ab7<46l2Np>VpckHIA{JYE2^no-@h1mtO>BKaj zm`_vFX{stRAuJHY0Wch{(UkVSzrsg<>b|vV{ooUp${VKDG5t|rCu)h?9cf+&VTPau z1WA%e(}~CHwcUM{>DSk(7n=OMa+b;`nR1q!6`A=g7eWJKfZ=eRrZgH3B=0?A-zPh& zmk;W$&K#NVX!j1=+l{n4ZIgVCT>>!y6va%I=0a#pmTS>*reFN+r<12mn}y>3Rh>8% zRf+D>svt%X2f)(ONNYMIlWy-6$w#rLqpHMFW~Z zF)cKmF^B{5DzjCWx}BcorJ-Ur*W1&RB^N#1JZLl?D@Ec~@ZjH4oZWHv_sbwA2%)8K zU>b7Wddc3?a;~zhsFdD zgkyM>qalEm$--vTa`)1X?Q6d|a{PJE-u*^+^UNFHuC1@W7PVsp0T2KH5CEP0fs-q> bqL}#~;%Pj^C=){W00000NkvXXu0mjfH4Ss< literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_bronze_1.png b/www/img/icons/medal_bronze_1.png new file mode 100755 index 0000000000000000000000000000000000000000..5f8a6d65d5b04eb7c08704bc3e13e4aa58d8236f GIT binary patch literal 640 zcmV-`0)PF9P)`P1v}r1H+ja=6UDkoHNeMI34Nf6XW_#WMcyp!BRqF zM29h3TEaejqW$r`J7sE&j8Vu&Kou$XB3Ou{$X^0cFcH*yRHPIVIa}8z2vp7qgot?$ zb8{r`QSV9KlZpa2Kab`EEQJ3!2yxXN?yWR#^=aL$L#;YIcSv3kKJSu3T>Ym&{r>&| zQt8JV4=?!oEGbnmDR7dL4fbhP-uB(SbTG=e(<<1TJGa5T3k%O@d}yHgFQhoZVu48j zSEbQ(OnrUXCEA1R+3xoF93<(;wMR2vTBN*33MFVUphb@Kev%*cC}x*u^f-0Kl4vT6 zv3&&{9G9R3kcdW)NkHQO`F+ShrogAg@f@g4t5vaBpc1eYQ7PdRh9bToc|nt#o=`?B zn@HlB^|P6VQ394crW5+W)Q(*2gQoM=#g}=A9#9Yuk)v@3DQ?z!d$?MLrf|-B`EsI? zwP^YuNMLi^!9dq)JFmN$%c*2dP{mUDCorShYSU)G0+SKqfs a@BaZ*f3CHDs;P1S0000gn_Py*^3f)*N7*a%wSf-Fz>>todNGT#B=>)M`EK;mZ{((hAK@ludS}2Hw zNSYLa2#Jj$$oi4RO*U`e%>A->o4D&H7Y>(U?m2TfbDf#txbDBZYd5Z3$5v+pVhT|i zK*7qmdZB^mYcKHT;d^(?i7`}647Ge%RKTi({tqGWFy%jiz%T$^ys}?={qOs|c<%NjP0!#+A{b|IoMO7ai(5OddrPx!Z`UzyvIl#oj^prg?wT`16pfYNmeVzk(01B`N2%T{ULhEt& z3tXH)C5%|lUlv43872P%9I!s_psy?O*0XlvQbb7!P=yJ>hyXJb%2gDr3F1#1ZPRFF zY!3h+JifdHMk~xO*0YI=5LTE^0ZK7(w2OFaqpj?g&#msPo+b%707*qoM6N<$g0NH=B>(^b literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_bronze_3.png b/www/img/icons/medal_bronze_3.png new file mode 100755 index 0000000000000000000000000000000000000000..ed3f43eb02ed2a663bc7e7d90ee1db42d66809b8 GIT binary patch literal 646 zcmV;10(t$3P)tEd$*D0XNa#H~{u@&`DHPzMJWk%F7xR2(`~hfa=lsOTVF#lJyH zOHm36RcKx8VuTuuO>XYJ-}&K?wj?Ha;Bc1jdC$xHoygreuA9%^`~6#2+5FzX#8EX= z4O2tJs7;?|Wo?^}D|ez}rbthjDrSy^BT%|irQ0HoiuNM?0w>#ocA*~lMDQPhLZ1Us z+DYKj=`tbLzP@s%LMzEo{jUREI{5No@!o|^E|&KgwKf2WSNOpcuXkoJDK7OgQE!O8 zR+~?>{5-yX_f#lNqFTTuC6a`=vroSJwlz-jxcKnX>VSa1xiJgTyL{$JHOtFb@*7Fp zct~-{AsV4P8Zox}qE7JJ@uQus{tQ$W?e}5KIouh%f;#G_z_YrsPQcSb7Xl*eO=pEv4mh2^1#ls~;X zkFb=_%vICUWmF8$5(o*U_CCe!jk-y+cy@Jfb*KP9x-dO!Embb5TU#BEo3hLTZ;4)MjYmq6dlVGHB7JO-msN z%Iqno2vOD`2re>_p`5{)x!%`#bpc5{(Fd&5_<9L0}=-hfsKtp zG6u;x1f>wAZ1(m-zIl&|@mB0pZ&ET3uh0fe{L0VfOY)AF@|54!6J0vqV7&&esb|S34l$G`gnC-%!Nr9`L zT?xYH7MH+67VWrH>4lrXc}QJBoz85S&LX0r=N9SaOWO&Eo`QUq=u+jVf9!Uh=SP&> zRWNr=`Qj=PC7YBX5+x{~f1C!DeddkS^i~fzOR~1hbsmd>+c_n*2$a-^aBZ;M3hZnS zZqvm&QQ*lPCQ8A2XvKaAr%(jyQ<)ka^@3VZ2P~g~!^#1V_w4jQ$heSYfn=cxxSo3v z%>82i?By`CoJKz0QB$~oI=^aVhhIMUcCTcjEdE4{Zb;t+*#NloYy;?GnP8hj4 z5W`d){ub#v{#Yw8NhQv=UkloAoq2+my+?EzEh=!tkn!bd+9WnYW>hH=fe-o(K#e)C z3`{LgVrZ;CAQ*bxkA>f}x^x2q(4o$OSW_gizPutkB}q|t_6^+V3@d4#S6cP=u>S~Dhet_ drXDUQ{{mj?xUREc-`xNJ002ovPDHLkV1i_JQQZIl literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_bronze_delete.png b/www/img/icons/medal_bronze_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..d32aed727a274c60dbba1060637b25791ddd2ae3 GIT binary patch literal 730 zcmV<00ww*4P)W2cRU zi9*0MK@d@5KvX0|iTTn?&iCHko!zl`lS`uLz%sK7zlYxpJ4RIj2$wD@yZ0hPL#PNE z0?~WoQZ5}ojy@k|-HT_2RZ(0nR*Q6%FpA`N5!8A9j1_%2RrG=1I2`(3^cf>43sGA8f6YGn)P#lOSdW(u9`Z}^OM_pRMhMvD?5Osaj1oatF92z`Pa&d5Zu6`P$ z`eK}HdTL|nElvP;dk5vt(hxQOMB*FP8z(rbpT~((W8b+eGiHu|c{08+mxqNb?)bbN~PV M07*qoM6N<$f>3)(#Q*>R literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_gold_1.png b/www/img/icons/medal_gold_1.png new file mode 100755 index 0000000000000000000000000000000000000000..87584dc95898d855855de134f117edbbe77c81ea GIT binary patch literal 629 zcmV-*0*d{KP)Z>d?i4qd16vfQzD=mMU~8 zN|%D0Lq)_&gV<4&f zpuMp&KaagxW8&>f()W}Zs$r8288yc4I!3Gr!gBs2b8q(cLfTTC=<7Ux4zR z_uJ;uHfQc0WBfcuN~$?YXrX%_DaIbQb-`^9dy@Vy#CNA=FkUkKsAi?(Xlz3KjY)=y zgCqe7v^VPwDY#O*W*ht7z$DZ;eXnNa6IlEOl4Ig}%259u(~PlmH)~;!`p6YD7PF;^ zOIX~))b-?ha+r3|@RM}>Bq3vVYH1nM9Mt#Z1`-F-1`EW3>L@@IEP@t;=>5}W zkO=d{;*dVjC`}73%))`_ZU8}%qC?1Ojsk*Pm)#ALq_jW2^hOJ$=~42XuXI|hj{wB6 z+}^z3P`3-EG0Y++y(B0}d6MW7K0SZc$TOBl`T$_(adJZfOOuzc*DBSskQf#-q-c?S z+hXhK>qefjIQPt+90~yV{2-YrTGXRsRwC8l!F6c5jCB!~=U#Lhs9%2ozn-rxJP9Nk P00000NkvXXu0mjf!(1iX literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_gold_2.png b/www/img/icons/medal_gold_2.png new file mode 100755 index 0000000000000000000000000000000000000000..fa3a15dd67285af0074b69bb46f3df2860ee7dfc GIT binary patch literal 641 zcmV-{0)G98P)W=215y}4!=PhViQzKob6 zDm^JtBWDj)c(U-6#XIkkeoc;{h#{iZJuE6j)m|RR`#4;(3*aMW5JZL`U8!n!uM>6v zGQ*4DBYDQiX9@&~cnNq31c~IcMT#~~@ZtXsf{%0c_4l(^^Pee&bqeNCHJX~`mmcQr zCnfke_g}!XV;?qJ@nf?%b$gt#Qy3W%Z8I4fjBkJ8VEsY!@_Dy0T$A*>5SNckV=Qpu zVcD{iXskp0i%E)!gCqe7G*_!N@mwljv6UTvU=pevy<4{20WAIjX=CDgO3}_wOj8Oc zZ0^+cLNBD_!gl}eH0Mfl5DMzB-x$zrI#&` z$rNdCey7!7X#^mS`R3}qnz}8>7BGvL^qin1xe206`1D6^WEW2V9G~OIZ?Oe&$to bfco(d?EI=iCbwn$00000NkvXXu0mjfNkJU) literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_gold_3.png b/www/img/icons/medal_gold_3.png new file mode 100755 index 0000000000000000000000000000000000000000..ef1b08b9203d3f24f734288042fe49c9a761330b GIT binary patch literal 634 zcmV-=0)_pFP)MJBXWuWa>}^3xbUnyTHuo)Wv)6?Z%}^KK!Vm-Vjkl z6cxpLr95$jg=edLTDTf?JUMzwMNl=oYa4y5i*Lz$L%j4_`T@JsoU}|m=3U?(K&CH& z7s96Fcwq>aN}t9L4bx~Qi2OH!%>DVcJbP{89Y+hF$p>{*jnIu!b!U0{_ODm z!0%uZViH3TfH)efm8zs%E?u{kz8#pj3gdT6mOG63EszM4xUCRPeq$PvKYgp@wy6y4 zKz&-yj-JE(Hl}e~Nn0_dP1OA*Gja?UQXaU1suV4g!!!a-+KRi97^DH_@F~SXfGC&; zO}o)M)1{jTOYrGFf1qA!=IWTaJ<;PX1Vz#&E}}LFaPg9Ct`G#-{`k`F=E!7*i8g-H ztg|!#keK<#>iw$5n~=?8<}qm}K?!mNd>rug<(q00GQaO5Z9EBP#4%Smf3tL;I01oS zK19+w;jeYppTDg}A+ysjY;j)z!1o8iR9dIvW6I(wx&-1TwK!x+g!$=Ltq1DVKeyPk U$*;Edh5!Hn07*qoM6N<$g5h`|PXGV_ literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_gold_add.png b/www/img/icons/medal_gold_add.png new file mode 100755 index 0000000000000000000000000000000000000000..dcade0d8db1e2f08bea2b150c3a6cfe46f694726 GIT binary patch literal 733 zcmV<30wVp1P)D>BNLRMw2ieX^Xozu6uvH&7^%eKL znC@8!5S)MYO_U$9;ldIcHzWA?u7;;exbjDm+^x`csBd!to`_%uTlOK`rL{LNnI@bm zf~g=jLaYMM1FH#N7shSE@%#xH{^t$E>H=#o=OtK%nBQP)h*fn(xOf6_5xGsL^14i6 zUIb^7w#?$4h$$mZ)fLyJ5LdEUM)zrEP>k&f4ggpBa z@$x&AY7v!csq#B4UVqR%axHaW9f$#!{Ix!PyHz|ME%V+qa_Hb*TADZU?8DuqL+@W+ z-G64yGCz%Ai=s=2=sDI?-Tzc%_m*8)-?D4<5v-@#zvBSF=@g*VfSnq~^D^LKa4MBe z`$Tz?thaF^ykuG$HZ^8u`)Cw$#K?$i`ya)=nj)}7#}gp+(28>FZIBmg~+ zPcl037C`v`&7CrABD$s?UK~#*-r;4M@E5h<=hi}IB}dmUXXx!94FueK*GGdFF!1ID zK(9CbodG`I@b)Do3P#ap4b3_RRi&sR25zocS@{_R$AP6l1?U^PJy!Sw9~HhWDlkR3 P00000NkvXXu0mjf{{l-G literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_gold_delete.png b/www/img/icons/medal_gold_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..84b06d5bfdeebc87c663962937c9ea0e8a956bb2 GIT binary patch literal 724 zcmV;_0xSKAP)HY|*JfU$_R_$b0#TLxJ>S10}f2<8B> zL81s68gNmBk0M+Y;j~6&GWcQ%iR1q`h|Lx9uiKM{ev&*o4mATEgXcI|+6M zaRtO_PzszO-`_UuVh*QI$jd+8K%8l#{&HFpD-rt(TnTZyq5?h|MSOwOmeXmIqwTL1 zyp5Z}CA$!tL%gmisz@Wgh&NLNwQDg2n*IiOR~G~c#FxNF73q07&1mm?M*AL8{E=Am zF`M`f+&<7{JIes)K`i)q-umoxry1@0K=HF-_pwVXYTQBTO;`Qf=h>^-{mDX5UcpU@ znMTAcuwK@{vwkxBj*$A)jkTs`7I76Pc*0eSDZY9H9qWl&6;rK>+{hR%lp!_y z8-Lzar<~!+vOOo$$-2#;1hEBNJk7wPUJ9RPs9)_!1cS_sS-y^h&S+_$0|0!vq4vhp zv{_A)v(%XgbdgD2prTM)VvGS_-qj_8gF|p19)P(nFwXL0DoD6AFDg=h=3|k~IRy4M=>;3cvvoB9REhVzD5)-R{V; ztdmly^tR#wN-bwHncQqP1H&-D!yBL=0vbct_24|8&*xB0dBa2m6-W(rcFFayI|V0O zEEbSVCIJ-`HaxIxJ569-41x#Zcj!lY8^JGF%`Wo1U#H_L;37nKHp1{6euL@ zHi90_Pfqi$V$fMU9*6OGOlo@@1UOf%-|vqUMS(;jvEl)BCi7%jhEAt5LW0`HJD}BS zwJuOeRnxSbs;WP)GgLE~OrYIvkMOoCjYi{kD*>%~y{;ii8M_qdX2@JDnqu@YYRzWz bO~ii#xW2)!uhIgp00000NkvXXu0mjf1kCtz literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_silver_2.png b/www/img/icons/medal_silver_2.png new file mode 100755 index 0000000000000000000000000000000000000000..2e0fe75c904b499fbe379a709f324babc75d1aa9 GIT binary patch literal 600 zcmV-e0;m0nP)PbXFR5;6Z zQax)TQ53y1k)0Vo8W9xy1?kpenZ_pNZnOCdDS}O!KnerFBCud(uPZEUtA%Bng%uLr3#se)N9A-Q{mh)+9g~oN*B0mQ00Qh~4);e4nc&Zv^m=46z_kM79tp7M*R_ zo`9|{7z!AW1VcAbgo7Wj2sAg2EU>~fa@hM0P~i6O*r}alzQTvl1dZvy1OqQv!a~g9 z&(m|nc~{`(tGm0gnqy8Y&M(IN~Q9!mjPp}n#<)1^Z6V+&w~JiB#;1}f$O@_eyLO{pqpwe zL?o5T4RuB*uiXh!Y`I)QDwP6sP>yBb`+kDl1Kga+ zK;_+~eL2@OEpkZQLjnW3KP4@@s-Qi~vS2cqklR5_0Pj^F4u_6unvhH;_cEZ)6kZ~c zfNr=_g-)mA;NPk>o6YYB1!y!H4I4$O*riN= mhQh_78DfB_w_2?SmH!XLe!dG_KsR0h0000Ibg? literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_silver_3.png b/www/img/icons/medal_silver_3.png new file mode 100755 index 0000000000000000000000000000000000000000..e385b5467346b43eb436ef98bd9d4ee41d9fdb79 GIT binary patch literal 597 zcmV-b0;>IqP)tuPEh$A>RJ!n2QW;OG4eBo9Fd zsUQ)YODG>7!sWMLFt|LmbWIYBkV1fzA#nCs$TwfXH{e9dg;^3M*mh%LQ)Cox37-%o zA`0-(^BElFY+!2uAzNZvP3EJe%Kd(M`n$s6NbZ~!#Te$6bi+~VgbwLQV|dm zi3HfTt{Zgq^L^aiziI`L- zHPjiEY`YUQndf#Uznt%%8?*KPv+E6{a zmao^AWhsS}yNjSt^OMuMs|ngmr_(T*Oh|1%Mu2nG2ZO;ll}bS-lZkjhoyojpG6~&o zcZ>w}*gK$Tx7+8aq~4dX$*UcXbgFbNF+Y)(tt)yc6D_{WLbu$X|U)87#IOtLseCN zAB)8zG);1!h?Ep(ld#SvQ@z=p!6mC!s|W^zpb6spR>)?vR!>ilSS%KK5n42G&-tG@ zd@p{1tW}_B+e$?(KY96h=@A#PLC@nRw|X~TTF;^+e#1!o0*-bb$4q`Yw6Hw)aCqX# zA-)2QRo?lfo4dQ?GymzwJDfW)2urju7`*~ZFfe@PB1^yN63nyxnbL08R+QvlXcr`0 zJ$Z{axpV0SjvYSBLZ8@t=c&cT#Z8~jhd>~(O9Md=AgdMRH?o*YkMnO+ug9^r^_7=; zCMPE`Ffg#5%jM+N)z$OSXjJOx=zt_iTy?+SkBa<LMIcKp14eyUq)Kd1$B(lLIj2IeBs$f@-Hvy&}y1Tc%uLS002ov JPDHLkV1o5RML+-m literal 0 HcmV?d00001 diff --git a/www/img/icons/medal_silver_delete.png b/www/img/icons/medal_silver_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..06cab467904647ac915ed1d80286709b793d616b GIT binary patch literal 714 zcmV;*0yX`KP)3-Bct`_@l$aK(2lbLuE;;m2Z0V_pBK-p-7ZLPg4qBv$^pvA|$i<6S zgP_nvvC$e3TM-XI4=sYRG{i*7kIioO$M|O5P1BY-@OU$`?|tuk-2$LiUKA+FAQmM43>-u6ko&In@1EQJ{VXr_*un z6NyBW*kq1~NI@yVL{v6~>TY#m9$2^AMIaCWF-RS0p-vdeUGzO)9_85NAF7^R(V&vUz{E7IxP^b z=HN-Yy?gY9?`=HAnVCyaw%5U)EWy9?43qJ3nKOQK#0A)({uhPP&g>5{ks389(J5fz z*8cqOoq}w$Ny(k_>gML=o}wu5`~3$rV2pu>!cafI04Pbn&G4J7RjUgvc9};#m&;uv zCM(HgG8zm9|GiF^MdRgTocOke)8q6{NL94!Ccf8X%h34p06?s4Hk%}n42hZ|3kh+l wr6$?N+@I2}QvbRjTP#kMe^SkKmx=vV@a|w4d?1G z{A&|1yzGF~TZ8KHTl_r*T3@s<=A;pUk6t|eFbv0%74?%+OlCdki0e@06yy3x1%Foo zZA8IP3kLWJ+!ohD8&$%-Xu;s38IP9-L1$fP3CnTSerf$50rgDty6Lr^*!3d)Z5bO| z-!b-f1e)3AZ8+nCGAzU8!LrRAB^VQ3$5hYdKYA07xLVs{S`MaSy~ut|Ll;xQn;C~< zTE=EZ#ZWme+JuKV0b`<5t|FFt=DRug$%=#6R&beFSRGVu!=XktGv>d{p(*$PrItbs zC%{@V&UayoG-zyPh^uwrJq0zft&6HKksgOU)PPF&4Gy0B97SX;1Yuth&KvTM@H8_D zI|j&k17#5C^Q5`mXHM}n5yer~ z1v@0vf}XSMShQ`!KZ;`Qm@#H#oe^ U8%xtYa{vGU07*qoM6N<$f()ing#Z8m literal 0 HcmV?d00001 diff --git a/www/img/icons/money_add.png b/www/img/icons/money_add.png new file mode 100755 index 0000000000000000000000000000000000000000..588fa9d0783d81acbe040f068e8aae43809ba3ed GIT binary patch literal 784 zcmV+r1MmEaP);YQ5ff;UfFtdJ+!s8dg;Nft@+ebwU*P=rQI}aqD!2(VVNRw7ex>S5eQ5K(*jaK z1G#95tuVE@GHJzFl8GEO@ zUBT+8B4M3rhjLVcx?nZ?zX%$}<%!!fZ3w&@gn7z<+CUX5eHH9~A|RF%mT3z1!L{Oq z|IGmOPc#sC%fWLOv;Rs^|45oJPa6<;>&5-oPB<2=s2UPrDBcgvgbLSPToiWavv(v= zj*1heDLwoIte#LpIWB>H!Gg{OGwv>R!WZ{I8W!P-{lfYm1oDx(_4a42#I6^spO^4u zYXiNr-B66xCBbVRNWwx~>df8TR)S%&`H(Ck`f8kPVQN)Jl?>PvH6s3T6{@HV-ZeMG zAt6;pe%D3h*>d(U1cphiNJcER#dHk#-m-((7Bk8eEFYF6!ND4;jM#_As2#qAY)giM zA)uBFv1U9Z4eDL)VrsoJZ-SiIR*lOruX!HVAxt z=$~rQzv6<>e-r1eSr8JEbYUv|b2j|Gd@qcYAo&%QKK@~8xOOYN7C@P&1cVS-=8W&8 z)5AHI%$l^a{Tof8Yfyza3|JN9YS3kFh^Nruf!#Pv>X09#!80qvudQToI zax_Pv4HYrUbf;&M*Zdlyq8?7_RmbIN@>OSd8gKHrfy5_j`{&+3^FIJn1i+n#6MyFb O00001KIqEP)qMo*Mh*; zd8}=$qVq*NBx99ZaL^2)i;wdy8SB4|pz_rwh=wb^H~8+;vno7N8diH65LymE?h(Nf z?1o^7PdOv2^&Hsx^e9?D<*TU>kx2Cu_h`6l!AN2YXlDu*JA_-XlSesY;^R2V9i>Rq zo|4c4R3z0zEe6SgIu}~$Ss%=(AttfqZV~zd-KcPuK_yFsJ9{676QeQ2j)l1J08S{A zVi=MUfq@kC&(-J;Jw|aq2hFb<(KgpiU=!`uRGo~MB}cG2ScAxn1L3YhOy(clY)y|* zFeIab-Bb$dNYqnxbX?=CehVhOJaY~lnQ>SlFqA0(HwKW!}E}Fo%mEf!{6?`Hxd@KqPe-D2Bz6fHeeuNe%wsQ7YxymHtCsikX7kp6pGprGeQG`X(cypEhrPES70s86nE z=+h39P4A`Nz3e!lFE?TR12-O@%Ayg--Gz~qs0~LFllSw8ayxPkWg9O{lV6p*-Fc6* k_mmRH5EYwBM8Q=52dt34J8}-iLjV8(07*qoM6N<$f?4fv82|tP literal 0 HcmV?d00001 diff --git a/www/img/icons/money_dollar.png b/www/img/icons/money_dollar.png new file mode 100755 index 0000000000000000000000000000000000000000..59af163824c44be62dfbb06df9e71769563a33e1 GIT binary patch literal 630 zcmV-+0*U>JP)!DK;9Y=n` ztyZT|d*HtN4z^AtY@ehNsx1Av5@058(+4Yyzw@m$wtszqQ04yGbJhSW-PK+Sn9kpy z6c5&sKH5aCB||O zo)n!;Re(Lq>NlD(Y>~Mm^&rNjF{+zqQYLCFW%O8ObHbFoO{oHG8H;vpFN|zULKkF} znE;czLyw9^s&5nLicTfoh(h`)V!g47a4i6T`6XNhM{_uCpf3fOH)+aUm{Pd%0$HCQ zD`b=e=_a}-!2e?bhS(t8*Bx}jxG|(Bs-8zXGwpDVhfpKF$YwKX2WZW0hO6n{GpNkbaQ6*W`Eo;3}_R5=XK< z0YsI0n43^|QWPahLjCo*dA`zf@Kp|7fal9I=-yn{U+4i*ot*tN)m|#kBeuVS2r=(P z$&2x{rKt;Dqx=3$7Mb}P++9YHsIwW%;gx^mfN*2lS#X?@Zq5b--LhKUKO1nouBZGU QkpKVy07*qoM6N<$f-OlOxc~qF literal 0 HcmV?d00001 diff --git a/www/img/icons/money_euro.png b/www/img/icons/money_euro.png new file mode 100755 index 0000000000000000000000000000000000000000..b322ba9296ace62bce4768154d1d451b9df80066 GIT binary patch literal 605 zcmV-j0;2tiP)sEfkJ^DF^$1U^B4aT>wGyd_KRG3vZ26WF5%bR^MyEuu}!xvI7 zQ4}Uoe0wYvMUju7*jEvjh~~QmnJ%%90SQCmB9*gJSni~-bU}(xuT=+5g+%PHky=$b ztAtNLSnMEvw{i+rv0BowTGVPSi~WZvat{y|&Z~_L5?u;UhnclI<{p)vqxEUT<*BQz zvfi)z!DrXF*rA9oQM7h$yYT+pnbu*xRfYK$;(Lka*052{Pob5$<(3yn4BoU+h_@+x zjWTEN9@;zO2(O!)yifUEJ2BIPhREJWCnrPQoj|d77oF@Qw9+?S2`ddhQ_U#es#KOk rI$x!XulBQYygdf5{#9;h@W1*4h?>zEyRGj_00000NkvXXu0mjfeSH?O literal 0 HcmV?d00001 diff --git a/www/img/icons/money_pound.png b/www/img/icons/money_pound.png new file mode 100755 index 0000000000000000000000000000000000000000..b71136463797cbd9bbee7601fd27ee7f4c6bff02 GIT binary patch literal 565 zcmV-50?Pe~P)~-Etk+scx`tkipse7HYewM-t*f6pyf05Vqlz=?Cx-0Cb?Vi*;@osiZSU+ z^MlKA`@6uHPjYa_ijgecBXjczsZ>Mi@*n=3>DY{yjc@Ll<4u5-uIkC+1B5~qe(Bm+ z;PP}WTC5-BG(>Ycrr0cP2>e(Vov||w@?{NPQqcRC1e-Pfm5JGwcv|N(6|e~fJ(I-# zDloE^U=A;IM9j24k1+6jQtwQ(^~)4tx?RN8H5RtL3JiJUu1H?PK~{sA>T3EHzIy}* zmsSzKc)+h{$!Hqb5*0IDhghg#C#B+dtZYJMtdcTDmQ(ayfK6N@D61f+)`{O^TU5>F zD|q=51{Xg7Sk*m2oNVGRwv#G4M?*~0FL87wP4|u}*gRCwJ{%hOFyI^y+h_dwx=&C* zPO9MKJFG`;;0{tS0gCx8iaCD)9m71|a0S+0Nv4YZV;!NihP@*VyRrsOxz2{eQ&bu=6;*0K>sc1K0N)?)o3UDjKX9=-hzDU3LGfw^jbPZm~2VXaK~yc|hm3 z{CAn)*q^jA?tbg8#{c#mw*7bm5g7w*Eoj-@@V|X;%m4lZz5h$r7rnQvH5VY-01z(O zRPcYwp-KOH_jUizSe|yDU^IgLKQC~9>87Ip#TyF#*Ke==Kk2}P|I-gm{ok^^`G5BE zjQ?57(*Nfz&v}W{fPhK<4So}R8+`k`8^k&t94FzhQIz{|S5h|M&0i`(L}E z>VL}or2k3t6aNEUxDTfRZf$N2uB|Q&Am@h73_Z}ZtNVZUvW(9`QvwfIS6Ve#mRmMh zl$#Uh1-n|?hMZ;D|HEg7-M6f;B+d&I zlf7$HK@h-y`|e%TykI^w7?PY_EJaAPQ54c>8q53x3fJksAZa2BCYUM*sVua!l3=50 z1dSH9NARmNLGvZv<-M8Rv3QsB1}{LI`;8@!q4VZC%_V z($)|W@MebM6lV#a& zfU34!!f@p@U7a0N`V)>GiP;fDG$0YU$1qc=n0xaYRSAaA#PbPt+vx8D8 zB67J83x@zGq~M&(A%HnYBlWn*@^>KYPa(@PqEZCFm(QR6T7^0eIoK=XlUq$sy&MG<48XIWqWo>Z&VtMl{o y&kv0NU}|dWorsL?pTgE;zOB`27yg*S|Hv=)vtlNu1or3v0000+n4X>%=N!&CthHEc zF~($l?$lameM?J=iU3$^sjRGKePaVeATvM&0YoIbMuf7mQig_J0gwf(CzITLG|K;2 z*R4~8VfY7NjM)we)v;p~7v>SGD54-gLRt&jIJ5;TF#i4%;)Eaw0Pp~`))|?AQi@dC zkXTQX3M?XEtPmPUU@~V!*sVZojoZe!2O*<7>0Ph2f+N?>_4mENBq5j zyl8~Z8z-?=h(@CtPipYzMg zwbpN{s;XLzF??7Uo+zoYb@jCkRF}tjJN1(BukV<+eY{BO?*6_zZghIaxeDw_Eu=Em*er{lpj8V(U3^2@blLSQB_P+ zZ7TrxFFs-LOCK;$unQ0bK|?GSqp9gK#u!8d5#hmLlBvZpCKpF&zx0&O*VifV^8wO( zQt0UD_^7q6&+Wi@J&9NIgEJ=@i65=wTVjH-&m(-FP452&``PI`m7TzC;2^LG^o>7W aZ2t|Q2x{GhZjL7a0000&@yin2vZsda%QRL~-#MTLt9f`nYOZPPyx zh@eoS36T*}D;K6x+W3Rik;ZxN{x~g0r!j^4axdp{IrnqUx#wObB1}w7h;t6-9M)Q_ zwHRXxws>l-3$~-9Lj?fVTI%Z?S;=HT1o8t!5I{riG>aY7h|0C)ge>wKDkQi^QO zkY34=4J{&ItPmMTX!1THY|TJxjoZvmDU?#IWerY3D&sMNz{hifYyh0N?ErCkgerop zN0vxC;^igyzK5ssF~scvpr{0;R2~9|Qe;Dm@+7|xxW7w?q6p9T0GOGc`ezsXz~2ri zi3L2legtcUSS-fE{5&TAx5r5r9xSl2ptYv(x&)l{Wy1TnS zYORkJ|GVG`Z6o<;=+J= Z{2PKMYxPLJkEH+r002ovPDHLkV1mLrGgANn literal 0 HcmV?d00001 diff --git a/www/img/icons/monitor_edit.png b/www/img/icons/monitor_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..f772c562f4f5534cd81918f26d60ee96bb039511 GIT binary patch literal 769 zcmV+c1OEJpP)_KmXiXIZwA}WMjL=;76t2RNaR?)&96eLtwL_vXz z78QgPQTDKhZ3bK9gB*tvb)-_Onfbo&-tV@UoIZ)7!@Zn);ojdl|9kEcT5J0H`n2OX zIF5r-3Z)cM%CvV++qTobv9VEj0hCgdl$0_tH3eEjYJk>gKx>^|qc!>Yd31E#2OtfY zn4ILug)aWb&NQ#avaH_#Ddn$_P#P*DC*UVEC!5R+FG*WtO9xwl((t-FjCM4pX#!vX z*tVTY6A(fWPfA87lEh7g)*zL}k`AU!oza?^8Q8XsGo7Ch2qE|umpIxaFWZOL>%nj| z<#e-WWe1*tK{n++rRU<6eQAJpQV8LKBrJtxJ7fp^RA)V7OJS6(*?S3AEN3E8L+`_@ zr_%sj5`+*b2%v>vp7ES*wJ~M|*YV}Ud;G#8cUCbug=Il6r1Tgb1AypIWX6jxDjZ<< zT8q5OZI~nN_ydAyxR>ugB-)xYMxJMYP%uHTY6r>T%NTx% zFQ=Rg8Rd3l9>-g*_fG@Pb#^}4==x;^x$zf~>P=#eJ;K>N&>iP-po?JYfne`~Cth;Lwt9oYdf00000NkvXXu0mjf%FSMP literal 0 HcmV?d00001 diff --git a/www/img/icons/monitor_error.png b/www/img/icons/monitor_error.png new file mode 100755 index 0000000000000000000000000000000000000000..270c5018d2ea1f310c576c0774264dbafd26abf7 GIT binary patch literal 714 zcmV;*0yX`KP)R8*8RG4UJ#ACTJE;QGiL{wIb8 zVz{om3-CNIcO}%-H&7A@Q(s+7VL_0L5|n398nnQ>*#u$)$8i7%04Sxhnt)|lq%$5r zQW?^YMg%-9xSqlBvS&otYoL_E?D$z0mSyoP?P0{Byf{QKXcI7k*LnDThkt>8-d=#QvQ%F#iCM*MenPSqKoa6~~LFXl;$r7J8jC_^SoibqUx30KP3R z?RoLumM=86bWv8*L382}btT={L3=+S913#h%1N{qLZJ|=$t0x(4u#2aN~>b%&1W>7 zy2wEIB?0N#2e>yqJ=L8zWtEpjgqgQyp`omjaU@c}zAIyzddlv-^&)Jk;g z6XgwOFzFe@Y}0wJ9pkQ0SiH!=W9JWlpLuW-hzIfkj^muJt*s^2b6F-qprP*A3b92OyEw$zL wk3ZfA0C+ppxhC2~#0X+cUW#8a1`(P214m|cKIc`U82|tP07*qoM6N<$f@x1W;s5{u literal 0 HcmV?d00001 diff --git a/www/img/icons/monitor_go.png b/www/img/icons/monitor_go.png new file mode 100755 index 0000000000000000000000000000000000000000..8af3eda9f2db79939652cb5f81e045dee47c5395 GIT binary patch literal 696 zcmV;p0!RIcP)a@nqhkOUP*ZVFoTSV`-U zLLou1m(eD{B1k^%wpy{zu%b|qpFOLkE@6vB7_hKA>h3) zK zP*z$(A`uapd<~T~K*0h<7K|}@2%yHW5(nm_ooRO#6M5uc3)WhqL_g+P!#~T49sU+7f9v}oIl}d4E^gJpKD<11TwUzZW)Es3gx6I}K78>1|ykb?Q zx3~AEbM8dZE2|va{&3I9rgH=pf&>I*X5ky@vT8;q`Wc-X)SS0z^Y{9Sqr1Di<9+(k zt<(E2F!}2vPCQ;5E;yp7gz9Z|3{5=c<>#T0EI!!N(^KV~o2{?k$LP--K6rL+--VYz zP~peI6qV&Qy!|@N@TZ|U>uFgBh~xNhCX=DH^%VE-b?{*1239ONZ^`axuL*-KFD&CT=FOSIlydMCoq{ e+1V~F-1Q&8>xzO)Eb}Y?0000 zQ{77xQ565p?E1A+>b7crZ9b%xJqY0!SXit{Ndyr+MD!T!OZ3toQ0zksMIZ)+LJ!eH zYC=Ys2<1aiks0bkf_v7qT}>+0_8&fJgg%&zNNFVW%tIA><=`JLaHd#=PehiQR8 zfHTHmf>LUM5R&z|FbpH>?Z}w9vAVhz(O3*HNz==Ux#f5^HoenXit+KW-2~B%4czE^ zkAJay-d5?LV`IV$r2z*$aG;TkgW&G+zOjUUQr!bd`@gs zgaT1Hx`s&e2(A^C9u}{KbZtebPGN0%0%M^z%qC9m zB$__cvN*EzKVXy|k5}oR3&CO5{~^I0j*3I+9dD5T}ulDl!VvE!ai! zgF;tJnWip?$_)9Adhykcs=98JszFdgM>ITx=ie`2HvR)TU$qEqc3VaPp~La;$9G|^ z{bprFIby-raMpH#B%{z1>)0R%kUH`R9d&uQxW5vbrdb3s(k)2alQ=Xqbf1$=PitXc zlcTs^j;t(^<;}(q$%;#z=F|m)!N{5_xKA&$|^xFLAEzI1^&jSMkZGW}!zxEq#$)AzlP&sV?0000gjy?kL>n$m`}v28ZSU`sZIN*4v83u!ijAR!PX-H4mwUvOQ7QUw2ie;_L< zh_=}XB2-e{*ev2l(xkyunxsiy@;=6UCnhF#p_e!B-WkrEd(O-#LI@lm9}C;I!NamF zIZV?Wdy_{#!MR81ZSzJ2}j z&s)&QQlCKK!%L^rVrAtf>Wv24ZJi$0XA}$H;rIJdE}!CB_&P!hA?)wJ#>`9r)#@3F z#R9U~>{wsHP9}43OV@Sf=;-KbI2;b7QYkc>O#&8?$z&RzK4zWCWYX<&xs-CbjKf10 z^7;G|rGI@K%gf7m*4NixBsVuFp6~9SRVtOK+1Xh{qfzjtYPE_|sbr0hkH6a5+KQ3# znmX*w?RMXupy2xcgVYp1mP8_fwY4?GVlixNY~bSJqD^s+F$8rxh6#K=AE>LWGY4;E z-rnAZ*XxxvTT)fkqiI^2=O-s8`iO}*^z<}$c9J!V&f*6ty88=|+-So6 STiROy0000LLgQ-DDLPW}%f1vx-$*I7)nw zfcOL-13nN51fSzuPw%;K2WgWo(hFy1bAI3VopUb-0Nis+mgRTP0@LZVJ|2(TBuVN& z+EA%fUX@BES3aM=&1SO_aeA}o`uduja5${`{r8$SgJ{Xf~Tbl0moIh539=3k7k0hr@BL z31l*v6h>rm(PgvQz-%_7bK^2GKBhxqVhC2NHLeLH5{diea;bsnvREvrBMKvce}u`E zg2iIl7>&lanm|$%@6in#7|0w)qY)KsG#Vg^A_#&|Ch+0@&2hPl3mJES?)xCRvYE+s z-4Xcgu}8<%1@onPeh#Z-k^REHGlaqtS+3C&f+gG|YbRG-_ zK;8rdgF)bV{)@q2&^;-DALaP?p!n(Ir6dUQ6>oa5+wDEF=^rMO>F8guCh$M?8yO%b UQwmBS=l}o!07*qoM6N<$g0ICJX#fBK literal 0 HcmV?d00001 diff --git a/www/img/icons/mouse_add.png b/www/img/icons/mouse_add.png new file mode 100755 index 0000000000000000000000000000000000000000..65bcab520632ccbd540ded7e01c30af31671dffc GIT binary patch literal 729 zcmV;~0w(>5P) zlih1laTv!H#vr0UAo>ToDcDs6-9&T|1YL9y!5A}ay|RSVC5g70p24(@bj2Xpi0wir zjT4pbI4^u*zOW1N6*L835E%?N=kZ;ie$S7NNp%tX!NZSpc)s87=Xp3s1OTFwmdE3{ zb|RtQ?;mx!TxynO%l~XhBob$0v6wy_4(|nnL6#(48A=_qlVh{l__ejQzs2!*{1g%I z6$%A7K0bzWxeTFD2pkT_w$tfcBB|L_Dg{2D4~$0R#-GWf(P(rxm&*a3e!maGNhXtE zwOV;X049^^fMJ+vwOV~z5Q<5|R3s89WV2c5bUM)M^{4^X;o%|hJP)N(3Cw0Q==J(> zrBXSHT0|C;`kc?_DKZKW8=KqhHXuzporYSiMol@61D#H%5U53DQLhAK0UHT2nG6sz zC>D#*Xf$Y{AvcLeE)(&Q4vk45s8lM~z`*Tx@3&g5 zfe=%g%_dDmV-(OQ zrUbsmmLXi?VA1&)?krw_OHa-kM4^=x5AFcdhlQ9b%sjzd@3GM(U=#1?o(wzpVR7dH z8Z<=d8RaU!umEkZmkO%YDlHrfjn>!K;pWRR_#XQR!{v&*S@_3q}?we7-7i00000 LNkvXXu0mjf((yoF literal 0 HcmV?d00001 diff --git a/www/img/icons/mouse_delete.png b/www/img/icons/mouse_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..72865668cfe796ac531ec2d40a95871aa06da700 GIT binary patch literal 741 zcmV zlTT>UVHn4Mq8SlE-6H5PsAGrDb%@qF1Uv7t%Sd7oEeZe3khvOj&=4ZM>`>dmL0iLN z5dK*n{KGbFfla3{({PH|VmX~Zb^iPIJ}>;ns1C6Q9)9rhe!t((^YH!z0K!Q-5D4_1 zNVvAPru6xIMyJzR{O5&4B5^JrkDH^>=tejkcCw_K$5OAmSS>9riF0#ve~Y)aw$3o| zMlP4b!NCEF#Udh+2;6SBXJuvO6-&)*Z*LS9JjKyNB*=!b6-EJ3BC6h@k zE-s3U09LDYZ)$34#Ar00m4q^O;lbwSW-gP-pw()j)9G*n>izwFh@yx>p#YoB2D8~b zsMG0`q$Ok-Ysb#c4o4;dVbkSivk9U}rBbL?tK8J<^2w;5 z4EcN>^?IE*8PfbFlgV{tu)e+?B18$7Qrhh{YPA}lo0duVL`TLf5C((6cVyuA`*#ly z508YD(r7ezA{mo_zFCJA{=qBwbXx(}-P1ojeezLm5L{l~r8IJvgi>O;T;_&f-%cQ^ zxqxoBIG0HFN@gvCa<5!Oru1lbN9*MeO15tW&QK%xg7!V`F0l zw(0j8jb>1-R?C6|m&U`YtF3~*2fKz-NULP<^()%$KKZl%{sTh;mq%IRcfuwj64Uu_ XBDfTk2IT+r00000NkvXXu0mjfR~lRR literal 0 HcmV?d00001 diff --git a/www/img/icons/mouse_error.png b/www/img/icons/mouse_error.png new file mode 100755 index 0000000000000000000000000000000000000000..bcc156238bc7063b216201aac6c09da7cddcb4cc GIT binary patch literal 790 zcmV+x1L^#UP) zlif>`VHn00M2PU8D2hIa(oQ0R2>*l*in0Si`Z}-(-B`|6$~H+f%Rxz$BlJX9Hqcz! zs=ZsfEi2n6?#tdy)|#7cu08v7SI_gthLlG>aPywr*LD5w3*IUKRXZJy;~IA)oS&bs z)$8?AtyUY^cEROx)j1pv#p2@Pg2iId(xg*cQtPMb(`YnlwOakZ*y(icqT+>6D1=lh zg-9dMB~)-7<0+n-Tc^eo!*3 z1byI5w-EP^H^nu9Qn8g-<~&?zCJy3wqjr%8sb<7EL{-NB9qA^B3=WQ z^&QAXUx4_U!71yJ;l)S<-oUCl>9RaLQ70I9#iHSKZ!hvjqkz9blaq-xxL;qvIxQ~q zqYY`#`M=}6L{Aw2Z+L`H_Z#jA27F6PjqgV59O>>7N@IocpGU!S{m4Zg3+ZX^MS4Pm z@FjukAV0O>x{v%a+&g?oxFgWqTw}j>byzDFbEEBTaqhwCB8mBtThk*Or5!}ax6Dfv zQVy(`NASL5|M<2)6UB>}l*fosew5H8LX*fx*+KH5^8leDqL=I=dhuTJPPE7P2dw8J UZ5DxR`v3p{07*qoM6N<$f`-p)3;+NC literal 0 HcmV?d00001 diff --git a/www/img/icons/music.png b/www/img/icons/music.png new file mode 100755 index 0000000000000000000000000000000000000000..a8b3ede3df956f8d505543b190bc8d1b5b4dce75 GIT binary patch literal 385 zcmV-{0e=38P)klCE>?a@fNhGaV ftv%qM$TQzJ6;XjO8erVL00000NkvXXu0mjfw}q7O literal 0 HcmV?d00001 diff --git a/www/img/icons/new.png b/www/img/icons/new.png new file mode 100755 index 0000000000000000000000000000000000000000..6a9bf0370708a165d3e49047c09e110e02074a53 GIT binary patch literal 378 zcmV-=0fqjFP)Q51$RwCw?WgWe;0fi^vY%UagXRhyB(O=1wVPFJlYqlK$kNFcaSBrLFKHcpU( zVj5rP+%se7wuRup#~J3_|C@8?jsx6(aN8gV+_?~^wID=7QAmWo&=P9GzK~Bj7P?xU z4^LybJ-~;P$nL)ri2Lx-f?f?uyKtX3G(76UWeycgm{0H$eX9nWr+ASHH8>r~vom;o zFz$}vYpDI9TZYLgxm?Z}9nS!RQHI8Y*b~3AE}I>k|Ynq_|_kL0z^} zg`YWG?`i*VRiHt=)+fle*{;CjiLD9r5bPAPFRr!h8&+rODTKm>mjte|vSwTU#7zr+ Y0SIdSJYsEaB>(^b07*qoM6N<$g6XKB5dZ)H literal 0 HcmV?d00001 diff --git a/www/img/icons/newspaper.png b/www/img/icons/newspaper.png new file mode 100755 index 0000000000000000000000000000000000000000..6a2ecce1b85eaa9084b427ee2c5226e2296eaeb8 GIT binary patch literal 658 zcmV;D0&V??P)oVs((xWgD$)EF}_d~6|E9cYZTvaqk~9`i&BW97*P>v z@lDk@Xl;b%^t%HQ(pa0tz@5kM+;h(T<_N&ip(~wEOB0DiJ{F5{;c!^;_xs1dg=jRo z3WY*KAQ0euKA+@K0;yC=8jr^rydICoSglqd_{QV$a4whY=|O=zI1-7hhr=Og4T=Ck z5O8*O_S@lbByBd^lf44TWKv2W^LH=<&(F_6aj;k{L?;9b7K?>5nM{(sFqO3)3}ZrBV@HFj%2boa`NCnylwer*m5<6vU%rtuL2L)a!Nd zJP*qIOD>n6?i;$@!fv-8Tdme9+l?I|%bm;R7`!3)<-bP$-VIIGvB6*%vHYw+%Da)t sWG@c=a1S2nbh=||dPK1BKbT#A0Qk`HN6lbD;Q#;t07*qoM6N<$f^gU==>Px# literal 0 HcmV?d00001 diff --git a/www/img/icons/newspaper_add.png b/www/img/icons/newspaper_add.png new file mode 100755 index 0000000000000000000000000000000000000000..8140e8c1013bc74ac369f84e9dd51f77bb4b84e0 GIT binary patch literal 750 zcmV5IqDdRzdYtFTr{V1TRy&qUdlr6t!*Q zHvj+G^)jT`Lj*H)Do#WSbxu;}#bFcLx8FIWtr%kmew=&HJ)iIS{=WB&02n!{B9VwH z7z|2&zh78dS{nWT`*Gle&*$qdE-oq_k4KoBn;SirKsX#$1p)yE@7C*ebh}*;yytSc z1c$?M@<@RJyu7@;TdUPT&!85dC<^R$`!Ac#7P4BcCk_<|g+eOYEDvA?&d<+-+CjVB z=1vG!EEbDkGMPpXg(MY!sGxH7Vo{$XdszP;zzTENlyx% zk9h>;Pta<$eL)azZ~;0^_Ikbj?d@%l2%JtQ@14OUj@8vwl*?sg3nhFA$PC^i`0_AB zf~AFph5bsUf?}}6s97Lm0lu9MIB38V#JiwE8cW_^Qy?g8R#WzC%N?A##)7aVB z!RF>B3WWl9z>?49am5~0vQ7WIV0H6$&Vq*PnkfE3((CvJv%$wPb3oj*Rj+)oenaY3}jix z?a51sZrE^e1k+|F@b?bP%*>2UPfs^k&+HenzT@#YD6HPq7iWKJrAN?6;~dtkjQ{Ik zP;|4#3z@Uv(P(;VwfY=wRNvK|hhCcCC$pKo4>LGedcA&ZYHDhWV1>bhb=oXY gDa`htSzznG0VN>dZZSF0x&QzG07*qoM6N<$f}9CZOaK4? literal 0 HcmV?d00001 diff --git a/www/img/icons/newspaper_delete.png b/www/img/icons/newspaper_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..bde96ce19ad865893414628a85f933140b50f41a GIT binary patch literal 775 zcmV+i1Ni)jP)4QQaBQ_!nBv1oso6^(<=>w{5>7*5@*yDdEq47ZolibYY&U|OiIrnb>&~VuDcsz2K z%jI`C9Nfgjg!JF{M}Y&AlauA~@o~XsvvFp#S$ZUasi`Ts)9GYzWpi^A<#HJW@0v^| zZe(QS_@M&(u-$I2WHK4hGbjQCLBR0v@Grey?;aW&k{u}EcDv>DF~1Kp&|#!>2w-opVxy*UtizV17UIiDof0s%jFOZ2JtOlz%yG2 zw)auE_&N0U_EtHLYZe9QZ~WNUSaoY_3nT)g(I{qTFo|P!b{5HG65&_^Z=5`XcL}~+ zFOgus)oQJ!QYpmaarpgy5oQjir>BufB(S9G!n@n&!8gm`y(!E1S|puy0cu%TSy{pM z_BPhm))0%uLe;JbAe-wB4g73eq#yllc(#WnbDNIr`KG+Cz%217Lv2#80=S}&DK zSY2HO&-0?~+L9fAUd67{v@fmIk5Q-7H4Y9A=2&KSgejjmyLz%N>!ySO2ACDVQ zptXKi0_q|4*C5ekHTL)SXIXw$U{6oaPIq_rg}JsfFBaM_{>*eVA@@XvMEfzkZI$kM zTO?2a8)cN`a literal 0 HcmV?d00001 diff --git a/www/img/icons/newspaper_go.png b/www/img/icons/newspaper_go.png new file mode 100755 index 0000000000000000000000000000000000000000..fd6142871d234b34bf48ae5b5c86fafaaf36c62c GIT binary patch literal 779 zcmV+m1N8ifP)JNR5;6x zQ(Z_?VHkeSJnLs}CkkC!=4??Q)07hS6YFA8coWfXy6n!PyCB$w(M?0Tk}jkhZxRx3 znh?4{kP zRrRH&X>)Xc==b}Tzuz17K@Jf-ilW>j1c!!(_P?uI}vYw9xZ?LU3SU z;9$9q+iL_yE_ZghT&CICS+F{v&xcSbq|tta;P2|{lK&AH9UW!lVVc>^$TKrDC>Dzl z1OXn82S%e2gM))Ps(HpT;rAjFO5}JvULn_?Ysd4cG)`O1pwY}!<06>hGhs9z6Wq{bqCcdP%@IINv^&2-iB3~f17|P^wXSz(&)6*5Q)9J+g{5+Pjcfj#? zaj~%qpOeeX#Ua9hlE6;q%U-Y76pO`nb!K9e2Si0eLrpVYE!@JwrwNIT5C{auOBv9D zCCkgQjJCEmq*5t_*B@j2^%F>%0_nGc6GzXYxz354n8(}VQ(lC$7(f90jsus&;o!_> zGYW+QY&IK|jD)L>+fa24Bo7Tb(i>}NZMcLjsc87P8r?V_G#o2C$meo73$xE=&SWwr z%Z&Uzy9AkBD4Gmem9e>OxuN6fRFES5MlqAYvo4L`?)Hpbo z{Te>3PGM~E%}+_em2{7u*mV;7`udp2Qd3h?9mjDD}Vk z4@oPLzwY@j^!E0aLUt-_Z)>dhKeO+=m9KzDlQq6w>wzs$CE|-gmFS6MzN~ID=T(;Zo!u3eqqJRXmnn*G;eCR|=#2Caiap};30 zu{1R`B}`6E*4zSIi^;5ubUFsKxY^6C6xh*rLnQG=N$06m?i+3#dpu;atMV&ILn_y z@Aw2qK@9- zWhoksqF5~A`1lw`qY>ld<6!?kkw_pM4s#fZuVS%Snbr39_jyliYwK$nnf3MH-~c;2 zJKXVsfdPnzhZr0jL|a=My1TnUuJby}TUuIvDwWE245HKNiZZ&aCo?lM6`#)styas% z;{Z_<(b(9CKp?>LNF>4yuCK5E-rnB+fB}YwhcCGiR;#tvVzK0COb%gy-rim)6bdvo zHKC)Ug9pnS8X78{ot?W3pwVawH-|)*RZDzIt*)-- z$*TgbcyjBMsp*kkuRo*LuGDJv51QtZqTJQh^^)QRnL002ovPDHLkV1n@`X+{75 literal 0 HcmV?d00001 diff --git a/www/img/icons/note.png b/www/img/icons/note.png new file mode 100755 index 0000000000000000000000000000000000000000..244e6ca045c50a130086ac388b560a12761544b4 GIT binary patch literal 500 zcmV z!-sF!^gVb+8rtpyctW0#N6uWni0LCt_6PoOdbjll_d4>B|?abUmpo8>v>h}Zj|Ya;Eu#qwvU1IVc9khP8VrtAsT2=e83P~$#!xXbw)n}FlPSEe7Hq1uCb zR8w;xqmBrUgA^pnkB=O@-lq0DPz$ay0yh_~I_IDpzxRb(4=Iy9CT||k!08w)Pe>W4 zElmH8fF;68$GMwZ#7{4ozI(ySrR%I+xs4-G1q^UxnUV7rlf9>Rn&_6Wike0000v%0y_nie4@QbY&^tbl4Sl(SzV~n0XlZf6UDPQ6j=tD#8}4ezlRG zZ^aZB5eX0zA~r-!fEXXKK7<-;G-5mmHBA?vs9FMRh#tALPC*0|R2D!W_x$pD2Y&uH z+eHxPl@An%I6xt+F{nrb5_%h4!5CaHk12iv=OYr7cNc)uh|`Gk*tX{aE-Y<8V12+K zPJ@IMP&HU1t^{I`U;_tcWvOhrM%lwTT_N$nd1VpvZ#{vt8a*?L@xOx&KnzwFi0yAF zD?5!?55(2Hfm#jH;)`C1wsa8hIuAHpFh_Cx84de(fs`1Y)r`zJmOYQ4l;h7z{??m2 z6NB|tOoR)Q+6LPXG!1ljo}#1m7&G(ZWG2)6`muahZFZcKskR~D8qf$7frn!c bvi<)7-g`sTs&+NB00000NkvXXu0mjf0pJeu literal 0 HcmV?d00001 diff --git a/www/img/icons/note_delete.png b/www/img/icons/note_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..8a1f0ff56f3ff9c1d6e1868eaebab76a185b35d3 GIT binary patch literal 631 zcmV--0*L*IP)X_hQMgJ64VgUTuVX_4iRmQ%|%N&1VIKW z6ly_}Niis=j1O#s|KSprLH24(6;msP^w!;>QD2}~Bd>N!nVR)Lt@FeB=w?vJK@BNvc%LDG&20)2m|BSOT zG|GYVcTq|a#BPX7Q8i>wYmuZj)g4Rb?d zoVa*{?96A>%WfKfzN5XZB^D+3Hxl3sDvoG6cLzPuPx0$};+E57TQ6Xj`pC9+z|{wv zz4sm=4ys+P57Xl7YZ7dNID=S?(*+IABYLga|n=&i1C^Ll$f?5eeicnA#1rn`Vw5g!~Ai_;Six%mol@YXv zpr{DSk_4&HqEGXqMs21Urx~61zW2TFJuNiKk5=8qxp3h5o#%3&zLVh3I}!7>rV zy0cveL@eMS{2@4@V#Ifsc!DulJ&DQpf%Op4v$xe?6=D@)U81WGV*SDrfWQL`Vikx# zC;D5g5L>`a_LDBIB75he%=~zQqY~|505hGQwLEXKi?wPF;-YiIct4j@Rd<3|O#|8C zTHZhC><9zcK%qYMV7$)|Xb?l7a+FlZ5nDj##-OBu%J?oaL+^+>n(`G@l&xA93j+jh z8k0*q$O-j?Nca8_zy`4G;prD4e1YrH!W$vy!p#G|OpS~5?22&Z3S zwVIa$XW=s4>S&U~r@Q#jeV*}=UW(V%W0I-yifB=D-Gvu#7REiau<_yZq|tBhQd7T= z($ZQI{e#oW)d!XmFX`aO{z|uT!vfZZgl-iCb@8i9wMYj?C(+SK{{W>psZ+6os7oDm za8eW+HAssHtztndH5&8%zW06Kd+%{bu?flMg>w%acz!(Rz~hJr|MR*4Wcius>Tg5> zM2Cn85gj1fM~n}l!f1tP4?;!XxoM{rU^Lwa#@py3;K14k2oxWkZ+GCAR)~ur)@w{1 z5V3%RuugCy8}R1M4FaG`bDID#R+pdTbatiw)fl0OJE1u?i$y6E%w! zVqFl81g#Dt0J>IaSeBqk>|w2kSPxY%Q(P@$!YZQc?GCI_sHInE|1+2XL}OHi*zT=Z zU8h#4lGu5M@=C7l1`z<`70{Ix5}64S2PWxB9|IdA#-&~?(=&LIP1_Gq`nEt2iL?V8 z5yJdD#TVBw?h=>~Dwg8YnA%(R zj$TFk{>|*vNOIkQRurG##+`eJ{gcQ0@|wbOj?}J$Sa%+=9>Zg4Z196vY>{n4;~DJ- zSJu{V4^!^$=;eXT={tk_;+R?%k%0G4J~2F&!HM=k{5bFKU(buRM>_(tQzPGpCT4a- zBg=>`HbT&J_h>xL&yOEie0t+?SEq<-KZxb-jd@}Pv9_t?U&mTRWbiM2Xm^@Lr1jze O0000R5;6} zlR-$7K@`V--@00+DaBF-W?)2!79o*g)FH}yo{A10qGLqR*@KDKJa+EdtwTj9l&K)3 z2LlOBDn&C*S6$t2zL_`kI_yf>8U)SZ4Lo?i|9|Ga7pW@$bJ76%<)upQ2dWkohkA#K zMI}Lf0?y#Ypb~>K)OJ3Nb_2Xn-g2{qt_l$p1E7$7cB|Auvc5p2DjMQKHUiZEL@2)q zQEDIR;ys=qLa<9nZVW<#sx92XLNI7BXo#uE+#tC89sr*Jf(8TXibcN{8#LrW1+{xP zkge5%a#8RJW;(ld$se?!rw>(L9V3?ZryF^h$&-Xc4 zn#Bgeig4`EDVplq$eC?A`s&;zw4fx;* zD2p5OoTmDXLoU5Kp}zH~JhS7O#P?t24MDNN_ms*i3Sq zJARohmrsv<9yY}}Fl1l#qhe4OW8)8)+A72gM{638;PD#xwlT-y>N+OoM;MtM{%D2P z=x@u^`J~YsYq7y%#BwszoVwW9!TY&U2B%+7TH(TCpC-}2ZevStYUO;x)y$je!EqaC vU+hy`Y{0((8oQ$vAIdUu@a4;WDm(d~Ny&QoBWxc?00000NkvXXu0mjf`uQqR literal 0 HcmV?d00001 diff --git a/www/img/icons/overlays.png b/www/img/icons/overlays.png new file mode 100755 index 0000000000000000000000000000000000000000..ab3100b5c5142a96ec64a5a33053d065b6838bff GIT binary patch literal 716 zcmV;-0yF)IP)Zj1^v+DeN+ z$wh@msTr8&gVYAi($s0panyAF{~70=7Bh|!8ANA$x!?JIoO6_j@IPe*ID7Z~6(AWX z0Cs{1f^FdIX=die(XkIi1XSQ#-1toaG7Gh|Dhn^t=uehFhvBJruwfNMfwJ0*%3} zdmXN~y{MvcRCEHN*b)W=wEhgx{on+}Y3*z&xIpA^6ONi@I-a?4yzFGd@jIkuWRa3& z51Gp3;wA=kO-X4(hKS_lx?HP#AD)tuTgcS-1Osgj>SHf6UiJ==)=)@21D0L@_4_%W y+#BcJk(yxLlbwRt%r{=w__?DuyFM+oU_Sv>Crl?v_;CpU00005TQ^(M5v$(QKVE?W+9X! z*o}&~6c?_FreF)9NJB7b5Nbn{G0n4+%uJhR9(V5R|NFTpb|HgjefT!tIhLx@DR+N) zV+fHiR5Yt19}k|KnCsND{tH-`IMJ)3AE?OtyZ4>Un|6(d%h#JK`i&a7^xW9>`yBy` zS4SOHeOpC7$?hH5-#7Rswiue_8Ju*2N@$58=a#2OTA3png`w3v->gWif7t%e$ z$NLVS!tFT#8WL|Wa&K~+{%4P2cRfwesYV1_!F=3OaRVHl(>=`%&{x*s30c}#CNE@&;ItrAv!f!)Oy$Q9t$uS=(sD$-J{T*^(8Eez1E-l3}} zPrfHZ1`qsIFe&gipuL8-IZbo2Yg{lFGKs?ZZWcOaOdk*3`5T;$?AjbG1#`B510Er^h2)2r3Y{!8_2Gj=$KzuN5 zaErtW8W_Y2iJJjY)5pmTVJoPJYpanPOEuYHclM^C1F>${hFRpdi8a<2H|Xudf78bm(zwJ9`K%6I?q*Ua~ fW9JvIbn5*B+_J)rUMBs>00000NkvXXu0mjfH&TkY literal 0 HcmV?d00001 diff --git a/www/img/icons/package_add.png b/www/img/icons/package_add.png new file mode 100755 index 0000000000000000000000000000000000000000..9c8a9da4ae49b7fb02af2eaf6e03e0f6c91ba01a GIT binary patch literal 899 zcmV-}1AP36P)i-HS{zx9u^IUGw>*=$qi z4z(fju8Kxf4E>slBg^es4|nAN~@NV_SFj zT24(nZf1>C;s&Oa#mmJBSw-p_cY~Y6U)hMyiI9#@b2~OpJ~{tQK#e@V>&ZUL%dC-& z4K3ksgdE?;g2XJ7a-IC z{t7T9P!AB)6MkIq=xo`8@fr4Pe+pxHJkq|8i#gBoi7`)S7Dry495@-9|NUzWL5S=I zI}8e@=#j{*V_TIRYJCHM<4>HSsjdT~`23%KH*e}YU%C<>JM(QmG2_K2&b4Ftok-)u zSoT&#!hAJ4MD=!?;n}ksXzJm;^DmMqtaEL0%KcAFfAn>=sgaW^@?6tnFI$DxIX=HQ z$n|KMeH{mAuJ2-I1BCpEP)*e`r0GmDdCv3B-24AN7nLkDp7r6!fpdkQ_POs-o|x$lEQQg9%evW;K1esG{Gik*}W^x_p02 zz@7605mh~*BB$cp`?|L6d!3LNikV3wPMD?CDC_s8?yATc75TAuc)YR+NS+_)L-b>( zsrQ9#j~&5n>ISV5tlihzvj6 zHDtNXPvRAp*~s0*)Qb3}431T$tz$2EYlIs*2)S|cnIwy;Davbif3elb@jZvmT7F@f zVrCSn<#Eb6%J~fW`2`LReM=-(52Z9(N@3-bw6yQ1u^Fa+pFL`;NJ+68qpm}|xr0jX z26asd5=}8;l);+=69sPpD)W@H6BN@|aCaR+jg)K^0RgNik;ZN!P8@G(5-Bbb34>Lh zfsj(mUZRj+Cx|5=>Y#prieRe|9`s;9t61=5{Se?kq8ij zU+()P`Q4A8{?PogZ2858X21%`-aNe960R|t^-p8 z^#MVBA#){3_e)1{XGXDpK1SW_uk7k*rZ%@8*ka79h57N}Tj{Y=&7Ft39^KzhIKCIk zDey{|s*hQ#;kNCD{`WQ~Y=8O)Ay1smDNq0KY^#dAt47{xe`+An-rEnpM}Gb))1Q6G zGp`I%KX;C5B}*A7;LY2^-NEnihO`bR7JkxdbOvtdjHL^v38oUE+~BW@`d1wzX5cwxst&W RBUk_c002ovPDHLkV1h=xq}~7k literal 0 HcmV?d00001 diff --git a/www/img/icons/package_go.png b/www/img/icons/package_go.png new file mode 100755 index 0000000000000000000000000000000000000000..aace63ad6f91537268eb6e9bf328743da7c631c6 GIT binary patch literal 898 zcmV-|1AY97P)yqPWur#3F*- zi1-H*6GJgONgz~1E;+_Oe@~@VF-1Iy-=*@ zV9T!Kgk#%59lVt}Zj7B_)9wTKYBy6YEwPxKqOdeGuEw0%cVhe}Yj*hPSBMNYZ5yz{ z4STT*%d9TVV4NauDND$z(%QKb>=kMr>ckh0lFuesOioc=Nq^^8BQNYYbk1@M%M`O? zh?6H&UZR}Ol3%#RzJX5(MAktmg_e?7`2>w^4^!6w)4$9==U0)EV$}u1A)*bPRF?jv zHdar4EJB1b*f+rh!M+8R159x8%Qjd0I{0j+|69pUC)f(>!P(OTs8c~;XuVtXzfO>s`m zrjW9YI38*Yel_NvP&FVfNEx)sn-kxIx;WzEcpe*LJBYXLr(llS6I0o+c9O z0L_4N7u$0%Dx~ks;fjYRF0OIOR}1uPI!MtibK=J3pihiBTv)jD>R%(Llj(_XFa#mG z6Wg=#j7Q7*PFmM*W@B9!ftm;#qU}sCT;|&KtBZ%Fe#3()Pk+9@Sw&8%k=NQD>92qN zkFT*E2S*%i&!MYvH;;DpF?sU}zb4Mlls)au3~BX$XZr12Z?_sbts>8Fec~0Xl1q`9 zxyH%T#p<5UCqrY2(J4oGEHk9ens22BN3dYXATM07*qoM6N<$g3xBAZ~y=R literal 0 HcmV?d00001 diff --git a/www/img/icons/package_green.png b/www/img/icons/package_green.png new file mode 100755 index 0000000000000000000000000000000000000000..25b28bb6aab661d06764c3f5df40447eafdc0611 GIT binary patch literal 896 zcmV-`1AqL9P)KI|MAoju4i{u@{tJy)-y@2kjrH7x^`PJV~I)v=6C z`lgBuhno6Z8#*uI5{FE53a{TyEIdwPb9zlhuByn*o}qjBCxNBA=lc=8;;-uIZRogw zS=9zw#NJ=#@9`0ibe+Ogc8o$c&USd3bbMh_9cSdZw3#-bprFL3#cPmkBXQjDd5M8x1tTNKZF&VLNYPDZZL9>z@-$o zek7erUNs|}ub$=P&x}PsA(FiZTEG)*B6PT&oEM6I6T4uO&RP6Yi1D2#!M@?3 zj;KdPT+QWuH26CBX>*w061S-HHgF>FB0;keTcKdt%%qe2>11#Wc&Yqlx{|^}k)r#Z zfn$A{-OZ-=^|@K>LVUuw z|4pw?MTXRo;p&#ttpfPljc~ z^*)fFGk3%$D&OKXWdCy9_{b!yT6y_0c7~Gqk-mpj!O8w1MrQtV62N6 zKd51Qa}KVznef~1!f(w((D?|<6MD>btH8XFphvgoMdY%=T+oe>w-3GnExf%dOqtHY zS(}E=dofs^vjBbvF#8tV7ahP{1|};J9#x@ByDLnQ%VJl9Jkj#ok?On}j7gvDZk*=&ZvV1OVY z4lT+p?g&7sR0jS;nIvmd&hhA`>@!j>0=RkO0+JFFArJ^4kx2N8^a=5YR@06hZH)jj zGBW1Ze2nd6Nm9jQr5bhU^{c0-s;WYHc{y@&a-dKs_&%cP^?IL1qnW2^+P(%56&1BE zHa0doIXU@@OnNGiEzexdmY?CSWe7^s)6)~Ova%LQ1*B5x&xj}D{RPNa+l;K6M!5h0 N002ovPDHLkV1m8@u^RvY literal 0 HcmV?d00001 diff --git a/www/img/icons/page.png b/www/img/icons/page.png new file mode 100755 index 0000000000000000000000000000000000000000..03ddd799fa0a3aec561c75d4221f195db65d6eb9 GIT binary patch literal 635 zcmV->0)+jEP);68^d)m`eN0o>(5%D`Q(1;j>g@G;xlf`0VBQ`PFY?6)!N&f?*K}$p; zB!U=NBn{eB8${1}&-2_L*HuZp@ZP1@clS@cHp)4iM1ewzw59vko7eMM{e9z|%NNdX z0V;`?KKSzTCvTm5bc{L^CIKLUxc2X{i{ISz$8Sgf{q)1nXTP{`{s?9mQ$4&hPiKC- zY8q7(Y1Xu5iCf33=O4Vy(+|zQ?rW#gkKB0f%}?+6{G*qT22|DQB-73`YzA{N4W^=s zq0kQYcbtFfz zLz)H<&|z(Y4kBG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO literal 0 HcmV?d00001 diff --git a/www/img/icons/page_attach.png b/www/img/icons/page_attach.png new file mode 100755 index 0000000000000000000000000000000000000000..89ee2da0753040d1ba0a3487473a715a8fe89322 GIT binary patch literal 794 zcmV+#1LgdQP)i_t#ewV_0K6;=bl;e_Jt7$~$sQ)q$+ia<4Ec+jeaGt9oWH@O|2`W6&O0t!k{B9sUvLWxkCaPsd9W(`fa z;j-|^ZI^2XnzhgZWYRW-kP&J>DWPo`%;JaBX}or79k=+Jo@h%4Eo72tqev+cB?PjP zO<|ByL#>Tehyq$jR74O$B9WDW1`tK`LzYyL3A9iAcRxLkJ`I)n}v%Od-3H>j$OTBtk>(k-9o?8PqI=0 zB&f-+KOXVnjyKJlf4iHOtnuiE_4+ZVJ$dHjU<^o^YCjQ-wt^!;rPpBv(@pFO{9rdw98 z_s@3+yta93oyfL>7AD5}r=|`zS3Gm$_|(iSl8XBd9k%=91J0j2=ivT5cJ18ZmDjh{ z$-RMd{jQ#X79#Sc literal 0 HcmV?d00001 diff --git a/www/img/icons/page_code.png b/www/img/icons/page_code.png new file mode 100755 index 0000000000000000000000000000000000000000..f7ea90419d950f9e69d977a1f5847456d96a5f0b GIT binary patch literal 818 zcmV-21I_%2P)@LCln44|RX7Ti z0HI3&7jPq){odH{?_{%nYVq_;n_c4WbUpvU(&Cvnj!vq|kVC-vpF6vp^;;e0mm6HW z+WPzA`AZ|;pPp$&dNjzrc??4rt`k%Q1l*u-BPD0MQ}Fbm8jnsyezNt7+u{23>t7Em zJtETY?ja9KrVs^!LJ$xEMF3-bAZO;-IQJavE60KA7fO$VY_%N)R6s>g5mW>fL4&aR z*EVgKKTBXm!=L?S0?xM zYqL@C$|EDF2q*3zWW7;PDZ}SK*IE8;i!3U62=qn80C&*I1Le7WwNP5EcX;_oh2dJn zf#HgBe4@r$GcjHjmj2vAfT%(YN?}kK=(*+1*DkNNc1H5R++vfBMhACi<5uFUU+N4+ z<&U*CPmWi}REa7C6-t>2im1CWv5Jkefxa6>)dEj-CAW wWa{_}BJ!}~75?MkfaCnj>Dn=~vkLS70Pk`;z)@TQj{pDw07*qoM6N<$f@imYHUIzs literal 0 HcmV?d00001 diff --git a/www/img/icons/page_copy.png b/www/img/icons/page_copy.png new file mode 100755 index 0000000000000000000000000000000000000000..195dc6d6c365d298e466026b37c1959d96119ea7 GIT binary patch literal 663 zcmV;I0%-k-P)^@R5;6Z z(>-WZK@^7J_sq=QY_e{46@P+~LNG}sRzZsxQHvCsN*h5ir6^j7pq-$xu$N#V1gx}9 zClV7;5)7zih-s3DB)G=7|99>ji@So7-P24n=VQ(@GctDX!^_@$bj%oviY6e4Dh;od zooe%Wvs8LEKQ&&bL&@bwi=STIAI@!-gB2jC5+?y?VR~VkrNxam-`6*8&po|RZ5LpS zNKdJ%c4bTX`XjKsnecf%W>1%6WT?pKNdLLq{=(f(Col?P1+oq@R>)W(n=x!|*BIIh z6DJGw_w`)u6yN|vAhMteYK5#b%r5^v+VCFl1IGssaclZZMS{vs-LJ2$)n7DAr6==K z<29#%AXsBsDoO}SBaXR#_Ap!JKx)(1)3O2pj0_dYWz5By*X74fRT01$Fk%P_RzOMDtV?GU{nsYq#K8iy zb6qzLYDj`_f5$BwC*WE(t0m#xYJ*=jC2|HQYHh=pf#QG7oowi`h!L!{DB$8|qY{~X zu8@sU1tWq;n$XThR0%;45mdqXM892|{CJ@0DS*}>?ami06Q_^tvM~Y3K(_-`#m!8f z8f!QIrH4y#61;0Ym0cCoLl8{IPombPHtnn7%SbTdI&G-d>ZQo!_wBMF9nzX!g8HVY xYTJPGciz9XMh3w2fmZ(7v{)r*QZD48?mrio{~IaoqP z|1Ep}yDQG09bP~E^Dk?@JiKQJ z6-pO(3~IOP)IYisL6D6;oAEd;E%zR}{U$rMRNuD6nQV7nesKS>)yLo7JuDCrD>Abi zbj3uW23?^GA}9jQ{M^8v?ejL?HaT7AX5WPZNkBmfN`w-jL?{tT7ykZt$%Yln?p_m~ z-?>&d(LD(jAd}h=LPltPQbO$*Wbyl@G-_k5jXbb#qffHY03>M1jfEqoPJQ6Mr=Byp=^jfzePZV1 zLjCmNi31hdIJHa%e;5g=1(`u3BRzfeExY%=VCu{loOr{`%2hUR*x>tL^W_TTaj);0 zpPR6CUD1+0>4TQ6zVfH3TQ;%l6#(_%yspK@3gcmG#Q4!WCPyLU93nMKk7E2pcA=l45({2jNho>sdF*A~bA zxX?-cp~y_z_kFf+yqu3m#QiB}03?Z&9vvR5TNgj<)($Vm)xq5G>|o2sFMag&6aNF+ WAT1?sQBYt20000iHtsh1EzPArg^Q zIZrOk#rNsfjaSbMAL;<4h;Z=jvu8dzyz8N&Nb7=z03ZUw?9z%8KQEa6yM5=kUnka& z3?FJk2}L7q>na=T#;<7U*P91xfF`;`6%pVgWgRy0?1ZryL@%z52=-!fGXWGEn4M351L4<+7eDgwo|moqXT+s1&Kmn>-uQQ8mL7XY)w5Zk*(g+<3Y3tmkR!bL zOUKaUtj_pX26sH+=Iorwu}MGd`_%O-_sS}8VpG#fJA)Fcs#ezwtZf?q?Ac70mDv`rVs{$od?VPKeqf<-kUjNtS6ecB*mq<&M97K^6IVsDO zt2$Ru!b+>2S<}_H>$RcInusU_8PMNdf(W{sNlJ3FkrwMJPeBPO#d}Y^a{9TH(#{Y) l0D?dWAV4eUJX#h`!2gmISk&ZKd4B)^002ovPDHLkV1g&sd|Lnj literal 0 HcmV?d00001 diff --git a/www/img/icons/page_error.png b/www/img/icons/page_error.png new file mode 100755 index 0000000000000000000000000000000000000000..f07f449a44ff2761bfc7b752db3d08d0e1238b02 GIT binary patch literal 793 zcmV+!1LpjRP)lHwhvrAu0-@MQwt}+5~MQTtu}C0%;W( z1<{R?aHBz*g;pk%AyQVBR_Zu5m~;ES_vxI-O!vIF|H*|T{l`n#garr?$RMk>)?Y48 z(ZF2yTneKb};DNWF+jK)IF`6_IfJ{i|F3o%Q+l&4_HGBD|ACE8na_6>L z=s{^>-C(a7J$6=8A_%h5W!1K6dcL!D?XX+Ndk)oei?UundDpX_E&1Y&`)3P8#Ny0s z2Ag7_&ZPhyGj%)g&S6V2LNun1;iBQm#Fwlfv zgyESZR$X}2P;=RW!2zid1r$hBL{K7>2qi*f7>pT1=RdT3@-anEoH{ z={KFOO;Dh#bV*jaN>}M>RZqQd`S=6O9C3KpI~I>l%QFYfo;jqQYe5fcn`)+)zMm6P z4X&L(>gnN0!%J4^rhX->?$S5bY<=GEU%jc!KLL8sww-Eg;h z`H-yBHa)yfojYT}&G*GFc$<(Yja_q=lZvj66DC^O5%$B)|Z(CeD=n`|eM04SP; z>-=-l+xdJjA~vR6^xB#o{ehf~tSM`iwaQv$O<8NIHA}W_WOw*~ XD^gE}t;YAo00000NkvXXu0mjfl6ZQ> literal 0 HcmV?d00001 diff --git a/www/img/icons/page_excel.png b/www/img/icons/page_excel.png new file mode 100755 index 0000000000000000000000000000000000000000..eb6158eb5ca9c4b64c81e70e0fd894dbc8e2bed9 GIT binary patch literal 817 zcmV-11J3-3P)hdKqhFO_H1|Vn1E?(=|cjAh_&P}y{{^`u< zcYD@PK?$)4i~7o9*6F_$F$4lR(d4AAvrez^(88Hk+)+B7E)M3jc=Ewl4$S^`_qwSF zA%qz@=c2EOsz@0qB1IqsqJU)HaG&+}%`-OM8YqW{K85hqj@4&V9vz!Cm_n0-W#f;# zeEpJde%vdgRn5?(+PY=W*z~|lT2-mtown({ll8&3S5+lWz5K}LTRW{k{eJn3Qz!SU zQ`@qI_n2;K?RG~pYJ9=dj-RWgG;P&wEuoAxL~Q)<>x0b=dED^Outj&xQ^rA;u3pw| zca_ClTh_d9cxXg_U!lLRl0`xU@$=UXO|_dRdtXfKwPawmnf(LC7u}-U>8k6}3u|{8 zs9LHr>MIJZGD^r9h|q2yF24Wuh+PM^yMN9GP1$khlDkdyCY}D{kg}jEf-(kW5jBY> z0rB29ZhG-r=i_R{;+1k0?A-sBM;AP6(k1i9ZuixR4?MqXOvphQgCYj~RnXKKL~J9Q zIDNz~XMfO{ZhUg&BTtMyXJqDVqc<x643?SvKHx004lTvR=0a5$dUw z>Xb470000$S;ka1sfH4I-R8njUol7M4dtApOahDylptpYswf1hD#CwFoz6oEA>(SIECU&IQ%a}GXdnC!9$70`0uH1B00000NkvXXu0mjf!8w72 literal 0 HcmV?d00001 diff --git a/www/img/icons/page_find.png b/www/img/icons/page_find.png new file mode 100755 index 0000000000000000000000000000000000000000..2f193889f7ea091c292acdd684c595dcb206b5c4 GIT binary patch literal 879 zcmV-#1CacQP)@+1&aazfGU7ezSm^v zpACwO+tu0su66!(dT=`e05DeeCnCFJW(8|RKtKa{4LGONnx2V85A4m%PEQ?MEtR-esdM$pB-`H542D0)N2zSC6Imf)4L8?>%ZrW+H>xCKi$unm zvGZq-*Q%Aahx;C*=l+K%-?>XB)6TB$-L$r*`RUvlA`xP1NG2?)ge8@TQ4EN|Jks0u zcDg;oFC#-#R`YbWB`D?Q`1#y7l$LXhjSLf8AvQuB84}i#j0^!#g{VE#(K7h@5pFHy zSenl=@XBEdxp`h2Ji>CR%=qXJ7!e|?paKet-~;#ok#jETyeB(5&Bkhp;!+;51~G=) zH?L7xmDUu_h+a$+xuWom;AWW!mS$%%+436Rjc@}y?l1134kgD0AOf$OmjOR zstUlshZk$ZC!bAyIg{Y29z#&@3SJ;6D4+_eFume9^#TmMccC5u0J!ZCTnO6m$lnD| z5JeFHf`Xs~1vP>RLKI1GKDY<~pjr2&bi(fX;6Nj-ss@Ds0CcoO0H{JsEQkm{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr literal 0 HcmV?d00001 diff --git a/www/img/icons/page_go.png b/www/img/icons/page_go.png new file mode 100755 index 0000000000000000000000000000000000000000..80fe1ed0cc75fbb67e9398ae686641f8fb287238 GIT binary patch literal 779 zcmV+m1N8ifP)JNR2Ufr z!Apo%Wf%b9=l#x^8AolrB&K9H?Pg_|78WA8(M3toqE%3B#7*srcF`i*xhupr27%Nr ziguah1+mN)U5GNmyEfQ3-e%_i&-vb-Co#(>FJ+EhQEwjRYVQ(&UYy{U@%vbY||>@4x=B^vIqabI?L* z;-S&DS^V3-ni4^fl|HMkOEbgX)(390>A}|VIypb5Xee4g;7ck zwKh^A3Mi1Mh@eC$5lV!}Fw%sP623U`g3pd_Hr5sunLvTskx4}&Gm%Q6L}(l4x}jCe z*81q1_4-O*ffi~_nMslo?EQ8t*&Ec(pzEw$vc}pKn_Qp0>D7Jr>ATNC3w@9f|Y+U&+)#!t7l&wKp+nP{PQsb+fb=Yf!Fu&5j8vpRj{FT>jD z>d>$sx;A&+`n$HcF}&sYKSyR;=(=9tvvOj@hUG;~4qTYk^_@E=?$*^_pVh_bGnOt~ z;pEw)j{SK$XVc;qy181rT655gW9NG{(yeablViIL>cDI_ux8m>Pp{tY$J0lgo4#ax za?j0EA3s0S!f>{~ykN9h_RhM&g3K(E`q(dE(Rd49+%xMeR9{qlWnmd{s#(SQ>PmFtSQqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/www/img/icons/page_key.png b/www/img/icons/page_key.png new file mode 100755 index 0000000000000000000000000000000000000000..d6626cb09eb11a298b90a8a27b0d8eab41f49a82 GIT binary patch literal 801 zcmV++1K#|JP)$lC4gU2-`f*>nhR-;k6IP7e>YO!0^w)WK%3$w02v-#>5Ep64PCP| zJihT#O|N+nT7XR2h7dAB?UEAOhJF^mol1i`QtQB`HSY}RE7=r! z)zaVIHr5?>v2Gz&fdYw&2ug$!p+txby(aWZ7(4QT)l2`jX7eMQ{>)lG6ev(fWKxmH zOr%mM5$6B%u~qGtCf40#`mbGj3s!n+^%wnJ&#rl>g<4Z)lB5J6f!?|AP275)Zswr* z%T}4~{;_(?waU!#?JabbF3Cy-kf0{R{z}6$e=5yMQKt3BPcl2>zoTPMqMwF;3!_n|>sT?~bK_-2O_m+o>GJ6h zt=+g$4n7y%1qVJI7*5Yw(hqM=JusY{d}*?U(Oj*gT655eZ>Ksn(qrd7v3}DX1}C>` z+X+8@+4-pVq_fxG zlU}~Ye!0+%>J+pPk+0wV{GM$QaYM?5ux)w2z59=S&H2+K?;gH$bZGzL&g5>G ft+noNiyiPkP9r@8gT|RZ00000NkvXXu0mjfuqTIu literal 0 HcmV?d00001 diff --git a/www/img/icons/page_lightning.png b/www/img/icons/page_lightning.png new file mode 100755 index 0000000000000000000000000000000000000000..7e568703d6432c530224e443771a04fc1e2e59c6 GIT binary patch literal 839 zcmV-N1GxN&P)73{`^;G#xwAtHz%LU)4b zqTRU=ve1RNa3QT=ZM7C`iJ~QFQ*9t7<~pX$d^7W%^M8FFCkcQj-~0ZRTBCB(J0^iD z-~e!d9LR`f3#|=(>$bPvx_D-~2jC%pJ=n_e_OK zeJ_2b-KdDDh@@UlzBSMC;EPygH_MwjWBnPGQegihBV73D?-x9PlHL9A=(Vg=8^d<4 z<9r=UkxuIm)*CO=9e###7PztDxUv}e?$0)rQicmYhV`pQ%S!g@;K(?TVfhM#E?bM| z=B0gfb6h@a8bf5FVT-SV~6}?X}9lK@@Yynoty&1zdZP@?RfODsl=2XzzU% zS8gIN43How+9%bK2S@Xbc`O>`z5`%^;pXGy8^4f>9^3!Sp@|O&)m;dOa3q6d;4P-l zca|=H_{G&m?D_+&-}r{u-J$5T=(X4R&)q|O^gN8cgv;s#@5sEPT5_Z)oFo9Ac>l+I zc4ng5zHpps|9)<_Rw>5bKzE(M1j)dFWI_%OH$BJSz0?T+02W0)_a>#vFqb!*d|5wB zzBUN|M&ty51O@=i?kiDrjQ{{}e|^rU?OS|RdxxP1p5mAw36cX72#`R6UsoeCQFI~! z0ATITp!vfeYyQ?Dr=^5BAshfEa0nB~JG?nUa2Aur006MC*<9`)86SPS(W^`H2n+xi ztOWohsFfVfVWrI7PSKW}BmkyPoj(-|J?ES|BGd-}fIxr{00@ANnO*ZR`#)pee4I5T Rmm>fG002ovPDHLkV1i|Hc$okI literal 0 HcmV?d00001 diff --git a/www/img/icons/page_link.png b/www/img/icons/page_link.png new file mode 100755 index 0000000000000000000000000000000000000000..312eab0914ab59271384686255d1be913a6b3add GIT binary patch literal 830 zcmV-E1Ht@>P)VWgGzD=Y79#JI$lhEn`|2MpRa?Bt#-nSD~P0P(mbVe{KrOBoKnSsk>m|ML{6l zBosu@om4j#WzNLRAk+{k1JRvL(MfE&vvbb->v>W{*z*1_uMP}0cIRX*?mz+wk%*#O z%0D-+$B*g1nRkvI+_3E8Pr1NC6@5M&4vWaLCnNlr;lNlr4i91z&)eBGqL{L{GNu;Fof}GS9{gM5BJuH;2QWk8yuOZdB3pGR#s8bd~ zAmt<>3Q=YH$t5YJ5;7@+8Uh6=ktBgY6#6Pa%2F?h910?U8cLT43KAj$Z1*==ra&gILO{WkHfs(--F=bly9l~${z@AT>V$oat!YAD@M zBE0v_F{`g#^wOSP-u~!wvlmXdd*uqFqoZ0^{&nEMDU+=!>({S0wrQhFmoB}Yq1)~0 z^{A)L8Xjzdr(W4_exYO6u3a{4*kIeXZMJUR>Q=ksjW_p!rAwDKYUs90>6Q|C>56o@ zbrSq^Xk7Gq#>dAsn@un`Hz$?w$;Ss`%jV7L%9ShgHFV~C)6M>B`Tp%|nqPc&G*A3| z)Qe+}vT4-x^t1~XE@(6wR;^lPWMo9n*~E!cy~)YRsT2{`?fqeIw-e7N@mOA%UcCIq z_kH(_EK7|>pM*1Wt2^DaDAp|cvp*@(ZZDKpYkKC^?97(`0sb&XTXy7N#sB~S07*qo IM6N<$f;YmCWB>pF literal 0 HcmV?d00001 diff --git a/www/img/icons/page_paintbrush.png b/www/img/icons/page_paintbrush.png new file mode 100755 index 0000000000000000000000000000000000000000..246a2f0b426faa0c7f5ba009e32b1deaf88d1288 GIT binary patch literal 813 zcmV+|1JeA7P)otxGRZMDZ!_a~nK|b_-`n%VosaL{KDuPV10`(1LIen8kX2Xff$3BE zah#djvFGJ&eE^89Pk*-O^+&d>FC~^GjRYVQ(uuPJyS|-v?9lxA-+tM5>1Qu*n+Ir1 z6KhA>X4$XDH6?-|E5oe1E?pQ5-M;2xw_ex!x}I2+b=}mPFW$U%^;o(Zg*LP!K^1kP%8ynsD^= z1y^6xD1#GLjO{VLdh@0GKY7;d$+NGukV)GRLPn^=q=dF%B#XaJrNP`0E6=}e&Gj3d zKJbQre*WXt!60_DnIzgMQc6S#fvjXxsE1v7;T;njHkdy2miIqAS(nX~o%cO+q+b#h z5tIleLWvL=dQE8OC#{%y*Tnku&K`Tuub&_ELI0t_ea{@3f>Jv&sYqld(%}3_GY3Dm z;O{3*Y?v^A`a|D;^qrM=ykI)U6QHd%WhO~VF!SGjGn0GOZrc3mGZudNl9{Q#X5&-F zuGwVReFLBjE5jr!!^-5*L%!I%PkYH#Hs5rMrEBl^)9)9XTD;xjHFxVZMc3~Dw6#k$ z(-S}RE$bgMHv6Z`mS5|u$$78sp4G-8b@lVkl`HtEv+MGn!F&bKcHPi$$oP_;=BrPf z$(~b3&p3CsuQxhoV$%jIR;`lB-s7FDX)xCTXuJ7ZyIQk96uIR=HBt%-P?N*bp`)EF zq14c}QM+O70NTOa@V~_)&GMZ$^cQDlkyOCa(H3Mf+6xhCuZh`VSN{cQBl5Ys9{cp( rh`2H3A^=GuC6HjQ*7|*0>;m{7QlnX3z3MSD00000NkvXXu0mjfR5FYo literal 0 HcmV?d00001 diff --git a/www/img/icons/page_paste.png b/www/img/icons/page_paste.png new file mode 100755 index 0000000000000000000000000000000000000000..968f073fdddc1cc0f0800b1ac4001cd9a55f053d GIT binary patch literal 703 zcmV;w0zmzVP)AVs!l4K}n~L(tL`6d4Up4iSWnZ3Qg~4n+_J zDGk-qQdogO5JUtO-d5pRp7Nd7_r1^a|M&Zq%mn9Oe((|e0sw%Ur!K7T1pojj=U#f? zQM`qbQrM^DPkwa?DK_be^~z<~RgSMIa<`xP_4P7gg2jCwJ{9^k!fsU=#Ti|%I3p;>90Qd+7|~0h&mIklA#nb>ATL2+v$&u)OBgB z;nsHb)I&QRKeX40H~~cIZxCd}5C} z=79lXoXK%6YlyLtsV$~bSm?Upq|DJh#{|*a7XMm`4QJWZ>s6nL2R1|&J z0VPEwJ9?!n`o5PKAjc->P1Gi8BY*%!5&FVp=#)$mMJYul1Jton}gujiUf??eOy!x&!tsjxy;=Q3_DdcXx=a^OBhW0N~`A@4xB0a*%F? l+@c^sQA%W+?pa#c`9H5UNfS6T{e=Jk002ovPDHLkV1grvM=byV literal 0 HcmV?d00001 diff --git a/www/img/icons/page_red.png b/www/img/icons/page_red.png new file mode 100755 index 0000000000000000000000000000000000000000..0b18247da5850f3c2486373a3e179acd2772e8aa GIT binary patch literal 641 zcmV-{0)G98P);68^@7JE5sw#jpE*579S@TLkU(6yap1yN*Zuy>-hV%Q_v4Ar&!63c8OBr(ZRhFu z_kWs36-AmgZCT>x!RqM;Zu9tqvoHI~k@UmYo_g(*J3c%2{N8}7I+|qKPQzv}7t>%W zsu&9G)UmCzkDYSw{fBnuW4j;1fKV_nicw`$8C6D=F_qu`zUiK$2Oc?5UVY+D(`I@R zW`KlwqLftWHH3Z2_XVNfKn>VgT~k=@- z+N>c>0|@A_HbI9Jn`v0~7cfIF(TS69zaomDS1QtgvaBBfGEPLHccO2~3jc>n^6}^HAEh-2#VxC7YYcDXv!L9X= z-R*SOUvIs;n`8(LxP4~^2|JsiN^hq6cU}5dn4v1~Kl{eT7pm&f$PoY`hyVe%y8G*S bxB&kH@RuR86sIAS00000NkvXXu0mjfZBi!% literal 0 HcmV?d00001 diff --git a/www/img/icons/page_refresh.png b/www/img/icons/page_refresh.png new file mode 100755 index 0000000000000000000000000000000000000000..cf347c7d4685128a4a447abb9fb8e939417644f4 GIT binary patch literal 858 zcmV-g1Eu_lP)`6pHR2Ufr z!EI=jWf;Km|8+n2IrHqe<9xxFVk)&(Nh?w$Xk`TAyvb=#e=0aySC z00NkRDM597_LiNIJ2M^qhuTvB004REvvU8@of{r?P8tmo3;+Pk0F0@*jAMhdOkS&1 zhJPPfQa;pP0|4+Yk%#j>X}o-s#EF1_DMV93FsfPP`G*>Ks>L&)Q}w2g%slu0kBfW1 z+*$*0BC^oTl6>OGIq(9BgG4|C90Dk-N_mPazGrQ7uHZ|>BLD!-KmZ)z1e^#?1Sf(M z!6m}K(^b|i%$TcA5bC}r$tAA?0C)g1@CgWliJ;NAk&ZF+-w#}$`-3nZ32C6IVKrHp zr+(!L2hRfF&AsTw>_@ z1y23;E%Oz}?q^Q2d($ayO;-sON2t7$w(Z|o0Pw1YnSp^}0PI+I5HnDNsFCA?oorkG z5sUIGIq=FSyxcj+xlhkm0en=52Bx3@02o12gdAU$_i?v6iyFMuc7P9#zQ-Hf; zVuV$t9P5`m)F2w1?t6{<8%wk{w-PP#Sj#%1MbsjrSI6n;D_@8q9`~W98dNQf$j=iI z6~hpgww&be%X_HI50Hhx@W==u4TLPB;ei-J-1}G8wH}|{i#Lk-WZAyfv}k4y0|fvU zZTy^$u6L>2nWo(NDSV2@MRD}JQ4(c%G%=dG@_vxH?>gcH#*Ue2HC}9sapf8X?R$Z;XEnm&g zW99mh)5jNw008mK8)r^`_{yH0rNn%u1|SpC(tjf#om=+r#lh+?Kb>DVb9`|C0Bvbv zN3U(>f4-tAC1hosRoA7p(b(hL*V}(j>ug<`&U)|l$6o$)!>PBQ9RQSwn9asj2p*|xhU*R^vq?*Twb0t!lm5}`yW5lRy-U0ZYK?8to!;o!r!XeOE$ z0HB3T+6EEoI4PlR=wonwqJ+TvCoWh&$?CAPVYcU= zD{DS0?AkOtb@-hh^ZLq~FMjxYf19X?pa_YqtgZGvv2TaxcF#KT?O%=_*a-kW_;N|D zakkWsOe!)HsT5WRBiC+p;N-c>0Qwy(1D2MDBC595oXSiR07)sKNk-%9*rDBOO^HUD zZW#;)R&EZpqha<(HK$(tZYU#V29<@0qCXgU{gXeGpc_|pTqQD-WO|}%yKZbeX7k*H z2W~CK$v8NBAq~czrc5A(v51g0Wma7`G8}f=ZcuAiYYxZan@gP(;Ku66M6?bquGiHe z3Q0ya)%Lvk@kLixZfZyU@#UFbv+>pYhcj8TRKSr_sWG8i^X~UA**LvbD3(_Lba3xm ziYcpup*A9qJ$?AA=Og05lndxfwr`!C+O~h|B~4 z01q8H`StcY);%&mId7_+)76ovRpeNWRp&4M?#jx@|E-)x%P*A6t^fc407*qoM6N<$ Ef@ddc(f|Me literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white.png b/www/img/icons/page_white.png new file mode 100755 index 0000000000000000000000000000000000000000..8b8b1ca0000bc8fa8d0379926736029f8fabe364 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H;pyTSqH(@-Vl>|&1p(LP>kg~E zYiz5X^`c$+%8#zC{u)yfe-5 zmgid={Z3k(ERKCKrE7DF;=x4^O+ pzO8rLO8p|Ip=x)jHOtWj`bJBmKdh_V<`47(gQu&X%Q~loCIFbEay|e6 literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_acrobat.png b/www/img/icons/page_white_acrobat.png new file mode 100755 index 0000000000000000000000000000000000000000..8f8095e46fa4965700afe1f9d065d8a37b101676 GIT binary patch literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_actionscript.png b/www/img/icons/page_white_actionscript.png new file mode 100755 index 0000000000000000000000000000000000000000..159b24075191fc259cfd80c797a1b0d74c168422 GIT binary patch literal 664 zcmV;J0%!e+P)7Z7t2}reCh0o`+ zAlt$F2tW%oO@m<=(B8a-_VgLl#~yUMUDWG!0qFPppd^03e+x1WpkO1NhIaKD2A)-@ z=Py8(Wi%R%JtYZG#sTKH@6Z+&!S3Edf8jFJJNKuva#KJQD3X^7;H^fd2di znEN&c58aUG>`>P{Vqq$kLb+TP{?I!d4(|o59X_%|nVEZq2Rk60n7072SWJ{64CV?3 zgS!EB=eYxwQ>P2&$}(iT6UMvuFgHHIEdNA29!EBtg=v~X!DxxEH~}L2zn|52%xalaq@DTdhh{EVwv0IaQ=!?daer zTKp4I`l8SDt;d{8Q`5Ko;BXUi&oAG1l4}59P-{|^S(Rmord5s6qsh<&m@Ab^wqCD) zHyRD}lKLDzpYN&@q5&*47mGzGiqcXpmqR9#K|CH8kXS4RNs`(iEF%HjP%f8ItyaZK z6$%Apvsok(2>~dTO5jTZfq;N?0ch4l01f$k9?4{~Youl-#x{UDMr#AFIkz@SDwPtQ z$gQ^$2|*(Ps9LQiav_8o8Ne<=Zx1*M*syo80sEO1tB%>5 zfdHB`1z+!R@?ghPRKmL)hWEvZE$=*54ose*0JiUNTM_)cMDXhxEKg(?-pD=y<)L4J zT0dSyD0&NhJ$^_8Ko9uom%-ZM4BTM{Tw$9qyPj=-9W;N(Wi@3*-Q4pq`Gcp}^vvNr zyd&PsmG>fpCSZz?K}UIEd;HGgG%0MG>ymxKPwy{>wy(m*Atq7)0000~7 zMNw2LQirBVQoa8G3P(rY+l;L4iy+JwSqmy$9JlSkk z&*$^Eg+c)@!R|v4gdc8+TTn&eWHO0VD&>$!B%o;;WLf4CNs=Inq9d`xA4otCWHK38 zmc{pkX`0Y=9g3oGK{}lVy~OYL|C5lQ&U^l;wrg|7w=BcA9L4-r411?K7f`@348&rw zXD#uW)DK;H`hxO}u%=@Cj{;#u#_;bb1_KgUOT2Hp6;)MvC6P$vQP3=g1O5#aU%I!K zZ1dc@f}YvG&*Spnplm2rIp^VdA^HydZ0X1axdms2!RKi5x-SFA4p@ zC@N|PI$ryHL@t-(!zBsf2-+sYAukhDHU7Lxm88-p zDk^c;sHj}OKUc4lGZU}6umlGVNAJx0%sKDOFwQx|V2pVvxhYKe|L9TNk!~md3BVrm zYPDL8Hk*yU-ER3~LGwJ7N`0ZV&nOhBI{~~A;@ND*=kxg?#^W&`4u`zk?Mg_e)8XlK z`T#M+OaR1!<#Nf_>$S`xrqd}OjYhoJ>q)?3vEX8pY&I()ERjfjrXM$k7e+-Qs3Ihj zNyOuEQ2EGYG7ro!o6VOBQEwuV2z)*tR8>WxP{616FY)p1Pn1d}#9}cxolZC$4n(6- z35hJq0;FlHC{ zp*iF(lgUK(E`($(s9pJ8Kn?(M734H_63WHtf}6SQQ_MXEP!#0|&@>J8dL5TfG&tBw z#tYn{TCGZvAr>cca%YYn^!t73tg8OOJ2FvJ(`YpCyVZi*?Ur+1uUA$hAg8-aK)c;e zQ<)!XwHh|n&ND=$@^)>aF-`~n}#*WMkD*M|f8r$i*z7+W! qF|A!t*4fE(R`<_YIkN&?Jng?3oQ|aAqClPi0000t>5xmo{nArfL4CJwMMm+N`pQ3p^Le$?rMud6Rbxz!-yG7bz2z$^USP5(;udf(gfQ zG~f68y^)EvcNWp#bUoDt2=h+^%o-?-|mo~iieWqLNP<0m@2PTB7ftyb= z@H`K$>v9Pr5X`L|rw&CEN2(9SB7A2SE;d|j9@*F}sd(@*2l|P*fWfK>1drZUrtUA7 zNXO~pKn1cjf~~TLbje1g>EPPzN2GH#UIBxJ{}S9=E`{zs-w#hO?vcH+hJxroI5v?j zD!4lP0WXq8zUx3RAP@|Gq$}6wXCjFLZY^YSWBxN9#&g)ro$%5}aYn#y=tJ_aIT%4d z5d4u`rlp!};XGmbZkJE*kYJoi&N0pd*yxY{0${xD;;Q1h^8f$<07*qoM6N<$f(}t7 Ae*gdg literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_code.png b/www/img/icons/page_white_code.png new file mode 100755 index 0000000000000000000000000000000000000000..0c76bd1297751b66230f74719504b2adb02b1615 GIT binary patch literal 603 zcmV-h0;K(kP)^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_code_red.png b/www/img/icons/page_white_code_red.png new file mode 100755 index 0000000000000000000000000000000000000000..87a69145075afd8f8fd8b391c5da1249ec8b2889 GIT binary patch literal 587 zcmV-R0<`^!P)LWh{^|hy<@Q*xw+qo|KpY<+vaXbbW{L4q( zTsjXEJvb}e%bgb=o%W0h?4u1;^bWTqH8}5Th002ovPDHLkV1nrS0P+9; literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_coldfusion.png b/www/img/icons/page_white_coldfusion.png new file mode 100755 index 0000000000000000000000000000000000000000..c66011fb0fbdcbf210483d676b7131542a0e282b GIT binary patch literal 592 zcmV-W0k7R5;6x zlV4BMP#DI+Z{WQcKZBTk0lfkj5F$ztWhP#lcuyb@0@rA^#Kpu5KLA&Rgc}o#aSmis zrZC__xY^&#cI&!!{c|4Q_tcec*#b>|Y15wPcY2=o3;-Bl=(t4;6Ok*pL)-{*A;GX^ zS(@WGp6j~k1wBVR9)BB_gar`}HyRBXh7nM!)u5^>N~MyN6bc0-5{W?44iB<`2biXb zR;wk?jIQg@G!5l)SqhrXCU}x$GU-dY1sra}0uCq@153FUULT=jNwSk}0WBjKz}Jdu z<5gB*<^XtpAmp3m^ZEXQZWd1krhft}CoYaF4cSMvTJ01}X3X37KYdx-D0$c{doUe8 ztY{vlGr-e*;N!WAV%_hgUawyYrhegW>^F)pv%uUTFslHn; zvJ)l{%w(~{!O4`KTmK{Q{zCYltLfs&4?nz|6IdlqHCvX;|HGv~!QW?8P~_d#e0$v$ z)5XHEz{3>qMiH`1+qNYf?huS+@L`J9_$cjJF)Hf?@pu;)`9}BXwGUM{2!{y-4|Z{L zG>z?O%Cp8P5T#j1DID7u_*(Jg?7iss8AZQ+&;u_J{FmILf((9eoiL5nGUe>Fgq*U$z0000 zJ3A|*qoWOonz+4ZQ0KNhDB07SX1?#FrNy8%K)_l}y&kh`*KYdy`Y99&tgNgMLSSrc z?B?+B@HO@P-jS~z2Rgc6yy~Y~%>oJpBxsb$5<&nRLqiuR7K=@0SZj~jTs|sv_jWVX zGe?WflejOaq|Vec=s9+ahmXbyJ|T)Sl*?s82sr2H?Ce~HD5WI+Sz&tmWrN()wI2}+ zKqg92t*l^-#ae~;9%KFlWkmwnY=-UK`_|%ICZ#P1gdjK<2n38VXsuC7{WiU!fZFmm zW~Sda9(Qi@pxO}$ARY+;t##Ao27usOqNt7Hwq6K7G1il@xitj=LIM&{N&#SuX;x4x zmG6FhCg-$PI;hQ=;1iZ>F>^~@)IPi;l}fX?SZ!QiO=X<|pSVkNpJuLHzW(FT_~W-v z?vFpkyE>8ee4d=7wKauH5~dd_M7d2Aa=ICC{Nj7Blqv&DQEP#j_VeWV&WXL>c=LLK zsmYg^_JiDb;%U!UxO%qjFAvsDFj-kzT2$GbV(ZopPM$i$z`!7jvEk07BcC=6FMt4` z*0u3Sy`0b~%#(0000K literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_copy.png b/www/img/icons/page_white_copy.png new file mode 100755 index 0000000000000000000000000000000000000000..a9f31a278e17993d8d4e13beac2f9d5f7b42d08f GIT binary patch literal 309 zcmV-50m}Y~P)sF~CC`eaI+m%Y8jfzomMvZQaNUIT3LIrJ$h)_W{ zwF|LDNlB-g`Hb_G$;>3F$9JF3WYR|3fy2C+_wH}*xp!_4fF2UN4lt#d26oXwru}hT z0+0%Vz-l&|Tdh_L-Ng1G2*RBtBncRx;99K)&+}s0whhxXp{go}$g&Jk6k|vfypI5M z!1sNGVaV?!*L7i87Bo%cfO@?S`bajL{R<($@$|PtgBRcCGIJ_2a|&kO>G-s2aR3E4 zjssoScUa;zIdOeGHBnH13G)W-zt$kUQgNfG;96b=v&4NzRt&@7nN%v3HsG`<<+F$cumMs448N!W3r&2Z*b~D5^$^d6Jxn@SFK5Q8*uKSR7x{I|H-_N1f+AD zSYC5@2K4OKL$==F9U@CH;ONNL(W}oZICHn;d?~pw?GRIsH*x-68Oy6SuK`)`{E)46 z9^3(-HXa#X89SBv?u_YP)WjsQrp;}0X?Bxrvf12IKW8>3t`e~W9|JS<{btTNbNT@EQIWBSNJTX8AMGXD z-SsH|s#>j9Xf~VMtyT-YMD}5^SWHTY5->o`k|d#AE_YQd79j`%GMS7FNvG3b7^Vy9 zn0HYCJy5MyQLoqKnW|JOp-?D*<2V^msZ>BOv0ANd2n7t@{=V;sZrQ>3c})5_%ms4z z7!qXwHHe~!QFj8aR~&*-3F?O|;#(ESIXP~Os%|~y^7c15*q5`gz2-5ol!fU92NIGT z_ves+>+Tf3gfcL?!nimYmR}cw*|BGULzI^7!;k#3K^YO#;!+vM@N~(99+<;fdqr zYPJm+pXYFYk;neQyXXEcTQDNQx57i`Okp9A#n?<7!{#tnKJdsF>utb@JH7dU01gfL zEK2hoPZAnO5+je3&^i*hWM`qCW^vLK!O*?U-#IvXV?#6koWqrwnD{j&K`7N>^tR3G z8zr1(qVOzcF#nF1&0MZ5C$l8*E^Uth0000zE0Ay_3@1Z_7#f-XWL#E{8Al7>L$ z0Rx7lnddoqAyfT%&#`$;v0@*5YdW3w z7mLNoa=FAshK% zDiy@zakyMAxr-H?iQDZi^!t5;Eno2A=?>mMx`Vg(Z!?<53LHLvfTPa`$mjDcX*Qdv zR;ylN4OH+m)fVX&Z#yZpUae;ss@a$K&})gHovkhr@w#xyPVlfVgXti1_357y%I-UHDvRWYvPEX+#g+j4Q9ayba zh7uQN1j%HQgA=Fp9DfODAU^*3*FCs^6IpO7xg`RUXyP)(;=d!ly=#I^l3e0Cub`{H Z`5PU3+D2e&<<>s`J(VpX#y^kqzQ;#=2x({YMw9Q&ndHT&`BD$#%Ql?{+)-OuSA`r}MWJ zVg+2Gc(GW}a=BERPNy^;kEz$|38dTYlFQ{%5S!g@|8f8D_!Nu9_Ni2glF1}xG8xi! zorc39&F6EPOeWOt_XS`W2H_Bo$MXugy}SEctJQj=(TLXTHL(jRXfzs>NF=0SHk;94 zF!&HjdZNX(3U3;LY64IMX__Xv%_wjLC!J2`0Jw?X=zPK$C$`&dYPDKaC={e16bcE@ zgun^<0k;ak*=xLE)@(Lqu~MmsFoMCLY&0Qog`NO(h@kyxaA%EbwJLy8sU*Vi`~52K zX0wrqW;_LmMq@evX4iAM9Od(Q0eHP$1%L|xAh@vrqB`HPQLon}f3aAka=9!3hr=O- z5F9`#J_7Jhah=U(4RjaRhkS4Xkk98kDz-`i!r|~~AQ1TFcDw(@<8g{aBE)l)PNxNE zI(RPyc>9e{@WGSMU%i7*v{!&P$WLz25)0oc=Dl-yy%xYZAm4b-rttL7UjR#%`#j_F R;_m(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000)l$0ECbfb-0$}>7z|u>IvuoHEmW&j4lzv=KA+EpIObc7e7{sGA)QVmnM@*^ z%|h38^m;wC+ilpk%>l#V5LCqP_y2_Cayd^XlX;j*r54R*lW!zbqtSpQNyz8(JVmWm zyV4S$2{Uhyc{Cb0QQbf{ZGT{Kr zvJi{K_&f+q^Pv4MK$hhS4TgFj_FD*rLOePdE-E^T7ZzTFCRUB`*?9&h(a#C!-v8lWG#k3AOJQaUey6Oasked^kDPe=Khg@7s584 zg`XfS1)&u*_c;I76#%`kkBfiZgKKo@0)9d6vZw=ExQUtV?eW{Y1Xv}=4X(2zy85d> Y0C^(qLv?Ui{{R3007*qoM6N<$f-gW7od5s; literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_edit.png b/www/img/icons/page_white_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..b93e77600def75c9a144d3d0a5088a62c02cbb0b GIT binary patch literal 618 zcmV-w0+s!VP)$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>PK^TXNSN{byMk2AI5vbwp!K-%-@!-vPR3iikL1L7HA!^!~ChCFU#lnGzp88=I z67V8PHBo4(l$u?-AKmT8?#_0rKW9dUNRbpLc`}piywAM9$xZ-3fR1C75T(BjCn-l* zjUcci2oXXo-}iqun@#)+`W@kL_-U&|2>MxZy~3IdmRm&8b)9!2%ksg3R)nNnT*TJOC=6{2hG86Dz+<^p6qfG5$i^UNUh+u)CD7O2 zK>Ioazn;U|+X0x$=feveYZL1W*Fm%e5P1sajd#eW#^5(ddx76*pt$^)b}$Q4oPabL zLc^HF>Z{8za;f$LtN0P$6C?1{X*jtXkRJ8IEeyiSzencvH3Ux_y>y^}wfJrRCQN#9 z?&e+C>sSAfrE%mZD5RfZ`gSndD)=P?+nG5Oq$zmY&-v+gc7R6c0u8^Ke#|XOq?gF@othF3zFpM8Il<8BJrWqBtF>b#_ye4{0)Xbu6j&@UIhRE002ov JPDHLkV1nWI9dZBw literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_excel.png b/www/img/icons/page_white_excel.png new file mode 100755 index 0000000000000000000000000000000000000000..b977d7e52e2446ea01201c5c7209ac3a05f12c9f GIT binary patch literal 663 zcmV;I0%-k-P)^@R5;6x zlTS!gQ5431_q{u#M2 zg&W%y6a}>qj1Z|7Vu&-DW6d~k-n;jnHsjb-q#u0C^W!_5^C=MlKq<8oNCQ6qS00!X z5eI;XP=g!^f}j{hku}E1zZ?XCjE;`p19k(Rh%^AQQ54xysU+ocx$c#f61Z4HnT#3u~FR(3>BnZniMIF4DouI8Hi4u>cAK%EN)5PO(ip3(% zIgBx+QYirR){Z8QwV$9Z(Mpt=L-Or3#bf-G@66}txq0yc*T(zNTBDT0T8rO^JeNbSI-Tzf5!pBioy4NwAN^?iN#{;fH1Jke4Xa`^fR8m z%h6dq%xX)S?7`zae))(Xst^Scp6B8FejQW?RLTM8@0=vnnntuRGBM2dpo>gbCnTD= z^<;=JuqdSf@O>Z8^XdR?s+KEfhDdB_#ahFj^giCtzT(s8kA$AViyTqaAR;KGaLzUU z<=GqA4bRwpX|IG~*x>pZ!@zLr`XQ`od>m(`;jz|M_*1GDO#$7;n74ppb8=eiqh760 x0yt}J1#p`gw$`o!R{d7zU9~!Un@nJV{4bstt4Au+Up@c;002ovPDHLkV1kWhGjjj{ literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_find.png b/www/img/icons/page_white_find.png new file mode 100755 index 0000000000000000000000000000000000000000..581843637079359a6a58fcdccf0763690c67b063 GIT binary patch literal 676 zcmV;V0$crwP)_k3`4d{s8lK_6bi^@vq&To98fNoK}7)fx$e2^Y&@<^jR_Ee+8}KG;X`@ z@bCyiolqX>bb1ZIs%QGnjzFU~L8H~d?e;*XP(h(S262}XyZ3a0h07r{KV?E70l+e- zE`%3x|M5#q+;HOC(h@A^M)7Rn13dm0&>K$j%k_F4wOWlsNCIH+!c_#{eS&TL8v4yc zcpnPEY`cQzZ$ILq{U-MA6Z6Z|1p!FZjQ}tXSb25J@HphEqX-6Hqo?-_Zn@{d#>2Ml zJGhxTAd&emK$lV-QK&VM&ix0Xy{GyS3Wp(+E1^8BhD3T0a)m-Lw@Lu4zQRrP)9(3F z^>$hh@N>OAXrmPYunLi|fJ$_*5i`46;M>~*5D{bp>-OL3{+!MJa`3kv~Q#QfQ%c z)1s}QE<_XaYBG;IuRF=td#+}fi4h(6HgoUyJLi0t(*dA^B)%@8kkG&bdM5P5^Z5WF z%d%>m^SbN0XeV)wbUOXn5Ag#A$gJx+7-OCkMM1S%MWIlTkbFLmOeW(&n&wUd&;`>p zVcRy$Z{K0=?SpNnP^;BYEEXleFbq(UY&LrXX$6qkJ~)8+b{=jj3HEXds;Z(?D%}}L zX3`39&dy=Zyar!ehA}e>w)(*vrCct{PI9^2Jpj&OZS8<3-@{0(gNv%1{)zAiLY+_^ zl}e>Ofd4&#Irj#7>=o=Uhv5IJ@?sN0^J|(WL2Uun$4}si6}TG-s3T#p&6GE<<2W)O zf{^Y2HlO#*QDvTp3v&d@;8*}aUC4lisG9(w7@d5Y8y)}U#FwCkqp*Mcgme4{&gGRf zlBfd`nF9cQBKB2_L{F8G2)7pAf$i)Ds`|}-c>pc^LRW{w4SQ)3N^BbZx)6BlCZts! zKph%`(m#xg-q3I7=(us;9<)*2%iuQ1J`oV3gU6V~T}^JU5714JN33&GwEEru0d}Uo U{MPL+lmGw#07*qoM6N<$f^vibe*gdg literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_freehand.png b/www/img/icons/page_white_freehand.png new file mode 100755 index 0000000000000000000000000000000000000000..8d719df5205f7415ce657e5c277db4533c82f346 GIT binary patch literal 639 zcmV-_0)YLAP)p{{sC7)XB-g4w*W1a1)XtvxrMYa1o?wn&v~3 zHnC|#(>B_M1d`_7gfzLiHy=0c<2kQQdXu*33(xYN_xYW39(cz9jEVT%VokB8|DoF~ z8u%Q5sdl@4VB7X#uh+v_;yOGY&pRi?378ghv)P1cngiAAb<}D#l*?rWDV0j_dc6Zk z-|P~AJZQCA=yWcQjG8fYnimzj*3KqTfN0Cy!G^$7)+bQ$+mHVd1J zvwOR^5Lm<|R+uyB1Nu4vL?d4qa3tn?9H7SZH@~u=fFHEDfSH|bHU6kh0O3%cLdyny z{`9S2Sw~WMy0MPy!64i`jdk4Z3>^+KIL_fN2V_d&ywBt`^IJpxUI$=YAph~5`;xCe Z{s%Y0vkUXDnO6V+002ovPDHLkV1loX8z=w( literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_gear.png b/www/img/icons/page_white_gear.png new file mode 100755 index 0000000000000000000000000000000000000000..106f5aa3611a4807ec8c21701c631730275089a4 GIT binary patch literal 402 zcmV;D0d4+?P)<@FR}JvtGRKa0_WfK^c7uXaFH3q@Y!Hnl8VySc`OtkPN3;#l*y*l23+99h*9JzA00}rAC!#M1dZ#v9YOBH|eC*${MmzzYjBu!!-< zK8tujf&(6i)1biy*F>4{f*Kd(IU-JsG&#b_@NgTnx@40)2@2%c;*=?-2Za=}O}7&( w%_K#(S>e1j&gfY?mR})n>>0+8p`iTe2d1K2h8#$+)&Kwi07*qoM6N<$f(2cptN;K2 literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_get.png b/www/img/icons/page_white_get.png new file mode 100755 index 0000000000000000000000000000000000000000..e4a1ecba1b60e54f3777717ed105cdde745b7184 GIT binary patch literal 516 zcmV+f0{i`mP)o)wchR-92qq~y6`XqbKmElbB3z{pkZs0VPF`CFvS?7jDn^mFo>d9Y&06* z&1MsS!M-CH3ee+h_sy)Ms%B*ec3R0RpVi9?*mU84yoq(Bw8 z<4(999dJJE!V%pWT~HGRIAb;(#O%2K3?uRpz}AfgE8e9q&OSdr^e^}lC$QXZz;S2A z)w>^oHy>?v)q--`!pmuBe96PxP0u*inQvyFW(llfv9 zXV1s*Jh`y2H%B3ZTA(AzpsQ?hb6_PyZ=c1?_B4fbl>G%!@ubJln=!)x0000#DY{xaiib^#X=YT4@yE_&2#eBulEdzjE`u&@G%2(&u{J-<}d(^uY4W_kMfEX z@!X)AR9F&FL?RJyJRUzvBoeqN{5kY`z3wcM0+du73~_0|*lac! z42Dw(Eg1o{Ash}P8jXrqN+1w`*XxDD;ShmPCZC7#4;wWbHoMvBl$=zF-`?*9j*Nbjd=v@OWt_BgKxP-3wd zy37?ATx&$b+&zRM!K;BD%Okw`Sb@&Pak8$KRX19jWZmC0&n*Ggv%j8nvSPDFw zEkV65AGOoBQ8kf`R|}Px*&INNS%osq9b{Fq2I(x6@xM>tg=vRLF?I`0rWzHyRc>}g~)F_Qn`A>)C_iwK%Z zrIJ;xR)UI1Y4Ozts|-Nho;q zVk9-bX)%F~!;63iu$Fk=VJn3~fmb5S@@)ZqjBT2{f`vT`b2}zxb0$o;EF@G3&BHK^ zc)`1kUzo^Qkk$?KFKHNBD?nP-MJ3b@&4fg;g5l2wMi^g?9qj+~@b;62o_U1_S1J`g z7m^UMg25FX1MJ5AQxAJ5F5WDt=$=-@JV-!LHA2vuxl9kN>PS8x??^AINH6LjF*#nbk4}=n3gfWp$kEX5IpHS zYiQ{@d7Nl&d$#+7-TckP&Q}N91e-C#5QQ<|d}62BjvZR2H60wE-&H<>}%WqH(_V;zPbB1rgSSSC(0? zWlQ#?N3UgnJ9m2C29w!SwoOo5_2Iq!<8vCyEoDoj@#oV($oJEg6Bj@;nD|2g8 s%L|>IZ381yx9RvPhV4J)*SeoEV4lyr#k*`nfWBbxboFyt=akR{0DpOPi2wiq literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_key.png b/www/img/icons/page_white_key.png new file mode 100755 index 0000000000000000000000000000000000000000..d61648452284da1bc28b10385f95b5d2bf027901 GIT binary patch literal 616 zcmV-u0+;=XP)-tZUVHjYHp;RjQ0M0pRlXN=mLv{hk9Ebp9&~+Wj-T9IkpzWPWd#fZ)d=zV^~S`;LE*!&u-?g42^wwN&Xr1~#d5ifl_2*B1OoS}CDno^8a50ArfE8;stQF>AP54J@H~%T zFz84s;dO!QJKD36(~!QOg!t_^gfFcSKDU4yK0+Ypg$NT^mIYcQ6bk*3P(lBLh7Df_ zTu=2xC#+-_%)|{Cv8zz0t|0y4D5M`xAc{gwOKc`ou<*&VjUREFHs1qd<_xSkKeTBt zgyCi=@jj;&Ns^GsWWaIUl0Y2azcDlF@u{(P*!+EH;lnU~b|Lv{4|4Hdkh!qoQHiE$ zY#y>KFA0QEw=4Z|uV{0A^`Y=D}hB$GP&<$bi8q(u;p^0(my3Rz7fP}|# zGZ&#uor4@c3q9r|f?H6-UZmfgKx(iV(MQ`MPWB>iC~SxnN5H*zb*A3#zWwgu&c|}3 zn^g87H{pdeasl%Lhmab&jC?lES}7C?4BFDNA<}20hoY@w_IU%i*T;}}wh!589}7~7 z#Ug`-R~4j&+K_y4kW@X7qLr-)S5qVKU)tO;+kXJ++{vPI@{hVK|PhMVVx_`)vx~zUs}c9O-Ok{00000NkvXXu0mjf DS5_-g literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_link.png b/www/img/icons/page_white_link.png new file mode 100755 index 0000000000000000000000000000000000000000..bf7bd1c9bfd78d689c73ba67cf914182933ee68c GIT binary patch literal 614 zcmV-s0-61ZP)OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_magnify.png b/www/img/icons/page_white_magnify.png new file mode 100755 index 0000000000000000000000000000000000000000..f6b74cc40f82fc83e4dfa6e9647ccc1b34e6ed7e GIT binary patch literal 554 zcmV+_0@eMAP)Vb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$f*wetruo^Ag2=LamM1T#~4RmC^m`_ zs}H7d&XJ}mg+hU?tu0noRvyjI&o2SRAeYZFesYkts79I^jJ7!A7%6nJwq8O?iT55M z1OQ` zbL{!Cp5o*IRmE9PInMCSPjTwfT~J+EYkz}tjxY=fg5Yf6EQ@DG$0kMJ9h^&$W}9BU zP1oj2;?MWVkKIEl)r=Y;L^Cx2q|>!)qJJ8zE7-V*-Cf7V8_2#1c0N975t~+&QUpQJ z5(uo(-O_`%Rj@U@t>JYAgd!>L?0Idxtd#oW2gc!jinsAEva8|kF4#Ic**mmml_{d^$s}Q5Q)KCys4sfck5bP1SyeHwh2`A<@N&t2j0^lgHC_^(pAAPCNjwl+>AN%C4Ll>_8Hjda%9 oS~i=#*e)>KsPlg0=2)Qg6BCqJ=F8HdGXMYp07*qoM6N<$f@i)wr~m)} literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_office.png b/www/img/icons/page_white_office.png new file mode 100755 index 0000000000000000000000000000000000000000..a65bcb3e1e9613cd9e4950850db43d7025a5fdf9 GIT binary patch literal 779 zcmV+m1N8ifP)JNR5;6x zll@CmQ5eTZ^k*a#RQf}fVOdd`5NJh6S(>6Cf$wEW#f&JyAR#GAn9>Gml;nOf3WCDa z5({5&UB$(IF?G#$x4X@Ickg!Y-HU!Z_rzX=qAq-XI_LS^=lOCT0|0{#{kBkYDS7{3 zD`iu%E=`cDX_^#^#n$5SIQ|4Zhsk8>N|zXHXG@*41$i-7`Jr{8`3S_OEcmY|RF48wXkk?WpdVM4OePBSbfh z#4_=eXJg@3epx~gi>QbUmO}Bm(ENN3+@c?jWiKvSrm(o|W}Ud*?vy~fn1!V~Cl4kB zI-;c!8f~-v)jX82%EG($>?;KSD$64f2&4qQ#=Yyrcpy$57RAVuV#vKMP)0hT$r6m# zc^F^XaJ8R9Q|}x^NoJYIvYZkq-z}Tnj@UJK2l2H zG}p+VvtjP2Z%bsb$~7QLJ9#pC0dKi`ppOd^_V;ME6tdzC0PtV|r=@e@37O`%0k^=5^`%cf$eu00N17Ro!{^30krz>a%3j34C?*{Mt2^a4~ zK=P+Qq%|f;Tc&+9ps;@Mw`EE%rgs&#y=j6BUGg96oIqdwj9-fiy*N(|@o)eD002ov JPDHLkV1j#pUPb@_ literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_paint.png b/www/img/icons/page_white_paint.png new file mode 100755 index 0000000000000000000000000000000000000000..23a37b891c2f5faa3b8128d45373ceab794ca609 GIT binary patch literal 688 zcmV;h0#E&kP)PK^TXt2QS_@2qt2T|9~baC-vaPn=ziepcfAwB$0!O2Q)E}1e8!q+9)KT5JVKU z7HNY}h##OS-BxWHWjD0wrPDeEfUClHs%Q6&2u@FTOJkKMQN|_Rlw6rQz$gPzqGNtj z#ruSeFeh835JJFiM6vp@6M5bXj%k7CMt%SIwfbF_fD-3*Os`9Ly_Q3WQ_SX33E{pX z9_WIeeTCGQ3wYALpBcK+P-iuw;3i&7xCua37k5# z`>c`M@sGeC7cdsdz`aE9lOz!hPholbyz%T85LYf6O*@SA+9&+^7k>+4M8$A8iNQq{ zQvn8k?-+dU`Z@gK0z$EtPV#+`^OH`R@cE-cuE&_!D)SZGxmQxeobP_Zwq zMEgi6ePN45N`|V1so0uE8^}1xw8s;VM%Ai@7} z2-&Cyvez_-O4?6uv{zTaj|YeYEk34i~K@`8YW2g{x* zc;7z3lItpVy_et{Z-ZZ)<@*%{l7Ao8mu@V7*gz<_1##mwW*%LEwCdzNsVLYx2*T-J z#HeQ*_a=R~KDdVNk$EVgAIRl$oQi_(`_IrdJciDpH|Xe{K-YsMtc!cRnFi$qzsr4z z5*$;ecov%3->1{YNy6-Gf(Ecy&_I$CjI#laeuE+S120^|Vjsf)W&i*H07*qoM6N<$ Ef)^4A_ab^avY?n0hpS-#mn_4{O$e%cm-@NH=3`90Wq+3`~HKArSdfX`&Z12 z(CY$VW-MNtXX4xy%yUeE?}*~0-|iByA@ZrwXgph4S*bhcc5{HB!DFVm_v}P*g7+Q~K}7K0lcp(^N@X>U zV`{ZpeIf${R6Hgg4FL^`X$Eu75k(PE6ycl$AW0Ic)#@rR7Z(7;V?i-dR1K935Jgcx zPfkwK>2wGokf!Nih^ARp6-6arYFG#(9Ta!x93nFEjoA==z(g?#sDg?Owk?Mg7K+>l zWYsf(<`#+$h9Sp6gFOg_dd+80SkUpk&xM7h0`Sov9W73spU;GP073|VfZ&Gd$J$*0<~TV5aPS|qWH57|VJz+d0000vYep8SaFV10Q$h+;hIUPX_=v5b}%>Tm<(&j1&5;I!55C)oN0s(P%ZB zP3Q#ahfpXKWF@S?jm4U#fv)QovMhrriclyNs6-G12#3R##4PSZ0VY(dRWJ;Lwuq{# zAW0Gwi$yA^R4RZ!;W+L`f&%x{=D^VK#BBWL4Ys{;*!A7Q;!=dN<&D8*GzGaF4`hV4 zDbY0{NrMX>ZqF=0((gR5-zL$kC*b)!fwu{Euru|XrG<$^n#@)7i_>rCmRxnDq>$Y%gJaCkRd|tE*a2x05Pe!I^e13o69#&RQZ36s0 zB=O|K2Yi(jsMqThn}9t?f5E-)L^naZ+db$&%M$!bCdm=jv7?t_lB?3&%Ltq(>ESw? c;MI421LCcoDG!2@;{X5v07*qoM6N<$f`UZt7XSbN literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_picture.png b/www/img/icons/page_white_picture.png new file mode 100755 index 0000000000000000000000000000000000000000..134b6693687b2fa5fe36d48a9c0b8001f937c741 GIT binary patch literal 650 zcmV;50(Jd~P)VHAd+bMNh~)LLRqN>D)-jd9UvB%+hyKX5U|&4t0)fzgD-MPpQ$nHU%yoz=vI zMGb>1Xu!6Hw$NT~@Au<4P-+{9;Uw?&oj31uzH>xX0T7Xkz!(tn|Ed9-s_FqyReC13 z(ll)vW1O{Ck5ihay12Ob2ABc@RUI;zHpaMiyRDs0r>|D4rHw{ItJSJnYjt~jTbGuW z`X(~}?!&86q40R8<4zYw;$qi0^3ec=c&<&H;r`8W%H=Xymf^i;Wo6~<+}zx2UMzpC z*6MZN?(FMv`n|KO3(KFiUaucP0;Z!@LcUNa%8#vGK5aZ>wDgB0Gi=t*argWJcdlMQ z2#MpEX0wU+9&0U?N(F#OgpviU_Y{jYMsj65U3|PjwUOY}lUYj?MTiK_Il}NCVx-Eh zDx-TzMk7se+M#W_>?A1-x}ZXw3kkyz5kW)_hkjsi@RhKadN#H$Hq)$07*qoM6N<$f}lhwPXGV_ literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_powerpoint.png b/www/img/icons/page_white_powerpoint.png new file mode 100755 index 0000000000000000000000000000000000000000..c4eff0387d5888c638ba09473ba6d2369f7b56f0 GIT binary patch literal 588 zcmV-S0<-;zP)HU2HvUSp%6 z*n}iP63IK?dpo;h@sj9~pcxo;VVTc-XLiP@DgefqE#NE=@oyUd-&HjLpsLIuSFXV-EMck)oQ(A`s%*^&wf0(rNiNHsU%=0Rw;WC z(kbc37l6fo`-0uR!pYkYv8U^3?nsh^@pw!K0TH3uYyx1_2>|JbXPmfskJ|1YAw9w! z9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iVwpK$khlIX10X$H6^A_stBJqvLhU$?V`QXqKme*s~gVDJ4A;LTs_e15jhc1;By a82kqHEPVYFAD2!50000JNR5;6( zlS@kiVHAe7MZY2;Xi-5)WxDDgv@tCUl*&p14T@Z~3ThM5LP4tuQfLu@EnG;nXc<8S z6&3BN?fx-cv-Kp6>HRiNTHE>$X( zD&=w+?GWC>?RLAGC6Yix;an~UmSt)tSf}1VS6N1N2ONORdD? zaj}w6DAZZdOud9Ep?M?{iQWbE5^9HLLZZF|1kdy0Tu4InEuboP9@nvbZ-P0n4AZTy zyMRIxRDmUE#LdqYuD=-Qz4N^bC`_#S7vcLn1M}{J(Wl3#c4VWczu&)AjUlh(11>gp>f`wv{KnjF%!aA*Jk N002ovPDHLkV1kkt*XsZP literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_ruby.png b/www/img/icons/page_white_ruby.png new file mode 100755 index 0000000000000000000000000000000000000000..f59b7c4365fa1720af1aa04eb47167ddaa6eeed4 GIT binary patch literal 626 zcmV-&0*(ENP)ZS(e|#C2>JN4>y}l*tQ*E7zP@R2CCJnkW?xa6bgk%(hgtZ z0=~d?U3i`+Mvi4!&~+WPT1^NX#{u6&QIx+DE(oR{&T5&-ovF?@wGw)P&AtpHZa|G%V*GUUqL@@!d4V$`8=##4)ytY959JG zdc&Kho)&AL70^i z!PEmeeDWCB-UbK(*4JST44^tV2z_J(dn~+vBMJT97_7rzFio=~XczIv?PQ5$v%u~y zu(bteXb5I1h2zCV{Jc2~V{{yzZipgsP6;k264$*#5q?GzCm|CPa9CKqm4b116h3Pu z?+%Cm52plC8|5P0@igf2GV1KkCfk{Zecu=G@VNrf>s%g9c5D%@cfxVb6$nY`1IW=4 zt10QqSps_2JLp0f3I0j0u>#qA;v!+T))KEbCg|mo3q0pG{OR}p0fPds8+K~d>Hq)$ M07*qoM6N<$g1S2e3jhEB literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_stack.png b/www/img/icons/page_white_stack.png new file mode 100755 index 0000000000000000000000000000000000000000..44084add79b9a0fc3354d16bbd4b4b5ff8095da7 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R@9E+gqH(@-qA%AW0|7U8+xDRI z0k`B18}ImRw2g{jTGP$Pmx3yI6F_2s&$|`cJ!i0UN zB3H;=r{#{FwLaNVJ&hZl9+MTHGx1T^-A=Q0?hRb#8a~x50X%;`b6ik3cw=#XdxWy= zgrpBoDjpwP&g9<9h3x!k_B!?vuTJVkmIJ-U N;OXk;vd$@?2>|rNdMN+^ literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_star.png b/www/img/icons/page_white_star.png new file mode 100755 index 0000000000000000000000000000000000000000..3a1441c9a12062a4bb3d706000d3ca14399aebca GIT binary patch literal 565 zcmV-50?Pe~P)SCZIX8XZzY2l?gCw6LlgWJ5Avz#QX4|&mI8LN)w~J1vgL=KLAhlWz*=#m~gyvxa z&;iC6gb?aZvMdXxX`<0+D1hs_pqJ!wxqlEH;CJ)je~uL(gpi@v>!I0f_Kl=E(E+Tq z26na*9gribxx-Oft(HnstyXUUy!39&E-cI%J5Rsy;(PGZH{g{ty!HVC&yGPT3H8x# zw{^gBPW)O0FMoh{k%l<`1a|To_Wl&u&-GXm8izU|&<&utILc4wc6s@u1bmTz6x{qg zTw@7=FQRcg&r`h+gcR$*Jbv+*DPk7v)B@e0o2 z6IlBXW&8xh@9)YKiV~2>+z&XKd24JT55YWz&JtfvCg4r^~bLP79-yS@n$OW00000NkvXXu0mjf DStt2z literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_swoosh.png b/www/img/icons/page_white_swoosh.png new file mode 100755 index 0000000000000000000000000000000000000000..e7708292adabf4821612bfca032cbd019c63180b GIT binary patch literal 634 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_width.png b/www/img/icons/page_white_width.png new file mode 100755 index 0000000000000000000000000000000000000000..1eb880947ddf3e745c29e8d9dc90f09c7e6e323c GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_word.png b/www/img/icons/page_white_word.png new file mode 100755 index 0000000000000000000000000000000000000000..ae8ecbf47672a874c0958d0d113a56162c2bd364 GIT binary patch literal 651 zcmV;60(AX}P)hkjP zNW|QGv-YFNLN^qH@tJycPNG5ti6B7;r4mEr#lr@*T8*M85D`{ZR^BWwF23T<%MYIh zdC)S*p=|xk^!~H=+HSZ183~y8v4|mYmZxt&)5{{~>J`>E223Q5>T$=~mtA71q-jdG z+eJhOAyBW^0k9Gk1+rX8)zFx((CG^&tDY>6XaS~Fy!WJON|Gdujg5^~Vzt@o%BcYLiNiTQSD`zL^ociBz_>bDlpw3kriQ@Z`bVsGz-_6N>$&gTDiKDTKR^ z-hB*tHa^>!oD~5TK^0UK5rZ}RBm50Bv}S-yA%s=Ha5RYb{)!z2N&$&64gfhybBu8p lh~_|?8^bu;BRYt{<}Yrwd83Y=s?Goa002ovPDHLkV1l%3CP4rI literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_world.png b/www/img/icons/page_white_world.png new file mode 100755 index 0000000000000000000000000000000000000000..6ed2490ed1432d5d667a76235360824a1088e928 GIT binary patch literal 734 zcmV<40wMj0P)JT{hN;C#tgf#9krG=I>5!<*aE1_(spcgF}<`n4i zJi-}^6UUeU4jUFwdCiVPDm%`Zx^UBa8J(mnR6wEgz^}o8;)M*Y(@l_!Kfv)}4+NuM zaPXE50z)r)9=D=SR|RIqfQ^j}Hu!fzMeQBo+@PZk1G8hOw|vBTvkx`HM)Xe9q3xao z@`p0`NO!2904FHSLA6E@Y-O6zH$DQzvq@aHsz}}<(!v(Z_+EodX%R&NZW75g+nENo zV0020rxE^;7d!067AN>6*+&YLp$9uH6F-=In`XC{Cn%+o|5)b&boEPr02w@|P*oGm QmjD0&07*qoM6N<$g78X0Q~&?~ literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_wrench.png b/www/img/icons/page_white_wrench.png new file mode 100755 index 0000000000000000000000000000000000000000..fecadd08afed92536be91ab12d8e37b6bf410d5d GIT binary patch literal 613 zcmV-r0-F7aP)wK%m(L+9IV|s|#(WRl-O^4GvaQsnHq|OstfO zIJ3}3<01}YGARE4m!7=)QisvlHUo!Qymx-@-t*p_129Ko-#pVI)6#!*kLj-AGXWNR zyA_{wKii_amK7^YT-v z6#plaNm#8`-kz@OvjIt^4%IN{@J3bR zRI}ME1Mv85p|%;RK>ViR>APPLB4;;BpCtqE@P+*7!G>I4UjNx~e>r3HA^tWCQ@S)l z{BslcSwL-CxQ&_ZZSv_g0Tu{yi*X){Mt|W7)lbE`SQxFP00000NkvXXu0mjf;)M*S literal 0 HcmV?d00001 diff --git a/www/img/icons/page_white_zip.png b/www/img/icons/page_white_zip.png new file mode 100755 index 0000000000000000000000000000000000000000..fd4bbccdf1643f4ff5022fbc59b82546e259317e GIT binary patch literal 386 zcmV-|0e$|7P)_QM!1S$Bhw4w+iRuFWf;tfR6D%SMJrb+tx zC9R6{2>Ou6#juIy6u(I?|;&Owi$sRB4^20apB5xE2 z#B9XekY66S6lzfCL!eEQRgo0LokTA55@Y#%_wN!TXPw^Q4IIXsG~v#u_4t;x_HM16EQ@QRY+rut&97&UefsPmLrQ5P zBC2kcbux9L%2bJz$P$XV$*zSxb2e@6_3O#;&!FD<&hLjGn%~%en;7)djE^d6!t$lW7GyIOKlQ46hr`Z zjLNuRDP_53dNoN?wd&HMgL^m1DXFU<5dQsrceN>fSz00000)O9XRTN^$%%`*Fg>ryDtc(lF@?b>dE!20r+y z#Q*>(wbV5H`-E4Do={CJp7=ERhw15hgZi)?jRG88 zzVz(5;g?Td1izJyO33bhjg2Qc7FVY@f9!o)Gu?DII~vm-Dc?}3M!fsgjP?F(7`rgg z+xOk8XD)e?Zl=5+un`5!7kr?F=eq)K-5uqr%yU$1hLv){Vlm=)*5~`lwMciiXFu*g z)*Jkz6AF>#zb(Vx`Iv{bdGZHtlW)v(y5k^|xgSUc9%0}S20nrYrO}78ofk?bV!5)4 z=Ngz@+$9N1>>mA%IWx`Fqa240bWkiW;2TZgd8CZS0U}@mknC;!2;wi$eI@`h0y2JS`Eae0CW}q(2(%!m8 zWq$`PDU>LT1_y*bBv#P5<@q0@ttz$hIH}YMDvAigCc=y*)jY-VOpTd;A8@3t7Xh4r z0KTWOk;N2Ox4!&&^4B*no$WtTX!BXB)rg!y8dvGgKBQKLJNXRRp0}Bsjd1|LNQX~c zbC~fjrk2iL@4dYF*vt;}dFn(%h)n_-vzEIHMOKRkdF%3Lq|zBgKm_h>TEq!))nWjq zzn;B!?!(dQcHu$#=JF`cS&W~C`WHFW^B!~MI#k)>1Vk&eQy8P1O`J6V04{D@|7d6^ zyBABnh-d^H0FX&L07M||E0n_dp4v&Q%PSE9p#R#Hq)`5I_(B5CE#q dxjPz0{s-<+c#AC!i7@~G002ovPDHLkV1iPlpuqqD literal 0 HcmV?d00001 diff --git a/www/img/icons/paintbrush.png b/www/img/icons/paintbrush.png new file mode 100755 index 0000000000000000000000000000000000000000..a3ecf87784e7715238421dbbe773a54f602c7fb9 GIT binary patch literal 548 zcmV+<0^9wGP)_f5P$T1}wR3qlt(jG_Y0Zr52WH59esgOQSo5P}VIa-lfSOgY zCZygaE0|WSnkNR-ymix>c|SI-nf-6e(wcueyQTi$-RJ-R;B=$^K+VoLQ)2g$Ws=Pc zm#>>RZ{`29@OSkoJqNN@e;Py`Af1JrY`wEZP%6mtqXSk zPwm?BzjD%=|3xj6wl2t5m&ThH>ZdPV+c10m|F)IK{&%jw_P=uO$^X$kSO5DKE_-is$J8N5P(ZnF4bK|DPP6d6{}iR@dma4U zGwNI63={10?wsg6GrMIz9=9gZKjA|+f3>GAK+D|GJH82pDTdw`PIL|}-E9ldO1tCE zh!Y}h7`H{Mc=~qbQ(FLcAgsD6T*IKskM2jy_-qNlZnsM>1c*c;%G7om9HAYZ4@|gr ze-YdHGL{@3SlraFMS}W1yBeCDwgj)70ffV0WjdWkyAqr__<>5Lf>Nmjzuyn#`-SF| zCD@#CrZM!vJ3OHFTxO9ZIYyfsjRp#Z0 zMwk*D4u?7#jpFF&2#1GEG`Byu|C}hU^-i!wvCE+^rj9RT$?eTa}EEYkR zMK{!HwbGGEfk1HjC$2x=82slTsZ=WU`uaN4eVfe&i9|y3`F!?;Cy|z1E>{~228hLC plE>q<_Zv^tYSsXk%l)sJ)*onV;!t9*YM1~3002ovPDHLkV1n&hO1S_4 literal 0 HcmV?d00001 diff --git a/www/img/icons/palette.png b/www/img/icons/palette.png new file mode 100755 index 0000000000000000000000000000000000000000..73c5b3f243d98d089dd9e025edc81b939c1a9320 GIT binary patch literal 856 zcmV-e1E>6nP)PbXFR5;6x zQ`<|^Q5@e>|3Fq06ckj13SKAzrBX7=2LmNa=VjAGbC_kBmo!b(h0(lh&dtlb&FNfD zmuquN(K1t)x?D|-M01+g{cLIqvEiq)K|Q2K51*IA`CQKDe7`gRw4E?o66yPi8&Nn? z6l%~H1nUQ%T@&i^1O5KKw~aW)k2+%HG368DWXx)cVb)1u?vucz;=oXT3q3jhU%Im| z1?(s=#*a)g@)(;l>H@5fX<;>n14d_9M|`nnP-6AN3z#%q4DzF(Nk5nWM_|14<{lEc zYPuy4KilYl*ag-mA8dVe2Tbuq#03kAEX>O@@Lksg>YW6tl(V+B2dCW}0wgkfx|Qv4 z-D>azy5k)pmaZ6BhrO`cMMsS?2x;x!C{kX=N`E6pB`Ii0bgLj_hNq!8%(hX_#U?!j zKiGk=Hh5$0c^KwfGl^?D=47dOtiAw2KNAm$$b9o7%%}<>OK>*QNXr%9w1k|LfQ{U2 zSbTi2+))I}Pzx-B&9LZXSZvF~o2CeGlzvc4uVc3ME*4%1(7-xD(S|uUCaD1_sK#7S ztY9n_un1WWgXlK28Rs!v7K;_~=D2b`P734*5Qt!^h`~~a5OuM~Hfisl25mar^a_}} zg_v*2Bt^;WEyLcAGWiUsw{`FkNI_Ti5|L(1@j^*TA*!PfgVy)tDpxOv#%F0dOfNa0 zdc|1jYs3&aBQ0Zq#{l)Z8sgGaTq&(WaY+Uil^l#q(oh+BaNO|=WH5X?GktSNWOaL* z*ZNp}GN_(f2a)O)VOE@kDJ~t8MZuVBOvi$ni}tLGC}Zpk**1wJva900hs{igrph=+ z+^OPVd@W&MNyEpqoQ;kge+VO-3U?f3JDTsf%0@_u%bjJIsY%3=wv>=dpyM%#>wcRc z+$m+(U9dwMf67h5I&QPOO-M5_z-8e1J$HL#g&=&d>pz$2H|k=JCX$xdMNx#CVVzw7Br$VwirmQyNV@gr)$8lP5a8@sX@X>Dli-1k7mq;##Fp9!vA_9^;^gT9 zP&gbR4}cpAfn4PTZUM;;=G@;S+1?wugFJxT@euH|gQuOIga4}@AmEnvC%Ym({+M9j zVo-M%iVA!`GEJ-1T5@;H3^V)O0~j7suz;J9gdFkMB)8`tk|fFDp$n3T<2Y?Ln@fEF zAw}jWIBvqt>2x}*t*xPfNLgR6*9jr;*MT`691n(DgqZ(davP zmnO-~_^B!6Lhj^Kh<}!mM6FgE5@&Y?c=UF4wG3R!9vOLdDwio1i$qa0@&m+^F-hDazwk}ll-1Dc;27nEK-O1DzqF;+xvCKUl1yw-F>su5hSe&Q6 zd1nGh{5?V(0CA|b_?hj9v#84YIfF7$vAk&paR3!TtVK+Sn6TEt|EUJBh%@V)?=D{> zW|j#eOFG+*1PTX+xH9%m#R}Fa&bmJUhgbv7BF=$=Z!3&m?IRxZH+3!)BW{d+SOs7W z>IAids-lshF6MLl!6%A=qq`-^%tD29U5rdB#`J6%XB2;>11C5uIO`DW5T_^*gi1m^ za;-^zl!R@WI6>&p2)tE*AjYA!Cq~ey8e}~nq4IkACngdWzJ+|5kLcOkfNyI6aZ+`) z4zbn0i>iT|Q2APRfap0wiqTYrbIaCxC0R;+m_%U#i(9u*!|M51aJ}!|~%ZZ*AV!nrH z6)^H*axx9leCK>fZ|?Hc~wO$JO;+eDygBY-q!vzBAX@ jDN+qv6;u=v4^;RK&~tO2tvSZs00000NkvXXu0mjf1&A?| literal 0 HcmV?d00001 diff --git a/www/img/icons/pencil.png b/www/img/icons/pencil.png new file mode 100755 index 0000000000000000000000000000000000000000..0bfecd50ee9f5bc5828f0c0745aa3e0effcbe250 GIT binary patch literal 450 zcmV;z0X_bSP)Rq1}l<=psl5*5Xz9i;M}s*NP=ugs7Q#8Z;Dyx|}!`#}xw_C3!B-yaPC&0j)XcpuX@rNfq|q}N(wJOjA& z>u+z?dfJEuLePrqzy!)73pvLjxk4d6XNZt?hm_iYES{i}J5y3l?}PPNYDBR7oPc~6 zL^d)Bi4Q2L3pnp!nFxN9c2E+=@XAl&+;2m6a~kZj1r3Mz3C=hmUG<{+vWR@t4q?fJ zhFc(ozZD#Mx`^Q~g1v=K6!QnfuqyD4>U4EjF0eamL}Jx| z%&`kR-H+3GBYr*Qx}frLU4`%n9(`uSomzw)t%%NagXkA*R5Mbv9VLDp1wMo$cOMa~ s3Wm%r7^bwK$2$}-<~D8p`#1iScU4^XCLAA~0ssI207*qoM6N<$g3sK(Qvd(} literal 0 HcmV?d00001 diff --git a/www/img/icons/pencil_add.png b/www/img/icons/pencil_add.png new file mode 100755 index 0000000000000000000000000000000000000000..902bbe61b3e64a9e83333fc17bc8dbb38de2cf9f GIT binary patch literal 589 zcmV-T0?rbKYL%|LWA_fWIdu`2D{$SO5OKC8m-@8*p<)!2cUdv;Kd7c=G>` z$EW|Fn(FlbP?O<0Vr~Eb<;wE^KOP?a|MT$~F#djf@Bfn%{QnZA`N!MC|9?DM@&E3+ zoc~|WF9l}pHx`K1jMaes6V!>;jA6jePPPA^p6$b`dFe#2|9Mj)KBe{f z|Bq~O_~cokR|7X-MzVqeNb|$f8~&eInU0}(LBHGo#?^`cw_KU}|H89f|ND1m{SWWg z{coNv*#kCUa<1I}PY+N0|MmRh|E;wq{}0bJ{D0?2?*H?1y#60=Hu)dh?(%)(aJUfxDNBtTRAiRVBdDb0dZd)pL$P{k)kNc7^C;B3}2}V7~LIt{1J-u zhHUbkuFT{RQI})I5UhL)qs;n91WqH1y}Go3nEOb^5S){rk&d_VLp;L=Zv%O94ll;UWY2R65rz&!x17@cl;CAj}Ns6%i zd5nRJ)r9X?F*V{u^c>>t)oOyZLgJ?ibJq@?o8Vd*UvF46f4UHmRbSVF|2SWIEDX1n z;BVSWf5%?^&f2l_?*pt}-!E-L^YwrR>t@D1jikkgEQo!)?mk$6_1@Tor0i`56;e7( zEUJ>)1XO=cFF0!1!ZB+Jo)hId80xNhvbwq9`W=^}E#<#bon_3QUr(ZC9Yc0=ZqO!N pF#MTD>UVajJI?%>LQ;b@|2K$J-BF0k8QA~;002ovPDHLkV1kb~77qXb literal 0 HcmV?d00001 diff --git a/www/img/icons/pencil_go.png b/www/img/icons/pencil_go.png new file mode 100755 index 0000000000000000000000000000000000000000..937bded9d85c849e8f94c11d9c04744622b6488d GIT binary patch literal 666 zcmV;L0%iS)P)8Wj^3Dc;Nh7)Vsv6dp$FpFhaq;+AFZR+9Q*|``QOHOq0+`PQM-~WA|=Y0tP#QzlU zjh~&FiBopjH?OgXag&EJVb1*cp(`tix4>^L!aJ%8p@0YB85-W3Qn)mtUcTuFPCh_5 zFp9{`7+0aGL3l_R!wU|7A3^w&71O;J5cE-8MFq6+XowfQ5_DkEUxA-KC0?70G2LAY zk3ohto45*oe-^hpQG^2vbN7mJZeUSlOyXme>$P8A?sO}tH35s93jSh^XL?Il?B-N(GohGAU+j4l6$w~;CB*oW5PMx5)+N2;0_Pf`&Hu^ybr-GWl75bc#2=&#=mr%uxI=X7>y z1#@RCc}Q&_##ng6KmSJd$a5(T>mXDS>wjPW1*Kof&ZRxP)A1 zOEJ*J2%-6P-uFsN(314vc)81apZC3Y?}U^RyNqtPD}x|FyWJM~eFHm=EXyz)4*%_2 z`9-hS>nKH+LWpCvJW_K{ee2+Qy$;K=iUCm+-8LExR4SE?bDE}l5@MQWF@R2<=i#hh zg==L9Gagssz>e{B{#CAk4$LM@iPnXHWk?Xw`LOUEW#s_FFc8NvgbK8&R^1S*OrR37 zn*ts~sNlPI6{FG%N)TkF%_zHVFy=yhaAh z=X2P$4d3_SI1Uzzg$DC~VGUH@|Ab+5bP-s zf}lekDhv}*C|@qtVsuz(vn6}P&0T&o-DI`Uo!fjFJ~Q*35i_Ha$mMdDBnkcf{Zg+7 zG#IMN#KgoudQ_hb4-XHS*?AFZ0rmq;B7&;ooFj^&tpU|)^=3~`52;jYz1Vw?_a0Rx z48yGfs!Ar4;mpWhc0@`=1u*u+HJ)~V-+qE9ityeep>g}15Cw(+L(>tztGYcP2m)%g z8WI?B2$&H75*iqdO`xhs2m_;F0wREbncp4|h9RoTvyNF*b=^GgJ()1mIAA2nlS-vH z{P`HIt*z{P@Px^$-ALOK*RoeESzS(kt(5P-y!Yv@)PG_=pSP~AF3RQddS^3Zrucz! z(>$lzPjjfbjW=`88J`{H>zAdW;C~(z3I$Y^g@pyojLC0rIeD}bA9y-jF5#s{_ldIr z*MrR~m>JGF0GxBEDnFAFO|qNb_8S1)y7-tQ2RZ=K!R9lnDvOJY#BofiR3e>Dvz(Nf zD~>Vvx(|TCSA7&p(*S=q07PV^QmNpaBM1VVbHs7Xh2xhQpB^J7;>ApkSR&qkd literal 0 HcmV?d00001 diff --git a/www/img/icons/phone_delete.png b/www/img/icons/phone_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..bbe4f8aba2ce43774553cde9ae33a99626fedfc8 GIT binary patch literal 615 zcmV-t0+{`YP)%*{aNai6YXlS;4Z!H&hL8-fhmgKTOQxX!a)O6V@-K8Cag+^@ULl&X$4v<*AK_y8;GVul}2y`Dd_t?kJrLGh}bvCYd=c z)%mGopJ%7l zz2D3s1QO*{TDvnaF!X=ey&jy3-|>yAN~u&Loldi~v_x-jFXfI-*5AM4z{{J|s^3`$ zDrHA-eA~8yi2SZrt9b8;q6qIji9~`__Bx;5y`}W0jk0Uu*H7W=iUfoFHiKfZ_-Jx+ zacK@S!@h=-yEBPe(i z!9ay7UV6}j5OUI9ni4`5Y%nw>Hf=V$o85J0L$(BM9C$nL?Y#NEnRzq9bzKaTY&Pq* zS}kNU8SyW>g#U=+I4Befo7!dmYngKC#= z-5ZhYsr7cJNXPwt4fq1HiGYhcM+6>@yO| zXD@>K)$29`oe)=`;M0Ve`z_rRHM)ytw;{NqJ92_6VOk@C*y0Ex)o5ihL^ph1#5YinO zyxORvZUfgg!GxzCWTNIM`)KJS{p1Ntor?_ABp3_=gaD2H85Y)0(rUlQOh{nzR6z<5 zEO0De$IN)yJIjF82x73(uJW{bfy*E6{#GD4S;+brQ?z@ND2z~($5eI$1QYf0H)an^QOO;qRuu9YpYp4SM;xg>M8uf2%- z4&`D7e%l1>UYk(D)RldpJ=nl|j&F_OWY^F0mWv<>mGbk{ZJaBpo;hQ@c$JuAE_G z>kA@^Du`N&ASK|$QI{P-M0lOJM3Q-5L||^Kgud8yZZAIFCr~v!RYRTlfoYQIjVYQ- z@`-LI*iLI^b+d+Cy~4MZvuq`bP?tuvn%~Ob0#1}j{!glo6%)=lNp(n3tLAI=Jjyf5 zcAt}odBk@Td^~l6M0_0&@I(!DhKN#_UXGgLY!5ZXP>M6kh|a8&xfSGGV;!Y=6}+16 zW8(80yiCP&qNo@dN3uwC4q)Po`JMYauvk&f<(3vCC`5{z7@6s%zN&%Vg?>B{1q%?$ z%_k=(4^_X?%By$TULFLLp%=p(3S@Dy@)`hl&UZ8LsS648`vi-#v-`XK+j+9R)hAFR z7II8S$C-?d(caWU$51O7Y3ZaH1P*eI^=;vYrRAY}4b_cQ6xFiu{R87uV=OPNcLol6 p&h>5K4&Ww`4Qv8k6OW_qzX0uFt{M8}XYT+2002ovPDHLkV1m?qHvs?u literal 0 HcmV?d00001 diff --git a/www/img/icons/photo_delete.png b/www/img/icons/photo_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..18b67df43aaa0eac5878317173146b3d9b1dcbd0 GIT binary patch literal 703 zcmV;w0zmzVP)E*UdrD2cU6 zL=;sJwLC#yz=`8-_cEB(*e?>1AKiu zNOgJ<--)7PM2btu+Dp1gE<;I?x-VD5n8Id~ED*w*PD%={_G2sL||uq&`2V z_~}Km={ZusY9dUgAdI(_Hoohq@7)$HzP78<`F?1c)kVkm`LN_N*5hrp&hI-Kx|2(@ loni4BC2TVW_f8GCzTapmv2Abd86N-u002ovPDHLkV1l>_I==t_ literal 0 HcmV?d00001 diff --git a/www/img/icons/photo_link.png b/www/img/icons/photo_link.png new file mode 100755 index 0000000000000000000000000000000000000000..e6bb35fbf8a31d1535fd86db6c0c6ddd1cc5fcef GIT binary patch literal 784 zcmV+r1MmEaP)s|6h%ThKxv*&vL}(yVunR&6mG%%uQ9hSF)I%Xelo0h)4-xd( zLqGN=k%rVmRQRAItqZ!v=x%F^nmVoH&V19IZ?+#Ff}j}=m$`HAIp^N_#${O+{^ycL zukHIQ17jA4Nia+XlVC@~u%nZc?84gCW-!wP$PIU739wl$o}wIMVAN#S*o0t|hk(g< zlMVqh4Xn&(kzZc@C*`t=a`=_NZwD47?dBH;-+~(eocI&;d__5j(jE0SJsu3+LygbJ zi3P4$+``!RyM#N?T{EN(7)2Clls8K)VEHK;XOk;i#T^KaXUF!Q$`my}!b`0m1-3#3 z)NBw5VM;%Qk;VO3U7zL3v=%<1K++*0%&gbq*~(d*pS%Cd zf!!nVg;5n>7%O0UbqZazGSb=xG_eayYpw9IBTyIHu)YzXS`oW>58Fy$v$n`NL`nk? zKh~o<<%Pfc7*g38SZ$Bd5Pk?eZ^BOBE@YbekoZP>vRsf%PGIr5WHE#fqgm9`-E*P` znx>&)z5%b_kAaowINIHZ63LBBrU?@h)licuNVYPgdA55>F@1RiqOTJNPIltzg;V&v z>_Sjc5RFEWNoR2D=52}#2vrF<-hUD5r&$QLGRR7WSH_yli}DID|1g)X51>%Uqqnyg z?d|P|$K!~_V$ky%;vt>alvjEk2Xl!8KVh3|Kzc#tF9!#1@RK(*Gz5>w!*ljX_S{br z45wp2hH71Z{*94Hq`9%N@o7g#N1(2*j!BYKmCa_6OeW!WyAcY7;P?B9*jQ3kRTv*1 z|FVT391e@YU@%IG!-}HRP?Jb$A(zXYp|~K+@-W41x~`k)bowhf>iz+8udW=YJH@sD O0000uGbh)OD` zgcc!@P()C+7(|Syv{2NWl1}%|Ip23$OfzL^1Rl7H!-a?UPH0>AuIgq>Y&*abtHh}bOQd8rj^1=cFY2s6_~{FH~Pqa?m7MUmIL zXOcRvh_#B#q^Swkk*#g!jm7WXi&VJ<8 zrFU3SGIfR^Sgcm?D>^DRQrV;2ce{u!WPvAN_Ooa<6KaGN;mE)!NfIOa2cTl3sg$9s zVVo(vQNs))-_MaGw`pzK zMsTql`^! literal 0 HcmV?d00001 diff --git a/www/img/icons/picture.png b/www/img/icons/picture.png new file mode 100755 index 0000000000000000000000000000000000000000..4a158fef7e0da8fd19525f574f2c4966443866cf GIT binary patch literal 606 zcmV-k0-^nhP)Q2rnAt>LM%-F zK|rtwgcU)}7x~z1Hrcs5bH*ZO$!>xO8K#?==bZPQ_ecnV>#P`H`QzGaRhd62G_&rC zTLU$c7_x*nFP_dW#Q+*);mMHE?j)HexK784D4x9l_tfpz2$@1y}9rkF+ zI+J5NMWeZyObc!d+rUc=>D+uOdAOg#%+Ej6h+wn5^xPmVVH*Eu446Y0A_@ zo$rlds-+sL10DbwHdg4=I}KDOKH)5`dDSD>$*Y+lYhxmAcGuF-%MWsHUJr4IgaCsM{ig0 zSSBT=s4DwP*iI5?#me_ElhaWObR8DO+&EW-R6_iOTG;>$!^9AfH5RBU`HBdsS8XyAx|wUq)E7h=Ss)mVnuwi!$R3b1!m9&Tc8e2Ah* z93dsPSIWMcb|P*JsnqXhvE^WDxdW*bQYjAj-)O1aj{;`q7kRbTjhQIKR1t1J@W^=H z&KKSDw_e_z=&`ic2;k(#VF6&)C&;9iap&Jt(%M18^cYK-DUQ?~rD9htLzB%~biuWVi^wq=sbuS+r^MZt^XM4mKhUNn@-HDRMN|w*p+XTw5ejxoBfqGYGMX z(mxA;rQ{;Eh;XXz5&+jv+-LAZKk(eOLY8>^WN4-(D|NlrfBplBR3bVVA7LUsOjp|g zy{|9gnht;`^xt0nqUO%>o{FmI&DMtF)b45G)516-?}wS2P4@j4U=z{{Tmg0fDWHG! bUcBoE0(26M^-PUO00000NkvXXu0mjfKPpmF literal 0 HcmV?d00001 diff --git a/www/img/icons/picture_delete.png b/www/img/icons/picture_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..cca9f535d9a699716b2c735d0d72374472b9e1ea GIT binary patch literal 744 zcmVP)hQkw$4DenXv_1k19q1k|i7>6Y(!p>Gs}5>iPV z&!aPy~rgIO_{C4dkZ zsR>k_stj1H2h_AgX+YF5TH#m%V^&Vp0x+fl@M)z~j$m*Jv?7oSAwrZ(QKF$u*tP{m zthQiG!$Q<-Z$2x93SWCz>;N z@|O=~WGn`>v{S8}AU&TvrXK^HBjlLS_A2{fi z9kE7URXC0c#|c`x8VSriV9%*u{Le%1vY)0{oXs5_c45r)I=(B4=z47DhP@!fFO>QH z0C=0v;craC(Thvo`;ypNY<5D9c=%{=VqZ;}9mcGE1D(-CbLGP`EAr$5!D5yQP@1<< zHq*lVt!kNGcenM0nj_az3F$c2B&EFMYtB~ns=5AO0D$4{_RHnM^m$u}4rQAu1Gf)n a7BV67Uig7b0z_wp2kkRjeX{OGU(8H$_BnrJxI2 zYgf8Z1aYIHLaSgAOBf`OQi|_q z1L^n?A4@G9O#>X0iwC~zJ`7+;C3bJy(9+;Iju1lU|Kv%CqmXNNU;Y5h0cL$^+qNTq zyZ;7{DN16HOnRJzStL@D{B(k6FI}qC3Jg*l-I*blLd-*rAOcO((F6qA7@7KUY-@y~ zUm}Vl4BMu?WeM5gYHF=|q+ICA0FZ#D34AqyWxkIeO+9pNK>MVS5NOzoBR(E$7F1q?VDFq+r9-q zcNwcnFw!?b=mk?=WoG?52ZK`wiKQf#k}v!TdRp2LW|5}OF5IPG7i_ZcJ}<$N=fj|Qmw<{WlS3PTs~E*h30u3Wu0+!MsALn%mSe|2{r`kBGYM;ZG4 zA$DsgUOp#BS`W{b9~5FkFJNk1ng@Oy8aBjAUQTxD9n1zdX_3 z|EYp~1lYByuF~C}HrA}jpiKW^Wqe}awv&Gif3Bf#0dDv^qSF@P-T(jq07*qoM6N<$ Ef^;Qtp#T5? literal 0 HcmV?d00001 diff --git a/www/img/icons/picture_empty.png b/www/img/icons/picture_empty.png new file mode 100755 index 0000000000000000000000000000000000000000..abd2b9bb48252338e831bb54f2fd76037b1bdeef GIT binary patch literal 463 zcmV;=0WkiFP)h0wrhpX|Hs7;Pt55ta+?_WPZ?E%ty zcl7GX<6#&ib$G%g0Kx`)KASRL^ZnUGrx zCTlifW8bF0Zh;X~MQ7g4Lm|_~ykU(Cppw z+zc^}2l`HK1P^+B{r2nc%R}+A|9PB!2fN@?ZS6gu^9@CduRn)+FfsrD002ovPDHLk FV1m%L!2$pP literal 0 HcmV?d00001 diff --git a/www/img/icons/picture_error.png b/www/img/icons/picture_error.png new file mode 100755 index 0000000000000000000000000000000000000000..d41d90d64fd3d6b4416c2b85c589d032bdc71c9e GIT binary patch literal 755 zcmVVGzfE-|p@0ZqAsP=fxPqDMk&P@d+L_YNLgS5CkC>7CvglMzFFJY-|-o!A5+b z=|ybBs38g>N;Dc&G%;Qt=I(ay+Zl`CBSswQ z#|XVCtO{SJL!J-UQKM@~(a6dDITA7E2Q(F1a2yxMK7N0B1$U6)?#%Q-}jk~LK;H{Mdu0g3t$Xtg(#^~ zu@U8JL@bs>08>RJA>|lU=d0=fsLlZbnwgo+pm;=*5ZMG{(zH}uj;$IcG}-TwUrmvQuWfY-v(a0A7mBKGMB480{k`Gwrd zoh)wKz%qS+oqoMgL{)e>ag;=aM1-zroI*z@>Vi`fQ`=NeGJS_->-rcUzJ_7%FMz6I zfZcP(0>I5rQkwlj=KWo=`2$cHWZ>#;wjMdfyU_f0 zDIw7asE~YnL~i>D+Nb-2f%Ao004MOw6jG(9bt^sD0_(B`@-3UG8+}Oq^7TmR87gHq z^{z(Zj|9OhI=go`Hj0k}n2Wat&x)EtoM`^XiQA(4=`EcSX1hX?Zv&{tJh}0LO}%R| zZXJZXczp5nn2PK$e;NZ|;C$hIzVB+g>%2v6@sAZ9+;BCYpAYe>|IGE&-@eX9aWHtH lx2&S5$Zx4XDmBR~*Li@40hl?wvRqnZ(Ao1QJ1rZCaJSDB{Laap9suT~%lorMMMz>qEQ4lo5g<`B}Oj2V=n8e9sGWVQ&&hO_UijFU(&+eSXhr@Fo^Xu=UKZ=+y zSDmER^Ln)XSd1Yp^2;}$?>z+&i<%Qh5A<$I)6^JK;J=ay1fO&1%7d?gHDJ|Bk|e1) ze|3qB8Vxf}f6qMSVjZu-;&Pcg4?5}4L1MZ%eY~F_#ym%3=OKy;L-P9AJKpf3Z(ci39q!_wFi{`Mq{ zJ*0SVfxfPfu_0%B_aJ93?kA`cBW^;RWZPkwP68J7<$6(vG4fo-LD8L1PKVrY<-5I?FU$KEpAQ! zS%3drRE^CW_8Q6?$-E<|Fjf1TTs&TK@{qG^8|>~q$V$E%-IyGy#c9#hk-YPRo_%1< zGfK&Ph7X>e4SjeC1Qj0Fr>RypGdgpPYZD_2&U4uO{M+dFqGrDfI`r}vU#Wf3nK_3O zN9G+nx_7Z};4n9*uQM`neYIg%KAIiYyXMtlye;pYi<%$y9qPDx|Bpvb_;hwy#{vE~ oFmTp1gA_Vi5(egnb@KWBQ*sVbcJX$M%m4rY07*qoM6N<$f(SNMBme*a literal 0 HcmV?d00001 diff --git a/www/img/icons/picture_key.png b/www/img/icons/picture_key.png new file mode 100755 index 0000000000000000000000000000000000000000..667086c0dac0f81c56a83ec870f5bc6b1c730c58 GIT binary patch literal 794 zcmV+#1LgdQP)i(Bs^(FFyPpKpHC!eKyq78HS+{!sY)gF`!k>wO=0{1y%vg)C55giVMHh zNLZjDD)e>F5_xr$H7qVij6Z6l#lDZEo#S8jp^Xs#LS?4Faa;Ez>{UJmqCY1?^_`0-6PZ0r?kYkldRPFs14}gH z1;XjS=qQg+n7Tt=o5FGD5l)Q1aUPN;FQ-#iigoT)M@4j0#P}ZXJiLe(S&W*&F-zdI zV)Kj#S1QSPWqCw~o~UE;wq4zOL5P1)mZW-%Wa<~X_6%XOpAovjgWD-GO~`X?C#uVb z4qu)emA(`|jgD3KW!etBzT*Ajdf~mHPuy(&G*Y%PK97pH7o`P}~TW4UqW>+Ofv)5*7e-t)=%JInR4ZOz4aWnyCP#5ZRjUR_W3 YH!v??(E);vF8}}l07*qoM6N<$f|C4jrT_o{ literal 0 HcmV?d00001 diff --git a/www/img/icons/picture_link.png b/www/img/icons/picture_link.png new file mode 100755 index 0000000000000000000000000000000000000000..42dca7440be7b2b2776faab865b7347a8bd14b6e GIT binary patch literal 835 zcmV-J1HAl+P)P(65Slt@yYeSUmI*|#LP@Auh-f!mltQ}@UFj-f zTy`ZC-MO$`2%;Ms5JAvd7tz>ITbyM6k~DRa-s#*s-;awR%^2|P-p#`~=RM-HuYOrF zM!eCEjUOov%l4kG1mES_+pnFz1R#wS3$rhm^1km2ArkzbItH}ra{arzZvy*(c4R!y z^Tp@O59#oLJ#mNO!X_!Vg|dd7-4wsw&C+L2AQ|NH*(}W^J9t9zXs3^6BOu6*ARTe&GtwRexKC3|onqtm zO$IVGgx0v7JjX{D$oK);nE%e=iGw>2&ZCW?8*7fVB+`9_T;Ulu?ypkY`~V{(2DeV} z&F)Edo7+!axbW$fm6esN(prlErcYl&E6w*`|3Lro0p{lB2*Z$#(NTW*Cfe@1shkl9%GZURQtpgZ5UN*>kV+$<-x(zr9LuG@x8AQ?J)q`gn;(qrtI} zlWO7YtgKWj=N;b_Elii^3NP?zJ)*xq3&7=z@6nAF^YimePEIm2GsE=sG;tjB>`P}t zfNVDF$)prte0lTUi?O!lKQ~n}(XRV|c=!Del~PJBE-sQzrvV7V5UmYAeS59-{96mz zYPH%C2Zu2+F>zvSZ0!2f)YQ>Zsbr*-N1DwhYinzGp2yJ85QRbkrPR*)`nt2cyxiyk zjE|2ef*>fT)9D+Rv3n7{sE}ALP-~3!5;ts N002ovPDHLkV1iNgjz|Ci literal 0 HcmV?d00001 diff --git a/www/img/icons/picture_save.png b/www/img/icons/picture_save.png new file mode 100755 index 0000000000000000000000000000000000000000..777fb5d2e6a8418c573972246582c21d2c4984e4 GIT binary patch literal 755 zcmVe)^Pp+~01yB`w`9=u(Ho~0 z&q0|Zy>{}2gZl=9K}x9u0000cnYNkw{OYaOaSqCHmHYkvAYHn)ZsML%y6Mn?Rm1M4 zCbIimL%-gdGZROY_IT&jL)x4YKv_2wMMsgSixr3VuIl&xwpoodZKLe>9X|MwKbLly z@9mW{08m0kQ6yEY>2=p_>};yqiMnYtv8~_l+pdQ83=1I;07}RxQW8y8wNsO(vNNsJ zxzT2%smQIeNFo9Nln_CYl7W3j+smTUwfx(8yZemmMmgIvlXtBAH}d|cf5_39J9FWB zT>bgZGbKb&6v=F7!JU=6<_61l#uG1|c+xA2v%dWPU+)_++yuBPsf8gS*uy8tE)TNP^?wUn|FBDi_)Ep5))oIO#kS?(pBVA^IE&o0V2 z1UkY@NmW(0wrgcXNO*bi9DvTz4L^KUm{e2mUH(gvXxc2dSs)?^X1ZCKKmdStIIqc} zY8#!Ri;%QZN+O4dtZAm|x={|gX;Yrg9Xs$WDG3lp>Fmkfnp~qGh?EV=o(rGc zc5iE2*(=lK&%R!Iu5ROK1ORQ0xsI-E$A>rGws+=HNnvgLk2jzGKw)59)ygxcj-Lkr zfNySo7mq#2f!UFlj-4>yTcBWLvS9zN#!QbgB`G2R0KijcuYCLXBg5zC`|}3n1DZUQ la+ac%)7bB~m#l70{SP&gLHlD?H{SpN002ovPDHLkV1hOfWCQ>J literal 0 HcmV?d00001 diff --git a/www/img/icons/pictures.png b/www/img/icons/pictures.png new file mode 100755 index 0000000000000000000000000000000000000000..d9591c13f67cac8e13632e1c841f7debd1417a5e GIT binary patch literal 704 zcmV;x0zdtUP)W^i!ifsTc(=K1_V3&M#zHR|lg@#Gff=58Uzib9<$t0J;KqX&BUR5k)rz$& zB8cFtCF~4|SkfeZK0aC--xN^wy;E1t?BD8nzWmkmJ4KipCa34l0-FPtBg&rV%afN2 zgWsE9wzM;K6tG3NTXA}ea>>OQv13!S3uzM9$46_o*8xQ6&4HCL+j_Bfpv&{BC`w^1 zF1}kXxg=@s7HD;HdhR^19-zvqDt;>}q`SxG>C8uWsk!U~u^=L-t>B2@I?m3_$iUdt zY>+1Lqw&$&NLPoX3PquAW?h1I?p!{72+!;L*RlW-rlx;#dhQbN8zA&r3m}CfJ#G*x zp4Z31*EX*k*Xge=5oLx?i`zNA>kdcv??%LxH4CUBC|U7?JP#?Xk^{N5`2He2rEOSJ zY`MX=R)kfHh*sAC4)&WC*-o##!|g6raU2I#Scx)PNkXBkgeIjKCA3IE1y$N>fGA2{ zOw{KO8Y@F-YA9^{3y@eEU-x1w?+8sq(AvYkfy%}^xOc5~AK>QHtKmwQ-3^sNYaxgW zh6lzt+!*2ghff42?~W2UMkn=!+`e+&#r4!m&t*Pi{kVy<{yV5rBn%1W8t zSc#vBL6V!9;o`ktd-^>D7(tpD{uAK>89pW@UKU2M&7k1<{}&?u{~w6_M>q^XHopD# zj{zRGFdFC`m|=JgcyRw`*p4$_S3h|7hvD1L|3FO;TfwpQ_dj7T-0PBk52V5r3LXh+ zs&njyMf3kZ3=9ldq8w*5KA0f){@b^|?-~BUyz(C!4g_3)48VSdx!^BW2jDjVJ@95jSE5A%ge_ins}gi!8E`O6kJ1h=>~tC15ut zhN?)5E3L|iZFJF=*g_=_^DuEHTaU-1<9YtxodHgl>v@>xAxV-FEX%^_baD=dL!A@w?eOp=8xA9r z$snChBauiTl}aHRje-D@{otVRRsdtSzw(Ddia41}D%C|%#M#-I0`hph__Dum`X_*4 z7_*xaWU-tqSCqx%U9ljCczzCMZ!dBK;IUe#x$SLaNDz<55s5?;ahR-}o}MBQ2*68l z`F>+(2iE}Msj2D2$_lc(ySSL0MT}t}2m&~cLx}9q6mWcetN>{;SX*CrT>(6Ug9d4F z5m};M%*-G$F@fJ>V-S{>KqG|D=L3xpCnS{LVPkU>?`*b81z@kLQhCS6k)_L&*^D@y zW22*p_V+{V=|O024sN$wXh+oA&=3Ry#HoX*MuT4s4fs@Dt;@Mg^Ccw@tmWk&jv5;!R-?J}*4AEruB^=3 z)as{q-o_UN1^M%Zh1xg8#irLqMY?&F>VB?m{R_n_>>p`!{|5j7002ovPDHLkV1lz) BL~;NC literal 0 HcmV?d00001 diff --git a/www/img/icons/pill_add.png b/www/img/icons/pill_add.png new file mode 100755 index 0000000000000000000000000000000000000000..ac9c2df6a48474857daa68528728f6071bd49373 GIT binary patch literal 797 zcmV+&1LFLNP)wFU>XvLNg!qz8X`KdHL8Ic>|z&@MT9el%^8`LU|occ zQlgXyos)^Rc@rpRGB@Yu=Fa9hZpXGU$AAQ%iH91g?p_k#dfDp*h|kV24A$4zd63m+!+VoS@kfBc zU{G2}04L^xxs05c^v<`y8MCng!}PT8H-L3uppDY&5ha2^AON4w$BR9rm9@1sI2;bx z2%PheO-|w$fTy*!EjToU*whrZIyw!Dp!y^xz=K3bC@X02SsM6E}IlSWeC{yIhXw@Gt^0 z88#am;j66$Q&|abSsAF}VraXr;m+_SyjkeQ9Hm3|L=)<|kK<(XA+_LnX6BJak}cBL z2UaYGuciicMFqU2rJ#z6Kofwp{R~Dv-p9z|18#6o>#v|&FXI4Pf}YgWxYv1k^Nd{n zC8SV*E-#0tqy%n}2s8n(g@riRD#Y7`e(Zim=X*K8w+-~9r5!YhL{3I5j)ocM|S@AF_salheuz%+t304scaAki# bRh<7TqW0OL4=7q900000NkvXXu0mjf`H^eH literal 0 HcmV?d00001 diff --git a/www/img/icons/pill_delete.png b/www/img/icons/pill_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..c61592e8d841d675a9848ab253c125f874e5eba9 GIT binary patch literal 805 zcmV+=1KRwFP)|3VJFEMEiM8|CV`op1c*cqh-v z-FmRM7mTGPK$#3!q+J#%oJot<(E(ad4;1HLLjK((XsHAs2fxdp(&LM>=n*e-T*FCG z1Wby9QmL|#La61YrwMc!FrS9DYd66WIt|*#S?SaJ$XKLHP}pCZR?@OruyQ#tNp9t( zC}0swpX!hG8ECq21)PZ}FfaO`^2;k|Y>+t2;6Z+;Q1}*KU*D+n`_EMP{fxS?QNDq| zvLMh7;1W1}A%M%b|IEOMA2^F?w4d_R+S=poO-&z~TUvY-7z=7T4Nf9PdwY;21x)*5 zyXX6ENL9%*|kK`a4V$F#WqLMuJ$OgSWd=Bt jX)rmwMO4o&&7$$&XRoX@!lr5t00000NkvXXu0mjfznpB^ literal 0 HcmV?d00001 diff --git a/www/img/icons/pill_go.png b/www/img/icons/pill_go.png new file mode 100755 index 0000000000000000000000000000000000000000..e5c07d415dbe960ce2f2b1a031a4f437ca5c7b04 GIT binary patch literal 817 zcmV-11J3-3P);VJK6Bvc5}LQ4dy(CN%{=H9v9nFNf%=)y@(CUfukzjM!j<_e54{Lf?iSHeal zQfU!{>y*-RLddJ^?Ch65pN}5y3x7MoN;rJq8Lu+X~|k26(OnW89+3mFHnL?XfF=jXqVO-y7Md6qv_4vmlZdA;7d1zs;W0K6hN z#HbFt-Ht4`JBN#J8@a~-p-`wN;P-b1d_JVpX%oPE2lv2y9~>MY$K!!UNar!Y>fm5^ z6{Yu1yWM6*LwqPSLen&JotuiZrse$x*zW4;_B$M11vVRKe?RouSyOC?4DpkZcJ#i# zhRhRABt;RaR4RM~SZ!~=nNeEWmBD)^lanBk2!w$FU})%9Wul@u{|q`_G~v_o5>ler zWR7tx7nkeeDyype znT*+`%}v~Di$dXJRCy~hQCWHZS>b%yRm?=jF&uugtrA>`^|8-Kcj0MPR_;lc>-o7r zpwS};ZiO2elO#PVNv&xJ(_(3)jIF7< v{eEcNHZMNv|IbJ-M`( zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp zKj&H9T*boh2i)W+(n27l!C)>fq|L%VB1i ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;mtzb$;qA*nT@@+ zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_ dcRl5U#9zn6ZO}GF!C{kgV#7nZ!}+IFwq-SXfjo|dBU;$2A*R+N`fo=|&GUYL?n@~UJ} zRwmI}jPAB8^01Y3C+^Ijd+pCXe>~g?4Jqg4)T#41=X}pOfxGiRR{6W&>CB0&nI=@t zRrSu<^!c5C0)&<(_cUQ7TI*VgHN*l@P5-TfC4f_@-VY11P%L?g;zAJ-8T%U`aCgp( zo^&%s)zGr{_QtkAOc?cV zQv@Ya7h%t}T`nSsD7Oy`1i{aDaBT3P$D8A1r!%M-=8CwXt~6AISyR6jGsiIoM;>tZ z&|vV(9f&CEifGyEVzQcIGxNN8`GVQmBE|UvZp9xX9KCnIMU)jaD^N2^UMg#1ikMNI zccRNH*tm5QYno!*e}0qU>_gJsE$2etD<@XAvnsrb$ z6AdYytGA&+iFC(ifFqRvB@qNA^X?fNqMb~-l0^}rXPZ}>v4 Z=Nr{rY9&UI$M^sM002ovPDHLkV1hoZLv;WE literal 0 HcmV?d00001 diff --git a/www/img/icons/plugin_delete.png b/www/img/icons/plugin_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..d9c3376d4593e666a148192e2527219c09402b0b GIT binary patch literal 692 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/printer.png b/www/img/icons/printer.png new file mode 100755 index 0000000000000000000000000000000000000000..a350d1871536eb28fe2949936de1c79c1c26269d GIT binary patch literal 731 zcmV<10wn#3P)^msfbTI z9jQ^EwMRD5xNEm*sJPjH^k)@gXT@kl5ii6#6jNXX`Yb0kVgq(zut?ZfbRr+DS= z>q{33dTpWN$tl6c7nxE)4Qur1GCxuUnp5Y z5HK(>u&W4&EXz<>UtfnPivJ`O3Zb4K8yl-}7K;Uh5XR!-B2uXo6E#Dr&Ck!D<$0b5 zXEK?PNF*3;w;Rc15`MqGDN4rSaGd2kJ3GNmOiaM%^D*ppJL2&;mX?;95{t!PwOY^e z?d|R0=pOKTy$qMj1$rk8qtS@b(NQ*LUtb@(y1JlNtJzsS-`3U!Ze(Pn>hXBkfzr6} z{3Vv(2AlG1;RQN6I#_mYZVs)jt>6p>!_3go(6&ye1Mdo>SRyz&A^1T#%t=UROW6Bf zz^9CeqErU&3`3<-Da~6HQ^UW&yCT)$Cu literal 0 HcmV?d00001 diff --git a/www/img/icons/printer_add.png b/www/img/icons/printer_add.png new file mode 100755 index 0000000000000000000000000000000000000000..d228d0580d8af0dea62d44c8fb33851568591286 GIT binary patch literal 782 zcmV+p1M&QcP)z?``cAjK`}OU-rz95{9r*BaIM4Gr-{-(903g`rl=7|Q zY>&q#(t7d)h;*K$NIRJnY9{ifSDk%3Yqu%bRNiu?SJ@=KZ>A87|74X-AsAty99n|( z-hARj^YETs1wxH0v9ZNr=5v;if#(y4@r4vpnH**!S=<;|!byew*{*^rjVs9uW{F_- zOBPd$X*fS}2(N5{PqwnQg)-H6=C1;^T3uA7nc&tpIrzzK{^i`S6lvJzwqOp#u}(%i z-QnOQ5=l{kfHX@9aq?JLBZA;^9v_InM?~Jm3>{-^K0(gXsOWT}uC6XF7K^1+KpM*i z1_t2udU3ADjTjMxqIm=f{;xT_C!@GY3I`b_Mg(VWy5Vp*AeYNgUS3|t3w&fD8jV7! zRQ?xyt<&j5b#?UuFW|D-EO@4;r@^x9KXJKS*sgDFZOsc*Dit`6qnJ!4gu`Jf`jaQG z`ylT>kBfIiU~X69sr4ZkhJm2Hy&b_|kYX?x5DJB0x7!PNVC;t4#9%m}$GeCXy*3$Y zdXJ#A<}d_pZEdjGY!sbNhd>|zi^WoaL{ou5|6L5u-3Pz4qmAety@ZmceGrg2U^bg6 zdc7XxO(+V50xc~qG^X%cF-8K9v2zXi^eAcG3xP}~%NdPED&QMmynKbRHxmUMzj6RQ z)(hyeN@#PJMM4uCZ6X4xRQjmCzTQ_`TMI_-Mk2{!b%VnK>(>B<`N@M8)qp=c#EPlOx(m^7ZttmyEx}O|KIyO@5`Y8P&=Gak4UOI z9A;ssgC#(yb0mbF7m2Kp5(`OOSQV z#ZO&(x9_ilO06xv9b+)LoFSy)_{?B*K8a*Hi^)I+ci%6eOlj%)tDr(_OK^fIBAEJ; z!Ng(;^a2C_Y7|^&tD7+hG^6Q13R+uR3oEo^%vO}a4B2gFCHu3B6wI?R7(Eeekn#D93#ZJ1gl2JlLaG}i(tJMm*T#oYcaselBlZ9X~2(?=M zUvRZFO{2QHdY%(7nM?*8PNx&$aQL6tY&PuFH#Ie}lt!Zg!!SI3eSPrz{k-UR9C{V# z%f~QSR)Asg5qx^y2B}mEN~Kc4>-F*&3 zz9|c^P`3wzRrze&$pas9{spPtk*$9`fqKI)>UhS{rM!uL;bHz3OoF`S0YRRM%X|m5 W5Be1eiT(`$000001{r$78XkvMLD8LgLPI}p^3#ZkL-WmU{TI1 wPFcbdW00`FlWkSj%Pe9r%we8QTmJp#H==T7N?a3H(*OVf07*qoM6N<$g8eR!YybcN literal 0 HcmV?d00001 diff --git a/www/img/icons/printer_error.png b/www/img/icons/printer_error.png new file mode 100755 index 0000000000000000000000000000000000000000..279ebb0e53aa400ce0d56ef55306f5dfb96d18a0 GIT binary patch literal 854 zcmV-c1F8IpP)}sFDxRh;iJ`Kl6P99uC8=RvRI)}HkrHImRbEuyMi<_M7fBaobX62} zlPf9eDk#N5YwAseOmSEsTF>{Vk~BJwPOZ97&_0w~^#(52_;@cTLqJi(-d-dO zvy0z<;;>|=arHNxEKc`4{&eb zea1EMtc>>BMVM;ZG48&F`h*Eq>ovGsE(8LBhpK?hZntZPolYlgHd}_kX5cNYLp5^E zb*L&CL8-M3MMXs#hKGkMI7yNO3hl7p@7Fd$q0m-=#1ITC?@)2H6H??2O!iKMCSF5K zp9Di#tgo*#L=;6VEG%eHiL^k7MxzuPw1YmPxausBn8w$q&yk%MM^@5@dC$l$hfAl^ zSX^AxJjP-%sDi0f3c9o(1x6k@`7!F<2eqP7^c%`s`Y`+95u%n{1cSjX0hOQ*y{O+Zbdy2gRyjvQ3h zv>+=d1Vs$f{$w%r%1ckkkP}{*4p=~bjiEG00qbx$%4TP0g_)U|lFjNa+_=z$wTS^( zny!P;mSp(-Ao?nl)g99;BUFMjTA|CfAU{0%J>xZA8Jd(h+FBPk`oK!`CCkb-<{9 literal 0 HcmV?d00001 diff --git a/www/img/icons/rainbow.png b/www/img/icons/rainbow.png new file mode 100755 index 0000000000000000000000000000000000000000..5ede989a4b9aabb6b4473a45870acac30ca8b327 GIT binary patch literal 655 zcmV;A0&x9_P)u8hXXmW8$M^Z}tgueu#dCAu^FHtQeV(HM&<>-oby}}zNt6*; zqOz!R7;sXQCXnvAh%NsOY!BYTPS6Ya_FvE=N~N0XvE{pt>_abd<38j9C$Sf5#*g^{ z6#d#i;i$++U%QNK=q`5eyJ3V~u*Q$0G+EWp#2~B(nj<_bDs2zkL~hK7Lhu+$HfYV9 zg88}w#kZGWr6!PHZ*X)j?F`*Ue##H?v8xKkTTpy+9>!)Dj4xM}tnU%z-?{#Jvq5LV z)@YN0%~$O(K6n)LZPSD2E1d`=S}^f`2uGvZfdMJLnQPaaO}!IFvKxB>&n|bMcm4$0 zUpC_Oiw1-@0yr|I9f+!ueRKzf;l|(20%tyTVPvrtXKnCG%!j^695MYP&h*dy8jxmG zh3GwXFus{<)0uFafajiFK;M%%ru8Id^v`&@kgN`{8&+n{jEe5+VD{Q{CLD|<6d0af zLr+L2Y>HMnV2KT5NtiRE;&b?xw@c1+=e2n-zL{&& zned;z;Q))>W;sY6uKp4No)iE8002ovPDHLkV1im2E0q8M literal 0 HcmV?d00001 diff --git a/www/img/icons/report.png b/www/img/icons/report.png new file mode 100755 index 0000000000000000000000000000000000000000..779ad58efc5776825ef81064a042eceba274a928 GIT binary patch literal 649 zcmV;40(Sk0P)sm$HQ(N)Ek< zrc#vXMLdW}TWpphCZsGREkUZr{Mg;M&b;luZ0IGA9rnH1`DVU1->eh_0hG(-dw<@) z-1S-xc+D!@wd^?Z=a`M%%phe@J_EnT0QpH7V3 jcG~XA#&PRl)Zh6(yXt(^KFGF}00000NkvXXu0mjfDwr>g literal 0 HcmV?d00001 diff --git a/www/img/icons/report_add.png b/www/img/icons/report_add.png new file mode 100755 index 0000000000000000000000000000000000000000..d5eac9bccdbd7b67529851a7e325f8da95c4b930 GIT binary patch literal 714 zcmV;*0yX`KP)?M^6&hEY^hlvJDB989RxW$OpU>|&7C!ZMnz(wW_8 z%4_O$i8?inSS;2{tXQNsU5p{a{r<(%`+a5ad~p{ZcsQJk=lOolb2t(J5|77oe7-}2 z8KVMDRRtsxN%c0hhs>33w>$E6c@f{1U6{ODj!Y)AE%6~nqj3krFv=;j4xf8;n7mSs zcswprG#W)D5)rh%zK(P{y%8WLn1iEUz9k?Rl2bSwMk=Ki?=?40^$1L&Ozp!v;TK7go1 z1mo?ESa_ku*f|-WPTD-Rl{2>3{J8$g&vy`u#j*tnM$gFjf+!$&6%tLPyOTK-3Sn(+ zEy4vH%o9A&V*a@Xqo?-@=GM0>Xny?%*LwVDvi^qtyY0yjr6tSA*qBm!!@ft$$ucnaoc7ie`(Yhjtzp+;Yl%oE&J zW7eX=@UeUVO{d~c+^xa{Ys2O>>g`5NQwg>Z3>}pso6Yhskt3+RQHl;{1I$h(Z#GXU z#RLX}K{`;k45P)CROWRt-dv0|g`BB9e*V>|nBUvKAsWJiZyICw7K_xGH4{3!sG!{InF^GJm$ zT{%7}NF?WKp`AQp>d)-)JCE#U_u1-VZlkc;HoNjMY=As7s@ zT*1L*gVtKiw5u?DYPS$>dhJ6)j~7?FJ-FQU6ZJ2Cp#HfF48tH02&}Pz)dFLsm@gn3 zT;3e$QehAPCuhy)V$zIzI%_9)_GPmuj? zLiBATzFpamXNTy=c?NdQz)-$R7?Bu|#Vyrh#JDi@CxPb8zJlt8i@>xLz^mGT$;v`> zly2;#$a5ytNVXiieW2)$Qo2>O*3<1R+tx86rx%Decli$==AQF^vpmAoR0K|e00000 LNkvXXu0mjfW4KG5 literal 0 HcmV?d00001 diff --git a/www/img/icons/report_disk.png b/www/img/icons/report_disk.png new file mode 100755 index 0000000000000000000000000000000000000000..1c856cd61593e944e09238a6c2cee7e10cb42c56 GIT binary patch literal 760 zcmV^u|ySI)$xo}?> za_FHfThhJj`M)!)y1Ken7-L>YP?_pt$X`6n=F1=cYufX?^1}RqJ{J3UFP&@z zECfL?sZm6*)=sM9@pvfG($ccT7;|1yt+;54&pQ5j$#EP+q*g1XYJxR_XwSX$w3G!2 z8vst-96|&vgaZNsoZQ_szDA8;W-G4J{Ce716A*!AbK_$I;eFp<0>BspfZNc}Fj7}n zH&}UjW2aN>p_1)q;jW_`Z~sC}RT&uigd@Cv23*T7n=wUqsU zAEO$8$8UyegB1-$AM!t|C?yj;*oTW|EL?#jJ$3auL-+@vJEf(KsTqgop6ei4H zEY=EI2UM$i0>P`>>10YEOo!2OKty@8ZJUOcD&T+xtAv;r<;?W~3dPa{g6#)Fg1eo# zu8R?iO9bIJ?eC7zl$eLYAzvQk(Asl2#3=h?9%!wXum1F)FEJyIwUEtb@jRFLvtd?p zluawwQ6HTH4*aalAvIN#h=QjS>hGUEu&8mvykvA^t`rPj{#@u;b@0}uB@3EX)K94= q=1oUSfD%DjgQzmS1APn^1O5Pr0d*Bb`9~`N0000Fu+SB7fQB(wh zKmdNfpU3O3FR9n6bx(yFW?LM)(cuM#(}134tA_DETWd7rfU%`9Ss=MUcwKe7(*}5qB2i- zk1uGwpM#!f*=R`>adwu?cYRS;jk(Tzc!pa5-%tD+u18O4qC2Xf>4JzmAXc#PD9cj> zmPQIePd8!CP=*zI1Hw)dY_GEEzXf-*VXTm&DS011zVX_L^0)8ccHG9=iU}(d*Wn(> z!>C3EN6l48Pm59_3;GNo&c|{B_6$7JdMw!sutt#xjAwwFlEOQphN~tCL#8&w#Kauq z3z~1q(fw40MoBC;o*w>)IdlG>aXKj16)Zb$Vxmd{%a;$BpP!F@3l^rJLA)0;b^@b% zC6jFgH7P@IDh(c{Wc;}p7GpbRXJ@0o#O4ASx*lhtE=7p%ZEDzbPcYM;iom24?jaS% ztCN_qjvKRw%nSZ4cwc%3@H#P8m4Z(7ZuByD?R}I8$5%ZT78bDi;tLcC#U8EX02~=eBHXF=lGptrCNRnI^up*XB(TLMJ44Z(P$%#Ob!q#T1>~_OL|8>GWv|h92aa9 z{ih?;wSVF8wbi6u7gt=;%4KDEJzG}p;qAaH;=^%nG(BPMqDp@klu}ijdLQ=94+Sv> z5{U%ocC@0D%Irbp!4@n#NPHkpOYK#D^dGaU6$t)gMq7NmrR|21O9Pc~fF9rbtGGLP%3{FW^mxhqYuZ%P6Ek$g&*yj-eIG zOqohJHFfOGwFt}FbPkXLB2$&hHG54GTQ*Tphm8dA>h>M+89Ra5!?tpUE(y z&c$%)5r{;hGrQy<89r{a*@70+1nj0U3>K#&7K`l)UZPg3_vrQdlA)(cOzM;vl%|7a z*(5@t5Q4#=Kp+r6G#X6^k_$#*D3a_DY)Q7DX&RfGo5=-+8YLzg6)@bAARG?!RCO*u z-LZgs9IAE?RIMIR9Hc@J2nAD#f`LK_B9RCW8SWTeMLS2EaTTp2tEgz6=LMuHsbJud z0$&>B=r0iScEaCZrJCpPURMoEmmL1-PB07;|7Stp4KaT}M6k6A!Eb58n)xoGv>7WS zcd+=ipXCH6w+kM~G5%79zUzmD;mQ^dDw^DAeA58`m=w{C4s3j{#+pfsxp#%Axt5|y zE|?mHK0l2YkTW0>vg^`k6(Z~12>Y}MujsJh)PnI=W2WIeEfjpx$T0Sz483`2!XXm4 zUE!OkL(p9d##0W~TM1^q7|gE%ShZ)FqyigP(35*eIK;rB14~2YST@QLn3aP0oe$Ps zgwW3dOg}yaDs#VPyWoBqjCG~x$xaB?f9T=u<%YbC2)S;8nazf+{v4doFJq=I2Oe|( z&U-)#K3+^kJRXN{xSZR$4S{bNU}mns{yGbmz9vK&8Znjzd4zjFQB-PY-ZAvvK8+6- zQsHvBuwYOi;(vnB>{ZxaWx?2852w=!tJMm--42t8`o}o+HVTUg~@9%wnpXc-b-uGnzU`3-*UT|g@ zo0_}${PYS~EY{64<|1jn77mAt-?u~fu^oW-Nf+w%`k6u@8ja@M>gwvyr|A)Vn;(Jq zaTh9;N=r(m5{kuQGx>ZTM@L7;fK~%PHXd~T2WUVVDHIB*)oQH<8-@{t98zrD@5JHZ zAeQ1{U@q&rkwFmX$9#l+-MHA38*g7^?AM8Z6TBRY)Oa3%mOx}M#nz zh*gWh`lJ+JUrX?Dpo7v${ylY!X;i*V;Q5;bok6)={&T9q+Pw}sAOdJS3JE!pJUeO5 z<#Nbovqc8bb7C+dL2z~$YohjM^VqvRC>D|!olijSh(k8_3$j-~kxr+P$z)EM!ImFx zVLQBDFU)2$oK7cV9tr$gQX9rVLQxFP;kVqu3*=*2iwR9~I z2%y*NDMYDM7ETPbVvIfF!JwO<05UKhj|ZR6he#xXU@!=e#{({xOJ5@aFraFS!OXM) za*3D%bUGdS`uf1(a3B(iXvmt>8U|9SG*1mwD%GXs{;O~d^x$DXhboiPR#sMEx7(pm zD8THaYf^K&-E;=0BjsO4v literal 0 HcmV?d00001 diff --git a/www/img/icons/report_magnify.png b/www/img/icons/report_magnify.png new file mode 100755 index 0000000000000000000000000000000000000000..aeaa889534234e156bdcec30b73b591b10d8a019 GIT binary patch literal 738 zcmV<80v-K{P)JgP zpi~!%ir7|Bt5jR6QQK0ZCTW`7b7ovzy|oJBfwLHx`JHcmbH-6s1_lOpm2RKDZl(&D z@ey|9hdTJbGvW02_pi6sK9F!G?O~ZbbC_*sU;J0K@B1Bo5ClV=ot;M-U-ssk7Xk`l z7|ux)5ma?foJyr4k?!v9)z;cm(zYKD!}oiAf4$_oE+P`gj^o6FF+uWKZ$8teAW;Iq z$xGvifI?ItAi#;e+1WN?g4X?bj^W##yRm=>tXZ1+DG=Sk(Fy?8+PMV&;I({9R#DYi z0ac!lP9uPdqGAz^JaAoC{vbGj=NO8&@5Viz+?V6gn+Yb%HOjRH8WKt7r34#RF(y$3 z>@304tNBc8#Hp%?2p8^uV8Q$rHmu0vCp;#;)hU*0JbqhZQ+rDq@O~pWh=-wgt1ouC zF_or0*F>@AV5$~%JQlZQcrjd|P$=Mep6dodFjOcMj*R!7qx|GNVu?pouGUE=6BsLq zC^L1TZosHdE|k}>@gRw+&tz7K`>;DS-0`kjdx88QmDen$Oy(5j4`A|Se4f3J2wko zOJhvGAEb5pTDmrm9dmve*0XA1*Rtm1)<{9 literal 0 HcmV?d00001 diff --git a/www/img/icons/report_picture.png b/www/img/icons/report_picture.png new file mode 100755 index 0000000000000000000000000000000000000000..3a9a7e5eb91319a532f1c796740c70692b8335eb GIT binary patch literal 733 zcmV<30wVp1P)jdqY@m5y1@@iycWVf~UiPPmZK9+AcIyv0)YE`F$AZQJGdwa**+S<<5zV6SY>Hz_* z^@>9093rw}pGYJC_(x#KcXx8|<_iX&ePnXFNPa;R1U{j*)C7L@R^@PWue+86@v;8Q z+O&WJr4*B2iX3m>PBNMLFMl!A-0V}AgN}}loz~iJ*LVV78Gbx`gi?yaq9d71F+Q`v zrSc?V8*qfU_!M6Y zC7d`SV^}6QiLVTW2Ngj)<|6{dQbeI##>!6?b;$QpnF1k5rKT!)emAqWQ9xwr$3>u6 zc1+Fez}38DQJ0u6Y@@lUrrOG?;1oWF!r%}9p|&^&^S>;6nl92Zb)Hx6vdka2hS3HA zBJHXIZ}?88E-g4qMIeGg82fw{tu@0@M6@wR^s)o3HOKc4BeFtp8V|$Vzz|9))~8~K zjkt2Gk3SD$S(eaRQycS^37+20q|y#-rJ#AsI&KYp;LB`@ARZ7!mU!F;sRqf+zU`_e zF)FX|Fic)L!_mR_IOnj|VvHdSLvpzs4Gj&X)9Gp$m8#5wF=kiGoBJP=8xn}X#KZ)~ z7>qGXbKrR%xm=EHHjC$ZL{U_^bF%x17Y(;Yr_2drFbQ=B?CYbj<)Iue4Y zjHuM+6fIggQwO;rx(zM1NUs_(1KGi;_5Ap~&-=VA0IaF0sdJ+( zBtEEe@J_TBEEenV2D6)LPPf@?{?FDi*sT@}7o}lsZEZuLAu5$>lhJ4tzP(+F@vc$~ z7p5T;3NaE01mO4k<5^l-!s_a348SxP!4Sb_H2Zu$w5!X|!r2OK&NirsEPR=p!^+AE z(_lzjim`_!7!t6tyu3`Orh6Whl?~8ycR+JK5!z@iJGmLx3oon#;sz5jgTYH|gu`Jv zs;Bd)$~%EOWCk8r=At}%7pnRDL1rc+7z{8C1{+K8sk0aZ`KdIWO4XC^sFsoNIgAL- zn())ofnP2YdYTHNfMDdG2K{-d^nfS;b&a}CLL;&3M?)z`lEn@ z>jw437=1vZpSLI8Ox8aKCpQmuIz6;XA=+*Vp}2Yj#Zo!$wzeW6A>jzqU}6Nu+!PvM zHk+Z--GW3S0iS;nhOS2#7=8~fmkW_d1esicqsNXL;s&N#5|(xe`Zy`{0KeTk1IsfV z)Qx&5mF39i^TFfsP*6aiNGwISp$VSW(-DS&Eo#u4lS~_U2kP;%mW#_`1@wA7G#U*E zfC^9bC`4LA3-Q+eGNijse0UKYlEHg}R{$a=DDYia;QsYl-3-7Thjm zr0+cYm%;0-Bt#++`X#7AQmadCqs!%j*XzZfC%y+26%|R{oPFrKatN<7li+r{F&AA| zr_+gCR;x7zpg>fFsasCf9oVjsuoKDu`Od!qHK~iHIh0CT P00000NkvXXu0mjfuTNAF literal 0 HcmV?d00001 diff --git a/www/img/icons/report_word.png b/www/img/icons/report_word.png new file mode 100755 index 0000000000000000000000000000000000000000..995134248551bd273d1d82c8eb10c11545a28daf GIT binary patch literal 731 zcmV<10wn#3P)x`$;*%QE>Pm-#2tuNQAW$Ppq@+uSPM$2ic=BSMf;tzS4LT(D4twpO zC5F`@JQ%)2wPk1+YwO#tn(OYf&&>QgtZpeCoZG<6@ZmqdpAr$q$Hy=J9=bQ6my_uE z8Cv=h_3UmfsIjrJ6ULbLHprK|7#8n$a=!P|u5O1yq54of9#1qjHg=VL?(eIJ0s=u0 zY&&SJMMSpkJ6c=d?vho>Ndh+qm9 zfWQ}iZ5Wo)0aZ#dHD_>?&~mzVr{F3sn#|xZ01^lYWOEkB7cQKMGLcwg%~;N!+Do)5 zvV8{g{SR3meS$R<1pzoNn1ba{G|Z)@{RmJgn&yTWuA_De+Hue<4-BJ}BFI~o(mr>( z>p&ov*IaKuT>8evv|oH+D+kWVi@u7O1+$s9z;f;OM{?^qyfP1KL99gt#0u6b)V3rR z^5qViAGbQVJop`JEyftM*7&|pDwU$Tx|&!lR#GUXie1oJA3yo!<@BC?9wIO^GlSL| zt#zpfj^mI@rI?+a#c>=8g<=rYR!KUJM9&?ph%_g&!Oz}r%agmU^B=+0hDY`Kt<(Sj N002ovPDHLkV1l*bNUHz< literal 0 HcmV?d00001 diff --git a/www/img/icons/resultset_first.png b/www/img/icons/resultset_first.png new file mode 100755 index 0000000000000000000000000000000000000000..b03eaf8b5416fa6878165d95116e73003f8445f5 GIT binary patch literal 522 zcmV+l0`>igP)ufs8f5Kzx*fI63}@)AAFXgQp7K#X5)&2^7g z_9O9^7^ARqyc%qAP{1M7?|}io8xW>dotf=a%%ZSXBBI&Rf<-t`#(~H!2g~*8&15{# zVXjXMwHZYVJ6lk!gb6?r$g;SuO>QI;yeQ51#0H@Z6sk_ajqECPZEqLq!PMf5MQ5gS1i(Owi(ut_CY*w|Psf-Iy6=08Y` zHnsuDs6h)+OwcBqopImX_v1c`5LkrSCWWWFUvW71z%eN$cB714YVYtd`}$X<%JbQ) zM;;CHJDu;#-swg0iul07{S&4s!M>4O+`c|6_tW_i^y+I%|aPsIlEx5K=^ki~8LwqDy-)t}thx1D9 zB6|#ECQ%2a60OQQ<{6-)5|okv)6E>1Xpv+@iIv@MJ8v15 zR{N~1_2z$e&R$WgNhIQelIl1rK}5XruIN#GDZA_4bJqcqID*^mXXFcgt1K5iK7HPL zwLW*@#tu()#Cyd@CHc^75Ul6pYT4PCpSeBE)hh4bY>IO8de(|Ml<%@O-40!dwX61{2C5s-llVw2V@@N0oo_PPieZ!0Y2~+R( zk!(QTf=B;X9DnzJ@u9c>OP4(U@7{849!UlyO@H`*;lVfmCvAW6f9CF&{}ZR*{jXDW zb_vl21ozzrYJBy-Vb$aRjjJF3@7nm}zjw#A|58cE9uZ}LbIY~=6ShA8U$XeY|MDdd zfQCH!?_7WRzhvaG%|sbsT7Kz&`}!yUix%Do#>T_{_Ei`DO9UTSBkH=Hg(w4*^UnUS zTk-IJ<+2C=ZObqG7Z2FGlB7VCN;>(!bn*TFHYMl(i+Sx`L~=ArL>~EXU3lidsO!!J pWF;gqzXSh89JkLNxXeT<1_12n>%V}Y6R`jQ002ovPDHLkV1iLCz99er literal 0 HcmV?d00001 diff --git a/www/img/icons/resultset_previous.png b/www/img/icons/resultset_previous.png new file mode 100755 index 0000000000000000000000000000000000000000..18f9cc10948f025fde708328fa704b520161e5f6 GIT binary patch literal 389 zcmV;00eb$4P)K{b{Xc8(tN&i@ zH%T)fYQpV#rAr?FpSkE_eXe+_wJd|K3f{{%aMTC(eL? z&YO?2=RWv9b;pbUjjJF3FIss2fAiYM|D{t;5@!?n%vQ}6um-u(1``H~0!(`ViJ zU$yMvf616*#2KJfaGFIu@9Y|n)@%Q3RzCcnHskjH!iD$#iw7MbEf6JRj;ypTzwkeA z{@wqXv+w*Db>B;RG>UocU1Xkp@_*9QTmMBIcK#N@1p=a9KakdI4{r9Fsj0rE)+ zb~J|8lW*Tz02$`Zaxk^6sfOa5!ghcM1=puT<{WmU!JK!6{4kb3fZrJ*ROjE>@quHyr}*Cr;=Aa64! zj|O-=Sx^U(hAq-h=kq`Q2V>dc0LCnFFu6l&F;*d8IpiIHH4yNNu{%yB`v73}L;K|S z5BXjfZJO%>P`FNNQN^m$1zjx5c5Y{17VpEWq!t0|e{#P8+?shbj%;~D00000NkvXX Hu0mjf+-WMY literal 0 HcmV?d00001 diff --git a/www/img/icons/rss.png b/www/img/icons/rss.png new file mode 100755 index 0000000000000000000000000000000000000000..1dc6ff30ba5020600aa4ba2646beb9eb25dc978f GIT binary patch literal 530 zcmV+t0`2{YP)8MDR)G%QU0LxY1jsDL`i z5Y)<<0mFa+Gyv?I-SF1`9OhtF)?#(7@ZwPg0IYohcf#rgRl*cR36-)JAyh$ycISTR z#|RJ*0Y`3-+O5RfdxRPJ@Fmbb_UtP8y?FXu?dZjo$& zzrG9Rp9<^S_%m{rBJa8vxT8 UVM82oKL7v#07*qoM6N<$f={^a^#A|> literal 0 HcmV?d00001 diff --git a/www/img/icons/rss_add.png b/www/img/icons/rss_add.png new file mode 100755 index 0000000000000000000000000000000000000000..b590beb7384ef1eceb91d38b67f3f29d7ebcb4c7 GIT binary patch literal 649 zcmV;40(Sk0P)_`vtWfF`j z0<2B6iHB4fl=M^yJC7s$OkB4XF^SV+68F!}^Z5-pSkKZ)7dfJ zWJl?2zDxJhlca-{tPoI3*~Z59s;f1d)?99?+e2nUJu`EYjJ+LY_Tzl7TIxDCwpVon j=YTRG2izRLk?s5g)J!H~cfFa;00000NkvXXu0mjfU zi6qKEsUS((2z^ne7sH6u^xpT*$7wNF!ypjufnm-JGY|ZJ=Nu&>loOgVqilfTUekXx z1h4^|1sA{;!TEUSfucYP27p~1|NITBmk;25%&jlw4qn_X0RR?q5CY;$51d211M3iH zboWq^PPG;;65b4e59pTjU>C6uFOckS$9)}J0cfm^fFPg^RMkOn$lMhAa2LAi zB;mso)RqR!v0H@6*ASvaQo)cfM13Kk0JZM~@^KKVYVh|v(5+X|d)k=nX(9J{mc^MI zCTpl|_)UE(7*ZE$AwaN%vFqrAoyhw^lD6C6Et5CTF_%`-*m05d^?S*`8)9PQDW*_F zN&gO^@i@Y-=(=-=jZTY=?!SC6O!MhJDnAXw^ayO+#1B))#Ly^)ynwYRUx8XKq4%-& z63s2n7pT})4@W!yc3|&zia|<%XLnXQ3olSyy=RPKX?&3EqqC&>8J2*B`2>?_)LN!- zq`jthU3K>I&dtskJ;lPTdu`X^&)k{Bt2&>^w7@{?kh}5+(yKTs Tolt1000000NkvXXu0mjf#S9}s literal 0 HcmV?d00001 diff --git a/www/img/icons/rss_go.png b/www/img/icons/rss_go.png new file mode 100755 index 0000000000000000000000000000000000000000..43a86bff65d0c81eb5d4ff8f95e4e825f9015a0f GIT binary patch literal 635 zcmV->0)+jEP)^cw4_Lf`NnXu4)qJaOz0Jk*jN=Gk2DWh4)N< z8s*VU4f~P`qK$rI>tMXr-gv6&^_Q35oN{`3$UXxb2jm8#wV)MM1r50$LpE2g{{bi; VQ8S@)tH1yN002ovPDHLkV1iVr3a9`8 literal 0 HcmV?d00001 diff --git a/www/img/icons/rss_valid.png b/www/img/icons/rss_valid.png new file mode 100755 index 0000000000000000000000000000000000000000..a6d0b0e872408ecad6388a132fbc95aa4ae9a558 GIT binary patch literal 660 zcmV;F0&D$=P) zlTC4I~z~%t(2;3ZV$IVbTEK^K`cbf9DJcWsEZG8LjgQ3BX ztk>_fsZ-qa^*zkr^JiK2KaV+&zI@_j^%VsVuFdVDQY^v4>l8Vx1;n1LCn5~d(Z zsIW?vOXDVh8tp@`Vfq3Xjus#w0#+U)DYX$V&J$*&OAmk!WA_e|ZaBm2QW<@4n)vV> zM4A9qP=jzNO&}hhB3XTc#2Wb1b6`%|br9q`a_bOGJ*fn|_k1ofNlU#NR&w&qt&YqzwPe=XD1lS-g*U+YebC>)k^TqzktpS2p6W z`Y3jv%8gZP0vejr+`$EZc9x`b3w--bVcS)b@+9o#4N5(I6qfBm?;dXg6aQFF90*an*tf?f9 u%m^eP3upiqkd2B87`f4-l>F~^Zs`{-O<@5o5}gkK0000k7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-la*? zu}sM&ls8IJIBTw8%#^`KxVF<=?#=zao!{!hU{cUc4}5tzhx2@%m-Fxd@cu=-{{z7G zcFU>0QV~u$otEUZU1a-OC&^y!AQ?tY(ygr|b+Lsco1|o`K@v%vt5f6wG(bj`z|0F^ zejZp}2K;`&=R@xGD@4Y|5FH&wd}IW%2M-Z+I1s$ukImE7iFo-b2?uzKCy#*1NxZPNzdqqd|ya5LK(Op-|vmVZ9X=X}9uO24{Kk}A!B5JXr!qbIp8z_8L}evXRx6$w7guhv5miVSjlA&GurHb?&tlT#n6(v-{&G z&-l~YZX~a3p)yv(^}zv`?|y#1w%JRt&vtNt1X7ZUi&z*Oj!7dOpRh%pPmp60w ZKL8&#%K87S&;0-Z002ovPDHLkV1m=DG{pb_ literal 0 HcmV?d00001 diff --git a/www/img/icons/ruby_delete.png b/www/img/icons/ruby_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..30022630d81b07d271d8168bc8e2b67290fc621d GIT binary patch literal 704 zcmV;x0zdtUP)iMii@3{=qhJYmGNO z6B95x3hnKL%F1wAEX*kiZnK#MlZj!2fe$q`IEqUU@h4qjfmpTN`dY2EgY3raEE})C zpHOx-b9y~rGBf!uF_oOm`|4_@lmbNTiFwb#_?(R$NWW3i?~_nfC3JMa{5*_|pc;)V zN}@-Kc+%5x+U-nVRS-vxJKYE3;{Lcoz)}#oo}b?pwAo;A5XQ$*<>*4E!<&}ILR}p* zlI%Hr%<0~LBxchy`i-VYUruh%vKUS;eIK245Ldvw}Q5*3@~ zVD-Yq$dz<`@7nDSQ-7tybO?#sqs)B8oN*$8uuoo~2V~ z9c$K7d^fE0CGJpHC7JsMutkAAT3Sk^CsjN3*My0q35TTLA?bG}JhnRgnBSkLau?zH zmf|Y?y1b2MkR*S(2DiklMT@L|-jcwJ+}%|}%D%vyEt;=4x8qc{@yrkr?AB>-ZTZu@ m%-vfdJ5K+)f-6i8*M9)_HOV}%zz`7t0000p`gJ-s&X^#FvVo2#P4DDKuuwP0($&5u3Gi3xsSB&b7S=yXf4CDeP%T zi085%<7O+R*T-!1OkxYf)Oe8PJhFf|3Z zT)^5Iu)GXROn~X_MMf$`RxCzAB*G7Y0H2$h5ZCFD?0yMSe?7wz)Kyf5I<$7M#1FH8N)$3v2_5+iXKrRO? zE#aHNfPmMFOh*U8;V^>1AYwf#d>plvU1p2xSPErnS8b`Y(|x2?0}Bhl>MHzxKN5)q zLZJ|~WF7H%96q0qF0DdGWoWh9v&SMiY!lQT@LJs^mAXo>F+7Y|EJm$yL8H+?uh&;) zM59p{jm8fr_F(@}OYPnRj{o<@d_K=k0@Zs^xOBC}VzKO{(`k4-9t;i+o?MRIJNGU) zsi9t~KSfQo+wIu8c!kHVnayUhMw7Byt&m70e{R?p-qV}2FJ5IA7Z(u-1TZo(vS%`x zh?}Mni9{fm%k7ll{HZl{(DJYZ>}^;%?7^|IG0e@)u>?>k6lYE)pc-v5nGAh>eU0O^ yjRqPko!TlC3K>41Kl4|QNvTvqAYki%{Qoay0^pl|RRvxE0000S literal 0 HcmV?d00001 diff --git a/www/img/icons/ruby_get.png b/www/img/icons/ruby_get.png new file mode 100755 index 0000000000000000000000000000000000000000..f5203c7e94b09b06f5b6f42fb84b126e323e3186 GIT binary patch literal 692 zcmV;l0!#ggP)Y=UYJ?ASrjeqP`A=ks}gya2C%k=OqLkPGuPLSKZW zHF@$4lE;uGt!8FOD{1E?w=P9mPE3@R&YqK8@oH)Dc-)-x=rQd&KolehIqB_z{(cx4 z0jm|p$MHOU!dz=B_Ldgro11Yo+`wiwW4lz!LiiEqd}vtQ8sHT-8=5%;PPS|%U6u)d?MW5>JPEPJ#EhvD20T>-c7S^SxD4fyJ%$iJm6vYnT zpb7g9zdgTQq-(r*x zmy1e}+uB&EsllFYprlbP7eCIWu=fJ-x0IF*gS2oca@+j=gVtq39!`S+V^h3b^eBg> zH}y1F>PWkrL}YE)`|yg8Eq_dy6d39w`W>vergA0TKIP86pU(9mGj%UbWZz5YKv}RW z_@bicuOq9fkHS1yjj6w!*sGBQ8T~>xbqm5WSDs&{{8=%9dA@A=n1p47WfVC+?9SN! a6Yw4MW6QB{x)Qkn00000x$iEP)rl-P_^Mu?M#=uC#u zWRgfl1^(vp$dZ@wYeC?I?drV2_}Esbuo$wlp{NLwN$Bgt^*mf_ae-;yCtO|4g3rC= zx3!O0Ay2s%Up0TV4Qp|us^d4wE?iw7oY+?b-WV<81??Y&0G zJ$aoU8Ug@;%U7nXl!x^|;=Yc@p}!wOA;`)iC?z4K@U5b-U_Ixz#z|y*hw?f1?XFp~`}D>*)(C`F2(4L}UqX3dC9VC9bPTo_Uy0n8b(1OQR};Ox`=VCJ zJ7;RgYii1lp{+q1jlnXK93(HYl-Ipac{lLF_)6ple-$I^-rbp0Rn2iFB6}T zMxl&EYRODymQAa-lah0RH+@YLe>5@s*^@zE`6#Ve7A<0Vw3rpSF+y$@OLA86KG95b zPt(|(V2ks&GVQ+}GrkZABk+}AZ9$o{Ew+od192LDrY==^URH(Uy&w-oIN zKksfB5{ByGdfWBe7yd=;f|J(94SPn%M(b_gkNg`)>s4a^*@puF0000uOV?{sfmJEOvVyH^4y)cgf5dHLYF5Q%^>gqd5u-21$*wBhAR zB_jOdZ{3_P+COI%7ca4wFNeH5CbKW$&keRmzkEP7aJ}9 zaO#ishFM)}q93lAD_8lgun@=h@vBBsFm)+G<{ddBM&m?a)V%4D2^D4aN<{dZw`@he zXmiP_nz?Yu)F}k97~g_M3Rlg+vSTP~7!t(6WN1G7DWyb&f2HOxEER3;FmLk2RCx#F z1d>}-q#UaUW#thX&D--WeXrm4u2&+$|9m)9wO6@A50tE27ZH6E6(o7nkVxCfFl8&n z>(SL0A4g;`kw6fc= zhZghZ#*fsC=bhU&oq2zne>e=_OEi9~H*sfNrYr5WwtlZ$f8yN*{^KXl-Z$AZSrFg= O0000Z&H5% literal 0 HcmV?d00001 diff --git a/www/img/icons/ruby_link.png b/www/img/icons/ruby_link.png new file mode 100755 index 0000000000000000000000000000000000000000..bf4be526fb1190cc7f778c5ec7894b0db5b367e1 GIT binary patch literal 767 zcmV5*`Q5eUCpo;>bf5H-)x*6q-8!ArQkJhH?Vnaw@-Q1A1t>wIFB5v4Vq+TQyi3r{( z3L=SKNGYNaH5GrBOp}2c&b=pHP3PWyJ7;%`?z-u~7apGH`+UyxoRbA0>tB@he*jYM zCkCoxD#9eV97J%~NV3IBE}Bgw!8MTcx;k>Ee@Nn0)#R5-6N$<18q)yUP(u~N^c1kL z0IaM4+uOj#280jq5g8gnbZ`(S0|Ve+y+*jZ8{uajoJz}LCq=~?2Ka=xZ-9vjU}OYX zUk8?#fzeS2E*HXPGxj+S(S`;b8IAa?R%5HH3)?n3i1<#J0rFE%9UoKAeE_`;dwWQq z*;xqH)!0`m@m-<752~HgQfzv?*x{N$@^2sTx#F7i8_<2P(S0X{b`LN<4jdc+OG`)@ z42aN1o^|Z^@@|EqHwp?ee&NF0l%1%rf0t}+1r`^9wKb&Z=%lD z`Th7toB5lCq3HEI(Or_)WBl$0doayhhGZCWg5 zIaXr;=FI@)(xX)#?RL1`?sUv@tj0Xdn*qql$+<*FEKn#E xyBx>GtX6BB>b$nLwvMWd#wRStYRtpDzXADfss$&H-+%xB002ovPDHLkV1ii!VgCRC literal 0 HcmV?d00001 diff --git a/www/img/icons/ruby_put.png b/www/img/icons/ruby_put.png new file mode 100755 index 0000000000000000000000000000000000000000..e026323c257e45d5d4c8fd0464a47340d1f6796e GIT binary patch literal 694 zcmV;n0!jUeP)31)X(c{M zhz)p)O~Px+7wZ@D#M-%R;V~M-s$MTv(oYF@s#+``Pg-ytJ*L|fkOYl{i~9pGGz4Q~ zV6(yGB;Lo5SZHm<(bB?Vb2HAmdh8Yp_G@J<9X#S%jEGFy5O_|*UFhk7jt-cZfYDLt z?8IAKj6ElZS)&n$!N9yu$BV>7-d0s%%P&Oi-e=zs2=SGep8BdQLB7V!44Y?g5U*Oz ztV+elgakfIOh-rarlNvrV-_N0@0>Gmw`Ow&GVeB-x8GY{2Ho8-HwRWLKCPAoNpwmP zXM8+Um6g2DFd`ItrW`w!${)6{mXj6W$;|9qFD-@PVHh9BC#{RvSX^;&%$v=8kYs0Y z*py?3V%JaCxT4hsxHV~go|4jU0&)hfs3=xyYB>M!4B7oUGP=^xwWsjQ9xR_o4)_wU zda!!sD!%r1)~c&<6qq>MtEFwSftJ^Gq&BM9vPesZW415uKV(}q72%d-nb)oFP}B74 z7IoHIv`wkR)I>&X*+dZ<5hU}D+_;(O*0-g2F81bf`=y22XJ!hzayd{Q?he1K9QbWj zPq!ueOUt&rdj>2cRhWmalU|=fSc&4DB0tdok2^0dkLemuqPdeyXi>2BuRfEsJfbWN cdh-3rG{ z$cl-P=->hx6#}NAmbP5myY~I>{qOhtLMa7Y{qE64eE#g}(xpY)TeQ8l?;Upi4EuP3 zj9qNwYy4OP^j-JLi)W5q`snr30AQZ_=_2*h-J^Uqwd^<9gC_@m_YruehOwSPa9@O%#PST ztn>RnbQXoQ3&2p_*N2(YI zkrMO}==(rnxsJAW59QQs0L07JZk*~;x_q%%{cN7dr3j%I4jC^oS!R20 zp-X8Kpw211iFbazd*AM1?Vu^zTr_Qvx?Y!ieJR$aQy;v2#^ddUoYEFRo!j>1ci(tn z{K@;T0)Sj-bCEg}zP!0%dBFa`LT=k_fI7GB{l`yczPWYR>anra$&%HTk?G3F@#Ue> zFdEg-dzaUZYPNRv<+lA7pzgcw+uL{UoxOeM-g%tFNu0n5OqYg(!P3&eWMyo1vh4Ri e9{q`*0R9JiiaRV3rbYDt00009Gp0rM-&EhljN^i}(|Pq=@5XF~~)>U!;+BT;WiZ;-?olqd>fK_MstEkar}b9uop zSG%(%K&q)D8CgaWKtPPtDOv9I8!SQz&9K@qF)=0vTF8Vz6y!_@T)cF~Uzb0()L$?a z`$c#8#_Jq>ql8oq?5#4M^3MAs_Mj^9a~&q%&y!>ZY?Ffij=buvY#%T_TY|PQcQN;bwCQWy*nR;m&;UD z`|<407yq%aQd%Bnb;^cyP&KV4wU)a7>4a6Dx$h-#bpLzK{Pr$B8!J;?KlH*=4~)Nd zXfFUrnL1@v!}G_xF3kSm{Oos*9r(bTXJ0f{jKZMUxbxsWQRhe^WR#$Jv5>jf6w4x#gTU%_MMNlkNp$oSbvBp&uHw9M;u0-4@=t5BI zP6Hx#-C_{5RMJ z0_P+Xkumexn8%)S+Y)#l(gR;YJP<6#1-=jjK0LONWPdJQIR8uK1HpvVIxBIQ2ztt+ zqoEx_X9S%QGMe=~(k#sebCL-an)%CR%a7YtUOQUgv+G>~?N~XSWhx=? z@$fx}0MB;$`JWcQ-Re{XV~5|{DvU(#*+NF*g)j^qk#b~G9_O!i*y&mZVZ=a3;Go(K z`DkskYn56Nhu+k@1Ke*uY|x zI&k6j$JfNe_a{GH%=n2rZOz$Z8R9V?Pe36hIk}jo+A-`;dt9vyvBu#Xm@veu&@v`| zzt%mwc_$nd0-sMVx2d)b0!MqGxmfCumx7yB#nIUWvA{!HOMfslMyW1iV&nY>zxwyj z8^JfLN|kT z4m^Q1mhO(_r4w@`V?H=YNkOf(i&bHT3Auc3bryK1_{hDSetLoLN{VLB^78ULiNFy^ zkUqqG$fjVkJj5tfWkOn|P5`HVEp5@-mGnc0wvJGHC=+39MC2TWT#i?t*~fNch*he_ zgtS^8dH$(KlW)EF1b4Fzv~?&0IQaNdg;W5&{t&Bmg9&N1-rBBr_;Rg8ekw^mn;@T# zlS{|Rq+-Nlg18i%UY;i|q1NnSwf>I@85#4U4002ovPDHLkV1mEDi4_0< literal 0 HcmV?d00001 diff --git a/www/img/icons/script_code_red.png b/www/img/icons/script_code_red.png new file mode 100755 index 0000000000000000000000000000000000000000..8fcf0f09ae3046a7bace82cdd583ebcb2bb58beb GIT binary patch literal 868 zcmV-q1DpJbP)r^f`W}XqzY0MJb1LFP|{o!^ss14Q0vK;LyO=G zl>{$>EqZ7VQmVn=L0C~*jNqY3H8#?%q3Q0roqd^|`M-KFiSY;D>*w+ z0Uz8~N>7H;5K4nIhJi8x&;^=+2HHRi_#F7wV{=BSiHAq?ldnB7%+B?NDTcxn+mRj< z61uVG&t{Kr{^%b7syl&^Lec@Cep}-^4xR%E4^qC%y(yQ3>*6Qik+BTBin;Qqm)75R zw*W0=p=2VIfv#`}By>6vK?FertpVKXX#ie7d!5Njjt7SP;cXxv1|$2wnnxX-rXOi4 zCubS@>|?^9Pd7I7BFjL40UX`or)zDNt_SNbfH*o`o?ZIlnVdI3Iv!zck$CuY8J#~x z)b7%c4Si|A!bT_N!^PE(7Gl~JM~)mcVf5GNuwOLw7WHHApn#=ARm6>eq|;~bu^Cde z?}?Oyv7mj85~6bc<;NCXGl=HnedB4fv;xOx>Ez2eF6cs;-(PqIez}UA80Vh3leki1 zEvPs~i&z7=CLFw&__`LE$}XG}Z(?sXaIqwVCY8B&QG4#jxmcq)!WE?ipr}qVB!Avj*}>Ogl)r>xpM?l2gvx)>cyy7Y%IL>tOalZ z7KZkUkERae#gJ$;z;SV#4Z;A{PMkvKieMq@xis1Xw20TYuIEiv&kg}^KR7u~uX={> zmIb-4=EqMikoGOU2g$_06|%5e4^cvFYy(<|r-0{vUS6X;@aV-BsV%W|5Xzvm!B|VV zSmdRrN4ePw(Lyx-1EhTP`6nOBym9#P|NVfrAhks(z{2T;b+SHmdm&oN)=psUW;5W- z;xeUthEgF-DVL&{OL0dwNh;}*@>~v0jga!7@pl(3<&AB?D0QxOd1b72d1W_n*JgKa uR!k>-Kb`g|yI#9! z6)lXSPy)q8C1lZ}g3^41=HNKqnYs7QJ?H%A@B2c|8SMY^(nC0W>$>q>gSs`STXowS zHf;~fxQ2v9EZ{R7D*@W3dHBBBHM?GWY!d+JSMBtmYNr=h)3&N+d6b;Lw&L5f{XIBX z0<=xDd8!-0r5i~n1ZAKo8S6whk3~g{It4qoP1rg;x#5%3mk&jNRM%6JB~8n674&Lu zjOeY>TV-L${7M3Ee16fcxk-1=bT*X$sjfGy?MD3({naGKphQs+3kpFIXc5wqAI~j1 zbFp{11V~l2d3vJI8#V@`EXJ&e#1s^fLRJ*Wg{w;=M~?r!g#9HzQ&rnHPj&QGvj#Fn z3Svg0kd--VGpUm_RWo<=l}E2ffK-jP&rXl&S6PS@A&7_wfRM?VW;BwjQGycozWv=q zS;X#GC#q5sWn>vi00A*lr(~r+Xs`q&G^1+MA;g07I7@NDx@V8^d@28HxbNq=; zzxe*f?K5pkhju@>PI%T6esG3%jS_iIPFg`oSQ?CLj-`b*R!!2d1>j$2D{N9N- z_dNmtQl?H>)o|vgtp>k-WAdw)jfVdjV0o#K3YUx7d-mS8etPnmh2`4C`M&w3RZD|f z-DE|Kx}BgKTK}9nDt3ap=<6+H=dQ$*8t;dl`wq|GAhu&8Hex;2V|u*X>5Pwe>`ABX pxbn5N{RLGS=ZoANdGc8E?*HisN=owtMsNTC002ovPDHLkV1hpQeRTi; literal 0 HcmV?d00001 diff --git a/www/img/icons/script_edit.png b/www/img/icons/script_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..b4d31ce282f378e5b94cd40680d283842229e491 GIT binary patch literal 880 zcmV-$1CRWPP)dH?P zU9(eZs5A|8t5v?eTRRMlZU=heApt;c-QWm;Ex@uN>_}2!i6teD1%o>y^d_S1XRa-N zEVlrobv$Z==R-vaN*dOiP;xh}(13rd27nL8<{3^$d8*UtvbO>4tszOR2{qRsrN9O( z3#0`W0!x4o2vg>#nIhNcON;jbrFs$(i&Dd*-VBg3z>*-1z>;7Qu%r9~e~*90+noc{ zCV%7=ogDig@RaK7i93|s01qGl%Lrt!v323f)kR;ImtNTS&iSm|tlwheV@t5403k8+mq?kbBz7Iez4s~7(WvsntW4bC^upoW zL+_1G1IUA;W1XH-C-(17v0M(ATQQWfmq_ZL>3(tqwR{#U6woa9k)QmX+`va6fx$W7fs9{PlZoQqK^zXeF6_0Y=) zo``&Le1wy)J;oj`vgg^i2{p0wZPdg%Emnhs7DUXV(uFJOraKqiM8$=I3#~g5 zsinLfkEQ%6M1VxHcYm;Ee*Cg{jbI-l!ye@3hJn(LR@I1UqL;$#0T|Nz5 zd2nc8vKx82ktgz=UhEq{3)lo4unp9JPk^rj?#9RQlPAi1CSN^MWOq8&=eySDxBKp( zji41e?rgTX`giA9U}iT^$|V&5%XLRWDFOv1fK)C8U62)K_Fq}nj!CBztsdT?o^1a z9Vz7!H2OjeSOM!4)`4pLLT2e5Y}mpJxP&9NcC>owiRkmrsu!X0<8YS#xZ)9Io~& z!>UepZx&_G$m{7Ncig zMh6C!ID{S;<3ME!Jurq!9wEpaBbhy#*}VB}NmVXfDF8FT2(S;>_wM+or;J2eyeRR4 ncn{*igLkoLaaMWfMP&XzP&{b)e?%0|00000NkvXXu0mjf(|U^f literal 0 HcmV?d00001 diff --git a/www/img/icons/script_gear.png b/www/img/icons/script_gear.png new file mode 100755 index 0000000000000000000000000000000000000000..56fcf84a8518f692988061347375c9f6ff8d0dae GIT binary patch literal 861 zcmV-j1ETziP)-~Z!n@9pW{oO5sFQkR#oNEERoq9}~OLlE7(C>^?38iHU~FCGf)7!g^i zr#b|KB0a>q#9E#VC2d>I$+ouU+sE5`|IdEEpe##p>ifB)xbn@_=$0}CvEq;yxiY$Ba;K;UP=U?3g05+4N(N2oSY9}8}Qr5e<+2svC{=In|=VE{& z%bNW?0hoJ|s|0~KAd2a&g!c4?qA*m6I5b-GRHHul#pL5pLx4O@`|B}T!Fm#Cr9A1< z>d@-2vc=Ly4lZ7Q=-61@^Fx(gF+iTCgWG#Tn_V_LxiAdGh$6y>NFWL*5aerqn_hMM zVe4@WkS9sAQH!*;GVN|D3`%4zyI{*%a_aem2=mJ zaOvo?dn~M#W*2kyDxFqK6h)fNrs3gXwJQC6lx1LjecjyLoayOlah@b^;KUzyXRL0; zHoB!WFBREABOCJu2N#TujhP((+Eh^5^Ym^jD=Y5Yx$`A1#Ce(?e*3i-Y9F6`2>|3J z*S?v;fQ5wxM-Cs<>2%D@%xE+k@LsJ}dq2+8bY@|><=V}=2Da4<^j8hkdo}941_p;* zy?WILAD%V!`=rIiMayN=ty`a$S(e?rapOiF96EVr21Po+|=RvfC` nv$VA2&+^D$IC=Zp*(vxR7Y$Nw@UeaB00000NkvXXu0mjf2&J7q literal 0 HcmV?d00001 diff --git a/www/img/icons/script_go.png b/www/img/icons/script_go.png new file mode 100755 index 0000000000000000000000000000000000000000..8e154e2313cb8c8e66baa5a2b22f20a9186a51b2 GIT binary patch literal 839 zcmV-N1GxN&P)z22yyMI`&M<>aiqax`m<9PjBq5ZbMGKcLk`}FvHr3V$f&yJ7L`0OE zD5_PFU=K#J5rqiU9y&S`lcwW%=XuXL|9?*3mo!ZSj(s_|2Pbz7_w8S+YHL-ks%z_^ z?qC`B5V42_e2VXLfI5V|PfiT%fBo4p0I*utLu+L{wAhW4WyNw4-MqKr+v}@`aXbg8 zLl__INxC)-4u+D!g5xjY3*8c5nkB_#-a)4M>BO7~Cs|BmwC`}VNvWzq%lgJWkByq`w8;dT_ zcII<{SeD~M{h7{suvRqEw2`HxF_EQY8d-)Wb7!e=>g?Z3IFx592OOQh-%CUC4Pnu9e!`IV? zHFZ$dK^cQBn;y1vVz1@ys{8A&=G{=VxxbP_EQ<|!yGNdqrHNQ4LR~ui*vn#5i*;0M z%y;HIF?qmBx$e^JPn}(Frz82n<7Y;3V$UO6-Ck z`Rh}6%iu^JtLo_&5AEuI>!p1F;OObXC%?R>tV`Wc+A;d5eLIf0cx%eJKYm^+r3U6{oTe5J$idmy?N@HcLyYCzv&ylY2Q6|YUcC@ zS0JxL_+skfwaKZA*S29ZHe(YuVW_XC)#~eO>5Nu>`140Y|GY7ihq12!{s-FVb;8HC R$Nc~R002ovPDHLkV1iD+kv;$b literal 0 HcmV?d00001 diff --git a/www/img/icons/script_key.png b/www/img/icons/script_key.png new file mode 100755 index 0000000000000000000000000000000000000000..49bb24d71daee6956a5a1e4417ef1a0cec4a407d GIT binary patch literal 853 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/script_save.png b/www/img/icons/script_save.png new file mode 100755 index 0000000000000000000000000000000000000000..36216d8276dd679934346c30ace3006e1d76bbd1 GIT binary patch literal 804 zcmV+<1Ka$GP)W!a4mwm4 z9lAtNv=ALSSd<+NDwVaw^{3sLb!X=Ld%vD1v~3H{e06ITmmVL?oETThxJs&&OzJem zHtwUrCLZ83e4hiPx_{6!^k(M?jGkMpCU#xpD+L1R^b^O%J&(6Mk`UL>+ z=KDX%bR-j>Tz%V8|BxWMH@@Yq=Prq6jEhpgV{ iMhatptY3F`RQVr(hfH%Uc-uk%00008!PM!jse+otDvXRhleu>w{(hr=P& zTV2;rBMofZo=3rrs;YWAJqHeofOC+HNSe*6&}=qN@aeaKWm$(L&gF8enM?+{FRwu9 zoD1NBqmclHW{%@Tw}6Wqg+f989t^&~Me(EkfChX#56VZfjYtFPF_lU|uh;XF8H4TO zj!YM$blUKV1mw(6M2qNP2;H{su`-!X|7n%u=>+~>3AvaIiltqd9#DvgJ&1=10t0D6 z$;|KlP3c1Y-2fh17umvCJQ4=!_2+B&{P5)SL<2$#ZY7EM2$|!%^Ti9`3q;4qtws{i zDI^jJKbdhUAOoMo-`t-B@esjXtJQ*jzYmI{z|3qKZ(vLsG2zn?;Y5OJwYqN@My1o~ zTxy!Ox4y9nOZhb^2wGcN&dWOz9qA2Pi2L&&MfZ)$Tym*VCU=T$Q;z6Ze zJ$g#19)u*6U}?pjN9Q`P1faW_&ZrhEh`zTzI_Q+4udtc{7?20{`>0tzC%6 z<4$0NFD@aX1`EXFfryb1uLICn5nxWaVpGCkj6kwT4ni1iOhPYO8V+7ZA`uje zMd-SYjtzD?ftn&>m3S@d6_=&B-;Cz zF*bAv13UKN-Iq6*nUCUQI(Jw5*Xv9h7Nm56LZ>KDJd8b9y7n953x!Z9A}LY;0000< KMNUMnLSTZ#4=Y0e literal 0 HcmV?d00001 diff --git a/www/img/icons/server_chart.png b/www/img/icons/server_chart.png new file mode 100755 index 0000000000000000000000000000000000000000..1128d3f338c0cecbb91fcd9ac0f6e5ea4598218c GIT binary patch literal 673 zcmV;S0$%-zP)7AT2vWj$BZsrIMeOXfs&qO}(Cv2bXmF`i zn$P8OI5_+UtuCd4RFa4k1d)YdIKBkB+$xvL=D=8hn7|*seIk&jacljqDPt^wuF-W} z_`aVg3xOMp%SK(DsOv`m(}89d1k#uEK(uwQ`+>4B>iWM+_wG-2kn~EK%bH+uY1OEY zT&M{>ut&^^18tc|#7X^j1Yi9``uhQ%%^X6#daT6L4gVa$DOmh%oF>}(w1O79jptw1 zfT=8SaeOJ^j z9Ox;eQmLfwvo0bDP8ISYeP{_k1*6;T>n$70^-rg?Ku7#^t7EmtFLkvlsX#yA^ z0&)=vupq!uG(a51$y=z`>)VvJ8;!<#uh)A?qg~QVB`&`J&rxpz8Yd(B(?r6h*;wB` z0t*?eNzZxZ$!BFL^PX_?_pZu1u)YqRuyb8F${wa literal 0 HcmV?d00001 diff --git a/www/img/icons/server_compressed.png b/www/img/icons/server_compressed.png new file mode 100755 index 0000000000000000000000000000000000000000..bf49fad9deb97c5a6afb67867fef7151d3f3c19c GIT binary patch literal 721 zcmV;?0xtcDP)LAt_C)p(Rjrvjl$x6>nZFiinqh3jPb8dl5tM>LG_BlnP$G3zi&; zV5o>pV425P#d+3b(m@taAL7K|XcFnkO%?|tvRZ-)sX@IRk%cvG!bAN#(4 z+w(kwDyXXEx~{BG^7;I&kp%U6Jw|{>@pwER4j+L-AOr!FHc~h_8ArLidXsj464Yw7 z%MzSOBxWL!2sWGFAiD>FKp+Al65vGUIL>Gbba^$MPOFV=_uvuuef=#F1jBV{;fk^` zl0bS4g+j0_tKXS(oR~kQx{LkpGU&f5kj$Jw@{$~glwPmBp~@+sF2EQXjVQvVhUJwd z@&qQ6Y45bA7Z-~yrJ$dcP(+eoK6?h5wT5Wu8H@;>3l7IlVr%yz`(eed(eR4SF5JDx!-HU+!&0(x(aLNwrdd+;0^ zFE^53V$-K*oo?Iz&}?N_mL7g&hhJl%P*@#6V7`^Hd1#_@^v<%i-4wq8=5C=k00000NkvXXu0mjf DekwlT literal 0 HcmV?d00001 diff --git a/www/img/icons/server_connect.png b/www/img/icons/server_connect.png new file mode 100755 index 0000000000000000000000000000000000000000..49b269145afbb97ddd03fcfa844ea832c947fdd5 GIT binary patch literal 755 zcmVwYT0AgCL27sE1k% zB#Vk*Q+6?;e9+Vt!L4!K*`1ktXYNe*UVlWT^w7ZN+<|kx?>px^H{km|{^wKwm9Vg| zaNl*^8;;|sJc37gD5WAk3LK@NP$bk5Y$CIXlI%=4cd(q9B*cVPIfT zN-yMdJTl47IAHqHm0t=ttI8)@h=c;2s@8%}%bVy(RAhosz?g^LzLS!DUxmLngP`ow zrfn8+J7Zx$33yPOy6}EAf^^3q=H^}@`{F5>9HNI({R$?_cfm&~2_!((r0s!M>3g`lJ{4?wIwATQp;6yHt2^& zKYuq+Eb5L^v&R{AmzYgUE~OhIXUe@VXP)2T#eMsaNyJ@y*%#F`%&V0x=ZR~P^R7jY l<)&}aKbCWipX^bu^(V1WxGAiK0S5p8002ovPDHLkV1nEbSAPHi literal 0 HcmV?d00001 diff --git a/www/img/icons/server_database.png b/www/img/icons/server_database.png new file mode 100755 index 0000000000000000000000000000000000000000..b24e826c70485ac1eca79266cc94b2e1ae0a1d90 GIT binary patch literal 666 zcmV;L0%iS)P)#!|MU57FB*-;`{iB zltEd-G)>MQ3WdU}jeu6Gb%zSx#^dpVu7@$FB3Kqg8!6n{isS6;^d+tS1T>q?r(B#! zB(@`w2rhs2z}+p&hGkm>vY`kzpU*dsK$}lfsgx|PuCB45;;*d>0$A&Ka`;Tf*a+Ym z1Azd>7o`0^ zD1W4UA_^R@YymM~XLnz^iwE`sMl_6kK96WLn(%l$m`3tlgU8W^|fpsnH5pPhXPm^s~h7O^zPdU%%v&b^m;uEheP!HeNbn)AFSBJ z=D4?!CCl+yPJVsw4MJL2IzGU?Fbo61kWM#H6OdXN>u%=Xt80A&C>DzcolfU@rBb;#Kd(U#Xvm}= zAeGuiI(eV%75S`kHk-lk_ahVv34q7fZokG-sdPy6V~Sn(F=ew^z>%07*qoM6N<$f?lLE AtN;K2 literal 0 HcmV?d00001 diff --git a/www/img/icons/server_delete.png b/www/img/icons/server_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..61e740fe18dc615016c3493811f305df96d678a7 GIT binary patch literal 668 zcmV;N0%QG&P)ZQIL=Mmwl(g-y|iYtDg0bIogV2(V47x-17<>@P+Hf!VQ~;Bh1ADY_Vk1>Kc5@s ze}58`N~Nm;9En7Z`Tc&Zu9YFOQ_4UY-hbj=vgo8wo7>bZ?mX^6EGP}5o4qgAd zf>y7X3>E~5{sEcYRlyGFL6@t*C6FW{GilXc39MrFM;3HnTt|X7nCvx95Y4`y#>dJg ztfe`ee?5c6OCFj}YU|v_+9e2S?u!(X>8@nT&ql-J&^L3?zb)dzt-H{Tgi?Q*KmN9` zaDU;lXQ!<|OhHxER^9tl$hWZk7^g1YfN$j)lt&}z{_q67@vzDiHtH&PUMLjK8is*D zAOPQypQzOua-5=e?fX~wjvBzVJA2(9k3ywNui{G2X0t6|kiq1HIx$HB zW_et?e1)g6CxGQBiXw8kTq&|)pgDYkM<-j+S+T2y6lPy^62aYq&DA(8O6C>^FtR~K zY!hn=v!0MX(AnV8*}uTWDx7b$!|CsWCwLOS(jg>=dLNe^lxjuzW(EkiwDRc8MWrzT zziSEZ+H+X@`URpzLuJ)LxN8EQvV&~^htSAO%-@~E2>A%S!FH&NeGn@w_$DP$RJ5!j z=g*b_WwB8z8Ur}>1X^l!cp9%k$vlHq)M0nmV_#u3n7UScz@`dA}==j2R8?9RoCPqd^kk99_k&dImN83s2usHn$CKPP0)nR#b2G3^$ z2t~&h{yYa9(B0jAW^Qh-qrbm@GLw9X=C&R^WM%8FgJjux z8z1%@)9>H8E5K?%8h(ZObQ+(;He^)?YjH9bi#7cdaN|O?+&qJbow|jiS2#4N{$R0WLTZ2{0maUAKP;ba*kDOsb7Wqlp%QS1KhU;N7@5by=0s zmq6AS3WZRs)!NF8;Y8}BQWt;JWwZBmAek9~JUvF7O!F1lQ?STdk6+P4mt#iL@Kj(?SViZ@x(dovnP-+Hn95Y`kB52 zT`>FGIGz1~vGoN;+ytw=L1JPK%=PZAJe>~iAdt=J+(_9tH9m4-G(O@;Y8GggQGD_Y z!)611)4NJ>t;d0!g0AbTZfQU4Rk1%7f?;igyH%=>gVmQYa{i9yyY9o{Dh&#KClkq zZ^`-W=(`>n#l}|$Yi}RC(E2^+50BD61>-}qA41;3ZisG1`*xOo17YZXX4HXKtN;K2 M07*qoM6N<$g3c2*g#Z8m literal 0 HcmV?d00001 diff --git a/www/img/icons/server_go.png b/www/img/icons/server_go.png new file mode 100755 index 0000000000000000000000000000000000000000..540c8e2689b19cd661d3f07ec6d5c69a48ee79b7 GIT binary patch literal 706 zcmV;z0zLhSP)7<1w@I`*?5OI84*T|9oBhH}d)X zV_ny$7-LpT(?ounOeSx1Bq$b(0RlV<27^hr+Y6OI;2f4ea@pG(#Qc2bI;{>8 z6bgmQ0vry9qduPxrLScOb?OXyK&ctFdYopOnzzF=IxIzTH9TSNw zRv8@$M2+3u-KbWpO=ZKt@W_~@Zno4#v;XQqFdGCChs31_>&3!5%7&#b{zWFQc68tn zplmj4#^Z6+YBf55z<5&3{|y;v7;9uv%2$5X>rHda_}~n%R!c9`2Bty_PB{afo|wH(i1~} z&mbZJ35Q%B^!cO6Z!BTy%i>mD!&!%IJ)KTZ(mdRYL?UO7ODFJPbqWeO)2I~TMhXw( zyp+KE^<^xqJ^!icxKx=jKRWim##AbmAfj1{QTs88yd0gw>A`WlSX(G-+yZ}U&%wWZ o(p|@%!Cl@4H>AxOvt;l80V><8&-M2O*#H0l07*qoM6N<$f@GaWM*si- literal 0 HcmV?d00001 diff --git a/www/img/icons/server_key.png b/www/img/icons/server_key.png new file mode 100755 index 0000000000000000000000000000000000000000..ecd517425f0cf0a573f091656a0c69e294b6197f GIT binary patch literal 746 zcmVR5;6} zlS@n!Q51&%dDs?eX$!L{YO$aaAT^% z8wrtxVNvT!(-=&NwM9+Zn#dzTR2m+|($3p^r?x7Vm6P0@nLFqI&VSCGVRT)`|6Kge zjaV!eR1{@UmSvtqkZ3GPl4zXp`~BxC0uqUYod_N{91g$PTn&+kplLAt5tmM<1L1J! zEP47D5Rb=CQn4Ti`>a+g<`U7ws?&F_ zfzvp|MzQqNH!H3#j~%}BVf-%##aZb_G6l4GJB;cj7tG=`j&}>Nw_Z7xnHjztyK`i@ z<3{><*+B_lKuBdOqW7yc^Z1f_jE;l*VQ=n3ZZU*Cw&q%gTbv4AZ5(1tfU;QqJva(_ zn7WS!r2xBk0P6N9ScH1;)qty~y}GH@J!&|h!zq1{)G}>Brx3Dtt?nj-%`oKk1+ZKO z44Z?gCIb|<@nc2g$}P}S;5e?>w@Rn3!6Yu>fc6sRS^`$SgVipF07*qoM6N<$f~LGuF8}}l literal 0 HcmV?d00001 diff --git a/www/img/icons/server_lightning.png b/www/img/icons/server_lightning.png new file mode 100755 index 0000000000000000000000000000000000000000..b0f4e46cdfab24395e96c434d7e4f81f666f93e8 GIT binary patch literal 729 zcmV;~0w(>5P)WDY2I?wA+J)g@swh z*tq9;Az~0KxUTE-L+yVFGMP*>3GNw&aV-*w!yyrbfO<`uM8d%Q{PVvFikbca$;C7w zD0sNBg*UbZv_J@}9F7}CA$k)Y3U9HIWm#<@P#1rB)IBUb)@c`W zV~ft{yH{`1uq+F@t|JpA}c-%zc%xMO9#00000 LNkvXXu0mjfaz;V& literal 0 HcmV?d00001 diff --git a/www/img/icons/server_link.png b/www/img/icons/server_link.png new file mode 100755 index 0000000000000000000000000000000000000000..e8821dfd88a4a178df1581e12832925c401a78c5 GIT binary patch literal 706 zcmV;z0zLhSP)?mgenukSf$Ow%;{&(Qz*V`F0@b#ij@ zxZm&VX$7rf9v>g``Z^Q}JsL?+C={#&cxkiQLb7}jJpw^hA^ed`yWNI#dL>L>e-q^M z`Fjj@I2>0@CKGnPR>A73szKFMBGRA`S+Ca{9f68h+-|q{(d{0gPvFmm91*Ce^UmFA z5o06)XEYcLXt&z~WkrF1>Y7m3eyMY_&vn4e3W2zY4~4B4@}Fo`ggWoJX72yn!Jt=~ zC}x7Gz;&TMbfKNo1KrTUkU)^IvNFituckW41Kdc8hGB^|5P zDhq;WG2$IrNz43AeK;CB`x^az|5dNo zn+^tpmuW~wqY?Fb9i>u9WcPSHn3$O0UhR>XE|bZ8|Bb-s^GTFBK#I#m;3Sa5N8M~T opRypm6;{4LkrnDigB(5h2_j2`gUi>R_y7O^07*qoM6N<$f)SrU?*IS* literal 0 HcmV?d00001 diff --git a/www/img/icons/server_uncompressed.png b/www/img/icons/server_uncompressed.png new file mode 100755 index 0000000000000000000000000000000000000000..86e8325b9cf7938320d26317b1a59ddc23cd6892 GIT binary patch literal 669 zcmV;O0%HA%P)o zmTnjo#N%;{$781#wOUO^qtRcCC%e)iaFWe6kO?$RK-YEn{eE>9SivT7xryr@aC7Y2 z$c~ladYiP^Pq3RR&C`<0Ux?tE>+nwIoYzoN(EPEW%eEu*a|dK@V-c z5D36?QKuUy998{(pX_K5LZ~&x3q&AivzY>DnM@|$Y&IVki^Y@U<9E>A0yl45$Ngjq zpX#4+cGkw}={MBtb^M^=^?Kiu3X_y63F7=~%;)ndI($L%zDLhi_oR#=SOyS-!hh=FNvz5*&gc}4bkUS$- zpueTJs?jS>W4VH5cvDBnk}bYn&!Q$gHPEkM{Aeg6CFgw8)S-s+lpfn7J^^Wlx#}xw U_BgG30kodM)78&qol`;+07=(QkN^Mx literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_align_bottom.png b/www/img/icons/shape_align_bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..55d2694008bf2e0f60ce19ee9a2bbd8a786a2b81 GIT binary patch literal 398 zcmV;90df9`P)DFExf{Zw)P^3DA)+Tx7p16zeV2eBJN`sG!O!r z%r{>qq_fRm#^J65xA(7`3Wk)qxjOIm1^`@~9w8eEp5GTgVh8&GR>?|J)7!6b_t4vb z5)9aIeRjRw+BgJn%>h#W0y-C@uGM%f6pBvD)Skg0XTAk-QuyBUn< zN;P$?E+2m3@;x^jxVzMBC#}&PhY07*qoM6N<$g6GqtMgRZ+ literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_align_center.png b/www/img/icons/shape_align_center.png new file mode 100755 index 0000000000000000000000000000000000000000..efe9a98e5fa3c6ad11072c7d5383c10d7e4bd988 GIT binary patch literal 384 zcmV-`0e}99P)Z6yAF1om>|ST ztKHFR-u%C_TS&rR#$xWUuInG^#ZbZh<7OKK0Sbr!oPg)`=K8c40#>`ki?apTCliRg zlEUj-Ocaa&0ziHzlBp`G6i@TVfL<<@Bqx|guvvfy(7bc&my!0N1m(V4lyq=bRi(Le zNvR9#hi1|)cfp-7Ct3?wOSDEz&|1=(k-c%ksD` e{M&ClW_$rjx>)p&(flj`0000i08P^j52wc?^pz~| z{+5E5H{Y(Hu4@1Skd}#3sVYT@{hJmRi$#&$%TyG}1r}?t9|7htd)Lsfy!ajkDt-Z6 zU91o2&s&(!=K$Q?&o&L4`Lx!Vx>#S23&w$uyhfU-d$K`9~Nd8w!zv$M9@Z1$jp29TFj3j_=8Fw z3{%YI%$@t@b+*~1_I?xG+&ypHkT%yBC*7X`0H;U$*kGH-*D~zj_WsiblwiPy%d>+H zKsFLsCaZ=4DL6hHA;5x{_a@9VN{~#-l-L5WA>DQvR=Nn0X;LB+>N1A`ku;k2zxK4npfSnM_=ZsUd2J2vMpSkH_8s%x1H0<)AI26!ZDKD6N!6J>@l|AVmlDp4k6{s%-F`BPf$oC&{AN@ zdiEsm`7?=OX84O0rxL5G3YAyiA3W{4u_Yt`k_-{ROY9Tg-K@O0-jDvtW z{2*|9y*9tOg^9q!_Q>;57`(LL1f6BD4#7DRBzU~PGId=~JGk7O1tj^fbWx*#*Ac{h z0ba=a=eWF?0CQRvsw;s58J%Ft^?dlC`7PvXK46MN^%$di5+|bh4y+|Oy!L_^s_LB1 v#`bl7E&d^!7k=P_NG200000NkvXXu0mjf?~}0h literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_align_top.png b/www/img/icons/shape_align_top.png new file mode 100755 index 0000000000000000000000000000000000000000..1181b43fb258e3e524f8b297c4d301bc51e1fafb GIT binary patch literal 406 zcmV;H0crk;P)iXZHXLga@5kw1` zhA#fE*Hzt}ZT=Fw0JGW5r4;(UXSrOmSS&VH-}kG0DTVob-T`#~LI7}cx3B>v7_i~u zbicd4eO^~Eq|DX%akpWRf}?{S1X%F$u9fcOa1Yr?@c6piPGCd2?K0H0ekE3#NN+c& z3DVjib38X$K{A;l%7lRi0_i(Jt)iw-nkrGE{!GvejIudIh+13qOivS3wMNQr1j7|R z!z+qRQ^v%`6jG$Rbq_omBvC~U6cJMdhNrhAhlz~uD@szMRj)D;69kuM2i>-pR>H(k zU20R=YA_WM*~Hm;Bk6Yr_0!xxd~68E`15D_0t@>jBdvxMApigX07*qoM6N<$g1oz_ AhyVZp literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_flip_horizontal.png b/www/img/icons/shape_flip_horizontal.png new file mode 100755 index 0000000000000000000000000000000000000000..8667c81f8b2ae38922a801bf8ad50ae8cfa7e7fb GIT binary patch literal 403 zcmV;E0c`$>P)+Q9Q4|H>Gx;$-G!ZQV78ZfoO&~77*3Nn$jc&kZKoCTmAc8K!LP4<=!NN2tOlc{Z zN$xqL$HGYbLH113OaYT)W33X5N`C}SuCsO{M4d)0!W1Bd zPzF|)%AK8~r}nqN@l_U#p4Mv-asy1$8wsx&u~-Jolx`n9hA#o5C(U{(u9g9#gDRe2 z!e}g*5zR(5HY)i99A1uEM(-{!M3@w(Q`3nM*_asR0^}go-P*tZD6~=(l~M=~!wKks x1gKbXqcC{MAPSU2?m_Ytz$O4h|MV~XCU1V{%3*(8NnQXpYiVPVoA5~c|!VPFV?AVO1l*q#wuVDF}{5Y`EMTa_P#5+JM* z7NrLtc5{G@^7nWG`CDHlY@FTuu<8=_lZ5psk-QoqP`Hx{VV$sN)+C(P0F{PBnQyZy zv3A)TEIq7N~!NGFz151St77tx49JDc?6PU}s zU^eqSJON>auuj<9wLVdFzOaAY#g6%o^o5I=?bdiJ&{?IkkvMg+S?VBl{)W}#Hm1{! za5rFVjj=`i=oRt2z*MRp{)mjN&{-$!O(tv6TOh1XtXGZyt1-&_0(6x6mpf9k1poj5 M07*qoM6N<$f}NJIe*gdg literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_group.png b/www/img/icons/shape_group.png new file mode 100755 index 0000000000000000000000000000000000000000..bb2ff516d35dc9a92ed6ffdc79595d61513e65e3 GIT binary patch literal 553 zcmV+^0@nSBP)+TVU5_x7IrE&y4G<6LW)%R0m7z{{Dic2rZN9Q$X1&!1i?xJlHEd! zMb<)AaLd@37v7sQ$Kt*h-|9m$FwES`%*UCz+-Nu)o=e)5bUGLe9$*XW_xtbCG~Fk8 zS^==z>2yHy9=5bNj`w@L9^yE@UnO}mnM@vCy?#47TC5}hP9TpCzy*-N^X9b(0M_gE z+tFzB%*@_Lk^lflio(4eCs(C^W#d$;S65tM)myfdnARS}?B&nAG1Y9f~bPvTYI2|OiyFW_ORR02sPxSI|DVlF2 z(;aRKd!WOt1W+_H!3vT$JIHb~{vVJggjsddXjHaLhZC0-bi3U}k|cX1kEhe=697of zarXTeQU_=bBVa~2!_$6z^8&YCf03D;q1|q4Hk+y0Y)TTg@kXPe@p!CSt){5eY8@v@ r@|fhwd_LdX<~P>s_0MMZkmR@D2_>Rn5)Y(r00000NkvXXu0mjf$qDH! literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_handles.png b/www/img/icons/shape_handles.png new file mode 100755 index 0000000000000000000000000000000000000000..ce27fe3a0345e03e919b54ca3b6a8498743b2ee9 GIT binary patch literal 538 zcmV+#0_FXQP)Tm(Vb6n04%0-0d~Z?N5N>2x}bMx$D(zp$faLbcIm6))=iDcNsK{XO_NUIz9_#=Hl90fplE_S$iRDekpz|Us6%gcl z10>7>u(;bXN$%}9L;!i)H44lO83AA=upo5q1c5U!FDx|env1*bl?cq~cLH;UH^p~Rgca1Ok;(*H5ZUXcXOPFe6C@8ghq04j{~AV5iYe^SBjqm*l4!TaGj6|yQS zl0>W3O7lFgJbe6&SDlNa#1ExQ;_~7(-;>XH?~^Rc>h}P$EUWbUeQtj&SzNDKTyL1C zYZj|t%+odV)rMrXCP_Cezg;mNk8#e`cJr5LHk)4>jfPdL)hmSs`qPQy_Y4;U;qFB literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_move_back.png b/www/img/icons/shape_move_back.png new file mode 100755 index 0000000000000000000000000000000000000000..a216ffd36c85ef8502b8d3e5255994d19c1b4837 GIT binary patch literal 395 zcmV;60d)R}P)v z+whYUbTtD=;_3AxvLR>j@_3VuCP*of(#dy15?2>z*unc(K3-w5STtU}9or^nBL$nP zxpFy~Ob*vRzkSE`)Q^SnzOP?8cAX z*{yXuWVu|%K5qiHBIoijdLMx`0Gq8@eE#4JzB}(FuvGu=x~*2L7>~yXKwBe&!GPIp pM$x6Pz5*+|0DT4aFQAXWegS3uME2I#<|+UH002ovPDHLkV1fcsq%;5k literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_move_backwards.png b/www/img/icons/shape_move_backwards.png new file mode 100755 index 0000000000000000000000000000000000000000..ee3f9b27ac50d9fb560d7f136c2fd1453150ced1 GIT binary patch literal 358 zcmV-s0h#`ZP)@HXh(hEF306Q6`_2r7V>{$iQE;V^UUSdf-&-W% zFVXPFSOUDheNAO3Ap!*~BL^v1P$gcT9~Tz@fQS1#lHfobY>>=6C zi9qrIaOiv80Eju^%ymq*LRD@6%9O6VT0sWebQSjdeQaZ!^?JQn0#tc+J9C}h2K8dK zdLjwi?RKu9YJgmG9ow-(2_(@p4Yp@M*9&QR)zvye66AS^l4d|(=KbTFI`%&d)zki! z5Ssww<&G7Qj|*2z{Lom8f6?>>PIkVv)K%QjRejY(R}`*(6?jp z+G0hH3!I310<6fv$?bSN`g*+{AesWUTCLdc_mtNN%K=-W6PTYtZaH8HvZa6i6&L{P dpY=4B#2-g@ai@NbQ3?P6002ovPDHLkV1iK7x%~hD literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_rotate_anticlockwise.png b/www/img/icons/shape_rotate_anticlockwise.png new file mode 100755 index 0000000000000000000000000000000000000000..07a30206c2d913e9de72e7befe0ff34b975a5c6f GIT binary patch literal 657 zcmV;C0&e|@P)rBSW%1yym%3h>P=CJq=%jqJXyqou@YzvD3*eP)k}mbY7q~i z;GrTBD_SU06%3(@S_Ny;^o!gT-@Q5A7Ab}S?LJP1C4Qi#inM2z{qs&8>j3owfJ*pv4@YF`X*Nd zoPBZf^2Q4Pg&j3PkhTPa8BqA~9rA@d43Bk^1zzLD(JL6%Cs6^Vii=lQt}>0Fzr#L1)~3>`~-s=Ycgt!=LtG$^Cf#hW&f@ZE-58uB`z^`Jq1m z(fhf8v{eiNr8U#A8ZkNcsx5s5ONOVt&(3isK%k_Mhruzis7O~P+0iqmPT%^XoO#b6 zOQHe`WByjjgGg64w64+}E+hEwe^(H;6?}e>W|z8COkcK<&fLwQaWd|~nPJHi0Fz;- zkLbQC(k`U>c<-eZS`y$G=c_6Ua&CjgY$$qwe#}9tJp{JalHgjMJh|C#CU5l328sX; z&pT%vb`+SHj5{p=05G9&4Z!Up;H@Oij^VL_IC!nsxQcn#H7qxd13foA`)fy(J>Q)U rY-kFh_WZag1nU^vj$tRrYOnK8uN+@bVu@BX00000NkvXXu0mjfmTxVW literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_rotate_clockwise.png b/www/img/icons/shape_rotate_clockwise.png new file mode 100755 index 0000000000000000000000000000000000000000..b99db7d7017d397c88d3f365d4151c2a2f1cf396 GIT binary patch literal 673 zcmV;S0$%-zP)-MvO4zAah)y8AdgNT;8aNt0Z#``ZBWS5ruW_!~&_5y@A&Mem(ZTgN^o`}~SszU$^ z7RHvh1xFm@)^ph0*nGGCHC}q|R4n_)A1L3n9&>Brm1ReutcF$^i>p}}-y)rv!{S1A zVD9e6YXDL=pXA)%0TJb?rt->iD68*Gzt-&OgQ02V4o<0CmgJKqX#oHth8qSBmxWt82N#=*8fj=+HCx7f zRfTi=WOc-~l=q1x#t%h^h5>6i)zSai1%ODQad<{ISdvuCby_M8I4B7NffW$v^VTwa z!ysl<#Y!62w*3Tvp2*`_<64r0B}rDtLT-7f149B603-l$UI7t7nGgz!h&XxaPUca> zlFVC@M$5qJHo=m>QhqYAV5c9J7%STfOuTb1F0-VZ{jT#**V$+0nYH{Q00000NkvXX Hu0mjfq@H!pQI5+Ti_L0YJ|=5)wx zkF=1qGlSNkDr^3|$ws8mau%VAs!N}G7ur`j3{a)&lwiJCaRceu$939gbwXgD!G7W+ z`tnW&{YVf#zprcNBv=w4wLNbW#_u=%`)~XMSM_D9ZJ#Vp00000NkvXXu0mjfl(La4 literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_square_add.png b/www/img/icons/shape_square_add.png new file mode 100755 index 0000000000000000000000000000000000000000..31edfce597565363903c26264756f3c81ec47a9b GIT binary patch literal 539 zcmV+$0_6RPP) zY*Mj<2s&tEg;ElO(UR|;EE2 zmXINo=@2a3IhPCp07@s1V2lL@EF*&lAQF82)gDa{Hg;|h*v8J&*;~c&MS43 zq~ic-3K8n{ABI4)^_J$J_x#;!&}#2->rws5>!%xweLw^e6Zxy>MrU8S(^#cAS)+38 zI#Z{ndAGSj?bFsmxmr3==qE4{Mkz!%`;`!Bn5~@^u3VfY3c>8z3XyauU!DWF-v@*V znN-fTh{%%cwzfH(9OL$-2LL?0`GO0lX8?)=Zy-K@Z}&P&!eIpL{%){YUuUDf#(d=^ zOKEE2mXIOT z>O*kn@_5z<062PJ1Y;~PU>OFh(i2W?ykPpuRrXGu zX8S{(Pp=p6E}q@9Rq8r05k?6j+`3AL6lUMMN1Qx!kkz9_x58Sax;000000NkvXXu0mjf^cC)W literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_square_edit.png b/www/img/icons/shape_square_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..d28dc6b1a4420e67d2ad201e77fa6ffdff47b0f0 GIT binary patch literal 660 zcmV;F0&D$=P)-HHgciWXH=58>$m+)aUP_=fNurq~c9Jfr+{g4OA6VysNJCVr!>1 zyO(ukr-@eVVQOd_eeEr`d;&*7#Zd36d)>ub=%lXvJGs$=On&Pn97vP9zKEPnrBRKfD#EKdHd|_ZeufOm#a)m@NAF&m3;5bVE$Q(zLZS1JKPk-x02D-XgTe_RX z#5m7GmzbE!!E}bj^$Yyl#_Q*HW-gz-5F#kVUOZxW=<7_hAg}KDjh>#B%CwB&uQ)_iwz;@6pmo1X^%*Tz443SFZSDVxCn0000%A_P)#@-A##Iv1?0U0EvQG&ENA(xNS^k7Z^%HE|M4B}V92E{q3W6e{k)ec8 z;2o4;WI_>0-Os((YH*HbdS-6e>@`^r&%5C**ybRog9Dz3o3;H0(ZZPh3fB%jAn_JaCWIV75Lro?O_~d_!D*f|Tp6e0*C-kV z?*}L-D{Vv4e9~_iEKhKBV4Q*Qj-I$i$ODAHzoJZtqFWmbg;x}hm55tU8M-vhNLWB> z=Kx~N%IW-$qTG7H;Mh%QEVKA%j-FDTzWNfw$x5CMzKw$_Lx%n3aYJO)wwz~idx_3>Z)??@^wP9b!U%(SY5BN zy8egc`%5Y#=Q&dRfx}NIBrMHW0ii~f{+89x%o+fGChT%8I(hy(~5wOC)KNbJH(T^wDQj z6eh>aF;li@IYJTxb2IaN*tt&{lQ9Mn%+#O1(s+QB5)=tBa;k8a`Pr*9lQy3_ce(j& zZ))Z7-_`(NhS@}R>kt*Vv+xjeVKRhMYix0G?mDf|;ZyZ(T&)ioIHtj~B{3mdwn-W?A1_W9{4O zPKYe#dY|dhi;9~DH(x(?k0bVL9Kv zQoJ?!=IiU9LENsDeFNaYfYOs(+jL~IBP;zb`)2R_KV%7xht?ds^8f$<07*qoM6N<$ Ef_nG=SpWb4 literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_square_key.png b/www/img/icons/shape_square_key.png new file mode 100755 index 0000000000000000000000000000000000000000..c34b982a07774e25177206a5910f20507747cf63 GIT binary patch literal 607 zcmV-l0-*hgP)aH&8>vW#0l<-cT^NQb7+`9sfwh^a!rV%AD}k6{<_Z+d3^PaL zj8qL(L;P)85D5`6L)8^-YV9=fMYkH5XqafAs+i&m)KMwv@-q(Y`bjJp1nzfkAy7~; zMAXr=w2G1}O>#QD%8AS!GRMB~b+muDgFpjCT#qf1P$xHXoJ&p9GjJL2M~*~q3QMhJ za}SQ+Z5jjth-kC_c9TBx^q#tkRP*fKpQI*B93C3%4!qKM%RmH?xSP7W-NIFtgFgJy z0?}BJNYtY%QG{BRjpcf*jld9b#cuiuzrdN;1lmY+-oB+ zH-qr@WPOVM;2i^(hOowaBC^iR+ZyIoF@=S>%FU6N^Vv26rLb6agM*6)KXLL(hDLFm zc)W+1k3O%Lu2bA|9s^!HKbsBr?;gy*XK`})bA4shyuvk`etcp5$*uIrc6sst{jy*4 t#SfM8)Y0m1@6YV)>ciVlzfWwJ_ZRVAlCjH(sapU5002ovPDHLkV1kNh85aNm literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_square_link.png b/www/img/icons/shape_square_link.png new file mode 100755 index 0000000000000000000000000000000000000000..b885fcc60638e4643d7da2613fd79090aae536d9 GIT binary patch literal 642 zcmV-|0)737P)VHAd+Ld!L2q^VM98w(n1h)wF~45O2p7^VJ*E>2zbFL1)dQ4LX7H*KPh4wz^h zOo>C|P#S_Q?WOh#F>;Z@{myadEwm{cXL^V8K6&4h?+d6ZN0}jxIKi%X^1JcDFsi8f1_4z?)lcJtL=+Ll z>>X0Um`+4g5%G;(E&Y%^BZB}n(pgjx5mfLEvTy7HJ?{{JCm==S^Y}gB;H{F&jVwG-FBPJ>Jp*t72@M3SzY_ZvD7TX)+lb}9j8yl*!ky> z&#yi#l}gVJ0LHMl3(Mc$lO9)Y+`EJ8x}05G@Y&^`V~e(L2TQmShOBjtJPSb z`;;HNT+zVhcLKkQ_Y#Fd;ZIKjW#i`$ z&c(w3oVj?5<LHjPH3 c<+|?G|E;ujN0TKn=Kufz07*qoM6N<$g8H^2*Z=?k literal 0 HcmV?d00001 diff --git a/www/img/icons/shape_ungroup.png b/www/img/icons/shape_ungroup.png new file mode 100755 index 0000000000000000000000000000000000000000..3a6f369a5048b92bb2f625afecd70f29b32e2233 GIT binary patch literal 666 zcmV;L0%iS)P)4!9)$b<|9tNU+CsbaPrm=%-T&Tq-}~;JVp$fPW~sF0aycD| zJcw2*l?qHIrPJw`rfFUgLbUSveBc-XE>9#9fqK2}f3{*+f&-8)iUMP|+l5#x29-+1 zf1(1;d9zllU2@DV!Q!k<7FoCnWT6h{&Ru{~sRWF%*OLUw$b+Zv4C}1RCJV$7$a^H) z-4}4{>a2320$QWQH_waE`LzS;j2kXry9@Ri*Wio`nHLU+SJ00jVztp|glr=M*)Jxx z_jHIxqwxFZ4y$v9D0AR)a@B&ERc^k`Fu>UNgpz&%tPgLLt51?|a;f8r-<|NEVV3@`Ixv zk00KIFB@-Z_*$qqV4EBaeCWw$v*^bs__%Gr2mK$yfQ_$zp|xee=k*4Z%VnBM|8Rh; zG5CDGRj=18G)-$vo)J`4eW54{$$mxm%4vV+{~xG}o%M|tZ2$lO07*qoM6N<$f@ZNP Aj{pDw literal 0 HcmV?d00001 diff --git a/www/img/icons/shield.png b/www/img/icons/shield.png new file mode 100755 index 0000000000000000000000000000000000000000..3cb4e257893adf230db7220c06fb9371360312e7 GIT binary patch literal 702 zcmV;v0zv(WP)CSS=grr57X34Zl(zd#$wMb&<%>`t-B(tkBb(psfna0f6_}Do~^xke$ZPQvRr946H zWWosxshhe2GGhTlX^H4l2T{)>lHM28PjBPv)052H^wfm_GUcM~_VUEV$3cdCKWX1R z!rT&^3rTv;k{#1R&D<>@Px1a?%-hNzH)w3T)o)siWm4p$YE@#8C&=cg43(z=rJn}gKmtpUPjP_< zhQXyc#h?f*t`d2Vd9yzWR3(s7PzH#A7!f0%A|E3em_y#OBXS^bn8gJ3v%wOOhaiEV zN+Bg6K!%U|v5J*O8kij|KR-n{eladP2^TtCnBu~OphnPUSs(4yA3V7-gl0O@~?V*x@CTl&E<2=tI5q@L#DQla@S41 zJh{xk+x)uL-5)Og@e9A})romiTU+;hxI5}I{Y{<6W=--* k<)9^%y{&t@hew?Fzp3k#2;Op=9! zVS%RGgcvtB?=hrnT(^1LdEEQ||L^Y{iyPBKvvKOIPJPa&)A<@z<$uZ3-6v zc~$Gk^h9y;%5Y0+$*))mIb#7qgC5d9!ldIb@VnnpFu9T5$YrK&jTjd|MT^t1mgM-l zi=cwqeuBO>+~TDe5+v>*=`WxH zDB^YD#jY{*;V7u!b$6g5&jH-u$57F%uJu6zFoLAQn4AE$>1<~_P>T~PCNq?*1bT)6 zRzMZRM{R&{ERX^dVAKOmgLqjZYY{8*w}EC2R0Gf)APsmZ9%=*BdZ-GBL9K*F0<0k7 z;S|ik4n)A@g5!gewRjZEqxJiE`ktM{PYJ1^!X4M4$r(0~Gs!nsaL3hQLK85q!MFj& z^?C5w(w-@!VR-|4w(O;LaWzcjP~E<&Q-1(e8=fB+?7UC%eKWb`8*vK8;N%7vcaYn! zlPsKDi*+oum8-EPpl(4uz}^wBtX9efI_@#hai37>HjFzH;|vn-OAs<+SwC+-00&oH zV8)~xfcz1FsheLVGO1*BZ?u`-$W^RA1x2fB&I!kl=p3xE?XyZ9830Hn>o()jVx z+;X+D-*LwrDVp8Lxw|)dqa{Tp^)<_wRk4Towq)Bpeg literal 0 HcmV?d00001 diff --git a/www/img/icons/shield_delete.png b/www/img/icons/shield_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..22823a70d9d595c91898132ae06b38d956cd75b8 GIT binary patch literal 768 zcmV+b1ONPqP)_wWDzWofpWZjRwL)Vd8iHwR;&_<&#(aXJ|2rC=4&(@vrY3M%S$@!-jW z=* ztyLco*Wo15n0#0=A?aRByJb2o>G^@3N0CJP%2&wrwamVeY0834$+YqI(Vv}@#Oext*GL@6XYIDnd zAA<~q7WqGC@#Xt*&Xd)?q_FV-8}>d63ap%a4-57fJrO-yE8n*)Uk4fa%1QE-Q&{pR z$N*vK66xX>v@g5`GSbyc$m}P2Jbf|&hC&9GgEOo%g^P0(5)=~DO+kUEP^Q~%?f@E| zJ_Q2_EJGp3MFHr5%W+CU30MjU3jqse^mzJY0vQS!QVxoN1V|An3ONcXl7TrCtU!;a zPr)!tiAsA2Yct?BK$Jn$0hd!dSEGJ*p7v4&H|UYV*vK(n_w>o^{pN3HVEj6TFYk3Y$#xl^Q_CE7r%8FT(3 z3r-UM^~Wc7-lAYHMt;+qH;q)78y|02t5m*iYd7}MJgs_{E6Z`n6TR&u@qf;Lxclai ybx&BVbsWd>_wU(r)Ga$pr#Q!2ut=L3{<%oAf+b{E;+-G}C0%qCSQkM=7lG`eZo2X^ z4eBCEy@)7AgN%7FT@r(le`@L`$DC`&?HtdZ=lA@6-%sb_Tu6{Ny)Onwlls1`t zw)FcKN4tlPVEJu=d0u<&4Wf)_5kpiLXL-K=B^rL2w`R^wXUCEiDQ$fRCf=R>X2((2 z(M5UlL9%d~DC5@O*C{Lzte}VmOL?8`PrgE>k|5 z#7u>;Yon7s@IrM&xs$}d{c+;i4T|Ww|s z5qVmiB>u~lC#5QQ<|d}62BjvZR2H60wE-$x;pyTSqH#X?$9aZk9xk4=gcS_} z%w2~hdwA07|NZ~@|FQilArsd8f6XF{Qw<&ke0ci5`VUv#|NpJ=2j%aCIn+%2WcF59 z%>CW#*}oUPcm3UcP5krW-G`*(r!XhJ>z-n_f{E?eO??G7rnQMK8>51>n=~5O_yZ)GQ;#)>*f=EeOp`n$p2lMq5y8c< Y)sUsE^zP|RKsPgZy85}Sb4q9e02 zk}*reKp2Lbf0AEO7ypA}amXNqYyp>Y;Fci-g4`}4WOLWH+9@cGQs}0F*iEjOG*W}4 zm%wK(ZQw2m_=MnyjyI)bdn5JojW9_ApWwoHWG)HAlBv>up3c{Bd7V)Nj z@iR8U_45rBpRWSDU5?-*Tkw3&gP5hEC2ui07*qoM6N<$f(bUU AHUIzs literal 0 HcmV?d00001 diff --git a/www/img/icons/sound.png b/www/img/icons/sound.png new file mode 100755 index 0000000000000000000000000000000000000000..6056d234a9818d248987389d4a621e5c83ce0851 GIT binary patch literal 610 zcmV-o0-gPdP)FDRfPcVFW5d%9V=z{?A#;oriL5xO+n6O2X~nf!lQuE^VWXpgu83qI(qCF{ zS}dqc=wWy-JjhR6YYDxINHb)T^nMSh)vA20R`F7)lzCSCZF94My}d73T>N+m zpyXWPL`#FF;s+j3t(LL2R!6+EP98p9G9EaJe<5S)o@#CPu0JyV*YBbiNC<>y{C`3_2 zFc^fUC0P=`0GC2D0rmxry!i<{eh#|t2UjSV*w|QyY37m5W)KQZKoA6m%^;bK|K7sb zq~^Y!1U(%y>Cs5W^^bz?JUQeR7IK)M&$43OYdMwDJVcVBtSjl_Ar8Hmr2)a$eK-tv zNC4d)(7D`Piq~gVUR7m2k$BH5O6=$i%I6Kpa_sVNy!&j)9UKPT@*VWNNNm+UIUciF wPJ00!a`S;oH}3WS@hUTDnx*^y9@F3E2OYGed{u8eJ^%m!07*qoM6N<$f+a~A3jhEB literal 0 HcmV?d00001 diff --git a/www/img/icons/sound_add.png b/www/img/icons/sound_add.png new file mode 100755 index 0000000000000000000000000000000000000000..965c503c6088f5ca20ae624ae9f9bb8f05490640 GIT binary patch literal 684 zcmV;d0#p5oP){@e)R=6tn`E0`O&UochFZ7FhGdgX0zI@b zfwou(BBezH*PQIpi)fL8z0AQtp}BZyynUTrZBg2SA`X0cGmm+n_nl#e0l@r=nEwVS z77H#}mcINopj0Xj&|*nZiK$9T94|fX&Uf=yW>Jbseo%3z8&JU=68c{18C+IKL-EK<@goWW*KkIou$FceWXN zR;;c*gQ6&qWf}Q=9;sA{&gT$|i6&ro%)LY0f_2wLyAC_e9ASq+u3Etu7u9GiKoA6Y zyE;cmU`TyT?i+$k6Byz~!4D7Y4!Pa#<`cE+CuDAd!f}ZXbiiVxce( zLZQIn5o-DIjdXP!!OAG^KN}ku5B~vbQ06k30fR6Ek~oG3E?;|b;X&0ux5We z`<%net$Dof>d@Xy!l_+?|K8aSlbnjOk;yO{4)bg<=w}7Nw_|`ZnG|^5X97IRt^WGQ zD%L;MjWyJc0Id_k^~kCIkw-$i4)6h=OtpUi7|C71tF5Q_b!>c?HvlI;Q3{%%>KgMK z(KG#$?uVkAKq#+$Cp$P!bmN>uJ&&@^o1KkltZ82T<6lQN7pT4(wtvQgk^c_UnVcJ% Sc~{E-0000 zv4KjGLD@@SwqBY+AwKj_2x)Ps2A1Yat)lSTxi^%;0wX%`a$6Fye?p-;}9Oz@3_H4Is>e~!^?WT9P4(UVR_y$uYg2R z0LM90z};reLY114GXmmv;A$P-B^yEOFE%_9+Ev5395PjP4WPtcoxO#h*GhbsI?f-T zC;7Pu|AZ>;$? tsn=ZC^sk$??2gfnFO}FzBE_uKzXNI$nkY}mb87$q002ovPDHLkV1k=gKso>b literal 0 HcmV?d00001 diff --git a/www/img/icons/sound_low.png b/www/img/icons/sound_low.png new file mode 100755 index 0000000000000000000000000000000000000000..4d918633fb7c50bb382f91385540919583695bff GIT binary patch literal 524 zcmV+n0`vWeP)}W-Vhw;NT#RL?T9uLxYyXVPSxHJZ{>R$9RZyOF=SYo-}k2-w!jPV1Nk(IL7DO zV|bqJ_Mv1_1jn)OuW@=|^wWn#R~_NJtU~kr5%BG&OrdR>hyVLb-^~lVI0N<*QWk}{)T2Jp~1;rnJ&N2haulNhlC*Od9Gf>KFEtyV>~T1KT( zMys`lcDs%9Y!**GpCvG7uAr)U^!sP%^?K-byD$s`r=o}<$KlrRw*+%D1$0-K<~|ff zfh@~77KHKSyI>I8i8yRaw2IR8ItU>!0|7iT3@*K1Y{mtMqF^t`<+5lr>Nw*0@#HI( zfyeDeD71=LjJFr0(_1)Hq)$07*qoM6N<$f*zgBZU6uP literal 0 HcmV?d00001 diff --git a/www/img/icons/sound_none.png b/www/img/icons/sound_none.png new file mode 100755 index 0000000000000000000000000000000000000000..b497ebd54abd420d6ad527e45cf61be55170e944 GIT binary patch literal 417 zcmV;S0bc%zP)=wlnx)<^8N0A$6XFU?l;N(8Q}Zq)nMgnHnL@z8KSBRn@Z&a%{xn|-d2Q4 zMH9;98$s8LZzsrcY-m~$XFnviYhEiADa-Lkz!&I><>UW8(|7X;y57kb#}^N300000 LNkvXXu0mjfTqdux literal 0 HcmV?d00001 diff --git a/www/img/icons/spellcheck.png b/www/img/icons/spellcheck.png new file mode 100755 index 0000000000000000000000000000000000000000..ebc632d9bc411a06cc269dcdd21b87574cd71693 GIT binary patch literal 603 zcmV-h0;K(kP)G^19JQHhNlNj`@k%q%HHzg==U|9D%gW$B$$pnzkJW0RZ8O~_ z**^l>7H?3b1=gURtg>1uTESC4M-RmX46)~p85(ciV2C_Fjlp$--AR~)afRMYkbh08 z4X%OwtCOX5QXyPUQYlKIT_aI_mrA_ym5}Ph590lI|1dY-e8b>)T!Q$}jyx;DP=E8f z`?4qhxtni(VX!@_j1r9uwKo$O%5S=2)f{@(N4)p$pTHGQ{xjEJf5%{XSQ;Z8FqGcZ zl3e`w2SfGs#SE#JIl*G#XPFqH&rY_S_vnAX(kK5JO0Pd>Fg+-NGa&&rR{O4h{-3$~ z_A`dyvpx*PS5LYx0%~3Y)SQ3$5raOeW=sQO&$9r%az1SBi~p8$9{kVP_~L)S!pHv^ zGB4j_(A+OUR8nT}JgFeudizi1j#vNv=0E(;kb3?$gX&%hlJWx3pG8j7?*C^R2Ufr z!A*#a0RRTzHbHkRR_DJLALEjfHcAx^ZJQaCv5 zRc_myg{0)59F#Je9Q@Sdc_JdxD$jSCy;J>({^8#4&gN1?BqC>vi&blI&zxtTs9dsc zu%=p8h(t~oGu`{%_~x_M=G}7FO*KQ^6cU-L?s)5;FWRnnq^sq!Yj#K_sg>h{m%dss ztL?jU7BrnUqbY-wDLXg3@JHK6bJ}M8FzuvqO>3o-(cT^ReKO~PIrDg@q3)QP5$R=p z|DjpW{q)MbU;cV*%A}e-wn;xl|F)~zp8DXo_a1Ag8+Xu78>FA5y-TiWxuE5oriK$H z)a)~Awe+&6v)^?M)21~{she=rnC(UkOD8Eam~qB&b#;@*)r{F`la(?^8A-Lyq+<>_ z;)nzG+G?X!hNO~6igec)RoZ2%EjC$eu_5WEkcgy6mBA7#thU^+AsM7fArcXhlB;K`2YX_07*qoM6N<$f^}HuKL7v# literal 0 HcmV?d00001 diff --git a/www/img/icons/sport_basketball.png b/www/img/icons/sport_basketball.png new file mode 100755 index 0000000000000000000000000000000000000000..f7a000b9ae4beb7e2f7a532418518dffb32dad73 GIT binary patch literal 977 zcmV;?11|iDP)hK4BUhe$KN9UVKPOxMNOv5-kgi^#pr|CgFd+|MrUGt z(8O1>C5urLHi^@yWCP5`g3ciz`jb5EQ)*Y6Fs<>YtYdi|Z$7iUj3J%5by<|2kMLF%Vl==ZZUK6wy_(+9Q< z#T14bqdL@$b8EdeIz8+6c$_2ho3Dm{@b&e$Ge3_}-Rz{0jFFqou>0@<9I}9N8OgM; z%o28~L@}#V+0e<-wM$(X#VN%q&IP>T<7}wsNzJa1pI2!+-p&1+vlMe>gj2y4bfY+( zc-#sVjvVFcW|Uxuba`lGP)X0m2=Cn{{K7LVUKplqfx{If^3>yCmJl{*$t0Fxl1*xC z=Sn!%C#m&RqbFAnDEjy$`qOa~+rr^@5@-!_>+4_XIyQiez!oyT+Ino$!0U4%Oaoj2 zvRUYlROO}6D+6fD8Rjovg{n%zE$uY*>|x^j3Di^`A=%gnY$1URSSFII2BVN6k+s$o z)0Fgz)&_S~x*a{WL?M%+F5H027hw9gd4!PJ-xtAO1(IbVTpontVdLH^g(BC)U*CN4 zQD$@H{ZL>xmBuug^(1YNgg^)^MIomax%2xPm=+aoiH7dO%#4il-IdWx(V}!xr0!g= zx-sxz|Gg35!xKFNeoH;% zRI>;DPCQAsGd&r#7FHA4(HHytKb{^=?hyV3XQ-8jhtkdh00000NkvXXu0mjfe#+H3 literal 0 HcmV?d00001 diff --git a/www/img/icons/sport_football.png b/www/img/icons/sport_football.png new file mode 100755 index 0000000000000000000000000000000000000000..199f0f7f1c105db4d1da7923635ca4d1665b0618 GIT binary patch literal 875 zcmV-x1C;!UP)@uM zZrZKLQ08ITY#wSOr^)1q^3X-^zFU_|=8x~6ukZWw`Fy`03IMg#Q84MtI+(OwT`YR^ zV3Vj?^HwNTaMD`&0lplTt79Z>+eQn6urr&!LYc$xS7tL>WK7y@7dr>N0yf5al^FXV zLsw}Y7`B^#-7zO#%jvgKj-OtjYmA}ET{4Eq58sgU) ze_Mc+%rp;W7QIu=E5MLM0By4nQ^TL2uFOYUdL$YX0#O%x3Vk)D&@_v{KW#TNk2~o1 zJUcQ{Rek(IO!O`w32A=(Pd%2UB(9XD zCY7s8^6xpB2zkG~K0LdDM|18c{->}XW@ZJ)H4y#zi6N+Ou(xMXVl;FhpMV*0e*bg5@jLI;QHC){F;>`R6}I=gLXzN-t$s1{H|6% zFkP}V>jwBIwl2afcT19fK!@kT))+NX;>*FcvdkFBbFQH!B@C~lJjt{J3?{SOHlifR z2~YeTK=5R!nb8GGC14LJ9^Hl{IRxUHMzJvYpRtQ{X-ldG#PEas+&AjIl(d#PxV(4ao^#JV?>+&chcHA(W9zrcuzIeZN_*SKBfUBi{Yn_Ku88)CIy(5o z14=m5T;5${pO7EA36uz_sNoww%td4ohv#73M1nBfuf4Ii#Zb`Xkx?c^#Wj|EB;1+9 zTAO`3)Mn^#lUbsMOIsNead(bTs~hdEii`#-c%_#Z93Byp8u;Rfb|2RBC;KZL62xLk z1l1Nr<$n(?o+_Scw@RxHl?15^Rr)FwKC;G~!x?W|M;u9M&TQbFkgoE9M-rMS(BuHC5Cr@S`IdWv({{8!lckbMoyLt2GqP1(+3W4PDYCe1Rtni5wCoUg8 zd^mp3o;@i$cI*h>v}sfPnl)<{EnT|w&iwiF)o^M)bLI@s@#Du|A3Ju;1!zdulP6Dl zA3b`s_36{6u^TpQ2%I~2?u_Zvrx#$=eERfhCZNWNhYlU813JGKsA<;Y$B#EXfBw7@ zXvl6LI}2#LSAT#1CaeY=J$h6QsQJLUb?Yi`-MUo-)UX?9NE^rnK$rA9eE4u1&|41e z?d>P98n9;Tey{XN2VSpQwJPYrg9mF~zI>SrvKfe{1NobPhSUNBx4faDVFy+N7O&eG z?9;UO$FgP1N`Z=DHn#&cgPh-S_wLT8m6ersSPhu8Xp6aX)sCNw7caKiyLT@r z@TT9te}D6{XU__OnzwJ;woSXDqT*IjQIQl@1EN|sE8CT9`8{XOob$ktc3-`Eb3|G@tVF^4Eohg|=AJL2lbZDeI!mXYyuU{BM`P`n65=@@E$5OP&}eExPHN zKIK+vY3a;@f&veidKArFy%Sm*+j@RD6s~$7-+SV}bKc^tr1HtNDW%s+?`qkyWy}Bf z@8AF5xN+nEth|yFnVFfKgz^d4fY#Pl$?op%{~tbl_zz5?|I@PzPo$-#5v3XKf}G;o z6~NH`pOTSxA|)k-Xw4{Lkert3o0yo$PKss_1^|BXzSrUmnOy(?002ovPDHLkV1jkM BXjuRN literal 0 HcmV?d00001 diff --git a/www/img/icons/sport_shuttlecock.png b/www/img/icons/sport_shuttlecock.png new file mode 100755 index 0000000000000000000000000000000000000000..917287fa0ba063e436798e7e1015745ca53bd612 GIT binary patch literal 683 zcmV;c0#yBpP)`0Ff_) z6e&KX(`h$k5oZ~J5u9y)zyE$Bk+^QPTGuQV%Y(lJAkE{v8jHo$!C9#h+Aw-No*ght z^l`{um25Vfi-I5ww8;=op`M_|ag-U@4_cbSRV2wryWPHJv)M$}FCj1rIcqYRM%n`O z`Wh7 zK2s_adXd;QTrA;c|W~1W4#eyUX=D7{S)QhURZu{wV*E*$t7xfmZ+P$ zmmY}TY|LJ*Do=`RwN9cf(bdybHtXB|IE<|AeS z=Ja%Q-prWI^L^G71JLJ zE8`y7X+TRKbJ}7QEf&P-lZHVDtk4w%9mAH2<2r{UzpN1_~X;&AtPx+O1GL)H&d;Z}BMq6_~4ugAk%x{bD~00000NkvXX Hu0mjfw(0T$ literal 0 HcmV?d00001 diff --git a/www/img/icons/sport_tennis.png b/www/img/icons/sport_tennis.png new file mode 100755 index 0000000000000000000000000000000000000000..e88a6efa1d04cdeb47a10bdfad46da5562c2653d GIT binary patch literal 884 zcmV-)1B?8LP)HdtBYdE!qbq|qw^eo+5Go%YI zri}HfQL{4YHLp zUYR_SM+pD;A5hEG#uyVikJyhc>OuUH*p2Haf+~YXw0D(yP z#Q*(9(Elu|vyH(=ODdkx5mLt9X6SV0s#(EJlNopd*b6`zY)?PWbNk=W%i`{rgTK z{0us}i=QdsNYlJNPjhXKpx95be1d}7@A^tuKZDZ-mxQS1ZLZ8z!(N+N zm!bN`MYp~Sa9^t*iP5CRm{p9Zgh~=Y60sr^mW*cp^&j2BPXGUM-@5B#(`4ZQ0000< KMNUMnLSTXp`kIXZ literal 0 HcmV?d00001 diff --git a/www/img/icons/star.png b/www/img/icons/star.png new file mode 100755 index 0000000000000000000000000000000000000000..b88c8578956ceec4ff17f81995b8652f6aa2b58d GIT binary patch literal 670 zcmV;P0%84$P)rx?szq&Dw38OK zY!^{rCAFy_2z8TV&4=Ube7+y|oYO*02OOyb5BD7I^ZdAQt`ZS+tMaFrb6^=AxbXHx zH;=|4CCm%L{PZwSS3v3G^sH+#W3JcR_xs(&`Tqt8^J9}d0vU#im5^f#04JL4qMaI^seoYDXwB>7;oyw=|M z1!ayym?6XvqV3ae_f95{py8ukt2TxB^!VIzRRh4#rNu~y^X+P>L{SXo3_|Qqm>9wY zz(9!5s#OBElpmj4DRyjO`0`RiEIkUg%7D)8y}}Ye3}prow;JG>UQOIs{kfZSJ9bYz zskMPbH9)1H6FDf)1=ZKVfe+;jf`a(O{!9meiN~~d0iA$0qX=t0D6Ydx4#RO76h@#R z9_k7Z;$fv6G>QeZ{Yu0n&xL4%!?l}UPj4!j&Vs@?dl=y8#_IQ`5I-5a_T$dJtJ_~5 z4&186>klZh{hfba4fr z6PwPau1z;L*OuFz&bh6rTf>}7rgwL{vsvHnW-Tgd2hPI}&i8YE=X?(f0PF88s3%G) zL~ga9&rja%@sULWLY>0xDcP!aOR+%eUoyJFnDMM*${oSj3a;9@k z?EJir4=x&dXBg%M8gg?G8D(;HQb1#`kDT^wiYFX2G`0|w(-g*MDHJwZ$)td~ZXZd^ zM=)UzLmd}~FicPwWyZ*_Ba#CO>rHB6>1>>#BxM)&QmCCWKWd?Nyxg z+&=)>6*{48at&4w&G;UI(G>&G80eS6s%?jEY7r{)3Wf}R$n|zStvwYwpMBs&0#Mpy zcZ}PEP+CZgSt-0{y6YWb^gq3VF|!w|!LPVeS&djM1|sMl)ZiNDpeh023*EHA5rTNw z2NmPHj~8At$fubW(Ar5}A-e;lANk z;&I0_l(AD4zwJ0C&ELV*x0W^AF~SJPZ4|Ri5*=L%H1XLGNhEkaL_j<+iFQ#NsyJzZ zGnr}Ze-3FkcX%m-Z}8^bAObm+L^Sn+F1qJ*Yw+yxJi4~{=tg~Udf;N#UODH;zN}dN Y4=LaLNh@8G#sB~S07*qoM6N<$g8f@x2mk;8 literal 0 HcmV?d00001 diff --git a/www/img/icons/status_busy.png b/www/img/icons/status_busy.png new file mode 100755 index 0000000000000000000000000000000000000000..987c806fff759fafe2a221a8d1eba225a3ace560 GIT binary patch literal 751 zcmVMm^(vTr!>t+|;*hPrMu0kRLK}h1qZtx06|w?a-}3^qoWvxT zfGus7FwBUs(l#`$Om={_&1eeI{;ME6L5Jm!CgE9<;a*I@LCbfxzsBOR;|S94iWW$Y%n_pb3sBMQ?EUhPdzat|DF7MMoo}#Odu|*-#@{3>z*~tL(y81=;uZeUhC0MNvg+l|!JR7U)*Ljd(7Z>ZlA!;mAE z28_{LFwY3!^764(ehIPL)rb}qrN!4(BV2Y~0sQ#0j&hSGU+3y+>f$g$jds6Chbh3? zZN%c~0<6-Wm9mxO@RhWApCP33pF=vU8{R0>yQ4LanH|+bX7AiR=brjTXM8d@|Cf*C hq>WTt)Lfzb{|&yn-Q8GmUSt3O002ovPDHLkV1fp!UoZdw literal 0 HcmV?d00001 diff --git a/www/img/icons/status_offline.png b/www/img/icons/status_offline.png new file mode 100755 index 0000000000000000000000000000000000000000..a88261a65e7cfdd6cc724b95f322857ab4011768 GIT binary patch literal 422 zcmV;X0a^ZuP)guf5051u^hG_WwKQb8ui+Q;x{7X%|^Y&0xPbV_6>a>1n71xJ#O zjD~@M$`ct9q?!Bbg0q&vEh;stNEApDC(Ba13yy!P+##c*P~w4W;$&Iufv}pTfQ-Tm zdG5I(MU0u=gm-*pFN%bYN|{H}gzU+=6QbVu-m7iQpne!TDVN%1_maZRwgWInz^rj-iiE`ej`WTM zRSR$kWHTx*hyeBSk=JUKdG_TQVeX5bE0{JyvV@u~P^D5s5>{3jW?s+db|lDTKTqGC zTB;fqj*8`$gA$E!<6(|fX0z`b`=!k>_Dp1l`;Nt~oamI2oIL+B0$>zlG-M*cEj-Gu z7G6GhbxY_MuX=WHbTpG5=t*22KG~LR)dDD60x7<}i*mIYa*$(UU#um+T$+%4V{Zh% z{cOt!EfID6%<))iH%0cxpsm%7NgxhbM6#gQ5TbN040g35dFYa72VLzg{mo$?eiv;5 z3j$KPDe(1gAtZcVGSS|uAQ+1u@epX5(kV+mX2~2LJ#7 literal 0 HcmV?d00001 diff --git a/www/img/icons/stop.png b/www/img/icons/stop.png new file mode 100755 index 0000000000000000000000000000000000000000..0cfd585963d255190b8855a7689e8da1c4d7cf6b GIT binary patch literal 700 zcmV;t0z>_YP)*?Fk0YVb%?UEFajs1S?+YtYiPrjx0+ z+4YbyJXwz!SX#yqTlhtNQ%Ku9=RNm$j)&+(}lZ!UGGp|@|O z09YA#-dR#rIaGe;MBLe!ht*}!c?U}6YT!dfHDO%~>xtx&Klk-^WB==sC_vP4ddg4L z#GN10u$+QGf$!(i3&8VpF6O6+ef~&gQ#>AVqCJH_utvKMAuOeG%3%mn<<%9)yb~#4 zHc70e5sYyQ03$?zFUko7D1Bg1=6jXvg#bUm1b(pVKuC*}koEKGdj<=zdM#RWsl+kfRf;OU^G_BQh+Fc$z&F_AHuQYu(b)aq=H_Fx idDl8IBmWBc*Z2i=4uSP&;Q8VJ0000p%S8Yz4}?d^ZEOv#Sc!)mtIgHXaEQ+_ullV zJO1Y8v8UhuAAS7ozvIlitK{;}YszGvVI*jPQs)gu{RuZGF1qsJqxF>Ai*mOY zeUVJ^Xn04=g+vNN2-6q_7DHe6!8fa@! z^ZEB_2Vebf-umoI@{HTtK!PIfdyIp7Zk$|p=*|D=N%#IIE_w1_EaGe}ST5wWclgx% z|Fx4ZY{8likTKA?G12oM|4&}@o+);3yYs=L?ao)At-(S*$63Le zJ&q^>ZEbL?y!O>L=h9<7rvvdA2Do?L{p8zs_rGt?o&P=^cm5ltT|5S~l@laqmU8i; rSIv!oK>XjU`o@3v@@qdCD9z3Q7_5=EFk?|V00000NkvXXu0mjffa;^e literal 0 HcmV?d00001 diff --git a/www/img/icons/style_add.png b/www/img/icons/style_add.png new file mode 100755 index 0000000000000000000000000000000000000000..e0369c6be9d36e994b0de011069494460d96a837 GIT binary patch literal 844 zcmV-S1GD^zP)e0@+Julu(JNEkTghQ`>*6)1&K56lT)AFSk6p+=zFou9~?@f=o z<8N*rd;0DF(Z}EZJI=hjN-qDrrcCA;MuG+?b>3jqpKx>HqAMRhT2HyXD0l0#iaLPj_0@CCfwX2oqfq#v-#E>^WJ+0O*-%H zHfg=H+pP80LCw-@%MhBYE~}R8d~tQ=>345r($1Jk$Dh=ha`5$Q|0%Z*NM~MfR<5`? z*=OG4&)FMa{LftT;=fMmjdkL&7s}uU7`0rTx%v91Kl4t$`!M0as~0m4zJ7b)=BNL$ zv+kY|^Ex1>-*9Vvz`RHQoOC>ZM%CJXsdg~+{gcAqR#h%!vGjSdf96p zUz&8_)hmghBZe>+iF)o;PnvP(V#cg{58Ni-fA2Qo-b=Bl^VUFHgCb`>{I8mLVHwzf zj-AiHPdoVPfAiL7Uy^6s-UbpBao=Mc+;ijPvO{nFM^C!rXeXPW->+%GCcCp6&YIzdP%Hc)#v{<8+;QI1SLuzO*J`-lP9w z!6%zz+g-kIygcFm#%q)QgFw%o)c^f^(*K)hOZ~vm2n-}+(aVjYFP!CqB_qTX zOJ&0en^&%FY~D`yo5wuXrqeuThwbe*!4lN!gNF~E?|Yv2;o&s_0FxcK)F4Mv>u0z* zJhiT>SNoIRsri=6U06{-CYN%OHJ$srT8APibiLY-K*7FMO` zu!-u4!CmVjT89blRPxkIDKC*hn?y-keBB&eC_)C&se#e8D!|7|Y1Eu$<>Pfv>N49K>6fy0A2YR8!Poer$)vwrolN$#@;q4<}Pej2{e%3 zI=@b?o@g_YM+14D#L_V#yK@oZ%9M~)Hw)Nk$>Z&}>!Pcq%1JmymbL7=2fKmBjgNb+ z0y1kBXpaiveUuCEe9fUL91qlp8>1G%-IfQ7F?q0R5`%pM_H zlBZRaI3ut~u@Y3I*su)iBl3JP27{y#cAw>392ogM27x8WYUncrLQ548Qmg=v)c#(M zKW28lmJEQ3zM`w6LouCZ2JeDx41XWS7nLH=8uZMsJl-Y~+6d*|L+TPovcw00000NkvXXu0mjf$UutB literal 0 HcmV?d00001 diff --git a/www/img/icons/style_edit.png b/www/img/icons/style_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..25bb5b677f89b1071fa44f29a006ed0be8fca098 GIT binary patch literal 927 zcmV;Q17Q4#P)4 za;GYM@Zfsyfm)fD&Ry41qf>=r$+ULd=aUgoB$PD=lkdf_7Ilg?zyQOl7->rK6-vac z;TV_Zv*2yTAsc({lxwkakt#&M=^sjC#7^AUP&&Nl19N&`|TDi=7JD}Yd0Ws1C z>4Cn`%K-NAO-Gb$R zVwgTXc$E4*bT1D$0aYNf*Tq)K^tV$NSHqh(`FgCPo#PoB*clz&@Zz?t*3^<<*(b1GSS=liGL+!XKb`BrUt80E|` zL^nZdavGLlE*g6AK5q89fuGJSBa^o|%9F?I)(M}uC9Y*LTOPY~cz<|nclXlE}xo*2>>r;3Jd?&=tr_!Iww zFvhUfzU@K1>#kb5wJi!Jl*ja3{?P6ZuOx9B{{rz!RGKb8<;DO2002ovPDHLkV1j*g BxhDVs literal 0 HcmV?d00001 diff --git a/www/img/icons/style_go.png b/www/img/icons/style_go.png new file mode 100755 index 0000000000000000000000000000000000000000..25d6181ac9f814963f515c363bf7dcfe6bcb0a27 GIT binary patch literal 862 zcmV-k1EKthP)2r7#xK|RPpjbh>wel673Rj41+4mDY(S62jvPf{cq_v-ek|xTnHW zcy>yBKofFot(G%sIo1G#B%vscr`XiR&NXTSkpSLxhuVKlq0b8fvyOFFICMGFVJx`o z9Z!=OMxATr&E12nLGp!$En9SU4yb-$Bs%I$=UqQ0;@>DHH#uj+XO1BG@b#0f`j*b% zo8Hdvx0MG(WnybQmvf0{fLEm&_Y`L7>wJFk>(D^NoodoN<0$9?4~r423@C43b=vt~ z0*?2*oN`Y*E_*Q9wyl*&`1ywsVT_}Uv9QE^%|MQl-1Pkg6v=u96VUQZ`urNt9<+Do zr|^ZdQLNirlXi73nNsU1DX+HO*_mf5iiqH}tyY^vB#3s)dZ?;8(n=J8hK1z0zs%x8 zT1>1K$0a0CnB(M-F6V97!xY3?q4QI zJM^)H5?WbPBLbE&q$N9)VtHORIqL_r!3rM(UC=%3$HBg~Gs|XB+dLZ9sKLl-cY%l` zKqR4blOUOve74k81AYGY&^6=(7kL5%b7;jOE~VfKJH5%V!}5B_^8pbkn`lx_`d?dE oimQ>CmWj#|C$c)&MDd^eZ)gE}if+w3_5c6?07*qoM6N<$f-cC6E&u=k literal 0 HcmV?d00001 diff --git a/www/img/icons/sum.png b/www/img/icons/sum.png new file mode 100755 index 0000000000000000000000000000000000000000..fd7b32e43bc8128181c1aeacc2c1b0af9dac484b GIT binary patch literal 289 zcmV++0p9+JP)dEcNn4H`bJ0C+qr9t=q z3IB5(AiS{sSlm!hKmUK){R9C#j!Zc}`+sBs9tE)p5$}U$;ZzVK5OzQCHlA<@UGIO! zvj@U9`H!I>IKl6{$7vAD0_aTr_h<@&41C_Zzj3U$sWlFzu{fRl=l_3uX4QtyMkj+0 zY#SOnetv##&Ac*9!Aw2qzO90ukB`rtBTS+*)~sK@Qd3Wl>6w91lc$EXqw|d(p7rtj zL#=9mJql4^&ui$IAYgxZvAe!x-T!~wAEkwbV}v;l|IpFV;kk6_P=alNz5|0Yv$3)9 z;rsjlKkS;w>nL%6C&hSi8{-+bv^22=Ol%^&FHDS$JJJrBFsN`$`tyH2>+-h(-T}M` zbIkMa)w8ljvf0|^RyP)a!RbZ^nygOjY zvaEgmwz2N_`+TjfUI2su5O03fI=3GN zO-DxyfY)uofj}vRZ5#J+ElHI?A*K4L!FxreG+Of^;j>jrB82=(AcRCIi81=y>WNH@ z%WRC|bAfWDj8}GRun?h8$n^AdF*G#bidPlPiBA#-q@JRT_(tjU^l_TnC4PNQQ?cK< zK{}l!ozDLFW@ou==4Pg`rH#LBisPFd#s??Z*^7WN=GQg5GHfE(Tc#HK$)FiqXft*F z#C#!FO5Mi@99aMa4lQnTNq|ya1TW@gEuM_gfac(8lLn!QCe8qYqTX>HUu+Km^FSj| e1UBOv_sg$~0hzRbE)Q}50000VjOibLw0u`97udk^oE-nJ*FfxKk zC>udT*o+LXU%yp4efr{5AO~)Mh>#FJ!=pzp8Gir%3-KEh6I>Gr!}u&LEDX}p!eBjc zFF*hz12Z!-!{5LE;fj$BK^VXcWHY0N0nA2bW)`3V1{4kGG&3`ZX2LW8BnXoH|DOe` z?Z1w%Vfc1rIm54K4;WsHN-*$Bn*;SGGBD1YH}AiKf-Hlco;E!25CI0^zuC2r;rrQ* z4662l4D5>94Bs#9Vz_o>FT;IqU5EjM;!J!~6@z1HDFf%-0}KpLk1#Os3oyK4k!Lu4 z>^cJjC@&Dgdz@JQ{X4tvKQee9-48WwCz=RY_ZJ~6X0ynn~YaOWu_Fv1z8F%p}dk4DHUL_z|9*cLd@B00000NkvXXu0mjfcQ48A literal 0 HcmV?d00001 diff --git a/www/img/icons/tab_edit.png b/www/img/icons/tab_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..4c09c0fd702ab11802c4b14cf51aa478ab8e3504 GIT binary patch literal 580 zcmV-K0=xZ*P)GaTv$cZ`CS^eoMHio&-;eKy=l49%&jMKf1j|1aEQ}pE z9vwP~`nZefyGNMm+u!`#;l+tPjhbL(W%en2%J6Y^6!}W+d-KxaaMT#QHQ;AF8}1+% zx=3kp98K({7<|N+gp1(4HhoJF_WNbhY1Jf?sW87uY=q^|1a;A#G{vLic;vEaqaB!F2-Lh}}&E>lF*Y?BG6Ki$V|MM6AieLky^#zer STRB|-0000}QD-v#^of`t8ol%E>>SLB14q9p3NkwX3|5@!@8rWb+j zKGBJmy2QkcQa}UehH7>3bQIt=s3TxA6y;UGTiArh*fR!}8qk|Fkq{6sz{|@^k(K3w z%jHs|NCEqpqO)ocj5}Zsg9DDM`v_`ETJc0*F&`PpL=aqc5DG;UzFLe>MZUZ{hb6kO z9Sat-@DP7QZD|{xtQSm&hCqJ%3;hd~yxTVUEhb{&Mw4$WDDyjt0&Y(-LC>Y za~>9>RP2BvW>Zv{Ra&#B3%lVhY@Dqf3UcFBfX7L?zp;8!i`JL5o114Fd(=UTAXByc qbOk))B+4A!e05mHZ9qIv(%t|bp11egU=P6n0000>q?GuNnCdgP^*Bj5V_b?dAq2Ppn9^MBB^YUM zad0N-T{Ujg*A6d~mYV4na=hT4Nz+_}SGTgW|Iir!%$ z;@OGkWI6+j0H}~K4RYR%!7y|zM`O@*K>rL{*&}x3lR**HrMXC1->#slU>X|w!U1xQ zqc^@R5;6} zlTS!gQ5431?~i{f-N>j^(nf@gnz4vsG~1*?ZHy3tqD@4b(p4K*Q47IE5Jb6XVMKux zSz4`PETXXnBWf%+CAA199Uoz1qRzYL-WG3|8Cw}$xO|**x!?Kjch9kmG5pVR0q(w9 zyl4z(#pnjDHKIXjjfh6HL5VKef+&M%{dV9~Q`7~}#`N_>t3&@%`O>}Fa6y4+9Re8t zdK;w`N)*0U_~I8)RN<_@bpYR&iV}jrhm*U`Y^eJ3s=`-N^gu)dFp|h@h@g9a4Y^VR zl_vl=(O$>>$$5?+s4wJ3lk@b%im{hnU9Z3wjW!0?fzdY^9LMHiGJ|DuWY zbD??rW^(>tPcVS%SR9MiGCsAy(P-T|1*P$9I*U?zy#k}bwc+Wz1so?p2yy^dAKl^m z`~=G@i>&!Ma%=m5);xjI7-J}N;PBpB;wg{LNU<%hjSaIT2|5l&X{c%9#mpGVPmhW9 z4qve$=sEz$wuq-Z0OBc+c*^7Xw8#6;4`|sLL2MziwF|L)Vtd*E&Ibfa1s>SY842M! z0d_`0914f#Z3A& zsdR$=u3HQ~J58li0kE3?1v7bhwSU`zl2002ovPDHLkV1n}7B%A;M literal 0 HcmV?d00001 diff --git a/www/img/icons/table_delete.png b/www/img/icons/table_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..b85916d921ec08675f9e41f18c0fbfd7f2124d8c GIT binary patch literal 660 zcmV;F0&D$=P)Q?2k`9nO>z?V zkm+%pXeD(;$AS7ZfflT_L=+s|TT1_EiiW!ITMXX4Mag6@HO(#LRPSW@V;_Y>1H5R6 zv<447v{ZFFVUNY*Dm}RIv2nDFsh1@_Tuj zC17D*VH8v8SFpp^y1wjLHB#VfgRc!n3%(Jw(bShWQjmB~tT+!(MOc{COw72}B6pni uj`Q&8s8!`!6#=Xdf;B0000P)5jnv(m~oD{XNgT3)4vA_BpPAR^yYtKhdYt0F% zRhCi;sX!=&lnSXdLaG^CB85gO^}75>ZomdmT9+LPq@?{z=d(9HZcH$cN~HnRbYDRz zfsg`M30&z;S1A&AC%2X3x-w}7K-`DJ>yH0b_ir(QE9A5XQYrwdgM)v3=y!r-_us;n{0~Bx1NSxhn7-09ZmqgoMF?+)iQgb#j`e`+7534TN z0IpOht+6e*T|bCrncQg@#4y1G{LUj{Bc1qjw-f1V#cMdE%w2?U!P3-(1P$1h!NI^n zYF>po5J(3gHuQ{%fmY__6fxCz9dEM1=f*ao6DG#gP`>$-fmUFfQ2Qo~WyR~0Pz{s) z_nEh153w(m7@iS4z7&$=Fjpf*6qeoThyw_P)*6om`?f4(mTj;#xt=vi^`x%cPptPc zrpLvJW-}CQ#wj?(S8o;&mxxet6D`xAu4xF>S4X5LM0(y{oc<~-uVyN`jDhEG>CCGD z|Ek2~;!_YJ?tux5$LkQf1)(zOYq`k$bT6^U5=P&&kzGi+A}aH!shy18Z~8o~aj;gW+TQDw?~0 am(K6d-%A+Xv@1gZ0000G~lwc44+E`q>jqydsX9IH6-SKYrQ41uvJ53CgcdPe5{3UH{dfYo$>`2hfE+ZW-+ z=qyK@qHAx1qxUJx7$sWOfww-F*ka<>2?8sKD!vCdAJ5@=E`3kta9r>;!Op~8LeVCk zjrK5~+d_F!CaXab;Qm}e0pD|IZH(Z%aHJu^;ra+o8^?(h)seet4+YC39N4j#{8}R^ zKwt$G@Ljkw`5Dhk>b<8^e46ejC!B{}yhXUYjj5q-tT8C*03)a>>pW<#EhOYSH17?w z+ZiBQ)&hy=j9) zEY9ZRLY&RZj|kF4V@iU_JY`5llj VPx0FJ2v7h3002ovPDHLkV1gP+HZ1@E literal 0 HcmV?d00001 diff --git a/www/img/icons/table_gear.png b/www/img/icons/table_gear.png new file mode 100755 index 0000000000000000000000000000000000000000..cfc2702acd7b7c84be4d84363e6845d4be5614ba GIT binary patch literal 714 zcmV;*0yX`KP)KTsd(L2%Nfb28ake(Nc)gcnjiHl06Vi5zr`8 z(3F?(m8sa))$`m0WS?l=+qJX%?3~|q&b{3f0P254(UJXrb9jGiI#k0{pbFjlDki*T zsNK65bM9bxejAF{MGVvdfg*Ucf>99P^0^-hR9&S2%@qIt{DU3aL~IrBX@O zh{xkltJMZF!Qku$_KzEIr<%^br7DT7!cwWkIkl(KYIP_Ui*UJIkjv$u`d_XSfR}Cb z{UM9R0=L_ZLZJY?UJqxoLZsE{kj-XUkQPFr5LDmuPuODtfppV3xYCS`Mgz%Y5)8w@ z@Angkj%{{2orpvt5Q#*37I1~SZ(2p|=nR#EQ|#1EP^{GPb@v#bw+~@78VP`#hFgbg zG?`3@Mxz`6VzKxVB{AfpV(m)(_QW!7K24!#B!TNn23O@VNMzIK?d?U6)DE-R43$cS wYY%A%1cIMD9`7A_#BRT>L?Qv7&&S{SUnp5P#YQSqod5s;07*qoM6N<$f_olE%m4rY literal 0 HcmV?d00001 diff --git a/www/img/icons/table_go.png b/www/img/icons/table_go.png new file mode 100755 index 0000000000000000000000000000000000000000..0528dfa24ea76e6d1ee3919deb5b95a6c3e8b27e GIT binary patch literal 683 zcmV;c0#yBpP)&Lm&p%aeyiM6U{&J)Zzehs6~qcg z1!K+DX=Sr^zrF)w?A~pFj1Mhkw|6ytB@m3*Ef1_!0J{5Ay8>LU$tBzlkaYmSjnfHU z4a{=AA%8R1Gc-$c-Bvue80=JFtfI~l^`U1lh3|Xx4yA~A;H@{^>pDl;EYVc{nu?-B zgeC*uF;DGCO|}YDsT!>58jRZ!uO%| z#aWyhLKQ+0j^vh5T5yV`V1?G+DzbUD4Iqkhjw~N8oy?y)Yaaf}M024fA2YfDrYonhIm@?o-n z-UASkj0YZ^uZk1(A&>yELViv$1v$q!d@xCtA0sdOD5KK@e4O~oYDmqN2hLGZe1M<7 z(;Ux_k(M<&2Okq^NFX7}co}ucMuw;Q8J!uUBKA~!+FL%aKO{HM-aTF&THSBNV#E@Y zZlYEZE93y5W*UijF$TuJP_pL<3oD7Y0Fm8(=VV)C#j3wAtu~o@R5;6( zl37TUQ5462-_l~GmD!jj5v>qoD#&CdZL|ncl0r}@v_nv@(Nole_8x&x6%kcZjNbMBwtJ?C(Yi}(AFYs~?vRk2bEsX!=& zlnSXdLaGrakwPPtde&IK$Om96t&i0Catrv6bK=UoWq5(p`9mB5v5 z)=M$`c5Fo>t}7>u0B8VqE#3D|zsHgSS4gq|sQ_qs5dJ5?wu*exBLQLv0I;*lL+is3 zJ607A=lqXD)Kz98$ z0Kk+|p#j@6s9WK|HleoC!*-vC8lMM%8lQ*N6K=6!R){%OyQy9Bnioxrs{xEtZJ+d^ zO-0=A`GsMO?$Sx{X*lg=)O z4W-$&xc%}6i*o`@E!l#McQdh|n568ZXieE95$kWZg~|-kG7UPr9DreO8sIAEi_c(M z|3^&A!7yWt&vPIdXYgCfvV{;f-+m@oP?$sT`ylf34UErMnYX+OoxX)3qx9TNVI`9!Qj(7! zBJ~X|LBB1fet5FwZCP5X$*z#NLL!CY@azuC*KZ*0G-KOSd37hvrB9m)=T$HmjdxtT zP~!(cYdxlYX{&yc3N`6iV5@$9dS&$No`nr#>FmF)?AM^v85y`cFa9%@=t@@v-Jo56-xpcZCLFvFo+sh%yoi{VZ?9B7cjqH@ z8!|K0K+I4z)ErSm)DSg96%|L#evN4{_Y+flvN@i^7vC@LifQSMZsr<)pJA<0#?&w| zOa&KZT_b+%+Dp|_hzX*?r~AGp1Wm_0Rk|^m+?;%ybY_6erk!{YJP6vXQ(u{gS1-+DVsvCiz+&=4Z_!gK zprJ`^=?3>+I>|eGM~G4xHY`4{oCq*90 zHfq~Hqng;lg=?$CiB$~Pv85Boz}<0ozC3%&%PVDHJU8YKX5RO?@Ai3R;RkPKA6bUws5yfGJ=?vs`Qc_KTWo0goouiTL-$h^=J)M zL(O?@u!DuWRi0($mT-4AOn)<_L=-A5W!r^l6;r`F>{yEp7wdQ}83!rCswNq=_ zq*jNNQb+|tDWp_Lr4dr4g+vOCRBEEDwY1U&ptQczSefnpm(CAfhmP(LNTs|0gWq2v zlt4&P#};uo!MS~DaC{N8 zCc_0sd|7PSe?371F2g}XWgdg$NiJ9B?;%LfL$Ni4Pa&qpcOjIeH(99(9V2I`$*Ld>uIkVFf6crZY_xlO|{6Tm3 z1o4FhjvYTmZOwVY;c&YXKnQ^b!l4;FIR^oF)OinK+qAT_P*qh$eSJN3b#(~arm3|Z z0FTGx-t|Ch%1aM3{dqDqst+F{gdh+IV47xXfGi886g@AVaq&Ve(P(tTp|$4j%daEC zmKCeXd2{W{Th5-WpxEalE7M6Lksufh;&!_!DJh|#pn%_-idb~s9v*r>=Scs~Wo2bX zQBjfKG|hqH;^I8F+id{OrKP1dAnNsc2Y`&t%}p7L#gdj~HT(fFX--g%a!N-40000< KMNUMnLSTZ?Bt^mi literal 0 HcmV?d00001 diff --git a/www/img/icons/table_multiple.png b/www/img/icons/table_multiple.png new file mode 100755 index 0000000000000000000000000000000000000000..d76448e34a04f5c94794597f91ade6f423b3f6cf GIT binary patch literal 612 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 bl|JXclv{aX%Z3zd00000NkvXXu0mjf?NAwh literal 0 HcmV?d00001 diff --git a/www/img/icons/table_save.png b/www/img/icons/table_save.png new file mode 100755 index 0000000000000000000000000000000000000000..25b74d18f740ff208435f72333a1633569c0e833 GIT binary patch literal 723 zcmV;^0xbQBP)9=EBdhkBh&jKg_`&J(Mr{5K9?YB z7%NS3^ZC#w7o(tnOANaU&GbDgva8U-z`c)j6qd7VU7r32pE$mM#UEBK-6|qt9$Fs- z6>t{%pB71ynwG1c@8bc0>raNK6Dt8qRVe;QF-EXH2&zgZfzI{KWSyaNeKXb?5(OWH zv)$_uQKBdbLe2@*YL(JNiVIR}Vqy(9UXB8Al#S?e6$ef`OJ z*^@Dj?#>2+q<{qlHA2?aai;eJ-%1m>7t)ru4w<;#O*nKUzaX~*8Diz*A!^1TLczbnd@cygZQu8S|yQc0M~PHm=T*UUVeXvI&U+E-jSmPDu1(PvLywGr8TgQ=M*)M_<+{4|1yv{5RR4tt*Wfq6tg zLV{VqgJ)69K=q3ablpCL%L@Jenx}`>=j@dCAobP_wYPDAM3Q7fL890|4 z#q#quqV8u*XLE?fV!B9yx*?fNYUt4!L!nSOsV9)M1v7z%l{QTPbh}+$%sJP^lBO8; z3a;zI^!V?C5EafH8AXH{TZL+c?Yyc{Q!(}Glv$=hf_>95_YL%VJsl5s55{@|)lF+a zE1Wu%&|-!|CLG7nKMr>flBfwxtpR;Z@85+l-@7=lHwt^xAuTMJrm4~2xi4NQ6w;oW z3%Uilc5~@%))oFv^}-Y;b^wV=Wvg>0lR-QlN3+>PwOWO3+gc~WEu+sIv|_QikCLa= zhy*j8PT$UEvnZF#sMqUrl-p3mgx7y17`FNO`B^GjA)LwQ^N)kMUmr-cdnR<{ga7~l M07*qoM6N<$f|JxSlmGw# literal 0 HcmV?d00001 diff --git a/www/img/icons/tag.png b/www/img/icons/tag.png new file mode 100755 index 0000000000000000000000000000000000000000..e093032a77d0b90d3a5dc05759dd6bcc2ad51715 GIT binary patch literal 389 zcmV;00eb$4P)OW%^N^ox0}MJJ@O#dCdMskq^A9kwxXrIWcrSi_3?zrw0R6UmLLRf9 z9xK}R`oI6&r}tpuA*){AE8G3%KS)ly_Kpx%1N2(%MMSTD`Mq%KtN(tpp59Y0xFL-s zCmpcp**%b4#M0;AfpQTj2Iw~2WeZ>a{A1;gH$Vl?eyiqOGe&o+X8A2+kX-4em;VE2 zKK`hXbcGGY1?t5&BSPmt{hqbz#ea{!2lwRTE=eQFNqbLybPpsKH1pASpj-sjFi=dn zB4pce=UD3Er~h4B?!v>sYto~887rRu2g%7rUlhU{3o;QG_$|wC9`o+J2ag5+DGxu` j)ZRG;k{c;WnG_5FM|sxYY1FNa00000NkvXXu0mjf#+s`M literal 0 HcmV?d00001 diff --git a/www/img/icons/tag_blue.png b/www/img/icons/tag_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..9757fc6ed6597438eb8e5a70a1ab2402cdebd5d1 GIT binary patch literal 586 zcmV-Q0=4~#P)6YY{78#rvt}vj%qrc zN=UU@y$E6COaj9&r1NAlaUpajQlL~SorN%pOwHs*2laYgHBA$?ZOd~4Rw@5yFm2?1ZIg`0V-$-;GT1Fi5dB7wUSNi^%`^Ge62m>OBeX610Nsukl}DhDG-mxT?nhyYH!4he7Ri8 zrq0Ti&UXUvqX&F@JcJAe14@BNBqAY_QZAPjF(Y3r7P9H_kB#@LgFAf>xz>Qp&n=|a z>ro1XLZK^nmO`PRh#C2OK0ktd7l6-A;O5?fz1gNnCX)yR00~-SI9%?%=X}23bKl`4NrEVf$mjFO<#Nbov&dvJ zNT<_CrBZ7ExK+Uw3I&YEL1 zq(%qHWHR0F_n|0?dQQMtEQVk(xD>*X>NJrR|6!IJgTVluzJkEFiIZBbhHyBHKp?OH z;YfLEc{Cb2#_Pl@g6c zwX8?E)9I*5#h(iF=`qaGA;gdY_^%U4sZ=5tu-olxvtB}>ke2l*x7+On$PNQM`eeub zw>sQOtcA_q_1U#pC~GN zxfc`_zq*cJS5eFyM^neBh0V3}>eD$_#z~y93x^BudEejjyyv`!5k(Q1Oa`e`3dv*= zi9`bNcpQQtAQp?w0$`>sCY?^B-|tVXYPG6B!r|~#2t$==L8Verl*{Gv2ts4T1p-Cg41%^T)c)i|3Aq-XBPb9^Eh~-MB(?O%%1HUtLQYw|; z_xr)~`~-xd%KMgOSq3fM-RomxYk()80j@IKD;A5?1w0eX zO8_7BFTq~F0B&Ih{IyeXKfVEz$#iz?L`i>Ij^m_Stu}(_2;{@7O(gElqvL#zLDr4E zPj?Wzbx~#))VC+@m1SA2+wGRu@+EI*AlQZ4U$s{{4PFIsxvodT`{7+wFD@IcbRw7dsPL` zqN+OerCF_3joECLc-<-@E9d2JYjfCrFoQ2E$G|VCW%r`$A@jfIYBU-(27}>DVEOcY jqWG2CCjT8;O!xl+&v_qytO7mD00000NkvXXu0mjfWRW`K literal 0 HcmV?d00001 diff --git a/www/img/icons/tag_blue_edit.png b/www/img/icons/tag_blue_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..2a9f6266ebbfb023c9965cac87924611d3242a2d GIT binary patch literal 748 zcmVPQ541JUvS~ZL`~zygnz)KVWCC?F5D=Ikq8U?h>6CXAjX9uM6jBuQEWg2V^GsJ zMH;n{ex$Xn{j#O)Obd}(%Ft$twTjfv*iMJzn?agT3X8Y7bI9*=`z7{p>R zM59qeA`yhcVT3{<1cSld0H~b~Mbk7SN!oHUnT!JQ`FuM-Mr_<>gM6Qt( zaJ${xLMS=1+$_7vg+L$>Di(_nMNz5CK(E&ehr`hjLdmWhjYM1~ky$|ykSmI?Ev+X> zrBZOYT(H?}TOgF|yb-xttwI)mFG;vNvxdGefR$bUmP{rQusp)t#2L&_^&>KR9MLCD z9Tb_7&*$?>Q>9V?N1O-4YZzjH;W(g~S%>_|OoFp_Vo~nZx7psL70cE|*gv zi60^cLK3tjfhp`nfw={VcZ2_S1%<#>%)aa*Bb!S4U!4hV~9@te7c zr1k{t#!*?UQf{ICTBfI`)#g`y<;2J9B=#o=3tjljp2G@BGXJy%7Sn6!^?Ft98tVbi zF7NG%f9OTj`~Vq$8%hi9C`5Yjb(qASn%E?62+$241y<9T8$Jzt?;d!xt#E0M!D1ZW zB5nxiyU-+-y^m4$KZL*kFm#s=z^osIPN!2fe9HBOw&q>Joz8=zZJ<@O-aq0r4)vTO e;(gowO#c9xAttCU0DR;C0000^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 literal 0 HcmV?d00001 diff --git a/www/img/icons/tag_orange.png b/www/img/icons/tag_orange.png new file mode 100755 index 0000000000000000000000000000000000000000..454a59f30ca04916c30b5da70821b236df7dd934 GIT binary patch literal 586 zcmV-Q0=4~#P)YYm{!ci%zG5cDs#MtA%E>iAJM=dcBTXt#$=Kxm1c}S>T)> z)oeDCkaD?v5u%VY38vGjbe>Em9)x-#1qy}2S%^ZB=`y)dqgt)jH=7L{$B}&kmP#dL zv)PjngPi@y?F z?msb!MgKs27C;q`$Nl1^87)}9-#;n72%w5aqyBI>%t#yv1bin~`G3EwaPlhB@q!hxI!PKQbx4SpL{`r}VmgkO zKJ1rs_WIV^Cp$u~*F(44MZ4WbtJOlY*+iq!K)qf^tya4OAlxdU)9GNp-=EcdKIf2f zxqK5MkTVHpvl(}uPNxop&R7Z*3Wci>fg)2gxzRzjTCMB44$HFmIRQ(h60+IsMTkJI z$3`aJvdFXbdX25Rfl*oUyUApNd_Ip%CUXW6$oUxAwr!Budf7tzCgJ6?1fzU_jK^b2 zfn+jy0uk7ZrmCvEX}8;PXYF3X>c?-ad@8i>vI7~7Mw9~4Xw-oSl}hCko6%Ghg*TZa zojb2QDqe$2yuO1BheJw%P$$M1@gl$?5#tJcsvfD&-d}drYvCA3ZZKYBvF_B1^w22%tHlRHzus60N_IkZ8=MgV0M=TZ-Baw(nn|S=hBxdI) z;;R6va5(H{FKyC-4F-dY;+p`fU@++R`~4<~Jsywi;wt~|cV(__CjM~k{x92pJ|?T2 RMYR9`002ovPDHLkV1iy62OIzZ literal 0 HcmV?d00001 diff --git a/www/img/icons/tag_purple.png b/www/img/icons/tag_purple.png new file mode 100755 index 0000000000000000000000000000000000000000..ebaf0e8743fc33cf152cb7694b865e8d8adbfa90 GIT binary patch literal 599 zcmV-d0;v6oP)GWQRM3$+Tx>2G~D3qqtDdzLJ$P+M| z%_5OV?1V_vbzR8Cf4JqIVHo)K^%pXcv3TotyGW%{h{xkw5Q#dkEiV=ekof!9z?%~d z=g(E7!z)Oq(;*j#L?RmyiObN>-n-ERY$OQs{fC-WE z`TR3JBO8xbMN0KSbiO^m!^f-pEr_bBgH6ZV(+;jrKl87%5H3QY5S&iu(~XVt z`Q%tE#s-6d3Aucs;QCb?w-;^voEneC7ITEh5sgOWa5&8962;=`54d^#1;35CDRwv< z7ITTajw2Wh%6`9}(Iu`wF^PG8L%bJ2;q&>deAA2$Oi`4b;)4JRkH=$mxm=9IcDvoO l^OXPhyYjA9E`GA_{V$1@FaBct0}KEF002ovPDHLkV1kGx8r%Q? literal 0 HcmV?d00001 diff --git a/www/img/icons/tag_red.png b/www/img/icons/tag_red.png new file mode 100755 index 0000000000000000000000000000000000000000..6ebb37d25f58c68246d8ad6a015295dfa5367870 GIT binary patch literal 592 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 T>j+0@00000NkvXXu0mjfM)Ra; literal 0 HcmV?d00001 diff --git a/www/img/icons/telephone_error.png b/www/img/icons/telephone_error.png new file mode 100755 index 0000000000000000000000000000000000000000..d3ec3a110d943808070c97d392ffdf5ab5f2d617 GIT binary patch literal 884 zcmV-)1B?8LP)=Tne){d{WWFc< zLn7LqM=emnsA7B{*Y)vzAFt`+x-Nm^Vww(~)12U`@&4lyxWV%KZOh+sq!fxrlX2#IimnVEUqy()p{ zvvsRZsIxSAJ#O!fM>}X_bD3BsleKYe)La(V7mOI11W(tF>0I{sk)nZf&t9EwLNWo-^f;Bf2G8^p5XEUs=cUmKx3zc~Hb zxfh?H#ir%-TVM5dC*!AbnQlA-@eck`TbrgcJxt>82&w&93JHg{c+VsJ%|7|c=a#cm zJ3rW;i(rMpvPncN4tRHOQmstU)sw{3rzkx19C>Gkz9aF}*rTt#PK$lv-Dh=hsDCV# zOtD$>F(P!fS)j_+(if!fe-fIPx%AN|#FGxOTA5<3Mprs{nwBsvO;7C2?HboN_i4I4 z%*#ik|jeS9N$LBR6rP44VBIi}x{ z>>WlLS5a{od!~eVw~0h596d3~V}*^QwAi#XJrBq6DD-qt%tV+-EKnL4CEB%(234>^ zl)tP1f;1~+28xU(S3*CYJ^p~Dsyu$?ou%Bpxxuzb3^4&Oq+5Y}}oq6n&8)ZMOv z$RfH4+FeEsZ7w%8oE_1rJ8M&$Q#W7E`M><0=jjN$2)YUSd^|Jb|L|Y<;Cx-SDg8@L zsyvH%V2YR_aZDJ-#Bod%goI&;D~3o=Bq|2nUENs9=N6vzJDRJfjvj2wcD6LIOU>9N zYN#4whKM3+hzO!aEW-HY9}Pc;n>qi%#;R;4m1H)*f)nA&)OGqF>t$?WmO~G><6>pv z>UH}1_Axv>Mcck+M3kOvEt%H6^}gqUno*YYSl?C(&Z8h@tQTT_8l6K#QA-d}N$8cc zc4w20Y&}jD&-3u!{qk2!xFQKPyhM_tkM3t9Do0ciHB`Zg;#8^e3k(g75pJ*HqL|fN zoA{Te^RM(~?4!oos$?dUZAq3_dP{RTmR8n?oZy@wqQn9xpLv4r16?{ly*0JGwW-%~ zzn%5Wj9qV@{bBIPBb_hxc6CsjPO-l^!9TtA)p3G&o9@)7OpMK(|N7(CpQ9u}$&2rQ z-`-f4e!eBsNF zGe@M3$T=RU@20Qy2wTApzZXx}9X>Jo-sPds&Uj|V+vhIGiN|{qe{C6^t<@asPBSpr z&&h+YBBqE6im`Ip6>xUkNrB#1PzeCICn%R2;N6GNlZ1R5cx)W)^NDY6N8gP8=;Y?Kl<0l;wLjXh^p* z{^tmzv*T7Y4*Qe@QADvA(blvFaXxCst<{h(E`CC!5rK<%sObRxU8fk!4>NLYjOMwQ z&38=AGoD(00000NkvXXu0mjffn24? literal 0 HcmV?d00001 diff --git a/www/img/icons/telephone_key.png b/www/img/icons/telephone_key.png new file mode 100755 index 0000000000000000000000000000000000000000..cef5dec4e701270adfa86efa01e31106743e40cd GIT binary patch literal 881 zcmV-%1CIQOP){5M;315b@&8vmiw;+euIl zf--d?USyksqoac%ePLU-rfb@)Z>($Qnzm`1=E?K&|NYDk1CibQd@NPv|8U+NzS5Fu zZ@k_dk7ZB`R4}TTAi(nif*`=JdU&2k=z5r{i|hhFT;^d4yC z2~p(sJA=obhafj>3D?sl}CieaC3T@{V2mJY z$F(vwLMieOn5)~6T#Qag09MX~G%Lr44A_G1_kj3^=y8X**+*{LuxGKp8- zB=iF|9`53d&#auuruB=qWFnGIXAVSS4c1y=mbFKl_@N;T4aNweQO;!ZeE7l=lS}mv zt}JGX_h%>0qpGMXADz4O)Av_%I=--{`M-_+*X18R*W&oc8tjeh^6#hpo5P3SR#hxj z<-N~->+bJN&Yc*{)+geP^mfGQOxirPbMIID;w4f8r`TUzAlwsn?%%Dh8QsfT zc4hzS8^`;4;_)V8u^2sVQR*Cvr*?7|Xc>47aq~EdPQ>4(C3`R$DQ%y$N6)>l+5XvzFFbD{Y;D;gk#Z`6ebz{8z>M7L! z6U*#z=W+#8-X&(+e48H#zxnyQiw-qa-^X=*y4ve7p@XRMy5{IR@eY3RD;y_D?wZf_ z{kN#JAH}V>6x>@vjYG}SR4!k6ypfI8ClC`NA`Be~up$qM)TNpFV}~E_zQhAfB839g za+$}gt6x%MsVdJhasJqFV{7VcWozG^pWpc8^w;yh@C^R|1}DVPjf76&ul|g18afxD<+D5$i%kT?-B% zh@vP$#cHiX>433~qz+9mKZ!}K#5BpDef?HZT>9a0-hb~7=iYN4(KHSJ^Rb<$@7Hi{ z+rR>giGxM}O@%^(Dv|_2kRVYMD+1jMkjny;N*Q9gf^XRwJ|6wJjSbYC%HKs{XGiijES+(ecUJCqg00Hn^;u$HE{MPeY~`BavyWTNT3aSPUzc zErKkm7<)U7*4D)s9E@P$;yOLx63zinz0b)K@-wTEA^2KUQIZKtiVz0RhelSye%(GdXp2NHfS~7$`MjV6c8=5Hq5QQdQ^60A;4?4hz^4`um3= z6!VZp3E5-;?5m0Rp^!&A<8oLTkB9RzrfR}ZMZu@@5M>22U2`lX1=zlI4O-fo)DIKi zBdPBN^?mepANeKYvA%oP)-G=hhnfO#*enRv8UB*%%Dp$JvQ#6R%V1n9$j5sa8%KT#rtVSKZ2$&&i&!z57YeEUS@je7Df|=%WcgZNzMqE z7`%(}Od8>E7=FJWcDo$|0|Uq;KcREaPBb?+!R@LA%T!vD$)u5;qfrr6Ln`+TFP{&= zS((P}g9mW3rw`fqB>X-f+S}Xlg-_so-#PH96x>`8hYxljkw_fT1ITn-CEDrS=NKIn zyIz~QWd};{#?al}t(Q_P7Lm-A!`Bp}6q7M?wO`icDcoP)t23;DWi@b-gt_nl^)UF00000NkvXXu0mjf%`2aJ literal 0 HcmV?d00001 diff --git a/www/img/icons/television.png b/www/img/icons/television.png new file mode 100755 index 0000000000000000000000000000000000000000..1738a4f1061e2d50eec37aaca71fc4506daf737b GIT binary patch literal 696 zcmV;p0!RIcP)H`oW|{1}@v@LQ05MEhB<# z<4=>;WR@@@AqLtaC!HVPednGQ<4lg$g~L5?&-dMX?!97W^xd6Eo$oxkoJ>mN{Nh?T zKGK`#ALG)s`^~4%wdc0Bisi*@repfmSR`f!P$zkx{T@z?_SH!)UcKGidA1{0C>G0$ zA7?uRzSSI_Ih89GO69MgXFKNKK98zQ zodDp<&Bv*(&J#KH@!=2Cb72$}=}dR!3fra9w=bFS)4LbZ-g+@J1_uWp0QaggGoz)Y zB>|wSc<)(XUsp53%urPdg~G$}@$up0E-(~ceR!Hy^s(H0Oy=QCCAKYOhW5XAsPII%aO9W8L<_45+Wpm z3J{2(s?-F|Ih+_O=Jc>IDrA4Q#$1Wo2cBk)48vLrVrKOB_giagE2{e6@ZQ&E?>*UUmP{riNq~)w4Hgy_YKz``%3%#1@% zpUUhS8NL$7k~=>;Umibxu+IO)Jr6uPwBy#T)kdS0%uY|1CO$ivikSgykbFP=Yx&fP zLmMRfM~@7R+)}DGTdidF!nxAqmv5&4eF4BjPra3?Y~6ANv)tLUv*i!pI9vy~`@ScJ z$~(7JTg`Uz)1`Bz^WVIit}`110QW!gN@n{=p{k)f@WaGZIZa!PRJK=}tL^sBGn3_u z-@TXqvtP`Nv9Yn|fM?caW=1}rj{sDa5CV&fi)v<=8LCRN*?fL{eEe9v1{^Iv_=5cV zXl9@WAsC^p(fo?1tzf|N$%99MV-8?&a8UBs2~PeCchy*^d#=_!-5^8)4)ER!^lHqE zTnsmE7Gie|PEzG+Ev1nLA`v3j1Dpt|N?+i;$7>I~J|~Fu;6GNoSYQnn9D)H}f4Zq|7y4@}vHPWuJni?8OzpbL7CAy!iRU5wxN!S n4dUShi40T0&u5wX=ok4L@Mn!_V?Zap00000NkvXXu0mjfm9%nh literal 0 HcmV?d00001 diff --git a/www/img/icons/television_delete.png b/www/img/icons/television_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..b9a58602519e2274883b9a0175b68dba4904b063 GIT binary patch literal 810 zcmV+_1J(SAP)HO)t@7&{J%4pS_+?(Ixe&5MCN6d@^ zZ=Oj#IkaObiX?q$@n&J-*uEXxuQ^kQtmM}|CPcIg}_;{=eF!I8| z-ooRLl^XSC>z6AtgO@Ixjqfv?1OR(qJ&_t7%9Ye7JwHv&72>$TP;t0aUu!mh{du-9 zfAL)W&;Md(jE|4M1H5%#W@cow*$_Zg@!nG|m(|QLGgOs&z5edR#Ke(k12|lG={@=P z(9A#$yf=JP!<+XUO$7t)p5AvDI1&J4G8xHk5d!%yoTzcD>R72d5-)@T0pOeyXlKlf zbOe1{g(&zNZpF$nDjk7y4ySE!TUrol!*|va%(DRt0YV@`U~~i# zKpe-!9@way5~JEuKoBtkVEF1u`sY6)RW4EM%`x3Z+pntP6ug0YPtAEUsQ{-&5I|x6 z6i@$go?ZK2p}T)K&4q8+adDE#JzcK{07;Utu11^~Yq6oe-Dg(_Wz^~Qb2}z>u+u_)-Ebb7&PWv03^l>Tc;N2ur2G2e`LWKHqN6!NFFPZE?(S|X zlgC+JUgp@fYmDXdIOix9i(H+XW29#*jmuxL<;&MtZ{DT>)b537$gQZe1?R}+a=f3- z@~A4RN~KaEpU-onw#Jnoz9YZAhbZi#b|>L_Il%BAikUGwI%=z{t9b7_*UUEMXCG?t ol&tVD34apuef>c`n7S>00b`kqs~MqiE&u=k07*qoM6N<$f?b+?G5`Po literal 0 HcmV?d00001 diff --git a/www/img/icons/text_align_center.png b/www/img/icons/text_align_center.png new file mode 100755 index 0000000000000000000000000000000000000000..57beb3813973e69f535a822c2f0424fa9f560303 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%s@pN$v(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P{UFnE&ke;(6i-d4-w%bHR;j1|AyZ#v6S(amDc zlKy{I(;D%Nuye{ncOLwezxwWez>k>{<_3S*oiFG7{Xgq}=)co{r~lFaH2=T-_xf)+ f9X!fMH*zv8ak(u6{1-oD!MC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P`}`P2Tg^+n4;W0%&Nn`h_oB zXMCTNA-w1R;@9m5&b!P``2Amf(pd!#&g=F^W;hsZV)z*wDqmKyKNDyjgQu&X%Q~lo FCIDq2QD*=E literal 0 HcmV?d00001 diff --git a/www/img/icons/text_align_left.png b/www/img/icons/text_align_left.png new file mode 100755 index 0000000000000000000000000000000000000000..6c8fcc1165a433617355ac5e182d015b389e9296 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P`}`P2Tg^~Il~8@dITHCPA-{a3!-)3Cjx%=yXx z_>8LclV7mqn+PY^{qor&o%8>H%d3``{~Y#6bGV5yoI2touNPXs5@;QRr>mdKI;Vst E04%Lf&j0`b literal 0 HcmV?d00001 diff --git a/www/img/icons/text_align_right.png b/www/img/icons/text_align_right.png new file mode 100755 index 0000000000000000000000000000000000000000..a1502571c99fb92b1579c3658bcc50c5976b8e7d GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{=X`^_fnmU^23D6T z|NkHVz|K?O{7~QE-_Z@zCpI>Iv^P|9aJcmUe!yIVina{lp#RFZdm6TTlr;aYZ;9)u zJl|<{@VEV{yZaY@Fz(E|@awC#5QQ<|d}62BjvZR2H60wE-$x=jq}YqH%ujg@wF_4MbQj@OPa$ z#N&HdE16k1*nCBr=}I0g*DjHSSAtwt4sItn>RWmQ;^L}U19^Fv7BBYSby+aOzJ$YL zj>TS~{$Ts#`4N9lZ=Cye$+c~_4@}ZK$@9WkqvnrvN~H0Mvqt#~n0udf&TzD|;=Hs* zf<-9y=7rhpPXE4Zb^}|6b=Y6y(;Y{!a!g z@UQp#@Aw}>L3(}s|7f5BUjeuKZvQRjV<2U7yvu*H{aAbvQ6K!@3oKzW z-{Qa8d3gae1^)HE{~f^!v<1}u>;4xnKvUpW540I-w9J3a{{r=B3T*2g{_BH1CtaZO zpZ`6V0*V5g1e5i;`_=Z#_e=H*@8|93RG@lX;D!K7TKswwko8{x0000C#5QQ<|d}62BjvZR2H60wE-&X@N{tu(Kw&{=X`^_fnmU^23D6T z|NkHVz|OPW*vP=;@BgD8WzABvu@M{$HPs!^U|F=gR-} z&AETiZeUz-oG szv_+eu)PvwoyEX;-Tuf72ZK!v%2xjJ(h^EWKsPaXy85}Sb4q9e0Nid~c>n+a literal 0 HcmV?d00001 diff --git a/www/img/icons/text_dropcaps.png b/www/img/icons/text_dropcaps.png new file mode 100755 index 0000000000000000000000000000000000000000..dd65786a7be028fccac7dd336804281596643f66 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=u@pN$vu{fRl=l_3uX4QtyMyG~E z2bbS{CJJSW*BHcfl8hTG_(hr>Lqe|nkKbQs_~+l>*^DmDAMWj~mUJxYIg!Y)N!CM> z*|4K5Ht^-f_7L$FCexixdjt52Tl@RZ*Uva>Q1k4JWQaI}X)BZFgk#kXYh2c7M=Y2% zb%9wMqv@UIPmXLQ3>!P=&XsNB&bzy-Rg&!qLxqHkn_JS2roP0D42$O5*ZZZ4S5#O3 zS5L7v`uFFj@zmIa?CjtFpP!!}@t6B>{l7ns$F3AI9^EO(U@`aN<^{{<{s#Js!PC{x JWt~$(695Iyd-ebT literal 0 HcmV?d00001 diff --git a/www/img/icons/text_heading_1.png b/www/img/icons/text_heading_1.png new file mode 100755 index 0000000000000000000000000000000000000000..9c122e91e358860733eaf08fd543e5fc585d4cfd GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$x=IP=XqH%ujg^j!|20W|*-XbO@ zAtBSd^khRzd{=pNv@vN)9uZDqGTXuVPf6#I=?;x2B`Y;1YQMI>>GxvE??vtn{c>{A z7MYxUVrui2JTF|YR&ldntL8M3{q7no52$4`vIX;r@S8@YTFOM5*~nV4Gk-UYI5L$} zDw(h9UDksmVjphbEsSQ?UdGUxU4Htk{EZoY&3@-Y5*_;Wwk`ZAkg@!FaC~ii{N>;; VD%(>GD}XL$@O1TaS?83{1OVXtVO9VD literal 0 HcmV?d00001 diff --git a/www/img/icons/text_heading_2.png b/www/img/icons/text_heading_2.png new file mode 100755 index 0000000000000000000000000000000000000000..fbd87657fbe001c0a78fb095284fffc32e739497 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$ROXGNhtQ`{C(%$wdeB3 zGTnLdz~IMJtNg?T>Z(s;oVU0)KW5x*9xvq)rPF;` zY|Fc4&#rLa>Txf#@y+aKf+ac0%`STzAI(*qdYo^XFH557y+_x*JpKO5^1S9?c^6}{ zP=+&OVHtDUrGNmdKI;Vst0KHFj AM*si- literal 0 HcmV?d00001 diff --git a/www/img/icons/text_heading_3.png b/www/img/icons/text_heading_3.png new file mode 100755 index 0000000000000000000000000000000000000000..c7836cf09e4565cc76c13bd14c13971c9e093c40 GIT binary patch literal 306 zcmV-20nPr2P)wEzGB literal 0 HcmV?d00001 diff --git a/www/img/icons/text_heading_4.png b/www/img/icons/text_heading_4.png new file mode 100755 index 0000000000000000000000000000000000000000..4e929eaf583f10cf50eb1666ff6530b9d4cc7915 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H?&;zfqH%ujg^j$;1_G=B-XbO( zon2btF4r#xDw?mmvtwaL3R_~+Yz66*rrQmiHySwec#9a-mn?F*9`VcnzTNDrbNY9( zxOA;CUb9S|sk-b7=Pc<<>lMA8+|AaBj(NoLhh2`-;+F zenR#-z6;(Syt?;Ub#DVE_OC literal 0 HcmV?d00001 diff --git a/www/img/icons/text_heading_5.png b/www/img/icons/text_heading_5.png new file mode 100755 index 0000000000000000000000000000000000000000..30cabebf7445e168a0f31b0ed68c43d54eaf017d GIT binary patch literal 304 zcmV-00nh%4P)ZVg9Hj*!Zw zxkAM~zCH&l><=6QeDdgV4l9hop+%GWq_IPV?Z641X8iiHrWJUN^2}hSiGjhsfbOLp z?d`9_MC0P3jVAVsEwEMMb0n zB0~XIzS#Ls)0t~Xm4+o)ss{0VQa0sa#lQ zId*4emlM`ngv0=W5j91YWvvw=LS5IWstQs{pJiG4EQ-Qop69~#iqI8W2WgtxU#iXf ztEXoNNs`zvs>G@%#?>c5KMuD0+hH*s#$63W7TOpnMy0?=cxd2!k;mO;x%LEZcs6dg zfiV_j+#shGjBXInk>NV>r1Qxre!Ic-t~!+zPb((S+IXVgZxH;I|A62L)aki)c<;-^ P00000NkvXXu0mjfr4WN8 literal 0 HcmV?d00001 diff --git a/www/img/icons/text_indent.png b/www/img/icons/text_indent.png new file mode 100755 index 0000000000000000000000000000000000000000..9364532344e4b182fc286c4ad78c738533335d73 GIT binary patch literal 353 zcmV-n0iOPeP)A?80v9Z^YZA8as&YaOiG2qAVzYLj+o?N|k`)kPFX7%epMT)pIgD?z$ zz0k7x#eWfQHil2%e>0rE^YzTbTVLW%P1UySD{rve8ZZphV4}^gtsg#oV8j^<1D2Tp2_^}JGDwbz00000NkvXXu0mjfU=gFa literal 0 HcmV?d00001 diff --git a/www/img/icons/text_indent_remove.png b/www/img/icons/text_indent_remove.png new file mode 100755 index 0000000000000000000000000000000000000000..1651b074ebe5f830c23c909d04ed3282cb8892aa GIT binary patch literal 351 zcmV-l0igbgP)$KO_&&&86Lj*&d?hr!$_C#5QQ<|d}62BjvZR2H60wE-$B^mK6y(Kw&{<9vg>Q9!g~ne(gm zmj4swoA@7?D86%i^8WzK9JM17E&sp&Z#dpHfz$E-U9ks&4?Z9Gyg!%0k2Q{M-Tz#> z2OnD>vrPZ*#{EHKLq)>Jcx{H|Ovdb&|4aQZWSipI{El%e^Cxx{^9vSw28s;a3IDB= TS1%U=TF&6<>gTe~DWM4fm>N^1 literal 0 HcmV?d00001 diff --git a/www/img/icons/text_kerning.png b/www/img/icons/text_kerning.png new file mode 100755 index 0000000000000000000000000000000000000000..377def645978fa0172693189c69393137030dff1 GIT binary patch literal 495 zcmVn~4Xim_?2SqtKIRdGvsr_+rar?uY zI#~heudl+IuL_?2zxRcWA;4J<4y{sW!t08%R{DH(tg2Ko8<0hyVZ0w6Zf z$@_zYgZG2j_T|^w9V@O*gF1P?yuAE;adB}40RaIA6a&)J(*qI`5*#8TA{+t&0usEv zz5fH9>|maANho&4y;law=T(4CPEb}>{?Et9Hy}KD6(BY@H}`!uHa3*N1Ub0?=w!H`EG;b+3=9nFfljUmI@v)x_6(<2Hrh002ovPDHLkV1nwT$M^sM literal 0 HcmV?d00001 diff --git a/www/img/icons/text_letter_omega.png b/www/img/icons/text_letter_omega.png new file mode 100755 index 0000000000000000000000000000000000000000..5075ec6b850079097edb17cf4ab7507341751067 GIT binary patch literal 541 zcmV+&0^H(oRrRq(~AWF-B$wEEF_5P#dC*3bGSjS@Q@3 zQei_)I)gLJNbX1Y+g)hTjNKG;v2HedeS80F@f!fZ@EaNa9MBsQi^ldO^2n-_SKE}$nU7=6ST zj%A^9DHM*qLw7)k76O>v zuTf7_`5Xah0F7>*TE5D_Ohm>%WPlxq5|oWTQo1!ZFY##ULV=nYZt%OgV(e+qc_c%% z{Tb=j*d0hQ#As@8^JsiOjVq@T`KroCpN#z>0aw`)sMPvks&{eP44e@es_f5n<#dAT zSWmKTzGS}67BA0|aM=<|oGKoO)7DK9Gyunu1hxYSrcfFtiN^QR`AZ|)A`B5(w?wcI f^MD@U-?s4sJZ{q)Y&_-b00000NkvXXu0mjf&&BDg literal 0 HcmV?d00001 diff --git a/www/img/icons/text_letterspacing.png b/www/img/icons/text_letterspacing.png new file mode 100755 index 0000000000000000000000000000000000000000..41390f54901f8246e92a229741bac31b071c3eda GIT binary patch literal 503 zcmVIRgTm)FDCIXO8Fsi~>^CdGH3S3%D0q5${f?U>J~@nHi9roGbuh1D(9z z%gbv&l9L^@wYC4t%gZZ>i;E{<4a9_mgn)>M2nV2(9o*gB6P%r$|C^baIl$y)WMuA( zh=}axz-dClyIV_J-BL~b4e4$0H9{wt{tzw%sTk? z|AgJI|M%{A^}l1=tN+cLp8wBV{P9en#AM1%O{<>miNN=p706cqf= z&d&aynwt7QAtB*^WMt(3;NakFtX`O~`}Kc{!k}-*E6NOL+wu}_Kze%m|HQ<^|IyLW z|3gAT{`>m+{&#b8`;XUv+BMH8b3yXlhtDW7AZqG8xB>qD{{KBZJpMa6I{vq^vifgi zWb|KKTl>F?ipqaEIk}Zs4M>{#fHE&cPrXOJ0iF#vu4T=C_}`=9##IpC#Kh#kuCDHX zH8r*W^78WkB_$>Q3kwV5js^Ab)0(c;*G_|Ivb{j6W()(!!2nMa(hM;Jfqeh~002ov JPDHLkV1nKcst5o8 literal 0 HcmV?d00001 diff --git a/www/img/icons/text_list_bullets.png b/www/img/icons/text_list_bullets.png new file mode 100755 index 0000000000000000000000000000000000000000..4a8672bde48f806d3d4d37db192588a9aa3eac10 GIT binary patch literal 344 zcmV-e0jK_nP)PbXFR5;6H z`2YVu10|S&DhA}te_Swi*Xsu$nk)lAnzx?+_#Z@r_~qs0*+Bfiq@?73K|#U)?Ck9S zsi~>|6A}{sM@B~e4-O9gPhA%bd?2RGd{of6>E(lvp1b6Ep>6&12TPB<{a?EDDL4@0 z;^ML+A|n0=1_u83^78uc?CkvC#>VEqiHXU7U0vP(YHDhzff&$ntDt1@;|H#l*M@2! z+U8#>h@W=vfpy*`^1J}j+`sMRe-I7g8yOj8Yin!&S5Z;VicFNp}SURRVGD{CSNFe~ni^^#wyl5uzj4je z|23%2?k#{x(*%mqe9M%mih+W%ElRQ}7!$^91> z7ymCLB=nz$hvz>#JNtiTW@gkt1Zf0eyP_){bPq%T_kY#2Z7&xs00000NkvXXu0mjf DNYA0= literal 0 HcmV?d00001 diff --git a/www/img/icons/text_lowercase.png b/www/img/icons/text_lowercase.png new file mode 100755 index 0000000000000000000000000000000000000000..382a102e3d5598e294101172dbf2590ef91ddac2 GIT binary patch literal 709 zcmV;$0y_PPP)SW@7!&*@Ou&cdKUy?8|jDh;r$)X^FHUK0Z9A1+9pG2o*-!S zhM;u^zO3)BuYZE33E^Si48g_e7*uSeVbcIDy9BkHAFUsaL+OgJJB~W8e?K;~3e8vy1y+KZ5djw-d`1PkiUU2o zE~!@aq@v$A+XDOCER?qeXvbra_7O{>mv@!7XuJYWxue+EvBIR>t;A9Et@ZH>)ZUFj z()03Xo{1MF@|-T7)liEvXBc}JPM2ypT4<6&V$8)s<7MPra{ZvXzU(d@C!7&ndlE+$ zvy6;ZPL$F>Vh)R_uCIcso^<`z_3vf4sWW#3G|`oI>Vy8INBmQ{J-ok)6`&kmMOFvL zB(hxwjwu}oqr@7<_VWQIC4lP6WHtiJ)33-jE+f;xiKy;w`s+%|xPZen6W0f1DFIYh zS9&9i-bZniIU>kxTSAs$335va`q59Qxf#Ksb`IjYMOjh+y{?GrvKjgyb~FbQx_W7ev1R)}^n&NG}0M00000NkvXXu0mjf9u`O1 literal 0 HcmV?d00001 diff --git a/www/img/icons/text_padding_bottom.png b/www/img/icons/text_padding_bottom.png new file mode 100755 index 0000000000000000000000000000000000000000..4880c43a14ecc3cb1e29d8cddc4f387a57743615 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%s_jGX#(Kx>}(2>uk*l_t@;dN0EviS{mT zvGu&K!k84#EqwClM$Vqeq31P!wKX|r@41%rr^5Mj!bSCsndhIXFx>q4hRt2*@LPwH h>8~X2DekW?X1^%zd1ncGXCcrj44$rjF6*2UngBWCTFC$a literal 0 HcmV?d00001 diff --git a/www/img/icons/text_padding_left.png b/www/img/icons/text_padding_left.png new file mode 100755 index 0000000000000000000000000000000000000000..b55482eee4e7b0ba2a88d4a46005567336f8ff7a GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$x=;`7ZqH%udL_;nnLjl+Ll>Wz( zIeQwyH^i^8ZQrmpJYqwvw0?qe1+OEEdf{i?O@iV*XVXsY`Ty*&#mE0=XK;luxHIb9 z4YSo}n%D4fBwGjp1p#q9X9h{oRCy;FApL49`wQp091V`y_iGV}U{9{r3-4 R)q##>@O1TaS?83{1OT)EWo`ff literal 0 HcmV?d00001 diff --git a/www/img/icons/text_padding_right.png b/www/img/icons/text_padding_right.png new file mode 100755 index 0000000000000000000000000000000000000000..106edae52ddaf5828f2c13d9a3f0b765348ca360 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$x=;`7ZqH#X?&-n&<1H*t-4XiFA z|NbBT(EiX|;vdt)=eL)BYkFIjmhz*Y`Q6X|5C6~m|6fsU$^Z73Y=>6wm*9Kh(DR>v zbCQ~}+3o+zcLe_a7x%GevD>fob^b$n0Vh$N)FaE}JsaQGtK1E*H@?HT>!JMN_?D)# z5k5cKbDC@?aVGq?saOBXe{&-H#$Ak_jf_{s6YhrpH>hE3KU}$i$*n6{nBfgu*1H&+ Sq+p<989ZJ6T-G@yGywo4ifyU@ literal 0 HcmV?d00001 diff --git a/www/img/icons/text_padding_top.png b/www/img/icons/text_padding_top.png new file mode 100755 index 0000000000000000000000000000000000000000..c5c45b2d6e3485f569b4b84ad4a6eca343422381 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%s^K@|x(Kx>}@HS_I0neTeWy_X$ zzlR)kJLWKV?CK3#{b1&`=hMT^Ok|mL=jj3`8~2v|+#9v8zU8YG>i!n;jaA|1{JRO> zi*}22JWI(vtlgq0=VdiDGEr2y=g`$KCs8iH88+V&u75h~eC}h}%?j1kvz#}y_po2D hSm!GL?%~(XVeJ1s?|cxdKM8aRgQu&X%Q~loCIFXdTtEN- literal 0 HcmV?d00001 diff --git a/www/img/icons/text_replace.png b/www/img/icons/text_replace.png new file mode 100755 index 0000000000000000000000000000000000000000..877f82feae4e68deb2af0b8a8100a141e4f9668c GIT binary patch literal 691 zcmV;k0!;mhP)%W!&uf*aR7m=b*g|(kUJU9 zp=n%1olDSG6tD^6Pm#c6n|B4fFQ*MV1`x;`99zMDR*0#E+F^m|oe836+P7h!>#yE1 zfI!Pp|0)RN)PgnUO$R@72rPJU`eo0n-Y3TD?vS-`EG)AfK{?SrAt%}ba;()aIZ6Qp z@}w&6x|k9*7g8`rL*Kdi8;ED#;QEIV91l(YIPowK+e{Jd0T~0&6kK`z6@7djhdf!w zwp#S^9d~>P!TC5WQwj!Wi!>p*WY}^u%h{eQ=zmnefl-ky`!{2#b7T1JN1S<4gx>S% z7mb%u>(n#eMi%C6?_t0)6t-JzDG!NaVz^b*qE`c@Om0%1= zpr*5B14!3kn2^D}|Au;ZM%_q;bhY%VI5ex^Fx52YQ--nur0X!-_-*q03322ghy(&cNNX?2}d-6ZV@ORut;!KHNq*K6#He9hTK Z<~I`7qRvVbo(qSIUSEps0Q zUAr;NZG^#_4#09w`|BfW=BSyYW{#RUYUZe!%aN8eSM+R$yO)9~xWneh`0_bwJ2z3R zvrY?I6E4E|7xT1sOU>o5-Te;Mw5*|^dcu`kX%q>;$_F=tdyg6kUl(HY>9E*FQ*c$& z3MlB3C=DXPUx+Ug^$VQ5Sw}K5f<(}Y&`cWm)^1Sn6&5VGT_T#eM}w!xAf8TiNJh=L z+NwumgW~8dELd=DCv~^pI^3L@@E91uoo@nRM;W|^4AqxbIW|Xz4i`!hT_{9glI)z0 z5%aN;^zQW$v0wqqva>X6a+Y1UwM!GBDKZu?k-~2uQ`kzx6c+#6H9iB|X|uV2x*{9^ O0000C#5QQ<|d}62BjvZR2H60wE-%c=IP=XqH#X?$N2_%qYIvnKN~+W z9~Ca*U!vP_U*I3(>?ZD`Y&-c@{(mg}&-h1dLFs{j0GSW-70)XEtG5VfT;0^m6lQ+J z+U3u8W~~h~6Sg>h-hYUxlQo0ukSx=`-AtkqjK0A?{?B(bVDN36-+a7&HXBFuBYQFJ z7+INr(vG4WNx=!554>o2#>TpUpG9^D-v)~d)+;_bGW>G+5&iVi|1&@rGI+ZBxvXC#5QQ<|d}62BjvZR2H60wE-%c@9E+gqH#X?$N2_%qkv$?&V++! z-fX$@sb%KG-5a$|R8J4(Tcmu7`G0cYgxS-++3#dN^zA^J(=P8r|6lx9G_LLaZ+v5S z!d9iC@)!RP{FnQmdw#}3Ee(C$|NPA#|L6YmR@fBO9w|C7oMMQ$vc`Tu(RETvC<`(>OPJ!ieM-fH~m>7>jJ-3AN;KsG}ItN_H<)YO~+biscK35gGaf`SIg^B!*iYEReM4Ple+T`TtK`;KS0!apVx86LEKKJ4Opo2 QTmS$707*qoM6N<$f=73^s{jB1 literal 0 HcmV?d00001 diff --git a/www/img/icons/text_superscript.png b/www/img/icons/text_superscript.png new file mode 100755 index 0000000000000000000000000000000000000000..2fb2a7c7483531a9f518018de41607eff409019d GIT binary patch literal 421 zcmV;W0b2fvP)CG+sNmIhtD#~2^Z#UfA#v8j z3n}v+J-{%ayuAECadGj1+}zv)X=!N(;^X5L!o$N4`1$!AaCLP(08(RLajhY2(!C4j zIhPDD3;=2l0BZh_l9KWtsCfcN45+yQsCj{njg5kJ(UkzF>T3&3GA;-hCSP#Si$AM? z;RT@04nWQSBO@dK12q@GYzATP)|&^?=RW+OJnO;#u!(m+;0yzxvnK=w2L5+*bNdgp zS%Bnd1llYB((K~m^54kFXadOwfSe7qxxm`m`oDpJ!G8q>1qY%G0ND%;umTWYQ&V#S z&;|b`BqTlv3JMw!GyrPz0g$tSnhk(99{_4T0MvYdi;L?33k!?E;LJ<_HjJTTC#5QQ<|d}62BjvZR2H60wE-$x?CIhdqH#X?$N2_%BY~9*Y!?2h z{rUe=9fy8l?U(-(m`sFEeV_iPeWNmK)A{6xz&-Zw?GGia|0}^&^gUfcv*1X`gnjmc zo{g-_np*x&^x*npDC+Wt-z8{4+sXs`@BiMP%+Rv-k;3)Ae_+S0!x%EHv-|4^N|MkDje{TP~{@MQ}vm3aX7|tvG V&AV6mZa&bt44$rjF6*2UngI1lb~69~ literal 0 HcmV?d00001 diff --git a/www/img/icons/text_uppercase.png b/www/img/icons/text_uppercase.png new file mode 100755 index 0000000000000000000000000000000000000000..8dcc2dbbb212b01abbf346206e933171945a3257 GIT binary patch literal 747 zcmV1EDu<7r(0?-_Pg!d!8HsIpt%b<}90x zDMxvzT_Vm56BPEut@7@FlT+>#73arAln#?v$sox)-W#`G^N1+86$@nrD76#CNgD|j z_a_)?WscsChp&t$aj>1st^u`bs5MqLl#s1q!;FNIJD-qmh$yoHoE}bqTGtMnxgu)S zXoDkAd3!f>k1ywD1<*K?IK*&k2aFt3IXm>#{>qBM7u`^M>Yl0H6}c6Tvc%1Y;s6sA z9HxNuzC9q47QaA@(}c|cs5Q3V_yPIXBVqM}o|o3=U08}fLg$kX(D3@H-r_A&K#NIFG)9+GxVtF9F!gyg1NgI2^_*(Jvebfwh#$UpQ#fHM+-?h|6-K|Xd1IR2c0OH0 zM<9&`ucZ7ZKptw|n0`Bn`>&liW-Rz_^h;c`muxh7$a4SU7qt3QsCVxIpkaa5md$b) z=lc4#I)h0xy5n!C)oc!?VVX~&&LuLtHrSbFU#h5eRzSmKd{gfhDyfxeqxM$cDzr{v zZ$Q&bDzDKi@?Ak5_0H&mj^#4nsvQ$xqLAuQeqv7mt!p*=640^H^*RT)QfvRXQe%s( z7+i6f=Tf+6=R>;!^iz_)!$+%+$3TNee%)QN^RQ4rm5qe|0_Z(bUgl1E<5dUuLu-!) zYFJ@kCg|W5)XFrt1avQ?QOhQAVSp%q1L!72J$+r&(mQKdBHsxbERuIs_xOoQ8-Z$w d$ibbN_z9tvwRADeG)w>h002ovPDHLkV1lyYRw)1g literal 0 HcmV?d00001 diff --git a/www/img/icons/textfield.png b/www/img/icons/textfield.png new file mode 100755 index 0000000000000000000000000000000000000000..d37e7304e24c78f335466b07a898480a26248edd GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&9_H=O!(Kw&{<9vg>(FMnYC;$IY w3^*un^MTdn;7P{?4C|HS{~YI+WOIxGs_iP%+I;TWWS}+%Pgg&ebxsLQ0G+Tf(*OVf literal 0 HcmV?d00001 diff --git a/www/img/icons/textfield_add.png b/www/img/icons/textfield_add.png new file mode 100755 index 0000000000000000000000000000000000000000..204de72316ac13eb8456bd8208f881939885d6d4 GIT binary patch literal 321 zcmV-H0lxl;P)4KV|@pIrODbY{Z;v_Aj;iCtd* zm+qN?Y5+dG>FBcmjjI#?Z@Dt{|Al9}{`c?B`XAn}`@em0*?$I*DTHuhm*@YDmnZz+ zcx}>u5a`*H`oDiq`hVMedEyd_PqpFyZCB>}M+TcNP5p14ElHdKmO0YjyLTo1Z{L*w z*4(}`0qg>x0pE!-0I0AfxJToE@2(WE%^(`Y2a5L)o#ugxJAn8T$k|Z310)Ur_h~;h TM?3Hj00000NkvXXu0mjfa9597 literal 0 HcmV?d00001 diff --git a/www/img/icons/textfield_delete.png b/www/img/icons/textfield_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..c7bd58b21797817803b49d3b2b53323e17fda625 GIT binary patch literal 335 zcmV-V0kHmwP)4KV{At)KG$c#_utJ;JncjQ{ugvi#ZM%3MWsnm-aQTLHB3 hKFHZ17lAZ`!~r__K9H;4^nI0$7`a(T+P4hBKZ7hk58-_j0w;$<(*=f7ic$nT z*Wgd55in08>183j3?S=MAoDDTLoLSL$!_UDxXqSf-?qdd@H%8(We~hQu&uVIo$6NV z(zMY7wn6r5i617ZGZ)-J($xXssTcN*&WujcIDRIp6J4_PqOvJ}9!p6+yo8LmAGS3~ xN#Qq?aIt$6X#&>g?8!V{ znjV^ye=2;qm;P{$`s;H$`x~a}R(xgP|G$RoO>~FD8I7fnS&nXWFMPEjPiNb7^=IwB zO%ASl$t*T|^U-%%8&{}vv|YWQef;Fc%Euzc)I$ztaD0e0suWxYs>%u literal 0 HcmV?d00001 diff --git a/www/img/icons/thumb_down.png b/www/img/icons/thumb_down.png new file mode 100755 index 0000000000000000000000000000000000000000..3c832d4c83cc0f7869a83f88833699daff52fcf2 GIT binary patch literal 601 zcmV-f0;c_mP)q$gGR5;6x zld)?PVHk%KwHXvA{{RQkK^zqPQ*`Jo3NFS)5G+C!og7>$D6NEu!3M;jM7RtZQ)9g& zq2Y3PT)1!{94U9^xG!8xj6)xXFPclGw!?4uK6oB}yu5D$NbE`yI1Hp{cTP^eKY;ujW&%y5(3%q}8&Iu+Z9^2vgn!@=`cv5NLoOc^Y;-QuG-PEVz;+}o zcENrCULQOkUgTneivF3xTc}jz)O*_!j#u{k5_Y%2vSBq76X>=lfe@Sy)M^rlSN41< zFBak9y3SHYoe91;AFxb0c`@LxEMB>3K(+u^@@dlfv)n11o(YQ9DYCV@ysWAe)bA*@ zA?~zt*M)ZwRm*@RfYubyBDcy zzi@ld(BZ+WEz+fP2fGEuIfi0A$28@nAFW2*$}b-Lm=yg4isoRq;qlX-+{iBf5B^t> nvr??6H@Wu&uC1-?2Lp-UJe5p>RuR>I00000NkvXXu0mjfVs`!d literal 0 HcmV?d00001 diff --git a/www/img/icons/thumb_up.png b/www/img/icons/thumb_up.png new file mode 100755 index 0000000000000000000000000000000000000000..2bd16ccf294bd944c6bf17fa0345885469980820 GIT binary patch literal 619 zcmV-x0+juUP)EAdBAPtT3aD}=*%{NbB*ZGcS?IC*5jinhDl=TC) z^a(zA>EnR9^9j#^IEMZn^!id5#SnEtL|{9h>X0|4DCpP8H?Ix=ni&xHWU$qNT21yZ z5^*RX2qmP^fMQ*vP*nzi&BkZ)YfvhI(E`_#urPuk5&HpnzVw-Gc(=*`uwjlh!P+m)3pz5ENXE;8&W2W*v~T!vOF>0KmQeQ*+S#{tWRxh00jSgfv7 zu5dK}P{{s0ADkp>$Chu@w&3}~KY;h%H7W`eKSHGHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p`EB*FHYdKr%;k=xO&(k^EfNlSiKZ>5l+xr|%SFOV@6-ysFmD2F5 ze93OiS+LaQym;|2f6tbH%~V`D+ND?vc>4J^KSLxEMifJQ`8>*~y^+pGr&o-n=LJ zGWB(yB#;DR8&Lhqi{0(#wc#SwSB~jZKzIFx`8od>2Fo-Pfe7*M8^q#qw2yTxiXzd~ zRaz|F*rr78G`JZXG*YX~5K@5k>G@0HdlBo-6v1jHye?%qRwO@+-hO7J^4LlPG>@A1#{ zQFl4x7tnG)+cz_2Mq_f*H!U)kgg{iHqxT)Yr3ec@K!`)z_%h1c0Y2Eu(dMPkrhq5v zY+bKWfx|sTiOEB71HuwS*CDzA%ReBv4*7Zy7RM0n6`5#chfOJK`ze)Y6>d6Z?UmyNHH!3DdsP-ARyDo}1HO+>7_um7 zx_gj{+_aU_OUH_~Jd?KI#ICZujD`of2mDpCv_zFGE%6}tfL|j!WGu_i-u>4%{%d{$ X7`zMSfT21V00000NkvXXu0mjfkBx0` literal 0 HcmV?d00001 diff --git a/www/img/icons/time_add.png b/www/img/icons/time_add.png new file mode 100755 index 0000000000000000000000000000000000000000..dcc45cb22d734911a75bd4950e2571a16605a9cf GIT binary patch literal 827 zcmV-B1H}A^P)3?6FD7nDHK>VL42oe(*rZTUs{)lBOewOJrAS)@sgRZy z%F>hyq)^%d($a+jvbEIPma<%g&wCql)nJT?C;2jG&YAhmnKKgsAmV>?EHES~x~T7X zs+sKJY)$uZ$;sXvQYTGaS2d(|cfZX!|5t!kR#0tLbM}|5W7u4C!0-2gAiP*vG{dZu zpszlDTUwr!_ea36B)`&b5W?qi!|L|o{h$lgowKNt&7f6j$CPayE~_4jy2lXZ$7TKo zP_^Rg$&G$-I%;z7v@(FfmgKcnw*_L=0_Lcb zLkC9)hC&cDim*X}0(*PtR1HFFBT(FKf@MOAIxfq_05r`>yFTv5iHukZk`&|+%R~ULN=n0< zwMH{M2Y|s#BDvxd+>Q}6WV3z(I?H054vP{MG80A?2&__JW&z`G!!PDX?YR7GjC`?n{pDbW%Dq)z9LBVBN!qPTXY$6O9kX}RpA#Z z8F+~Dfp{9Q%Y39-UM%Mw{}$%PsxdTSK!IosPpU?dUZKMkZX^^l_4w63ngulA_kS(O zy_Z+Zxe=5L?_x@m59gd1&eSqXN&&j;A0wZRe+P0j{YEgzubTh>002ovPDHLk FV1g6?b$0*& literal 0 HcmV?d00001 diff --git a/www/img/icons/time_delete.png b/www/img/icons/time_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..5bf8313c6fe2d345c2e2e27e163fb9a91f902f40 GIT binary patch literal 853 zcmV-b1FHOqP)LI8ef}kKQAC1Vu3=||mNqz7>Z<*DWS(X}8({x^D&e^=6 z>88%hn5MS5Hq)H$;+)OP=KODSbNf%kRfIoX_w44(Ip*@cSPfat!hc zgGXB)iRGP)^{>KgTHcjKOPiBcMAb>{?eDTK{}mwNv&vMxjBTTO3~S3;*lbo%lm$x* zDyXD92;awUHor;8{UczA$1Ksv%3(Ddpf*_XaX^nU!8A(w-_X#b!Q|Wu^y*P`SH*$D zj7d8H5H%EBk#(lhmQ_6@3KLof_0Sk?u-F_h+cu$Iw4tF_gSKHEW)(f)KE3CxVm-Xz z1N7HrbkCE(_l0%v#X5M+N>P~mv5YNp_sZb`D!Md~Dh=r4rl2AxqQM6ks83ur8K%G$ z&0~hV?A-Cd;dFvs!@(*6+1+jkL<5k_QFz&;#MDGHs zx|ykH-tszZd6}+hsnhA4mbcBhIj@s?`p*w5Dg4rb2i|jDp5J@k!+8k+#Q$jBrm-;b zjI8KseP=m!=5saO(peF1X%Poc*5m}2mc9x+;BA8joZ_!YmwbVsN{z08NoZ6uRAxT} zk99wE9iT=K?;*?=p`#Jtp0>~VF4MrJWP?Gx#eXP*EB#nU_?@Z5Hb6Z;aLJ(mhD4DP zQ;QZDmVaP{%+R8k5WXuzSR@m*vNnW>-SB|th*3=&a_QF=ZGh@5za{pKHCNUK<JI)Ln2%+72(CGdRsrxF>Lf1A|cRp%M0f4O0fg+bJ#7z2L=@OIj}F;-Xd7 zm`%AVJ{q%W_AdV{9O#6cG;jUqG;SpF%DVmZ&DcpJw)}bi3kR9nL}HfOaR2}S07*qo IM6N<$f{5djdH?_b literal 0 HcmV?d00001 diff --git a/www/img/icons/timeline_marker.png b/www/img/icons/timeline_marker.png new file mode 100755 index 0000000000000000000000000000000000000000..a3fbddf88b7661e9ee2a434ad4152cc724db24c5 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%+>FMGaA|c6o&@rz!QG)Hl=lY!! z1v*=JI|P}v6PV8&74ykGbnHgML`m~0TYQt3?ajRZzjDrI(GNdQ-+es!^5)m?umAh| z_lML2hJx>}8mr}YRTjS1X5c%1=To>j zEp`{T<8b2%3kmpmE&u%$g;f!Ou2+6+ab?{tp`+Eo<@Tn7>)N`e4#yAy(KQ_jApxR2 zTwy>}5{4Z&HZE$4TztEY4eB^wEm!DE&<6VJfqm!9 Wxdqp5p1KL-FnGH9xvXIO@l#-%@K+Q7zAyIUxr7=;KLsPe99&9Qy zmp_aWYb=E&ic)qE1ceaTL3I)s3+v0Pdzpnl)xpCDFYk3f*Ymue2{3J{X-|sELAYmu z=`Mqi(_pe~fr(oVM(R_x-rovW3XC#01TV%_L0BAvr#_hKf!+|yzTW7{?3 zIuq0Vz);x1M>XE7-^4 zB)oZq-|zSSd<|RjL3Q0FaG93$Sb#=w6_iQ0NQ>FM@oa+ksPjrN7+e#)=Jk5tx!vxB zO+TG2$)d_PZTpo~g1ZG9e0&b?=MikQx3}AOy1Ns6Sn&5>og;!Hg4gVJ`{#y+hUEVS z2o4GUBDiwY}B+wa2=)lh*=g2T3C=Dq fF3wcNZJhl8^(M*LyGLEt00000NkvXXu0mjfpmtoM literal 0 HcmV?d00001 diff --git a/www/img/icons/transmit_add.png b/www/img/icons/transmit_add.png new file mode 100755 index 0000000000000000000000000000000000000000..b7fd4e685f6069f24879e9f0e381bc410832a85d GIT binary patch literal 803 zcmV+;1Kj+HP)}axRi;}=4r+) z3SP6qaP>4p4@~rygl|5-8O{?hz+@M^a!I*irXQX=V9WwN`2n1{d0PXGsKiQ-wk!bGP`tWfAL4Wq9pM0Aa!>!&@_k3G$ZH8})ZLKqDf z6r6I4DxE^*iAW72CNsV^(KD;Mdin}N>CT(uX*qP|LT8q|Z-X^{j{38qRO|H;0hg7sWIJD9oKUIFk%LU;cqpfyM$l1 z?95f0L82SLaSPGaO-)V3`Fy@e(bdrq3*|=wlpYMCC;~ciBw*hUjp#1ndnAiVSGTLh znyBi2qswqg;NM=a_ZLkGXGHfC_oATSfR@7jt5+-DyP%Qne&BIFq8kw1V9||Hw=1xN znPK?o!Rd6`4UNgghQ_3y8MPNlHR_f-OQY2Qxq>y>Ai5c{m>p|Bo4`9|@`Bs#UKV({ z+*&YS)}6|eSqn2?Jk*V3kysZ+sv&ehv*oWWC2*6#3g2JC*D0=7p2qdYjO$%J>Qm!Q zr_OtmquIL_w}TG}{70Q^x7&R-o6UE=D4N09R@OfQuPti8*69L!1zr@mb**Qa%46BP h1FE*vy!x&7{{lR##&^9e`^EqO002ovPDHLkV1lG4b!Y$p literal 0 HcmV?d00001 diff --git a/www/img/icons/transmit_blue.png b/www/img/icons/transmit_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..7b1142fc70adfd598ce6eac581421d7e6295f370 GIT binary patch literal 814 zcmV+}1JV46P)^~)@W#UgN8qC(979%Vy9NAeJn`# zSw2!>g&{fNR2$Okoji4(4lt5P$>r&q16P0#(CAS`X1XUkTWj$WH+~m^i1nA!c54U2@ zzUeSE3@r(@mOzU7Ss)3zO6X49?eVdR`>f= zD(&<}w=25V_BpD%QfK~{4*0vpV)<6BAI*U7!YSn(9anIo^h$1Lw4>$RCWGxdm8_qj z8-Z>jbWcRL3)o3FSHo3#4@0T!b!F!4__T7a7X3qJoMEqHkXET~kf2YcP!3qAt)$FI)g zfX4xE%Ve@IB_$;X{~G{!1n^hDt+6w}2Edy|MMdmC0|1`~><4@={vu#`et!O#R4P65 s*8sp^b=iB(8ZE$Cxw*NSsD#+rPu4uZkAluh`2YX_07*qoM6N<$g1stv`v3p{ literal 0 HcmV?d00001 diff --git a/www/img/icons/transmit_delete.png b/www/img/icons/transmit_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..3d72be2a385aa6afa5b281c13484cf3d90b31509 GIT binary patch literal 827 zcmV-B1H}A^P)ekg)Uh$P6M7p$3e-P5^%^+?xyvUjfULliT5YM76F4isfFHVDK9*4g2!%XFN6B*Af7DCpQ@vNCUc%g&VBcXI4QMNi;bDnJ*DdLIMWZQy5shaeM7Kb6JE_U+#I?VGid_*n zlNM1Lui=p?icA`X8&)XXx7ksvMbED5nrXDor_Rzx%SEWof?J2=eGDoR`zYBypJKCF zLg2<8C|GS%ME4b)HKViDpD>DU9p3YZu7}E06W0<=qU*t(E?r~mC|Ymi!WzU3a-v@- zqB~5dY}u2g9~wkAh&uz(H3b5J1XWd6h^~p!IJmerNd8I#XO_dwBNDLqt0KC?s8zC< zgZg%jRHW#-1JoYfDDZE;-~Ws9q-~=6j=UJKE;W*~WOTH%QG<$X_cgb(5#6BZhKp{j zzFmRcJomwydw4t^mzuipR7XPO2fsNi)E*bE^<^y317w7XT}MSXT^18L_SpoUEu9Cw zUT;X?koVlaZ@tIY4G*>02)(?^k6H_X!!aX0$up~!Nx!m`z~usKeCmOZ0a|v>At*2< zvVH3;xE#f&qD}ZV8~Ub#R|!0#cXqj4s?+II{pRU}o;L9R^CfRC`Z$vU1ojI&B=C)~ zvz8q*e|)bx00R9ysqk6qU4{YQ7DN9;I8NYxfzSSb{wQT$eplMEkq_1=22M}sZQ3** z#D{5jw-|E91qfUzaKco3QBxM2y0dl0M_pSwzt>^?{0|*1#N18>$qoPj002ovPDHLk FV1iAqe^3Ab literal 0 HcmV?d00001 diff --git a/www/img/icons/transmit_edit.png b/www/img/icons/transmit_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..eb9a3dd593055d8fd4fde39679d2845bfc27f857 GIT binary patch literal 848 zcmV-W1F!svP)k7R5;6p zl3h%jWf+FPgoK2|WJfztW3~|@Mx95@cm$)1#$hld8v!Mv87aty5y)6sfdT;niq)#r zvI=Zz3&F1AXGM^(Rah9KN){MD5xql~|FQAII6~;OxZW!%=>vrfjgR4NrnVY}6 zV89wq|G6H99dOenn=Q~?gG_~v5@^#wrvW@4L%SZnOzXjt9R5#%$6~@OaHycSHXxuz zbR!;2YCaW#O{>{-Bn79NQ<>?kVzluU#>~&93v52fx1R+VZjp)A0XoX|(O&eJ=vIpE z5RU92Y$qz0x}H9S9ME1)$O zT28X%N?~=PWZVDiWtRJEQODZ|%nvegUi*h4y3-6f?w!qbIzn_W;x31#bSKu-xK-z& zg4K!Q?Vvh{`cn?Kzk81#>={fpq@x;Mm{CO6&yd`*Q>Hnx!$eob{w|z59yi%{s(f|) zEJ5E5wr1bPw~)sAl%9nzVo@(>K_9uMh_0W(MzCu`w;Mry3e+d9-25cQu>8I5KAev4 zmpA!+qKH|uX5D9a=C7ksd|*S7+nwQ30ivr?mlTdEA-22X@ncipoDK%nYxw3exV!Kc zYhp5EK5}>V!xy6jT%;x@R4}Pf|Hk{Go5|;idqPjvko{D~WVfEN9ute+WVYtgxIJ3P zk9F}Y)5ez~A3SaGfjCLBvh!;?KR5#G^GsWhkvG=Kg@Cwq(1yx_Yy;v^46G1u2L325a7Vma8=h!7E11fLnJkQeeBl z8-<01ZU0-~cDrA5I-QF)o2_`~MuE%n^78s~a&lh&&jNw10>A#SvxXvYVpdjGf+Xzk awLby|YpCk5}c2Js~YM`9qo4TXYEl}>_8GtDHExt)FXIcM+fLqIzDV7;yNufj-%8896dxBf(rBK;5UT)oM+zt>(+FuO&~Y*I!aB_-5bY^12z~1tpDBqa5h1r2Wl0lEc{9ojPl~QfenCC?-TFN z02VR5X~-XHx5$FE0h8^nMJnVU7z6G={;ELGVwl#>ViVbU6^nM z6`Vwej}b`F@*JLc4=cQ#K>owPJr2c-3LWl^q5NaSdmX%+AiYDFAR-E{(AArvu>!UQ zvDALN)uTxHC{iAxd~Jr!I~ z{X({JY(!&`@}D3Y0@+gdjRTDT)IYm@Z2X~3|HhK?vXkiRLDkRFH+&qa%}L|v5{vTy zi!r?BDMVEe$ZvS%YyjkDXJ zV~l_O2^;Wzf09O_tG_2sqSr&!uY=L3=6NzBC#=FRlkd!L8F+Z#t8)!|WAV()%#bgd zugKDMFzsPFqPX}|f!rKuyrXoJ!E|Iix8XboB`w8j{7$A9B{rVyOPF>n9?002ov JPDHLkV1m^Io}B;y literal 0 HcmV?d00001 diff --git a/www/img/icons/transmit_go.png b/www/img/icons/transmit_go.png new file mode 100755 index 0000000000000000000000000000000000000000..10137e55cada13d8591c84070a0998b4ae2c2bef GIT binary patch literal 842 zcmV-Q1GW5#P)L|NP$Peb4zTfbw6BwM9vp8L_@# ztVP3P(Rf(@g5fJ>`Y%Q;Jiibw5O9WPy)ZQ-<%ZXTFyVmF7I0mdLCr5%95B|VWAw%_ zlil#jC5NqWzZU5VgXPd)1Va~LWeNZzpG- z9($&dj&u!|ggJ7-vfn%(Fw(M#CruiYJ<_p8W3VEEfzoB7TP?aix^sQlGpey2U&f83 z2(BO0P-TibgGTMnjS7#=7Q7vzX9?;W87K;;uV9*cRnVIcJ!j;39&CrFY1$V~z0oKk za4QX}W6X-^zQfl&KbxyiFS>oWFC)4tZO05WA2x`tiX%(9#`RGbtEX}cVg@BqZxqp; z#V1=<^Mfx#M0W;94x(%D`~8VtuXm&98j9?(WOl|t#pV!7*Msw{1g!a@i0&-jc3Dhj zaJzbJDM8&&^qO`H{L|y{{Gc@{;aq!6;IjJ!DK>#i*3OSs7Wq|??SA0y1w?m7bakQ| z7u>GNxd&5sEV=e=WVA=ml?^1L`Wq?iJ48amO6F>}1_NXS+i{cVX31j0{(Ls+ygbjb zgTYs=+n8|?L4uy_jTdRj-0b1&O#LbX6y z3il~0?`2~fuOjXCZq{8=W|xAa-EMav_2vfdJh$MSG}Gm)qhq30Le5|vuO!QvKxDb{ zHoRETFA5OYqpIrnBi1!@`x?Uo@eL~iyXwQ{(mQw3I#xl3V=ocq%G9c2C3Mkc68M0? zAMJK~*}~w>Rl08{yW&|}68c_X-IBLa;5LC1m)eUce_mZ0!s(ohgW1{HA%EWg0w992 U9AQtx`2YX_07*qoM6N<$g6IB+8vpa8B{-MRO+d-q3;Nq=BQ5k|pUEm)WqMHu)e1HsCoBnZl&D2fWC zaQI+^Ypcj~qlqjN+KQ~b2pMEyMH{Ql+1>s2yE7NkMta~2=N!)coZtD~5&$KI!t?Ad z$MG3K5aJfgx?{!872ITuZRI#lqksTdtyb{7RJQ~`I$^U_K{Co%zhNU}Spi{>7Y)dA z2T(yWOq>p(RuxZ;w1ML7gxm{mzWemI`nN(<|yr*`feZQuYV#H)Ari z1=G>vINi|>i=~44z?}aDs8rU})cijABZaAtpP*_$DD;f_AnVU~YcQ}?MFF~@lnxDf zyNq(_WL&)Po|mVtd(wFiQob0&DT1hhg-xfS-QxYqH-fm1@dyFt8i e#x0i4_uw}&{+U-AleQoL0000l0ldN literal 0 HcmV?d00001 diff --git a/www/img/icons/user.png b/www/img/icons/user.png new file mode 100755 index 0000000000000000000000000000000000000000..79f35ccbdad44489dbf07d1bf688c411aa3b612c GIT binary patch literal 741 zcmVz1iyEv%?$mbQ(# zwJpuiQJP8?X_`#S8b+U_G6=ziYB!xPAcq{)ZJ0bECH@ zYx#`n8^Wzn^J!4>=q^bltNO15ry?0ecSLkjpT@vlid!jk)Fjf7&)q_V5zGs#3N%6* zbW~7Hg=&P0&~Y(|g>$hC9FL?;ttzPDZbpZu9OLb33^e2;FNTGJxScp1&q4M+y2ntQ z?C(=hpU$3~`Thx0eHwi0x`q+!d5k@|0_WHe%sG3e-s^MM`xM-ig!VcIA7H}X1ot~L zg=MLB4w-Q;Bi!!u2|I+Qb;0{{4Q53YX6+4_aXena{nmt*!YG7ua~`qc>o=?@U?rOU znS7%>klzi*muXnbM6i@4FR@s^8vTjDgy&%J?w?`u>NYMDFa_2%0SQ(qJE<3=<8Bzo zfdU60e*y(^$RF%r$kl)p7=7tlCDa$+J7w>}DU(O#~fk>pYuRvHi1E9^msg{tLeV XM&GIRvfA7%00000NkvXXu0mjf&%8>| literal 0 HcmV?d00001 diff --git a/www/img/icons/user_add.png b/www/img/icons/user_add.png new file mode 100755 index 0000000000000000000000000000000000000000..deae99bcff9815d8530a920e754d743700ddd5fb GIT binary patch literal 746 zcmVR5;6} zkbg*1Q547RkCGx=+ZrJV#zL@SQK$qJV#CSW)Px1IG~1R7@Ce7&_JfOHMV?!rlp(uU_DLu%oT329{ zvd}^m>Zu}~l!lF)$vj*+!9ivWYi3=6E`B>+7|Su$tH+R~2!#ne6eorwU&M#{7<<90 zO$iMuFlR;n2z>v9nKwp!?XQQ|aSfBtZ^J)10wQ zP}rH=KSJQ4N-!Ms3A?4X%~8iSR-zylzlSXd_?|M%f3%_Vax4V#xlec^^VT&5JP8rX z6}RO@h&}Lqo`s_<751_e20DK|@e2`2FToK$y2KTlwyhFyPdYY*B{>w4$%B}fnn&9d zQ0xQp-T@b00q1)Ft+NxwMg`RMry#!}42Vk(RW1t-$ePmK0V@&mp4&IBO>%w~~-qNFem8*NKi5C3*h;eH{=}2kRqEdNlF-|c6B{jNg1xE|{xZ_qq=T?P)vCi#|P&Xm-dkucwL z3)87{8iWe96huvPHfK`KOdC2Z({T6vJ9pwDx$D4>d(Pqff6w7Lmj{5i6;ZyPPpPN; zroaW=6d#@oL2Fa53F~$Su10(RG%K0p3VTuP3?Z=nBA8z$uq+XLUL^QrC74`bU|!e| zr>hK{)%Q!vdmIO5Z3JIvaOyjOX`X@c8-ua03`Q&)f&%p*{(A$q`ZTTjk%q_T7>v^J zu!R-a9fFLScYlKkNBP_Cob=9m9JLVoC-?c{)eOtMnh7qNN{ejy2sM{pS^mgFHJm@(buuM4>=<5Vr$&Kzw{B?uPr; z(1Yf=#g)zADkWnx=MR%ykl| z3Ui42k+O2{bCn)01-s5Sxp|z{G2di&KT(_M6;$EI zDL57JFf}cw4bP1P$pgTRKH$0@h|~aA>j`qZ2*kU5t2EVD5#~@VNhqx{vz8ethDD-=+1vnemftUBA zF;N!Q%PBB5B=KLB#QO(CHe?;R+-C8M?ppDW>R$5`cCPq@YpusFRTaH1i9Kv;l<>I( Ze*oTy+;kdDB`N>_002ovPDHLkV1l3CM+g7_ literal 0 HcmV?d00001 diff --git a/www/img/icons/user_delete.png b/www/img/icons/user_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..acbb5630e51a12a1cd30ea799d659b309e7041cd GIT binary patch literal 767 zcmV!wMF|0iq|AK>&MHw6~-ksQ9RtH+=$?!G=zinz|BNIO*d}XYdmm2K>Qw%i9j?X9SgRBJn4W5%uAclWG_T7f?M4s9q5$`w5b| z31S}-Tq~-?NahjDw3mU5cfqF5z)+g+pPplGDyLv1f8WAnTQ+Xiw;{fhcBLH^j|gI# z2~IT;7{m9#PQ$2>16f?4#0x*vLFksSJ~;)W1wO>uQ-rAG1{C+&5Zw%%))Pc(2_k9< z`smoi)Pkk!SK)SAcOy>0d#x(Rl;b_GP?XFE#P>r%M^9Kn>j@#I>kHsrS$qYvKE>lwZZUsXcw4nFNHZZ~?%71a&2u7&aV|47ZvJKBUVO{)!ekB`ACp}1 xSnjsa#jtYM{A~v!cV^R$X2;lcpKyd7^}lwPp>~q=QF{OY002ovPDHLkV1lJ{Vb%Zu literal 0 HcmV?d00001 diff --git a/www/img/icons/user_edit.png b/www/img/icons/user_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..c1974cda745278a404b9e29fa91e0503a84accb1 GIT binary patch literal 833 zcmV-H1HSx;P)wKwNApj*j?`*x8fjj}+T^cdNV;=~VOf{An4CI`(Q%x}`$a=uBQ`IcOG~+O zhFmpv$jQAVt#pVn<-FwXyxzC#)@;^BTYr4EXV3Qe?Ah}?KRp0?|HEG!QT7K}`6R>T z0?GlfNd&N5h)SxRamGIduGtwfO1+4h$^b)DXu0o8M7BEtF^>B+6kDUTT?1tl0&27( zTPtN#enUj2hcV)v4ROVeu()d=+i@S-%91h3XQQ_&2GLH&h;==J>*q}oafY~7o8YOx zW1up~WKKQv35z{tnCiF(G50p)FLR-gi@=FATO4h+zckVifX~k}G4#+4;u7niZGj@H zRkx!55oQOPpc>+6Y1FM1A`bW&7GI~k7+8?J0DewkUh)LOJkrdTe3;U(*Zgc$Er)&@ zD+5(f%bInl-ZwzNw#9d8%I4~~7EHgs3zhUKHpaRkt%*?UWMg-Zz7eUOc8t^s*~Buq zNnU77^3>6u=K_U{g-umARHHXA*H6dCx-dv81Ap`v`JB`FJi0MFsY3lE z5Gw;{eLz-+019a$Hq}BXzXU@)LB-NA6Y>hD8BxCLDcvPn`&N6q`mxc}yMb~sKo@Ed zDbOI5^9}?Dhz0FQMoKPVwk00IILo!IfS6^eQMBJdKtv5PI+Tbj;^0Fo6JmY=Cj0!M zlv6P`lmJPo4+6tWG2fYveukB1DzkD{lX z41Nw7E`C*@hclIfDYh$GCw<#Tk~h)}QkWS=$Gv&wY2h|l6&7Q)uMmBi&Zxg?1_yGk z;>5+4_M6eEhsL=ygB_>Q-+`#k4z^f-l|x?d%y)UiW7wGPG|s;O<^@R5;6} zlU-<1VHn33^g%H_Q)k_G9ovjfnFiK+H+Wv4;+`mU!eP_1WYT1cBMG4+b^?L6?AK< zB&!jFQPqM`i@@k4u(!!^rBRBL3hHN70i&#iOH+^0u48x?v*GiYACKJzT+r-=qk+oz zUpus;svxs4gSf1jroEXH?t1wdY3Aof0-iGMy6$K8JD3_XyAT<+1dUmit6yK(! zNF_M9n(Bm#E9}vQx7n3q{&nCY)~18Vynj^W_e>bi@1BCANxml61a_7c$XmJMZk?*# z;GcZLxX)MuKlTCU=6xU;ncBCjL?Amju!Wp&&M@$uZ9p#m5yGvf5Ue8*EJF}(aLDzJ zAlPvPBtx=PWAE0I3CKlubR6lS2?)Vw;GM(ZEgZ6)VF+v#S+fswc_vu$Vh-L#8KE%#xl>f)!T)$#yRmO>TTOvB+HZ zV8!UbBF$h)Z%6VHiyt@rn*}fK8xy1uKWEQR=pEqAk+P7{#x6 x&>pVMG)#i!=x;v%@<9vjT^KNkD*ncQ;SaYr!-X7+DklH{002ovPDHLkV1noBEY$!2 literal 0 HcmV?d00001 diff --git a/www/img/icons/user_go.png b/www/img/icons/user_go.png new file mode 100755 index 0000000000000000000000000000000000000000..0468cf08f3760dc13e44aed69f4f15cedc93b503 GIT binary patch literal 793 zcmV+!1LpjRP)a8r-1c`3+>owstQ*9I-_ekzW(ohmYMY`{P6ZeF5{f*M765oC3mgQisOM;QQbX@ggAS2KgDM2gcqZA9XdZ>iF!~Vl<60PAsYul3 zdO@$k{dkx0EmyGNDt9}0CpW25-SK_A4lC2`W(<=`JkE57@PX&*6@@GQDqw`DDAt^o zq{Ey(Out`(COaJJ>@YJM^^2KrxFq*RzAhRU<&M8e2tg%w*9#|$0B%$xx&b3n#4 zkf!uOYO^O28&82>e-b(E7tlIZg-q>P1XbD?eadJSW`T2LeMI1S3A7{YkWT@r!zKv( zO-N}zjVBW|c%-j32i0RzNc%F;I4prs$%aP>#pqIKVL?pfIIhp@vQS;GLtGb-&KrG^L94A_pU%f6M3**AM

    gJ6i>thi*In%G< z11qR?nZ<5fV+Cs0?EF;*rjKIYInQ$Ka$^8kIXfoF@SaV-aWlw~zZ}ip35JN+^=tnJ XxNVQ!&Csrn00000NkvXXu0mjfj)-I{ literal 0 HcmV?d00001 diff --git a/www/img/icons/user_gray.png b/www/img/icons/user_gray.png new file mode 100755 index 0000000000000000000000000000000000000000..8fd539e9cb04111e950ac9b0cce82676f12f67d4 GIT binary patch literal 706 zcmV;z0zLhSP)%zf?XuhjnHwp)vDVV-Nit=+l<1e_j@md!Ei+v5AT8J`SE{vdFuew{g2kYyx=h3 z4xieMNJl*eP72^_-v!pJyZ=`JAM1)mw9ObhdlWZSJ22`#g1!y`+|mPJoz{^J0U@Ip zqqZgtkkAd&ArfvtoH-0%$6gp(_f$3noIl=(%W5IUuV^sBo`C&WBd!{oVQoJMrfnxi z`p#^x2^duFTU~s97sdAz`2P9<<{$Or>$7WEm>ok@v;XI(hZnch1SA}-?@Du%ST1C- z@^Ol2n(j;UQ@G<16>3&!ll!(xrPAzppcCc7J*<9tO11JKgUNwTh{fV3qSNQLtqV{p zl?^JDic_oANTpKf>FL455JRQWXy~0zr{ni=;uWj`kl?0ZFnEhM@}^`m39HqLY&MHb zCIgengyG>~csw3-cXwB0GT9)3Y_0-G@Dj_iNT<^<7z{8Pjj-G8$mMd#=ku^wEYNDT zu-R;gMx$`M-4(f9-d6=I3^o5=o*hIu90td6)Z}nDKqjN(GYkW-*9(`+1;5{qVlIle z{VnAxU@_8CDZRK(4T(g8f=DH5<}3B~_974nARdoX*pHVS=7PdX74Z47KQtd|`sH*w zq1WrFkyk7hqy71*_%rE`uC6XDL`7wi;nuvu(zLIhbZjEe_=@yhBIB183I%xaA+i=F o63H90*)04vGrr7ApigX07*qoM6N<$f`O4mr~m)} literal 0 HcmV?d00001 diff --git a/www/img/icons/user_green.png b/www/img/icons/user_green.png new file mode 100755 index 0000000000000000000000000000000000000000..30383c2de517fd22945a87b0528d2821ec4d49ce GIT binary patch literal 722 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 XHe4|Dt4X literal 0 HcmV?d00001 diff --git a/www/img/icons/vcard_add.png b/www/img/icons/vcard_add.png new file mode 100755 index 0000000000000000000000000000000000000000..2a68453811f26444e2d04da5713c9c757dc999c0 GIT binary patch literal 661 zcmV;G0&4wR5;6} zlgmp~VHCiBGxv_KMl&C2qkCXb}Wq zf!ZRmAV?dcl3`5C9`u^&j*R%u>z&8;KPY{YWGtbfuK$a=ExUB}iH8 zEPs4~N^jt-Zswr3g){Ci_UZ~2!Wmr0Ma#WbhXyeU7+*w?FH!AkTK)!xHA(%V`3nWCtofZB~;xy1Wp zclf$8!*6>HJGqJf=sC(o!*&OC`_`CUEJs$9bD*XGd(Ea)E&#^XnS(ZgInMBG4q?C+}4skYc8sQWiIn=|m_d^&hoje?QvJHqv zqa+duDl02#Y;2^Yq$CGiSe?h^a1&_01i;l(w|V?-kc=Ef7eagphr`W62s%1C9HCH1 z#bU9%U$?rx%&ZwAVonn5xl8}}1&XvnG^ef{ySYZA*K@tzyT7lq^#o0|ZG4^&6PlhR v_HFfsW4GsQ^m_V%%Rnix4h+5;FoS;pMlVc!y2FYE00000NkvXXu0mjf;fN;k literal 0 HcmV?d00001 diff --git a/www/img/icons/vcard_delete.png b/www/img/icons/vcard_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..b194b971b398c3d81cdb3daefe3fc4c5ba959eaa GIT binary patch literal 651 zcmV;60(AX}P)#u+p-Y`QM29X# z5S}9c5Y@7+BwJFTy>-o9T}AP^yYJ2Wb+BDs>L55U%nZzY=R3oUp|$2H;^T;NWB|3Y zvN8%>1@Jr%tu>zKRj7#kWB=+iBb`pWEiEl3z`=c#{QudKpGYJ`X|2twswy7FgrdF8 z#`pJVX9r(v568pj8EW`JBobkCauYjW#NI7p=N(?$j36SWI@q=E+auicCzdRW#jK4U zn*+dc940Q+;(68Ou>eE_RSE!{whLVB?clOsG4uH=3DYbmPEAc!EN^gda1TI4_KIDP zkC~GwwLwEu6S3j|xm+F^_5h;MXt{fdbp?Y>Yk}7ASzf9>a=(hy1pTz{ESD4GPbToi zUn8p)5(v_D?Jm;XyU(DbevA3_0A4V_u{J;Xtvroh7N{lr_9?AvF}iMyP#r$U?%X8F zndca7OBl&yQg?TESIlSIHibf=OnLrJl!5Cb)c$-2%hS*tU`?GN_F-Y4fn`}_G8sal z5S^W!)Ya9M0cF*qracTp_x3Mv`~+%q9VH^kcs$-CBJ}t78?&>sI+aRQUSD$%`^y{Z zU)`p#`x_hB-ZF6;1FmtHZ=4?P822~UkDUs+O8HW3XI&OoO>y%2zH!)ho*6zpx|2)a lGQ~I}re4d+k;eSjU9UZ+4 z90QP2;y4ac$|Wv@_#^)I2TCfH$_D}g6<{%&x%_W&E|0}xLUSBPb-Uf%j0$Yy8`JSu zIJqCV%4?_y)^fz#Pbd`P^79OaX=7w<3^T{$(;h0T?8^6sNPyezP`j= zwjWIh@oP9Qd7EC1rcL85DIsd_W@^d=?=OJ*&@}nP1cmEP;0x{~GgM8_i-!vgGKoIQ zgH=4y>X`a$v%;^l>PHd)EBy@BisRqBhpB-cbj7B)WEI}h$^`~%ie~AWEJgZDDXY{m zXHAOb1ZuV$&E1Qy>LAwWBXp0#$cJ8}qm%SCE&!ZA+%SI&!!WQc3u`h#f!T>~QwwJD z4lX^9+q;1x=L>;DHyCK|#x)0!NF<0xqYMuZlQ-P2qCDiuU8_Gh+~hpQQ;Y9Yg04!_ZE%SemW!igKchx4WJa+_9IUqH2;IpT3(}`$+Aj z_Rhbl@sAabH~F)5Rh8PVnjntbie%Fhr;c9#IQTC){{(bKa?t*>JG%e?002ovPDHLk FV1hfYVB7!z literal 0 HcmV?d00001 diff --git a/www/img/icons/vector.png b/www/img/icons/vector.png new file mode 100755 index 0000000000000000000000000000000000000000..a1291c2dfad75b289f88ab762a3a32ccb436c1ed GIT binary patch literal 481 zcmV<70UrK|P)SXcnW4?r|Fc?Kd3cm$;%kZi#G`Sa_VnwmC}YZ26Y zhXbnt^XAQKXm4+SUQ}H6r(?sz`|0x@O--EjU}EI72kk(5e$=!F(*t|%| zOO`#}*s$)|C0u^?YPrGY(Rf4Gt^S&sOU+enjCclWzS^+v`E5dh=Tv=F*rDQzDn?3c zT=(o=$L8ms2^j#wwxyStFa(R1K0Y&H$BX|!zZw%`2!=rX%m*7M?R@p$v*kt(Sq6Bw z+-#h<SXcnW4?r|Fc?Kd3cm$;%kZi#G`Sa_VnwmC}YZ26Y zhXbnt^XAQKXm4+SUQ}H6r(?sz`|0x@O--EjU}EI72kk(5e$=!F(*t|%| zOO`#}*s$)|C0u^?YPrGY(Rf4Gt^S&sOU+enjCclWzS^+v`E7KK`BNfm@}@+5O6&9g zAKBvY$)m!m&7tCoDn?3cT=(o=$L8msku_)Z2R1aWPW->+%GCcCp6&YIzdP%Hc)#v{ z^K7YJ3?~*XeSBuZju-!del>=P#kRYA-*|b#|Bcrs{Re@bJ*ofu_oM?2ko=BeK>W-H z8z=32_20AQMh;BOr`quUwkvb~BZEzsrh*K>3?%QCn~f89y!;>7dus_y%rZy%d-txS z|LwaHz?$24Cg64fFlxNpH$DHKxA@UB$BHX#ATglAmf#+Z|Gm3Xz&3+u5FaSsgJA$L zYJ@6RJ^fR$>hXWu(o2CbaiHQ3ApQh$Hk9rFi30!(_NEBmXg+EH00000)+jEP)SXcnW4?r|Fc?Kd3cm$;%kZi#G`Sa_VnwmC}YZ26Y zhXbnt^XAQKXm4+SUQ}H6r(?sz`|0x@O--EjU}EI72kk(5e$=!F(*t|%| zOO`#}*s$)|C0u^?YPrGY(Rf4Gt^S&sOU+enjCclWzS^+v`E7KKMKBsqYa+IO%4@TR54OoCBdg;l!e)kIzil@!~(wuf{O3oi5CGzX3J>pXB@hf4SiQ|80u@Uw1kD2a4arFd%;B zgN>7RzWVRkaw7*O26Fblv+MpNgZK3k|3Tsy26(sJY@E2`<^RCmTT9?BaAkh{Wp48S z|3FPY${7B?1LB7n%>RMnPcRGsMvZs-rsx0j7C(CCSaF37Bz8Dls^Mgc>hEXeivM3# zvi`rD!uWr$FUy}DuFO>!1^}Z*sB+cQKNYJU|F(9002ovPDHLkV1gG5LN)*Z literal 0 HcmV?d00001 diff --git a/www/img/icons/wand.png b/www/img/icons/wand.png new file mode 100755 index 0000000000000000000000000000000000000000..44ccbf812879c42cb1f9587d865bcfc337ce6361 GIT binary patch literal 570 zcmV-A0>%A_P)hUn2-Navsqo?5A8 zh}}V^=%7@_%C;=H{tGpIj5CMu*>5J=i;m^t2QTySd)}9aAppozC}++wDz`eOViU-dbRRoz=JsVlZk>N%^azhi%=xTCt9`LQjtqNFW~e|R=r9= z`@I3J^#z@aD5yBuq2DLQO#|4uFW6R5kzPZ+h&6Af&5}POarL&lA~3t5R1i7uh*ffDw@qEs=HBW ze?CI~MkvG6H-MF7r{Yv4kw_q&PNP^XqFgTHXlH@RpLO}3aV{T{Ez=8lo;PHV$Ads1 zfOtF(s5%5V>3qE|&{lueV1Y1j%GF zXt&#NI-LlGLPN>_18TJzN~Mxf*f6pY5Dteo^|P&3>(H{!KTr&_wGRQWb^rhX07*qo IM6N<$g7V1&P5=M^ literal 0 HcmV?d00001 diff --git a/www/img/icons/weather_clouds.png b/www/img/icons/weather_clouds.png new file mode 100755 index 0000000000000000000000000000000000000000..3f73eaa1445abf43c729c134b24e3a308b61a6a4 GIT binary patch literal 581 zcmV-L0=oT)P)51y3fE zx%w@DD2lfa4>~OCGd7Nm`OJhY_mM~>Zhr}oW%;_>?Rs0S*4L#qhyF>!#}6{}`ym$d z3Buv0; zoaA!3@5yAc6buI6aLmp%8cvFa6)*`v ziL2Gh4c=@vXTXaSngz8JkH?=c0QGwP-E1~<4=IuM)DpQMAbqXrbn2ezx(?O?e*s`O z?^U&04K$n0HG?_ja+xm{i>-7zeF}v_$5<>TF=>%V>`OVZD3%CgcZ}Xt#Wg= zUCanah`Li2Ew%ac_+ze_E?0efU+V~mRRp_uc%SF+e!k!Da}GxaK(>>T4DI=W17hEb zu#d!kJhZ_Kg#K8IP*XU*AP=RXAqbZ8^O3bd!-`Yik7OY#iXX4v$>~@UAY_yh#iTjP;@L2+%MCJ7r@Gr-(5aIBgd$2Y2*5kXT|8YNXTYnvze#aoh;qkzSx~sZp6HHb!| z&}cLsiGbhl-|zK$N8D~V?{qqO^0GX3yWMNGTC--eIcqc;1A4taq}6JhYPH&TkcSOXkRtuF%1?6%Xf*>H5%fVnUI3xklXq2s1tLXK5Xt&#_*Xt-03dra4NTpIp zBoZhVi_q)!r#hXE(`vOVbAUh~(Cl`*sMTt7LeUvSID)|-#MY3>WDtwRpwVc!Ie<8< zrg&z(600PURQ)9u2MUhk;C8!_&1RuitH*Nyr_;$2A?cMslF8((I&qRtry*_y;(TVV z2u!6?%{#DKt;=S!nYGz$c4g1-OHe=x}~H^(oS?qTl%zP(Xk+PIAm zi7Sv2N&-eHdh2kohT|P}R-N2O+Yj-6<1!Wk_Mg+|M4OL3ZP3__(-;ePXX44`y@g`Q zuS{Zxzck!`eFt0X)OZk~m@@;0Jau6^O0Dj`x`B6LDzZo@2@tEP-iD~7eo&@5i}b1=~CRSYnKceL_LH+CwnM`4yJ49kFhue97LB6 z_K?9#hng$~K`Gt*7nH_0PE<*@PCxEP->Gh}a5DvZ@bOOX?)&t;cXtx!9NlEZ&<)3} z>lQkl&f_2mb^%X(-$#JYfKT;${d9hx^sf@y?Y1DlD;A5}>2w+qLeO|TM!K$l1CbYv zM&oqBLATpo1JXWV2e4Wym2M}KNn}}8C?MwLa(TPo@9)C)MFCLW&*$^6Gnovclp@db zkYN~TW>xO?6B;iCv@h#RTlL^Y@a$^28a*VLCJsb}IoNX+I9LEWT6h#Ta7(sb zMx&7sIEnNC1daxSL0HPn%~ya7cr+{FJ3s+E1e`!)4;PNHrk%Zs$w*-oVG&)AW5$^> z@i``hDW1zPC0ucA^76~UCXSTw{P^d}Rz6X61K!$PO;j&z(%QHiubvx0>%pCP_1A^p zDnQ=6^bY=#BM#~x&)yTtWjA2dCtSuJqcmVp0;9xdasUzfD7y}QrGMDMk+-mS^yA+8 za$G&Ph*nr$QVk=}3M)&hc^PQ;*Al8_5^a4Wr2_fwJo(zI{9j+=Zxg9)Ryp#|fB*mh M07*qoM6N<$f`IP5ud|Np1|AOBzfzx2!k2P6f@r4BdjzqS>RTgk>`sn)j`siZP2nD{M|4%RQ;YX*@ nOhCtIA&IFQT>*yuM8zfmxfCmlqf70K00000NkvXXu0mjfD8iim literal 0 HcmV?d00001 diff --git a/www/img/icons/weather_sun.png b/www/img/icons/weather_sun.png new file mode 100755 index 0000000000000000000000000000000000000000..0156c266e4e1fbcd1263fab2c2dd1f3712553d14 GIT binary patch literal 623 zcmV-#0+9WQP)Wtv3@TMo36t?!us(ut2(qE`#u;Y2=pT zq@2~2T~yXyeA(Qqy5;+9o4@n>4e8r+MnSPzjxHXahjaKm&-eRqP6dF9|A~@^;+?rt z=H0jE_T4vTwd@82LFU{PN7lpd$oktP$3Gho==lu{2>(S8IKK0m@1#{_mk%-f(Z z+<+0WLyL4{ZOnvyEl7}LBImWjh~I^nZG{LlL-;RKT!Im`W9MTdQZ5xqr;6nfwX(

    &09}?3!+0xOT@w2!VY%$ zj|Qoisx?Xewm&q%SbjiFY^0(I!gmV#q77T0t|0EJMfe#*$tA9gs83{GdZFA;x{o96 zB^%K$7%@AxKer&}ti|FWs}2pYzTg0Ry6;OQZ&K!w#ON`Q%*5Js144tWhd>1Tnd7f7 zk-!t=?~tr%T0tsJ(--<#x2)&;s)i5r7k+}jpgM|^Wqqb{;s;8N-ZpQB0Ez$r002ov JPDHLkV1fyHAhiGh literal 0 HcmV?d00001 diff --git a/www/img/icons/webcam.png b/www/img/icons/webcam.png new file mode 100755 index 0000000000000000000000000000000000000000..af71c30610862c76f07e948d8c28433c7d338f9a GIT binary patch literal 728 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 literal 0 HcmV?d00001 diff --git a/www/img/icons/world_add.png b/www/img/icons/world_add.png new file mode 100755 index 0000000000000000000000000000000000000000..6d0d7f74c0d89a5d1975eb65c3e048ace0290daf GIT binary patch literal 940 zcmV;d15^BoP)%?%c;Y_xOF9QVIY7fRV}JLEt>l17rXb zC;_)rpe}tj`1Q{K005d&3V@NxVG|ey-h3^0CX$Y2uaOh_TG3L)SA z^5q{Y0Gd*Yk;&l@aHG5N$^I8}&tW+cTs)R7jj)QaYX>Od5yNKFonUrjc24->neX1Z zQqlo{(Nhh_`Ujf3DM$}r*APOdD#F-=DYy}~ofvDS5RWFFraSw1hv)j=0~p1#4+emb z-#PZGF)#Poq)IgqRGb6_H-zOte!Wa-f1gNt7p*Q&Ut=5B7iU_(xixy%=p8=!>AB|K z6PgiYQx~9`I4Bd`-ZH2}_By5ADbi^dQ@DgQMMO6+E7$01>qP33 z&Vy%>nonQ*X>`xY>R-KbdE9gTpT-w&@@z{Nbw&;8L_l3wQX6(ihFpr3Ekas?*N>kE z;DZ;w;BZq1Ku8DhUH{!*^LOU{T=|Q0Z9TN6Ob)~qjYgRU-KJPBvam75g{wmVTo@nX z-u4`Tqba2Tcl#FWG)4l2eAPSU$OVbxOKKviB!WMq6%|BL%)*6IvUcN65jTSPSg8@k z+Knw0t;7~vY{ZsSl2SuT(wNjF)5&CJGIx?Y_woPtcT-F8EDwi|v-vco6!&IyVq_3F z4jcel028PJmsOxX{b=yZpYPpk{{coPMoeG~c>d|!P$U~`!Ll2$JrL4CP~d$2tdK(f zB7}VL^C!RCybBne7zqKt_BQY8Kbkv?87OV4qzxtsGdSGIqBd2HI~8`<~a zaC_fw&4`iL1*lf;lL@XC4C;=~%*rM~v_fRt4cycm#h`*&k?d~D=~owL8%^LqF4e)5 zy-G2v^RV#%0fMD9567vKZc|u|GlquGnJ&O>whNqkRaOr?~jDezniMGiA0Is1o?7E6$y z7w9TQdrO^UZ4hh4$6*rR`x}%(2%(u$1ZB&!I+~0O$><|27fl>LL^v8D+8X2LLJ8+e zhQY#Vj^=+Lw*C)WsTidVi4;NA6u$U#v3#pzM?A;5+Y@BsI|v&&e8)x^8N!Jy2NzFq zEHueOuf0X2YZvuvLua}r|9ZzWT3E~(Z4u$a@=$MpT=h{@>oX?X`_K`A|M@>q{0r#kV|&6 zK(wt3j-P?|%kcIB=GH86Up1QmzU#koVQ%V@Tle-3?>oeeH4~$%5LyjC(6LjE*i%2! zaOO?i`fY5WW*JC>)w?o1@yX*!;fs^Pmq%Xhf89j3p;R1A*T_wuAT@oF&PE?oU#3}1)g%qIqTsXPaq-^2FjA^a Tq%@q400000NkvXXu0mjf^C!N( literal 0 HcmV?d00001 diff --git a/www/img/icons/world_edit.png b/www/img/icons/world_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..00794d4088a00c6baf0c26268ce127cc2c0277a8 GIT binary patch literal 945 zcmV;i15W&jP)wbexvw|;D@Bpf2#?5tPj)lD7w%noq+*50?iyU*w6AgL1SN!I(xtJI>ioRNhm3 z8y=*@c8$zNJK5S0C$-Jo_k6|Ll7+?aK9-_;S@0|HYf>1rjrX%u;FB{MepKXNWhx3c)tdmO*|ZNArkPMxVZ889e0pvz1Z#dze2>G{HV zh$91qls28kbG1mEJG7MiMzhUrQU&Dok7h|F~{5T*SG)I#1Af~Z4$+Bm-QZ|{agwxOcT_6 zh)MA>qt$8jm2IcNd=z7-0Y$4cDTf3vJ@HICtF~=Qxv<4hB7Kb&OBE~D3aq8uXgl}{ z-NV&r%qNoKYI3vS#s7WdzhrEE;bGanS0DGEO{4DI*0mjq%?Tm=CKwQ8KRy394wBI; Te6@B!00000NkvXXu0mjfI-kC4 literal 0 HcmV?d00001 diff --git a/www/img/icons/world_go.png b/www/img/icons/world_go.png new file mode 100755 index 0000000000000000000000000000000000000000..aee9c97f8232fd21bdd23804c83eb721ff597a96 GIT binary patch literal 944 zcmV;h15f;kP)Vt{;GNX|PV@wQxfRAQ-FeWBO z_okAVsCzMc+6+1!88|n0#f5DY;>y+0w55ffp3Cpz=VNHC0RRA)nx7m4J_e2fEr1D> zf$Li7b6<{q_X_|3fT6VpU}}ES1g3#EU(cKfCPFP#tOhI>gtQSn;qulcA%*-^2>JFm zr+(T4FtpZ8%})k^KL(S1BPTO2QL%$KxGYx;>U5BTrO?79gvFL~m7AM47lbE{|M1p@ zvJU{5KHA(pGTJssQM!0O10j6WL>(4&6rCX3c8K+IfcD4>45pqv>^k0$0RGbW>L~Ep z>F(G3_hpqWYSffq&yG-Z0#t0sZtPO7RtY8w81XE_$%9;8ywUmn_33;5p~)j(OtcLh zGW;R7d;;`7T4jV=PyEzuAB!7%sQMDYjz>7LEO}MJEJ+SEXMDFFKWs9AW0_c*yVfT8 zdLO<111JQ!Z5P|F5l?92}SW-(dg4!8-@ngsi3V^Oiyy@FAt+W#MZLO z+G>n8Cxq}c`;$Ecm+#=&HP9L%gkegdiWRq#ZuU14t$&X7yov1vXjLB(4@;a4kKLRg z-PA=-YKUFC%EJ2Z6sr?Rp~|N4#O=q$)pS=l!*Bo1(-`ie&YwXjm+`*$kXj*?M4{O% zuhGAMggv*$Cl@{hx*zyFSA6yJ!&%W0X~DEMC>Q=Dk#Mkui`0r-AY6 ziYp9c#&{<6JiCE=qrPunJwM|*-o=^4Szb&J5cfBbh$w7fBc$M|SUag$2d(i=0{##! z(KNT$=DD_V!?IjrCV=O7?_9~=opWmL;fW*1d9-cvk8qg2_BpO{v4zWlWG};=C;2-! z$Cag7CoJ20md|EuhSnN@SH6BZDm-yscyj#Rk@rnx3a!H!K7(Yu!lxHc)7Lu8)up-J z2HoDfaAs*8z|dL)001y@X6Owm(^b;|pVbz=yzjpaJj$ zhrpuriKefui_0DvN;1Ymq&%nwWg*IrK!Xz^eJWuq3u2H~0ra?EC@ge%+`A>6mV z9{TYo{=G6 zt@5m|4G+Q2zKv;Ch@O;`PfWArmB5n3gvMsxV&Iu>97{a!2kL74wd@!f_AP^O%_&ND zm}1c*+F;TcH^{p$P_|akvD5o7vmT>HCkP;z;;&+8tDBI;koi9eX`W!oH4`pYaHlFZwV;$>vvfQTw zM-`m&R_SPIBa^FUasC0GCCh%{h`$~db`z&-lFX#%(f>H6JD6Z(sIW`RKE+xOL+?+uQ%q z){?+F%=6pqEH{6=NzusC-*<`PZYiLCGyKD}Z8^V8ul-K=AV@SE1t4~D2*b1(9UUc= zN-;Dv#Ngl{rd7e$ZUPXC##BFmV>$26ZQi?6Po#@{4gllsPbku3Vq${Y+FAf~T}OJb zGWEz9{(zcvI&CUaN&p7GcqMG4&7ULx##68M4k(F4l7Q+Xm&>uSv4N&(w6?a=)YOC{ zoYLN-J?7@-9xGBx007$C+kK7w_2Z$(k&l}jo2#`dO;J#Ipsbc$pS#^Dy3Q&nSeE5x fGMT)t>sS8=`naU3reLNz00000NkvXXu0mjf)bGN+ literal 0 HcmV?d00001 diff --git a/www/img/icons/wrench.png b/www/img/icons/wrench.png new file mode 100755 index 0000000000000000000000000000000000000000..5c8213fef5ab969f03189d4367e32e597e38bd7f GIT binary patch literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vpg}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJKV;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~ zvb`d3Mydwjt&Df^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG Wk@)HE*94aU0000bIQ51&Z_netrMv_Rp78XH7kbsJXXkj5}*6(u}EhTgM}6% zXkjYBJE8$&k~wo`@3r>&j3NkPH_uZ^ViYwasu@xD+Wi&rA0B~OklZnY)C53B^)gIkMV>GH?=z$pP9!b^~gFb~W{_8@s7 zn@ApH3${&lY5Pu>P3I0z@#xhCrw>lCHYnVEy2^#)v-HL*#3sS3_XC!e*SK_YH_3zB zOW%mrsFOQ`6wFR_h=7T)nl=}D;}tg-zEA;I?|o!$=Q#6wdhFRg&fZ;!k6*8I_RtK2 z6x?|5nPj3F79?nfg^+mpuFr>+gaktqkuvpKo3SFEEU(k4DoxZ-T^G9a+^gWR+NFF2;*@NUk_P{(a7gho*!b8mMm|*eFTe|BT zPMZtUlO6I{#iUi(gmAAgudxtTL@9v>ln5k{_^sM^<%Nc=BNLGVWk(h$707`~APeMz h2>w+`ViYwa`U&8QX@yPWti%8S002ovPDHLkV1mwr|55+| literal 0 HcmV?d00001 diff --git a/www/img/icons/xhtml_add.png b/www/img/icons/xhtml_add.png new file mode 100755 index 0000000000000000000000000000000000000000..bbaf784f2181f9953c961d15f8d1f16cb500a353 GIT binary patch literal 703 zcmV;w0zmzVP)(EGn5{?^v(DSQN?@3iQqlt zV&qP6UdRh0^GcozDbv<>l=;IDH9{~%4GD%9!>i)G;YIO5DMUGQ=L;#nP1J;-AZkcZ ziePwAycmTjP6CBDoG67?=2lYjs*o~m`eK( zTRpi~G!x>?2@l_7tXn#ptB=R1FGcLz+De*4R9(P;%mq|olYn_Jl2)*0FGI2X}|BG5GvEE%ROx^&B6uon6g*`0gmY;zV)Y zC`56h6rwa~FMD=uha_g#ii7ms-bX^r`OCM6Cnklw2sG3uG|WzDDkn5o5?U$=t(BCv z#u7iOUnoTtcC9$bFTFiySlZS}6noO|x#!f)kC->qDOL#P6>|X!#e%YI)fmI00}PEm z;Lx_Sob2CAeKHHv5|NqlFWmBxr8jdaZK;`QgJ3_N?lhqvQ>k(u#7x(_Tk l3G4?NfJxx=;Hl9=KLOX-UDpSegn0k}002ovPDHLkV1k-NLT3N~ literal 0 HcmV?d00001 diff --git a/www/img/icons/xhtml_delete.png b/www/img/icons/xhtml_delete.png new file mode 100755 index 0000000000000000000000000000000000000000..157b5201d0cfc97af349384e73f5edd3711b03ea GIT binary patch literal 696 zcmV;p0!RIcP)vB`%|NH-brpS$=_W49+#!Tdxp&T<5pS}6j_zO|Rd&P<1 zJ)~l!PHjhqty7=OZRvz<|UBRAJ-t+5A+U3OFCIB#@g- zjm;~XcrsLB+v?fWoO1rwD9#(nRKN_9sX*o770Sm~GqAJB(2->*nL|e|4ZO__fM#dbOSDYx$ z8<{9hluVQZ{kzzG^aQ21eK6V&bLR3b?%=_L*Tj{okY<6VVxFunqUa-hy&)3eC5Km| zCHX*cK_~1w$!~G@LKg6ycr5i?x<86}L!DxoU|um7AX6+TTMI4JUf!eO&M{p2i5gI? z|N{EUV<6Kr2qqFjqyc|6X(o;fr(CfH;s zUVf@EFkI%)w)r?w`Ul3)JWy~V)SNP>R74eKG!)2vq`5KS{H?Dfz^SXFTz|2Lk;-1$ zXB&&#o5+KrnNY}_@Z^2Q#_kqw4vy2*kZ`nb9%(V5>LLbYE>aiI!nS1`>0igsEW?F} zWs$U+8@O5&V z_k?IX9ImjwYbIt;bpnl^9V-qJO^F&&j4$O;RxR8@)#nV2ZYI&oq`zu`i+8?Jb&(TS zMsT9IU=$0UXv(J_?+7Z020{!}+yrYEZKWD&jQ8y)txO2HkF+)w@eK)0AtB5##(W)# z!u(mCh(@9*U&|xREp;$7`iQ3=h8cf&fu#G`bF1fq1w)-;Ua+8S*?pM0_jvWx#nauk zoSv?oJR5n;-B*KTPtRi2PLluq#+7FZ*@n*EmVvkTK6_>Rmvi<8_ zQ%h@8K@|Sx-ZT$MQld?(Bp9R$QmIlwlExsMGBFkk5EJsf=392fG_LNsZZ$7WYF<_ zEPr2t6OKcQ6k_q_NgUpjT9;EpDosJUC<%qsSZck+eC-yrVmQ6?4&rPG_vU^g)}yt2 zN!jt2q`)mvSu!Woauj3PoA!LQk;B%sLeP=j0H+S5QCVzbax{&mAK}UC2BweXkcu@18R6Y`Y4g#v(kZ;fa03-hOr^_hi;}|KV zP}mm7uE8V%K|S*%950l3^V!3p;VpRnu7PA9!7+D1#p$UF$Z`PLEUNg-l zn-{_91R4_~8O(od;l%!|Rdb{KjT|&Qax`ONP|@bYmkz$JhW2cY>?-7NngORP(|A>F z!F8B5c1V>OFq7Fx@VE&8Dyfd&)a?G0i(w1a~i{jWpGb(#8fDK=L zuh#;SY-=JTH+w=OpA!<%{*waR$$u8x>~rp|Kh9U4T}Uu~^#A|>07*qoM6N<$f)0&A A%>V!Z literal 0 HcmV?d00001 diff --git a/www/img/icons/zoom.png b/www/img/icons/zoom.png new file mode 100755 index 0000000000000000000000000000000000000000..908612e394525fc2e52a7e9b94689c25ce167381 GIT binary patch literal 692 zcmV;l0!#ggP)m+BBgry{~j2fHLegbHP( zrgXNbr0}2;^nywdjLjZe?uxtrd3D(pZH@fFFc0{BW_~jxoO1w7-VX;6vK@ROA$$R6 zEmo;Ht-Mj|>5jUy{bQ^V5@53LRI8AgLpUm|m+15sqcz@QtVSo|oz7ArM8?pIn+>gN z0b=4_b5O|4A*;Q+vc9Vqr~%3V155*NV~@gTz}KSUiKB-uJzjMZ>5%Q#n24H!V{ zTY(LLAE*NAHZ}C#wnj%Bw5OFIkRhkkAW#kDC3j9Wm0YXRaXlyyp>#mVfYG)eC;@ab zDb=T-BCAY4LI(Z@GOTr2V_A{pRwSmz+8Be>CjAw(=gnbVWAeguvZa93JmL(EDxv1m z0OP4q=fpAK1Mq!C2`OkEn37o;m#wF#(t(8Pu#S?2f#x<~4EO{@fmm`p9veD6RZ_jp z@Au4};q&`XuKEYgIiB4((kgxOs#YdqJw0fY>9^K_agEu5+$#k;w#%I2N>n_?)YIqu z`tq&#_^p?-%K*U0^}|7+9U(&k0?s;=r=uCZ%)H9_edH8wK}gB(nUB1FFk+2Ol%BXV zHoFY`D~2x|2m%7v+TE=2L@ zAc44q=tejYU5HLZGooZ=NXsV%)bU*sTokj@jZSo^9&w{ke7#VNQ*1zG!rIRk_@ zCqOr;g6B6CM1oPv1(~U4k@Gd+5tN0(j@GA*K*busv3Lb0UyXuowiRkTRZ#85JN!eC z_8ZVW>+upx5C#N|BTv2dK_EW@%(@F6yu1sZv>T3gm&*mIkvej1R4=RyYw#mS zx}c)#2z<)=VQ1|=ux>5PwjVE+J!Q84EQyG-j9SFYV*6AQj$Gb(7!KJE!k5iQ@O3K$ z@0NQZ)>b7&TaFd~Ciolk*Q(7cL+9cB`Y;G@rr`tk5Hdjv+))zSdlF#gI!>6`zB<@i zaKYP!9!Pl&5VMjydlq1x&}37{RQY+SSBXX-w?kCLKK%bXFYU6{?d+nH00000NkvXX Hu0mjfTSP*+ literal 0 HcmV?d00001 diff --git a/www/img/icons/zoom_out.png b/www/img/icons/zoom_out.png new file mode 100755 index 0000000000000000000000000000000000000000..07bf98a79cfea526e250703356dbefdb6b80d166 GIT binary patch literal 708 zcmV;#0z3VQP)TNkCP1&*^7LC~A?iZQEu_hKZoQoXI zA7tfTv}|~Fb8b^XuP>qvDk=)P)vYKtT12;}bKn-mwHWl`1Bb)&{XXC4IY$Nnvj5@N zfekg1Y}gcI!)Cq|u?lR+A{2&=d~S$}&0ei1|7pO6jkZ$6%&{R8TNpk>=dV#j&aWqO zgE~4pNU_-giktFkY-J5_XDlv`7+j?n3mXtxgadILp+c<9cr~t!x1LM6m69Z~V#pLL z22Cs~BoIdtZHTjo7Q|_U0a2OmSF=gCGFB$RVZIP(pixmBqE!^15yd!#9Z{Wh)zB%o zikBFa!WJPvMB(noe(U;k1e~Y|r$}@wh*Ymykd6>E3t69z5DT&Jq-fSG-dPdU{SG;i zbSb3<`RfKgJD|lQC`6(Cdut1PbDV&$M=Y?U)x)A(0iQN+gAeOBg2Z6fr$_Is!%M70 z=n*z7{*s%3rO7yazIO)}qa&~o@WZ=R>!b#mOSR zlCR8M*iRy2j7!PmWiiegA>Og~W1?FLk0*NI^}`$RWDQ6(7X{Lf!zd&4I$7FA%vKvo3MEyn}kgW7+%~`L`)MPh%p7_5UKU7 zeKxyeEtRdcwpGug)_RVmRKOa~Qc>!m=Xq+?T5GMf_Rh1O<5kb|tT%I>UcLXA`~CUM z^PBn1^PPFT6{Mv!EQO@dT?m4fLk}K2D0r2Zgd#?QLO5dTr^wsIom!!6hw(dRMLuZBtjt@BB zaT@v!hrd01?e?{<(JtyeYTF;TfiW-uyx z@7AQQO4YB^XT`JBYt%;0XxU(KZE~qtmG)Jw4XwR!PRx2^8}zwWmVwx0jt{Pn+IpS(P|_Tbu6e?E2hr@QMW)?K=BY1ikw)*oKK>bI*N zKK##<^B^TqPR(@_HRUFQF=^Vv)0}^2xw|6a?ntY8`J(Q2bvPRCjdg}w4U0P3I-#7O zl11W&xAc$pA4P-&udRjv9cLJ2?yMq~5zfpjFaQiUGvbsdpDHW{W}_XWdHi%0i^1?l zC@CeQ53-lpL9#?Pj5^D}6Vu^g$XX8gsmQRIZ~#G?d>D3Ffsn5lcDOx2B+blbt%Y)u zmd#LWl}1!#5!$|qXXWGzW|ye+Hc_9ZW;gfUyX3miL^_{0m9X!z(3ay5kp663gYAUG^;dpU*NO^`PwDtPNY`;59aa3tVbWpk; zVuxsmH*G55E02L9amFHkP|sr_x1f@rmO5P$jWL$s!uDDOan~)D2x(1gz{a*0)hI!W zw2gzL&o2P_3`fG>5d|inF+mxMfT{#dFi$JIr{bZAJAvUeoZU9g;P#WW_vvhcGMkNX zF@iBpx6bV%tj^+#EGbfU-BYK3)cCP;Dqa6$U71cL4dleUEL5rx4SurxCPM|ZT_0krUkrgav?>v z%${5AXM2`+G!@P3%CvDr?xGaQi49-f`rz`wl!@0oPHeW9Sshl5k%e%|BjOP*ORa{% zkYWUd%!pN2;fx#YIP1;!BfyLfaq=@TA~7c!$FQWTMJAD!Ldex z3@B5Z6s#?;Iyuu;aT?$f~s3FYX0whHT z`tj_&(877TAy1YT)LGMQs#+!sY+$ex_ zBy0@KOcYHFj6EF2O}GI7fL$$=)t%L4q&bc3Y-kPsBSY(MWB(5g0Km=XZf{^@W#UX= zXkunz%R_YA*-J!VVa!9M#v(&6V=rW4ZXxdJXrkmPt8C{@W;Z8F>OBJ4X`&7Ft#sBYIXg0yYj> z1{O9pW;SX9MtTMoI(jBLCVCo1CQfF0PG&}e|FseQ)8=Sw%Bd(U`oDDjoAD5tJ3HHR z($TrOxzV~Y(b_qh(J^pvaL~~+(lIj9{F9(@^00L_aHp|#BK{u+VG}1KM+|t+0r)c72=i+GeFCV7F{{#LPyZ^hQ{|NrGhEvYb;$Kn>tcC52Tx?8ioh5{M zi2hxnHMTJ3WM*SyGiCqht%)hazp&9W8_*cA7#h>Cu`;lkFq@bf8nCeZ56}M*FDxu5 zDk{JzBp@itz#zgVAV4o7!XWyOQIw5Yn2G6suoAXT&IYzdCjX<`;y=3o8_V#2#c~Qc znix3SIV#)PS^rNJ$eY_a+c}xr*%Jr}{a4lrDAX)$jqTi=DF2hD|Mptg#L>dl#8}kP z&W7N>;>>CBf3Sgxo`Z?W;6Gk78JN;A8#0^Fu>Y$k8dhUdQzm96W)ow2dZPb@H~#+{ zKe~TL(fy}b{y)X@Kd1gxIH9 z(v+%Ug6Zq?J1?M$F+o64J>c^9Ru2Y#M@N55*C%%WLI@3vCZr9sYd(AZEp{wa-EER{k)PHyW=?-FcmbHklKf2sGpsmk1VzA>ROZ8EK_x8 zAZ#$!*Y!IxSoe`-=q!Bhfs8FblRb8%ZGC$xG#W65F9}*3Wf9~r5Y`)*9j8be0QegK z^BFcPq^PE`lDa2AhBsKa8lwC!e#}VDYe64K7?}K8a?k@%W;+1_Ht;>3H3RqnLHz|E z8AaFxaaGVfuDRney$2XGq_K7MuzVrC3=tH8zqug=a7RI3V=|-~VGeJ?H+6NrY{nl} za2j3t?zp0Oupq0t*+2^s8>P@sH901Va%_5UkFUUjhYMn`o1fq4HJs3c$|kBxU;ndS z9$kX3C%Z6sp~7L9`T(#(S(pnbR+wn&YM5y^d`9oLsiC`Gq{J`&*gym85N58qyVGuQe|$1paSh^k-=+qQ7Vvz{gQJ#~6HL=JBS z7*I_2r(eKOt+s&7B|!}St6eTUMq$@FgE#Q%C=7OX2(&qZNA)==5-U+~uu%%CP^LvQ zMv&n)dU|sv`Y*40Tt-l;hXF%uRall^b* zMl6_HcRogX-+hDl{e;mhYUId`VuMgacYO1Dh;fe1>DIL4PcRx zgC7zsoS#7kpZHYM5HL&GC$${^lg&L70v^D6>e!J}H0$&b^+ADS)^Y{dVy}QL8U7am zXO;>coZnw>BSU@kH)wR^BvrFLv^}GChbNq%=Ip8U)L<<#KECf)U{2S?>?^gr!9O83 z@5brG0aw(8l|0@$kokuocuSeRYUaG-cXoMbz)6cNp}%!+7(df(M*7JfqjybrAnMye zR%V#S#sr{L(0K^$4-5+qM((elsDnXS=olNkjEvkq6NCArccB50mfM?g(sd%G-^j!$ zm+rWc+MxViXyL41vzHX!_9Dy%=!10m(8VArm^XeMQ+L0&`1;$A8T;dhoiK!{$1t*1 z*bGh@Jw>gr7l8T2@p9S|o}PT9u#$=t*B!tby`19(EA*f4-F zyrr9%zP#>JbJf4e0zVw&LG8WlLUYdIithdISq6bC(4ngH8)tV7BDop>~)FFt@ophVcjSU>f0VHzX4UeUczU3Bk{D7#Zo9raKzb zcR!C-;lTdgRMsr$lzWqPZ7{34*9Ptn_l!YzT0d=%Y+oxul04w5ioX#q6kS{knflII zA)tuKk+}>o*jW>p+J{gWwY}@J_J_}ap@ZmkLC5?B;J{_Ie8zW8G6wa_&!C|PxM03$ z427HqYnDn~3UM{JAkYQ~`OLxwd%L~Aa=N`fyE;3(MzFPi^2(<`T$sxnh=2~+hA^%a z=^qwEi;wM;$ftC+onH4B^^Dt}VdorrAy^;43r&g2UW^5+dR&QHuuKydv5P=O?fCtL zZv?Pm39@6CR6pc|;XiPdX{5jSGC7TVkdkS{Yf|B8M;Qzgkb_x&;*T*KnzQ*I+!DA? z1(l^xY0`HKo^ON-uC~Qv#xleo=o>o4Ka%6Iis`#y%wgw$&Arj7i9zZ21Z|0b`81t6 zlJGF02mo4Eu#m-2MQ3lQj~gb9G&-&uOVsQ6vuvcGgZ-B=Xe47)glSk5gs3c-D|$7B zkcmabl_ZihvqmsBOJT8$=zkC*Y$RiZg;G}j_(XD3*U{+Y*Ev6hC;khFA)s?&tf)dy#p{c-8mPtH}5XV~Az;+A3i9C~!kTqso zpPtI=3BFXGj$TlUBN=y1BvG35_OuIcVa4mxLSEV4r#@FPq+qEf{RA-S0C`KUpV<^E z@*~M_g<|r|B~ik>gyLQoS=}9UvC~}|rDF0(oZltU_|kNAMvT8j>Z3gBlATC=gcM_r z#e!tF^nnJIbz+2bSNa+%|nPs6*UyN;@5p>f~LxNTbxzDR| z%Q`e>m^kjT;fy?0AImN#cA!lJYpCCL%1-Wbh_RO8g$gIarxZBoPXi?_m|sD zf^1@m96<=ncj+bMGqZvW_p@hd(0enuXO=GCX7tltT8%g9ZX-ZFivv!kEw#{QKnMg& z^>{$}U|h~KQx=_$9VBO?Ge$2bH&DH1#*gMZ0?J$M9y-?nHz;LaoX#YijQZt+UW}R? zIBAG*zP}G?*w9`cEH>IJNH&%Ub1~d)tigi%=U<2e~;FBwL0iHL3ij++TUCJ7nLc{ zgY92j#yypa#B0Pz2F!-eVI`-kygK3K0HQecly2NijOW6LjhYB4+Y2i<8Kc2H$)z0Z z#W3R}q6w+tZFUAPWgChiaM(_wlT$VDO^1^WwmC~nSq&Z{7au-51=KSnQdP@U7v%(9dPFhNv;<=Z*cO@%sviWjI8rPnMIH6%Qs9W zRxtp&GQn=bCJ2?|7V*TYP>m>+w%~}YO{DSpqJ-$#o)6uv9**M92vSP>8Wj9j*z9|6 zSjVQx`k|5w{LbyXS_Mn=V_!~zJ(^eqsSd#(hb~kgcE%Qp$@^8GQ>j%uQGtoc@Qz9U zyk=Uc{AE)+?#+!{x^zs}X)4)BmDofX&+Al~k6yzh#f10{Rw4w~u*b5Q+#jL5Z1XO( zO5L^bX!~~(Kq(`r!&$o56igoi9qLU6eP-NB9>)$Bz))jIb|qoY6Yq0iz#M5f250~i z;{1_Q8Ok5{g(xBvK+p2ELXf&t9%_PP0f3ucd|f1$^j>@dEs&Kebd849NfaM!8a5(( zvPP_aGg1%8hAPngw2Y~YVI(;msJb?Y=8P_aD#4K;bK!x{%_XE`Z@X{5AaAUv z#|;`5iwZac#Qnlt{V0ET$jf_yqrNTzs3vx&WdiWQX!3=@@&#tLW97C8=eXLN!)!0dTelylpI`6aTQ9Bn^0uhx^Lwq3r#Gl=5lXMHTL6w~z7MU-=e?Gr!QE@zY^Zyj z+kNC1_)^=uyfbK?&$IPG2OtOV62;=MrH_6|YnmOe4}UW4Q6qT!2}Ru8u)Swn;#VF~ zfa4NUm3$V%v5Y(jN|K&eSx#3ag2R$#fwn0A&uQ#SC{9)FT-k|PsRxuK;9`a z=Jw7!5!ukV%GRjb^1N}`UNQX)U7&+P_o2cAFfzaeW^0LNR~*`*1!1POQ>&7_kR@9M z^mM!2SGHb5Rhotxkk2KHa2XDSOQ>;0f#6epnlCs5fNVGM5?T7NL}Lnb5PH5t`^v5! zMEWkQYE?M^C!MbO4RzZYt;os)owv0IGRj4MaxC1KJfHj`g4>^b+o?wmZ5U544h(ek zJ`(1zy2T|jpTc&w_x#@w4`8Nbv=qNxRj$1BV$!foGpVW)Oln3yDiWC+w70Q5MUE5~ zI}=EBPAm4RBHT(6V(uU~5_020`+c2qJ03F9N(2Aq1N6R2Om}Wsdx>#*Cdl@c1^3U@g8Hx1@`B?Wwf8D=D{gSC zywO%4_yVc37)`gor3fD0vB~shBxU$FCpf!$VKOGO0`;5uvMU7@&nO+ZY6XTsI4LEM zM9P%hJsnqG!b&b6;tOemM3N6wcjl)QN~;{^L-c?R-(=WeikViJei-7Ylm741DJO(t zR%Y7YQ|IQU%o0;o!nPU=KMn6bTh{oovPQ`KY2+w@s2a>W@94?8?m)KJ0L-=XE?XTN zFxloC@Nsdt3nj(PI^LZH&3)$nfBRsB#u=$+b>sZn@B+^spKY1#@ENYX*QtN;uQ}mo zOg4tg9BrZnSW=5q{Esx8Yd#~KdDoV=2Rw2@R64EFJu;XqASmo4@S-V0%a45n1ny66 z`)pnhVxDh<>vql9LrGkhx;MSVz`2i1ZqFqG7b^o-rVaP|{-BVy5DFY8UZ}GG=~7=O zhFKFqnh&5ys|SD~^MyM}>ba!*By>n??5RmBkhkYzm*-1?F`m~hVj8{kCA93GT0u^gLKC?PObZ`fK>}0i6Oxlu-QFg zrmZ?*ni)yhu5F)KA$%%DWV=FPRE^S^r2>3p7*o%j9kxCs)i1uWlp&YZz)*&CY*BJ} zQ_z6^rq$hLSDra>kZYU-O&!wF?9z}6oG+x z4z^{Ce>8Kz>B9LKoesC3&ac_&rY|~LMsePZPSDf?_2=V8meP>S&dzO}g6|l!UZ9r% ze`f&3xFkg!t-ZSlR5uJ+^nmJuCDcQ&2a0#stTT7BHvx|-#MKnW)Y$tE;{keN_46*j z%{F3oB_Hd_N9$5pd`=c9E`zLRj_XRFy~p(#acb|bMSsLcQa#5=EvhQ&u~3ylTxZ>o z)=Jq8o-{mY$}tl35@i4;O^%0vCDCutbjfP+PXH$m_DP*Ltei49*{4h{)SR=wdcS4= zZAc2h{As;-K1{plr*!SJqlQFuJ}(3PX~Q4gg%9gSlakc%>~bSduZ=x7uY}TR|IEdq zg+}|CS7X4OKk4hp_d#C0IzLW2K(En?9+t=7?9ZL(q(Y>5OhS(5k5L#d6(Hh{2SDnd)b?DVW84L3F&oJmC9NoZD3Iwo_c$jN&M8duL3i1a@6WNz*OF0y zI#~1h(IsunGo? zc^q#a_nu)&FHA-38?-<>eau|cKPcHS`kYf0c}!$cXJK(FD%y=}*m8ND#(AR&(tnk? z0B7*UuJd^4%K*92NdnGuVQ2ml!gD_zB71D*l-hj;c}-Z$BWZ+_^S6w!QTjEQu< zl}O7a16el6=g^_Td3-$uQGS-mvyvlWvX#Lr`a%1LN;oqzg*0*`h@Wc09UVyYXgAw1 zx(H?nCfP_;Y^$3n|5VStBsD>vC=Zh~wK|INf-FdcbVy>YB9z3I=i5AZBB$V{1dIqL zE5t*WzTbEm2K-fVt!`FaL)ua@+a|j-*#vRINf~D!0`3pnLO32SqtYS*SVI7zUwT=_ zAif#jdqU@|8$EMV9&#|{F{DB;k}}Rog7R>nWY}0oPN<<6d7D#hhIg>Z5MCE1@_U6< z;5}&(ORZ`XAmnm<=^17M6=F2wd(45i;?3$~0SQx^pt+)%sshYZ4ihooCCp&>5FAf? z&u~coh3?x);TKaWIj?)EEKVg+S$9KfB!ooB*Ff0z5_``k{eo2uvSWXx&5FW~pF(x>sD`hEn?Q~mJd8BfzqPV{3>N~?z zu;X*9+I{=|>-X!m``yb0dZL$+@oO{f{hu0*9VffU<84ey~5yz-;iQ^rnV* zyVf@DN@Jhxs_)EWhDli^{*H=n<;-tRYq!jUy}T2o<>HMtHtv;sc9pJd+Vj{~Xki3! zz^iyBSdBS8g@DKugMdcT9PL|wD1J$ zLtX#u0)~f{rLDuC&%(Rm-*u5=IJ~aJJ)zCogRx+xLd=*24$}I;vF_5dNC$uC_l{HL7;nkb=(rW`x|eI_e_BJb8CW% z;u91~${>W2tzvC<<-jXJ<%P#uuF2C!5?x0)9fK*H$-H@JV}%{=Eo~3^jCmW+yX90_ z?%!_KuUFbeSC2L%0!lksYV0w{I3^y}ecWuU&ou0_s%7MCbc?A@UGM!?zOIg$c{{}P zf~FE)l??a_F^IU5I050LRIkh*R4J1t9#v#hQyOqRENn*XR5fmVsaSdm^qSX6B@oP|JS2k8`4cAwauGu%EEjrE2HXANG{-#;3(Uv$&oZsAbu_^` z7+t&~&XM0MBhx~c<~QY9na#M*^CEM?QX91)i@6$`taSscK+OzfcXiVfyK2VVg48EZ z9@stTJ$sG)>jp+49~~{^CiR`sM+4Pb)YA*2z5D0wdUj$zj`x2ztSD76D;%4aEnR9@ zouaTo3b=slo8qTc7H)t{3kz$WSL4ZoaSbi+^9ODDW{Tr*gEnd9xTy!e$|7 z{kB8_uA`VS_|NsQus9>ud+NK|Xzx=x=^qz@+9@4uLZyr4>3`zb{Yp4BOqN<^PohZJ zH}}fo3x44v)%M1-QknB43-yc$IQVjGV5A zD=}U2u8MkO#Q=0>+lIJDgURuL|1SRYE_{cnz=)|gb*8L&?N(wM)j+$@Wyrt#2cZ9s z_%yVo+1??+ic|{)Mt^0Pm)8VFeJxTrd2to)>}czZ904dOZ_w!lGi!txdi~zsEPX1e zB?}@)LQj3UdLa!48oAw(fv5kpPh|O?A9g=U+`jodZ)|t#JIY!<7@~fuV{ngzU%U9- z9(~VF$o@<;#?W(qqzXkEDv!-2GxBhy3|tLM!|U#<3>5nReq9(MFM}L>LJp%1xoZFFIpfN3#zCcsHp= zaadG|%h8Goj6a7vP{x;18-JBU=){8$A2@g!AS4B6+l#33K0aN*IK@W~xlj zkuQg48+BiZR(3$3S#fD|gLAgPu04JyPH&W14Q_CA_2{c~-&KqxGefT%egCNHHI z8h$E#ap`y7T}!qzVqCX9j}=C)iKL)f7Th!*(YV`A;BzRhZU#OzKWwN_hV#l=et#c> z`}US|9v=0ImK`l)mTh9}2c>9yGIC_IA>^$yZlg<`|O(DQ?>1KU{v}}&oXkq`>7KijlSGEP0 zt&K;KR#=I$uOjLWOi2kSK9H$=ZuO!em>LY0Yu@sS$bBDALPcf~c?l(b#%6&n;$~ezptNJ_r@m%xUdEEOAldgXL3jf z?p*U+jd0K!AIz3yslic4-j-G5zMfWwBAoeXBnYzsV#1dA6P4#=D;q7%#zzKu@ z9Qb|_@~xi82oIff`ov4^p$TV-HZ5dm2$+Zr<*?Z$de<-~k%HeJVF=j7F3Yzi4P3 z68>{Y+W6vxsdewUMccG2`Us~q-mM9dU&=5q{nFzp%ye6jiOD$2^$XS>@owu)>fG4? zB7uWP_2Jd7ZENmmDpV;sA`FQedSM+S9cV?KbmUpn7P}zKwbkSHdkwwq*;-|0x5fD< zQ^G&FD6S;Z3+?<#ExyFm@by;Ka5|M&(xtlyJ1>VLR!i!e8Zr#dFJ^hN4xhN)8>G4l zMm?qjn%(tA%H5}69w1AG6AE$Bi`-wckb^^$DXx;Lxs9dhr>U*p>rjIG`N8r`#^?4G z8yh=ck`9+4o+cFROHT}zmg$%~yBIhUM4ml<3PPq@RMwI*Ni?T;B5b*wSV)!5{hb?v zgn@4qU2DZ@tJ6eziaTClh0cG=*>Ame4P$&l9M;NKJ%G4uw|{;ST>fH4tcMZV$*#*v zo{8<*nIYm;xzpUi^Q+Fx6Q_2jvcpr>(}p$uj|Y~b1WraFt!N)z!sj$c6&&4RdMrv<80o6W_Y}4;WZ-em(jkE^^lM?fow4&4Wl)|;RFr>_q*wqbXehgkYf@B+g>l}!4ji$8F z9+a$@q}ohHq+FO6)e4{b>p3YcxX?shzz@=b1U$5DoeSozKcB-?YPa48=eQX{ z-KPm~wgkDM`39?n1Z`U6)Ki7sdhM>i-{(> z>AHo9i+~)5nnd@rTtyR4@pHYzDfVW~f;cWJkMDIa9N1+qI;T;||IDi5)Ug}k7$gPR zVsTdLH}a!`^2fN}^KI*Rsu^ZGpW62qYqfD^&p;K8J3eS%A4j_Ja_+E_36b-K*AnWn zYwE)>Lk^^dkV;f;o|fiJr!V76KYVkBEvk&ycP_E1UG4lTe6xQ{5z3iHL#G?`O#ltn z$ESVv`aaz>;(F~=jSNBJ>M1rNf0kD~sRv>9`FkN5b%dFjehD3poW_CDG?k5de#}se=ZK&{Q zB~I2ek_4NV-bG-k&lVYUB8{#L^^vtN>(?4==F0}6SX=1_h>@$e9VAfZnV-7?ag*TY zRNdf0$eY(k$BzjN3!k((73Y!oS(y8pu@!Hd}&86c-ngkrsDX0b7jt z0XV~jvCp-BrAvJ7AE?LzDvzN}-O$ijsjgH`C8-PoP?p=Ok_XHqc|lT#U0t z9XV)YwJ9&k-$~?;jv`6#Mmo_>yFuZfNw}>>6vtxaY@OW4J!0ucu+RewK?(yhdTNtx z8(lPd=y=x&Mo<+MH!$S`?CiLyo;Nwj+R=^FZyYqbDy)D$Uc4$yzkl}~-@hTo!F?0E zmIWTg3za(XK=0>HIuN%aHjaQn6SXJ5i2(&{=#8T92sm@j6qM*c_8Ec=^lUaD?XH<` zc4SF~6*0us>=i#dzck-U+^uGK%T$9uln3@1>Zs~Pcq#|tvtGOv;A;tWV+S+ku1bf2 zC)oXI1ng8j?Y#-0q%iK>4?=FhlS9BY3D{-(04izcD1N9)Ba0-|p zf`o(?0Rl!ym1Imdd8KvhrKYyr+16pYz_hr%$RlNX@WgkTn^{rO;q$q3>-+n=+wuI% zVSGZuHtCd@Bu#qWiS}1V%!ypDYm{G&sZyNd?eZ3+Dbn-4BoA$#UI+j4SPfjw`=Zvn z136VR@^cdTm2-e;x#zLOK!t-s8d`WY9vD_9>jISY!*`DdM1L2T!(mdcS$k-Dp1oI( zv;_JdVrl%PG>?#Uvz^~rT{Ru{|$2F(X=^r;7DN zoBl)&ulI9@iIN)!v=NxbpbffJG%{Z>wuW?YKXFdDEZ5llR7Aszut zA~+1bUKLA!3_)2n9 zR1e216yUvyV?-JOXy_P<|NQ2X_()vs)I9wF9Ra@Z8VB4MYb%)duJ}E|0_SgDk`>&v zDK_Nh@o?Y*e8`!wyhRNVJeUzM6eAQrGDeDl#S#*tV6Xr+3fny_8Zxzr2mR@KU&W!& zfm8du+XJ<*z#Co$j4aShp2>9TgH$J)QIj4mc;)k0rWJ^u>V+I9pwhP4~L`r2|_%U;=RCwtEJbvj` z-Rebo54%Mc{GUrVZ{2?sfMhFgdJ=Q8#=W0gXM28_K$D+ZZYA{WYb-UHC_=tOSbZR~ zduT;OoE*(rX4o0}X5?opkbT>X#>aM-r>(vdDKd-A)xiof$uG36Lb$jgRQXt~HQCR+ zs&1XLvKb8$Du6yB4ViH+hEMvL=ID`)>V)0F25Hfl^&*EUbS*pdHu6Bym)MZo%?~56ebbZXD;Z8+Iw+^S6z|uxY6fCE}A%siI2G#x0D8w|M;A* z@{l$*lxYZEt)5??=XH;f;!?FRsSN6`nG8M$4)%vgPxVz}7$^ZjDM8>sba`B>BKEO_tN3X`28MI;^G;|4J$ z7jO4f{-f}KW~<>@g6R%O`A;J87{@qt?tL!Om-G!m}Y4DXT(wGJvI zXqS|EXqkDmUzRC3$I>@YwJ{RP`o%#K`CbAb7m-T}`lLfU^c8BCs+l#KL}#=mbhIW{ z=(kz_1&k4xIP&6nezi_lD*Y8F^-INwzvBI!Lgl59jV?~IqhAQdyIYcKVBIcFx7!v4 zsB%;y-8jV~8InnK55VUmXlJYhQ!_#C2}1PBnr@qeRE~Al@G5N^0(=s!&EBQUrW-rR z>RC@QlnbV{^@u|tqJ{_2);i`=$j9O3iWD=;90TTv8lm2Ht8~x=HjLqqCQZZVN4H(` z?+hAp;ha@9QJo29P5udSWjYv9aqUZxbVH5k(h0T(@7@Ti4BO#zs~BN8H#@Kaze+aX zC+7wN+^4+e9Dq%O2G}*YrR`8b(=1`1*I3KR{1P46cWsIipx+gY|)Tylazeis9jkZ{l}jKrAT zW?E~`4*{TwzlcNtftXsJw6G-@%qXQ&iD7V}P6LP5Vy=@)uAp>x4V}s&42IbYkB9Ic z@oEY!71qyuCr$g4(!Kqx00T(g*=(gEm6a(L%k$nC{P%{BMmOcozT^lIkI}&ROm9(jJtB}H z!k_>()pmGO&~G>$EM>lPE)P{!vx>~E&{Q9>-q>JEDN9mdVkzf6LMipcBup~#%W?P_ zpC@?P5vEr}@_~nc#CuC8#lz9K6`%tjfb3QMvcD2v!sFhBf|xcZD3YyF?2K{$7_Bpqd>Gju5#F`tm}Q*vr3}BP&2)r) zGGV`B;+L~T0q=Bx9W%&1bWYTs(m4H`KR$VLOK8lP|GpaKYw)HF#Txb9tv5QWQSW0* zw0uc;-u?PUM+=ORIAz|Bw>NubQU zXS3M2DY6Lccd}&Hl{WwSF4O{idj#4q0rSVlGCY;yhBZWA;URg%P+GYp(fHOXd^KOk zOe|m%T!~cClW0ouPJCHuePCYz?vYk#zYa~9lZf_7%Ny!pW(MZricJbG2ww8!ieOU z9dyT%MfW?BI;|euqE2t*;)eTjRn&exPq`ISK(0Y-mjSN5x z`e>0fJdC|fPNBy*c2?G!(+hUg@zkGmeOa(6S)i#%P-tmhB)n;&U3opQ7#cfCmk4i; zRNY<)Sysxr6kboD8hE@AitJBaD%iRrO|FEH^4VYS4D348&wN6^B`+6tOX&U57a(TO zr^bmZXURK}k(Y#Zec=+91I^|vfCn>JU<$&%o{rH!LC52gWnE7l$5VfA-Bv^{VB%_$ zIBBG!)a@y&eK%H!K@rQvO`c_0mX3sbb4R~rzTe{9Ci97r`)DHGs^;Sgx*$|>+w^^c zkfS;LSJhbb3H%Ic+ZB_GGApp1W;S>ILSw+H&`9XTkXBK=`PQR)qI}7->?dDAm9FpO=w{iW1eFlNK^W}$KFB9zS;$c1q>SSVAE2u2Ep;_dJT@iA~9ELx+ zle7mKeeRSS$misB-QsJU3^xQeR6#{`|2YF@*z*3$#`Fx8Ch;2(X52*>E?7o>%sy*T zO@|4gU{w{Xe3sE{=?6ij%+Ac$iC^-j;I}q(NLM-EC2PHxDTz^o`C0^iOh}EhLpN%` zpOEf%n6C_Uzu6k{CTuk)#A1m_mxPNi--Ywhg(SLyga8g=H#R4Jekk|i3LaSv!dxpH zIwZC1p7Ek3-_c;)!_}ICV9sOWnabg=_5SnNzRpd)-@{_d{sc6()fXz{AAHm)yifruDF{hByGt0(guG09^GK0CYuUtc`|fR8f0~cEnH#b7+8wzf5T89PIX< zFqu3)0R8x?6Kezjwk&TV-Xvw~E>K&aPUp42OIQ@u`@TQN@rF1>Gbpl)-HH^53Fmlz z!xc(21#nf(M(}R~iIe^x4q!2ohMmYF#A@&HJeN)QRP(v_iU`(>T>tZ+xWE1P=Wg3D z$n-mHD=`=a2BFfd*np}%B_LK<|5h4srbB@;`l&a748gMq*tHS1@WT5EhSL2J3>L#B zz>y6))+N`HD13t8jy7xNhS+HH-1Ku-mwg42*LK+Sl9ke{JH8CVKY*IQuTe>&W(pU} zBRb{@5FiiyHuF+vSvJ%5E{4?*Fx)8d5mHaz+shnQ~>xYN+AFdE|K!Rm~YWWdtJ9;&U_hn_l znE+EWr4onYX0YjCBk=<8Cp4?Zap=N(QJi}c7rB3)q}JTmFA(JiF5&IjXBjV}|2iCs zZsa*5CQ7BIDZbdJ)rQt|K<=vp&~>};g>K*9@t1jm&vS7*MCHdW9vG#l6>R(q_eiuK zADRat(+>0_g}kysPfKueyX6!cy3o@HAq*FS<2%AJaX8w7nfRY_%x~r8eNZY%R`rbn zXUKtWv)SA+(25C*4c#HP#7m^vGN6;QB&;IT_bR%85P*{FDXF#BmAX04E}m<%WvwcE zn_)2XH78l==yKkg9sk6X%LpZuP`xJs1Q0{BhI~65bB-eGG8*RsY#E>~=>Bpk*;0&f z&H`5`-6Sr{eIeao!G!w={n6@Sr98UDrC}#HX`qR&d;ckv^aw)>^?;fu|vM7Z!Ddg4xoR%P1)Acob;6y~0-!}Wr z?$#c;`bQJ(M)Ln!P7V>RMbea)mk0OMBf@_f;Ir!VfL*GxPD$Cn58|;y#FMawhwmw@ zO^U2h%@~d+LMd@<%|puRKlpT$zOyc+l;mdPR0Srm>zeuyUWFFF|Ms3sE{$_;>^wtK+Y5*X@7otA{B)>;+$EzMg z(E9ga>P&oplLXh>b_~8Tsc61nS z`4p43rIV$S!vOck_P*ou=looAlr^kD;C}JB7L@PW12%%6& z2_oS-z+A1M+_a&g$42ya=i~6%ol%(uIFLCYO@AT{$Ye3`CT%=8kvITbHQ`sO+K?uD z>?`!Fs9u>FE>khW)cXzCPJ3`>?y{T7Ll~x0cd(Rn#8?J!L>41rB9R9s??J zK>-om2L%rnSyDt7@qfR8!6hVF06S@N#LTWbBC1>_*D^EBGqmZhcJ*}iy&+g6vMhQD z?jt-%S{hK=Ob}XW<_k+BgtXH67@eM=q|F^8o+>ZBdVre(@na4TGR+8+FQ;iZ=XF;4 zmdOro)33KMUw5^%OL758hfPL#cbW(UN}-ep0M*J0AaE5a^l;(CxO)2Z&(!wx-|*D6 zygWU@%a}xj-H_eS3>|#@qeVh18Ka*P_R*@dP*>71`~jV$7diK*%=~kAmZv+E#^(e3 z#CZ)mp_wR$FieZ7&b=$rw~PuA$^{;pqXWLiYK8r~ov-pO#W|8~teV;A-5q*Y_MaBnsajmv`Up7c{_Q87qkwG3=>-MpCvhMXDytB`4xmiuhI<1T_M)CO~2ThvNb+gU|gvBrK*)o4g(O7{#(Z?R$9Os|lf;;Bl<2y3~SVYTpR=)45CT1y{F%qr(eFH?8OZ|o$} zqfIF*bD*3^l&D@WW+T2ZKbuv0HW{Rj*XBgZGa0ris?HJ`&4_L)W#~SA&_I$cAs^Oi z)nsG$OBB9Xj*9}D71}C|BU=Dy7BL6!>?Q#2X^pzblLaj%9A(B*!oA#}?AmcA-FgE$ zv2Ntfkef?9xE-{+QXKY@Mrh0@R!F2v6qO$8i$gNeK9OR)wkpLw9bk@c_*P{$?oMI5 z>`)q&&g*|7p#z-C-&@lR&hAM()7EjKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}003NjNkl1v7=g%2OQ?&6XrpYoQ75|_X zrVvF&3vE$QK}$2xMH_L5f*_I*T39KxtQKYzNeEGaRxo8|lpy3LMVYRR4vK%%jHBMu zV(!R{PPXyge4O{3^W5+I&N){|DcNor0q%Dl`R4+4ahz%29Dqcy7s(hP3>kKW!iB}j zwI}v$!)9ou@%XyoS?!GgKmanyXcd;U8JSmjh_T^;F;{*e6Qe)mgJ07i5tp0}FW`)Y z3MnPuo?crw4%F7sQPw5R!h`_>`xUVi(N(PW5Zs}x&8 z0a<*mk@ka~ENOqRD>eW^_g=8N9LAh%x-@s!Q z#(&Coe-G}G%M7k~cscT&>z-ovcXtr>&B2&v`lV( zXyNvmPAq0qWFZ2C;O^UIa&jb}hDWI^&ZqjYn~any2QUL@8=*$P0pRUxQvp7Q-f`?` zv&LWqRd&YWG81(*OeQKq}}>x8$jO?8%@A{<`XSSrSJSB+v#|A^GAF*B2K z6J8F+W&IxofcaRXq1q7-1qcR0Jn9b-3@mISn9ND6ghLE@dMK@|!D3Bj zIT$&gTlH1UOijdPssRe%23ohsZ2hI_F`<-b8}!%;H0YZokfQr%qrHw%xgJj^{Gk9j z2{r*N=pTF*<3*p}IB*AO(#Na77oZ{v^(82$1nAmONmMO*Y)X(|q^H}hzW@LL|Nq35 zPe@cj9LGQJz5SzTM&bJBDU~TGwhAT{rHQ1XL3%I<%uYd266QfEBI=?QDN>Mis7sIu zMMa&Yq%bqlOu?X13`KXvRm^QQbzR-*;A?s7nx3M8VVK{{eEI#E`Hb{mApK?X6KJC}U7Bde+@0MaF?dr}?&jCH1x(s6~x_$l_ah4SFYB$XX8 zgat{w-9CqNY#GCu9ask=NGvY%iK@wY{*bo6yDQphB}>l1<5{53)6Sv#5gbhy*%^Ki z_qYQ|_Rrzew2R2NU6O1H1;7#+wUSfW7zCgqNo0`C<<2@vHx-h9v>F;A)(c|FMW4Nk ze&;jH#vopG^-x++Lay~3OY&wl0DT%yRe+J#wWE?^lm|Y4MakYmLHc=IqxN<10j4Nx z%pXyU#S-|P07$Z7X1Mv9D?0UX0H7sPXp1pC{un~6322|_i37nX1`~Bp2mQo1Xfj~a z8yvPltZDlLAzgK|88t3B@I6Zs=HL(;YCVSqesT-Mk-t<8tD@vQde z+x1{wePKL63DC4^P5Dd2x3&K7c={Uv0RR8Am}_hlRTRg6cV>3GyM1aY$kH}dYHhIv zS`%or*ffGbp*|ogiBi-L##Tva2uTwY1BpmznreN;L=qn%2&4)4K}k$BCYCDi7E3_v zgQgZKW&2>uc6WAX#t%EQ-EOsBJ>Qh8-T}H(vgD;e z_E^8xmzpIr8%BIlJ2<&ams;MP)*x@w>l`}q5|X6c5iORv%U zcnoj4%INI@#yo?@wsm{O*}uQT>m3WYlGEh8v=XJq*GcamXKB6>#O^YGzRq@3d7>JIc!fMvh$BNWhBQ}j7UGlm)0G@fhAis&hVq@H;XmB@riq z+r#L(j*ueyl1wO{W=o1HCWS_2D9bYYfBvu^;NkV#dG$akimb3IV+9rNQWh6&KntqV zlJ%U~M@ZNe2R_xyjgj+Q_q39C)k*#vpDh6f&A>XvA{j46s2x}UAY@yh@5h68gb0h# zgDMwX<4hCXN1XOY=q0*{S@Xt&ZZ}J==qC^rQp~- z0#;QLv&yn8A!jUGWJV!jMftgePASeT8|^;5!`pZ6eE=<_;$B|)|AV8U10p0jl3SGf za_Y>qc5_ybHtgO)esMW#HorzF7>FxcNV3-Z!+W>fE33dT03Bg-U6KUxf zNPkxc5N4fNp~ejVHew-FB^c6iIPCZ*!t)lCl<{(169;#$CBczM=F&p`Z2vXVN7F*c zawGu~nDCR}bWEAVH|{5G!TqRy-;Bazg&Jo4nL0zY94*`(v)N<6OE<4OEGq+AW7-?> zoDolGY-~xHqmOkp@?y*cmPjA)Rn%_+I1T(1^?o9%Uzb_wTUG(Q34CBa?*jGF@MsMp zfOeBmtvz=c*k$5vrrG9`7`PO`IpA6p0#}+RxWpvd>*g5G1FKC4{T676xrLF;`R@Wb zz~~gro9Qscu?@f}^YcPrXuc8eaN7j`QfsEMQJiNS|IIsludnri4+ySJ0w#ulfhL5s zq2;JKidum<1Stxwln5edbF`sVnh>Z|l_cc@Rk)HiEwpL^ag{!jb<_|ENx+Q+EzM4y8i|3-}j0LDc)5tF>L72>Fsv5d= z>5R3Y_)!$U56x;1Rb4)7-QteK^q_RwY2}ST(yf%i@?@Z@FHf5KdV&=T_OPvNJ~wt| zQ@F4m0ukt`?4_C_QGltz~vJ8ua9~&%$>q9c4o) zc#=_8FW7nRPZ_A67Na&K@u)n{6lkhZ^GA;7+PM=9Ngst44HJz<7?v>sIVp|ihFZt! zJx3`X5kgbJTjiSrkgBPiqPs~!m&-Qs`;*HtC3nGvV(V~D2hZt2-Eq9UG?}2cmfFheL_%$(xH7oe zc$)f}%J5U^Q;!F{PP`tWrl+Z$dzEA|5%$%G)u4a0ghry-`E|>(oM`TkX{p+idztu> zkNIWOyFj*eJX2hM=d#ERX-bsQi&wI- z@O|dxY~yfFE7NOJ(PWK^T9wgx0-;J+6p7EX{74sV49gVQ&9H8gmxbr;6nUI9W!G_h z>B9^nn_YP-AohwDPO5D>_P+svDdgTFrs;7nyZQW|ljhiVd@Q z9}okr4Iy zGTZmPi=rvKI&LKy4?l^fh>k~>qycTCX4!%y2^#%3sr>3FRc#eawJlwn^Z5L2@k}>Hss63dkGsjb8M(jKyT7uDP1Smp(#v))0*P zF$pur%CCT=(jK_O4<~<@qJn8WK6V+Vu>7h9TXaF_PPlO5JlRR2y_Y_D@lM@^7dpY$ zjHSG}ZZXRitwA-(-0+@Y$Fc1+`RkcBek_tCP&I{vr_Pe)%HuoZ=TSOg0k(*P_7-oi z&>;{Al3Flfa6B&Wjl=iA<&q=?sz2S}?R2v%i^fyOxH8hu$bxAU=1#^XyJ-8$Lo^&j zlEmE$U4uTimW4D_7v!a7w2(w4FyEY4F=617Hj{qiP+==S+!LoXMAw%g^iZC2Y>O;tLKkVLz%r|*!R8Ji`u{VHHbQ_TbP zYi++|!zjd5Md6jL$H~eoh=0EeaP-!@7zpRr+Y=43pC%;EpMvGnGuc_L^)#}RU_`=f zIn>%KX^0i%dR1-J<4KBZ#6)%e6X?sJ_|ewV#IK(kgCs<^HdD{a+-%{w(oDX$U=^i{ zo=3S`c%e8NEBKw&TE-`73h0d^P&oCJ*0|Nm)Rsg)N8tBfFP zpWf)&sAr2)12OV#LvdjokLgdGrN90`f@}Q3;HfJ*lQ;Eq-<5g_+HW|v*C1`1_3OBe zM#j=Z!0=VP0h|EV0@eEYzr;G*hKt9-U@efY(>S-`W*FMKuNhwd&JY$BJruSAoAk66 z1P&%bfY0k_?seejKn}1B7^&mCm@#JzpF0A~0iLDncREXetH4o1j5Y#$^!pqG<{Cm_ z5%8Su+2#6QKadumf(EjM&DUw}USRgujsEV1s-@@#`o3-h@2h_K|JXVA;Hr-Mj(_$% z?n`e8JwOPskN{)A7_eG!449PIE_Li0zg>IA&D2Rfby_^ZO=_q1geLKfoiwfOPU}qK zI*xIYlDM5hXd7Y-1soGUc*vL_VP29D;vpnm-N!j+cl*aVS6p3Pfk2`&&g3_9=iYPn zoIU4$_qY4|?eF*9{lp~oKQVFCjEp9pda05{T=30%kD2Qa+QI0x4%mf&aH%BSZD#+6 zPXT`ye1nF9@#9FjsmwJSoVZ?*I;-~DF)=$@ey%q8GRC%>?^^fNh;E7$l(GKQ%Y^O1?9&ec z-_JV!TVPF|oM0ZZnpqDV9Plno)2*M?WM|$_Ywfn~+HM;`5>snUUE>_=P}mQr z2tnuJ{pn=9Hw=(Sr+Mb~pM7!sOSk{@&dD|H#aiJCAtt&W9kzw7^{q~?c2m7-NlBf# zN^8m(hVC#@%^U<~zF>deu^|$p{?qqx`s^Y8eajO*Hym~dLod_-N`Mj6tHj2@jT;>1 zi@4xenA)n}d+OJxv{b!Xsevg=)ue{xRaL(iJr#lO;nAMb0 z$^OXH@_DrO?8XX3F-(&K?{8zujCm}5qm@O~-M)(>psmxSFs43JTBHln%zM0c-1VKV zvBZk72zYxm8u|S{9~GDd)PMSJv{v-Q+gZ11HC9;k?0oFX;(4Jt7*GEc`TTO|iGgQg zKDX8(6$*W{dOp(|i!r|VKgh@K151(m`UXUK8lgeCX=#L`ra;hfXde~hrzEu#kIt@L z&c0)tFbhjCLlIg&*hY2T)KoMaiA0PjZq&vQ1}(d{Q(RoBAL{eO%+8ZwKq6rii@LO( zFiG}>X>3Rg^pi6^297IIr9~<_8ZaZ@QbWNUhO3oNZqib2teo}x$%<*$M8grQaaG+j z75#SNS2b28Rpz)MH^j|e{c)mQ)LJ!Em}P?_E)rx)G55)8dKc`_`;Kf8p>PpKK>@A1 z-eyw$bV|bGi0gg~JHmloTbVX*F$=~m=bhv0F-)5ihgztqpFwp;2M>POGN}HO-3FEA z3N%PIb(EPU!&Y8{WzfE)Y4m z;Z=GL@4sj;7q5PORA8X+Wc*01ek_YV$W+QyJ5R*QR>un1FU)nX`% zcb9yVYqqUIC<}z&2$k1GNZ__-ZTFJp)gK= zckf+=pDPNjdO;BL1AQUaWJBW#-mFUSdO>oK3G9sv;&DyavQ;QMiq=Z@ecWOiw*3U~ zjWGf9d#gr1n=uUI-lF2dwNqy{pw&<bUBihAC<81jzerdTSN20dX&&CWjPWLK*o<8G!fzn zw7z&SAOF!%FxNhL*NARbQsTMpy&Bd|9vACxnb2M^C)`As{IRxBQ6*Dvypxk{NBQvw zk8#&C-FPO%JVDy@pTDiTk7dV;>DQXybShe(ujb}8U4(5x!cr8vCQ1b9QVlUB*nV7M z0nsSbSNJ`^Qi4a9cM+0;gem!l|1QVyJl;PliCAGeUYSi*Yzo!o)2S$$Ou0P)tu)f{ zP>zdq(uEi6BGt~mVJMjIz5dr1@JfR&tJEJBT`~JVx2%2Dm^QhJ)~Ys=VVAd?TPO>a z@W_>aLP`z}zADcp(SD5m6FNvnBr9Gxjpb;<@*JQ5BBgob$x2K|qlD&$e?3i6X9|=; zM5BbNYIx<&YG%~UrJ;5f<4Y%F8xhi;i;DLnlPR>6155cv8j(D4s++=Cl!90!3rsyi zFqaJlGfz4tZ%{tozUS^U`#1dvK$s@8SNjWSr(>yZsekvms=fG?` z%F#xL;&FAoM5(QQvN#!8p31lLPa$G?B{AMAzoFasQAxyL((8|RcH+`Zo ztoDnkqq4H{qQM+U{lwdLFYP|C`L)6BjimbOPtj#LJpI!BM8gFGW!IQ9xcTa3l+?}T zM6buhn#wT*Lm)6Qg^31SnIi6-rmee`-ACT%@Tmiw?CT)u^ixq>#MKQ`5W>t%Gysi< z$AW{CDYIV3#%RHun4Pf^rj=@Y>xEw_H`SOw!Kj&c&uYH#jfI?z zpJJ9bl`D(tnZNuFLIveRvQ(yFU>Y{2FmYs>gmaeeR0pT}4{D&@gchb>;OGhs!WMNX7ecog~Wh(7D?0 zr);b9#I!rc3d~3llg^v2OP@W~(7E%qErvDJ+0{}~HD?hm&3owD`!3@PEt+fF@oXJ{ zArM0F=6ickTB4MsC|1CddGjeNs-vo6I@M*o_(jUTMr$UUE3 z#^sGkYoE-JSz~0{#|%5VON0t`7>2)YfYhk1d2Y7Kby7rPC4A+@P1H=9hU*M#*z6$f6&?;?FWDO-)xAc93bq<{ z>;qv(j$&AS2qDlq6c9fCzxsOSIjJC#r7oqCP$Y&S42lY)7Y1|4%tuLtF!=Hdzocf; zw2?m3#3!d@me>d`#v{HokTOIThfCm(oPQc^^7Gf8(f^j6?o1S@Vl&*709#|4H^ z;dw4@T6624uIBcKzeXw=L4afC3~ zy8dN;^5U0C_4gvBZD1F^sgTTuNo>-Vep)X15^^>)z6d8SZo!>6Np_^VEJ)(kM?=1s(3 z5}OyyOkg8>6P5#6pk-R(&76Cd1m(A7or?nh%ekENXBmDYm+P}4Gdky!;M^7~f0k{x zg7VfpWvQU-5dNlIn}YMla_V-0hOEZWzyrbY>w!0u-B7m$|0m<@Ul}Oa=>5#mO`ZqF zMw?H#3}?+Rhpf+|Z5fIERyp{;qZE#v7{7yH?BxI0JM-wes{7u5_8IP|d6q2M@;o4r z4H%m+m?037R|v*Hc`bz3)FGt_2~Egqnn$1+o6wApOl{I8q?AC+(1rjnVK5C4Pk00a z9_2}vHCf{w&)IwTk8`ecb#*06ws2?`d#$s4eb3Q8_k7Q9@87WZ@B4dKGT)WVcftIl zZ-3Bj*oH9K(Y_8tn1195(*2`?9k=+l;Fkb5P$WSM(gTLcFum17z)v%FVW`L;Wrc=T zFonUddk@GT0P9O;n8)={03Uh}NDxpw-8`uXYi6VCJ6$sW$~U8aj^-XT4w_cqeEx!O zqh?I4{|$U?=%Fml!ut0N8?~Bk2p$WU8ppL}hyV32wZssDi{DAZ{CeMenS09G&;UEC zGJXCKz_2yJGMPE*gg^^Z-;|HcYYKvV{SLzVpK*XX5*!1y*Q~KWb5}?VfAyZ zHOiHkAqOR;&NcU~sG_K{j5Ag&rRmaToN@6|l&dbV3+3(MK=FH1D$S>pL6o4viR)Vm z>ddg#T$t6%%=7?rwc@WLmBuZMb}eoy+a^03IhNWj>qfK)RTbLd&#lS4nA^rp=!o-W?_#f9vKn zT#=4D#RKYRA*DgX|Cv#ZCG~(AqRX&(n$dyi(>G@-ExB~*=*X23%vuuExhN@nha?P8(lHHSMsz+-PlvBW6g7?WLP|=4;b=lSDUpu#P-d26gbUG1 zQC2fOX$X@UXDp>|-w=}oB|_QV?S_(GSor(jZ|%IQ-xYeqy`0cuXLO+H zal_p3C8Bk1eRZ`~3IrV9^BUPRC; zd*31$F2)Q;Raa|ExPI1|+`MTkN4qU*Y)MgAVjA9_2GbTjC|wd&>aTy<)=sZBR)wso z^8imyoBR8M8f%wg8Ww;(urG=(8AN{T{g4bm$Pwx%m!LP#oP(*;`~Gbj@^d$UV<8$l zA>g8(X~qq^byB)0^{XZ5XU?>O zMUtcT5#-;m91e#U206FwFIZZ26%l2*spD;ECyi2y;)+_k=h)#?YyWN*PP-JD7zD#W zC_+`WvyD`8kiJAa!sqWF9OxGFnl9k{H+Bt;H-Sb7O<&Al<}AtU+bl4R5i*fTigS}` z!O0${ESZVp?Y#Ne_g!IH4>`&7+8b~G1pRMCagi9NM!ho6qZ|eg)K?Z*y?eqOlbx8h zM!(^))}*>5uirbs)~kaAzH(h) zoYXNTbEXi6_2!!UnRUfY=g(Wws4J>VH*|INEOU?;IcsLhkSr1l*eQ3@C3{BZ00}U| zf<%YQ|6hJoT>a!1d2;_f1R_zw(PBD}wveokqm-NRW~i*6&it|qcy<3{L_{(Bwy$Sa z(|OccbqL7_9{ILTliEr@xm7`RMG7>;lLAr_zOlohq!vR6wte-Z7}V#%-+vgWvwi0ajgf52@aEN^7Q( zi1m@u32ZBbVHgbbcOtc1qCdc>gFn9jvzjEh;tGV{Om*T|Syw^6`^#}y*vO6oF zIx?_f7aDB&+vAjm>d|QjD-fi+{}@$;v(eI}qN)*@7{pa+bSi;iS=v#lQn_6gX_%AK*99(Yr*_X>U7ENAvZf<=J1P%s}wIRR8g9r@G;G$^sp3GRA8U zeT#V)HFEo#H{vEo@559mnuCit=p4on0@Dq#?fmZ{l!+4+!i*N94K2@Wy3VQp%!9PNys)5SXB~$(%;cN9s@V~W za*geblFIhuCMr~j8!00_*c;sV?YmMt{^hI9hIMLddm|$4+b5XSE2WGGA!7NW^jbR9 zoO2ab^XK#M%4g_$vuDJfbB!RO5AmMpW{%9*!=@5VM>Nh&zg|wKeJ%q=9YUlD&j@hN zb=xo>eu*y2;r@B8)C@$JemKO^w~Db>%+?!LcZ#}#1zhr}E#CfiAfN=U&~$`dzI;|I zc7KqE%Lg!QrPC?lyb&x5DAz$O{Tomo(6P273GJlAoW$;qOsd}~1@!7GnYDp_DCHjOq=$t&(VKq7dJe94Lcv+#S5R^h#m2+TNrwkMd8gT3>LJO^JY;y?PxY$ zwgug_otj=S+doND*Yi~Tv;|9B)GM1Z6=JZ^<)iU(wnkjy>-UMXo^zS|Q8fgl09p!C z^ado|L6@L3C=Dncd3-iEtZWgfe%F5SeTy)pif9rSTS2#rN>$cG}jp@|MuIfQanE+&Zk~2<+}@x zan~EQZ0dH|Tan`Cvs!uhviD#rg^SCjT!~a^29F#_Yu5=>pS?m9&p2aJfYvR#B0rcD z%AFK~M1Mb~ZEGPIoK+ny*xhiPr7Xu~wBnIYn%P(0LQz!>zj*!*jO{I4xTc@9sR>B~ zDZGC-m&Z7>FU;#l703R(2n4+MId9j@OVxv1*ikU_x@;xrjA>eXB+?Qz*BL|Se%##0 z-ckq0&@4V`aqG4Sd)pmiu8I4RYMs7#p{OdILsjVEhYHe#a&o&XufnFk+pp|Yx^)m z7Dh=4%S#$*TsD_^4b4oioJ%BJ#$pLFk;IKBgmzso2_x=(m+*Z;e_l^anF1O=5j8{7 zDX?r?@7>!*qPLqFWdXKKKZtS_Yq#&@6HOnYELbv1ngJv^83h zG)s^Nwz0XP1>3M$yJaU@Xjasm$0fDPaDBey444YVj)p@Z1jSFc@gH@^G1HPSzfepN z3!}K0O&?lB*_n%|E}KtTw1Kc)f)WBZoX-AXZk_q6_RF}=CvUDDW!8*z!6=-3QP9%_naa8JbX08bgVIT|>EkL>Hqk+2S z=_om2dfH45(8+*VV_3mN%hO-#HLPJDHds>0%*$5sq0cYE%pweNl*>J5-+|H!!?LMu zem^pi7)k(myHlVA0>dz|3=1I)Qf`uj(?@UOC|&Ubbj1$PpK7P7BS>ktN%Ng+ER~Mc z_`$XA$$~kVK*yN*ld0ZL-hAu_tohm@Zu`nI`eR;{+cqpdzxmtTJ^yyBumZDFn1+RmUyRsg9agUMdndJoakwTr#&JE^MFq*XssIYZYP!erN>HadIz z(OTh37bzVYs>@k0VZ>OXuVxA=eiuXvJ-EI@sten!rU)H<&8V1UvXE} z;pe{5AJp*2b=f&q)FvIb^NYhqr*63(2tL>2_fO;g&aWEv+K$4&cS zArLW0$9qPV>KehcECjFa*u~Own)5w>2@@=0G!e-hbFMV(P~YLT_pejw*qM0^e62bA zroZLKA6vzO#tK}SW_#mdOza`Bw(U7U&%gjudh_WOOV6RCu$Icw*;JR$r?O}k1;Gk} z1W`$cR6K^0N+6{>WlAiSb`S!B;lg~9sr=0pQ!>nJ$BU*2!%822>$y)39Nuzw_QXE) zOWZW6Kqcwjzefq!IlF`6Xf2gxv#BXxKr~dZD+=mF*a)MNX%d42IH`nhotz%hlM@W{ z)OebGvS5xwD>1BB(*y1GZR>uvA@4k@By~%#Bvep^JD9*tC6KOr+QFItm>cYhIV%~N z*4V~48NnxGXVy$4kSq){cJQ}f?+|$q4Hef=Jgw;+0h(7U(x+iJtR7(ncN%tNod`sq zH$p|(8FvYW%N$Rs(LNzS4J$a%`tpyTa^uG@$^~=Ks-do`{FDhwP7Kxv7KK4!2Hq5Q zc%u=BZV-X!Yr+b)VwefEHnUh1a(`43uPE5t<^h%96|UANkWja;W&KUPdw%!bOc9Yt zNiBV%iu&5A;55?1fC(cd%)lODM>ZS5f_1`TCht&rS#Oi7BFzBx3zz^fHj^ZW_0B^P$gtZ#+=5y(E$E2N_l{*0<-yZ$v6)c8WlBqhW{Nz_dHSa6#Mtyk&5D z2~QNzH__poXB~`SI7(qOd}1)OTVgQD@+((y+r1Cqq!OGUcPPTh#QAqZqEY50rSUf6 zCQqfaU?|Fu?!B3fFFe7c+w|nX9I{>$Nt%|um%G064Do@U3E$fXILL^ND{mWnOlEYr zzQH}I!p|pa;b;-Jo*yC{^)@kQl2Boin-GHG5PNpK%!e-wj41kiB5%#N)sEpYSheCM z6mFYj5>;9dTR@GBjQbA!!rOyzuvfgJ`92(q7Eq-@o%I z*8ldAaqE>$226DVGi6*8#z`eP=hBsIed$Ti3d6L~TBD?ck{UU@Xvv-TJxcQhAK;!+_Zyfnd1;VX;O(4!ElJP z&VN6f);=+!sN1Q68DlgV%Hxu~#47JTp zJbIpEj9z@&=G%cU`V#bAyzI4pyb^So_MG3>df@l|=im6}7Bi9~sVS?ESvltxWSz^j z|L6C&8IK;wVIC?65jEIe|n(*ov1f)4+HN0%!YSywZ&H}PMxzFXyAmrW;@Q5tt<8S^455P|=| zn{s~7)~xIHda}&2MfMz;d8qZ{{Dy6K zbwppuaw!YO2>*>28q6mYJ;1kswRp82Po)**b9r+o;!VI(|MR0cb7;P{i&Ljh%vR+~ z{3A2X9Aq??=gGFxEIrVP$Hlob&vi?DA?XG#^G94U9&2OVKmTBsnfQURB=hF1&+~wv zWye8%C6lQGbbl6*m6M1?CiB>^nf7|tP^|N{`fYjoC?2Q(;&B2lnZB#=_&isSF}+>u zE2^1zOWnObfct%c`%nMcHRBEQ-3(W*1-LaUQq$p^KN*AlhOFzl7)i#LX}`+}Zgep| z<3N+I)jtb7<^Rpqd9Is*SCKbgbZJ`7xz4Om;A?*0kND^B8%I|>kn{Z)@Mti1Wl82w zPc&!NlT+nBPpf7mccf;R(Jy=GUYYZEY)d`^Fr_2Og)UX7ti-=B2#okH%~w{D&r@fExS7%{-*DAwBnUizA$HMI@f=`e!TL_`2QNdZaIWU3G`LJ-!JDnFnOfvh4V+#tkZO#+x;WEz04n3GfuhZ!hk!0 z^->}eH3G&{&_EOs|2p7umU?n$3ot)NlwbK2QwNWqe+OKGa>lhjn?;mjF+|b(zauJY zKq!N>4bnClJFS;k3H^F$nQc}=KOhu80?ImS)%-&uj=H}l%3>@gD!Qn&UN0d^nT$2W zwo)2DEU|FL8vf#yw<3^eqYuxcpw$FC9+u7TVR)5v#EY{nYPqyTXbk_#cxIco3c>uK zWXi=sofVQi@Lw2kQi8K#dz*EZVBoLf_oi5b^bz%UevHZMAQVxaZDIWVM^D=gN@}bm z=s*w@#rsSkk`rgn$%crD+f8hU$kw@h^mFAHlpEp?OSC7@Iz%c(swzXewi-8;APfQq z4)v2U5M^!piAo-}5M`Wp6O}SN8owX!#uS?<-8Pe` z2IV4Y8JvtE3=D)$n69doPQn#Jfv~kvQkA5#{E?wPXJn|)6+%vVk9hCgda<{tji!9nhGHD9f-ZAxpC z@Qdc7$r>ROwek+5c`0yzAOr$~I{eTqMv@JS+~b$b%@~$gNl}w-kS{ZadoZjcDkTZd zN{zWvU2w`yVzkCdS25@E*YNPB+t|3{Zd@ll)z_!09(Wyxlk}T_x5vPIh$xS{Jq9U6 zo$KE;$!|OxyAA(&cug_R$@=@)JWrZZ)Fw2Iv*(p+8(WfNMeuPu{`i<=Rb3+^gMGtY z9lM;sFFWJuT@3;mHqV)_v$c(O7=&oAh;$NBy}4gTC`AZCu`u9UDU%d3awU|s>CYeF ztM~rtsv4;t`m;X6oX`ud95IDUie0@w%%+pSYDkz7OMbZ84?mp?G`2Cktv}BJTk-k& z8cbwrE)<4Bc}Tws%^xS~uz$av!Rd@9R^>@!H;m1uxg(i$HM1&h2?rIL8G-m5e zU*CP6FpBsbiBc`tUxIhqAbGVFtSkM+}3OG zwTBRbaAasgFF;{*7?R7i(zIeVOS%VHdHWVNZ*wX5@`%~99MDQIFe2aBKPcX81iwGF z(ifON=^iv+Z0~vVb>$+>GsHl(rLV{ay1q*5O;uWRre0@-##Bz?a93bE#ZMpoXSVIV z564ae%o56M3i4Lf#?Q?mTc~FqbK&)mA}-wlLrKD0UJAWg&;pzQdE=9ai=KnBeHVr+ zq@!zg-aZ5M;5oFNui*`kKy?8M4*HgBFg+QtH24a9Mfm3r5ni$%N|9G1gpBtpM;cAU z+A<7$`nx(9=srM0%iNK=rdjFIP!A3cYv$j?)4SJFDEA{R2P<72aU1|)5O^KWMOsq` z5zd^utdz)9r%QufoYQ;-L!~bE_52zqS&dAlkwP*&&{H_LcUuC4bloJ4i_c?T{{VmR zc%&&c&^KT+IN(rS6OyYgBZR^81YP|SqXjkfX|m4Xlnq*XdnJA#Os+P3kL~i6Ga5Gf zq&ah|a-+j0jJZN6B}||N@TBJ#w!iF>zoour0gr6{3T`UVB^}c_xHVhl4>*((MM9^9 z`0m9>BM_Hwi#Ts!lotp6{Wb8t3y?QFb)&fGIimxCcPL50?WBIs98&-I8qBKQ$amh4 zxOy|@o0mqw6dKi1#$6K-iW-WgLCWQRvwq_N{<4rnD*5ov+gaIi9lN^MlP`7?^vyDVDqij2o_J(?> zaU01ba%}B-5VyLCv6c`5q*f^%hGeoia%~G~ER=cOQ=1P5+JX9NpZaQlT#tm2qCg4= zeAu+uF`xR*hfnqSuhW5lkDbc+ zGtR#<%*>pZ(18cWeBN@bzw6sw@c!THzeCslo;Q_K#s86(L1UP2w^1##=nx201V}N- zm_q?hhii+`x=EOGu@w@rHVN z`=%W<50|EPyabd=g5E(%b1p<#fDrT#*c|G#NM|K8n@cDWjD5dvKr&K_fLvFlFH{zf zM*ugYUwPiLKlW$MnFS_r&*(zJ1ir3rTU>5F?{Z7INm~bgXCmdk^Sgid6(P;~Cw#>iklt#g(k zlNK}GIW%SG@%X;~#Yxp5q(Ul-!OjC5+`pZMrn%J5o?0WP*dOJIjN}YCKzW9T8 zo*e;pAq2v9Wd6YJppcI%dVU6-S$`CqibIuLzy8)Oo6mW zO$(exYUVk!sMZe+0V0_uTiZx}pogJ>Lu7I}%ED)6%@X!>KZywg1cK1>C=B$|ICCCODoKzZVBzdb z*|_%}gj5J+A(0&1xfO$E=>=C1h5^QdS0>J9$*xY8T~KfB`e;JUl<}B$zwS#Gv+Kt>yUC`n1aqn-BJ@dbl@SS zWU#xFQn>^M0$pZ7^Q9#041?t!qz0iirI8`>gWY5@^@M>>R%f_&!P{B7eyzsD3{fhc zEdlvq+jMl;#mXx<6K_-xkWs zi8I`H^Ng7CV`{xHz@W%2y_m*jt4O#O-8*}^?<0@1@4-%-jKxtBD-&{;iUUC>9YH4v zk%)XwVMQ4zBhV^j`||Hl)!#6$yARZO`GJ%UypMwT*z*CxN)Dwn z0n8TQ4k5%P$5WiFeGjL)iJ5DzCfnSE5FyY0U^fqb{3!~(r7@1Cqniau!4!Gc+e=v+ z<|dl4TJ}&jf*FUFFfi+3wk-K6=RW>NbhbQ0Q^&#Sh)$6tv2ZzJ zB+R%plK=<`(Az)8XUO1rH&B?h8WEJo8JdxU?PcSYQ*mRS4--{Son64Z>r-zzwW=9G zsZ^p=D80I_q3-)FZ8MQlqNm9nV04JlP`7Y3jptr~ld>rd6?x>-&#>|K9VlBOZ8?di z5NIUJ5>K!sxq+l85(3&t>`>8}^0=d|k8RaukcRqRm!-R05&zP!He&T!>>1H`#vqNxltM&8 z(RGD}KU&3_nb%YG!P{W(L2&Jg$${=nRrM5sKJp<*hLRu5?&F@8LEg8m2{#nnIj4^`J!!5xSWR9VcJ^q3@Nl=V zuoRF>3uZUjW2A56w7rSw2}_p24h5+|VrjuoTL$?-TR$Irx|L9Be$kL;t5c?JSC-2y z&AAsJV5m>?-$I=2Noh{9wVjf=}Fabd(7aClJ^77n)idK8$(d{_tmC#7Xi(NFdi z0`qUaJ$+!__Lr|b^$u;s9q~ru4emmS!mM0UD5aBw&59ZB92{dulwQ-(qDEtakm@YNGzpEHsR}FTHzf49r!3WOVi5Banc!rLLXgwHu7-ST@>Ar zOMj53_1Q9kBc@aU0w^iN-gKFzgGoYR5CV30gdALvpz9sg$g;tA1gqEPS@28=-;I8+ zEDg#CY%S1}BmkUHu)Er4b5oi5yIe}07NwaIYd~Z5gxD@Dn4wTHZ6?Nm*0{dm_9cV- zY*rpO4opa)aGV4pndFj@MsDh!g;QTof2ILlUr%yI15QH@(^5?$ok4^Gg^l(DOsFwI zKp6PwFhuJhO2Lj6pNI<53Bf+1E_5TO6PT6ElE(z*Ge7wFDa=P2q-|d|`_k)g>1yvV z_kHDa=h}&sbR3t~ToP#lwl{S$?3S^R007gh+gU#8Hp zKU!H!!?xywlx!buNiO(No;e$0FvYa+`WTCQ6&iNhiVg3sMY@dTo_$BK;{FkqK3u?e z#gR*3B4D94DlmL?c|VWND3A;!fiNs=Yvr8QIap2_x2lHPd=<-gWk^*uAR6ltxg1ng zK{}0aU4#K;6oFTUP~&@LbQqw+kWhz*&pArj7vGQL6-y~XtZRZa&=!PunbGWQM z$*ds@Pnp9&H3o@cu-|9r%hLGCGNKrcR{dZZhpkuFQCiT%>L(pUQ$3=o5!KX)Y-m8_ z>JZh{kWLdO9R80{$Pi2rMwD4Wi075!>ZK4Ny<_B`#uz;9acPgqsbGhHf zd14kcH6ZJAn5t?_I*m%Yh){yoXg@>;KB4cUgNPl_XfuIOZ&YguI6L^ErtfkoML5P) zYWB-S%@UQaF9S)mcim7?qB~!w(Ne4Eql5r zLP&(=FtmRM8+UKPPGz|2g7wndg(9p(vv@gWtYfgV8k213k&#RiBS6(bj;W(5XiCjP#M~K>uDOQ#t#ZuRn0qP zvgR4>m#X4qXcf`6mw;%Gm3KO?+d2(^tgZmzaVdOh*@Rx1y$`KrPZ+Rl?m2w(6{s0Akkb>7w!5^R)3{eh-BVZYie4)S- z+nyr~4NA%i5@HeirV+QUl9KZm&n4wLgjyfohi-`ZEHpxBq_mJqk+#$1(z8fc=de;K zvaPdcK~NV1P*%*RBHA0IiCWyA7J!~AQ!a_x%T7u}CzM?(cI`N?>*?>U1(Ti*Ykg%H z$Vz2sU2_d}vlg@Np|9~j>pqR=mvHQ8zfeHPdBGyu{AN3@j0u!_WkT+M^td;DrVHM!MPG(@y_LH+>`B3>JII7Y7(A=P3t8ywHndijg^S zZHF~W7LanCihXSpgBm8*bQ&q(U~eBAp4*R-0!ukKwo5XRr7B%ZRVGKSs+roVCK_vJ zGPijSNxKTy%3#X`$|!`E=pe)dAv*Bldo&?*WHi!AKVdg4d__F3Vv2bmCTbOY)|qla z)RkgNc0?2Ui9~MBvvaQd&`f{0Yevt;bzdm;?R|MfgD#G#MYUIE@55`^6NW6Fvy|IE zwvq0kPQHA{-|+PIU*fol2^uQ;%^(OdT37g10vUrV-ZMdHLIUkk^hOvi4Ki5lr+=i2 zzL6gKh7XaeRaj0y(a+Bes%;@q5?L3XPc{>Yg!uJ1Jx+q%|_MXZ;%n zcHI9jCJbtYIuR}UQtD< zshnv~LbRd}sb9Q`&O<#sv+jpvvk6-3(+DF7g=Smx0ZNu1X{t$pC52+s?oRwbQk~6F zovEj;s*zmHOmfxD)MXo)k()`%$zsbC3Jak{YzE_%z3;~~Takt~l^MLznB;Fj=tu}~ z9S6^ku0`0XU)l8wrUT4?sLl9U1x#XKCOC=cmJm`4W#{wzpSq#%*`I&W1m#Adre8g6 z!hl3gJ=#hm%ELIBYMiPXyj+4rqMC%2!B$BWHbO@U>L?cJkEQ5FeXUVbJ3c1)n;tqk z-fW$oE-+=hNs5vIiKm>wCcA+3I->J-xMz;fD! zwDt)raR4DZh2{1LA%~D^1R*0vWFbVv9Iq2oXvrc`^Rttl=jQ{Mm8<<)qP~o$qGU=4 zvy^4vNc?~`W*bT9-LDE3jsow5VBV& zyB8tbh2yON0nH zAcX2hIbA}?{lZRkAk=@k^Z~P=!!-N&6+)x9#U28s7i(2c)vmIwVyW zney?4700W!Oy%5|*v$0^X>|)}cc85O!gAY%u-b*4=tPK~SZfs#s#JlUQLQC0C@_Mv zcYQuOEIE zZ1&}efmIl3yZJ)bjx{|S*8ZE5$evR>XLVG1cQ_7MLRf=B$WAP$OGvd(D7PJDcL-&7 z2<3DmWS>y>Fi?)P79s|cb&Aa4*$Bdrh(WHvY0iJ25@1f3buQXd?USj=a?#aq;HuZW zo0fU!5C#FhS3c1P&WVBQ#{U*aE+MB{FR1|VjL{k)bp@C#jFA!e&F@O@`BCj`VgQcP z7?y!E;&eNS6gmjl`t$=7@&iaIx$0GKI`zPu45(hoCzZ{zXyuD|#xJORsbhfJn|c??L>uz(XkKc#{l%s6!?x*77{m+X6DLrTJaSD<{NZ1GfeWs@iBe%0txxMc8zm=Ile~)xAXiSZIeL)q zlmcq1&qvRtCx9)CUqSrRrzqNS+C*74j+-J3eb(OgPuz9ur%5E8(G7{?(*~BE^71IFOL@=94H2H6#MmIQaisHx+KmE?lJb3rl z={?kmWrO3mN41n^9GI0720p$Ya`8)V;*IbBJT>(*qK#F7AD3W-$FOV#IjxL8fVeiGLL!ZT*Ud8-$3)M zg_MgUj5X!2wA;#xnyo6UqKHDEb+n7{d4Zo0xXCnu@3G<0AG7D#r%<-V-fd4)7#>85 zh?i&iMb~oKE8a#;{Y<=al*x146gxIN%ul|3Gh3g!A0ePHJU|$=Q9|qJzARkvA})Q| zAFyoARn#=h#48mE{KIWtl(MkhB<0cw-5tBg5A-sU@1tYaW`+lQ8R$8Hkct^?i&=2) z#k9^}PHjUA7=!1P(Bb4$C8fe~lW3zE9_Z%2yS~B$Yj35ms|(AH9y}ShQalkk6~KH2 z@L3{~`{R*3@NwW@PE@;=iXn5BEaSEB`2@=^ycTUjc5Qi_$L{?u8y;E5@K7ItU&gX* zq>MIHHMGoSO^bMzfLfK*`FHge3L6O)?WC~^`aB-A(0 zrgi?g%v*L5%hp^$^Xx@rs&nk#`UKzj-22(N>2UyTN1?1!+nVrXfcZzjttWAApNK*1 zq?r+nF?i*2tZCen-ltP8l@J1!Uvw=_BFWY#?q_IV5ZeZ2Ss=uCmm>Z<3^ZDUQqedj z_)rp9K~!~>B}⁣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 KMNUMnLSTaSD0fu= literal 0 HcmV?d00001 diff --git a/www/img/logo4.png b/www/img/logo4.png new file mode 100644 index 0000000000000000000000000000000000000000..19b81aba97d04d4edfe582f851c042de160d408b GIT binary patch literal 29249 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 IM6N<$f+zv83IG5A literal 0 HcmV?d00001 diff --git a/www/img/marker.svg b/www/img/marker.svg new file mode 100644 index 0000000..9e800c6 --- /dev/null +++ b/www/img/marker.svg @@ -0,0 +1,21 @@ + + + + +]> + + + + + + + + + + + + diff --git a/www/img/order.png b/www/img/order.png new file mode 100755 index 0000000000000000000000000000000000000000..5eb7e738e299624112e13721eb64d41acfb21ae1 GIT binary patch literal 10020 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 literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat1.png b/www/img/taxo/cat1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8a0412434898e7276767b082fc4c6e62fa4619 GIT binary patch literal 26023 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 literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat10.png b/www/img/taxo/cat10.png new file mode 100644 index 0000000000000000000000000000000000000000..ee87ccfcf71bccac7c0045f7df64aa99e5424957 GIT binary patch literal 57871 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 K$&dhz9idRGGk#BV1z&*EEeX*mmv@;xqmNu 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 literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat3.png b/www/img/taxo/cat3.png new file mode 100644 index 0000000000000000000000000000000000000000..135bf476da58955fd64bb60bfcfb885feafb5a10 GIT binary patch literal 21372 zcmdQ~`8$+<)E+a;*oRcs49S*#$ri>=C0ivbWfpNO@CHPuEoYb=-&VOHSyq6Fn1QB73;P4?I*K{rNlJ zoI36EG=vk{0#Q)O>+tLM_~Fu@S1$$Gzs7Xep8Wm8+PYTveeFA4T^()KODEv^X7KSp zBi6UXX&?QBUIQsBmCPR!5NucS<+qzDYHxUBzN? z=AY84uerKD6wYbU-Xpq&WH}}hA6GW|9Wq@_-{|!)T(`e?H%9%9q>7sS$@b@dPjuX+ zK1~!S(ohKYb!oVHL8M@Di->hx^0U-$CxqTVYMbT#5MXSSLoLpyAzRo_zJA=F{DUU! zk+zLX8S6HTx@znz;3vQ%o%HVEJ9L`D!1J?9eeoap&W2iG^3hsD*F_ktAucLP9*Qu>E$NFJh22X3|5PyyjX% zJUcO$oe&b{I{sX3=86Vf-(ydVOMKu6ie+H;+Q;}|_t(Sugg7tCYFiPeW%t>M{7CGQ zf%_monm0NL?dADu!6Ss+V{x>%awRlx;xJ6eS7(jjd!dn$Tba>f$*?n0k0?L5fet9w8 z6|(w4NeY>h{)%*d>KdVR{;;b+cXbi92f5=A|~JmR@#~9}juDoceJr^u5m;pZIB> zj-~rLE|JP=%A(58e%^W^@gmDb&L!-}-hfj9_=VF8dluw=oPF}#r%L;rc93>p9yBjj zThymjncKQ>(&D1C-YE(2A4N{{pLw)seX?}_DPozRli#IFJ~e45 zRtB6no|ZfpD$jUYg_$UA?s8dl8F^aq)cQoaM#FP%l|^N^@|!cpZi=ZW(w z7p}Z=eLnD@wxBjA;!Q-#4(ve9z1Z&(h48}jpTs;8f@)SxM^YGE}WKhxox>YJk9wsNjLT){-N-SL|6tNvBmHW~Xg zTb^9=EA;pAmcs)t2QJ5%U*gm}E|&AUZ{YiYWQC(U@qP6>;UTFydiOxD-tbP+%Foc1 znSzNPMP3KLHk5_V%xpNdx32VZO0Tno*#N%=Fn4kvVi`5 z<@=_(p8C>-?;j7ok$z+S1{S0p^f>5OQ2L)=e?5AS9P3QX-kjw_=4F;OOSI|v_ z;w__~DO06DIhGON3F6Qf-oYsqlCjWAO5(TwxFL) zj`}T3^e*{X6An0ZIgEXu@DThgm~$*==3&~}&d8{;p6t7q_Fcctb36XF ztxB}Y=a;%KBU~FQ9V!|&kJh#nt$)* za)Ttp+?$kR-frIHy42uDkM`!@ePk*%c|gKMD*Qv;@XL?%q{+-5`#)F@X-Dhs&Zn(i zATC`#68Ji}?EO9ztSzps2!~>@DA$UoOcccw&*6KSk82Bmc>d(LJ{{f_p%8H|!a72r zXv=iC|LVvnyR0ug(cwkWOGCBWpSJiX?3?l&{la>_7oI@thnY?=BOUE~SbV~wLEG>h z!3$d-BkA`UPx+!9qWv^RJWQ{Do$c&+mHMi1P_^><*7>bEz-RpwBWA{|?fR=F5B-YZ zaHKlQSZ7)@oc(O6`$S!RkjLkS$(`|#c}ijCd}iO#<)f!=oLX)CkaIJ5g58RkM_41D zO1m1nME#_^UG2GA_OR@E+l97W6aw9d{w{&vInk=IrpQ~AQGD9|rM;eG-pRuJh~mce z@R|N(zlEOtzP$Ks_WPZW-#1aXFy?E#o>#;q7x48t`GjXD(Rl0f@T;PaF&}L!Phm8= zL>n^kVKlX=tK`p=8(DnrYt?Hi=y}{cdwz4h>G@B`Vm22ncaxb(IyVAlmYja(C(R*{ z>U&WP=PdBMjJKW3NeJYYJOmOG3xUu9@N)qIxvmL;EMg%Lqg)6?H26N|s|^HV_xhNX z`RT~tUQ7T$wx$gFZ0_H$=<1SF zi-JItu5Fb(cQ*5&>@E#T29FujC==gD>M9#?@qW!~cs8U1MZ^PK_wg|W_*8!W)YR0H z)9ob41E??h%*Bhg*479vu4A5KnIc{g4&8hnTaI6(9yETxNBxJ*ofT0G5xTigv@_HCc%V*ldPk^Vdu2a#L?gOBH3CQmrRKVE;G7R{wL+0(4JzYip-f zpBt>|KBu1RaBgnQKJO<*MGbeFDT4Yj5Qzi1;#@yDND|A7ug*$URP3EK>owyN5fN2U zsmh6**ho zfDdAf#!-=X2#cFM004+iPD+fKBZSP#@;$uuKjaAH1uOx1zU8ayl2ET)L`#c?(#e5~JTdMw8daU8=FtYrNAv%UpA03kwf_KJlsS~)J_$a# zmP8D{BT-;eW_NRqJYU6s^S|w0gxFs|61ADM6Ko|u&80>*heerkas>qdZn&j?hI01$ zD;(nYjP|23AN_DRpa~<=1SMP#ycwSZ!4dE_hS64x#^BgetvvjHZ9=x`-B-%4;yzyq zv8J+Tl?lO@XcKMe#CLh6VmqT2|1O1-#K4qvS!Tcc%DF1V-qn{VFN1JF{>=k1WtaZ; z(TY4P=zkaQ2K{}qiHW$umv~L$pFP=?sO_e_EL$Z#*}9q=!AFegIr79B%C*CT7FaTs zHG`!2T0rwCYxv6#*Hg!b?@i?KH2E=pJW*f*_{hP(XPD2kP9Os>j5`D?P7_SJE*d^= zZ8!L&kYo?}&v;VraKQilY{6tm^TJX}IvS_h=X>6y+>z#Opb-xFd)Gv~foqC$>~kBtcf9<)F!UcHCf71zBHB(}OXjQcoRNHXI||*mT>c*PGRU?6-I`fU;bpZS zM8MoIBiaB?U#i3q+~XBsI{YOTA(3mPe^>Xak2_WoW6oEp{KtA7RZ#SkmT)F)>(^i< z5*-z}OWzz>BcuBRYov2wmm+UIrPJaJ4C4(A6UnT{|5?oZ3e)ccE3=dpmvPzYPL}!Q z4+Zip2ASCJSnPRodl9_yuGCbLQAT{SZ){^~DiL6_7;7lathZV^-zb}s$L;I{$}0XL zF++*6jcgfpEJ?NUw18cn_Vad{7FWm;A+p({(Q9K3)HV0K+}!!kPVn3d1Uf2r;^fn( zY4Y-kwu?}3AEvU-F^}TSlSRYxmBdxP#~3=rq?s4prr9Hl@NDMl=NrpiB@Aw$1rlm% zF0z|`sNF0<=010?4fYbZPeIhi^l->WZ2{069nZ_{r&MVxZQi*TxVw`x#GXKh)a(KA zH7j9iNa+Dj*E9-y(HE{KEO1CZn~RGu3>#83-l1t#edMkvQ=OTPGcbr5p6Ph*=vQn4 zx2x`tra5-=K953s zODlXIlaa%7p*ysyiWDYMCCd8}*>sms6Wl0})$;bAmE9NfOy#fnQ_}yQ%<`daN$UD; z0_aXo_;jzc`hF*o)42!U*`@vAMf?5@v++VPz@M*3F2oF`6xtYQ|3bu=Z+#_<=5k)jK4lUJUoOTN;VVl z*q=J4Fx|?Bb&cA%6w`B(NuTSH$@>Xi`GDF#c>15ak+K?Rpn88uDb&|pU`ox0iI{iy z^?khb68di&vE225HO)>EyPrkl(+$)Kk^fo@=pMy9_~I!m*I#9D3idAs%0Nl#s3zU7 z+(j%vDt3v;jhJ{F&8pZCN?4JN^fOrW4a{ ziPj4Lf{#H`3`BB58Hcrekdw`fH#qHo52`aUE+!~0Z79V3_efOw$D!%OJ8!hU{QAvA znmQiKM!h@eXGU7X0|OqPcNXRx6%-V(Jx(!&g^$t%+*DY*)U_4rT8Z;18=H#`4tm%f z2?*unSGZ3EH2|{2d*iBtC%Pvq=y(1-+!P+)c z!L{6llsqs-6BF-tY9@vMcdC3$Ru5%dr=^YT=9&n=G)`sCz}1c&5Tbx#LO?&rn6<_8 zLj;!IZ-FdFyq1sobpn4e#h4JKKykp()Qa0X*&?#-Nw+MO_~hiGo(fi-2~?1udHm9d z|KI`eI&xkMe5w|=_Dt{_zpm4+a!SU;M)^C(QN_hE26ZJ-a1=yihN=i-cPXc)WSsJE zNw0Yj$~3m9mNK$~@MTLZfYZS=`uBAjWht0!W*8E3NDRB(-qYlK)z42={>aZMiGP=_ zBm)`15KX7H0&+IfPjD!B^tt=jnKO3&^9ed&^qRM)QPKY0Tj|7-GkruryJSTWQp+03 zHB+1j(qN3#FYFwzy)6M;6D^H$VJDD;;50q0kJnVj{ zeby2@?&LfQ8Q=Sih9sJuA0!m2w|i+-D9@u+^=mXOZeLg)L* zOq0-f)5crdbAuWiJG?q~6g6f2I3FE9f&AEC4BG4yABz%2G8=M0a(xP=^u1l$mx+91 z=bmSlb=^y~AD<<|_k$xqW*k zr>DveA)q70DAIMA_Ya%R9T0HW1VLV2i*ZXb91VuriDDiyz&S(00OiC@Na*5Y1I2mf z(}_Ob(Fn#4n6D>w5K5+axHv!1>B zY}(Tn5&qjeuy6*ik}mtNbRzF zCkp0r71|SEwvS=+Q?3`7eZ#Z7BU#Z-h@YDp7O4Lnn5+@|Y=dLJNiZ?`^X}rW@nqqDBTzkj`=n{zx@(aPv zQTdXIQalioJ%J732SHMtAJS{B(=sk0)4<%A`MgHXOCHid1}1HA^Sb;Ly5z%TZ7TXZ zcnPhoK_gO8_}#4)DoOt=IBBj=GZ`-qzZeM6_1#*1P1&?-Grv?0+FBXXX>P+qN-yAq zTSTa2DXiK!?E&uSR8BFPKo22#K>wYTVDm9U>;{7sEEBwG1sC;fWbQKbwWhRGmzPTt zl;oxTymr^OmmIN{;gsTy=Jv?B(a#(=xWKsOnWo2VVxZ75$I@~y3+3A0q|pi8&d2XL zFsO4qAnX#Y+BJ2w8^OJ_q;q&K^ZnymwAi;jMbV1SB$(9nw3L*>l$7Qpr5JSd?uoRr z{`vlcAge5NmI5|0gQy!I4!lJh034TN@qzeS~AS1%Wc< zuaNwA2o}Dr=8G>mZVbNH55@^!t5f%X#fe0!96cJ}e~WC2V^XOaEg7A0q|nRQ^G`sm z*lWu!jc+0}wRCg@DCY)lkclF{B$+^QUVMB?P3$WIoe6FNjTq)V;-x)7MdRVM*1Z2t ztVT=VQ+&P|wMsBNI%H*gY3+-^-O!M*w@!L$9Gqk{o(-&#Gfo)8#tw3U0ppa2pha;N zaz1)rF`j*>QDS<0;$lhQW4&?-COg{yOf1EoHak+6jz%m$PzQ}(Aul6VJY4My(6sM; zNlF1+=+7bFYFm(#J!avvmoV$w2A8O)m{QXqG2d1~0nACxKh>_U4p_orVWC8SCs zKDgngWfxt`zN@QX@7Y))o-HNucJo66#ee+V-(5#NQ=+*coKJ!|2hFpOuq5*De6veS z%$?QMk4Ky^d)1_YVFRqA;UY-?0rp58;hgQ?Z7Ye?2$UxC+Em?!^FqRYrs)SKGwHQ z1smDyO-c*G%U1zJ!jJ*z%YVd4T><=(D)!3vs`+^B(x%!Tt-(UvTu}ekIlYW6Jk971U1J5``ow|>LN?I0 zh5}ijwWi3O1fLHw0ylWSSJ9|zZFRx?El(xle40UnBkt~If6o&FFMJMXfpy4$AsMW) zvx1zy$YbigB}!?eVxWYf7KHPOq;Wlf5pE*Giud*kfMV#bqt*EbAlkAE3kmmS#j)qN z1}i!0y^j!XXi|4{_`e(yHYW!h4bD~2ZJk37IVlkK+KL#JoqR;7z$W7ELNmfZb zser?Li5Sp(^H*NZ;4pSx2enP=*67sVn_@=tNxQ-?nf6Xkkb$4Ybu>Ot@v<-9Wb9*I zm8!aL&WV(-(_v9dnoU0i9{|j$Z)AMjT)z2L=gwycang-dL1L}aAu&8CtlVwfR0lD@ z?8%+*fzMdlowR;^Sa|3jOhTU2TGDLGI#NoiXDv&%jP{g_9H9*2+K(a1m-^E+IDbJm zrBx&)HBl}@zA)F=*v+WhFZp|n%hoP}!2i;$358TCaO@1nG<*Sx@)7=`qJ3H`J;3-% z%4C7=3kZ?v8@VfBv}JK$4gf>V_ME=L!CTs(p*LT1E*T?};3ELgQfbKhBF7WYfL9=g z^A_GIOMN+B*n*j+r5EvT#+)Pk*~DN2h{RZ#|l+7(`k<;bZDj?b~iGGZChhbKOr@ukbLDc9X-dhegJcr-uZ9O zF)}S3&*!=1hUsu=Tbrd$6m7c^k2{h?Jo6usg6!-C2lw59; zfx)NT)N!>wkl&V_|4Xzpvw1QRfid$aMI{mFm9H4Ue0UtS*x*3g+tkU~iMya$a!-C` z)-XoCxkaNSAFHwM>nkJwpWe<6U-ic59aqSRxhmp2o{{$#e5eGOn zrA1Xin9m^*+B-XJ zGU<4Zg8n~-YA`;&aJKhc*hYRy`}kln225@b4t?etAXJd-?c5V70Ga5YB?6eYSl|ib zHU){c?oLk5W-&i6Vaytg0|U*TfP&dUWuE196B=zD)bU8hJYBz3!+Y+6VI6~GfnGR~ zTU7Kw#eek!O^DmJ37c2qU};nxV*c_fhD^xjVJk?LTXF{qxzswr-P9No29C5^^t*7T@isO&&8QRbFaDDF^R}exOf)f~uTZ$B_`0g1I>dGCsI#uKm`c3iS2Ob^6ibZc zs&l(+20}|mjg+79L)-%UZIc?@Ydk^3M@dPMo|Pq(E15sSvlzfi53vpnI`VDNqLi2w z`-_76aeBT%t_sXT8!W>$A&0v0>g*h*o<^TTM!&SeD#HT#rzG^AtN#x zc6r4xA+B|dXV19WKboI%^x3B4U|{;)^;zf0VFKIn+8TTWBB=_HT;EJ zRMtce27?D!vAS&jMunKn^g{Q%bPvZ2%M(fcXY!HlzD)xhK9_v;po4XZ(xy@D8NLJ0 z`poAlSxoxOoTFz%#JLf!zd2h54ia88D4IYeme(%<`c*-@j7OAmemS{vg(p>Nyvsst zy0@=88Z_QI0M0Mh3#9Dt(9hkGihIcvKnRg#g=vT>toIJ%5oo>qHw%=Zs>e{s^ zSgm0?AGVNyx+O$>`S3CN*Ux+Co1rVeRC-CuYLA{}G{mD8?(=YfHMkFNAX0JT>!JyR z=obaBygae7D0<}5%vI*fGhm!gG47DO^05ykeYt2nzoB6^Cs+01p$$sQ6P3yx6Bd&y z8u`mmL@q!@GUnL2hW{CLgyM;kJ7)K4bF(>jbewyPZ%6DdoGQWi|F&jsQ!CR73J7tW zuSMV>Mh4=-p*=)rG{T}4iDSa`SZpmFVgJV*IEY8CWs==h^6idsoPUytGAUhnVk$z@ zzH0PD0L%~@UgSuRcOw%-$pJO9aJQRG&|9O07jtv-I>uu7#EUg2W?S=NIe&0VwKD?) zpVuCzq$*Jr+NEa609&J;`TN>t_moEUG^fY4YnD7b`O+f1TZk&d-JG41*5K&fak_}& zCP_K5fRHO1K8SuQ8J!f6ZJub;(Mcf1mA8CTNxX(-w_))8f+ne>HvmQdV0oSFXzp;e zqnjx`MB}=#qMIy%XZ0UbQy(U^Yvj*ZV#{&#?In?wO8dX)o>jWaQ5Ci|uM&xXU(G*B zT3)A<*U%;AxcX=dn^t^aAU-#jomC_P`sY`z9WN5Ju0}KZdpCL5Wg_hLlkGMp?8^Yf7wf@Wes(H!vmXht8M9f-yCn_Y6KY6)j5{Irz;*wD91UuI~b z#OSrr8&Ud?E%ahotTs~Dm#?i|ZQoU!cpB=(=H0MYHtBWbV$f-C^VLTbaZyJnyGo`C zMjT97V8UUg;_f5v>g($#FaMoS6xR^d(Qd)|!UTnL1zB0RgsQdKe}$(2?id!ykr)uk zzmB$nH#(yDgURrdLn7slZeoqmuocK5Wf5rFC2#MlcUC&gg+WZ?(IE0|05%8V_cv7T zJ;vW@QQ%nQx6L zz~Vvd(^k7Z?g_E+UynIwPE17!L4-@N(2KB3}i}{o1q{g&wiW%T&%U z^$cZR_)v#_tF0xO63XFRlhD3|!t4D3G&g@Qz11MbNF}?66E+krSCSR&?NiUd%lqNY z&HVfK^CJW`ouc=ka$k{&h-}Qe3sxW%DTC?ga*)DlG!=vH{-J{*3d|GOYx^|iGy7g~ zNT|qvm63~8D7Ze|H(`sqHcP_b1-^dJzxi^R;>za?c82akpxAvmFO@@e&AcC$l}e!` z%XQM;oBH@xnC^VooIDY(tfmGxG=#q-Z}9McS|f}58$17FqZtb0^czlRGX{=^hyhwv zxaZyPeMkvPn&iuuOL-jYnU_1>4-SRNR82DJigqU>bJFuG>mfG>YIJm*Kf$1 z_ijr7)iag~t@$G9RAW}EdXR6c*}9FI>Hx?2kGiH&e@j<7vfE8_}Xm?=EIBetG>y#rDymx7YV;>jcgWmrskiDzxTBY&^bf(Hq;=m#Ce)T2CJc znHB%^p;iy3Hhb7V3L^n_g9uD@K~!xBCMm&q@y4=)CF8}wJEMn^q38LcYwzd)yI*%V zk8VFIBaO*asU&?e@SWWrY%7jx#Q~Hx;`TF_GzFK_I|t;Zq!3)e`^=YFmaflk4w4IQ z#s7BNE8?B;z^7z)%Op()Ec{mUKfgeo(oljyQodsVvje=n?=KoSxOhX;U}0b4O@+ zu$#!{>7<8$Dt?ejSYe#Cd6~0I`l+DQ9`ni3>wC9;`k42lEE;Rj^&YXu)R5U z@RP7V%y!B+-~5kK6i{+TDheqech3lVP|(mbSv;bBkLG4Qi|6+mLYLAf+N+9s0dYh2 zdmF<&A86i5v>_akm3x210$V1?69sGr4{YnZEmH9S-N60XNN085P|pQb`>d-zhC_K; zt_@mDU=!c^ez5%IN3lbP%7+ie`&gVCyMz=nv(y&BF}Xge&aC=@u^IF*Z8&$-!Zxq2 zCG>L&Ni}*+r)9;lWa`tgayTA~>MHX%$sKslCA3XuN2b$PoF{fyOiWJqa}n+qb4K)T$sOnsK81EwF14I%FwS0~Z*ipG$XwPc zp5r}QT&z5U8Zu*JQ{_Q2+S#!!y=)B%;@fJQoPX#!@T@qJJ$J=1PA6Y_t;sH@du)PH zH6125tFizEx(1BO)>QzDbCfF-51w3P+ zA73S95~O2M87l6LOpaf7N$^FD`fI!QR)5L(KVu`_2fs=P=gvIb0EXl>gu=D1aW(_( z>|vEui1X%^fJ#Y+GKVbaz`eHO-t$kIn@ zK3P@vB`>4x-6b#&blTw86mb#l)fNGpK7`uidK$I<0Q{d-!eaiA_j8=+%8e*dUn^>Ix>#UPI12o{e0)#9jWkpTzpzVvO%s};+{4M zb7UNu5%=2<=4-LI-;vzd_Z(zZm4pgNb*%%M1vgwqRNSKNAnL6W#;l>RO$`da z_P!Q)xYj|P-#ETrlH5a2u~-Ron;EBRnKAO{!)NVez>&zdSljP%LrY)H))q`J1A1r8 zum@-?q(_@%a&SJI7TcZ(sto8)#S%Q{)HgQ~{pia*KVdquix2CmXf0l`5L;gut=S#t5%Yo6iZOaUep0A8VTQ#i~Jb@Uy8xt{h|6s+&KkQtFMR#HeD+>!tG7&8CzJ6djgzFk{lsdp1A*VGpkm&`pafGs za`D-)DyTXOJhZ1xY0z>n!xQ?9?d(~6opI;@&7(Z_pUY2P0NK)(74qFCvh@L^0pj1u z`4&bgHkVQpfkvB;hN;WkR`!R1KGDg?0$XBAhv&y$lIp%=r5~HecKUpslb?kLdhh4& zK^=VO0jyEpcQaDvt&c>LjJG6JW>hNDP?yT2K_A` z#A)-r3)vb(E~3`ssy)oIi(&6V_P$=d=xemT$j7=J-$P_IGFOkbS_}Zo%Uz-M<LQa{7`H#;^}IB+wlg~7hbe}2>~;?6Kjoq!~FKmLew@)cg7?iaV(`4j}Hj_B2u+uW-{+u zlyl%gW8WTKxv5Gp`9d@8{4kXb0LQoTE;Jl=QQhI);`++@#T+Ny5f`x31}osf1F+XP z>DTa%7d!!4<{e%9FD)}52%WO5L#W;SfDrw_^_4oz!iU6--;A{pRP>jKQ(y6p?zo?= zzfcJ`*2?kfBHgnfC-aZdnK)1Buq(Tn@x>*N0FqamgF#*gpVuP>;>t%NqNeHQ$53VG zBN^S)nHyt$-TendG3+ma+AKy-cgLd4*Vr-HD4?j5>SFeL@tyktFd2j8@yI@kv3X@4 zdY{vOK~LbagMLVLfBsN&G2Se1MT2JLlmIAk(fp6t`3}>m$k+Q{L(g9$8BviUPb<1}rEFFYV}@>ElGn@y%9j)FZYOg6ZCLznDSZP>}}*>H07>b6qy9iE@B zEj)IzD^;E;x2DZh=_s^LOPg^y_u6z?s zIC{h1Mc_w`BWQ=G!5aSE)h5w|^C)po9AeI-wduOd*AS_P1V0P-xl0z<%QyEV^j8%v_;k$;5upxzyXX%_>y|SoNo+lER|^)87)pcrJo2wruZG zh?2-uF#zx((Z@|_<13EGb2gT5?si<9>Xs`xQ4;dUW)~oHO1fh)d##zQ+X<5TX15mu zTqs&Ug2GJ9AenhQgb7FmH7FW-a!X5-|LK94md6K~2&2nswXa4Ad7vF6jMVkTG1M-N zW^;+-SWWpz!b+>*SEfZ>EOIUHlQrDJ(=as%GmE3-wp?>t1yPKJs3l9%mSonjOC|~~` zMQbt!4-)LSr;ppYKj~2h7%1V-Ys1GI;R6MkFD+aySe-dJIEKgEq_TeBUaM?m^X4Oc zS~FpI_WGH9tGYQhqKE+kb+zxMMBLegcZN_gnHVu3EB7M?z(xv=Md;?U;4dw?Iq%v= zY?w5*keZJNE((jt&GDYciY6r{HZ?<6G=DtD;E!Hyyt&k^zkEQCn+7wYTNb2`+Io^a z@&~O_&!=W(OJ1*K^;Z(j%I-BVYgp^gSHRu?hF}r&V(X|8W4rCVb!2i`DdgzOhP5%R zz~5G^h779wi0hLG-#Ayg($TSpk%~O?w!@_kV?snk5k+AZ~GJGdIHW1SZF_ftrpv8`bz-L zE#vi<0MW`SOXM}mMu`LjSgqLw(v#EDhN>g6_Yn$C8``o?gNex0y5P3~mk;v2+ISnh z-G?~C!K)YeBD zWZWrP6*iaJk^M8?8UrFdzl5in%f0a|)@R1*C;&UMW(fh zbfV$6C|C=m+<1wK<~V7cI!hA9P_?Txb>6)!p;hMEJXxSBQsL9DYyBJ( z{eHG7Q51zEscR|9FT~hfGt*f=+oWxjtU9TQLlx7%nskyTmpR?)`R3x3wRoqMt1LSz(}grQTd^liE1<=x%flmhOt zS(|gL6j40D=BkBVqSFuT+Z#DNTzwd~vqG&IS$jynd3#}$ip~h)7a1A_UscF`l*x|u zBLM`l3k4OkUVpA#Zf-gbt*;n5MFqPQsH2~$8%t+hKh2Sd0K1d>xH9)QGlvhmh*d7w zD=V4O5CWKrPIScu<6^*)!~h{y0OCD8Qdyi+?8#sN8qTMzNvt{cmE%(8y3a#4 z!3!Q!BMp>jDn3sukkZtjTs3E*L8?+Mib*H#hOVzr|BB?aZP69>VP9Vxu(iEfLV);e)@Zhe=!CfRI&*T%ET1E? zE=KM|Z|&`E`fb2Olk}}1BLozVITXRDEsBe)esXBQSC&ttEZYDn#4+*`4Y2VW+k>EJ z-N>dRGzJJAqPeh{$e|}6-1B(k-v<-%U_!UG`$*r6h_n;@^6Lz|R)omB_+c~8JU_)e zsn9+Qd_{!o$~P%D#GU7Ewj#`s`R`iJWx8P73MzEg58m^!IC^IpZ2d~uv*&PgbL2AC z&-e7K_t{xF#Z2hchV9wzkD?l5U?F!oM_ZsVpCk7q`;M(6j(IU-TEXuC2%} z*Tj1fTnIH9V!=YV_;_x)Q-PN&k)(IHN-zp+V_E&%JNMvCZmtv>t+V}789TShW>9l5 z4Y$^3`20U|j2Quw$7<(Ap9r?GnGv0YdM2y70&WOLzT z8Lbmjj>Sc|-9xP{Wnd9TNru$+-61)TRJ+PTqGC))gX3KNvCmm_2CC8HT$g=`Ni<2} z2~;D%kXt6ES7+jFaEVvMJ6R)MJ7~pt)W*g)QS9sMtHU~A1N1RZPi0R}Ttq~~44$kgnS(d~E(RQj}ekG`PwKkX>ja^Co55%ojdS z(~C-a#1r66ZLe?U5tG5^4t)^IO|IZ22%ObZa8*}$@M;XOlud#NtP|P+fFej^0(_pn zX>}*y9XepcdINO=CdBbEDlm|AE)!uNdQnv!c8&_Z5L8LTMYFg0+!!3gLi$zwcUu+d zbP7uY{!D{^!}!Z(4sNqC`g=`oD944Khs|!iMN}5?!s`LA6Hh;X;=8*oMAI8Gv!Wmo zyIDs~dJe=@B;h>1Whw@on@JH;n-sB3X_UYm5j6Rlkf1iktx+gJHt54Qm7kIFe!e@s z)6eBWFCW0(sLx#ZF=TIkaar8q>{NxGU=1`>J>x@4^@5x|4rf__JEXER(s^0bV#CMX1EbILryn$y9(zfg9ZM?kv{l!}?OoJL+>}^zE&w zHAg4q4(_142cH|-O#V>X;iwRXvAtg)uYFxbC*X_OEan!qO(cOj4p%H+K?XK;)@ z3R}3ABoUINT*arUSrg@rWwvORavalnNAjUDC1D5=7+R7e8^RG+<25_^8LWO*2^s@a z*LPB`t^rYAST8xXeo~GVfl80LCmUN4XTfWnfR}sm-N(Y?UB?&hk$S|HZ!PH;Tk~F; z64$x!eh)xXgHC+s;qH zIEB8+tjkt4^;6l?40N%0uAS5Aph8Lee7~KRkLTOsPle-U^M#L;e zFY!%4kL~yEHN|4(k_*!ah5Np6C2N|8$sJGN^!4_&yT{sDqxMxI?`dmpXw@ufaf@kj z`)g6cv^8Uq9#Wa394?m=$$;4j%xM}$8I*U;GkIk94dMOIC+)pT(xvR0w2budqj46e z_S7G@I%QNkFwUYU{y4-+JI64W5H#D93nRD-=gQtR5dSbFKICTpeg@rjPv6NzsW8fm z79BS+Bb+dJm)|&ue-h3Qy}+-E7H8k{wPL2-cO;6BvAu*^N0q>CCva9EHoq*@0xfoI zV28G^WyG=f6j@AM%%-Q&JUm96hmXx}p)BdQ%mwoYo8Hkrq=|xt$!UnfL?bmhPGn^X zYu^top4hZc=n3WjQ^fBw%Wq-Uhv5foEDt!EMy(&f{4L2h{g7fIRqv4TUgNZ{r0(OV z0fF%3LB|9nrk8;>NX%uYzq?=;>2z0Ed7jPorfuzui&;5?HQhUXaeM~;{&cm*Pv{Xh zX|1Tjj*vP2*b;PXDik(|+#}kbR^Coat4jsl$it@TA87uyG0pN2Z}gP|Z+rLxZ8^Rz zYml230ZSc;Lyp>y6-;arGJi?2((@0L5Mukj`&jWERPYDrEq+c5t=&yBhe9tMI#kcU{nb^7eL|C})gnzWieO<7 zf|3Q!{4c|K_q_&dd9S5~BHV5!qaZw5)`kz{1gGF>N&TD`eOtD5ah_e! zM{^lTPw;Djy|E$_?l%wKc7*h+x5O2&64Z9a?H!!`;<1CS5ivVM$DT=fE6aI63(pRc;x#&@(rPOv6EL= z!coTl1DF^#N!Z!XvDo~*OA2sRSJGh2>5@4I-Kq?Kq%&e{B@tsiirL8fYST>EYTcVg zmW~RPUNDmuq?RuWZqeM_DElQbx+1{~=>;jqKoatSmO1T{Myt{5dNiPhnu-HBcRp6+ zA<@C~i{!P{z%6m<99s8FvvTw;ULo|Wna?@6<1x6l7SUGbu1Z9fT}PSZ69ViG@*jx3|r=#^OngkkQ!fy zXARN~Dw$MAy$-vzHI%ZheKLO_D;SeJ5Y`r#!AGr9?DU{uI=qDHw0j#r5!}ZS)n{vZ zy)xdQthQR9|&$zEOW9ii;dYBAh$g#U$fN{5MulSH!{uhpH{69wQXH8zFYkqL?wBKU|5DWnUi# zZPe&0L8noaxP{MZU_0z;!MMXWvG@3&29D3hA<})S#c*O_4p& z$eZSLx4pOy5>+IVk|gbN9(&C=tW8wG7g6lGpkM`Wy#Jmbkg}-Q5=XD6bwl==HSA!m z*m>s_)#{bOTiZjQNsXKG{{b)u?6zjlBJ<#hgf?`uum82H< zMvOyqGRsSj>J@md2^nL8?Yy`D$(;i()?1RS+4*&xwD*0{#+zNTn5b=Dm z?rya|Zy?y^i?fN~@@9kQV5im6q)&!(N`_L4Tayr`mTQib$Perl+ zJ@T}(5uim&u9;CTOeZiNxtN;4&V@p$j#-=6)%&uB_SJB1+J$(cl&17dNJ-K`As4qM zq~!)nnns_0Dr^5eKL6L8JwZu{pd|P95djzzlTnv?Z=;`m{fkY1Z<|!FlQh2du2&GR&E=-(p7BJ1aojZv>887prdKxzzqSnp z96%DN#I(HgEs=Zsz&W!?_Fy-dnxOcS8g%ZE#24;5av;KNOv;j2<{n@Nd>`4$S1RcJ zl3I(t=*xM-5>f;_fa=`Zo0B_CggKN937pWQS&O4-Im(c&@U-IAt7Pi^QogoOr$^z6 zSgK&%U+kpnXM0`>Z2yY|r8l?95h(R;+2|`O+B4ejak`l+`8hD~kim6;wDLk+vv!mbwfG%WVQrNBr9PW^xTZvjbw}yoKHX$h&%nh(n?@^U0l` zDO{C@x)LYS@#%EU02IU-J!%+E)_$BgAf)qO;CL|o^gDjSRop=4A7MZh==3sUyUk>r zK7wMCS#ho|E#0SS9UU|*+#pbVu%nZo`A~1gjg?Dt<+7jSrFN5W%{>L0x9aG_T zFC+o%o#E`02|zzLZdca2 z#xeirRRr9BymOb6WYjOBEeO@fzmm>5Yv48owKbx~ZEy02x(Q7MwPlj(~u;%zwv>eP3rC3Zfu%9UX=IchB0oc#0CR&LdxW_`=_U3BK*BO;N=w5QKouJGR{72o)-BaCa@ z)oXRFHJk8ep8w3hei{p4g6-!}WhNx#eZMI6Z8awP#D9WQ7D-ti4tTE-6{XPY-Uq;6 z>3>BlpqxB*%1&3;gBcl=Fd(kVS(0(@+|ro10TSuH+3)%z+VE~8hP+dYhfNWQ4#~?m z6%~eFf0qr2j-2C9eept$NHo^aaJi!+OdP~Q0$yZ&f58`^r(KsL$2K>g$j+u*xY*2_ zKO-)_;8G?SVY68;PbsGwRj0_(>2}{we4d8;*8oDyE%wKQ9M|F5* zSi8qb5y?);ecoq?5qlH($BRI0S>tWuS>4a4*lECYrGT3z9cjI(zoqr9@jIeda?8=( zvThJD4r)L5+tpy@Qgq{ugV^M}uUubzuUHZ`4ja2%+413{pN+~QCOHY0Q|F6kif?>B zs!VJ6`wz{~ke!VVE3u0nwZ3>S@r|WMudy9b3sFw@7d5aOYav@sdar{5Bk3Aqh%vgq z`)RkuTb=6Ru1oxh;CY|RnxHrdUW^dUD}Jv)9^HBvmcE@k*r&=OQN?1by?bWjEE&aXB56%p-z@ zfH~tpgM6E*m&cBrt~-BQkv%%~y44qt6fgVRH^YmWdI@cHn=cvt+q?6>K*(;MShSyd zf8XWCmiLq-YgvYcxa*|ZdOfwdbIZ!6u#bbkVwI6c#jtBb5FDf0`qt;(z4GE}nss|i zv@+6BEc)O>V@!?@CtB8I!tb#5eQ@g}iZPB?Zf68J>^ouMj@3`bc!HIzTPIHvTyL1Y zPQk~Pg{X8v+t<#tPaA*&n=DzvROyFeDQ7KZ}MSPMkO($wawscfG|#~;wIZY z!juuzuHk7_2r@5XpXgmFy72JG2)}9nx%_4YO8xQp&SjotmAhYr7{^3t|zsv$N@H3J5S@>o?-*;l^^Yh+{tqHb|SLQ|l zI%BEb*mO+rWo~Xxv>`BW%7G4m{UNqZEoAONqC3m-3luUi821IaT8S%yjr8GP5Uc|f>1&|styMsj$$_{YaP-eD zP*Mc_mCFovDlw`|G0BjZhmjL^3AChM!GbP#B5!1Fo%ZV@$a>_?;i@*)ASeM7(j!5T zQ@59Ugi$XsRIfuKs>)JtWTv*5+%>c!%y`Jj0$cCP==!Y)StVLqTbVNjS&qWhZ{OJL z Rd{E>_!qe5q<&G1H{y#=9h^7Dl literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat4.png b/www/img/taxo/cat4.png new file mode 100644 index 0000000000000000000000000000000000000000..0681c4855e366e40ab5a30402f331c2451b09215 GIT binary patch literal 27026 zcmb@tXHZk!7e1OsAk@%%m!k9{y>}I9q9Q7Uj*7rb?@0hD0un4p?+PkPQ=|!@2}%d0 zD!obzMOsL55AXZ?-)C5P>)HDxT3MJf(DKlNKp=)oW=1w3 z5Lo)`j|KufIS}L)0e%p^X1Dx7AUf8wKQJgOhYJLvRljFwXl3Q;6X4_T>EkPO$9 z*U!iOo|hX46f&8c9&Bqn#t}d8B{;0GPaa|uH{FN_4TnE-Fm}q|MoB^$m6WT5iy+L# zMp+_eRvnljt8+Jus*r59mDJ~GBo(-fZKZuoMw332Hy!To5*NySHfs*+i5p)A>^VVC zOXXg^gkJ&UzOxcyv~t#%)2stFKp3z93UeN0e#4}}u`-+n`K_n#QJ%0L#1RH2gxNJg zd`AYAFc#F5{E}O15!lrX5Oa2oI=3`4XM&p86`XACz~c;_m(uQBV(!h7`pi9v>P~44 zIz;K};*5zmTD1wC>ZLW;CY-m}cWTXrO*;}Q66lobbEKJPSgK4O%fFDCSDhcXWmJNK z*e-c-`r0Lms4y!e3bHJU%rAjv%@B_N{JJSU>q^)0((lrhfjNIx7ODXLblKlOCbRSp z7hPZZ!XWJ+ajDF29wT>$ZALPi_&^-nr?(X6Cx?xVYn4CMepFUgQY5{#q6F^wT>dp> z9L9ZA?}2?O&3pvCmdfVzJZok!F_n36Id{;`$@rmI?Vi4gsU zl&XJj+(>7B*{;aKxz9whjBhEdX!ba#vz59#cvpSL-03k!_5-h!jM&xgQjZd)TYL?3 z`SC}B)Z{<`xPDFuV}3iUactu2W{fH%TovTjv=Dh%rPD)jwU!A66PeVXoOu9W;bIUj_(zMyE4`5 zH(Mdu5S<1HBom84=%9NU*M*q3g<)mfCjuIX-1rZAF@twK>9gXZ;-_0_%%k5_vXoQt zw$lUe!y3+B_k}dU`ybKG^81SY0tr6SoZTZ_JW|o3)s0y}Vvx){MUS~e=sT!(Op9DIG(OnU7Oo#%*S8SE6OA^ovZ244uv9>(4pZTpPaR_sR8x>!U@)xAmt=HX-L_ z&U2oB{UhuR&zom9qBj1+Z1=9+L$BGcv8;&>-z+J0tyHvE^j7rBgk;7ja=Ly!Ph*@r zZ{TFDa*YS*$ZAV}J^PRG)gq2-Eyavh9&T=~FTcfobMG1L&P(TiC9Euy#VPaX#$`i5?oX|D7E%w|JHTm>z3CG?|=D&`4gR0YhPyH zY@a=87#OW#sO|9O&KJ|j8-~X1mZFx$#tV7k4$lfR%j$2|So%9$xh-|)!Mhu!qt9z| zYF`F@2ueDD@>f5J>F3FX=iYAMx*O+Ry`}S;H>@)6kwcL~%5-3)-Hc8CyB16IAm}0L zAzsN-o=f2zw+6R6Pc7FI?xEy}l-(4Klsw)CT&CRHid#x#PiLp6&cmL5GqzuUOexQN zoZ1go(pE~pl`?ageb2!*6pbXDOwpYxBoO zM$q4&;)4L99T9p^%=nhkJRTn3_2kbJuP*VfOA>cW&y^Ni4CG$TIqu)=-;-65UBA;` zFY-a)gYgHbx1x8U_fPNCUq64b{<{6kLt9#FG%RP&DEuU3YnN}wX4g6NVt8NJ?a+$7 zt-r#@FrqC{>)_|!5;2I_8Z{l&ND?R?ywiGnXpQOg%V{uCmwu4Zj+NjdBrY#hDNeYA zyJzKKqfN!Dsqjwrg9$P{jMLvw?03xesJqS_^$1q z%2LXEfBTy)0``KRn>}Jq;-VQ?d9_sprj5p*H?5UMJUgvEy_wyv8q6ul?j_ANGhg-U zl~obWQLXxC(1YJ9KUB7Av75_N?`qM~&YX8;RL*~pjB;$dP=AuLrut$gVv@PVrQk<( z0L7x$V!D6sE@LC(%S$hp(o?n%rhZ#n$jMzmf0A$?c=6bcJun;*{wUm3DpIQPt@7KT z8(%6c%A4;l+!?v?&aUxGP?TW!%wSX(>3!hkz|O#JMqj31Zw|}0JqPcXsU@gqgc2^f z*tyJnPWH*pX3Kh_4^mS-uo1P zVi$yV#dhUI2@*+!fASZ!CAcK)(SxUjwYkF%Kfr;D0lh)uK~I8=gBbGmbtXn0PW>hq z52eOiyvcj3E)(9cPd{hgnrZ3bKhU3hMOW2dXYMq_(tLnK$IR*d7kqYe7AmAwcICwNmfuxX;D6a z{Cd6b%I7BUyNzGw4`zK=3At&jX+xSDn%9D_Z8g`u4E32Kf2CffHfDMya6`)`;s>E- zYv5sVdU0vjovsr>YTahtejfC}m9KK!60~`^d|UIk<|>w%S97z1@|$-8mPQgi)&@A- zY0)pppAPE#_XMN-Pv4_eoP*}6D4nGX&DhL!N1_EJXK%ip^@Vf>A1GRaF(*y)^Xuo8nZyPe{d`h9{ zwo7tR6{BWBdLV@qcq{M^lnw;(RAzk=Z7q)n31Li>=FT3{|9?NUGl@YFVs!I$q8g&u zyN@DB-}5c=2VJT9-eb-M=pPcDg7VG719?i!*%(!Kn1`kEnx@Kq)M{P-Y*mP83SVwqFYD-ZMntJN<8h zv-g8^?#L6j76tBeOXlNV=iJt^mtyq$Z-hz^3cYRMF5=$9I^M*lTr*Do7at*cDf zT2v51cztTt4Ww@~dB@K1y07c)KWy|Y|Mj!Nc&y)WI6q*zKKo6q->`Ca)Amqb2nNK{7aJo>4e{r%WVqy%2hIvD{=`^+^E^A-hY|IEls{4n zgJ=qd%+>1rgerg2cxl_b;-v1y-n>BTusO}hY27bl-7m$>u-6Lz*T{^%x`euXx~o!B zC`RgKe>KjG_Rc%nriM{g;D6r)MKEe+v}yW$d>}jR^*+1~plk0Re5U+Z4OuIIfWXQP zUJr$MiwJx)UXO-9w7&-CSwRx25h}*&mH}Q)8I6r8;`ylUoAsJ?9p4n(Jw&f)0WF8; z_D}OMP+FnD6h4acae;cHx*4qP?Q(?lVe-Z-6Sa$S~ zx4*)d+XrU7=TZUFWSq5O?6soCe?A3|sFtJ?_l{ZRMO)cHZr`Ta_4l4;q~=>*CgeT&i8BQT&w2BZ$k`In-j$%*#0IK;#bMH4;$_7;nbGK%^$Bkm; z>E^nMumuCg$wFLux0Uzd_OWN{#*hv>)T`tA1+|EPF_B0ALP@ylt{ScCB%_NEJDY4i zPQzZ|DZ{@@W&v$m2!z*qi|y|ASYy~hyk(c`#fo`3zX25=FzAk3OZc;Jla)`GAovrc zoz$?$vi~^fUw0Kxq@IAruK<|k?t5(XA6Ql+Tiz`l7f<+n#9p@i7j8(f{6Gd5)pO`^ ztn%MKuZMi`XP!`IHE4bJdrHn#>`7d^r%s9PnUy~kTM<0xR%JEqv8BZ>Jt1f7e{N1w zzS`dbyW2W6Lj-o7r!FpNcAzxXZY2b-nd|{xSlTMdOXJf4CTo*bjDIbD+AZ2GuW?!) zg0fNLXH9PE_h+->2gOVVe6v4_)p3oXv_GmbJ>-V|H+bEZ>ky?|pgm#a@7!OSS%I9B4I zg?0=LZPqPB)@>*4DyFiG7caN#@_RgAsF_{R>!x)$QV8<2PW;sc&jKlXjK?DMKny?4 zL&U{trh81E+$<1UJP7*euY(nnJbJG45S3^2;aplDH&p=0`?F)g^DdSL z*~PB_NR+9V3QKIZDY2Bi5Ly0%{nd|sUcPO~AFu2+yCf-ZL)H2nW=cE<{gH}s)%rNk z^mGT-CoQZ^mmuUy4Yyi)r>%+eU-Px6qC)Dm7m6F5w>>%%W2XN%7ByZ2Pj~wi>x9(SKFv&FA8{;!QZSYW(mi8el>)DY#vI>19nW@eerXDwYWkU z5+kCBt6Q`u&_zU;jgo+$3j6>Oe>DTJzttuyBpic}#vNg=q9ULVEX$V^t6AY^crCv8f2ZI@_qHLEAyD+tEfLqVfmB(as62)%vg&a6#nPNL?HjU| zr-gH!;l3}nn68nUmfD}HBJL}^O~uS z@Iz%cdRuih$k`Aord6P&U-Lu#bCLzTzz9R;2~?GYod@mS&-kf|F{A&5?gKbW<-NB# zw-tHBi!qGq2Q=}TH^rQNGS!J{R(FDlA(`{O6Wt zY0ic+P!i62AesNZ)9+`kN#KZCW4&KN8ya>N@~bkfcs;~Bf@ZWU{mVwwodR&~A7w7n zow*?s$&cA$=}c$BKKlICa|L%?z#L1WFmn| z18ky@@)}zHVh#XT<>i#Ez#=|SQp=Ezup+QX06?90v_A^@g_KMkwh8K3GmreJCC-lMsCZKSjA9F4OYpmEB$cz7uMCI^YF=w2nL~iy*zi87vWCqjRrVYxGIkc2Y{>%>*4!@N(QY~#qL?t5vKJkbH*8NJM zP*Mp(Y8$A_y`*!v7rzXaZ*W$#04o~2@eFdcPV)`*&0KX_A^ZV;jrj$FLLqi_8`b4O z&rm@#*&HA)o?zCAFYi7tO1ys|b> zEq4PX=!Q4G*D%fmmG_*Mwtez5tkxcTYsdY;Z%=|E=Fr^Eds1nbXVb{t0Ptg9>|oyX zKf0WkW&5Dwiu(RiLWpt+^%6I%I-zSs!gB0ApSF)61f%W?dvcC769GgGWmb_3A4U{f zi$mi$^h*8byMN&>xr)Pp=`P418LpfepIY72U+8~(Wj{hqgJK~A%5358!@~Xt{(Yux zi>=O2NzQCYL~QT-kD3xs2)Fb_vWx%4Z&l1tsP5%z!R5t1Pw|fbXah_4V<1qar`jm` zYWVTwJIe~}0^ZmRwfWzoi|_!gaNL{#8x^;gX6OO_&LCkt1MHHT%xTUriCg@2ME>!Q zkb2v?2`UPzqGq}$a9!~~gYDja3y}8k;N9_+^_!;MkuP(GtDEdKqTSQ+8>*AbCC>k@ z&fJU&xN)%Utay4v06BwY)oE83}Ek$MAJT( zL8DKUY1YlVZ8Xi&UFMczq#L16i*G&g&P4uOjbO0ga`|KBPo|oFF%qm0*r2C4-x*2x zcV)7-dH)Y#aBurRk??;F&W!p0*F$8FCz4+6hzUj^x2Z4kc68H-b8%;8m>LGs{2!7Y zg(lMXqPMpkj(2y5W*l|N6yo9bfRAq+%uPZlCM^+h?&y$7-UYkMrIrNw1gh6N@9Q4p zYHuRWaYM*?Zq|8WdF7eS;>&Bi4AX@WU=t~`4zr&glmCv5SyITS5cl`_jyg^C|8Qii zlgTFtwqqiZ^P>(_=GZNEMb^ZZ6z7twt!7CkQh(2xrNw2YkTmz`Q0e63HU3hZniVob z=~jKnMBT9o6g_wrpnemU@ zOx<0!e{p(`3KKZ=`Li4vO*uVWNo8X4IVF>+G7uCJiLS@fyqjOWJQQJ9qwg2EW=?n!sfLVKIF`CLKeocrv7gzL*9@2_qtJJ0OmSx_Joy!+Jv@nKD=P zerDziY*`zn%B1WI5jc)DfiI~){$)<%5}ox4PmgeghNtRvwDnVMD14tff=m=wsapMq zNa4V?li$C41O;bK_DE9$1KX6-Q^r53Rh1x3r$M-Ilc}maKiVWDo1;D)agP^TBgo4s zC@-~p`Fqm+%qJE;gS!8LxWr(FDFdpj)pSfENfGR5=v>RGrp1aa-aT!*k9^~T2%bWl zQNKt;>mFWu&5=aESM-Z{$h z*NMF(4ZCsm>)I}Ey?5fh|Fv`|P-az*9WE?ndw4LNk`K7;w!yapC{dKQ99__;yqc-= z>Q7VSZz&0De)wxPh!If}ccVxmWp7Zr!la-NP|Uls1LX&2ip^THkoHm4nL1$5BhQ(}OMlUq^1%q-O*nVv{Kk*T}^|8?P#Dpbx=ueqgPFliu zeSl=%3n!ptt{QZYJqQlG{4J z?yhg^7G!5~#UJRv{!JVmwd+w)$As0@(d}(V{n3|TR+$nAERc#qF-_Jesx@mR$%=e6 ze)Gb3$2PKz3jC1~W|>aNf2+FRvL_xJM}8*hT1 zrCqu&ni_kWeR~CP62w-#r05<0b1L%_iPGz!>?;?%)8@lQl?S3)&_L`v9;$lp=%54l z(7j<6hYdI=NF?iG`vsQq^rH9o5Uvn=_x2hLyxzXOyLYw-oT0@n#Ln}Bug*Hd-MK+< z!qtq!%@yUe0)tb@BfY(Emu>L%fB)9k)_PHIL19IZe*zL9$m-cCv)~vvhhqW~`Yi7V zUOqCAvfO2=3V0H_NIp5)8JW82INjXT;C>;2xImn`DW}sEdb~h-(B0fvAt#8A+)HM3 zq8yH;-n?n?>vzrk`nm_+mge#(oA*JC(2qM%o=R|OpyxL8gQ%E$rrxT~6~@Bh1^6Ck zJ(4!G-6!|SQ+;4I3&S8o38$rI6B;JFV3!*X?AgQcXn}t98hN# z%*lVO5do^Bh^t52Gc)-ulxhVf{V8KToshvTCa+)I<9|TnmcHCf4C@t+EfCEM29GDb znjjw^9B8%p9sz+2-HfKXjwzUUARhffU?_1-uA_9;=?f*nUB;b1!9Eep56TQNdV`wF ze3pjg*6PBH$F}MXDdqxUT~U}}QNE@M%KHW%v&;$-DRt)1ec~lE2P) zTG~%g1W$&M4@XfTUD{Y9s$U~|m$zw+=Ef;g20H4Qt}dbZNwy3WrY7?DMD{oo@6trwZ!s`c@YGjKrN9A|ue0KNAxqM@Q|@sJX#y$CfCH z@!D4?gR7IXtBX@;@O6zjpU_i9a$=P%p7hrql;Js}4R+P4!-jUGhsB5)}ma6yC!C zHAbiPi+&1svZ7kn;Nlz`&sh1ywT&wl<8`&bm_Nj4=B=gWHrBlo`(6&UVZft>yA)bo zqwQ*cs@o`JBTv`6y6y{4e z4s&yHimM%I)#f*=;cqYkEC1}k_jl~C543cR$wg#4Jj|N-YDh%b08tkPC{HcIZ=R=d zD=cBuPm+IZQ3h!EhmTA*=Vw=94A)zlLSXz~`1i2w-Fp0w(F;(!+ z`9JOMgt=zGMm5~veRhz>zS*n1=F+qC2(4-8pCPR3k&Rj&Oi|G5eBHOxm*8d&rih@g zKt!1N-3&{XM?~^YUgZH_`S9|lCHZLQ*|U^K%;{)M=GvI9l_DO9d=Vj$C7SER&lUKm zx$Jj>^lT~M!wZ?M$4o4GdQeJCjffSJt2}?Yd2%Fu>xNSH6{E+mZvizST#Xfyy@sFP z)cq(Q^Ew>$;2ArcN-u7n)-DViP5T@v+$BhY?vhF5zuNsclpQ-AwekS5?8$#|&|9Tfp>0Q*hTdj_#}kayOn#vIWU za66>l7E)VmH=&MUzbL9iCndq8#7hlmW0z2eFEU^7|4N3rX^EF)!k^|c+>dYLSOVWJ zEE8=nU}2qh@oEIi|;B`Z@Ksdi1ezU%!B0n$3 zhP=6c(~O<8Q@<0Z~0uRc^)Nie<9O`X@xbY2) z%56Ifs+Ft;Hm~82DO4-hl~a-(n`>IayZZVey;$ju0@1wjP%6xeb4r>Lb)%%D2)`dK zy68cs5+}XMEtudPUmPDf*SjvqG*-w~J=$YS%+I!-Qoj zV*?=iYX}uINWkHkdM&lppFcuM!+Blk+zUgCPap;9d)up zlnZ#0G}}#s<&gDbU@+2)!6wZ0Sekr2gls$d6Lz67G#R|ubFSaO5s!F8ozJB+*N4)} z1>oXaQ5Gk36(Hu)Hmot`7`fUCR79YOr|?=^eqGAxX8Ua`B9>cBPFTaA>l&NxbW8JR z^yWJ63P!&b`@DhNzRT5GKuXPWnQ4g#dPt&wkEgd^Gz7LmxB1c9gtpnA_}X>hL@rY~ z-kiEZC+Mw;eY#P-S1>KL%DMJpUL1R&QAs3WTu7OupPs5HAN|g>Taw1poT^vPi`m%~ z66B~Ky4}u;s`;}pwq4L0KUql?8qd=sq#&^}gC=$!kuI_>@OmF~X+?|V7|a)3U9HU2 zM%~*L{I&7ORTqBbE$uuykCn3AhqqBE1?0KhB)w_@`q+`lT*Uigt zGwipmxw)(PdDGxPQ|3-x9cW=OIzjn6O$C(O>5HhDEY-tG(8^CoM;#z@EbgtZsw}wuot3ucO};x zj$xb5sc5|q#=>F3!k~>AAcJ1NGe)bJqW@3)(!loi4DNPe2aLATf_%Cr>WNHx#63JB zt|>^SuIP92aDuz9O-*t7Cz|;u*@RXC0yZGeLT+c^5VD>F8HtFjHpHtQbOK4uReT1G zj?&f)pJfd(5vUGk{Bh{wB=Y(wUN!MoR#(b9tc`}gmNWBv@lcGt&d z(4IsQq2{=OYu2SPBtgf&G+vq!l)o!u>#8%l=*8LPC6=^#mUK`MCwB&y(A5WnO_K6T zq?1II^U+e01)n4bTMGUV6WA z9z9Q;Gniu(Ei7uc$i$5?EwRIhpSpzX5k?16eaiCA|{-IcsBQcOz3u(v6ry`;h97r|yy*zxivFvUq>W+?zYi}Ldu+xE#npPLgxJe|@UMA#F8V6E_e zAdby^38&s9lHwVQY?K42lL{Ttd85tKZi}+L5=pj}a61%AFPG}MoQ-?Qr z&~C_C+*m$L-PY1*c+qf09B_`F(%fMMzJX@`l9wCPK>>7tjuc-8PXB~%jgNS$_~YPj zdwaGXi@wcF6ul0Hu(NL9 z@0hrIva*GmpZ@);G$5#ZaJf;Rv}IrNSuV;%sMm+KP)?xsG4L#IkLZ*zB}IcP z{3drU3P%jJ17yIAM~FmRCjw#{GwCyW@S;Y6OeLVuJMhzPo$8(FcE>yhU`%yTF&#lB zQ-7L)q=p?W%K4=i-%v@sHNr7wRI4 zz8CMJztF9*TY+yP{bkL}t(pNc%n|KB!f7>XIBR%_;I3|`I#RtrX#KMu|6TF>2O@yX zh*z8|l?ZmYqY<5S==BDYcFUl>@5*&j|&etFSK`ymLJ!Ur=CzR-+28 zVo3ckB0An~)(a)UTJ6O%X>H_90J}M9j_Rw1DAs_APe-0j`3U?9AudUbCWD>yh6i<5 zzuqZh<9Yemu-LP`s@eCz* zl5li`^ih00m@I5A~D<)?wQzjA=B0ngt(mwBAD`#;cs3?mtf#B%N;>sbgqt$mB-k+39`lg($z$qTa&0vuMTi`(3WO#IVsJl8LJgBre zXn_0(ry8w;s1$8&I9Qn5$K_-)Wc9RN_iszDlCJ{P*MIa(=!Ajn7YUx!=xBqNV8m!D z7177LOQ|#H%*?p2eGGMB$pk(a{XJB3C~2;ztLrmH82({1bLa$O#K587uqFQmZ?HM` zk}1`4<6I!k=D^{=OcY7D`6Fbr{&x%TOb{W2b&Z8o(V_9+#*?oaPnLY3Jhw(o2 zY|?FLU~>`oc!z~!Q^(pxcp|TBex$(fbz+yHdXFjCm-_Mwte@gHcfQ>P)CLzL9XO|H zX(~8!UFZm@f0V&cX8{*~0|>-XM}#@S5Z+asPB_!ZCfMLi@T;MLzR(<-ovJOG6mT*14yUVPC$bA$40+xajPOx|>4&=!8i zv8AAkc0R@Os1}4<5L(yG)bBZuU7{*`__Z6h5e><{52!uI#Qgj1GcgjXML%)dEu@p9 z)zQzN2MRS=3R`y%b(yIjx8Hb0hRVsFGC6Rz?vpl?EC;q&Zktmen^SQc8DO{~9rLT- z=x#t+6O}qT z)-F&&7pZALdoL(%(VktNmY8w96G&2=64Qq&?WhxxFoLxA6oq6I$wBTLv z4B6CGQpxb}(KWezz2I;Kz0#4g1}Bz(w?CP*M`!m_?}3t6A=Qq=e!1I^w=B~aKnE>z zdj@qU?1BP!h?c{V(zwoNIPNQE&e43MyA;YxPNtdWuw&{#L7^p0VfdwZ1y~({%`rx5Id+&be<&dJ3e*unKVg z;Fl*-ONC@ksM*z*h0b08$~HT3*VtT5hKIMKRZ0|`9&qTV&bLaZ3xOy+ML--RpPpj5 zBO+N8-kBGASf0jg!D9oMg`sa}rkg{E8$$!S6x?lb&+A<{IPQRI@|;dU;aX!b5OA1O zq^|g05FB-LHrkBDWC`PS&g9hQ=BUeRviMi>tI13R1;N4ZDL7dU6$|)}r@0MF3us^Q zlC4fWa9o3nY-^c~yGS<)F@>)taGV=BjlcRddV#%4kV%om;NTtue6AsLbh3QD@@;JD z2J_s7acQLxd3f`KE#Q1gQ1JKZ!8(%`wLuZb{6XQAj8R@-*Y&5MPV_06xI9t3z3tFy zNfP2~oE-_9ednKvT5rSNS|3Q=?)Z3F=!!BIiZ#**u2=@8F!>1xri)~6Xds8r#j(*A zxO~cZ6Z!!V@EK74`%H_y>LGDhY8}yXL-=}TVd_%@76wUYGO6pQ#3_-u^6s6)^t2X} zLJo6;jvzUY-j&2tCehwYueo<9HyDAsdonlI_t`N@sPEk=u7~p4Y((^r8U?>UbHszv}=;b zNiWOT^g;2w91m7(he$n!y~{ivSYLUO9CA&}NMRSLC4W95^6$}R<6%awBpeDhql+f2_n5A73!3+Onl8m~COJ>_VV~Cs@6aUkm`Sku(36E-#4#_P#V4gK z>E2&?^t4~NL-Hsw5uX*45}(>2Aq1#>AQjWX-`=a=-L0Aoh>wx~!0m#W{f-1rGu*5W z^APrmRf*!!Ey!d7Y6sr$-+0<4H^HC51A~Ts56yL_ZFs-l1znEEm?xVJFHvD$&a73LW)>g zu-A86D7I_wivP+?*kxo))R%=Hs{>wMl%*wfY7|_cZP??p@l-sG|ENU4sM0DbDCnD- zIxYBBE+q}R83A4)rM^Ovh-=^O65>GOM_$U-ofql`pg!}EYu^ro<#Zw_7o|-cy3Ntu z3wVG75#f^yhmh)WreAkF40 zwaRn^ymla8Z-6=e?>=&63-yJa>r*x;69LbSJYC?OgIxyVkXKrDm6eQ>=l~LOEw7-c zHab@~aOK}(j48|+F8H1#81X?nes+Snf754_QTv!=`y=%XYq{inUvX?`!{*^_1fO;m-)XhIKfsf!3oZ;^fQ9Bpq~qNZKk-JM)P{In)*vzyzF z__)`Y2+~-*0!_RV-8lbdJ)d3#PT|(nWpU&u@hIppF4f zMs5E~7&vzldH84dURO0x2mVuO<56{SP!d%rCtFIRE{JP5n`pWE_vip##@N_9+|)Dj zkmoB)C@Q!}$+N!R?(T2jd*RbXkW4NNJ)csQyi0mu!O|FEO=r>YZK5Qn@U=%kl}|ZX zp4e`oaG6}dRKVK!z;Hj^C^Dqi0QWP3MyA6@4s*ADZ*Gp^ZDY=hY|A?Xk8fIKT-f`J zYuI1OZ^1u5@3GV=CVeT88lYAHWATlOkpn-vnb_^o)OPs0J#{nIGEGSseq~6MyqSBY zz)9725=)=bmRf{w{sC3@kG9MLi$4KQrvc(h7sc1py@4#seet;IHQV?->Yxnl96f&_ zHedg;`5u#BC(mMAO;4AuPV?2kE@<}m>h!!jUedZzlvfc~gk2qraLGluYJtG9?|NtF zGeF*QcXI;=QaKq~u5t>AYB5bnGHim|!oF2X*;8sN{e^jnJ41b{s{KM1w?Pt_Xf(xn zAcSBIv%8Mqwm%|~)?ad_>PDq$lP{{ z{_fm><+fhq(Hn;Gy5r}3h9wM}7%GxrGA;ANdjjrboD86A(HIP-$PoFtOj#zH2k_Vj z@x@tikgxEjc1YxrV2}olaD@2stR;#_=4Z~LqpP6S! z4DS}ddsO&^LMCHZY{YNWwzNb=gzxRQj|qAf`-{F;G;+}1<7~pPKD^Y2CNQ$2JY!Vt zPGcCuS?I-m*P{_l>r4$(xVmR9mt^3X6YBdSbgw=pr&(TcGSUcvYt+U!@WPcWAFNM+Yz`61SADMh)7NwOE-d~J3QS+snmB0QGlys{t6C9KEV$%GqbSS zj2iP=fv++-zppP~upQK4>$r%j^lzQz%p;MG7l5pb##!_jX3O$Y5pc&xJEE>&ZSKbK zStpC6LPk#=*9G~jK514ziBwYSlxSw9BfIbdA*GNUCWraygK&-2U zDWpxMRk&SN{m%;(w@un-IT!7@OggZ?%qyn~DP%+C4sx4!-qGI`!NK5-Uh}t%WR1dl zWd_SLjpkdJ)Ah(cOhA-(znpGVyDEc0?EvaaG)r;q8F>k}^{i2Bbi(7}m z1Bu*!V?HRw1yeaK(9S;S)rlk>Q@?sl)-`B+bks#J3%!4h_MkD4oCd?^;u{3UYd zWb%Ag!>DxQwbpKqjA9+q5s6M~obkk3oL7=ABpskFB0Uh>mBZ-xhVVwYGwE62wfxirkny~-XA3C`|l zm^6hVBM_RyIJ$sFhB|pz#V^VenW-YSc~L%0ZK}Lp_Nrq`S$FXtSolDD|0)>64i{Op4hRy%qQQc@~v1n-Yg z(I-^N62e}$C~t6x?yY)iI<blg=b<+!Nd(1ARgYp<4Ej#5>CedJ-qt2E>@NGg z-^tGB8<~1q$MVSga!5Y>xSY+mn9a^S>iC%V9+!`DF*8@T6KDp;2qeuNf+0LV@jR@M zNbkgN#*?Dq{N&~Cw=!SE6*76}FK}~2;`Q@L(kWHOI7as9_)w6O_g&qG7Y#llo(o!< zoRK*&;HG(pqFK>3yFR^mshf+#L&3qaF|z9?JN!?{nXNHJ__&zZXpa2nA}u*t9}`(e z{}#=Txa%hwbK7wx@<^Imu+82_+NP0DO@>32i$Tv36f#v%2@oh+IY}%6EQZ++LHCbO zH(I;8f{$FEcdyz!&6!uP$0o#Bas^cG&7hNK10NQUcFVn*Y<54|Aq|1s?Z}?l#4D)t zR7L~+TP=;jKgYTX8bgGNF9IN#o1YtD80czww!6MA0US$;h8*$K(Ze6A#X9K5+AaZV z*YQAwW5!+ma`j*~0AchLpmy!~d#qiG<0@&nDqkYxf+C2$#uu@UOGE^3EAlc4dRnU) zOi<9uQ(un{2jt*{9Z9oCM>F~Px{PLk(~u(tNjGn(h>I^%Dr>@o!ZWe2q_IIm`7`)1 zdcWm!|NIn6j}x!F^%uApQ?8EOtF1|+$K9*~f6GUcqqpxmpRbVmy- z{jJQEgz;!r*6bI4zJpPnEWZ1Xu+Y2Lt4QhYzMbQ)ZGclL2s19n2pH1%gX+Uyprq30 zcxzYX?8F2`M;(G-&!VFXl3vXH61 zG%EuaA2`X}v&#H%xW&^jp!!B0zHMhNO=jCc+rvnMu&jGo=bY*&?qCbUL`SCPPA)k6 zT&7i39@_BwR5M~tWj;&!lsTFC5$v`RPLa1^f-@pviZb+7vc8`Ahb8ftf4CKX@ixsN zVram#y}?AF%zQ|}=%?rn+Z%}ClSgu^6w96Kteyz?N43Ruyty?{3KaCjqMIYhf5rf38Bf=iedsU#|gM5HFGY>{*e}Cy~ijNj|e| zjR!~KNpJt?GcKCyu<$B28w9y^Cj^8+Jv$YLr4_W#PIMcVS7&q!0=HII?wpc(zV=yq zHQ>>U0>c&tAx`ug^q||Y7TlOoEiF19jKB#@L@-cFDfoElX;2E&*A))`S=^l>_djVj zQVeRxV^|=2Q*7FhQ}75SX5c=i zG#j{&uD)rr`bCO@Q)1tOQP*$AlxJ#3g)&$O@90+6-|^&Su?r)g>YEs{eL=u^P!x5c zRzMSrkz*x$pzvIQ@auQYVVugy&xagAe zpVzPyQs=XJcUJoP>hnks5;Zcp&=C}quVu@+z9sEl_QEb&z`-gH4iBV9eKlijwg0y6 z*WAChS1+0UU)6m3Khy93ziqZTj5(iUb3PlBoMH#(R7gdXkyAxZB?;RMbIc^70}HQG zNs>yvlo@5oDV0N%^C^muv+euzet*8V+vi{S?5ExK%bthpdR&jk{Y0Gbd^2`h-OQyp zz2phRkIYI>s4|J76c^;=+(O2Gm0t?u*j6A5^UT_a#v97K7N0ITFrY|6IhPrwQsfOg`xQaDE?;}RE-6QDoH62H-Q z)zM8M!B?ke*bNksyU#cr92n zctaR679c-E{aAByHJkr0-ol>N!;YO7`h`KdrfYcmGcomj#1V>lBGA^ zio(2TRMI`LK>{_RU!y`U46=eqm?_be>HVbdboLkBTp8ToaC$l*Fc^*AD!X@i5$)b$ z=;fchhXoHe&9k`&wv|&!vQSx<8lgJxT5sx2Mu9qk>o`=Qsi_v+l!Xm3#)|bh(tk)a zv%!P!SCL*RG!r!S2+i>@uBA_&1n9(7O(a!IBPd^N)oWF#*4LarjLs|y%ke~4EJc84 z>RY@BDB1v3SRn31+oH<;?Wp_UvIS$>P*V#4-&n3GUw8<{5Nn@C|H0iX=d9^u2V47o zkc~#zG&F%vcy_eA_6T5?5-&0y)uwCj$2UhT;-%J|j|4hO1PX{H4K(2%`|PfS0zv#* z32y^xyD_fP@HO3dGg+|6djNg>j(AvJa=tLOUJsmeh4fh9OJ{p}(mknYyj8pwqBm9} zAr5*$TQZESY5XRt?rYCTP=;&D(ys+uTc8%Yv!3LwJDzVLt%8c-GjYPe%>*VADg=jk zBg)viIzW|HhmM*(JuNQg*^_pA)xKViUPs_@L5Gn9!x`{BwAs3;cyyhr(KRLLA_njJ z*_d#SV0PYyl&`FCFr^yOqzXtTMo6U8jkPr+hyGtd%&XdJYL~}#=0_^PwiZI6DD72p zV&lsQk)38qpo}d{$f@Y}iE`c+mnjpEnnfM*&v0#NF)?Rc)%XXG=nj<1EF77kHPbblYB{(VY z71#`q3_!X#-hXOOp`cFaB6VuBf8gm*c8)iq*)kzJ{faK$=OKQru=Xhi!;BCmk#KMK z`Aacd`PgPug#1tGRAtiorGOFQR&Z3v)5kH9!j zHJzFfjP`bRC!UAl2MkSknQ|u8Bv|wM!8bhr)&paGAGIFqS5^{zbvjd?=eM@KYZiT5 z%y&*WBLZGq#g+I4+l&8Y75H0k(JtOQmTdE#@6>$;)P_3=PPZ+HzW_%-h1 zPx()Jtj2OUew6QaReSe=+H?U_zbgLv-v0S*LYVb-OPwFpz-wap5L#m#026=wP<<>f zSUQ1w`>w>FQk@L_&vISsuZTb^!W3x$bO zEzPo}USv7C=t+rs_4fnERY_)sxj(qGD- zvZSKb3;=>$p+O-qAm~1s1XLN+BSE|@f}4uC+(d7b^QTAJ+Fs)0fi*ax@@G0EID0D? z<7r$Tys(v}snh$E?oN50A&Ss2JD(JL3J+7gk$d;I8cq7G-JQdrDi~EnWBma=@J2y) zdpqY*Ew{N=gR#9m&mFY7F{6|X)CkU$U=!bDXh=Uru4b0E^wW9!ZYR6*L;HJ>z7hK0 ze79(c1PrX?fd74ULhof^FDYI%mqQO-#3y#<-%H#C!pwLx=k;z=B0 zFH)jA<4Z5SUE*nEq(p(B_+!;ChL$>xeB^`+b90Yc7ZC`H_n?vqKotk~#7*xm(WXMd z;t{eTqpT%Ix1)G}^>s zNneG%3!q(H+JAMw4_fU$Y!h^iGwn)QZqd-l2pE3R?uE9dkYXJQ5 zVv@}%CspDphVeIdTghgu9vWVHzIcNkUVT<8*{K(L`Ch62Il{C2&EbDGF5m z)(dq})z}Q+kw$<2mM%@&PSZE088yIqGl9M@A&ENzh1!k zev9|^e&0p;fIU0C28b0}JJBz>_>Yb}u7;Pq5a$7)aAFR1r_>oF7d;3h#X$R2C#M5x z3lcbGNfqeg5I;gv6eJG7t}uz*mDCndbzQ24rlj6egAahp1OL8V{G@pe*2(gvtVcIC zppJlsaW_{dfh)Nn>bm>Bix(HjoI?jWPU_LqVshQKwr{o;7hy?~^>*q5^-!+bUMqCD zQTNxgDbc9F>&PPHtJD^+;$qa~ezmKoCY)d_lK9B@+5Ft zUt_P2RVm$0f2*|+5_VSmrvw4GwNjYUHk%P% z++7dZgMoZQIe7ZWDD|>r;G=)b%+C_ya_@XODYbZ~X>n8Xm3v!DixV$qZMTs;*sC@v zwH}6E2@UKw*TS<5baQ6*v!4WMo@aqx_mvbEIQkam(xhK?VZN!RzStP>u74LKU+hhx zLig9eZ?B~*l%^D<;oj)a-?l@Z3GfVc`YNlY^HQC1tH!ln!4I-)S7YQ{WuGUd`gsB1 zUC*8O%z}UICL!`ij@wnJeWkNr|55pQRJ~sathuP9CRy|NozY{?$0nB=iBtp<(Rf!j za2PLEA^oAX6&aRg@~jqLD36wqj1o3)x}Ql=O+M_9y50_Hd)}C&Iy~HtSm?}?Ss(e8 z#p(OR6y@(}v=9PjgM}nQMXW70%#;62?bXT=Sm6`adx;t<|IbQFxqL4@Bv8GME%!Qb zdO?MBY(ge~a#S|uzP)J+r4Dw^>(nEdkuT#|4^|-R*|HOdIt3dgL^eu3Ti+u?!%3=( z{7Sd=7fHCgq|)Ar?rs2peeUK`9>+zxC?C+*r1c|Gjg6cl59odcCOBgewvxbtWZ82` zz=U>iqB@*JceDF0&~u9LDmkm$-%f0KG|`FV--Sl8J35oil;DRCHP=%!Uz`-^*@jFx z8~O{1CgqXI=_2+k$?Y6=B=IG0Whq-+y!1< z=9QT+xb@RdZ+0zP_&%)^I}J65S;1G*J6%R)g@cff$8F?;fKDjRUBseS@SkFP*H2qK zmHUi(Mhe187z_ECd92QCu%-$oPnv$h(zEtYIz^&jsD-(CZ&Im$7P?ei^{dJh-s>y* zR?PCpN-}P@^82i_`R=5vR)1XH(wZ2%G9ijyi4%6P!@KT=ThJDcY1X}OwrvUQe7RuD z6;IUC!|MH;@>T?^XjNB0@Xe$yVEHeic-v`1E+5nk_0&~`hLh4_6Ooed<-?m{totLV z1Iqlb`YHB`bc(k9C5vRD3!%>icj``F%jXW%#Rc*gQS=xo)Iq{SZbDNtu3XCWdv5$N z=D!0pRi4xT#}7jjPioPqK>t}&`Ew_j#7}%-M>#H?d{{-bx)uD^5)ku_>r||q^f+g{2}a5r zYq_LcsKfx{Su@HJ0$Il9rYOlO3MZt=z8YDFTjeIotsw-wm*Cu5^FcQ&w(_6=Qu^X5N%E?L|;{_(A++7ftIyf!(hiXCnm=1&WCL~ z9u#7TM_)q(PD_u7-=O+gvvHvW!E5Z1`vB5agR{&BHu6w_39Azg*TY7~T+bMaF{1NR zUcO0Pzq}E2lxh$o6oaa9J3Tpp{^_|lY!Vdu2Q&XAJkBc;P&#`ux-U@+Ytn3QRu<(%S%oiVeL@R$B6FutBoxp?W~Y| z9*Cb*dn{ft9% zbpQvzl0s`XBWMgmL;H*VdMEy!09*b0v{R40yxd4$DJcWcAN+Me+s3%Xu^#sc`@zs~ z_wIuzveS=XHsWmv_=mflz6;^j5>Xe)^Y33mURcD=h!T_JrK5Dtn8|2P#Lm|EeuBwo zi;s=Vcz&4@zdlDRl+&%HB_N?QuRXL6a&+c3V79-u808PbaMKD zz9;M zM<4k!_7xHN(Y`>B znRLe9P~3S@KBSRy7ioE;xIm;~aL$ODp7P@*p{| zakmIMZ|vIifmF|n%}dc?+mgyVC3>T8Sn($ZFAiu_rH0|X~r%>(YWoc!5hQFwx6*=z_}|H zMBsd?cCDG}9_I1#WFNSl;%_@~`RTGCcWXz|(kI4G5NF&)nMtC0HR8haI=~pR>u~;{BOLWiO$+9v zq&7UhFVrz;ME+Vqu`}U>gO`174joyW!Ee(b_!Gn1fGAM;BTBX6(x5AgK>!03dX;hQ zYJG{cBv$yOu=H&RmN#-*ghQmHKU&8no_OsbhvR#SC@}>+7Ig3W0fOlZ$2m>)m6Dmy zO0>O3MP2#JZfdduSGL(`j)z>NCFGb-_neR*(A5(KUVl@zHUU}qWoM+O7UaW=kksd@ zfUaf1CSem&UB_!W)aEZ&_3v#|Cyidix6i5u&Jme^fuDjj6^p%{*faEC3;CA7NbeD9 zSW_@WNYQGXhO~LAI>kVPBPP7mZ%s8(PRP@!glx=d#Th8p3kq3At6cXO zxD2Hx9@2qo;0?{3_LvvNprYkl-?P;<4MlGvt}`IV<{8Cuks7c&`l*PgsC(h*HiNQG z|FM{BOOj2DN?JgczEZQknssTWahb`L&avxddU1ONX05jAS>1`UyFonnTsfTdV~RVD z3N~r_9?5PcRF zH{#ptiT{R+HssmceNR8^lBe6bvoX1&GDL*%c;bmTOSK+TxgLGfh8O|Y(-)NYKm|~R zP1iBZqj0RgR}v3;QclQEvB@syOav*zu#yQy%*fujibuYLoIJ=$4kE#N)ChOX_z&t5 ze!H(P!{gg9J@$S$Z{;ZO*i)d@8@V=(N!(w3DvO=S%+0VbZ7j|`ylB^yq}Z5D{*;u| z?yTmi#>Ac`yWjzh3ZQWX2^GfuE+WX$@zGB(#y=l4h2Nq%HXYO zzgW=Yf;8{kj|J`oBhpTpW{zlW;J{D=ACD;a(h8~pX1L*Xtk8uR&O?x=ybo@%%|y|1=? z@xU$lrz-;^GOE*t*8Y?vKRJ(_PCmmg{HZDRcK-}q<}VtsKy@5&!xPVz%fFqIc+tmi zY$&Arf(zMiSmy8gYZWV8$V#lK*LWnU0g6SAkTZ=oQ}A$1$wt#Pm;uq4ShdBSe)aeveM9Z=f&Caqu5BDov^BOFc)%)dR`iP@7_0n3h!inxq zWZ>jJf1_=h2UF&oid!}8XUO=7RA9)s_=uR8|8(L8;8iF2t$fV&W0l@S z*D4{CpPtgs2>&AU1}!9rA`xfdN`MK-5z8WrFcC`gYdsIf{sGtV}S_J8Pr&G70wWuck8jlaVE!$+dB0w*V$ZXL%TO1*Em?xN3`1ue1y z??sgEQe4M1Ta+sC=gMd@cRuksDNw)t12_#KxopZYC+-&VVJq%5md7#439Xx3Iw-_)J|#tOp6aQKq-K|^^8cWNioYxfoet-vtVxr zNGF{qFL*IutWN@Of>_$g)URS-D|pQ>2AgCBDSdo3m}fCytaL)Nx|>EqM;p253aY>$ zp*E%X4#eYrlhu`U7rEQ}QNkVWhQCvkB-yyAEUAQIe)U;eH1jG{>{A?vGGZ3MzC?Ih zQwtva*~sM*m1TEw1XwPIIn~NG{`GUVx*;biiK9r4LT?>B92jZmP{0lvNbK`dM!ztc;|86RNqosrd zuX7BRnj*TJQ6y2^JVEuIy-R4LMCB*$^ggRnX3>k(%6lJJX3X^41E?Uc*IEf`e!5w@xCxz6h8)BxW zZEUcLFJ31!>Q@;L=_4%Kn2PMZwhj0u;3-*2O?ql^B(ya_f#nb^w`SKRW`JJY-2n8DVK%! zdv#kfPh;HDYH0~wlkxXwo3mTYRl#FtP|w$x9TpY7pu<(JMdOu=&o>xB+D=yjM}?0t z3nZo{P$g;RQ$;$pSGvzyv`caYMA}J5`OeG{zO}0=yazA+Oz?2I@bEWl|4Uxwf&J)5 zK3sz0YKkQGWl?r8?k9j${;++uwbNJ1tAUVtc&&eU!h%8y?~ng+*87B=1eBVn6D)(u z%713WTEHb$txB3un2fEgBJ%S6$vn}Pi~8^WR-v$xtgEUs=j9{kggqd*>cd2<_FO85 zCI;V_O7Dv3OC>?iX^Z>_Q*U zZ`!X8xqhdV=HAH7&!N+DvT{=Cw1Ql^j~$`sVI=rY3~DzE6ZKFKFdldgsgjf8FYT~` zgCpf=nQwRqvK;Or6Sa?CRdBy75%qltGCSSy<|21%tB(~3S2o!}cAh6U&FK~~zgsV| zbOPs7{I$V#SskQ}#f4Ho#)I%k?1oALPN2@j$Jw#1KO^rg7h2HCe_uEWoB2+1K@=w#&ao?peqWyxjZ7T=Y^!^ zn0nso6a3N_C&Ck)8d~XWU8=L|M_1R+D@~&Z0VIYtKSN!a#1%j!10D-iF0^2_Mftd0 z0_R7J2?~RZ@__n{6wejFfeb6F;ydVv{~ffsh1_Y$w`B#lbw#v9Km$idl&wJ`zyuss zd#ZU~@!=C2)2)|yyd4nCM)3)gnJiPY*Ve5A3$-GX4zBz zGV0tYz(_4lZqNWtJ>lNMNRBawfv9<6?s==+>!W!8by(;PNi{Vfr>n+`|Cg0~J%KLx zH^H-RNZ`b$_vW5R0$czklje?_cgsmlzc~unR)=ltMZTHrQY-TtV9g+N)qZ50NI)>G1$2mnl$Fc#roucsCapV8j1)lD7=FVOn?O zf&l-jJNmD(X)n6mgjg;2-d94jF$7%um6Ahr^LFfPi(vt)DKaXiIf6*yJ5FO9k)>n< zr|r`6vW`WnDD2WTAk;Gb4-fM;_D=8!z^(!U=tjWB4rqAgSdg^t%LEf}K8L6;Q1bG? ze!deq9q+5hWZtnmo7kQ9bf`p2c3Z=n#LxD2NvVE^ zKT%FIZb|MI@V10YJLsEHPJR4?G}RFB{LuEH8LbVQ&j;FF#0x%h%<|CV$HIUaUBp{b z7zBuNO@ga4521JEGMxX33-ee6+}J?rPE6cE#HXny*!PoH{xL(;Tv6y=C9=weo>q#S zISk8GXr~!6dYSAPl$}ukUdejPfAFxtn?kvUimN`JX-B+#ot)`3zqrV>Rlp_uB`mgp7j>Cdp=Fp#n!TqRAW zz0T@(g(A<|X{H=KmcD;IG>bDb$n1veGG9Jt_C0d?)WuiYp7MZyb(3Nb!Hfd{K#Wi( zfQHb1^WER__y9zH{x==FM`(LvW2bK#354Knu1&Ayf4)L_C2q3R#OIxz{DJ`OdywW- zES9uw7|@F8eSEYA63v2Va$(Ocntm30^?Lz&%8oVqk{fq@6`-rV$VdQRvN|R=iHZm3OIDs0i$}u%jbKbVJUa*I!q1qArT_Bb&$gB$JNXe(25F6E9}A?r`WB&^Wn~bMxuPJ*bYpv8E)t%YU=- z%!M49_(BN4X?oJia`!s~_zFbDlB5tA0HpzHr|sD4W#IqAOymy>1}9eW##4f&@af#&tKxQp`nC- zpr41gk2?es_Om1})Y^KQKY6r0G~)TNGVP6|`PNRzL}ZSW@!bL;#xbsK(fkF;Fvx7~Jd@zdzz0^xjl4?$^DFOO;;vB6uO$#Y|Q>P;Ri=gKXqFU?qU z!s#G>2r26sG2US(L3gxX85WMeq z<=32Xgb<;{lj}Y3WV@C;Aq+tdrQB=Wf1*&s8Z)8*8Td_dnbd&9ysYvQo5p;GUei%Z zq1FGKRv%zvlgFLkqrxL_0Hs(aW1iP`c%ISym$5hIsJUx?_i>D3jfk9r^tFLX&zEp} z(a(!z$pjb^HCUWc|5+GkSr4yqLdxsZ!K+*!i~Cnuo4s|k^6_Ow1ZWTSWp4|A$^?Pi z$~86Sd+>QZ)Hc&uR&I%LQm-RW;nzV>mOzCsp3iv_1mM&uo?Wk&q~nWsG)JV*CXDdx z!3FSNMtRChI<}sc~{x(K7F8aHYDn_w?Bu|;~P9zUW zFuFlo^gFD$_*i-kSh%1(2H|5KRf6Z^-#(A15;_*wVkt?k(Tg8*^kOecLM6|4F`LJ| zspF|;5b0qD*NZh=xaCjV#yFD5wjky&{R;w1)Lz)%xkymcVMWBRam8?P3%__Qc$)nS z!>;Lz%&>%vYSYJ=tS@Q2jX!7U{*h66JS5?FU67B#*i`6+&-KzOD?YZ5j332s#l1BV zGYKw_xUPQPwaWgxsjATXM^mPA+}!#KXW<8`WiGt!ils*Zekj}akp9b)i{NE{TC)L3|-8YTFyA#xH)k-@S|IeTjC#< zubbKM8)4@Z&Iz1*{XOE1@SB_)Qa6Go_`Gj=qc^NKcs8UaY+qKo)u}kB_^S96(iX<6 z2)Ol~V>T{XGPrwP?WQnzBd<04t>VAN*Iw}7#8hxvdAhs1<$q23>M=MqP?{(9N>Wv! zNI)Uc=8Cq3$m{moFFt(nX7T)bB>nzsQr^&@LT=F0<$+UQKYsn47b$C*ADUyChn2>j z1FUFXl~;0AWxlF&UVPC#bmQ-hxmVS%jIU-WwO2CB{XNHcuI83b)l98M<;&_n&!5&< zzj~-owL<^xA#=>YUqo~F}aQQ1N&RXw=8cxzt{dZ z=5JilCx)$m6hod!oBH_FTd* zMh-{Z4zJz+cPL4uCs~tpj(+T~kU~gZsCiT?MZ9|KPS@@64Jf&t97;m4k8#@Z?zl?G zC`;7I>|DE5!3y<&BHwWp71h-PGwYyY`r^S-&>{9a4x8R;#H0*i-c)n?BY zKl{IHQOefI`J26(L&tcRitZDxc}C$49L(R;JCy8hPGj_BliuIr&YaPY>0US`ns7o{=MNHIe_C?q9!e ze?M~1dS7iN?R}7gEk@h{*3{t{f1DJ@!7Fk}O?=*H=4snTWmFEifoxmcqaG@7_LPsj zAa<$#)hnwPna&ywKSJ*RR{O5@?^Epd>fF0eXn7X_M+LQWHD^)I-RE15(>By|u~9#{ zF|Os`8y*4{Ll*NRi;kSFocWjYSMt(uM{~cgTPP`=M}L&{7|ng`ekwSUB{DJ6R4!Vs z^{wjL5S#W|i|P)?=>$_@;>-VaBnb<(;xcl4ZaHJHFmE`n=l}tE&rwRV^a41A3Bt679groF8cXsl@ z+;3{dct*0to6@(M3Xz`=*cZ*a3N1Z@Mn_7nBGiL)7s+9k=A#rgZUNsz#v{%<2Q6X5 zY|<;XXp3l1r8!64;NI15U*Dy^E18zB4L-Pi&;+>c-Xz7W==BG`+jLZ~_In6bgz3Ql zC_kjW-WSuDzvwGxX-aj^_MuzeQ>v(>jwe^p&`c&W)(= zJB|NFA5`R3RQBKLKZY?OIuIkm=%cHBN;p~8(#$ez^S9<|mW9_!ibBddb|0=xrg(0Q z@_VqNbEzMXT1NI^s37utw3eHi0*K@$X zC0xyJT!TO&q#=-)cnE|DfZrPsNU$;l@)rq#Xca&p0)E-fy(SQd6W3)Uee1BFE@S{e z(B107VKG9Ca!7Y~cR>ce_@=TB3Yn7cJ5}GP!nPm4vAjdiEMfB2v-`R-s|n3zh(t_* zNj#D-H7=F`LZe#5V%l|95DDSZt0?pbFVZmn|6Kf{B1~`Bg#mynHX}`h^ zkR1;7z&C0T-nj$VTO1q>1z+@dU!Z_RNH18dj^7QkqAoGa{C+BNlT z1T+A^9%!Y<>C>Jpc(iug4{rA!4SwTq<5++_UQNYIBH14~on7fNh#Npy*t#idqzKR&P6H`BFUZJos zydFPVKP$lony}tEbXJgojvaikDsOt+b>+^JXTTT#_u?1D+oYqEw}Vp!g$1P;5}7hx zHh$(JtJw+S4B(5E;5lZ!P8tsh}%#4|vRlrxNWRc%zby&?# zfUTtr|M^4o|6};ytmF?uxk6%FLJV#Y(Dx~YJ0Li4n5fEs*Y9)f5H~aa&w3U3Vp)bW z>IQ;WCGKCI(6t*CG1ey@y1={V-%#J6JnkZzQyBgsIVjE>m+ zsvUCAd7gI5a~`#KwAY?rwD&^3q9uTjiv#rJ%U|CP{`{!iD7GkTIVAV2!JN@#S`Qu@ zkH5A_<_jVoF=p3nGzKgt9ZWe<-Y5QVJ^}J0^Je_7_9O1?iKQc&eS%(oklpbts^ z&?bVN=V`xLYpANkjM^JcJ(AyBAt{{_dj5v!w6{bXuk#c|r4Sb;>10e~)I8KQ#aqT( z_#;5TZrNUAi__z)eo3~IYGsbN_jN21+*Zf-BUuu|jp>BWAD@j({(OEQvFLk9=4BYy zzLa#Av!^%~PeLq4gz7kkW7lUtrR_3vp_b<~lC&p-FYQF%y0!V)g8AIwgmS6`v#MT# zM1pdkghTprYQNy#Ej~WIbFW^U)e~{BX`Q^1tvVVssVZBV%*A66!}p3$!)#OB;^D{3 z`HdT)*P5*bj*#P;T6NKroEJy!j_&0}_T3<6@12vo9xH2gCM?Df@hp-}pan>XLeA5A z5j?w{(Nr3d=bdfzLkW5ON#)eV9CZODM{qNcM{s53g|#)p(Kc?-wsyWFda$q0qr6s0 zqLWA=VWw-H>GpY)Z>FR?cDOA}ru6%-{cCIu#nHagMmko$dH%dyqHAbqXOYrxnjub; zHu2-fDc)rgF^8sVceq$xZ$H-i7+(h1inodD;SiMLhx57NPyFQDC{)D`_h2(7NzC!l z@t?+**|zx&Eu%_w;@u5)M~uk=BhC7+=oHm>s<$Gm($ zU#u6shkDSsulY|1yvQ1Fi=nL#759 zl`$Oe>>ILPgB%64*tggh&YA?VrJXE>FWSKYm9+>s)ax3vaFtMV%M1oM*M9adq6Zz~ z5rPy5P;DAx26K$^XaWYHip+R>B02voyR0Ea>iEoawFP5|{;KcBIRE<#OD8m0yS&nc zZd1=9B=31gX>m$cO2EMuXAupUE>;V7<}$E!=%Wd)TH}~m+$OFT15m_=6;x@#oHHc5 zS%v{E_M>iEg~j@epDia$*+!BnbF*v;J|n`=qvEDj)$ zmT?#ipW1+ZK>-#Ojwep9>qwq>F=QB-s4vLalPvyak%alZ>i%Z%EdQN*_kO;(-X&|r z=&DIgfCUnm5nnS5*OTp5XMHNQPT!leFkbtWer1HnGKN1q!{cgQ|CAOok2Ojt#Aj?n z$0@rL5Ah~C&$t6f&bJ?=UAX7|oQ+Rd#>qHh8W!DdAG7KG}|33vcIJ_IL#*_&g|JnV1Z zWL|IbKb`3Q-jT=a^T-cFkGLgoODPlS;Lnv2cu2^aNe*Fw33Rd!eDN*av`oz<>c*y} zZ^%?^H8V9{<#|D;|4f{6QJFUrh~4J2bgSoAck zov5y7_`&*_gW!XyiIaV=`<4L1P^wE?{pOGMI}`f*RCeTaVmQ8o$st4u;czJw*OL$1 zz{MzGbO9nhnYAS|i**odLZf&B&q~b*{A??jmMt97-+I2Pg;{taJzQvQ;ziPb=|paZ zKPyHh3W1WG>&{F_j89wHZz|)R7PrLx z4g_~#{6L*G=H&SyGSAvqwyK9cV<|O~9}J3e6AROFSI8x6i8n*!e+KVP<1nhJj(^kA z)74D><8Wrr?u$${7IR_3c1?B4(0UVrKjr^G%10NO!okL=gT^PC@JACVE299ydLTKq z+>qDwf1>w?dDzn5ocSNJREn$M=gRLYa5zolQeTC7%&jG@`DM4#PdCWQ|4k1l5rDYK@7UN&$z19SNLSSEzrm-6l>`32NtPg`3F{d$+ShRR z@Sq+olLniVO!uL;PJmcw-W)dFOId^Y2W8HlqF-Ii=yX^eMeHa%FOPIU0TlfHbXiv( zcWijZlaj-M6;qLn-x9MKXw>z0yO)i0-HvyNlgurvg;OU;?OQ)v7yc;>FYVEg*Gs05 zfVDEjTb1sRh`ojvQ993jGPU)bqY0n)4@%xao#62n)q+Ne+;ypheLS{XOu#32C6TC+ zGELZDvqX-j=^DzUvZn$}2l8JRPf8%OTQ`VdOS_;YkQlwJ8D*4lNB*chtsuBo1y!>@=v-?^0A^}fev_|(hWdjL~`2T)Bg zT^LI6{?iB+D7e);b9pcpfd*FGJUN1_MmbfN*ZNT3v(F+z>q_zpUz_8;xpsb1l!Et2 z2!%6o=uiO6{&z9-eGXk;m(i4C3SQj{JK-fRdJpshV`LfEjMuZ)ZBY?9_~jP50y<-Y z=Ixu$-n#e@S)^T%A|IuOd*=)end+WscpYnq`cw=2>(B|wO>kGmpeVE)uIX{l8Nv6h z^Xz8OR{VvgmgYXy6;WpT_GI5uVJGCG&1tRPMr)Hfh;|wl&5;-MIyRBB&VlihnQ6an z(j}0Y>zA;MV#Dhf2RM)y&7!pEr#w2})}9-`e%0yenbxqDnN40%HzPvKrLSERaJRd< z;gpT`HC)Oj7nO2IlD(vzQ1Qg0iUBlW$D`ysW4IW9Rm#wLKgH(3njLl=Qm$0|0s#ZKnAC=t)3AbmM(4S~{X>RUar1 z*+Fj8WH?1@q1Rd(vv{6QJl*}>1Vx}I3tXYfoqkYx4(Z`>OgQW>EFOK9`gDhn1x=-R z&uWMFw7gI4JWf&k-HpX`*aqcRnaQPjNPashr+wyx%~4FEwo-#K@7zx!b+hSxO_Woe z(5>?{lDZa-#`SVgCusIL^$?p?UfZ&^2*CIb7wOb}zmASk$J>od-_Ls?vUL~w*MQWD z_xpkJrSsgwOeE29T!9F!6U6VoP#Yj(gN? z|F!d|_hqvvA(~5D8n)Jl4cUF}u$Nm1x2yEQZ1i7`zc>HSL)TRn^KqCd*k|f?zn{28 zcOmOTHd(ft-U%OHyo8+kU0y5S)zf=)w2aqpI8I1RB!XqK^99ZO;?Mh(-GiJ{P)(dl z!R4{JH-N@@@oR+BBqi&aU{!(ZCy8{-z5AwmX=%q{>XT;b4A`4^apyp1*t%+y5lPMG zT}D%=a}u-7%<^6qPUz!JJc3irh&Ot5^W!PYV}w_f%UG6prd*2>1;uq(9)+8pZEgW_P z;ZrnW;syFK*BafFq!?Ie9GZ=;BzW$yYb(dSrUABfBcTH*{MyaFichaAb7BM&8(A72bX(yvJyhP zb+4e{+#X1#0|M$+=nLv5ws;Isz9D&C53@N$*an|8Id?-tt4SYHViWzw9@x3KxgeK1 zsN0``lJ38iH_;T}QqjjpCuHuC%HmN@6Bc#cXa1$|2!W!e1&rUyIrY56b;iC>Ix(Ee zUNpSi>AP5|gz@{09_<`b3u|Im380Yi@3v<@RFQ7sQRz;hhVo!Yb!D?4qA3A?_A0=n z%KeLJXL%Y1idn132g3PVspW~w@m2cAWgCc`PC4(_wZGWS!}`qD!OF(D*K5j3}7Vw*K$6mG0y49`EW7bOS&>#T%V z*mLrN8wK&~uJr5ph1$zY9D6_AX?|9r`<>!d%s3GNP{FQeBv+}-QN{*rP~EpwfQMZk zon-AeK&Ig5(qPbZ4^8uv7kI`3(?J7-L(e!_dx)Gl;(oA<*3?z7rbaWoWnsd4KTHMe zQT0LXrx<^0U3eKNNyodH1SR39Q7T27V<%L||8(o_`Yk?}A!{ ze7rompkuR-m~>8W>K-Z!PqusVG>bBhZ#C_>BRCxFb>ajSUKDV+_G^1h)Q3I<4-oe) z9c>CYH@{oGT^E2AFl`oA0|h`JhI@seVK!Bpb;IgH{cu$Kzcs+QLI^4Zx(9~DkJ;F$5PREnon7XRy@!5vU6#2=@I_Myvt7oAsQ<dAim@ zKMBjDDOM);%gYliOqO~P6Ze;cVMoybNa}H2Cx{0{fj>#QO9l&S@Lq=IUWS&9zjfM5 z9Z|r=0=biiY?d$&hK|JAV~#RXo@_p8*mAXzQStHYAnkwMt<5*t7Z(Lx664;DMN^$3 z2}MW)rfZWyjcj{?6O#{^MiG!BTP9+zVJf;XHg^%?)(x1O52172U_teFr8Cu(f+I=?@6C zICGlGxMk*t%YVTWp@gb)9v(MLyyiEU4+!A+=Ym_<9vJbgO8~*_aCpC6lhpRwS+Csy&vCVIw|JJ z!W~dvVNqlm58;@?^xBka;}jGs@}{7g$wFyC*KRw8OBs)!j=d7%1PI zUT^eWMM%kQ`rS%o+NwrZWo{H|eu~!7icmRC5Bj^)ts8_O*yfKf7#y`LD2N%p{#n!K z_o9ei@`Vc=vF?SPMVUkUbtT9IJQY-5eIM3w!);GDH8P=_06b;c6vRu$`S*#rWJlo~YDsipo>6vk8Q&Q0Wxh zh@)nSuO0ve1Onph6-2LtkqV8%>Cl9b&E$#-O|BCTf^6t|2X)3qQ!V~1Fhz6T`H5bn z9_57E6(mnkCB`Hl!RTi?kfKcFvg;Oq3zNP*;C|jDFOLz5Eu=4ylnl>45FO~F-ZVa9 z5!rXHe($6|pcN_$&B-ES@}wpe%}973CWgpc1Qcs!a==T~V~BOHB8KS@E-W)W@t*d;$c* zCTw|4NvEtM5Ka6>S%fQ{Rj2)^$Mx@?mBZh{goVf=BZ$=gGy=wn($p?up`rDHWQ*0| z4_Bq?^A~7y+ev%NAm{W^ZH@8X`<$a~iCtMmiap+C^2rM9;PoK)9K+rle<1Gvqh))kJ-q7wjc!u(#_gOH7tb% zLLj)P$II#tZrvQFzC*JS>4k+^g((5+9tNM3bjtMw{;Zyrhtb||)6Q@Yw*Dt!8vtZ| zLR^4Tc$X;h-E7t3Lb_!(zx%A|uPuc4952$P6;GKu#6eBMWayd8 zX$BI&@f3NFA|RlBeHh_k(gzmqDDrXq-;tSz2OgvbDXn0C z+#q70F#6JV{#@S3#7&=1Xe7OSB7F;nH2_UfIA*kyrc(O9^bkvqIaA0vR{0lpbm6h6beH4pU$@>MC57f(3Mi zXTK#>_har54)B}*vnPdIGyPKDfhi@q#P5f)unw!cHu$+wtk_`s!&(hiH})r5T-m1t zXLa`%ioKD?qzzu| z`st!_el!JlrL+0S56KUi_sFou>VG{d%;@~1y$r~XN@LNBuOohp4iI40yj1tQ1WVsc z6%`mcD&&l(!3lUj5Vp1jZsgl5U%2o0Zo+OM-c~ zbA7#E31K!&KV)uhs)*1EB_(FPrB6|K1(??A6gE+QeciN-Nveb9SV%bBe;T_Bh40(e zAatB}S7=r-&X^tDaOt;aD5+Ty$scIm>2p&v^bW42Zf}N;G{NZSqqxXy^4t;+tY3V7 zk~-aiCGFrFA#mKl5EuwXICBDddkv&&SrJJ*aB#FTiioroFR@u49v#+C%>(iItcB>a z{rtYCuMTN<6RKUuHZY)}v&=OkK_2WrF4>3T1Pm4l_^)g%G##VeZDnsXD3A+}b3llb zloQW=K0xAZ$dUH}HUZ(*{taGsRu$Ytmge85z|($c}( zC__R_{!ZSzb5DJC7IiZ;h*jsttUc8%r6ZRgB%)0Hqzp0)u^&b5CgBA{{#6f-dWbnqZOpPrOtO&oK_h4#;!%+nV}_7@YqT9 zGEiz!{~XF9gYbhH&eifmqCWDeQj(lP0G#SBbHsjQ?5FRD>8SLNKd=j9tACJ$$D-ot zFtR8D^|<|bw`7^(*)fevhzVW>0KrY`*f)!~rmI-rj2T@J4CC6oD6rMuR>bwIi*D6$ z3T&SL3f}{d1T@Lk=q7o3lz%V7bjIby<`xRggsd#Pz%;KjpHHHy)RSGLLV^^Q0RcZF z27+!18>)PxNN^xZ3cieXs=?{p!M^(96iphT8G4M<-2(`{RGfeuT^(~`h;ZRQYQ)|l zHq=*Ugu4Jt8;|A-cfP*M0NbY0s}F^A;#G%y%y$l$uGyCVel^4{bt>jwH%#=4rvcLO zV4+@KeLB?ls0{FOHX$e4gaNVkSs9yeo*gtoVMJZjDrKh-YNsA|IwR%q-)N=Y%lyKHuMY2GQEzsM_e*UN~m4=_jD+3UR_B6b~6C=SL013sX#IDYrHGw%&?H$5IvV;mkF1LufmXH-`l~Fk>Cj`NJ~Sa_SXOtn@`fm$4~@ttD;^)k|B~97 za`L~Klyx{XeIGE=*9?4V3*ly-^~@A)RwGK(&^-XBRbtAYk5ZLzB3?C$fEi1v25iy zBhnd&UUOd(_pWE+(t9|Z(CLu5^?dw#3`WL{($~8ezYhjq+?ClG^x3aEcVBeng`3qd zrZtk0p49H1Bcr74($oFX#;Z_rDrQCy-FQKTLK-FGmBK1d55o9gF+Ju{>h*i~tNnc- zjtReZAAv&=wRukR6!^w$ zY?t%YyNCP|3sAA2UrW#r1tTHCPynjcnVp+xY;(u@iuu9Bb}P06fINmcQj=FQ7MN(B zOv+?K&x|zuZcrJ6d5?pBJn&7Y!o>2QUn|Qbs*6ne@kbTzD8Xf?)x*E8@p0BD)7;K3 z3opd7)FG^pn0G_R=Bx!!A#}q9symIl&MF3I?x2CsgQAH_ruK9X4Gn(<50#&jKL0{q z?!CNR?`Y5dHVI!0g+&vO#892I$}rl-if*=9*LQyK-#_^lyrdPh;{F=OKwjLJi6Sj- zCXdGo72QfAywjIiMX;(^HqW9dl5)8Es1=uJ#jnR#_zE^-W-|^GHU8XDd(;lt0}$@B zl>miA8g=I9_h8}HzaXjaeSuq(<$@5)1#ycJ&@Kv{SnUwuP&?0+CuWuG4tDu*K)dW{ zSu1L;=jZp~?t(H;qXQ@y{x$z0sDMf3S+5+r*-kpR#{MEgCSX_K1ucxqRkGW8C`UJU zHQyV^p}V}&1hSIs;`e)y&Emrg|cOt`RNueJ3uJT-4)Ota6{hA z*=IU~qY(F@1+4{zg<;Lj%^EXq(!D?axSe_>t*JSyIb&yEU?1~C+^P#-hN%B}2t6l7 zTL_kPn!mAr{&d2F!$Ty&~rJ$7YFg>g9Tm>Q*mCp zUpnHC5K?S|FzJ?lA9*`Pe8QhgGRQRimDH77!Md!kM^@>}9XykvBS3lVFfcYHL$b8H zaEymme>|rse@6OzwS)qTPf%b(V-F)T=F~E#481%26zrV`1o^iC1Qu&uGD%kQ^w4l` zIPewz=&QebrvsnY>WVhL_IIS0XVs>=>+3UcoeWt9W{J-p1~M{9<5|~#el*h`G`(P3 zL-Bmd70H0@eWFrFjHfGDnGqjoyp-o2Ej2{8c(ftQRP}~ssAk~~livdao2L5ux~g*n z=PzHq{FwC#^G*sgE2KER^VvSrcj%c!cHJQ2 zafLu_%tditDXEw9blG}WV^bYvN1WP%r|0cPN9VKsW`gc`{bVYb($VJIPb0FVu1mL7g3#A(Fug}l}=MI2dW$z|`x(v26VJNcmA_u_uU?8*LkHZ(vWO~a6-Oh4JoMHq$OcB-wtx{a@y zZvj>*rbrym{3-gWGQH`J2>jh|kJFe&oY)`MseKoeA(j5etjxBKL-dY|df4pcyN*|m zF5g!bo1#GXh2gxsv&mhQl{@|CQD;@h(d=j0@1PIp3$s;lKY+i1QPez?k0hKXkK@G%*<7>1_$2L=8tT)%(z zt8-fbY43d`*vg^DO?o6GK-u7MF2{~wV5GuxRZE!4X~TMB$?y^{?MYln3RQZ=uSNk> z-qq!$H4moO7U#H~bQRSa)-%y}6FIa-Bfx4W4ySFR(K=F!BR6>!oB%tsv` zfzyj@-xOMCY0SU=Rg~<|VHPOkGQPtv?@qsXhS0DF>Xa!91gOvqz4}GT-*uRU-BZYn z^qi8CjAT=%E9S-)4mJj&11t1RYO$Ko0z8#mK6>#pki~R0cB>47qI&`{4RXCE9gf^Q z80o15br$VZ!j6Hc9h}aw85m03SI2#}7bMQu?*s&K{QeIi983TSP&C*XxC}o8E7ux0 zV62~f2){Lci>KljN2h4>reY5c4ax%>nIxnFqpxuC6gY_Cbc|~Dn(lpvcW!LFz?+K~ zq&C)*@46ljb`ed9dy_T$i7uKyF8u zyKq>WPyz5rP+1vzqmVvU4NW+(e*}G%N%xtzVC9UFag?jN0yq5aD>6P%u zUps%Kz+-dlTk`BLUpM%n1^>0(9m_9&z_sh&5N=;pRCRUb+I-0NqR5BH>p+k2a=D0v zAT^+#vg$(V9XUwOB`V47BV=}-p8|k7YT`BP@(*fVt|Fbfr7uzwK2$xbgJ7ELxRk}> z9f|?H`*#@CPSM_XtloZ&Ss1B&8&_TZa^^i##wfO#vh_m*ImtKUmh5Tlq4rw9Z=O#3 zvFV8O;fD+GA2&n-3%NkPsBNr&rHre<)llrin*ut3>Pgs%Cu?Tg9(-;zGSAeO9n(SY zg;))L8DMVNpeg9L69hnszUD&g?LB$|_MNPf3O8VGXZfmDVGr-idzsLDPb1->c9?*` zI=WW7w}BInRk9nFT<$y*?fgks;19&8%$GUGdr0E?Yn^vLJx4Xx)vdpIclPTQ$JYIY ztsme~1TQ2sMJy$gVC~FN^>x=I<5kCK1F=Ws1ZN-VA7)$^z3(Y~2&ef^^^D5Uf zW+GDucMjEC=-`0RJf+;ZdS?CGW#;`$;grG>hMAw_;XZPH4pE(H6Q;I`NHvpsp2>f% zP419M$Dd`$JNt#f={VXz9+xXB**9EXbT;4+A55vhXc+>-q~BmDB1WK)pi~-lWZ~W> z7J;-KGqSyTP5xFBt*3J;r3n$Q_ZSLO`ge;L7d^~lklae zEaJ;B&h0?A!5taM5hFv3W)&(>av8EAeM%>iV(}PU%CAggmP!*OA=eC2xZpIk4mOp2DpT2w*vu%Fiu0A&nN=Bv+n@N+WpSwf_nABuqOVs~FfxP3o^e@EN&t*j0 zuR9j}CJx_N1$=*XM6Bu7U18!l8{c?(z)j{g41;?AGkX2tV{vEo`rQZLRMtIv!33Bd z-HiaiQ`*;}z!CkHr^|~#&X?<~N)D?A$ScR>ZPM@l(c1ZF|NSnIXzQX#yM_rO**(Z> z*X&9lL-w6~L*HnH=l-lL-pI?f$<4{)=Uqg)(%Hm!9xyv}?~(8ecg{f_!h61T_xB{~ ze4%Xjhu%oq)RW8XHBPuwZGQ3TilyUc>dx#FXAJi{%UH?I;jdJ}$|gf`D6Bo~)Qr{- zTU!qg;WpE0kR4D|B$cDg{_;|ZY(CD{;gaCf<;?}stymKKdyz54Kt&XCt{t5ua146+5> z&QqpwSaw62^4wl3Agpr2`38MUGLt!6k=oL9=W+Vna&`m zaHtynK*9RYOD0b*(83bgO>dX2K_&2%jj~?e{oQ&vv;Wcu#~3;zs_eTfe6J=R8-pDk z6u_+b&3rq0v9H9|58ET46O&gO7k{uYJDBhL zJ5==tzTu+4;+lvL4cI;gg9aR+P*$Mqjv zx8ZkH2o7dwxvGvU#RP0l=GQJv(SNY{Dz)GL@S@q+W$vquH{+7^onjXIL?*PrdaELM z1-=uIS+I+uMjijr~iD-i9hVPJ9oM)cD>kI^sjxpGgo*y27oIj)Z>XlSyYcsBy zZ?tMOne{(Br?v(ld%? zFAz|oA)!LCv3tehpIS~!owNE!IWCSJc%_Y@s+jGntn*yjrXLDxf?aCG9}sf{YQ;Ok z7`6^+g1D>tTs=(Y`61qJ)Z~v^i3FlsZ?D@IW9i-m>4ZchdZOfQp(MlmIXldvymkJw z!CR^@r~s3QHbP0g&KpvFL=0;QZ)w(#b|nZZ>uik)R@rBj<@ZnaE!F?sWK;Kb#E`fI zlZMR4eqS#a2haF?BxU^5iST$;yW-*g;<<$Og5-Z8_5HykUFyKjKW)0w`ZaBw;0L36 z>m>44`IWr|x+EwI;pA6brQ;yfPk3SZYT3 zb~E}&#@Kq(-7e4rJ4gb5mKjzpB~jp<)dGnv$V%b1u8GYHhF^%!*Qb)8&SLbl5F!o_ z0G&J>f^QwJJeE~-j6UAGSl7UCFP5E|#!$S<1GmAp<~v`1ag4?P13$muK>BG=Gb{1N zt;$w;{+z>=2hVKDYrOk~!wBk9kz9SBs%?uhx(ss{JL!@t%k+N8OugQ4-s$rH7RS!{ zn0?D=2;Lq=@*RB63r=p_XkKy1AOpML&miVn4LmOARc`D}WOu3v7hLbUIA7+6pwdl> z$%>E=UKd%+og{=myNanPXvptND);Laa6Ow`^n@2LzH8vY_eD;v;x&!0xpf>GT) z>0PZJrKc97*P}UbN<#S!ot$|vw^e-J0NZp2)x(Y6HrhO4wIU{V2am&U;>Dd>qRaA& zd1v$%7FS&uU$Jl^#UNWf5MCxG5fOC(SuZ9nsDN_+UO-U%7fsEWdq^VJ6~Hsb*T^Mi zHxue7^w^%ic%#&9Zp?w0k*x5Oy{41=b8I++h zlI%kzNe=hU@2S}OVztqfsa9xN;oV&hHwbs#pt9d``lPL2gk7QC#{Eg`AlQ+@m=p5f z=AiCWm-n5i`N}x92=rjT(G zKxbR)QgVUHG_S%MsQ#St6d7*fG1GoQ&zVdh?$2ew#(dS9pVP=UcHWXZn;F}}Yj>A6 z@^@U6PTsK=v<%Z0fLp`>j~KWXk`yLa=J0-qh=}!HD^>#9?)K**7@0v_2RD>H)+;Sr zoVc2VL;I)KJ_?F&5Yq4L?<<$$G;oWVb{0z4bqPCSn0ZRulF)X6#p*P&d;T5;`qQ52 zuPDd`cx{#`XwKjBtg&O>eiAh1J)IrA+S*kP3u}vaJ>3`AR%m1t!Q-P6EL;AxH_y~r zKxD2+JV{IAD0tt}Nx5a#BhZFoD0=kVRBfCQ!r|%Z&da}GsvQdb#f2p9QMAVz0V>s% zcJwfo#e|&3w)2QhiuazUxS(+7Ga^N{xs5omv$Y~(bu*9qdm;U)%VwHfE%}_^ga3XT z7Qw@2MK&XU7F=Ow8<)KgmS!=yaJ#d~Yk7H7@8op(0fO?j_Y+;#~z3$#2VvOC_!ouG$pRV9k?64X# z&efffLzrg&j1p9!?$q!on{e`LV2KZI^H<(RnHgfG*jYk?uq46Al#ig6!p@49o*<>|$p>*jfwS*lj5?B?lu zyt|3-qw62}-L~!FyXE6cFQia$4#F&0Z)dpK2&~ zf^B!s;ni|F1rW%Dt;CgBh$6q&p-IE@4DZXzUdTr)S{#dOf9&j}U^ z-eu68_xVb1QCa@>6nv-4P^^Z1np?BzYkcJRep$r`8jB*x3{Q-YTDW2Bl(2%^4|ah4ZYc zjO&Na7=6=GGW`v-p6pl~>43PLUyIX4(R&PlMHWRMGkl0Uz#(>y56~DOCXVBVluGRW zd0qxNV|@`7jhV9ch*tl>Qm{Wl)V3?y^im!V{C_&R@^Gl5a6OBeu`k*8eJQdpg$xoc z5-qkClk5>8O<88fh>|jeY}uj|Vo0U3j8yhLQDomKW1X?h+(Y;NbD#S>_deHu#_~JA zbI!ND-}}8Ydv`tcVEEd@k8cDhZWuL08V}1_lL?bWx{14u@Nv{a&!Q0t!m7k=K#g{H zm(zJj@Lv8p_g)Sb_Tn2-E^><^u(H@al~sd-cmIfYsi_XzUfXORI^|N$*x<6hQ-fbe zSu==v4K8S$mK+4muZ=o&h^;xxkpm&a=1q&R@}a>l-drZRIwSP2=17!S}8 z5;ji6BO!(E0hz8K3yk#JMhVMtG6^5}L@WU37xu(e+61>vpJ)cP1^zGUHcMYOQvWJJ z$m~Z6;rv?#&lCF8u5P3FOdH3KgBB-x+G~%Wv`Mo>@q#p}%76B`A!!mWi}{9^Ft4@P zl(eE4Gv{^SIo-LLSRM%=8~3 zJjg{;SlC;hnC?jttzoh}*U3IWf?E4gqy%hN=H4%ux>N1NZoe?QI-`x@liPa>`X@7=a17Ax@?5lxVY6F$qm&-hc{d3Yl$tfw;^YH>P># zPUkCsUJKse8w^^pq-B2gGV8l1>7-ZNtB>~lXl6Ckb>sYIk%Ggu_YVx+*DO9ie^EPE zI{A+Mx`PDq*ZrmCH*S2;ivrGA6OT5nBl`WW@6kn*Z&m|kzpw^TAN%@Q_V^`~R*Z4~ z?mXq-b+w}pfAs2zDKtOeIi+P^_S;92*S_r|^G4`?yEBk`!nm-ZbHs4voAS@9LzUT{ zMI5$}VFo#rXi{s*X+p!h{Yo)@HOTVP`FY2Iv1^X6(iVOmNKh!ipy8cA6FZWB+D^nc z47WSH);s$v>0G#v+x~ue^++|pQF?X3V|aV}>2-~GT+jfRHfoGY8K${(5Cq~)v@7W_ zA47&&Q;hZS4V}^98+on+2Rye*BSBIF&xwobLh+ztUf-*IF8&^%Su|9oJ-pWfL1KCG ztG>;p`Z_b`(UY`-$|8sckJn9>dAv{2`$odT2K@D2GqG0~y0Q{X{0JeWj*=Y62xl(x zlQUVsJx@~BJRiY?797DbkV-9R89GgxY>Du@$mDX>AsS_q+%J)4BlB!njB%saXbeUz zHJz`n4@YW_RO!QQ@;r`VJUb9A8Ro1d@4IGq(oAU39q~klVz^wFufdafsAiqI*le&s z5L8lcH}?qlO0)+Q4G}=q>bW^3S@-Ata5on-(r3S=Wuh-!tz$6E6T8Y){{8&p7_)OJ zW@i!|>j+L8G#7I{S?mK2vbemD_Y(bUq3X@QHMf_A+P$Dy5|OR1^yjVdm9OGAS9{I{ z_avGrw-5~$Mn&xuu>JCGim?@UHN)IczY^SBVG~CJXfp-}aEx^t&FC)Nm1t3oV%r=^LtEmucPY*+mUaaaE~JtQi`}a{{MK2m(Xl^_czj zGDpAQXK6#(-}ZCZx!0nz^ z|Lj)n%?U5!Up8+Vfek=QYF^s}W1f0d_Y(7`kPM&6BeY}kMHbFXhyF!E4OXC%V%F1G7tguiuT`PKXEH)V-xGxd78sKs0a!LLPY3GKJlvv|Dd$h&~_vhWK;^^3?oMf}rIpHJ&Uh}Da7)9jq8_>)TNJBnH zCzIO@_Hq*9Lk4rIB=4@RIbIp9K?9XL;U4{W{V8+=bn}@D;bJXFx*$55UMw>_B$kkE zQ+Q_f?8=k|MhOGc7$v;FaZj{Y@#eThc@QF{1TVNbcPeWrd}E9Lbq;kZ3mv{XIaT6< z%TYwU^n=xOgZc+je)?Wg(t`&Xk`2&zy9@!1G4U_ zxbX#%g2W3>_PS)h7L+Q;{!PQyZ#2#nnnqWy>Ybg)QvkIatmOeEudyYnipGL&S@_z2 z^E|hd!{ekbJNvWeNbX4Csq%+P^mnrM9+S%k*8n~X{jbb6!JLsgQ1p%=3ak_@%lu+0Y(VHCArPu5$tejoSfryzKD;U*rhQhNY1mWBH+FOCIDCI`xOR~NzEa%CKD{xJglh&)^sEL z$hGWyg410th8ojwR+-!C=W{P}Z!O&)={OwiUvu}O|AW`_EPo!r?DHsL4fl-BVt<+$ zi8QK6)}k;>!QnBzo}SZ*PbzOQJ3$`~zpd`!;c-E>j`Nz#?@HSANVl-I!9vQMcjNI` zqLmf1(=Z8=u$LV1DPpP?_Z?A+V{Dy!{7AR!EK$OPcy)l)F^g#6vuN%kV%ZRR%F@zy z|BA37Y-QOXY8&Nvv?`3oopOwR3(I(Xy2;d@)f8!N7OKHygf7jlg4+S2^g5$%s(q*i z@JEmxd|laN93qd(gpSJFl9D7Hr?iMrvWVe3_PGz5wQu%M@8nVRSL;>fu1w?;I420!)CTeXTVQF1P; zuL(3rjcn`Skl5|u@Mw=9^2NSi7rS8BZZK;C#@d>1N|WNNppq&r-$q?8e{O4w##Ks{ z?GaqI_c*GWn2;eUayyLk0{Ir7C1NjI11D5V_@EBq4KMi_(qs5$mZ?r;`=zQ6%$45Fs-N9 za`!okT&qHyyr?pIK;J%6xLjgtn+JAf1}h{HIr*NFUX=I6Lh(q{0y-Rs!ti6XUEMw( z#6r{JkpyKV}er zETDc_NIg9#(@%F&MX7$R(joxmIBdcXYaUo`H&f8jbN-Zlagb@YsWVP5^}hxQIk5W0 zOgwV&M-=nmJ;zm!4?NaKF4@@V`}Ahl1f5b+@l|FRVXk#!Zp=6S(Wy7zdy(v5HZ+D?i^JPT8!uc9JCP3Xwt)yb zi{tOA+ndn7tgV#^)s;Los zh*LDB^->sA)>}eZ>Lr_wF`W{yAPLXhY`z;e&m86-c5-q&CpbQyr%*f;4k?-jMM+aj zR1jUDtc%$npXFIH1S{z6w(UG~Mo4fE9e%0R`U8!yz6E@}!QVq}7B?v9Xy)X{w7@;1 zXzyF)d-Kv!OkeDqGCN;jwr$*T zfJ0nmp_F29dP{mmc@IFxNbON1MYZ{}hh`*1+$n4Oi@~J!%OZEPW(eN?jpmul6ydHs z7Nx!N`)??EznbHb0)XT=Xe40U{84^vs0_>HsV`p(Z%UbT+S`3UZO=PCg?J~j_gDZa z{GMmYASj$wm-Mbs>`M~wl2eN(HGTzK$ll_a-iw)78~tO{pt~_PRe~SS*BDAk$rjg> zX${PK@drnZk`m{rc*XYX3x^4XJA6*?XEE$1?{q+m5D2}0fOv;=QlZ%a>;oFNk_k8R zreFtlKI3M#tc1txcvwfC99lX)wfIRv(F*8FO4VT3Q8UjFMc%?GD}xbR!PJ#Ig*O+j z?%SKHc?(olKi~y_dEKE!=0xjg$g-5U5sJf0T1Y2s&z)F3DYr%_{Gxpe*xrt| zs39CtN%O*1FhO<^@j@ie?r_UK+(sAc z0vP=8x2IulmV6B)UZFj2wBav0#c5KN*k$f^GoCo|+hKrq4cw-tl&9Ry{K!rwG&MDC z#7rXJr%W-@V7j@v?Pykd0k)TQc(t)-sA z_tKOrnIvvaEO$n#=xZ0QGzW-*UM-7wWx4_9(k?$==Fk;na3}0#jyaZ~J!Wd;_*6W~ zu|`|svMasTwADv6>;*hG7EH>eG~{|}lni{JEiMZqeZ}vRV*K#KGld52mk3A)PTjLf z6M2M2x^!4O_g@mrap@ZDssY{7#?4^*)!xFUX5K8gY;$c2B{W%9`9AvA>SSB4a{Q&r z+qA{*dJRyZt|PB)Xy^XE_Q1<8QmBkvR!X$Vx+2DsFjKyxJ#zHa`70i-Va$om`!}=h ziDL5jWE$OUgwlegWh9S;=Qh?$8zC{;Fd00Cqx7g|i(Sv<*1i0g4Az{6q zPFvC=S5Nn^K}3XR)ldbKH&9#I^~*F9Z6b9olppSz_Lg)oSg1o{!=GyMs|0x3D(3up zou`IL_&U21=L>lAp#}LZ#c)`k$1is1_{v_)c-D11Fo)JI=JZ5+qPfT)W zu5U*Cn5DBvPzMKGbVVqx3fF;SaTe+z`3d;?`hGJMi|yL;Udp7JM&C<5eukYcsaiQ7r^l^DV6U+ZeT8 zmbGR4U+9k;0Jq0&%&zixP$oZt4!6!>n@p&GrfXeaEcEY;)|=1Y^a*%xTbqAt&Cnjf zbx5w{wQ5`^mr8tC!nXh1{QIKmz?`&w$H=qtX(4lU9fivk@oRNn+0KhJe`thBP`Km~ zQE!aZA|t_*TwMUeet?$YgDB#XGyhfO$+9V>@3w~ z15TYiW2q$z(U|vBE260^djE|0_C9%fJFj`XE1a_BBj)&Y8!H} ziL1;(Qn%;fM`zZu-~_(!11ysUN)6v(Zcja;%Jtd)VbTg?#!eV-_9FD$l(b`R@JTDX zIB3{4RcAW@TzD0bQXhS^L1bLGy{uLW&!n)dtv7ED;g~v|?#^r`Vfz%7wdQ)CwMWv^Yd@hK_L5n*1p63Tq2(^eDZxdWpKFAK;`~-2BZ7jIbB-^ z=(~%Aiw7`40$wJ-YwZaxoH>DU;Qy|H22c7KFZ%a-q& zc2Z@)kwt0Go|Z?ckdv|7ZA5@$XjAMp#|i`qqLcLtL!il2vpW3fVSzT;-uUJpeR&_o z$Ry_GJ53;5wIE4-Qs`M?R*w#&(`P{RChg;!Q%r9#>i$Vd7j&fjHXd(W>GX|Z+o_@S za(K~GOe?opcTaZ@Pxlu=9RVcL710llW(H%Gc_EVnh`_*>QhWjBrU&Ht|V^46K99BrOOYqBu6z*2+FkDT> zNKob{&#mSyuOD?hyTx08#a9;8pLQFoKgPt3vy>vQyw}AF%He<7wnI;4GPYLJ5eu@? zq&Sq}w%C{m1LQuHHLIc#rAqoi*^6wc)~E~`hlxleUzd=`rGNfxM-Qz0Wd>*WVzrM0EjevQHEx|)qdku1|EnFLEm&{8?6^eyL&gBNLM zuBOUP!YZ&p`5DVKqYQ0DLac590Z&Rja(c>m+#Gp|n$ zI5^n}17FJjJ8XqEKa-oIrzY zDdA$rIPLwZ|ur*?SB6duJbIcrNuh;ClJ+w>Hcda z4$K#IeXhh=t*x~Jc{okrsKEbarv`d8+~1-flKVD+45|~K)(_FQ57B?uIan(LX2o`v z)Yjx$pw9I%_$mvFYHH#08H8z!E#wn2w-FZrCgfe8<-4yT*$cGIhawnKlZ1^dLh}8D zwfAcAk(a@k7+^!%I!76_wc@kxZv!Z`&iI0;RnV}CjL^>3W&Gi|(cyFQy2q8vKqRBr zYdSvC4#ENgDCDBBr~KDy3EH{M5(zMxHpFDckv+r(KdF2#ioUBk2gGPXUUb?Gjr_{a zxs{6qqmUk36nlrZ3x_vmiM>Ey4L)>_mX&<}q;pEL^MeZEg&L4u5SR32ZJ7xUrU?;R zqk6IT?yYaf7&u&eN}TtRKKZHcxj!@OUaD06eJB_L`j0;wPN8_y0b93=KY3i*`Pl_PjC}_yJE~ zx2%QyvqEs~I5qzn@&D&Td7dp#jH|1ghgcP_2YE+Tp*89|inz4}PL&x%F1=2E6R#d1 zsQ~Q5Qb#tawg$)iaIgV(6>p@@QFm3*1~jcsjf0GH^r6+<}gY`##}cj(gN(M#_p!4wb3+ySFln!I+! z!y{suQTHe)c`frm5OYx{Tg-#1!0>W>uxq!uda^elJj$L$@9*C!o=mHXQ6H?NjrD4P zBob2$5BUqyr_GJuC_7m*KS4!NHa>eWV}N7EsrO4DcIHn32|dm9oXtmVt)-6j=JPyR zm8-*hfkp`VxEs{-t8mFsWdu#CPxsuTghv8`9&WBI_9?lt`t(qGFd4CX8mokioZ`&b z(b}NocM^u{lXX^@o_fw}88FqF^E^_AA{eJH9XCI5np3`%0}XvAwM0RaLo0f z&5?P0E;sJSfOVXqVtV#B?L%k^`OJH8;TIkmmLIk$uR0Fk;) z;Y_%EZ5?bFo`scQ0BAInf0VV@FHx z_x|`}v_YRx^$5`56UjB*Bl5?yWT0Ys`d(R4`I9m^l#w|3i{u~GE@iMA4ne^8Kz@W$ zHh4fj&bWgA9%Bk=i!pupu`-VEu`ISoSHnR0!Ba4p7MI&!ID@PX+pLaYc82F`RBqB! zi4O!#?(z7nX@b7YGUR+dd)MO&5)!6-Y431-Kl`{d4&qkV!hy>!f3iN$(&lHT){pu zAC~nNHH}Sl+yk}g|jLSw!z0GWbZTBdM2*`aO zjM9agg@!6+4SZ_cgCvA^%cQhsP+-vYf~Mw|`x>DAHWb&a$IjPZdYW6(Ej|ySfqAjC zYvB)&UFS5&T*0FUE5*p53l~LZ2E&+<5!!WRrU*V(k53l4CB#)?5 z<;2G&VAkFPPbGYo0)38`RSp1Yp)Ey?jc6~WsHsCoLEQt`&Kn5lJE$i_YfXswbM~%L z;3Csv%aF7C_I!>cqPsv_32cld6%1KmOa^e1qw!faruThGWh`C~=N4RK%_0=Ny)pIC z85xoT(;MigI)|CBR|4X|Y=cF}jso3{nmS-+#!rLMA-Fyo1=}vH1or-5gXFZO~ zi!DlgS5{dZyT{9_!SoLL69&_L3Vu|9WG$it&t7bTW+*^QJS;P5CJ&>Qi( zPK#D^GA&W$N*ax}kX2&_{w+Z*z=+>*0AC4TQBp>Is!n@c9Q&*?FQwqAF1bTgYLR0% zg=xS~`47GRd1D$dMTa7`#xYlph`#|Ez#8Hl_oH5tb6%v8Akvy8kQqKYhA@U3-t5IrF-&7_#64cDXH8)j-6~AijGq ze`Jseu&RPjHMofFjnz${+hxPzZ-5NB$=rs#E^vR8AaLfJb;28f{V#dW|_Q%g0Gb6>*q`y&TC~oE{Im0t|TqxYq zjseT?wi9_C-h2Zzwv2cy9ip1MFl1rgrrk_EYfjZsGF z6{PGt#Yl2jf&ib?GvZUXf0@@|@d4b1>oy}dzhuy&U*yhH!S#v{JxSvNdC%#$Dj0ZA z?P(I*$St07+;p$T(H_)bE#z1EDv+DVF25_2Rhbv{;#pB^gzNQjjau ztyUwj;U6QITH=;TtkUoJMyJl4Nj#I33~E(G!H0k`{gc|VzTF!d)Onbft7P9K%O7VC zy!9)1p((~GyW~Yt$qNN}^#VCnz1u>nySs2127=ag`c~47O>WQ|W($l&rok{KZmzBZ zqhn_rPIsJrToX7o`07OO%g1aZ#HZN<+(l~N@Lr%*2bLNB8=Zl zd1cvsU+SCVMn3a#{Bw<})U~lGuFZHUpSMe#AxCke!!jXbU4>#_h@QzT;hTJeid&)=^=`Ebw3we=rAx9PgQ3{7g;$ z)jnm!eBwh(_FXaN)Br3D^Y_5bF@16_u+AXN6PdtB@l#3`K0yp((Kw6!4W?=LOg5j5 z3{dL$*7!|n?>@KZ`Oiy=Iei1T-}!|SK|!=ry8dulY|jEA;Ezef->?0&r!U2G@3urW zH#!3RaJTf+TMmQwPc=PX=r@qjNs*p@~IFk~@ zX?)>nT5O{UP#BtxUksaMn@B+3VRLu2+a%WTq!u!UqTybCL8GH@q1%bww zO#G2^HoweIojGG>V}Xw+X87q=c&Xw2&Y3&f+Fxj~J%i|* zfKOI+QgX!qxsk5glA#*Vh=vt0&bmF1`LTYqZb$QJrzFh9;DOuMdVmC?+z9x;Yx_Uw kW$#uc|6N4;|NJ4)^U@lg3b8sN3jtrpj@Vcfn`0vX15xNdHvj+t literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat6.png b/www/img/taxo/cat6.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1ae1eb7525faf389cb1d607232702d9dbce2d4 GIT binary patch literal 37057 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 bZz4quc888lWw)Ia0hiq|d+V~JZn*ye^a!Ev literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat7.png b/www/img/taxo/cat7.png new file mode 100644 index 0000000000000000000000000000000000000000..b23844a7b55083285047e26d37fa9d5033c99532 GIT binary patch literal 42850 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

    0Cle~59L$Dp*yiPR7bN;}D^NH1LiCVrcsJad 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 literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat8.png b/www/img/taxo/cat8.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8ed4aeb8393e8e3a756a682d392f1147dc5117 GIT binary patch literal 36527 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 literal 0 HcmV?d00001 diff --git a/www/img/taxo/cat9.png b/www/img/taxo/cat9.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1642c4dea8433c430de3925566684814f62eec GIT binary patch literal 23805 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 literal 0 HcmV?d00001 diff --git a/www/img/tick_ok.png b/www/img/tick_ok.png new file mode 100755 index 0000000000000000000000000000000000000000..19473d95e2f3db633982566b57d86c2ecbc30d93 GIT binary patch literal 481 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 literal 0 HcmV?d00001 diff --git a/www/img/weight.png b/www/img/weight.png new file mode 100644 index 0000000000000000000000000000000000000000..ca17d7ae581613e307e1a112d5b342feeeb42c57 GIT binary patch literal 3503 zcmV;g4N&rlP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0008YNklFV49}y`#U>3-!kGjjzrloqDGwa z`Fvg!g`B2o`uFL{Wb*d*CWOEkyRK{7_BtrV(Zj>TWHR~x^}-mRot-(3Bd-(r^RPUQmgB_u4~<)@B8ENxYOxK(BW`6pU=ZE z%=27fm1VgOP_BM`eaVu`aDpH>IXUTcI(i+#Fg!m$SI`KdqA1ju=t}?~gfLC>=;%nV z?%my8k|Y-w7XUCGk8f^nP16{Lu?EuLn&){+X)iA?Q4}>zv$wY=cU{*tO;aXS zRTZUF0^z@bEXz_EMNyPx86o8O_*lkB2r*4l@vUgWDz$HGJQxhR-R@v8*pRp)Znavi zIbw|I{AXFFzX{LtboEzNrF&Ilj1Z!fQcBg{>+5S-mP$~qRtsaSc4xC0rBp#HPOy|i z(=@uz`}=#wn8K0;1%UVW_s7RaJ@-7%<+H~MRgZtMSX^CQrD+QP8e=SqqU-DHx~_G; zD5X+>WJ90|D@l^e%S+p~Ez9DZr)esA-DpyET~}4LwY5bMLj8W95Ta)%znt^sa=BbC zHyW0%)!p4)sfItT_Ve@e;2hAqmgA<7~_7w-)^_pKstGnnjd;L0C=9K dml7fL&j9nFx-9=K(4qhU002ovPDHLkV1jWtm&yPD literal 0 HcmV?d00001 diff --git a/www/js/rgraph/RGraph.bar.js b/www/js/rgraph/RGraph.bar.js new file mode 100755 index 0000000..6e160e7 --- /dev/null +++ b/www/js/rgraph/RGraph.bar.js @@ -0,0 +1,2563 @@ + /** + * o------------------------------------------------------------------------------o + * | This file is part of the RGraph package - you can learn more at: | + * | | + * | http://www.rgraph.net | + * | | + * | This package is licensed under the RGraph license. For all kinds of business | + * | purposes there is a small one-time licensing fee to pay and for non | + * | commercial purposes it is free to use. You can read the full license here: | + * | | + * | http://www.rgraph.net/LICENSE.txt | + * o------------------------------------------------------------------------------o + */ + + if (typeof(RGraph) == 'undefined') RGraph = {}; + + /** + * The bar chart constructor + * + * @param object canvas The canvas object + * @param array data The chart data + */ + RGraph.Bar = function (id, data) + { + // Get the canvas and context objects + this.id = id; + this.canvas = document.getElementById(id); + this.context = this.canvas.getContext ? this.canvas.getContext("2d") : null; + this.canvas.__object__ = this; + this.type = 'bar'; + this.max = 0; + this.stackedOrGrouped = false; + this.isRGraph = true; + this.uid = RGraph.CreateUID(); + this.canvas.uid = this.canvas.uid ? this.canvas.uid : RGraph.CreateUID(); + this.colorsParsed = false; + + + /** + * Compatibility with older browsers + */ + RGraph.OldBrowserCompat(this.context); + + + // Various config type stuff + this.properties = { + 'chart.background.barcolor1': 'rgba(0,0,0,0)', + 'chart.background.barcolor2': 'rgba(0,0,0,0)', + 'chart.background.grid': true, + 'chart.background.grid.color': '#ddd', + 'chart.background.grid.width': 1, + 'chart.background.grid.hsize': 20, + 'chart.background.grid.vsize': 20, + 'chart.background.grid.vlines': true, + 'chart.background.grid.hlines': true, + 'chart.background.grid.border': true, + 'chart.background.grid.autofit':true, + 'chart.background.grid.autofit.numhlines': 5, + 'chart.background.grid.autofit.numvlines': 20, + 'chart.background.image.stretch': true, + 'chart.background.image.x': null, + 'chart.background.image.y': null, + 'chart.background.image.w': null, + 'chart.background.image.h': null, + 'chart.background.image.align': null, + 'chart.ytickgap': 20, + 'chart.smallyticks': 3, + 'chart.largeyticks': 5, + 'chart.numyticks': 10, + 'chart.hmargin': 5, + 'chart.hmargin.grouped': 1, + 'chart.strokecolor': 'rgba(0,0,0,0)', + 'chart.axis.color': 'black', + 'chart.gutter.top': 25, + 'chart.gutter.bottom': 25, + 'chart.gutter.left': 25, + 'chart.gutter.right': 25, + 'chart.labels': null, + 'chart.labels.colors': [], // Gradients aren't supported for these colors + 'chart.labels.ingraph': null, + 'chart.labels.above': false, + 'chart.labels.above.decimals': 0, + 'chart.labels.above.size': null, + 'chart.labels.above.angle': null, + 'chart.ylabels': true, + 'chart.ylabels.colors': [], // Gradients aren't supported for these colors + 'chart.ylabels.count': 5, + 'chart.ylabels.inside': false, + 'chart.xlabels.offset': 0, + 'chart.xaxispos': 'bottom', + 'chart.yaxispos': 'left', + 'chart.text.color': 'black', // Gradients aren't supported for this color + 'chart.text.size': 10, + 'chart.text.angle': 0, + 'chart.text.font': 'Arial', + 'chart.ymin': 0, + 'chart.ymax': null, + 'chart.title': '', + 'chart.title.font': null, + 'chart.title.background': null, // Gradients aren't supported for this color + 'chart.title.hpos': null, + 'chart.title.vpos': null, + 'chart.title.bold': true, + 'chart.title.xaxis': '', + 'chart.title.xaxis.bold': true, + 'chart.title.xaxis.size': null, + 'chart.title.xaxis.font': null, + 'chart.title.yaxis': '', + 'chart.title.yaxis.bold': true, + 'chart.title.yaxis.size': null, + 'chart.title.yaxis.font': null, + 'chart.title.yaxis.color': null, // Gradients aren't supported for this color + 'chart.title.xaxis.pos': null, + 'chart.title.yaxis.pos': null, + 'chart.colors': ['#01B4FF', '#0f0', '#00f', '#ff0', '#0ff', '#0f0'], + 'chart.colors.sequential': false, + 'chart.colors.reverse': false, + 'chart.grouping': 'grouped', + 'chart.variant': 'bar', + 'chart.variant.sketch.verticals': true, + 'chart.shadow': false, + 'chart.shadow.color': '#999', // Gradients aren't supported for this color + 'chart.shadow.offsetx': 3, + 'chart.shadow.offsety': 3, + 'chart.shadow.blur': 3, + 'chart.tooltips': null, + 'chart.tooltips.effect': 'fade', + 'chart.tooltips.css.class': 'RGraph_tooltip', + 'chart.tooltips.event': 'onclick', + 'chart.tooltips.highlight': true, + 'chart.highlight.stroke': 'rgba(0,0,0,0)', + 'chart.highlight.fill': 'rgba(255,255,255,0.7)', + 'chart.background.hbars': null, + 'chart.key': null, + 'chart.key.background': 'white', + 'chart.key.position': 'graph', + 'chart.key.shadow': false, + 'chart.key.shadow.color': '#666', + 'chart.key.shadow.blur': 3, + 'chart.key.shadow.offsetx': 2, + 'chart.key.shadow.offsety': 2, + 'chart.key.position.gutter.boxed': true, + 'chart.key.position.x': null, + 'chart.key.position.y': null, + 'chart.key.halign': 'right', + 'chart.key.color.shape': 'square', + 'chart.key.rounded': true, + 'chart.key.text.size': 10, + 'chart.key.linewidth': 1, + 'chart.key.colors': null, + 'chart.contextmenu': null, + 'chart.units.pre': '', + 'chart.units.post': '', + 'chart.scale.decimals': 0, + 'chart.scale.point': '.', + 'chart.scale.thousand': ',', + 'chart.crosshairs': false, + 'chart.crosshairs.color': '#333', + 'chart.crosshairs.hline': true, + 'chart.crosshairs.vline': true, + 'chart.linewidth': 1, + 'chart.annotatable': false, + 'chart.annotate.color': 'black', + 'chart.zoom.factor': 1.5, + 'chart.zoom.fade.in': true, + 'chart.zoom.fade.out': true, + 'chart.zoom.hdir': 'right', + 'chart.zoom.vdir': 'down', + 'chart.zoom.frames': 25, + 'chart.zoom.delay': 16.666, + 'chart.zoom.shadow': true, + 'chart.zoom.background': true, + 'chart.resizable': false, + 'chart.resize.handle.adjust': [0,0], + 'chart.resize.handle.background': null, + 'chart.adjustable': false, + 'chart.noaxes': false, + 'chart.noxaxis': false, + 'chart.noyaxis': false, + 'chart.events.click': null, + 'chart.events.mousemove': null, + 'chart.numxticks': null + } + + // Check for support + if (!this.canvas) { + alert('[BAR] No canvas support'); + return; + } + + /** + * Determine whether the chart will contain stacked or grouped bars + */ + for (var i=0; i 0) { + alert('[BAR] The data element with index ' + i + ' should be negative'); + } + } + } + } + + /** + * lineWidth doesn't appear to like a zero setting + */ + if (name.toLowerCase() == 'chart.linewidth' && value == 0) { + value = 0.0001; + } + + this.properties[name] = value; + } + + + /** + * A getter + * + * @param name string The name of the property to get + */ + RGraph.Bar.prototype.Get = function (name) + { + return this.properties[name]; + } + + + + /** + * The function you call to draw the bar chart + */ + RGraph.Bar.prototype.Draw = function () + { + + // MUST be the first thing done! + if (typeof(this.properties['chart.background.image']) == 'string') { + RGraph.DrawBackgroundImage(this); + } + + /** + * Fire the onbeforedraw event + */ + RGraph.FireCustomEvent(this, 'onbeforedraw'); + + + + /** + * Parse the colors. This allows for simple gradient syntax + */ + if (!this.colorsParsed) { + this.parseColors(); + + // Don't want to do this again + this.colorsParsed = true; + } + + + + /** + * This is new in May 2011 and facilitates indiviual gutter settings, + * eg chart.gutter.left + */ + this.gutterLeft = this.properties['chart.gutter.left']; + this.gutterRight = this.properties['chart.gutter.right']; + this.gutterTop = this.properties['chart.gutter.top']; + this.gutterBottom = this.properties['chart.gutter.bottom']; + + /** + * Convert any null values to 0. Won't make any difference to the bar (as opposed to the line chart) + */ + for (var i=0; i 0) { + + alert('[BAR] (' + this.id + ') Sorry, tooltips are not supported with dot or pyramid charts'); + } + + /** + * Stop the coords array from growing uncontrollably + */ + this.coords = []; + + /** + * Work out a few things. They need to be here because they depend on things you can change before you + * call Draw() but after you instantiate the object + */ + this.max = 0; + this.grapharea = this.canvas.height - this.gutterTop - this.gutterBottom; + this.halfgrapharea = this.grapharea / 2; + this.halfTextHeight = this.properties['chart.text.size'] / 2; + + + /** + * This sets the label colors. Doing it here saves lots of if() conditions in the draw method + */ + if (this.properties['chart.labels']) { + if (this.properties['chart.labels.colors'].length < this.properties['chart.labels'].length) { + while (this.properties['chart.labels.colors'].length < this.properties['chart.labels'].length) { + this.properties['chart.labels.colors'].push(this.properties['chart.labels.colors'][this.properties['chart.labels.colors'].length - 1]); + } + } else { + while (this.properties['chart.labels.colors'].length < this.properties['chart.labels'].length) { + this.properties['chart.labels.colors'].push(this.properties['chart.text.color']); + } + } + } + + if (this.properties['chart.ylabels.colors'].length < this.properties['chart.ylabels.count']) { + while (this.properties['chart.ylabels.colors'].length < this.properties['chart.ylabels.count']) { + this.properties['chart.ylabels.colors'].push(this.properties['chart.ylabels.colors'][this.properties['chart.ylabels.colors'].length - 1]); + } + } else { + while (this.properties['chart.ylabels.colors'].length < this.properties['chart.ylabels'].count) { + this.properties['chart.ylabels.colors'].push(this.properties['chart.text.color']); + } + } + + + // Progressively Draw the chart + RGraph.background.Draw(this); + + + + + //If it's a sketch chart variant, draw the axes first + if (this.properties['chart.variant'] == 'sketch') { + this.DrawAxes(); + this.Drawbars(); + } else { + this.Drawbars(); + this.DrawAxes(); + } + + this.DrawLabels(); + + + // Draw the key if necessary + if (this.properties['chart.key'] && this.properties['chart.key'].length) { + RGraph.DrawKey(this, this.properties['chart.key'], this.properties['chart.colors']); + } + + + /** + * Setup the context menu if required + */ + if (this.properties['chart.contextmenu']) { + RGraph.ShowContext(this); + } + + + /** + * Is a line is defined, draw it + * + var line = this.Get('chart.line'); + + if (line) { + + line.__bar__ = this; + + // Check the X axis positions + if (this.Get('chart.xaxispos') != line.Get('chart.xaxispos')) { + alert("[BAR] Using different X axis positions when combining the Bar and Line is not advised"); + } + + line.Set('chart.gutter.left', this.Get('chart.gutter.left')); + line.Set('chart.gutter.right', this.Get('chart.gutter.right')); + line.Set('chart.gutter.top', this.Get('chart.gutter.top')); + line.Set('chart.gutter.bottom', this.Get('chart.gutter.bottom')); + + line.Set('chart.hmargin', (this.canvas.width - this.gutterLeft - this.gutterRight) / (line.original_data[0].length * 2)); + + // If a BAR custom yMax is set, use that + if (this.Get('chart.ymax') && !line.Get('chart.ymax')) { + line.Set('chart.ymax', this.Get('chart.ymax')); + + } else if (line.Get('chart.ymax')) { + line.Set('chart.ymax', line.Get('chart.ymax')); + } + + // The boolean is used to specify that the Line chart .Draw() method is being called by the Bar chart + line.Draw(true); + } +*/ + + + /** + * Draw "in graph" labels + */ + if (this.properties['chart.labels.ingraph']) { + RGraph.DrawInGraphLabels(this); + } + + + /** + * This function enables resizing + */ + if (this.properties['chart.resizable']) { + RGraph.AllowResizing(this); + } + + + /** + * This installs the event listeners + */ + RGraph.InstallEventListeners(this); + + + /** + * Fire the RGraph ondraw event + */ + RGraph.FireCustomEvent(this, 'ondraw'); + } + + + + /** + * Draws the charts axes + */ + RGraph.Bar.prototype.DrawAxes = function () + { + if (this.properties['chart.noaxes']) { + return; + } + + var xaxispos = this.properties['chart.xaxispos']; + var yaxispos = this.properties['chart.yaxispos']; + var isSketch = this.properties['chart.variant'] == 'sketch'; + + this.context.beginPath(); + this.context.strokeStyle = this.properties['chart.axis.color']; + this.context.lineWidth = 1; + + + // Draw the Y axis + if (this.properties['chart.noyaxis'] == false) { + if (yaxispos == 'right') { + this.context.moveTo(AA(this, this.canvas.width - this.gutterRight + (isSketch ? 3 : 0)), this.gutterTop - (isSketch ? 3 : 0)); + this.context.lineTo(AA(this, this.canvas.width - this.gutterRight) - (isSketch ? 2 : 0), this.canvas.height - this.gutterBottom + (isSketch ? 5 : 0)); + } else { + this.context.moveTo(AA(this, this.gutterLeft - (isSketch ? 2 : 0)), this.gutterTop - (isSketch ? 5 : 0)); + this.context.lineTo(AA(this, this.gutterLeft - (isSketch ? 1 : 0)), this.canvas.height - this.gutterBottom + (isSketch ? 5 : 0)); + } + } + + // Draw the X axis + if (this.properties['chart.noxaxis'] == false) { + if (xaxispos == 'center') { + this.context.moveTo(this.gutterLeft - (isSketch ? 5 : 0), AA(this, ((this.canvas.height - this.gutterTop - this.gutterBottom) / 2) + this.gutterTop + (isSketch ? 2 : 0))); + this.context.lineTo(this.canvas.width - this.gutterRight + (isSketch ? 5 : 0), AA(this, ((this.canvas.height - this.gutterTop - this.gutterBottom) / 2) + this.gutterTop - (isSketch ? 2 : 0))); + } else if (xaxispos == 'top') { + this.context.moveTo(this.gutterLeft - (isSketch ? 3 : 0), AA(this, this.gutterTop) - (isSketch ? 3 : 0)); + this.context.lineTo(this.canvas.width - this.gutterRight + (isSketch ? 5 : 0), AA(this, this.gutterTop + (isSketch ? 2 : 0))); + } else { + this.context.moveTo(this.gutterLeft - (isSketch ? 5 : 0), AA(this, this.canvas.height - this.gutterBottom) - (isSketch ? 2 : 0)); + this.context.lineTo(this.canvas.width - this.gutterRight + (isSketch ? 8 : 0), AA(this, this.canvas.height - this.gutterBottom + (isSketch ? 2 : 0))); + } + } + + var numYTicks = this.properties['chart.numyticks']; + + // Draw the Y tickmarks + if (this.properties['chart.noyaxis'] == false && !isSketch) { + var yTickGap = (this.canvas.height - this.gutterTop - this.gutterBottom) / numYTicks; + var xpos = yaxispos == 'left' ? this.gutterLeft : this.canvas.width - this.gutterRight; + + if (this.properties['chart.numyticks'] > 0) { + for (y=this.gutterTop; + xaxispos == 'center' ? y <= (this.canvas.height - this.gutterBottom) : y < (this.canvas.height - this.gutterBottom + (xaxispos == 'top' ? 1 : 0)); + y += yTickGap) { + + if (xaxispos == 'center' && y == (this.gutterTop + (this.grapharea/ 2))) continue; + + // X axis at the top + if (xaxispos == 'top' && y == this.gutterTop) continue; + + this.context.moveTo(xpos, AA(this, y)); + this.context.lineTo(xpos + (yaxispos == 'left' ? -3 : 3), AA(this, y)); + } + } + + /** + * If the X axis is not being shown, draw an extra tick + */ + if (this.properties['chart.noxaxis']) { + if (xaxispos == 'center') { + this.context.moveTo(xpos + (yaxispos == 'left' ? -3 : 3), AA(this, this.canvas.height / 2)); + this.context.lineTo(xpos, AA(this, this.canvas.height / 2)); + } else if (xaxispos == 'top') { + this.context.moveTo(xpos + (yaxispos == 'left' ? -3 : 3), AA(this, this.gutterTop)); + this.context.lineTo(xpos, AA(this, this.gutterTop)); + } else { + this.context.moveTo(xpos + (yaxispos == 'left' ? -3 : 3), AA(this, this.canvas.height - this.gutterBottom)); + this.context.lineTo(xpos, AA(this, this.canvas.height - this.gutterBottom)); + } + } + } + + + // Draw the X tickmarks + if (this.properties['chart.noxaxis'] == false && !isSketch) { + + xTickGap = (this.canvas.width - this.gutterLeft - this.gutterRight) / this.data.length; + + if (typeof(this.properties['chart.numxticks']) == 'number') { + xTickGap = (this.canvas.width - this.gutterLeft - this.gutterRight) / this.properties['chart.numxticks']; + } + + if (xaxispos == 'bottom') { + yStart = this.canvas.height - this.gutterBottom; + yEnd = (this.canvas.height - this.gutterBottom) + 3; + } else if (xaxispos == 'top') { + yStart = this.gutterTop - 3; + yEnd = this.gutterTop; + } else if (xaxispos == 'center') { + yStart = ((this.canvas.height - this.gutterTop - this.gutterBottom) / 2) + this.gutterTop + 3; + yEnd = ((this.canvas.height - this.gutterTop - this.gutterBottom) / 2) + this.gutterTop - 3; + } + + yStart = AA(this, yStart); + yEnd = AA(this, yEnd); + + //////////////// X TICKS //////////////// + var noEndXTick = this.properties['chart.noendxtick']; + + for (x=this.gutterLeft + (yaxispos == 'left' ? xTickGap : 0); x this.gutterLeft) { + this.context.moveTo(AA(this, x), yStart); + this.context.lineTo(AA(this, x), yEnd); + + } else if (yaxispos == 'left' && noEndXTick && x > this.gutterLeft && x < (this.canvas.width - this.gutterRight) ) { + this.context.moveTo(AA(this, x), yStart); + this.context.lineTo(AA(this, x), yEnd); + + } else if (yaxispos == 'right' && x < (this.canvas.width - this.gutterRight) && !noEndXTick) { + this.context.moveTo(AA(this, x), yStart); + this.context.lineTo(AA(this, x), yEnd); + + } else if (yaxispos == 'right' && x < (this.canvas.width - this.gutterRight) && x > (this.gutterLeft) && noEndXTick) { + this.context.moveTo(AA(this, x), yStart); + this.context.lineTo(AA(this, x), yEnd); + } + } + + if (this.properties['chart.noyaxis'] || this.properties['chart.numxticks'] == null) { + if (typeof(this.properties['chart.numxticks']) == 'number' && this.properties['chart.numxticks'] > 0) { + this.context.moveTo(AA(this, this.gutterLeft), yStart); + this.context.lineTo(AA(this, this.gutterLeft), yEnd); + } + } + + //////////////// X TICKS //////////////// + } + + /** + * If the Y axis is not being shown, draw an extra tick + */ + if (this.properties['chart.noyaxis'] && this.properties['chart.noxaxis'] == false && this.properties['chart.numxticks'] == null) { + if (xaxispos == 'center') { + this.context.moveTo(AA(this, this.gutterLeft), (this.canvas.height / 2) - 3); + this.context.lineTo(AA(this, this.gutterLeft), (this.canvas.height / 2) + 3); + } else { + this.context.moveTo(AA(this, this.gutterLeft), this.canvas.height - this.gutterBottom); + this.context.lineTo(AA(this, this.gutterLeft), this.canvas.height - this.gutterBottom + 3); + } + } + + this.context.stroke(); + } + + + /** + * Draws the bars + */ + RGraph.Bar.prototype.Drawbars = function () + { + this.context.lineWidth = this.properties['chart.linewidth']; + this.context.strokeStyle = this.properties['chart.strokecolor']; + this.context.fillStyle = this.properties['chart.colors'][0]; + var prevX = 0; + var prevY = 0; + var decimals = this.properties['chart.scale.decimals']; + + /** + * Work out the max value + */ + if (this.properties['chart.ymax']) { + + this.max = this.properties['chart.ymax']; + this.min = this.properties['chart.ymin']; + + this.scale = [ + (((this.max - this.min) * (1/5)) + this.min).toFixed(decimals), + (((this.max - this.min) * (2/5)) + this.min).toFixed(decimals), + (((this.max - this.min) * (3/5)) + this.min).toFixed(decimals), + (((this.max - this.min) * (4/5)) + this.min).toFixed(decimals), + (((this.max - this.min) * (5/5) + this.min)).toFixed(decimals) + ]; + } else { + + this.min = this.properties['chart.ymin']; + + for (i=0; i 0) { + RGraph.DrawBars(this); + } + + var variant = this.properties['chart.variant']; + + /** + * Draw the 3D axes is necessary + */ + if (variant == '3d') { + RGraph.Draw3DAxes(this); + } + + /** + * Get the variant once, and draw the bars, be they regular, stacked or grouped + */ + + // Get these variables outside of the loop + var xaxispos = this.properties['chart.xaxispos']; + var width = (this.canvas.width - this.gutterLeft - this.gutterRight ) / this.data.length; + var orig_height = height; + var hmargin = this.properties['chart.hmargin']; + var shadow = this.properties['chart.shadow']; + var shadowColor = this.properties['chart.shadow.color']; + var shadowBlur = this.properties['chart.shadow.blur']; + var shadowOffsetX = this.properties['chart.shadow.offsetx']; + var shadowOffsetY = this.properties['chart.shadow.offsety']; + var strokeStyle = this.properties['chart.strokecolor']; + var colors = this.properties['chart.colors']; + var sequentialColorIndex = 0; + + for (i=0; i 0.4 ? -1 : 3) - (r * width),y - 1); + this.context.lineTo(x + hmargin + width - (r > 0.4 ? 1 : -1) - (r * width), y + height + (r == 0.2 ? 1 : -2)); + } + } + + this.context.stroke(); + + // Regular bar + } else if (variant == 'bar' || variant == '3d' || variant == 'glass' || variant == 'bevel') { + + if (RGraph.isOld() && shadow) { + this.DrawIEShadow([x + hmargin, y, barWidth, height]); + } + + if (variant == 'glass') { + RGraph.filledCurvyRect(this.context, x + hmargin, y, barWidth, height, 3, this.data[i] > 0, this.data[i] > 0, this.data[i] < 0, this.data[i] < 0); + RGraph.strokedCurvyRect(this.context, x + hmargin, y, barWidth, height, 3, this.data[i] > 0, this.data[i] > 0, this.data[i] < 0, this.data[i] < 0); + } else { + this.context.strokeRect(x + hmargin, y, barWidth, height); + this.context.fillRect(x + hmargin, y, barWidth, height); + } + + // 3D effect + if (variant == '3d') { + + var prevStrokeStyle = this.context.strokeStyle; + var prevFillStyle = this.context.fillStyle; + + // Draw the top + this.context.beginPath(); + this.context.moveTo(x + hmargin, y); + this.context.lineTo(x + hmargin + 10, y - 5); + this.context.lineTo(x + hmargin + 10 + barWidth, y - 5); + this.context.lineTo(x + hmargin + barWidth, y); + this.context.closePath(); + + this.context.stroke(); + this.context.fill(); + + // Draw the right hand side + this.context.beginPath(); + this.context.moveTo(x + hmargin + barWidth, y); + this.context.lineTo(x + hmargin + barWidth + 10, y - 5); + this.context.lineTo(x + hmargin + barWidth + 10, y + height - 5); + this.context.lineTo(x + hmargin + barWidth, y + height); + this.context.closePath(); + + this.context.stroke(); + this.context.fill(); + + // Draw the darker top section + this.context.beginPath(); + this.context.fillStyle = 'rgba(255,255,255,0.3)'; + this.context.moveTo(x + hmargin, y); + this.context.lineTo(x + hmargin + 10, y - 5); + this.context.lineTo(x + hmargin + 10 + barWidth, y - 5); + this.context.lineTo(x + hmargin + barWidth, y); + this.context.lineTo(x + hmargin, y); + this.context.closePath(); + + this.context.stroke(); + this.context.fill(); + + // Draw the darker right side section + this.context.beginPath(); + this.context.fillStyle = 'rgba(0,0,0,0.4)'; + this.context.moveTo(x + hmargin + barWidth, y); + this.context.lineTo(x + hmargin + barWidth + 10, y - 5); + this.context.lineTo(x + hmargin + barWidth + 10, y - 5 + height); + this.context.lineTo(x + hmargin + barWidth, y + height); + this.context.lineTo(x + hmargin + barWidth, y); + this.context.closePath(); + + this.context.stroke(); + this.context.fill(); + + this.context.strokeStyle = prevStrokeStyle; + this.context.fillStyle = prevFillStyle; + + // Glass variant + } else if (variant == 'glass') { + + var grad = this.context.createLinearGradient( + x + hmargin, + y, + x + hmargin + (barWidth / 2), + y + ); + grad.addColorStop(0, 'rgba(255,255,255,0.9)'); + grad.addColorStop(1, 'rgba(255,255,255,0.5)'); + + this.context.beginPath(); + this.context.fillStyle = grad; + this.context.fillRect(x + hmargin + 2,y + (this.data[i] > 0 ? 2 : 0),(barWidth / 2) - 2,height - 2); + this.context.fill(); + } + + // This bit draws the text labels that appear above the bars if requested + if (this.properties['chart.labels.above']) { + + // Turn off any shadow + if (shadow) { + RGraph.NoShadow(this); + } + + var yPos = y - 3; + + // Account for negative bars + if (this.data[i] < 0) { + yPos += height + 6 + (this.properties['chart.text.size'] - 4); + } + + // Account for chart.xaxispos=top + if (this.properties['chart.xaxispos'] == 'top') { + yPos = this.gutterTop + height + 6 + (typeof(this.properties['chart.labels.above.size']) == 'number' ? this.properties['chart.labels.above.size'] : this.properties['chart.text.size'] - 4); + } + + // Account for chart.variant=3d + if (this.properties['chart.variant'] == '3d') { + yPos -= 5; + } + + this.context.fillStyle = this.properties['chart.text.color']; + + RGraph.Text(this.context, + this.properties['chart.text.font'], + typeof(this.properties['chart.labels.above.size']) == 'number' ? this.properties['chart.labels.above.size'] : this.properties['chart.text.size'] - 3, + x + hmargin + (barWidth / 2), + yPos, + RGraph.number_format(this, Number(this.data[i]).toFixed(this.properties['chart.labels.above.decimals']),this.properties['chart.units.pre'],this.properties['chart.units.post']), + this.properties['chart.labels.above.angle'] ? 'bottom' : null, + this.properties['chart.labels.above.angle'] ? (this.properties['chart.labels.above.angle'] > 0 && (this.properties['chart.xaxispos'] != 'top') ? 'right' : 'left') : 'center', + null, + this.properties['chart.labels.above.angle'] + ); + } + + // Dot chart + } else if (variant == 'dot') { + + this.context.beginPath(); + this.context.moveTo(x + (width / 2), y); + this.context.lineTo(x + (width / 2), y + height); + this.context.stroke(); + + this.context.beginPath(); + this.context.fillStyle = this.properties['chart.colors'][i]; + this.context.arc(x + (width / 2), y + (this.data[i] > 0 ? 0 : height), 2, 0, 6.28, 0); + + // Set the colour for the dots + this.context.fillStyle = this.properties['chart.colors'][0]; + + /** + * Sequential colors + */ + if (this.properties['chart.colors.sequential']) { + this.context.fillStyle = colors[i]; + } + + this.context.stroke(); + this.context.fill(); + + // Pyramid chart + } else if (variant == 'pyramid') { + + this.context.beginPath(); + var startY = (this.properties['chart.xaxispos'] == 'center' ? (this.canvas.height / 2) : (this.canvas.height - this.gutterBottom)); + + this.context.moveTo(x + hmargin, startY); + this.context.lineTo( + x + hmargin + (barWidth / 2), + y + (this.properties['chart.xaxispos'] == 'center' && (this.data[i] < 0) ? height : 0) + ); + this.context.lineTo(x + hmargin + barWidth, startY); + + this.context.closePath(); + + this.context.stroke(); + this.context.fill(); + + // Arrow chart + } else if (variant == 'arrow') { + + var startY = (this.properties['chart.xaxispos'] == 'center' ? (this.canvas.height / 2) : (this.canvas.height - this.gutterBottom)); + + this.context.lineWidth = this.properties['chart.linewidth'] ? this.properties['chart.linewidth'] : 1; + this.context.lineCap = 'round'; + + this.context.beginPath(); + this.context.moveTo(AA(this, x + hmargin + (barWidth / 2)), startY); + this.context.lineTo(AA(this, x + hmargin + (barWidth / 2)), y + (this.properties['chart.xaxispos'] == 'center' && (this.data[i] < 0) ? height : 0)); + this.context.arc(x + hmargin + (barWidth / 2), + y + (this.properties['chart.xaxispos'] == 'center' && (this.data[i] < 0) ? height : 0), + 5, + this.data[i] > 0 ? 0.78 : 5.6, + this.data[i] > 0 ? 0.79 : 5.48, + this.data[i] < 0); + + this.context.moveTo(AA(this, x + hmargin + (barWidth / 2)), y + (this.properties['chart.xaxispos'] == 'center' && (this.data[i] < 0) ? height : 0)); + this.context.arc(x + hmargin + (barWidth / 2), + y + (this.properties['chart.xaxispos'] == 'center' && (this.data[i] < 0) ? height : 0), + 5, + this.data[i] > 0 ? 2.355 : 4, + this.data[i] > 0 ? 2.4 : 3.925, + this.data[i] < 0); + + this.context.stroke(); + + this.context.lineWidth = 1; + + // Unknown variant type + } else { + alert('[BAR] Warning! Unknown chart.variant: ' + variant); + } + + this.coords.push([x + hmargin, y, width - (2 * hmargin), height]); + + + /** + * Stacked bar + */ + } else if (typeof(this.data[i]) == 'object' && this.properties['chart.grouping'] == 'stacked') { + + if (this.min) { + alert("[ERROR] Stacked Bar charts with a Y min are not supported"); + } + + var barWidth = width - (2 * hmargin); + var redrawCoords = [];// Necessary to draw if the shadow is enabled + var startY = 0; + var dataset = this.data[i]; + + /** + * Check for a negative bar width + */ + if (barWidth < 0) { + alert('[RGRAPH] Warning: you have a negative bar width. This may be caused by the chart.hmargin being too high or the width of the canvas not being sufficient.'); + } + + for (j=0; j 0 ? 'right' : 'left') : 'center', + null, + this.properties['chart.labels.above.angle']); + + // Turn any shadow back on + if (shadow) { + this.context.shadowColor = shadowColor; + this.context.shadowBlur = shadowBlur; + this.context.shadowOffsetX = shadowOffsetX; + this.context.shadowOffsetY = shadowOffsetY; + } + } + + + /** + * Redraw the bars if the shadow is enabled due to hem being drawn from the bottom up, and the + * shadow spilling over to higher up bars + */ + if (shadow) { + + RGraph.NoShadow(this); + + for (k=0; k 0 ? 'right' : 'left') : 'center', + null, + this.properties['chart.labels.above.angle']); + + // Turn any shadow back on + if (shadow) { + this.context.shadowColor = shadowColor; + this.context.shadowBlur = shadowBlur; + this.context.shadowOffsetX = shadowOffsetX; + this.context.shadowOffsetY = shadowOffsetY; + } +} + } + + /** + * Redraw the bar if shadows are going to the left + */ + if (redrawCoords.length) { + + RGraph.NoShadow(this); + + this.context.lineWidth = this.properties['chart.linewidth']; + + this.context.beginPath(); + for (var j=0; j 0) { + angle = -1 * text_angle; + halign = 'right'; + yOffset -= 5; + + if (this.properties['chart.xaxispos'] == 'top') { + halign = 'left'; + yOffset += 5; + } + } + + // Draw the X axis labels + context.fillStyle = this.properties['chart.text.color']; + + // How wide is each bar + var barWidth = (this.canvas.width - this.gutterRight - this.gutterLeft) / labels.length; + + // Reset the xTickGap + xTickGap = (this.canvas.width - this.gutterRight - this.gutterLeft) / labels.length + + // Draw the X tickmarks + var i=0; + var font = this.properties['chart.text.font']; + + for (x=this.gutterLeft + (xTickGap / 2); x<=this.canvas.width - this.gutterRight; x+=xTickGap) { + this.context.fillStyle = this.properties['chart.labels.colors'][i]; + + RGraph.Text(context, font, + text_size, + x + (this.properties['chart.text.angle'] == 90 ? 0 : 0), + this.properties['chart.xaxispos'] == 'top' ? this.gutterTop - yOffset + text_size - 1 : (this.canvas.height - this.gutterBottom) + yOffset, + String(labels[i++]), + (this.properties['chart.text.angle'] == 90 ? 'center' : 'top'), + halign, + null, + angle); + } + } + + /** + * If chart.labels.above.specific is specified, draw them + */ + if (this.properties['chart.labels.above.specific']) { + + var labels = this.properties['chart.labels.above.specific']; + + for (var i=0; i= 0 ? 'bottom' : 'top'; + var halign = 'center'; + + // Horizontal alignment + if (typeof(this.properties['chart.labels.above.angle']) == 'number') { + + if (this.properties['chart.labels.above.angle'] >= 0) { + if (this.data[i] >= 0) { + halign = 'right'; + } else { + halign = 'left'; + } + } else { + if (this.data[i] >= 0) { + halign = 'left'; + } else { + halign = 'right'; + } + } + } + + RGraph.Text(context, + this.properties['chart.text.font'], + this.properties['chart.labels.above.size'] ? this.properties['chart.labels.above.size'] : this.properties['chart.text.size'], + coords[0] + (coords[2] / 2), + value >= 0 ? coords[1] - 5 : coords[1] + coords[3] + 3, + String(labels[i]), + valign, + halign, + null, + angle); + } + } + } + + /** + * Draws the X axis at the top + */ + RGraph.Bar.prototype.Drawlabels_top = function () + { + this.context.beginPath(); + this.context.fillStyle = this.properties['chart.text.color']; + this.context.strokeStyle = 'black'; + + if (this.properties['chart.xaxispos'] == 'top') { + + var context = this.context; + var interval = (this.grapharea * (1/5) ); + var text_size = this.properties['chart.text.size']; + var units_pre = this.properties['chart.units.pre']; + var units_post = this.properties['chart.units.post']; + var align = this.properties['chart.yaxispos'] == 'left' ? 'right' : 'left'; + var font = this.properties['chart.text.font']; + var numYLabels = this.properties['chart.ylabels.count']; + + if (this.properties['chart.ylabels.inside'] == true) { + var xpos = this.properties['chart.yaxispos'] == 'left' ? this.gutterLeft + 5 : this.canvas.width - this.gutterRight - 5; + var align = this.properties['chart.yaxispos'] == 'left' ? 'left' : 'right'; + var boxed = true; + } else { + var xpos = this.properties['chart.yaxispos'] == 'left' ? this.gutterLeft - 5 : this.canvas.width - this.gutterRight + 5; + var boxed = false; + } + + /** + * Draw specific Y labels here so that the local variables can be reused + */ + if (typeof(this.properties['chart.ylabels.specific']) == 'object' && this.properties['chart.ylabels.specific']) { + + var labels = RGraph.array_reverse(this.properties['chart.ylabels.specific']); + var grapharea = this.canvas.height - this.gutterTop - this.gutterBottom; + + for (var i=0; i=0; --i) { + var y = this.gutterTop + (grapharea * ( (i+1) / (labels.length * 2) )) + (grapharea / 2); + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][i + labels.length]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][i + labels.length];} + RGraph.Text(context, font, text_size, xpos, y, labels[labels.length - i - 1], 'center', align, boxed); + } + + return; + } + + + + + + + + + + + + + if (numYLabels == 1 || numYLabels == 3 || numYLabels == 5) { + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][0]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][0];} + RGraph.Text(context, font, text_size, xpos, this.gutterTop + this.halfTextHeight, RGraph.number_format(this, this.scale[4], units_pre, units_post), null, align, boxed); + + if (numYLabels == 5) { + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][1]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][1];} + RGraph.Text(context, font, text_size, xpos, (1*interval) + this.gutterTop + this.halfTextHeight, RGraph.number_format(this, this.scale[3], units_pre, units_post), null, align, boxed); + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][3]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][3];} + RGraph.Text(context, font, text_size, xpos, (3*interval) + this.gutterTop + this.halfTextHeight, RGraph.number_format(this, this.scale[1], units_pre, units_post), null, align, boxed); + } + + if (numYLabels == 3 || numYLabels == 5) { + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][4]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][4];} + RGraph.Text(context, font, text_size, xpos, (4*interval) + this.gutterTop + this.halfTextHeight, RGraph.number_format(this, this.scale[0], units_pre, units_post), null, align, boxed); + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][2]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][2];} + RGraph.Text(context, font, text_size, xpos, (2*interval) + this.gutterTop + this.halfTextHeight, RGraph.number_format(this, this.scale[2], units_pre, units_post), null, align, boxed); + } + } else if (numYLabels == 10) { + // 10 Y labels + interval = (this.grapharea / 10) / 2; + + for (var i=0; i<10; ++i) { + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][i]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][i];} + RGraph.Text(context, font, text_size, xpos,this.gutterTop + ((this.grapharea / (10 * 2)) * i),RGraph.number_format(this, ((this.scale[4] / 10) * (10 - i)).toFixed((this.properties['chart.scale.decimals'])), units_pre, units_post), 'center', align, boxed); + } + } + + /////////////////////////////////////////////////////////////////////////////////// + + /** + * Draw the bottom halves labels + */ + var interval = (this.grapharea) / 10; + + if (numYLabels == 1 || numYLabels == 3 || numYLabels == 5) { + if (numYLabels == 3 || numYLabels == 5) { + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][5]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][5];} + RGraph.Text(context, font, text_size, xpos, (this.grapharea + this.gutterTop + this.halfTextHeight) - (4 * interval), '-' + RGraph.number_format(this, this.scale[0], units_pre, units_post), null, align, boxed); + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][7]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][7];} + RGraph.Text(context, font, text_size, xpos, (this.grapharea + this.gutterTop + this.halfTextHeight) - (2 * interval), '-' + RGraph.number_format(this, this.scale[2], units_pre, units_post), null, align, boxed); + } + + if (numYLabels == 5) { + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][6]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][6];} + RGraph.Text(context, font, text_size, xpos, (this.grapharea + this.gutterTop + this.halfTextHeight) - (3 * interval), '-' + RGraph.number_format(this, this.scale[1], units_pre, units_post), null, align, boxed); + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][8]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][8];} + RGraph.Text(context, font, text_size, xpos, (this.grapharea + this.gutterTop + this.halfTextHeight) - interval, '-' + RGraph.number_format(this, this.scale[3], units_pre, units_post), null, align, boxed); + } + + // Color + if (typeof(this.properties['chart.ylabels.colors']) == 'object' && this.properties['chart.ylabels.colors'] && this.properties['chart.ylabels.colors'][9]) {this.context.fillStyle = this.properties['chart.ylabels.colors'][9];} + RGraph.Text(context, font, text_size, xpos, this.grapharea + this.gutterTop + this.halfTextHeight, '-' + RGraph.number_format(this, this.scale[4], units_pre, units_post), null, align, boxed); + + } else if (numYLabels == 10) { + + // Arbitrary number of Y labels + interval = (this.grapharea / numYLabels) / 2; + + for (var i=0; i= left && mouseX <= (left + width) && mouseY >= top && mouseY <= (top + height)) { + + if (this.properties['chart.tooltips']) { + var tooltip = RGraph.parseTooltipText ? RGraph.parseTooltipText(this.properties['chart.tooltips'], i) : this.properties['chart.tooltips'][i]; + } + + // Work out the dataset + var dataset = 0; + var idx = i; + + while (idx >= (typeof(this.data[dataset]) == 'object' ? this.data[dataset].length : 1)) { + if (typeof(this.data[dataset]) == 'number') { + idx -= 1; + } else { + idx -= this.data[dataset].length; + } + + dataset++; + } + + if (typeof(this.data[dataset]) == 'number') { + idx = null; + } + + + return { + 0: obj, 1: left, 2: top, 3: width, 4: height, 5: i, + 'object': obj, 'x': left, 'y': top, 'width': width, 'height': height, 'index': i, 'tooltip': tooltip, 'index_adjusted': idx, 'dataset': dataset + }; + } + } + + return null; + } + + + /** + * This retrives the bar based on the X coordinate only. + * + * @param object e The event object + * @param object OPTIONAL You can pass in the bar object instead of the + * function using "this" + */ + RGraph.Bar.prototype.getShapeByX = function (e) + { + var canvas = e.target; + var mouseCoords = RGraph.getMouseXY(e); + + + // This facilitates you being able to pass in the bar object as a parameter instead of + // the function getting it from itself + var obj = arguments[1] ? arguments[1] : this; + + + /** + * Loop through the bars determining if the mouse is over a bar + */ + for (var i=0; i= left && mouseX <= (left + width)) { + + if (this.properties['chart.tooltips']) { + var tooltip = RGraph.parseTooltipText ? RGraph.parseTooltipText(this.properties['chart.tooltips'], i) : this.properties['chart.tooltips'][i]; + } + + + + return { + 0: obj, 1: left, 2: top, 3: width, 4: height, 5: i, + 'object': obj, 'x': left, 'y': top, 'width': width, 'height': height, 'index': i, 'tooltip': tooltip + }; + } + } + + return null; + } + + + /** + * When you click on the chart, this method can return the Y value at that point. It works for any point on the + * chart (that is inside the gutters) - not just points within the Bars. + * + * EITHER: + * + * @param object arg The event object + * + * OR: + * + * @param object arg A two element array containing the X and Y coordinates + */ + RGraph.Bar.prototype.getValue = function (arg) + { + if (arg.length == 2) { + var mouseX = arg[0]; + var mouseY = arg[1]; + } else { + var mouseCoords = RGraph.getMouseXY(arg); + var mouseX = mouseCoords[0]; + var mouseY = mouseCoords[1]; + } + + if ( mouseY < this.properties['chart.gutter.top'] + || mouseY > (this.canvas.height - this.properties['chart.gutter.bottom']) + || mouseX < this.properties['chart.gutter.left'] + || mouseX > (this.canvas.width - this.properties['chart.gutter.right']) + ) { + return null; + } + + if (this.properties['chart.xaxispos'] == 'center') { + var value = (((this.grapharea / 2) - (mouseY - this.properties['chart.gutter.top'])) / this.grapharea) * (this.max - this.min) + value *= 2; + + if (value >= 0) { + value += this.min; + } else { + value -= this.min; + } + + } else if (this.properties['chart.xaxispos'] == 'top') { + var value = ((this.grapharea - (mouseY - this.properties['chart.gutter.top'])) / this.grapharea) * (this.max - this.min) + value = this.max - value; + value = Math.abs(value) * -1; + } else { + var value = ((this.grapharea - (mouseY - this.properties['chart.gutter.top'])) / this.grapharea) * (this.max - this.min) + value += this.min; + } + + return value; + } + + + /** + * This function can be used when the canvas is clicked on (or similar - depending on the event) + * to retrieve the relevant Y coordinate for a particular value. + * + * @param int value The value to get the Y coordinate for + */ + RGraph.Bar.prototype.getYCoord = function (value) + { + if (value > this.max) { + return null; + } + + var y; + var xaxispos = this.properties['chart.xaxispos']; + + if (xaxispos == 'top') { + + // Account for negative numbers + if (value < 0) { + value = Math.abs(value); + } + + y = ((value - this.min) / (this.max - this.min)) * this.grapharea; + y = y + this.gutterTop + + } else if (xaxispos == 'center') { + + y = ((value - this.min) / (this.max - this.min)) * (this.grapharea / 2); + y = (this.grapharea / 2) - y; + y += this.gutterTop; + + } else { + + if (value < this.min) { + value = this.min; + } + + y = ((value - this.min) / (this.max - this.min)) * this.grapharea; + + y = this.canvas.height - this.gutterBottom - y; + } + + return y; + } + + + + /** + * Each object type has its own Highlight() function which highlights the appropriate shape + * + * @param object shape The shape to highlight + */ + RGraph.Bar.prototype.Highlight = function (shape) + { + // Add the new highlight + RGraph.Highlight.Rect(this, shape); + } + + + + /** + * The getObjectByXY() worker method + */ + RGraph.Bar.prototype.getObjectByXY = function (e) + { + var mouseXY = RGraph.getMouseXY(e); + + if ( + mouseXY[0] >= this.properties['chart.gutter.left'] + && mouseXY[0] <= (this.canvas.width - this.properties['chart.gutter.right']) + && mouseXY[1] >= this.properties['chart.gutter.top'] + && mouseXY[1] <= (this.canvas.height - this.properties['chart.gutter.bottom']) + ) { + + return this; + } + } + + + + /** + * This method handles the adjusting calculation for when the mouse is moved + * + * @param object e The event object + */ + RGraph.Bar.prototype.Adjusting_mousemove = function (e) + { + /** + * Handle adjusting for the Bar + */ + if (RGraph.Registry.Get('chart.adjusting') && RGraph.Registry.Get('chart.adjusting').uid == this.uid) { + + // Rounding the value to the given number of decimals make the chart step + var value = Number(this.getValue(e));//.toFixed(this.Get('chart.scale.decimals')); + var shape = this.getShapeByX(e); + + if (shape) { + + RGraph.Registry.Set('chart.adjusting.shape', shape); + + this.data[shape['index']] = Number(value); + RGraph.RedrawCanvas(e.target); + + RGraph.FireCustomEvent(this, 'onadjust'); + } + } + } + + + /********************************************************************************************************* + * This is the combined bar and Line class which makes creating bar/line combo charts a little bit easier * + /*********************************************************************************************************/ + + + + RGraph.CombinedChart = function () + { + /** + * Create a default empty array for the objects + */ + this.objects = []; + + for (var i=0; i

    /gi,""),b(/<\/p>/gi,"\n"),b(/ |\u00a0/gi," "),b(/"/gi,'"'),b(/</gi,"<"),b(/>/gi,">"),b(/&/gi,"&"),a},_punbb_bbcode2html:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/\n/gi,"
    "),b(/\[b\]/gi,""),b(/\[\/b\]/gi,""),b(/\[i\]/gi,""),b(/\[\/i\]/gi,""),b(/\[u\]/gi,""),b(/\[\/u\]/gi,""),b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'
    $2'),b(/\[url\](.*?)\[\/url\]/gi,'$1'),b(/\[img\](.*?)\[\/img\]/gi,''),b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),b(/\[code\](.*?)\[\/code\]/gi,'$1 '),b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),a}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}(); \ No newline at end of file diff --git a/www/js/tinymce/plugins/charmap/plugin.min.js b/www/js/tinymce/plugins/charmap/plugin.min.js new file mode 100644 index 0000000..9bf1e9f --- /dev/null +++ b/www/js/tinymce/plugins/charmap/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("charmap",function(a){function b(){return[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]]}function c(a){return tinymce.util.Tools.grep(a,function(a){return i(a)&&2==a.length})}function d(a){return i(a)?[].concat(c(a)):"function"==typeof a?a():[]}function e(b){var c=a.settings;return c.charmap&&(b=d(c.charmap)),c.charmap_append?[].concat(b).concat(d(c.charmap_append)):b}function f(){return e(b())}function g(b){a.fire("insertCustomChar",{chr:b}).chr,a.execCommand("mceInsertContent",!1,b)}function h(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var c,d,e,h;c='';var i=f(),j=Math.min(i.length,25),k=Math.ceil(i.length/j);for(e=0;k>e;e++){for(c+="",d=0;j>d;d++){var l=e*j+d;if(l
    '+(m?String.fromCharCode(parseInt(m[0],10)):" ")+"
    "}else c+="
    "}c+="";var n={type:"container",html:c,onclick:function(a){var c=a.target;/^(TD|DIV)$/.test(c.nodeName)&&b(c).firstChild&&(g(tinymce.trim(c.innerText||c.textContent)),a.ctrlKey||h.close())},onmouseover:function(a){var c=b(a.target);c&&c.firstChild?(h.find("#preview").text(c.firstChild.firstChild.data),h.find("#previewTitle").text(c.title)):(h.find("#preview").text(" "),h.find("#previewTitle").text(" "))}};h=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[n,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){h.close()}}]})}var i=tinymce.util.Tools.isArray;return a.addCommand("mceShowCharmap",h),a.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"}),{getCharMap:f,insertChar:g}}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/code/plugin.min.js b/www/js/tinymce/plugins/code/plugin.min.js new file mode 100644 index 0000000..d6331f8 --- /dev/null +++ b/www/js/tinymce/plugins/code/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("code",function(a){function b(){var b=a.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:a.getParam("code_dialog_width",600),minHeight:a.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(b){a.focus(),a.undoManager.transact(function(){a.setContent(b.data.code)}),a.selection.setCursorLocation(),a.nodeChanged()}});b.find("#code").value(a.getContent({source_view:!0}))}a.addCommand("mceCodeEditor",b),a.addButton("code",{icon:"code",tooltip:"Source code",onclick:b}),a.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:b})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/codesample/css/prism.css b/www/js/tinymce/plugins/codesample/css/prism.css new file mode 100644 index 0000000..28622b5 --- /dev/null +++ b/www/js/tinymce/plugins/codesample/css/prism.css @@ -0,0 +1,138 @@ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/www/js/tinymce/plugins/codesample/plugin.min.js b/www/js/tinymce/plugins/codesample/plugin.min.js new file mode 100644 index 0000000..6cdbf9b --- /dev/null +++ b/www/js/tinymce/plugins/codesample/plugin.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;fa.length)break a;if(!(q instanceof e)){k.lastIndex=0;var r=k.exec(q);if(r){m&&(n=r[1].length);var s=r.index-1+n,r=r[0].slice(n),t=r.length,u=s+t,v=q.slice(0,s+1),w=q.slice(u+1),x=[p,1];v&&x.push(v);var y=new e(h,l?c.tokenize(r,l):r,o);x.push(y),w&&x.push(w),Array.prototype.splice.apply(f,x)}}}}}return f},hooks:{all:{},add:function(a,b){var d=c.hooks.all;d[a]=d[a]||[],d[a].push(b)},run:function(a,b){var d=c.hooks.all[a];if(d&&d.length)for(var e,f=0;e=d[f++];)e(b)}}},d=c.Token=function(a,b,c){this.type=a,this.content=b,this.alias=c};return d.stringify=function(a,b,e){if("string"==typeof a)return a;if("Array"===c.util.type(a))return a.map(function(c){return d.stringify(c,b,a)}).join("");var f={type:a.type,content:d.stringify(a.content,b,e),tag:"span",classes:["token",a.type],attributes:{},language:b,parent:e};if("comment"==f.type&&(f.attributes.spellcheck="true"),a.alias){var g="Array"===c.util.type(a.alias)?a.alias:[a.alias];Array.prototype.push.apply(f.classes,g)}c.hooks.run("wrap",f);var h="";for(var i in f.attributes)h+=(h?" ":"")+i+'="'+(f.attributes[i]||"")+'"';return"<"+f.tag+' class="'+f.classes.join(" ")+'" '+h+">"+f.content+""},b.document?void 0:b.addEventListener?(b.addEventListener("message",function(a){var d=JSON.parse(a.data),e=d.language,f=d.code,g=d.immediateClose;b.postMessage(c.highlight(f,c.languages[e],e)),g&&b.close()},!1),b.Prism):b.Prism}();return"undefined"!=typeof module&&module.exports&&(module.exports=c),"undefined"!=typeof global&&(global.Prism=c),c.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),c.languages.xml=c.languages.markup,c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,c.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},c.languages.css.atrule.inside.rest=c.util.clone(c.languages.css),c.languages.markup&&(c.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/i,inside:{tag:{pattern:/|<\/style>/i,inside:c.languages.markup.tag.inside},rest:c.languages.css},alias:"language-css"}}),c.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:c.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:c.languages.css}},alias:"language-css"}},c.languages.markup.tag)),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),c.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),c.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/i,inside:{tag:{pattern:/|<\/script>/i,inside:c.languages.markup.tag.inside},rest:c.languages.javascript},alias:"language-javascript"}}),c.languages.js=c.languages.javascript,c.languages.c=c.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),c.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete c.languages.c["class-name"],delete c.languages.c["boolean"],c.languages.csharp=c.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),c.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),c.languages.cpp=c.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),c.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),c.languages.java=c.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),c.languages.php=c.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),c.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),c.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),c.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),c.languages.markup&&(c.hooks.add("before-highlight",function(a){"php"===a.language&&(a.tokenStack=[],a.backupCode=a.code,a.code=a.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(b){return a.tokenStack.push(b),"{{{PHP"+a.tokenStack.length+"}}}"}))}),c.hooks.add("before-insert",function(a){"php"===a.language&&(a.code=a.backupCode,delete a.backupCode)}),c.hooks.add("after-highlight",function(a){if("php"===a.language){for(var b,d=0;b=a.tokenStack[d];d++)a.highlightedCode=a.highlightedCode.replace("{{{PHP"+(d+1)+"}}}",c.highlight(b,a.grammar,"php").replace(/\$/g,"$$$$"));a.element.innerHTML=a.highlightedCode}}),c.hooks.add("wrap",function(a){"php"===a.language&&"markup"===a.type&&(a.content=a.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),c.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:c.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),c.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(a){a.languages.ruby=a.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var b={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:a.util.clone(a.languages.ruby)}};a.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:b}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:b}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:b}}]}(c),c}),d("tinymce/codesampleplugin/Utils",[],function(){function a(a){return a&&"PRE"==a.nodeName&&-1!==a.className.indexOf("language-")}function b(a){return function(b,c){return a(c)}}return{isCodeSample:a,trimArg:b}}),d("tinymce/codesampleplugin/Dialog",["tinymce/dom/DOMUtils","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Prism"],function(a,b,c){function d(a){var b=[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],c=a.settings.codesample_languages;return c?c:b}function e(a,b,d){a.undoManager.transact(function(){var e=f(a);d=i.encode(d),e?(a.dom.setAttrib(e,"class","language-"+b),e.innerHTML=d,c.highlightElement(e),a.selection.select(e)):(a.insertContent('

    '+d+"
    "),a.selection.select(a.$("#__new").removeAttr("id")[0]))})}function f(a){var c=a.selection.getNode();return b.isCodeSample(c)?c:null}function g(a){var b=f(a);return b?b.textContent:""}function h(a){var b,c=f(a);return c?(b=c.className.match(/language-(\w+)/),b?b[1]:""):""}var i=a.DOM;return{open:function(a){a.windowManager.open({title:"Insert/Edit code sample",minWidth:Math.min(i.getViewPort().w,a.getParam("codesample_dialog_width",800)),minHeight:Math.min(i.getViewPort().h,a.getParam("codesample_dialog_height",650)),layout:"flex",direction:"column",align:"stretch",body:[{type:"listbox",name:"language",label:"Language",maxWidth:200,value:h(a),values:d(a)},{type:"textbox",name:"code",multiline:!0,spellcheck:!1,ariaLabel:"Code view",flex:1,style:"direction: ltr; text-align: left",classes:"monospace",value:g(a),autofocus:!0}],onSubmit:function(b){e(a,b.data.language,b.data.code)}})}}}),d("tinymce/codesampleplugin/Plugin",["tinymce/Env","tinymce/PluginManager","tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Utils"],function(a,b,c,d,e){var f,g=e.trimArg;b.add("codesample",function(b,h){function i(){var a;b.inline&&f||!b.inline&&j||(b.inline?f=!0:j=!0,a=b.dom.create("link",{rel:"stylesheet",href:h+"/css/prism.css"}),b.getDoc().getElementsByTagName("head")[0].appendChild(a))}var j,k=b.$;a.ceFalse&&(b.on("PreProcess",function(a){k("pre[contenteditable=false]",a.node).filter(g(e.isCodeSample)).each(function(a,b){var c=k(b),d=b.textContent;c.attr("class",k.trim(c.attr("class"))),c.removeAttr("contentEditable"),c.empty().append(k("").each(function(){this.textContent=d}))})}),b.on("SetContent",function(){var a=k("pre").filter(g(e.isCodeSample)).filter(function(a,b){return"false"!==b.contentEditable});a.length&&b.undoManager.transact(function(){a.each(function(a,d){k(d).find("br").each(function(a,c){c.parentNode.replaceChild(b.getDoc().createTextNode("\n"),c)}),d.contentEditable=!1,d.innerHTML=b.dom.encode(d.textContent),c.highlightElement(d),d.className=k.trim(d.className)})})}),b.addCommand("codesample",function(){d.open(b)}),b.addButton("codesample",{cmd:"codesample",title:"Insert/Edit code sample"}),b.on("init",i))})}),f(["tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Plugin"])}(this); \ No newline at end of file diff --git a/www/js/tinymce/plugins/colorpicker/plugin.min.js b/www/js/tinymce/plugins/colorpicker/plugin.min.js new file mode 100644 index 0000000..66ea69c --- /dev/null +++ b/www/js/tinymce/plugins/colorpicker/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("colorpicker",function(a){function b(b,c){function d(a){var b=new tinymce.util.Color(a),c=b.toRgb();f.fromJSON({r:c.r,g:c.g,b:c.b,hex:b.toHex().substr(1)}),e(b.toHex())}function e(a){f.find("#preview")[0].getEl().style.background=a}var f=a.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:c,onchange:function(){var a=this.rgb();f&&(f.find("#r").value(a.r),f.find("#g").value(a.g),f.find("#b").value(a.b),f.find("#hex").value(this.value().substr(1)),e(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var a,b,c=f.find("colorpicker")[0];return a=this.name(),b=this.value(),"hex"==a?(b="#"+b,d(b),void c.value(b)):(b={r:f.find("#r").value(),g:f.find("#g").value(),b:f.find("#b").value()},c.value(b),void d(b))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){b("#"+this.toJSON().hex)}});d(c)}a.settings.color_picker_callback||(a.settings.color_picker_callback=b)}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/contextmenu/plugin.min.js b/www/js/tinymce/plugins/contextmenu/plugin.min.js new file mode 100644 index 0000000..13cd3d2 --- /dev/null +++ b/www/js/tinymce/plugins/contextmenu/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("contextmenu",function(a){var b,c=a.settings.contextmenu_never_use_native,d=function(a){return a.ctrlKey&&!c},e=function(){return tinymce.Env.mac&&tinymce.Env.webkit};a.on("mousedown",function(b){e()&&2===b.button&&!d(b)&&a.selection.isCollapsed()&&a.once("contextmenu",function(b){a.selection.placeCaretAt(b.clientX,b.clientY)})}),a.on("contextmenu",function(c){var e;if(!d(c)){if(c.preventDefault(),e=a.settings.contextmenu||"link image inserttable | cell row column deletetable",b)b.show();else{var f=[];tinymce.each(e.split(/[ ,]/),function(b){var c=a.menuItems[b];"|"==b&&(c={text:b}),c&&(c.shortcut="",f.push(c))});for(var g=0;gKx}s1_F$4FCWDA^8LW0018VEC2ui01^Na000Hw;3tYzX_jM3Qpv$_M?zI9i5=0S zX-{-uv=l3%&P0s%m9Ox_a(m_c|u z01g3U0`Wll5)poVdma=N8y<3f0Sf~hXmTC}2oxMW4FdxUj+z4<0}lrX2nP=qkDRIt z9Ge*(qzMrj3jrIOjvI{`5eWzt3`G_T8yChG8w(a19SkK12@M(+799Zr9n=~PzBCmA z5)BU-)YKUd4H5!D9|!^o9kWIe9SH(WDHRk92}DZ?3})2$P@$55g90f0N)ZA8JID5J Aw*UYD literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-cry.gif b/www/js/tinymce/plugins/emoticons/img/smiley-cry.gif new file mode 100644 index 0000000000000000000000000000000000000000..74d897a4f6d22e814e2b054e98b8a75fb464b4be GIT binary patch literal 329 zcmV-P0k-}}Nk%w1VG;lm0Mr-&E)xPSit@9T3%;vR+|V+?t0A(pllJjXrMl7n=_A_a za^B+Su$LjvyC3@TIQZNZa##w=!k(SO^P#bO*w(eU#;{U83XFCU_V)J5wrb+;g2vkN z#>U24qVoOvY5)KLA^8LW0018VEC2ui01^Na000HX;3tY$X_jM3QUfCh%s^o(nF++< zc?Th6v=oL>*by8K!mhvwelUXuuW&&U9iGO3hM@>Njw{l^#0q9mWpcefdI;O$;efnY zkd~@r-o$*74FCWI1%d((4+jDz0va0>69^fI6%`W{8w!gU1pyL>prH>E0R<%k6Aq%H z4ij+^9TEwM5P}eh2@)L<~6+>@EpxfA0YrcPNsSu literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif b/www/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif new file mode 100644 index 0000000000000000000000000000000000000000..963a96b8a7593b1d8bcbab073abe5ee4e539dbf6 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VG;lm0MrryDh>j~yq&6%75dW~z^P39(NxsGDE{UkxtkIEq(S-a zRKlwv+S=Lr?>hbYY~sQ?c3T&ZcN_Nh_EU3s(>Io6B&>WW`@bsw**)Ocy1bht z{*G6|uwwqUQ2+n{A^8LW0018VEC2ui01^Na000HZ;3tYwX_jM3YQ!c88=*-m*&&bO zILd=`w3KAC;8hxpif*w9ek6oqV-Z0L77fROK$BSR@5BAv-%C>6y>>#+D4e#&nz^qMDItlpp zTG728+|V&?R13PIEBW(C`uh6d*t-1sZ^XQv;oDD}iYLOV7uVO;{`xl4#4tJ{0;h@! z>)kdc3IhA?Hvj+tA^8La0018VEC2ui01^Na06+!P;3tYuX_ljS7!u|-O)I}TzP1q%xT4HOFwMJaO;2ml)!00$)141pU08x3594IX?4 o5YuAA8yXz~76K1c;3^jg77WP185Rf^u}23N0sR5^q(T4yJ1sVN5dZ)H literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-frown.gif b/www/js/tinymce/plugins/emoticons/img/smiley-frown.gif new file mode 100644 index 0000000000000000000000000000000000000000..716f55e161bfebb1c3d34f0b0f40c177fc82c30b GIT binary patch literal 340 zcmV-a0jvH;Nk%w1VG;lm0MroxK_>;q#>Sw62=mns-On=0wransPVevT^YK{Dy(0YY zH)vE6x0?;Wqb>gZas1^OT0si>`ugD5y87}*#H$s=yq(wA*8cf7{`y+(+9J7|9QfT7 z`ROHiU=Y&6FaQ7mA^8LW0018VEC2ui01^Na000Hi;3tYvX_jM3N`@u~nju9hSuh^r zIEcp-wA7(NL0~2d#RP+(G!CPPA>o*KJjv_CkucCA5=K?AfF#RG2V*8BU@jL304|4P z2;PGRF@bj$et;Jf2pR_mVsIA<85|n}kQ*Bq42Ovqj*yy>6P0=h3X&9Z01yyk~2N4w%7#RW^55W%`0vQ+-6(y_*2pqz~90*;x9}yM}%$UI(7t#$D mK_3Se1{4HKM+6iG7EmeH6$V631{L5n)#CyC0qx-*Apkoyg?w!Q literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-innocent.gif b/www/js/tinymce/plugins/emoticons/img/smiley-innocent.gif new file mode 100644 index 0000000000000000000000000000000000000000..334d49e0e60f2997c9ba24071764f95d9e08a5cc GIT binary patch literal 336 zcmV-W0k8f?Nk%w1VG;lm0MrryI4TI-%dP0m5~*+Y`T~ z7Rth){q{I_X%*S48uRZ|(b3V&wIKTX`u+WJzo<^$#wuY;3W|Cf{O29IkTAcaE&lpe z+P*^H)-tknA^-pYA^8LW0018VEC2ui01^Na000He;3tYwX_n)75QgVvNQ`6#5gcMm zEEG~blgXokptKAJgCU?%JT?yos!R6cPtcQWh2siHlNI2L}ifQhgX02^InZ2?-ktkqVRyZJY^Trk|lv zovp437?1~d46O)?2(1i+2NDYk8<+_Kil!K!3njA^!I#dL8x<729}*B65mC=m5gHH@ iDi9P3f*VjB3KS4HDb_qqRul{0DIT=Nk%w1VG;lm0Mrx!QauaC#>Vb6G=_5=^YB^9wrc376Sb5I-qJGf@9vZ# z5WlKU(!eVB+7tfnDXp0zyB`?BZ5IChalob*`uh6d*t+@dKGHcU+L|83yq*5~IoH?L zy`?Gp<{bX|SpWb4A^8LW0018VEC2ui01^Na000Hg;3tYyX_jM3R?Bl7&r(q;SsVx< zNd$5fv{ZsKA$SlL3&KN~a1tZRf*~1Ltkx9~2uL3&z-yb0WJDRY082|tP literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-laughing.gif b/www/js/tinymce/plugins/emoticons/img/smiley-laughing.gif new file mode 100644 index 0000000000000000000000000000000000000000..82c5b182e61d32bd394acae551eff180f1eebd26 GIT binary patch literal 343 zcmV-d0jT~*Nk%w1VG;lm0Q4UK!lp8=s;1-69HWK?p_PpF=Pd8~Ygtcnp*fHAL z**;z>w3iC}`fmL6IkKB1N;3zEa}&zKpsu1;_V)HocR5-{J~BcYvE`YXhBnc@CfU=! za(Ec zG>66zv=rqr;2j)}gKqE$ekcSD?}0=WLB?AWp85)qALd+P=4)6X4oXy{bw2>K^d$ z@6ERvva+(4ib~41YUkTEn1&#?rzrOHT>1I=Y*h`+%*@WtPUPg|!@EEI_d5LgZ>^Og z-qyBKJqy*wF8}}lA^8La0018VEC2ui01^Na06+!6;3tYxX_lj?7+U61R3gAaEg8x< zT>%mSfCwURnWQF&g=Q0ZxH1ulW`QtH0>O!5%iT_X0VBy_@EkOngU8?ye~=H!t21{= z9@Uj3a_UbE88~kh5Eq7rh!7QSBn1c?0|Off1&k^`5*QE<4-gmSR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UUC3IeK%0ssI2A^8La0018VEC2ui01^Na06+!R;3tYuX_ljSEE482&%+G^XK%|f zLKbCc4u{4-u|QG~LqamSTo?@JM3OKZAr!|Z2IzP@fY`=CIg$vA3qm46TowfLCt29I z6pDKuvnf~)83+sm9yW#?9s>^(89F=~2?!W44-6Ox2^vNza}fp^9v&G65pp936%Gg+ z6HpTy2o4oGoh+>l3Q)KVQwybl2oo*<4a3D469|nfEii|MH4`}p1_cZp0ssj%2>=2d q41Na?)CpS;4gvxWVpZcR76uLludD?Q1{SnP2NnVU0rZ&)0RTIit8@_n literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-surprised.gif b/www/js/tinymce/plugins/emoticons/img/smiley-surprised.gif new file mode 100644 index 0000000000000000000000000000000000000000..0cc9bb71cca4cdeafbb248ce7e07c3708c1cbd64 GIT binary patch literal 338 zcmV-Y0j>T=Nk%w1VG;lm0Q4UK`{WwN#>SnDDC*4*{OcpiwransPVevTQacIr@mkQp zCf(06s)_=>r7UYx48o@u`uh6d*t-7rH~ji<`P&oj;5Wp)o!8ga`SV6TA_BIW5#ZWV z{`*)c32kA}f=futY?#YE7kxGD|7L}4&OEDw$hkm+~<00QS>F_H?J#bz?uEHnl42f5(9 z5O)`6Q9V2o5;YVLUK)Y`7!Nr+4GMq?85s%^2?`BGDRU798Vn2?1`%>22R{iO0u>bk z9tlA?nk*O<3zHJH6&Mp5qALj)E(mxM!Y&vII4dm@1Ov{`f*8pL3xPEVUI>D>1_uxa kNm?`6VH{N6Di;P13m6<67z+;u7qCYM7XkVK^`jvGJD~P?KL7v# literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif b/www/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif new file mode 100644 index 0000000000000000000000000000000000000000..2075dc16058f1f17912167675ce5cfb9986fc71d GIT binary patch literal 328 zcmV-O0k{4~Nk%w1VG;lm0Mrx!CJF+^#>SU@3-{U*rx+Q^wrc$ABfqLn@9*x?z8(4X zSW-O=@){bmmI~g|GQXoP);cvj3|f1M8e@{G*!tYaiCEujj1NGxRN#6#tiCETo+{x{Hkzt z5k-kPvcD=V2nbmjCgL6k{uF&2nP-t0s;w<385Nx2oxDb z9T5Pp7qJl?3Kkh9oe2sCr5F$p7zPSlsUH*@54w*83=9Or4;w)r2pcU95(FL|1Th;< aDaRQH4;Tal7#Y$v#?=Au0pHUfApkpvZg^t= literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-undecided.gif b/www/js/tinymce/plugins/emoticons/img/smiley-undecided.gif new file mode 100644 index 0000000000000000000000000000000000000000..bef7e257303f8243c89787e7a7f9955dd1f112e2 GIT binary patch literal 337 zcmV-X0j~Z>Nk%w1VG;lm0MroxDi#99#>R?y8~4}{%C>6#>?OadPVevTr-=vi@LATn z4rERY-qJF+n+?CCE&B3D{{3Shh?>WT0o%`b%*Voqm`dL;(4F35y zc485^n;g!+Bme*aA^8LW0018VEC2ui01^Na000Hf;3tYvX_jM3N=AnuogqakNi<9X zK?&0kwA8^tNn{?C$|IAYI1ZzT!2>}iuMddFK#NEkRl!7%6brJAnUs;)XcnA}TNBSP zxQ9;SvEfwYeSaGd2^|LqU~(QF1qBxr3Ii7x84ZVt8wCTKoSYAqc?p`G2onnpk`IOl z1`HLGj}riN2p1K12N4z&8IBDc6tEWs859;JtRB6>lf+xO9}yT19toMv8wnl`7(pKg j7zPv!OGgY81{hE&(iR3pP6ig;HPPS!_yOwPA0Yrc)=Yf3 literal 0 HcmV?d00001 diff --git a/www/js/tinymce/plugins/emoticons/img/smiley-wink.gif b/www/js/tinymce/plugins/emoticons/img/smiley-wink.gif new file mode 100644 index 0000000000000000000000000000000000000000..0631c7616ec8624ddeee02b633326f697ee72f80 GIT binary patch literal 350 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

    "}var d=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent(''+c.getAttribute('),this.hide())}},tooltip:"Emoticons"})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/example/dialog.html b/www/js/tinymce/plugins/example/dialog.html new file mode 100644 index 0000000..565f06f --- /dev/null +++ b/www/js/tinymce/plugins/example/dialog.html @@ -0,0 +1,8 @@ + + + +

    Custom dialog

    + Input some text: + + + \ No newline at end of file diff --git a/www/js/tinymce/plugins/example/plugin.min.js b/www/js/tinymce/plugins/example/plugin.min.js new file mode 100644 index 0000000..88687c7 --- /dev/null +++ b/www/js/tinymce/plugins/example/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("example",function(a,b){a.addButton("example",{text:"My button",icon:!1,onclick:function(){a.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(b){a.insertContent("Title: "+b.data.title)}})}}),a.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){a.windowManager.open({title:"TinyMCE site",url:b+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var b=a.windowManager.getWindows()[0];a.insertContent(b.getContentWindow().document.getElementById("content").value),b.close()}},{text:"Close",onclick:"close"}]})}})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/example_dependency/plugin.min.js b/www/js/tinymce/plugins/example_dependency/plugin.min.js new file mode 100644 index 0000000..e61bf47 --- /dev/null +++ b/www/js/tinymce/plugins/example_dependency/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("example_dependency",function(){},["example"]); \ No newline at end of file diff --git a/www/js/tinymce/plugins/fullpage/plugin.min.js b/www/js/tinymce/plugins/fullpage/plugin.min.js new file mode 100644 index 0000000..1ea5c36 --- /dev/null +++ b/www/js/tinymce/plugins/fullpage/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("fullpage",function(a){function b(){var b=c();a.windowManager.open({title:"Document properties",data:b,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(a){d(tinymce.extend(b,a.data))}})}function c(){function b(a,b){var c=a.attr(b);return c||""}var c,d,f=e(),g={};return g.fontface=a.getParam("fullpage_default_fontface",""),g.fontsize=a.getParam("fullpage_default_fontsize",""),c=f.firstChild,7==c.type&&(g.xml_pi=!0,d=/encoding="([^"]+)"/.exec(c.value),d&&(g.docencoding=d[1])),c=f.getAll("#doctype")[0],c&&(g.doctype=""),c=f.getAll("title")[0],c&&c.firstChild&&(g.title=c.firstChild.value),k(f.getAll("meta"),function(a){var b,c=a.attr("name"),d=a.attr("http-equiv");c?g[c.toLowerCase()]=a.attr("content"):"Content-Type"==d&&(b=/charset\s*=\s*(.*)\s*/gi.exec(a.attr("content")),b&&(g.docencoding=b[1]))}),c=f.getAll("html")[0],c&&(g.langcode=b(c,"lang")||b(c,"xml:lang")),g.stylesheets=[],tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&g.stylesheets.push(a.attr("href"))}),c=f.getAll("body")[0],c&&(g.langdir=b(c,"dir"),g.style=b(c,"style"),g.visited_color=b(c,"vlink"),g.link_color=b(c,"link"),g.active_color=b(c,"alink")),g}function d(b){function c(a,b,c){a.attr(b,c?c:void 0)}function d(a){g.firstChild?g.insert(a,g.firstChild):g.append(a)}var f,g,h,j,m,n=a.dom;f=e(),g=f.getAll("head")[0],g||(j=f.getAll("html")[0],g=new l("head",1),j.firstChild?j.insert(g,j.firstChild,!0):j.append(g)),j=f.firstChild,b.xml_pi?(m='version="1.0"',b.docencoding&&(m+=' encoding="'+b.docencoding+'"'),7!=j.type&&(j=new l("xml",7),f.insert(j,f.firstChild,!0)),j.value=m):j&&7==j.type&&j.remove(),j=f.getAll("#doctype")[0],b.doctype?(j||(j=new l("#doctype",10),b.xml_pi?f.insert(j,f.firstChild):d(j)),j.value=b.doctype.substring(9,b.doctype.length-1)):j&&j.remove(),j=null,k(f.getAll("meta"),function(a){"Content-Type"==a.attr("http-equiv")&&(j=a)}),b.docencoding?(j||(j=new l("meta",1),j.attr("http-equiv","Content-Type"),j.shortEnded=!0,d(j)),j.attr("content","text/html; charset="+b.docencoding)):j&&j.remove(),j=f.getAll("title")[0],b.title?(j?j.empty():(j=new l("title",1),d(j)),j.append(new l("#text",3)).value=b.title):j&&j.remove(),k("keywords,description,author,copyright,robots".split(","),function(a){var c,e,g=f.getAll("meta"),h=b[a];for(c=0;c"))}function e(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(i)}function f(b){function c(a){return a.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase()})}var d,f,h,l,m=b.content,n="",o=a.dom;if(!b.selection&&!("raw"==b.format&&i||b.source_view&&a.getParam("fullpage_hide_in_source_view"))){0!==m.length||b.source_view||(m=tinymce.trim(i)+"\n"+tinymce.trim(m)+"\n"+tinymce.trim(j)),m=m.replace(/<(\/?)BODY/gi,"<$1body"),d=m.indexOf("",d),i=c(m.substring(0,d+1)),f=m.indexOf("\n"),h=e(),k(h.getAll("style"),function(a){a.firstChild&&(n+=a.firstChild.value)}),l=h.getAll("body")[0],l&&o.setAttribs(a.getBody(),{style:l.attr("style")||"",dir:l.attr("dir")||"",vLink:l.attr("vlink")||"",link:l.attr("link")||"",aLink:l.attr("alink")||""}),o.remove("fullpage_styles");var p=a.getDoc().getElementsByTagName("head")[0];n&&(o.add(p,"style",{id:"fullpage_styles"},n),l=o.get("fullpage_styles"),l.styleSheet&&(l.styleSheet.cssText=n));var q={};tinymce.each(p.getElementsByTagName("link"),function(a){"stylesheet"==a.rel&&a.getAttribute("data-mce-fullpage")&&(q[a.href]=a)}),tinymce.each(h.getAll("link"),function(a){var b=a.attr("href");q[b]||"stylesheet"!=a.attr("rel")||o.add(p,"link",{rel:"stylesheet",text:"text/css",href:b,"data-mce-fullpage":"1"}),delete q[b]}),tinymce.each(q,function(a){a.parentNode.removeChild(a)})}}function g(){var b,c="",d="";return a.getParam("fullpage_default_xml_pi")&&(c+='\n'),c+=a.getParam("fullpage_default_doctype",""),c+="\n\n\n",(b=a.getParam("fullpage_default_title"))&&(c+=""+b+"\n"),(b=a.getParam("fullpage_default_encoding"))&&(c+='\n'),(b=a.getParam("fullpage_default_font_family"))&&(d+="font-family: "+b+";"),(b=a.getParam("fullpage_default_font_size"))&&(d+="font-size: "+b+";"),(b=a.getParam("fullpage_default_text_color"))&&(d+="color: "+b+";"),c+="\n\n"}function h(b){b.selection||b.source_view&&a.getParam("fullpage_hide_in_source_view")||(b.content=tinymce.trim(i)+"\n"+tinymce.trim(b.content)+"\n"+tinymce.trim(j))}var i,j,k=tinymce.each,l=tinymce.html.Node;a.addCommand("mceFullPageProperties",b),a.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),a.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),a.on("BeforeSetContent",f),a.on("GetContent",h)}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/fullscreen/plugin.min.js b/www/js/tinymce/plugins/fullscreen/plugin.min.js new file mode 100644 index 0000000..8edbe13 --- /dev/null +++ b/www/js/tinymce/plugins/fullscreen/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){var a=tinymce.DOM.getViewPort();return{x:a.x,y:a.y}}function d(a){scrollTo(a.x,a.y)}function e(){function e(){m.setStyle(p,"height",b().h-(o.clientHeight-p.clientHeight))}var n,o,p,q,r=document.body,s=document.documentElement;l=!l,o=a.getContainer(),n=o.style,p=a.getContentAreaContainer().firstChild,q=p.style,l?(k=c(),f=q.width,g=q.height,q.width=q.height="100%",i=n.width,j=n.height,n.width=n.height="",m.addClass(r,"mce-fullscreen"),m.addClass(s,"mce-fullscreen"),m.addClass(o,"mce-fullscreen"),m.bind(window,"resize",e),e(),h=e):(q.width=f,q.height=g,i&&(n.width=i),j&&(n.height=j),m.removeClass(r,"mce-fullscreen"),m.removeClass(s,"mce-fullscreen"),m.removeClass(o,"mce-fullscreen"),m.unbind(window,"resize",h),d(k)),a.fire("FullscreenStateChanged",{state:l})}var f,g,h,i,j,k,l=!1,m=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Ctrl+Shift+F","",e)}),a.on("remove",function(){h&&m.unbind(window,"resize",h)}),a.addCommand("mceFullScreen",e),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){e(),a.focus()},onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Shift+F",onClick:e,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return l}})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/hr/plugin.min.js b/www/js/tinymce/plugins/hr/plugin.min.js new file mode 100644 index 0000000..25abb0c --- /dev/null +++ b/www/js/tinymce/plugins/hr/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"
    ")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/image/plugin.min.js b/www/js/tinymce/plugins/image/plugin.min.js new file mode 100644 index 0000000..90de1a4 --- /dev/null +++ b/www/js/tinymce/plugins/image/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(Math.max(d.width,d.clientWidth),Math.max(d.height,d.clientHeight))},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&o&&p&&c&&d&&(o!=c?(d=Math.round(c/o*d),isNaN(d)||b.value(d)):(c=Math.round(d/p*c),isNaN(c)||a.value(c))),o=c,p=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){s.width||s.height||!u||t.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),c()},b.onerror=c}var c,d;j(),e(),s=tinymce.extend(s,l.toJSON()),s.alt||(s.alt=""),s.title||(s.title=""),""===s.width&&(s.width=null),""===s.height&&(s.height=null),s.style||(s.style=null),s={src:s.src,alt:s.alt,title:s.title,width:s.width,height:s.height,style:s.style,caption:s.caption,"class":s["class"]},a.undoManager.transact(function(){function e(b){return a.schema.getTextBlockElements()[b.nodeName]}if(!s.src)return void(m&&(t.remove(m),a.focus(),a.nodeChanged()));if(""===s.title&&(s.title=null),m?t.setAttribs(m,s):(s.id="__mcenew",a.focus(),a.selection.setContent(t.createHTML("img",s)),m=t.get("__mcenew"),t.setAttrib(m,"id",null)),a.editorUpload.uploadImagesAuto(),s.caption===!1&&t.is(m.parentNode,"figure.image")&&(c=m.parentNode,t.insertAfter(m,c),t.remove(c)),s.caption!==!0)b(m);else if(!t.is(m.parentNode,"figure.image")){d=m,m=m.cloneNode(!0),c=t.create("figure",{"class":"image"}),c.appendChild(m),c.appendChild(t.create("figcaption",{contentEditable:!0},"Caption")),c.contentEditable=!1;var f=t.getParent(d,e);f?t.split(f,d,c):t.replace(c,d),a.selection.select(c)}})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};q&&q.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&u&&(o=a.width,p=a.height,l.find("#width").value(o),l.find("#height").value(p))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=t.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=t.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(c["margin-top"]===c["margin-bottom"]?l.find("#vspace").value(g(c["margin-top"])):l.find("#vspace").value(""),c["margin-right"]===c["margin-left"]?l.find("#hspace").value(g(c["margin-right"])):l.find("#hspace").value("")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(c))))}}var l,m,n,o,p,q,r,s={},t=a.dom,u=a.settings.image_dimensions!==!1;m=a.selection.getNode(),n=t.getParent(m,"figure.image"),n&&(m=t.select("img",n)[0]),m&&("IMG"!=m.nodeName||m.getAttribute("data-mce-object")||m.getAttribute("data-mce-placeholder"))&&(m=null),m&&(o=t.getAttrib(m,"width"),p=t.getAttrib(m,"height"),s={src:t.getAttrib(m,"src"),alt:t.getAttrib(m,"alt"),title:t.getAttrib(m,"title"),"class":t.getAttrib(m,"class"),width:o,height:p,caption:!!n}),d&&(q={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:s.src&&a.convertURL(s.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){q=this}}),a.settings.image_class_list&&(r={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var v=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},q];a.settings.image_description!==!1&&v.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&v.push({name:"title",type:"textbox",label:"Image Title"}),u&&v.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),v.push(r),a.settings.image_caption&&tinymce.Env.ceFalse&&v.push({name:"caption",type:"checkbox",label:"Caption"}),a.settings.image_advtab?(m&&(m.style.marginLeft&&m.style.marginRight&&m.style.marginLeft===m.style.marginRight&&(s.hspace=g(m.style.marginLeft)),m.style.marginTop&&m.style.marginBottom&&m.style.marginTop===m.style.marginBottom&&(s.vspace=g(m.style.marginTop)),m.style.borderWidth&&(s.border=g(m.style.borderWidth)),s.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(m,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:s,bodyType:"tabpanel",body:[{title:"General",type:"form",items:v},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:s,body:v,onSubmit:f})}a.on("preInit",function(){function b(a){var b=a.attr("class");return b&&/\bimage\b/.test(b)}function c(a){return function(c){function d(b){b.attr("contenteditable",a?"true":null)}for(var e,f=c.length;f--;)e=c[f],b(e)&&(e.attr("contenteditable",a?"false":null),tinymce.each(e.getAll("figcaption"),d))}}a.parser.addNodeFilter("figure",c(!0)),a.serializer.addNodeFilter("figure",c(!1))}),a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/imagetools/plugin.min.js b/www/js/tinymce/plugins/imagetools/plugin.min.js new file mode 100644 index 0000000..4d2ee3d --- /dev/null +++ b/www/js/tinymce/plugins/imagetools/plugin.min.js @@ -0,0 +1 @@ +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.PluginManager),h("2",tinymce.Env),h("3",tinymce.util.Promise),h("4",tinymce.util.URI),h("5",tinymce.util.Tools),h("6",tinymce.util.Delay),g("m",[],function(){function a(a,b){return d(document.createElement("canvas"),a,b)}function b(a){return a.getContext("2d")}function c(a){var b=null;try{b=a.getContext("webgl")||a.getContext("experimental-webgl")}catch(c){}return b||(b=null),b}function d(a,b,c){return a.width=b,a.height=c,a}return{create:a,resize:d,get2dContext:b,get3dContext:c}}),g("n",[],function(){function a(a){return a.naturalWidth||a.width}function b(a){return a.naturalHeight||a.height}return{getWidth:a,getHeight:b}}),g("o",[],function(){function a(a,b){return function(){a.apply(b,arguments)}}function b(b){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof b)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],h(b,a(d,this),a(e,this))}function c(a){var b=this;return null===this._state?void this._deferreds.push(a):void i(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function d(b){try{if(b===this)throw new TypeError("A promise cannot be resolved with itself.");if(b&&("object"==typeof b||"function"==typeof b)){var c=b.then;if("function"==typeof c)return void h(a(c,b),a(d,this),a(e,this))}this._state=!0,this._value=b,f.call(this)}catch(g){e.call(this,g)}}function e(a){this._state=!1,this._value=a,f.call(this)}function f(){for(var a=0,b=this._deferreds.length;b>a;a++)c.call(this,this._deferreds[a]);this._deferreds=null}function g(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function h(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}if(window.Promise)return window.Promise;var i=b.immediateFn||"function"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},j=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};return b.prototype["catch"]=function(a){return this.then(null,a)},b.prototype.then=function(a,d){var e=this;return new b(function(b,f){c.call(e,new g(a,d,b,f))})},b.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&j(arguments[0])?arguments[0]:arguments);return new b(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},b}),g("p",[],function(){function a(a){var b=document.createElement("a");return b.href=a,b.pathname}function b(b){var c=a(b).split("."),d=c[c.length-1],e={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"};return d&&(d=d.toLowerCase()),e[d]}return{guessMimeType:b}}),g("e",["o","m","p","n"],function(a,b,c,d){function e(b){return new a(function(a){function c(){b.removeEventListener("load",c),a(b)}b.complete?a(b):b.addEventListener("load",c)})}function f(a){return e(a).then(function(a){var c,e;return e=b.create(d.getWidth(a),d.getHeight(a)),c=b.get2dContext(e),c.drawImage(a,0,0),e})}function g(a){return e(a).then(function(a){var b=a.src;return 0===b.indexOf("blob:")?i(b):0===b.indexOf("data:")?j(b):f(a).then(function(a){return j(a.toDataURL(c.guessMimeType(b)))})})}function h(b){return new a(function(a){function c(){d.removeEventListener("load",c),a(d)}var d=new Image;d.addEventListener("load",c),d.src=URL.createObjectURL(b),d.complete&&c()})}function i(b){return new a(function(a){var c=new XMLHttpRequest;c.open("GET",b,!0),c.responseType="blob",c.onload=function(){200==this.status&&a(this.response)},c.send()})}function j(b){return new a(function(a){var c,d,e,f,g,h;if(b=b.split(","),f=/data:([^;]+)/.exec(b[0]),f&&(g=f[1]),c=atob(b[1]),window.WebKitBlobBuilder){for(h=new WebKitBlobBuilder,d=new ArrayBuffer(c.length),e=0;ec?a=c:b>a&&(a=b),a}function b(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function c(a,b){var c,d,e,f,g=[],h=new Array(10);for(c=0;5>c;c++){for(d=0;5>d;d++)g[d]=b[d+5*c];for(d=0;5>d;d++){for(f=0,e=0;5>e;e++)f+=a[d+5*e]*g[e];h[d+5*c]=f}}return h}function d(b,c){return c=a(c,0,1),b.map(function(b,d){return d%6===0?b=1-(1-b)*c:b*=c,a(b,0,1)})}function e(b,d){var e;return d=a(d,-1,1),d*=100,0>d?e=127+d/100*127:(e=d%1,e=0===e?l[d]:l[Math.floor(d)]*(1-e)+l[Math.floor(d)+1]*e,e=127*e+127),c(b,[e/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}function f(b,d){var e,f,g,h;return d=a(d,-1,1),e=1+(d>0?3*d:d),f=.3086,g=.6094,h=.082,c(b,[f*(1-e)+e,g*(1-e),h*(1-e),0,0,f*(1-e),g*(1-e)+e,h*(1-e),0,0,f*(1-e),g*(1-e),h*(1-e)+e,0,0,0,0,0,1,0,0,0,0,0,1])}function g(b,d){var e,f,g,h,i;return d=a(d,-180,180)/180*Math.PI,e=Math.cos(d),f=Math.sin(d),g=.213,h=.715,i=.072,c(b,[g+e*(1-g)+f*-g,h+e*-h+f*-h,i+e*-i+f*(1-i),0,0,g+e*-g+.143*f,h+e*(1-h)+.14*f,i+e*-i+f*-.283,0,0,g+e*-g+f*-(1-g),h+e*-h+f*h,i+e*(1-i)+f*i,0,0,0,0,0,1,0,0,0,0,0,1])}function h(b,d){return d=a(255*d,-255,255),c(b,[1,0,0,0,d,0,1,0,0,d,0,0,1,0,d,0,0,0,1,0,0,0,0,0,1])}function i(b,d,e,f){return d=a(d,0,2),e=a(e,0,2),f=a(f,0,2),c(b,[d,0,0,0,0,0,e,0,0,0,0,0,f,0,0,0,0,0,1,0,0,0,0,0,1])}function j(b,e){return e=a(e,0,1),c(b,d([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e))}function k(b,e){return e=a(e,0,1),c(b,d([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e))}var l=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];return{identity:b,adjust:d,multiply:c,adjustContrast:e,adjustBrightness:h,adjustSaturation:f,adjustHue:g,adjustColors:i,adjustSepia:j,adjustGrayscale:k}}),g("c",["m","n","e","q"],function(a,b,c,d){function e(d,e){return c.blobToImage(d).then(function(d){function f(a,b){var c,d,e,f,g,h=a.data,i=b[0],j=b[1],k=b[2],l=b[3],m=b[4],n=b[5],o=b[6],p=b[7],q=b[8],r=b[9],s=b[10],t=b[11],u=b[12],v=b[13],w=b[14],x=b[15],y=b[16],z=b[17],A=b[18],B=b[19];for(g=0;gc?a=c:b>a&&(a=b),a}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;for(g=Math.round(Math.sqrt(c.length)),h=Math.floor(g/2),e=a.data,f=b.data,t=a.width,u=a.height,j=0;u>j;j++)for(i=0;t>i;i++){for(k=l=m=0,o=0;g>o;o++)for(n=0;g>n;n++)p=d(i+n-h,0,t-1),q=d(j+o-h,0,u-1),r=4*(q*t+p),s=c[o*g+n],k+=e[r]*s,l+=e[r+1]*s,m+=e[r+2]*s;r=4*(j*t+i),f[r]=d(k,0,255),f[r+1]=d(l,0,255),f[r+2]=d(m,0,255)}return b}var g,h,i=a.create(b.getWidth(d),b.getHeight(d)),j=a.get2dContext(i);return j.drawImage(d,0,0),k(d),g=j.getImageData(0,0,i.width,i.height),h=j.getImageData(0,0,i.width,i.height),h=f(g,h,e),j.putImageData(h,0,0),c.canvasToBlob(i)})}function g(d){return function(e,f){return c.blobToImage(e).then(function(e){function g(a,b){var c,d=a.data;for(c=0;ci||i>2)&&(i=.5>i?.5:2,k=!0),(.5>j||j>2)&&(j=.5>j?.5:2,k=!0);var l=f(a,i,j);return k?l.then(function(a){return e(a,b,c)}):l}function f(b,e,f){return new a(function(a){var g=d.getWidth(b),h=d.getHeight(b),i=Math.floor(g*e),j=Math.floor(h*f),k=c.create(i,j),l=c.get2dContext(k);l.drawImage(b,0,0,g,h,0,0,i,j),a(k)})}return{scale:e}}),g("d",["e","m","n","r"],function(a,b,c,d){function e(d,e){return a.blobToImage(d).then(function(f){var g=b.create(c.getWidth(f),c.getHeight(f)),h=b.get2dContext(g),j=0,k=0;return e=0>e?360+e:e,90!=e&&270!=e||b.resize(g,g.height,g.width),90!=e&&180!=e||(j=g.width),270!=e&&180!=e||(k=g.height),h.translate(j,k),h.rotate(e*Math.PI/180),h.drawImage(f,0,0),i(f),a.canvasToBlob(g,d.type)})}function f(d,e){return a.blobToImage(d).then(function(d){var f=b.create(c.getWidth(d),c.getHeight(d)),g=b.get2dContext(f);return"v"==e?(g.scale(1,-1),g.drawImage(d,0,-f.height)):(g.scale(-1,1),g.drawImage(d,-f.width,0)),i(d),a.canvasToBlob(f)})}function g(c,d,e,f,g){return a.blobToImage(c).then(function(c){var h=b.create(f,g),j=b.get2dContext(h);return j.drawImage(c,-d,-e),i(c),a.canvasToBlob(h)})}function h(b,c,e){return a.blobToImage(b).then(function(f){var g;return g=d.scale(f,c,e).then(function(c){return a.canvasToBlob(c,b.type)}).then(j(f))["catch"](j(f))})}var i=a.revokeImageUrl,j=function(a){return function(b){return i(a),b}};return{rotate:e,flip:f,crop:g,resize:h}}),g("7",["c","d"],function(a,b){var c=function(b){return a.invert(b)},d=function(b){return a.sharpen(b)},e=function(b){return a.emboss(b)},f=function(b,c){return a.gamma(b,c)},g=function(b,c){return a.exposure(b,c)},h=function(b,c,d,e){return a.colorize(b,c,d,e)},i=function(b,c){return a.brightness(b,c)},j=function(b,c){return a.hue(b,c)},k=function(b,c){return a.saturate(b,c)},l=function(b,c){return a.contrast(b,c)},m=function(b,c){return a.grayscale(b,c)},n=function(b,c){return a.sepia(b,c)},o=function(a,c){return b.flip(a,c)},p=function(a,c,d,e,f){return b.crop(a,c,d,e,f)},q=function(a,c,d){return b.resize(a,c,d)},r=function(a,c){return b.rotate(a,c)};return{invert:c,sharpen:d,emboss:e,brightness:i,hue:j,saturate:k,contrast:l,grayscale:m,sepia:n,colorize:h,gamma:f,exposure:g,flip:o,crop:p,resize:q,rotate:r}}),g("8",["e"],function(a){var b=function(b){return a.blobToImage(b)},c=function(b){return a.imageToBlob(b)},d=function(b){return a.blobToDataUri(b)},e=function(b){return a.blobToBase64(b)};return{blobToImage:b,imageToBlob:c,blobToDataUri:d,blobToBase64:e}}),h("f",tinymce.dom.DOMUtils),h("g",tinymce.ui.Factory),h("h",tinymce.ui.Form),h("i",tinymce.ui.Container),h("s",tinymce.ui.Control),h("t",tinymce.ui.DragHelper),h("u",tinymce.geom.Rect),h("w",tinymce.dom.DomQuery),h("x",tinymce.util.Observable),h("y",tinymce.util.VK),g("v",["w","t","u","5","x","y"],function(a,b,c,d,e,f){var g=0;return function(h,i,j,k,l){function m(a,b){return{x:b.x+a.x,y:b.y+a.y,w:b.w,h:b.h}}function n(a,b){return{x:b.x-a.x,y:b.y-a.y,w:b.w,h:b.h}}function o(){return n(j,h)}function p(a,b,d,e){var f,g,i,k,l;f=b.x,g=b.y,i=b.w,k=b.h,f+=d*a.deltaX,g+=e*a.deltaY,i+=d*a.deltaW,k+=e*a.deltaH,20>i&&(i=20),20>k&&(k=20),l=h=c.clamp({x:f,y:g,w:i,h:k},j,"move"==a.name),l=n(j,l),y.fire("updateRect",{rect:l}),v(l)}function q(){function c(a){var c;return new b(D,{document:k.ownerDocument,handle:D+"-"+a.name,start:function(){c=h},drag:function(b){p(a,c,b.deltaX,b.deltaY)}})}a('
    ').appendTo(k),d.each(B,function(b){a("#"+D,k).append('
    "+(h.ie&&h.ie<10?" ":"
    ")+"
    ",f.undoManager.transact(function(){f.insertContent(e),g=f.dom.get("__mce"),f.dom.setAttrib(g,"id",null),f.$("tr",g).each(function(a,b){f.fire("newrow",{node:b}),f.$("th,td",b).each(function(a,b){f.fire("newcell",{node:b})})}),f.dom.setAttribs(g,f.settings.table_default_attributes||{}),f.dom.setStyles(g,f.settings.table_default_styles||{})}),g}function j(a,b,c){function d(){var d,e,g,h={},i=0;e=f.dom.select("td[data-mce-selected],th[data-mce-selected]"),d=e[0],d||(d=f.selection.getStart()),c&&e.length>0?(k(e,function(a){return h[a.parentNode.parentNode.nodeName]=1}),k(h,function(a){i+=a}),g=1!==i):g=!f.dom.getParent(d,b),a.disabled(g),f.selection.selectorChanged(b,function(b){a.disabled(!b)})}f.initialized?d():f.on("init",d)}function l(){j(this,"table")}function m(){j(this,"td,th")}function n(){j(this,"td,th",!0)}function o(){var a="";a='';for(var b=0;10>b;b++){a+="";for(var c=0;10>c;c++)a+='';a+=""}return a+="
    ",a+=''}function p(a,b,c){var d,e,g,h,i,j=c.getEl().getElementsByTagName("table")[0],k=c.isRtl()||"tl-tr"==c.parent().rel;for(j.nextSibling.innerHTML=a+1+" x "+(b+1),k&&(a=9-a),e=0;10>e;e++)for(d=0;10>d;d++)h=j.rows[e].childNodes[d].firstChild,i=(k?d>=a:a>=d)&&b>=e,f.dom.toggleClass(h,"mce-active",i),i&&(g=h);return g.parentNode}function q(){f.addButton("tableprops",{title:"Table properties",onclick:y.tableProps,icon:"table"}),f.addButton("tabledelete",{title:"Delete table",onclick:g("mceTableDelete")}),f.addButton("tablecellprops",{title:"Cell properties",onclick:g("mceTableCellProps")}),f.addButton("tablemergecells",{title:"Merge cells",onclick:g("mceTableMergeCells")}),f.addButton("tablesplitcells",{title:"Split cell",onclick:g("mceTableSplitCells")}),f.addButton("tableinsertrowbefore",{title:"Insert row before",onclick:g("mceTableInsertRowBefore")}),f.addButton("tableinsertrowafter",{title:"Insert row after",onclick:g("mceTableInsertRowAfter")}),f.addButton("tabledeleterow",{title:"Delete row",onclick:g("mceTableDeleteRow")}),f.addButton("tablerowprops",{title:"Row properties",onclick:g("mceTableRowProps")}),f.addButton("tablecutrow",{title:"Cut row",onclick:g("mceTableCutRow")}),f.addButton("tablecopyrow",{title:"Copy row",onclick:g("mceTableCopyRow")}),f.addButton("tablepasterowbefore",{title:"Paste row before",onclick:g("mceTablePasteRowBefore")}),f.addButton("tablepasterowafter",{title:"Paste row after",onclick:g("mceTablePasteRowAfter")}),f.addButton("tableinsertcolbefore",{title:"Insert column before",onclick:g("mceTableInsertColBefore")}),f.addButton("tableinsertcolafter",{title:"Insert column after",onclick:g("mceTableInsertColAfter")}),f.addButton("tabledeletecol",{title:"Delete column",onclick:g("mceTableDeleteCol")})}function r(a){var b=f.dom.is(a,"table")&&f.getBody().contains(a);return b}function s(){var a=f.settings.table_toolbar;""!==a&&a!==!1&&(a||(a="tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol"),f.addContextToolbar(r,a))}function t(){return v}function u(a){v=a}var v,w,x=this,y=new d(f);!f.settings.object_resizing||f.settings.table_resize_bars===!1||f.settings.object_resizing!==!0&&"table"!==f.settings.object_resizing||(w=e(f)),f.settings.table_grid===!1?f.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:y.table}):f.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(a){a.aria&&(this.parent().hideAll(),a.stopImmediatePropagation(),y.table())},onshow:function(){p(0,0,this.menu.items()[0])},onhide:function(){var a=this.menu.items()[0].getEl().getElementsByTagName("a");f.dom.removeClass(a,"mce-active"),f.dom.addClass(a[0],"mce-active")},menu:[{type:"container",html:o(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(a){var b,c,d=a.target;"A"==d.tagName.toUpperCase()&&(b=parseInt(d.getAttribute("data-mce-x"),10),c=parseInt(d.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"==this.parent().rel)&&(b=9-b),b===this.lastX&&c===this.lastY||(p(b,c,a.control),this.lastX=b,this.lastY=c))},onclick:function(a){var b=this;"A"==a.target.tagName.toUpperCase()&&(a.preventDefault(),a.stopPropagation(),b.parent().cancel(),f.undoManager.transact(function(){i(b.lastX+1,b.lastY+1)}),f.addVisual())}}]}),f.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:l,onclick:y.tableProps}),f.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:l,cmd:"mceTableDelete"}),f.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:g("mceTableCellProps"),onPostRender:m},{text:"Merge cells",onclick:g("mceTableMergeCells"),onPostRender:n},{text:"Split cell",onclick:g("mceTableSplitCells"),onPostRender:m}]}),f.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:g("mceTableInsertRowBefore"),onPostRender:m},{text:"Insert row after",onclick:g("mceTableInsertRowAfter"),onPostRender:m},{text:"Delete row",onclick:g("mceTableDeleteRow"),onPostRender:m},{text:"Row properties",onclick:g("mceTableRowProps"),onPostRender:m},{text:"-"},{text:"Cut row",onclick:g("mceTableCutRow"),onPostRender:m},{text:"Copy row",onclick:g("mceTableCopyRow"),onPostRender:m},{text:"Paste row before",onclick:g("mceTablePasteRowBefore"),onPostRender:m},{text:"Paste row after",onclick:g("mceTablePasteRowAfter"),onPostRender:m}]}),f.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:g("mceTableInsertColBefore"),onPostRender:m},{text:"Insert column after",onclick:g("mceTableInsertColAfter"),onPostRender:m},{text:"Delete column",onclick:g("mceTableDeleteCol"),onPostRender:m}]});var z=[];k("inserttable tableprops deletetable | cell row column".split(" "),function(a){"|"==a?z.push({text:"-"}):z.push(f.menuItems[a])}),f.addButton("table",{type:"menubutton",title:"Table",menu:z}),h.isIE||f.on("click",function(a){a=a.target,"TABLE"===a.nodeName&&(f.selection.select(a),f.nodeChanged())}),x.quirks=new b(f),f.on("Init",function(){x.cellSelection=new c(f,function(a){a&&w.clearBars()}),x.resizeBars=w}),f.on("PreInit",function(){f.serializer.addAttributeFilter("data-mce-cell-padding,data-mce-border,data-mce-border-color",function(a,b){for(var c=a.length;c--;)a[c].attr(b,null)})}),k({mceTableSplitCells:function(a){a.split()},mceTableMergeCells:function(a){var b;b=f.dom.getParent(f.selection.getStart(),"th,td"),f.dom.select("td[data-mce-selected],th[data-mce-selected]").length?a.merge():y.merge(a,b)},mceTableInsertRowBefore:function(a){a.insertRow(!0)},mceTableInsertRowAfter:function(a){a.insertRow()},mceTableInsertColBefore:function(a){a.insertCol(!0)},mceTableInsertColAfter:function(a){a.insertCol()},mceTableDeleteCol:function(a){a.deleteCols()},mceTableDeleteRow:function(a){a.deleteRows()},mceTableCutRow:function(a){v=a.cutRows()},mceTableCopyRow:function(a){v=a.copyRows()},mceTablePasteRowBefore:function(a){a.pasteRows(v,!0)},mceTablePasteRowAfter:function(a){a.pasteRows(v)},mceSplitColsBefore:function(a){a.splitCols(!0)},mceSplitColsAfter:function(a){a.splitCols(!1)},mceTableDelete:function(a){w&&w.clearBars(),a.deleteTable()}},function(b,c){f.addCommand(c,function(){var c=new a(f);c&&(b(c),f.execCommand("mceRepaint"),x.cellSelection.clear())})}),k({mceInsertTable:y.table,mceTableProps:function(){y.table(!0)},mceTableRowProps:y.row,mceTableCellProps:y.cell},function(a,b){f.addCommand(b,function(b,c){a(c)})}),q(),s(),f.settings.table_tab_navigation!==!1&&f.on("keydown",function(b){var c,d,e;9==b.keyCode&&(c=f.dom.getParent(f.selection.getStart(),"th,td"),c&&(b.preventDefault(),d=new a(f),e=b.shiftKey?-1:1,f.undoManager.transact(function(){!d.moveRelIdx(c,e)&&e>0&&(d.insertRow(),d.refresh(),d.moveRelIdx(c,e))})))}),x.insertTable=i,x.setClipboardRows=u,x.getClipboardRows=t}var k=f.each;i.add("table",j)})}(this); \ No newline at end of file diff --git a/www/js/tinymce/plugins/template/plugin.min.js b/www/js/tinymce/plugins/template/plugin.min.js new file mode 100644 index 0000000..183201b --- /dev/null +++ b/www/js/tinymce/plugins/template/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("template",function(a){function b(b){return function(){var c=a.settings.templates;return"function"==typeof c?void c(b):void("string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):b(c))}}function c(b){function c(b){function c(b){if(-1==b.indexOf("")){var c="";tinymce.each(a.contentCSS,function(b){c+=''});var e=a.settings.body_class||"";-1!=e.indexOf("=")&&(e=a.getParam("body_class","","hash"),e=e[a.id]||""),b=""+c+''+b+""}b=f(b,"template_preview_replace_values");var g=d.find("iframe")[0].getEl().contentWindow.document;g.open(),g.write(b),g.close()}var g=b.control.value();g.url?tinymce.util.XHR.send({url:g.url,success:function(a){e=a,c(e)}}):(e=g.content,c(e)),d.find("#description")[0].text(b.control.value().description)}var d,e,h=[];if(!b||0===b.length){var i=a.translate("No templates defined.");return void a.notificationManager.open({text:i,type:"info"})}tinymce.each(b,function(a){h.push({selected:!h.length,text:a.title,value:{url:a.url,content:a.content,description:a.description}})}),d=a.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:h,onselect:c}}]},{type:"label",name:"description",label:"Description",text:"\xa0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){g(!1,e)},minWidth:Math.min(tinymce.DOM.getViewPort().w,a.getParam("template_popup_width",600)),minHeight:Math.min(tinymce.DOM.getViewPort().h,a.getParam("template_popup_height",500))}),d.find("listbox")[0].fire("select")}function d(b,c){function d(a,b){if(a=""+a,a.length0&&(i=k.create("div",null),i.appendChild(j[0].cloneNode(!0))),h(k.select("*",i),function(b){g(b,a.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_cdate_format",a.getLang("template.cdate_format")))),g(b,a.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_mdate_format",a.getLang("template.mdate_format")))),g(b,a.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(b.innerHTML=l)}),e(i),a.execCommand("mceInsertContent",!1,i.innerHTML),a.addVisual()}var h=tinymce.each;a.addCommand("mceInsertTemplate",g),a.addButton("template",{title:"Insert template",onclick:b(c)}),a.addMenuItem("template",{text:"Insert template",onclick:b(c),context:"insert"}),a.on("PreProcess",function(b){var c=a.dom;h(c.select("div",b.node),function(b){c.hasClass(b,"mceTmpl")&&(h(c.select("*",b),function(b){c.hasClass(b,a.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(b.innerHTML=d(a.getParam("template_mdate_format",a.getLang("template.mdate_format"))))}),e(b))})})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/textcolor/plugin.min.js b/www/js/tinymce/plugins/textcolor/plugin.min.js new file mode 100644 index 0000000..889c5c4 --- /dev/null +++ b/www/js/tinymce/plugins/textcolor/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("textcolor",function(a){function b(b){var c;return a.dom.getParents(a.selection.getStart(),function(a){var d;(d=a.style["forecolor"==b?"color":"background-color"])&&(c=d)}),c}function c(b){var c,d,e=[];for(d=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],d=a.settings.textcolor_map||d,d=a.settings[b+"_map"]||d,c=0;c
    '+(c?"×":"")+"
    ',g=d.length-1,k=0;k",h=0;hg?f+="":(e=d[l],f+=b(e.color,e.text));f+=""}if(a.settings.color_picker_callback){for(f+='",f+="",h=0;hb.start.length?-1:a.start.length'+a+""}function f(){var a,b="";for(a in n)b+=a;return new RegExp("["+b+"]","g")}function g(){var a,b="";for(a in n)b&&(b+=","),b+="span.mce-"+n[a];return b}var h,i,j,k,l,m,n,o,p=a.getBody(),q=a.selection;if(n={"\xa0":"nbsp","\xad":"shy"},d=!d,e.state=d,a.fire("VisualChars",{state:d}),o=f(),b&&(m=q.getBookmark()),d)for(i=[],tinymce.walk(p,function(a){3==a.nodeType&&a.nodeValue&&o.test(a.nodeValue)&&i.push(a)},"childNodes"),j=0;j=0;j--)a.dom.remove(i[j],1);q.moveToBookmark(m)}function c(){var b=this;a.on("VisualChars",function(a){b.active(a.state)})}var d,e=this;a.addCommand("mceVisualChars",b),a.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:c}),a.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:c,selectable:!0,context:"view",prependToContext:!0}),a.on("beforegetcontent",function(a){d&&"raw"!=a.format&&!a.draft&&(d=!0,b(!1))})}); \ No newline at end of file diff --git a/www/js/tinymce/plugins/wordcount/plugin.min.js b/www/js/tinymce/plugins/wordcount/plugin.min.js new file mode 100644 index 0000000..f20e765 --- /dev/null +++ b/www/js/tinymce/plugins/wordcount/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("wordcount",function(a){function b(){a.theme.panel.find("#wordcount").text(["Words: {0}",e.getCount()])}var c,d,e=this;c=a.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),d=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),a.on("init",function(){var c=a.theme.panel&&a.theme.panel.find("#statusbar")[0];c&&tinymce.util.Delay.setEditorTimeout(a,function(){c.insert({type:"label",name:"wordcount",text:["Words: {0}",e.getCount()],classes:"wordcount",disabled:a.settings.readonly},0),a.on("setcontent beforeaddundo",b),a.on("keyup",function(a){32==a.keyCode&&b()})},0)}),e.getCount=function(){var b=a.getContent({format:"raw"}),e=0;if(b){b=b.replace(/\.\.\./g," "),b=b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," "),b=b.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),b=b.replace(d,"");var f=b.match(c);f&&(e=f.length)}return e}}); \ No newline at end of file diff --git a/www/js/tinymce/skins/lightgray/content.inline.min.css b/www/js/tinymce/skins/lightgray/content.inline.min.css new file mode 100644 index 0000000..1030094 --- /dev/null +++ b/www/js/tinymce/skins/lightgray/content.inline.min.css @@ -0,0 +1 @@ +.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #f00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #bbb}td[data-mce-selected],th[data-mce-selected]{background-color:#39f !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7acaff}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1} \ No newline at end of file diff --git a/www/js/tinymce/skins/lightgray/content.min.css b/www/js/tinymce/skins/lightgray/content.min.css new file mode 100644 index 0000000..af85f74 --- /dev/null +++ b/www/js/tinymce/skins/lightgray/content.min.css @@ -0,0 +1 @@ +body{background-color:#fff;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#f0f0ee;scrollbar-arrow-color:#676662;scrollbar-base-color:#f0f0ee;scrollbar-darkshadow-color:#ddd;scrollbar-face-color:#e0e0dd;scrollbar-highlight-color:#f0f0ee;scrollbar-shadow-color:#f0f0ee;scrollbar-track-color:#f5f5f5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #f00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #bbb}td[data-mce-selected],th[data-mce-selected]{background-color:#39f !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7acaff}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1} \ No newline at end of file diff --git a/www/js/tinymce/skins/lightgray/fonts/tinymce-small.eot b/www/js/tinymce/skins/lightgray/fonts/tinymce-small.eot new file mode 100644 index 0000000000000000000000000000000000000000..b144ba0bd949de3c0f87abdd78b517067169884f GIT binary patch literal 9492 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 + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf b/www/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a983e2dc4cb30880fffe00e1f0879be4d95eb4cc GIT binary patch literal 9304 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 literal 0 HcmV?d00001 diff --git a/www/js/tinymce/skins/lightgray/fonts/tinymce.eot b/www/js/tinymce/skins/lightgray/fonts/tinymce.eot new file mode 100644 index 0000000000000000000000000000000000000000..09fd441c624d9e3d85e25a1f1e29a0b516e1dc38 GIT binary patch literal 17292 zcmdsfdw3j2m2Xw|JT#JKG^2U+X!P)m#xo=9F_tuHjciLwTXN)wB3rRzJ27!0#}R%I z+wv=z0K1LN8gNMP<+UHV2^KhkT;BHrxtoyv=*uG)*ua;Mn=cFO4WA&8jUeIU3+yIv zHLd$Q)!ouawv%P|yZ_vtsjlj(>N-`Y&N+3?shauVFk>$bF~*t1mR_7)_4(^>U*F0KoON15H=jxcXA5(LB^yB z#1#kbddFLT{@%mq@qCc6b!QGv?z^+%w~rlTY+wfEy$6xu{k*G(vB5Z=R~|fa>dY^t z$b0bIkM>@^>)8H%|Mi>3>x^kFD1ZIPzB5zoUiLA@)+h0tJi71533)5OY`#rVseJfw7$q* z^uO5p5<@%EtXH%XnQfTOigr3@*UVmrb{<7Ls%YowW$p0!7m}`|oLH0SOEkteE2GL5 zWwWwT8B#Q5tPAr zcu|#qw@RikB_I!WNP*5lr)oCow{CjNtb1h^mU)Nl=S+1UOwZhaG9J- zf4V=8^0{eIbs{w$lRWZe$tBM{M%CmAua9#RbwR!h<6F&$+f;NbSIl|yd^Jyd1KgYQ zDgj=@qYAp^Rfe-*t#l@%IylPnsN%0b6;5vrskV$fQAwg<@Qx;A|#V3Tj6HsZ6NqR}AKxqoHu4|YY zor^m)bL#_wD=L=uNwmU4)#9AGI`#{bKybWlg;^ffJb6V*qd(lfC4b_h3;NVd9J8X1oy|A3G-~s4 zT;_Ys_fR~qHMZQ;JP;_v)+JkZq+6Q3>(_gmThcpPlIvoHz(DCmPpGOY9;mLXs&1^V zuJE`$!K$jdKy|#@dVV0Isu={{jpwSm>Oj1zDuh}UqC8$5sH>_9is%2+oYpvtZ`iaU zZt7eYiFu}_n+GlxVzG2{%l`b(P=0?)b2=6)TpIX*zpiqjr7FNHZ@H?v?z3u^KxfrC z(W_8ZWu3peuDZ(ZrPb>=J%a`zAB3E#XIa+DI#_|Yu_xPR-I_g(K%XrwqN!qt_wlX* zLNu*<)l@XB7K&-2d|3kSjJq)+?9S|XcGpl(U` zhYe(MrfG(zmEJO`8Is043vz*YY!zg~^=ya5Wf@Q}Pm>hHXQ59d!3t%vj3yg%zmAK^ z4=;IITBdPOK01IqKhrnQ=+oEK+SICxjA;7GY#D6OW|aI^qY zC?ZveMv+sX6vEQp5SDZU)PO)2hyq_@o*7!{)o$&>{RqD^sg@>a;0ie#vuJ=Mne(A^ z9d`@CvlN;o(4fAM$hAILlXb(w^}n@k9?HBy+wdS|{OTq*Hu7J$HLj-@|CH}GRI8svHIjrw@Bw~0&ApWCv1pMR8u(f3~%*`|#> z_P``ocs#!De(+`U6~?*8)++*NNcC|w8{jb|D-Ci*(uk)X{d`}x?a;Q77rrlj?{yOy zrfc$n$Hq?Z@XHUnv4ZCD{*MK0jg)vE>n(B!`>e-{b)YE3cnwk@^3~`WSo%5?liV&s zfob;Ca8G0f7i$C+ zPIguLE?36={{rO#J+*%$X$)OgoNyXujsJIQszy>4$xlE_r=07z3!Y9s3nrms?Ng*GsjF={I`o z;f}K)LFkLjmg(Iviw?nXIu2v$9qiq}aycsgU*R?9#*$rxSa2gid&_w#rttimVd+f} z{IG?mtIthIG4jSCO#>?$GNu2Erg3H%yzxzN)^TS{Q80^t8KyhV1H`OhXy!j6vC80v z2HZ=`09|XKYZrq(77qD%NJdB*T;sG-%%cja>0C3h?#}&ZS~+AAG`O%1Yv2qo^h#Kd zVJvepq^-M5-iK3RUPL`@PA5ITucf7rf>B}yCxJc(*d-t37!smzUFOSGl-^Ams*Z z9#)?*bm$dE>-gw~#-@%H!QhIHrp67UZb9R9|=!gH^kyF{RZzX zv@}unwrB<8l95Rg#qA@MC$oeVvE1CZV^h-@gOIiaw_Fbsn%1j%5@qFNvsq8zTMQ1T_V?ZfA$ z+S{kjeR$hK>O=LJOg#eM*K}R7c|$tAp*eY7)9Rh+^v>0F-HAYGYJ7Yu6i9T}iM*Co zJ9qEN=lAU1xvG78rgfj19UI@#+PY(WEUWHo&1`R%^p(T6uU&il@Jc7vMf-qZ&ey~% z#1*fJuWxBtANNPRvEIhFZ*D)5 zS`!0(Jp-QZgg#Nhs-b%oQ%XTj%Y|@3N%Nt#ykhMMW5zh~z^1iNLgWeakQu;vB?6dk ziJfZkdYa{IZinjL$Wtnhrc|i!D(Q4Ww?jVZohigD4S# zrmf0pZ;rUNs1%^H3GMWMzyHZ6-%rD(c%F6JnyIw?$tQ_tpL|ldZ_pup_rkLT&rABh@D2LmVO#-+c@I|SLGWlHTEIZtI2rzh5Z3C9Y8%|^xS9@m zg@1tXF#yL+y1N&vxUlC=GbY0d683~wubW3Dw6Ny@6)ADUj%xu4(Pe>3I zs0-WxUkgamxHd77$eO?zqU=*xs7+>SJUQ}Fo~OP;m=M1Rz77LV)B*H5nnqt~su19S zfP!G?k~Rl1%FsGJ>ja19fHo2we3R@UZ=M1ykc?anYA=G`huJ2yjaEsU&Dhp0X|>{+ zzyUeH)*F@!ZK{hpgz*^|x(2<&)I=I4ua56kvn3%}(RuiAaX|*_nt=q~CZ?z4@=Od> zC*@L5GsaXtK1=7T$M|S|tsa-fGE~a~sh4sJYfK6P5$G}?8=NQ@EU{oRDCxnH7L+Mj z(t}WXoeOHA#zAx-HQ*XCx`=t2pRxHW109EPN0U>9Ymb(6Va<_8uTaGcgEEJlD?}x2 zQ5bc1t7><*zHy`8o$dBLF*EZ>)z-WJmPg5hp_9C#suNBXs+_&Ohi3T3`wpx#1-@zJ zL1&#P=hwGurUgo&7!(qLwxX=O>Zf?n0e!yIHRaFgRBPlEA0c-OM$RY(2&MxjI!W3g7bZ|jEr3)Z3``KB z1{|Rj+Owu%jzQB-A4x9<-GvD}FWeY|0FOUvel zcs=BhUP7DZME{|!9UWT__48?SqNz`b*Vo6Dz9w@TT>|gebJE9XS4!A~3yPOoaI`H; z5nG~nrorwI3REMekisDSQ>UtSwjUoHJl@`^>L<2tJ#k{INM9|tl%bWMe`Dnxs(Q!D z)JlBsPuF{;T&&;4nw3&R9Haj?NgqC$q`W+GGRoa|0tTq?d zTpx748Wx4$je%rxpi_Ku(EOA%5Dx(d^^Ih60W#JA>*s1;e~ufoU_vuQ<;-b zG3Av95?;C{E)n6zMS`-BSoor!)@8-qep-mo4e*l=U2cW}OJN_+@tn?+d`35?r$Od3 zR*FcQ&Hvbi@uOZNQ`vgFn#!fTDX7lSEX!3Wk5_?}0WsuIb#D=D2Io*V<0vtZ2{L#n zX-;dh-Z$DY$29({+)!tI+m`)(efzhxxm^37@(0L#m>RF|j(s^)2)o0Q`JTe&%>@J* zV>B5zN_wC$bYnZcL2p8S{`kwW?s|G_d@A67Dk9;v!e_-hcn|co=$o&BXI^D%$g2o# zvxr^5DArr-0T$GpSc}DNnXi7itDe>&kZe-xoaxjME%Vot;DE4~fM&AqxuMhQqH(6_ z#&W;CWFVUsqmm|RpdM!Hu1&0&Wzk1jY_$NVX%*I)*p(sUtezKSIEy(5nH(GZg^zdx zZdbrtT_bs8zIe9U?Q^?*(mfyF`_yi;(Peo#;5Qi$H+U=D@`ziODy!WAZ)K#~e4d{) zTW4mlNMgR{Fg0LB);a&L^1J1=f}U5A9v#B01JEFR4d_4w`$|$a7bEWi;=F|E$5fpx z{k=52*}Q>&&HU-mBVTxAh_3vRyWhDkKXLobnZABcXHUnezxwOGUFOeX@W#Z*Yez<%U9L&4v5_rl+IRon5s{;W-8*c0j-SqHJL0JA~w_nw5d z<;J$H7Y+?_9%{_QjE={owfj3n+FfNIU%W`hp*p{@>@!w1T^G@C=yWakbue>d}c6--|x7M2-ipPhtJ^OFlopVuj z9%>4Wt=PEIdKY{*|2j*$D&z^4VWVs}I}9$x>Om?aktVIJQLGzC#YA3~v`1pUltse} zWzmKDs-7Gv>9DN(zv%__D!`W*V)LHEee0QL&b)8(N z$b(X5&&_RMRWHLO z7U{EBz`KUEUj~=J6Kv|pwc#%_^x=0FK1N;eU%8Lb>H(Yz^ufBdB&H{Hy`)*AhJ)-X zDRMHv)nJgX5eu3L;bYx2<4y2Pig$F;%fW426GR<4tFgqlVU5-DY0Mc=XEjOSnO01o z9N5MfJqQ-Amy8iM(t;5}B97#(GgdKf?XkypJ@JHj*u_jZOeAe_oHX*ke{9cV_)6cV zq0SkSQKB(oc-Mj_{0q0ELrdbEQs?rfCt;k z8KN~l751?eRD$=_iz65DEsZ$}|Oo8h_!PWggWr=|%e z?fH?~Nw^g_9kXDXU#00JdWEu%yETI}SPp>rTE>(PfLM#aJ%CY)eUhv4Cqy^--U*g0 zpb#XYTMMQPTikI6M8e{?Pdf2#hAN^uL@u6jGBUi?nOXq9voWMoV{$ z&XEb0C|F9dM5Z=BVjvE+{u^OA)at~9$ps`X!dXm}L0jbhGJI9zl-^3{9$xa5*ofjl z9Nc_RNtHqr11ciq5ahcboF1EgXl(lO*yV>d&s~735z}_<(GuYQUd_C~Pip25p=l00 zMAf#4YGZtu$QE`tKH^4rg(hmx7oF3p#>z)$tdyu%bt|fu;Dd~EbW(zDARwiPj?gXS zMnCCj6Fl}s(so6FI)n3h%wL#i1wTd(T#~0po?hpy0Cxz!lF>!nW#G?7f2-w<$8)Z zQlP;6^}>0V%fff0!J^P~8mKCkQU0IC-G2!<5>Kd9G zvIS<)pK0{WvT>H3*a}(RXtGP4z$^8`nzYN1TCMYmGHZn%_niDi%ytkK8S}v)!zOdC z*xS8=$09Wx=448hUN9@4;IBQdJw6<23*8k84VS#~7v^q~PMVdE^Vgmjcw#sdI)b9% zl0HSJO0g$5{|EH#BKqb-yD7F2=b{ec!0U&I?;+*L&{f@JR@o;k93PZ8Vd3lskwT@U zp>m786KGttAx=6GjvJ(bbUIIGZJ`u#W)Ax$mV1NDd)U&-qPg$EaV)%K*QGZdBS=XL z?C{RvVIDsJ{qyI)&%;lD09R>NR@KI~KuwiYu?31?C>dMTnOC#bRgrL5k%vFxs`e$q z;o4BB!KZHtt-wChKxe!$uyJE!EY?^bhcK zA`cG#tatbmT5jpdVT&tO+j*b zT{XVyKusw9{8V-2^~JSg!EgiL^;|NSOQte89t>xiS7stnxudXgP5;Jjcod0lUlDVW zWG$>6ben@(UVs$D_DD1Z$_0MY(87sfyL-Db*oVRS!$PL0q@~ukH}$lo{TIx~_nJ>g zp7^FhsyB9PVnf?28)h%cE4gRyGkXiq7xtQ89UFUqci!E+d2GC8FRtOgF0LGFUwgQ7 zc6j#U-d9S`+;`vX4}L%*rGjfPAPo5`x|CyaXFwL@i=>!Hgkma_z@a)g6rL{xiWgH5 z73CKm0n70ReG2pqpQum5aSnK!#fM`Fzz2u77@DFFJk2Ngedfte)9s_=?GkxOOBQPK zJW%QI8u@FAVecx)K?vY9t)LW3+8>_&!`vU~O^y0yC!|X^mOgc(WWYO$q3b{ZwWNXf zAh{q<6r8IeZxy`XxXGaVCnGe)N)5)jJX-U`nT1uKIXM9=|Z@RgpQ#s%P_W~aIC9&tiZ9v#>z#$>A z-5{sDF!fXN^c(qG zq57%gJ7s<6@hQ&b!Cl&&b=A9X+p^`h-PLt>YP$wySI5Yn&dxm}9e^puBk7>qIi}Xk zyad#?;{<0>Hzn^F?F?)aJ7J4M1N)IpOZy=y)vXqyZfDex9ScPe+TQXq;@ZX6FwKQ1 z$55v+Mk~UGC)4dLQrYb?14_uUYKEc9niy12w~1m|^o5u!t1x0x<<1vJBLf zR219IY6`}MA(4w(0)IgF0YAc}u4^!h;4IQKLj#F%9TQJ;Zt*=MK8J!M0>lLg2s_ZB z6-|7BSD6Jcf3E^|jpdWi;Gh>RS{#H4>d%$?;EHM4ItL@aYL5C>ghDI)=4f4}AiuSc zsWSui&R*!|2<`B-%LkNLOqu&cyQZ~^9LhE5%t)r5kxpPh*3+2(e>#r>!E2Ap+OK7A zwpSZ2v*@nekzIC(u{PG5dh1ny_5j41|&7yG0@!?~hQq@0JzlMPA> z6|U&T=Rjqk7tq<2fWZe$gOHXQgKKqQ={E@sX^ubtsZXstrC2AHxOG0oEAOit zz4dUhc=*=Qx|*OAiPdeoWl~iqZ`o8Ai%7wmze>GpWYyMGWu&tGrY!@JX4zjA_J*pP z`9EKO_U(7AUVYcw&tBhl^Ub?f0SZk#7 zEL_{@9KIU%LN!n`3zPN+<`FxySWQ^iFB^2!cn&9*rKCvG&3ezK7m}Z;g&kkKMJi<> zg=5tu)Nne)YEPaqr^9}{ZBA2*d_p|%2|P%ei2PTp08rFNaSljhZuC*{@gn>waP7j2 zgU%y`H5zLN>KXQWk9r)x7g0D4?%KsNd0?!H)E>r+X{UPl?SL1Wic>0~RlI|yaZZ(S zO=gmY8HHveLk>Y2X=1fsRz?~EbOeYeG%g|Nc+bFlfZ&sS$e|Cqi;o1NL|WWYLjwUC zkbgdsptMVG`<+8MvJ`TXp_2gBX+h)cocYPO@crko8%#gb5jS)CocYjO_#Nj^oMf6j zBWq&yq_ZDsrI;=|Uy+X52gA}5&ZHgcH(qy=vbMh%Z z>M$xgxdaaF$`-u20&R#o=g*?f!45wCAAm!1%7m;Hc!W2jj$0O&q+zERfq0FHb=<}^ z52c_mI>q*OHu3jQzP;m2vJUGl z{7GtBo_RH#3$}GR=%5(8%RCtRQT=Fr!c{s;+q$%=YsXb2Ds=spABBP(JJAk~Deh_u z=EAQwxf1oGTq=7-yvhyn9#F8f|7-v9{?l)P{^EZB3vI;z<-OK)niDZ^8YXWm$R!2( zSFy48ra|~u$j2fA%uO6tLqP8r0++!>#0wH)sV1}{(6KJC`R2e|PX*5Yr@*Bz2EOtA znxDKF_@imo@R0e70Pirr8{nJGN4@tx`;WnYel2MJi7P?#r@R=19>2T7{FJQCGg6Su z({k_{SH-;xMHS|0%!dX(GcYZ-&f@%zi>y7(a@7ehr7klAtB(P6;9Q+8Fa6M0=(i~& z>?Zsu^#nW5K8zU^TN`ko(7r}**ov$@4UhF}6db4#ze~coC_70%Q*kRX_+6S;^DNvj z-Pk!2F*z2HoAJOO(}N93xM#@GV8?dul?(jh@17)~?AUq{oqFPr(1S*|5)QwL1a8v1 zJHp|xTAQz}4XfeO`LZYJ0CH+kqM}Ae>3sPUA6UjC>d3Qay=n|#q zMagbgw93Cz{v^6$cf{;3f8xJf&SU0;01MEVBFMD@bIb3CoJimSHhU8``2w=FFpIr3 zSrD+;gj}Cz782`#$!!*N+@rAFs>}Cq(wG z|M1Pr&;y7s7IZAKMi)enby}B`qz*y!T%pLAF-O{5smPd&BuR;m+*)He$A+{AK_;SY6f_0gGM@37$;|0RHPbc2Qb{ri(A*T{qsA4XqM}AGT#C5vYXG(7ok0u`B zB^8;!F1^K?bgRyALwi$jdY-rsXJtq~ zz>U-e*dbh#4CF)4ggf2PA?GNMG(n;P5!P>*ZM?mv|6f=Y6nxcto^(mjirDb`B^-N=N!onDn%j(km6f`?7*zq~U z({>s)a8+UtrV0AS{p=+k#Qyvp{Qc5)=>a(+-zGnZv-_{R#$88U_q+SufA+*YBcAtq ze(w!>&sHQW`YYaB@!^VZRlMwr`6hhNRmLmFE5B6vOqEu3w(6;B1}F6m)el!cRsDN^ z!aweR)c<5488{XAyBbz=Cdh)l!85_H1z!%W4BZ;~c<7nhMD0lJyK4Vi?W^ID@IB#g zg?|+ZMxKi{MQ@6piGDizvsi6Ri`^6ZO6*t4cIA|EQF%Jv7e5<+EdKMlp1Se6^K}o@ zeW~tSb#@N{Ywo`H2kKqp>eQrd*l6$PYSAkC;JFl z6Sy4i5D)e(z`i7E5ubUHM;u2ry==lx)2iBQr(H;&w$t=WiKw0SAb-?OS3+K2fK=cv zA94aHvC%*rG9eu}<{gX@oMPk?F ziIazp9Zh!SJFouN5m$Zds+rp-51hVh--)IFNpaPhBgc-ON*smVK&cf2FH zdH=DoW5p-0f)R-D2p4&WDCM-fiouPsg?z7u(O;I~^z{B~kLYK>Hq)$ literal 0 HcmV?d00001 diff --git a/www/js/tinymce/skins/lightgray/fonts/tinymce.svg b/www/js/tinymce/skins/lightgray/fonts/tinymce.svg new file mode 100644 index 0000000..8688c1c --- /dev/null +++ b/www/js/tinymce/skins/lightgray/fonts/tinymce.svg @@ -0,0 +1,129 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/js/tinymce/skins/lightgray/fonts/tinymce.ttf b/www/js/tinymce/skins/lightgray/fonts/tinymce.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bf22ca64d11265721e0caa8b099a96c23313ee7b GIT binary patch literal 17128 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 z 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 xV`ImT9nC?HAlRn>{Q#OdDtfdJ@009KYVx3Y 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 WuoL+2#6Hv-L!i2FS!0%O`1!wV+k}Y# literal 0 HcmV?d00001 diff --git a/www/js/tinymce/skins/lightgray/img/anchor.gif b/www/js/tinymce/skins/lightgray/img/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..606348c7f53dba169a9aca7279a2a973f4b07bdb GIT binary patch literal 53 zcmZ?wbhEHbWM^P!XkcUjg8%>jEB<5wG8q|kKzxu40~1eAV&{y5e`l1KFoiKNSOWkz C+YCGa literal 0 HcmV?d00001 diff --git a/www/js/tinymce/skins/lightgray/img/loader.gif b/www/js/tinymce/skins/lightgray/img/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..c69e937232b24ea30f01c68bbd2ebc798dcecfcb GIT binary patch literal 2608 zcmdVcdr(tX9tZGC9yiG~=H_*Q-0%n(kWqP*D#hw{AQu8;1%gl-Hrf&{2?48KX;hHy z3Ze*zEz4t3XdUFyLbNPUYlA`|B}P=N1fqtL1*}S;87#|-W9v<#G;ul(e%d3)N(^9c$d2Dz{7}?ErjNd;{EMKkCsk21~b9Gvg zDo<7L=3Z5HNbVlZUcm1eg#o#CZCJU`3IYHwM->zCd?uYrF3vKFeM}v?f+%s?E>ly|3W25ry9#NNbTx-}0ON58dTrs^ix{_1O0Wh~SVSBlH)Ajn zPn^Gbjz}PCtN@#keR&hK&Dhl-b$kZ8^S)x#dh0{7X=X%CCJk7P1PSO>T&S8I4{#Lg zb5#)o=;!ZP*1nM{cI4@(x7o27*SA()NHmrn67aN@Pmi~(i_SnrjYnwh36aG%!@i0d zqbvfa44f|?OG4ntP|nbjhEl1)Yp6ZN@yjy zy4==QmLy%t;ps3R?~f2KfTTI|2?q8dFd6^z5GF+Xa&Y)sjG)hxit80pPcOP zJ z*LW{SyGHD%hUotV+W%I}fBLAIx!8|7#}$;clKQ+{&FjDqGQ2ZNx(lYM3*%~}ILnao zM`aui55~ZFJlu^!5rdA9Q_7H68H_;##u{x(Yn-vSfIRCb^Nqsg zGRS!Egm>h+o<}LeV4&CLReo9FrDjDvs}8?JwC)#Qs|ie=r?~xUh)&*d`Fx>FG}%X# zNdtDHBKhLPC0wpooFDAQKL%*6T|ULH$=wX!NhcasgD3d;-d$I6yRK3yN+E~C1335_iLOt+*9uvSZ`>*KA}vm}08wRq=>5l|t*Na&jR z-C1&C`nkEk#sB|@yyt-#fXngP04My zm7u$Q%EJbHp`>~`5W&L{W!6`y&}LMS;jfUpgO~7TLVMRZ9IC)IZp0A${`yp0{&wco z#1nx@XMkhqeK%7?RE7JdLr1^nwFfaJ0Q&Lv?WNJ%9}VSJsNY2+UYs2%EU0J~ayFXv zi*?7KCXQHkD)O6!0Q%4N+HTODHxJ{kQSuQX$l-rSwkwh(zMkdfzxyGwl@yHC)C4p< z&n2%8#M?)Q@mgHL1ot8`SFdSEj9ye|jHy+U8#@HoUExG=@AVkRAe_qYm4EpzK6L*& zh`)26?V#f4#_h^P9G^%>h2-H3)$QP zQovu6J9qDvsxqweDdNNa!Lb?L4_UF{tLX_nN7r0U_vF14YKcGR-*Gl} zx3oG)bzf|65dBxD-;2ZCp??K;+TuQ9onnK?==5hzbkb^r_g>z4#D8mcv8(+XdoszA zCx-qhdgxMNMotj}SiL_6V(tLcsK7(M(r(%u<}QrVfOvyK6_;~NOTlPGfX@M7S5YQF z&*$(ylJMHJt^_aQeu{C6NaTE$G3HNN@_SnN8YcaKn%`)F@~L1x+ah7-gEJPpc6w%3 zyX}r+Qk$4RHZzfH){e~F*qJ{d*L8a6n4;U?+{de0-t)mal#TVxe)3F}^UBh+zd T)6_**#cgp_+?JL9(ew3BlNF>u literal 0 HcmV?d00001 diff --git a/www/js/tinymce/skins/lightgray/img/object.gif b/www/js/tinymce/skins/lightgray/img/object.gif new file mode 100644 index 0000000000000000000000000000000000000000..cccd7f023fb80908cb33bb7d9604236cd21b7ae7 GIT binary patch literal 152 zcmV;J0B8S4Nk%w1VG#fg0J9GO<>lo+KR<78Z?v?uS65g4{r%Y3*xlXT%F4>`@9+2b z_ww@cot>Tk|Nk>HGXMYpA^8LW000jFEC2ui01*HU000C<(8)=wd#<&tyXIMjHBV`d zBSi|xsj3(;nD0kQ0aJq8eLH~x02P|t2!_J&Wqb%0io?#xD.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#858585}.mce-close:hover i{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#f0f0f0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#ccc;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ecb}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333}.mce-notification .mce-progress .mce-bar-container{border-color:#ccc}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ecb}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b1b1b1;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn button{padding:4px 8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group .mce-first{margin-left:0}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9e9e9e}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#333}.mce-menubar{border:1px solid rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn button{color:#333}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:white}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:white}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:white}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:white}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:white}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #aaa;background:#eee;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #bbb;background:#ddd;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#bbb}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#ccc}.mce-splitbtn button{padding-right:6px;padding-left:6px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#dbdbdb;outline:1px solid #ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = this.currentStyle['-ie7-icon'].substr(1, 1) + ' ')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-alignnone{-ie7-icon:"\e003"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-rotateleft{-ie7-icon:"\eaa8"}.mce-i-rotateright{-ie7-icon:"\eaa9"}.mce-i-crop{-ie7-icon:"\ee78"}.mce-i-editimage{-ie7-icon:"\e914"}.mce-i-options{-ie7-icon:"\ec6a"}.mce-i-flipv{-ie7-icon:"\eaaa"}.mce-i-fliph{-ie7-icon:"\eaac"}.mce-i-zoomin{-ie7-icon:"\eb35"}.mce-i-zoomout{-ie7-icon:"\eb36"}.mce-i-sun{-ie7-icon:"\eccc"}.mce-i-moon{-ie7-icon:"\eccd"}.mce-i-arrowleft{-ie7-icon:"\edc0"}.mce-i-arrowright{-ie7-icon:"\edb8"}.mce-i-drop{-ie7-icon:"\e934"}.mce-i-contrast{-ie7-icon:"\ecd4"}.mce-i-sharpen{-ie7-icon:"\eba7"}.mce-i-palette{-ie7-icon:"\e92a"}.mce-i-resize2{-ie7-icon:"\edf9"}.mce-i-orientation{-ie7-icon:"\e601"}.mce-i-invert{-ie7-icon:"\e602"}.mce-i-gamma{-ie7-icon:"\e600"}.mce-i-remove{-ie7-icon:"\ed6a"}.mce-i-codesample{-ie7-icon:"\e603"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#bbb} \ No newline at end of file diff --git a/www/js/tinymce/skins/lightgray/skin.min.css b/www/js/tinymce/skins/lightgray/skin.min.css new file mode 100644 index 0000000..4359855 --- /dev/null +++ b/www/js/tinymce/skins/lightgray/skin.min.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#fff;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px solid #3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#aaa;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #cacaca;border:0 solid rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#fff;border:1px solid rgba(0,0,0,0.2);border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#858585}.mce-close:hover i{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#f0f0f0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#ccc;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ecb}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333}.mce-notification .mce-progress .mce-bar-container{border-color:#ccc}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ecb}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b1b1b1;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn button{padding:4px 8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group .mce-first{margin-left:0}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9e9e9e}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#333}.mce-menubar{border:1px solid rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn button{color:#333}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:white}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:white}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:white}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:white}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:white}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #aaa;background:#eee;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #bbb;background:#ddd;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#bbb}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#ccc}.mce-splitbtn button{padding-right:6px;padding-left:6px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#dbdbdb;outline:1px solid #ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-checkmark:before{content:"\e033"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#bbb} \ No newline at end of file diff --git a/www/js/tinymce/themes/inlite/theme.min.js b/www/js/tinymce/themes/inlite/theme.min.js new file mode 100644 index 0000000..09f7100 --- /dev/null +++ b/www/js/tinymce/themes/inlite/theme.min.js @@ -0,0 +1 @@ +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.ThemeManager),h("2",tinymce.util.Delay),h("c",tinymce.util.Tools),h("d",tinymce.ui.Factory),h("e",tinymce.DOM),g("j",[],function(){var a=function(a){return function(b){return typeof b===a}},b=function(a){return Array.isArray(a)},c=function(a){return null===a},d=function(a){return function(d){return!c(d)&&!b(d)&&a(d)}};return{isString:a("string"),isNumber:a("number"),isBoolean:a("boolean"),isFunction:a("function"),isObject:d(a("object")),isNull:c,isArray:b}}),g("f",["c","d","j"],function(a,b,c){var d=function(a,b){return function(c,d){for(var e,f=d.parents.length;f--&&(e=d.parents[f].nodeName,"OL"!=e&&"UL"!=e););a.active(c&&e==b)}},e=function(a,b){var c=function(a,b){return{selector:a,handler:b}},e=function(a){b.active(a)},f=function(a){b.disabled(a)};return"bullist"==a?c("ul > li",d(b,"UL")):"numlist"==a?c("ol > li",d(b,"OL")):b.settings.stateSelector?c(b.settings.stateSelector,e):b.settings.disabledStateSelector?c(b.settings.disabledStateSelector,f):null},f=function(a,b,c){return function(){var d=e(b,c);null!==d&&a.selection.selectorChanged(d.selector,d.handler)}},g=function(a){return c.isArray(a)?a:c.isString(a)?a.split(/[ ,]/):[]},h=function(c,d,e){var h,i=[];if(e)return a.each(g(e),function(a){var d;"|"==a?h=null:b.has(a)?(a={type:a},i.push(a),h=null):c.buttons[a]&&(h||(h={type:"buttongroup",items:[]},i.push(h)),d=a,a=c.buttons[d],"function"==typeof a&&(a=a()),a.type=a.type||"button",a=b.create(a),a.on("postRender",f(c,d,a)),h.items.push(a))}),b.create({type:"toolbar",layout:"flow",name:d,items:i})};return{create:h}}),h("o",tinymce.util.Promise),g("p",[],function(){var a=0,b=function(){var a=function(){return Math.round(4294967295*Math.random()).toString(36)};return"s"+Date.now().toString(36)+a()+a()+a()},c=function(c){return c+a++ +b()};return{uuid:c}}),g("u",[],function(){var a=function(a,b){function c(c){var e,f,g;f=b[c?"startContainer":"endContainer"],g=b[c?"startOffset":"endOffset"],1==f.nodeType&&(e=a.create("span",{"data-mce-type":"bookmark"}),f.hasChildNodes()?(g=Math.min(g,f.childNodes.length-1),c?f.insertBefore(e,f.childNodes[g]):a.insertAfter(e,f.childNodes[g])):f.appendChild(e),f=e,g=0),d[c?"startContainer":"endContainer"]=f,d[c?"startOffset":"endOffset"]=g}var d={};return c(!0),b.collapsed||c(),d},b=function(a,b){function c(c){function d(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;1==b.nodeType&&"bookmark"==b.getAttribute("data-mce-type")||c++,b=b.nextSibling}return-1}var e,f,g;e=g=b[c?"startContainer":"endContainer"],f=b[c?"startOffset":"endOffset"],e&&(1==e.nodeType&&(f=d(e),e=e.parentNode,a.remove(g)),b[c?"startContainer":"endContainer"]=e,b[c?"startOffset":"endOffset"]=f)}c(!0),c();var d=a.createRng();return d.setStart(b.startContainer,b.startOffset),b.endContainer&&d.setEnd(b.endContainer,b.endOffset),d};return{create:a,resolve:b}}),h("v",tinymce.dom.TreeWalker),h("w",tinymce.dom.RangeUtils),g("q",["u","c","v","w"],function(a,b,c,d){var e=function(a,b,d){var e,f,g=[];for(e=new c(b,a),f=b;f&&(1===f.nodeType&&g.push(f),f!==d);f=e.next());return g},f=function(c,d){var e,f,g;f=c.dom,g=c.selection,e=a.create(f,g.getRng()),b.each(d,function(a){c.dom.remove(a,!0)}),g.setRng(a.resolve(f,e))},g=function(a){return"A"===a.nodeName&&a.hasAttribute("href")},h=function(a,b){var c=a.getParent(b,g);return c?c:b},i=function(a){var c,f,i,j,k,l,m;return k=a.selection,l=a.dom,m=k.getRng(),c=h(l,d.getNode(m.startContainer,m.startOffset)),f=d.getNode(m.endContainer,m.endOffset),i=a.getBody(),j=b.grep(e(i,c,f),g)},j=function(a){f(a,i(a))};return{unlinkSelection:j}}),g("m",["p","q"],function(a,b){var c=function(a,b){var c,d,e;for(e='
    ',e+="",d=0;b>d;d++){for(e+="",c=0;a>c;c++)e+="";e+=""}return e+="",e+="

    "},d=function(a){var b=a.dom.select("*[data-mce-id]");return b[0]},e=function(a,b,e){a.undoManager.transact(function(){var f,g;a.insertContent(c(b,e)),f=d(a),f.removeAttribute("data-mce-id"),g=a.dom.select("td,th",f),a.selection.setCursorLocation(g[0],0)})},f=function(a,b){a.execCommand("FormatBlock",!1,b)},g=function(b,c,d){var e,f;e=b.editorUpload.blobCache,f=e.create(a.uuid("mceu"),d,c),e.add(f),b.insertContent(b.dom.createHTML("img",{src:f.blobUri()}))},h=function(a){a.selection.collapse(!1)},i=function(a){a.focus(),b.unlinkSelection(a),h(a)},j=function(a,b,c){a.focus(),a.dom.setAttrib(b,"href",c),h(a)},k=function(a,b){a.execCommand("mceInsertLink",!1,{href:b}),h(a)},l=function(a,b){var c=a.dom.getParent(a.selection.getStart(),"a[href]");c?j(a,c,b):k(a,b)},m=function(a,b){0===b.trim().length?i(a):l(a,b)};return{insertTable:e,formatBlock:f,insertBlob:g,createLink:m,unlink:i}}),g("r",[],function(){var a=function(a){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(a.trim())},b=function(a){return/^https?:\/\//.test(a.trim())};return{isDomainLike:a,isAbsolute:b}}),g("g",["c","d","o","m","r"],function(a,b,c,d,e){var f=function(a){a.find("textbox").eq(0).each(function(a){a.focus()})},g=function(c,d){var e=b.create(a.extend({type:"form",layout:"flex",direction:"row",padding:5,name:c,spacing:3},d));return e.on("show",function(){f(e)}),e},h=function(a,b){return b?a.show():a.hide()},i=function(a,b){return new c(function(c){a.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(a){var d=a===!0?"http://"+b:b;c(d)})})},j=function(a,b){return!e.isAbsolute(b)&&e.isDomainLike(b)?i(a,b):c.resolve(b)},k=function(a,b){var c=function(){a.focus(),d.unlink(a),b()};return g("quicklink",{items:[{type:"button",name:"unlink",icon:"unlink",onclick:c,tooltip:"Remove link"},{type:"textbox",name:"linkurl",placeholder:"Paste or type a link"},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:function(){var b,c="";b=a.dom.getParent(a.selection.getStart(),"a[href]"),b&&(c=a.dom.getAttrib(b,"href")),this.fromJSON({linkurl:c}),h(this.find("#unlink"),b)},onsubmit:function(c){j(a,c.data.linkurl).then(function(c){d.createLink(a,c),b()})}})};return{createQuickLinkForm:k}}),h("s",tinymce.geom.Rect),g("t",[],function(){var a=function(a){return{x:a.left,y:a.top,w:a.width,h:a.height}},b=function(a){return{left:a.x,top:a.y,width:a.w,height:a.h,right:a.x+a.w,bottom:a.y+a.h}};return{fromClientRect:a,toClientRect:b}}),g("h",["e","s","t"],function(a,b,c){var d=function(b){var c=a.getViewPort();return{x:b.x+c.x,y:b.y+c.y,w:b.w,h:b.h}},e=function(a){var b=a.getBoundingClientRect();return d({x:b.left,y:b.top,w:Math.max(a.clientWidth,a.offsetWidth),h:Math.max(a.clientHeight,a.offsetHeight)})},f=function(a,b){return e(b)},g=function(a){return e(a.getElement().ownerDocument.body)},h=function(a){return e(a.getContentAreaContainer()||a.getBody())},i=function(a){var b=a.selection.getBoundingClientRect();return b?d(c.fromClientRect(b)):null};return{getElementRect:f,getPageAreaRect:g,getContentAreaRect:h,getSelectionRect:i}}),g("i",["s","t"],function(a,b){var c=function(a,b){return{rect:a,position:b}},d=function(a,b){return{x:b.x,y:b.y,w:a.w,h:a.h}},e=function(b,e,f,g,h){var i,j,k;return i=a.findBestRelativePosition(h,f,g,b),f=a.clamp(f,g),i?(j=a.relativePosition(h,f,i),k=d(h,j),c(k,i)):(f=a.intersect(g,f),f?(i=a.findBestRelativePosition(h,f,g,e))?(j=a.relativePosition(h,f,i),k=d(h,j),c(k,i)):(k=d(h,f),c(k,i)):null)},f=function(a,b,c){return e(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],a,b,c)},g=function(a,b,c){return e(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr"],["bc-tc","bl-tl","br-tr"],a,b,c)},h=function(a,c,d,e){var f;return"function"==typeof a?(f=a({elementRect:b.toClientRect(c),contentAreaRect:b.toClientRect(d),panelRect:b.toClientRect(e)}),b.fromClientRect(f)):e},i=function(a){return a.panelRect};return{calcInsert:f,calc:g,userConstrain:h,defaultHandler:i}}),g("a",["j"],function(a){var b=function(a,b){if(b(a))return!0;throw new Error("Default value doesn't match requested type.")},c=function(a){return function(c,d,e){var f=c.settings;return b(e,a),d in f&&a(f[d])?f[d]:e}},d=function(a,b){return a.split(b).filter(function(a){return a.length>0})},e=function(b,c){var e=function(a){return"string"==typeof a?d(a,/[ ,]/):a},f=function(a,b){return a===!1?[]:b};return a.isArray(b)?b:a.isString(b)?e(b):a.isBoolean(b)?f(b,c):c},f=function(a){return function(c,d,f){var g=d in c.settings?c.settings[d]:f;return b(f,a),e(g,f)}};return{getStringOr:c(a.isString),getBoolOr:c(a.isBoolean),getNumberOr:c(a.isNumber),getHandlerOr:c(a.isFunction),getToolbarItemsOr:f(a.isArray)}}),g("3",["c","d","e","f","g","h","i","a"],function(a,b,c,d,e,f,g,h){return function(){var i,j,k=["bold","italic","|","quicklink","h2","h3","blockquote"],l=["quickimage","quicktable"],m=function(b,c){return a.map(c,function(a){return d.create(b,a.id,a.items)})},n=function(a){return h.getToolbarItemsOr(a,"selection_toolbar",k)},o=function(a){return h.getToolbarItemsOr(a,"insert_toolbar",l)},p=function(a){return a.items().length>0},q=function(c,f){var g=m(c,f).concat([d.create(c,"text",n(c)),d.create(c,"insert",o(c)),e.createQuickLinkForm(c,z)]);return b.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:a.grep(g,p),oncancel:function(){c.focus()}})},r=function(a){a&&a.show()},s=function(a,b){a.moveTo(b.x,b.y)},t=function(b,c){c=c?c.substr(0,2):"",a.each({t:"down",b:"up",c:"center"},function(a,d){b.classes.toggle("arrow-"+a,d===c.substr(0,1))}),"cr"===c?(b.classes.toggle("arrow-left",!0),b.classes.toggle("arrow-right",!1)):"cl"===c?(b.classes.toggle("arrow-left",!0),b.classes.toggle("arrow-right",!0)):a.each({l:"left",r:"right"},function(a,d){b.classes.toggle("arrow-"+a,d===c.substr(1,1))})},u=function(a,b){var c=a.items().filter("#"+b);return c.length>0?(c[0].show(),a.reflow(),!0):!1},v=function(a,b,d,e){var i,k,l,m;return r(a),a.items().hide(),u(a,b)?(m=h.getHandlerOr(d,"inline_toolbar_position_handler",g.defaultHandler),i=f.getContentAreaRect(d),k=c.getRect(a.getEl()),l="insert"===b?g.calcInsert(e,i,k):g.calc(e,i,k),void(l?(k=l.rect,j=e,s(a,g.userConstrain(m,e,i,k)),t(a,l.position)):z(a))):void z(a)},w=function(){return i.items().filter("form:visible").length>0},x=function(a,b){if(i){if(i.items().hide(),!u(i,b))return void z(i);var d,e,k,l;r(i),i.items().hide(),u(i,b),l=h.getHandlerOr(a,"inline_toolbar_position_handler",g.defaultHandler),d=f.getContentAreaRect(a),e=c.getRect(i.getEl()),k=g.calc(j,d,e),k&&(e=k.rect,s(i,g.userConstrain(l,j,d,e)),t(i,k.position))}},y=function(a,b,c,d){i||(i=q(a,d),i.renderTo(document.body).reflow().moveTo(c.x,c.y),a.nodeChanged()),v(i,b,a,c)},z=function(){i&&i.hide()},A=function(){i&&i.find("toolbar:visible").eq(0).each(function(a){a.focus(!0)})},B=function(){i&&(i.remove(),i=null)},C=function(){return i&&i.visible()&&w()};return{show:y,showForm:x,inForm:C,hide:z,focus:A,remove:B}}}),g("k",["o"],function(a){var b=function(b){return new a(function(a){var c=new FileReader;c.onloadend=function(){a(c.result.split(",")[1])},c.readAsDataURL(b)})};return{blobToBase64:b}}),g("l",["o"],function(a){var b=function(){return new a(function(a){var b;b=document.createElement("input"),b.type="file",b.style.position="fixed",b.style.left=0,b.style.top=0,b.style.opacity=.001,document.body.appendChild(b),b.onchange=function(b){a(Array.prototype.slice.call(b.target.files))},b.click(),b.parentNode.removeChild(b)})};return{pickFile:b}}),g("4",["3","k","l","m"],function(a,b,c,d){var e=function(a){for(var b=function(b){return function(){d.formatBlock(a,b)}},c=1;6>c;c++){var e="h"+c;a.addButton(e,{text:e.toUpperCase(),tooltip:"Heading "+c,stateSelector:e,onclick:b(e),onPostRender:function(){var a=this.getEl().firstChild.firstChild;a.style.fontWeight="bold"}})}},f=function(a,f){a.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){f.showForm(a,"quicklink")}}),a.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){c.pickFile().then(function(c){var e=c[0];b.blobToBase64(e).then(function(b){d.insertBlob(a,b,e)})})}}),a.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){f.hide(),d.insertTable(a,2,2)}}),e(a)};return{addToEditor:f}}),h("n",tinymce.EditorManager),g("5",["n","e"],function(a,b){var c=function(a,b){var c=function(){a.fire("SkinLoaded"),b()};a.initialized?c():a.on("init",c)},d=function(b){var c=a.baseURL+"/skins/";return b?c+b:c+"lightgray"},e=function(a,b){return a.documentBaseURI.toAbsolute(b)},f=function(a,f){var g=a.settings,h=g.skin_url?e(a,g.skin_url):d(g.skin),i=function(){c(a,f)};b.styleSheetLoader.load(h+"/skin.min.css",i),a.contentCSS.push(h+"/content.inline.min.css")};return{load:f}}),g("8",[],function(){var a=function(a,b){return{id:a,rect:b}},b=function(a,b){for(var c=0;c li",c("UL")),"numlist"==g&&d.selectorChanged("ol > li",c("OL")),b.settings.stateSelector&&d.selectorChanged(b.settings.stateSelector,function(a){b.active(a)},!0),b.settings.disabledStateSelector&&d.selectorChanged(b.settings.disabledStateSelector,function(a){b.disabled(a)})}var g;"|"==b?d=null:n.has(b)?(b={type:b,size:c},e.push(b),d=null):(d||(d={type:"buttongroup",items:[]},e.push(d)),a.buttons[b]&&(g=b,b=a.buttons[g],"function"==typeof b&&(b=b()),b.type=b.type||"button",b.size=c,b=n.create(b),d.items.push(b),a.initialized?f():a.on("init",f)))}),{type:"toolbar",layout:"flow",items:e}}function c(a){function c(c){return c?(d.push(b(c,a)),!0):void 0}var d=[];if(tinymce.isArray(m.toolbar)){if(0===m.toolbar.length)return;tinymce.each(m.toolbar,function(a,b){m["toolbar"+(b+1)]=a}),delete m.toolbar}for(var e=1;10>e&&c(m["toolbar"+e]);e++);return d.length||m.toolbar===!1||c(m.toolbar||t),d.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:d}:void 0}function d(){function b(b){var c;return"|"==b?{text:"|"}:c=a.menuItems[b]}function c(c){var d,e,f,g,h;if(h=tinymce.makeMap((m.removed_menuitems||"").split(/[ ,]/)),m.menu?(e=m.menu[c],g=!0):e=s[c],e){d={text:e.title},f=[],o((e.items||"").split(/[ ,]/),function(a){var c=b(a);c&&!h[a]&&f.push(b(a))}),g||o(a.menuItems,function(a){a.context==c&&("before"==a.separator&&f.push({text:"|"}),a.prependToContext?f.unshift(a):f.push(a),"after"==a.separator&&f.push({text:"|"}))});for(var i=0;i=0;d--)for(e=g.length-1;e>=0;e--)if(g[e].predicate(f[d]))return{toolbar:g[e],element:f[d]};return null}var t;a.on("click keyup setContent",function(b){("setcontent"!=b.type||b.selection)&&tinymce.util.Delay.setEditorTimeout(a,function(){var b;b=s(a.selection.getNode()),b?(r(),p(b)):r()})}),a.on("blur hide",r),a.on("ObjectResizeStart",function(){var b=s(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.hide()}),a.on("nodeChange ResizeEditor ResizeWindow",k),a.on("remove",function(){tinymce.each(c(),function(a){a.panel&&a.panel.remove()}),a.contextToolbars={}}),a.shortcuts.add("ctrl+shift+e > ctrl+shift+p","",function(){var b=s(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.items()[0].focus()})}function i(a){return function(){a.initialized?a.fire("SkinLoaded"):a.on("init",function(){a.fire("SkinLoaded")})}}function j(b){function f(){if(o&&o.moveRel&&o.visible()&&!o._fixed){var b=a.selection.getScrollContainer(),c=a.getBody(),d=0,e=0;if(b){var f=p.getPos(c),g=p.getPos(b);d=Math.max(0,g.x-f.x),e=Math.max(0,g.y-f.y)}o.fixed(!1).moveRel(c,a.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(d,e)}}function g(){o&&(o.show(),f(),p.addClass(a.getBody(),"mce-edit-focus"))}function j(){o&&(o.hide(),r.hideAll(),p.removeClass(a.getBody(),"mce-edit-focus"))}function k(){return o?void(o.visible()||g()):(o=l.panel=n.create({type:q?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!q,border:1,items:[m.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(m.toolbar_items_size)]}),a.fire("BeforeRenderUI"),o.renderTo(q||document.body).reflow(),e(o),g(),h(),a.on("nodeChange",f),a.on("activate",g),a.on("deactivate",j),void a.nodeChanged())}var o,q;return m.fixed_toolbar_container&&(q=p.select(m.fixed_toolbar_container)[0]),m.content_editable=!0,a.on("focus",function(){b.skinUiCss?tinymce.DOM.styleSheetLoader.load(b.skinUiCss,k,k):k()}),a.on("blur hide",j),a.on("remove",function(){o&&(o.remove(),o=null)}),b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss,i(a)),{}}function k(b){function g(){return function(a){"readonly"==a.mode?j.find("*").disabled(!0):j.find("*").disabled(!1)}}var j,k,o;return b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss,i(a)),j=l.panel=n.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[m.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(m.toolbar_items_size),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),m.resize!==!1&&(k={type:"resizehandle",direction:m.resize,onResizeStart:function(){var b=a.getContentAreaContainer().firstChild;o={width:b.clientWidth,height:b.clientHeight}},onResize:function(a){"both"==m.resize?f(o.width+a.deltaX,o.height+a.deltaY):f(null,o.height+a.deltaY)}}),m.statusbar!==!1&&j.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:a},k]}),a.fire("BeforeRenderUI"),a.on("SwitchMode",g()),j.renderBefore(b.targetNode).reflow(),m.readonly&&a.setMode("readonly"),m.width&&tinymce.DOM.setStyle(j.getEl(),"width",m.width),a.on("remove",function(){j.remove(),j=null}),e(j),h(),{iframeContainer:j.find("#iframe")[0].getEl(),editorContainer:j.getEl()}}var l=this,m=a.settings,n=tinymce.ui.Factory,o=tinymce.each,p=tinymce.DOM,q=tinymce.geom.Rect,r=tinymce.ui.FloatPanel,s={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},t="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";l.renderUI=function(b){var c=m.skin!==!1?m.skin||"lightgray":!1;if(c){var d=m.skin_url;d=d?a.documentBaseURI.toAbsolute(d):tinymce.baseURL+"/skins/"+c,tinymce.Env.documentMode<=7?b.skinUiCss=d+"/skin.ie7.min.css":b.skinUiCss=d+"/skin.min.css",a.contentCSS.push(d+"/content"+(a.inline?".inline":"")+".min.css")}return a.on("ProgressState",function(a){l.throbber=l.throbber||new tinymce.ui.Throbber(l.panel.getEl("body")),a.state?l.throbber.show(a.time):l.throbber.hide()}),m.inline?j(b):k(b)},l.resizeTo=f,l.resizeBy=g}); \ No newline at end of file diff --git a/www/js/tinymce/tinymce.min.js b/www/js/tinymce/tinymce.min.js new file mode 100644 index 0000000..6f5d573 --- /dev/null +++ b/www/js/tinymce/tinymce.min.js @@ -0,0 +1,58 @@ +// 4.4.3 (2016-09-01) +!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a];return null}function n(e,t,n){return o(e.x-t,e.y-n,e.w+2*t,e.h+2*n)}function r(e,t){var n,r,i,a;return n=l(e.x,t.x),r=l(e.y,t.y),i=s(e.x+e.w,t.x+t.w),a=s(e.y+e.h,t.y+t.h),0>i-n||0>a-r?null:o(n,r,i-n,a-r)}function i(e,t,n){var r,i,a,s,c,u,d,f,h,p;return c=e.x,u=e.y,d=e.x+e.w,f=e.y+e.h,h=t.x+t.w,p=t.y+t.h,r=l(0,t.x-c),i=l(0,t.y-u),a=l(0,d-h),s=l(0,f-p),c+=r,u+=i,n&&(d+=r,f+=i,c-=a,u-=s),d-=a,f-=s,o(c,u,d-c,f-u)}function o(e,t,n,r){return{x:e,y:t,w:n,h:r}}function a(e){return o(e.left,e.top,e.width,e.height)}var s=Math.min,l=Math.max,c=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i,create:o,fromClientRect:a}}),r(c,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;t>e;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;or;r++)e[r].then(t,n)})},t}),r(u,[c],function(e){function t(e,t){function n(e){window.setTimeout(e,0)}var r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r=534;return{opera:r,webkit:i,ie:o,gecko:l,mac:c,iOS:u,android:d,contentEditable:g,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=o,range:window.getSelection&&"Range"in window,documentMode:o&&!s?document.documentMode||7:10,fileApi:f,ceFalse:o===!1||o>8,canHaveCSP:o===!1||o>11,desktop:!h&&!p,windowsPhone:m}}),r(f,[u,d],function(e,t){function n(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function r(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function i(e,t){var n,r=t;return n=e.path,n&&n.length>0&&(r=n[0]),e.deepPath&&(n=e.deepPath(),n&&n.length>0&&(r=n[0])),r}function o(e,n){function r(){return!1}function o(){return!0}var a,s=n||{},l;for(a in e)u[a]||(s[a]=e[a]);if(s.target||(s.target=s.srcElement||document),t.experimentalShadowDom&&(s.target=i(e,s.target)),e&&c.test(e.type)&&e.pageX===l&&e.clientX!==l){var d=s.target.ownerDocument||document,f=d.documentElement,h=d.body;s.pageX=e.clientX+(f&&f.scrollLeft||h&&h.scrollLeft||0)-(f&&f.clientLeft||h&&h.clientLeft||0),s.pageY=e.clientY+(f&&f.scrollTop||h&&h.scrollTop||0)-(f&&f.clientTop||h&&h.clientTop||0)}return s.preventDefault=function(){s.isDefaultPrevented=o,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},s.stopPropagation=function(){s.isPropagationStopped=o,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},s.stopImmediatePropagation=function(){s.isImmediatePropagationStopped=o,s.stopPropagation()},s.isDefaultPrevented||(s.isDefaultPrevented=r,s.isPropagationStopped=r,s.isImmediatePropagationStopped=r),"undefined"==typeof s.metaKey&&(s.metaKey=!1),s}function a(t,i,o){function a(){o.domLoaded||(o.domLoaded=!0,i(u))}function s(){("complete"===c.readyState||"interactive"===c.readyState&&c.body)&&(r(c,"readystatechange",s),a())}function l(){try{c.documentElement.doScroll("left")}catch(t){return void e.setTimeout(l)}a()}var c=t.document,u={type:"ready"};return o.domLoaded?void i(u):(c.addEventListener?"complete"===c.readyState?a():n(t,"DOMContentLoaded",a):(n(c,"readystatechange",s),c.documentElement.doScroll&&t.self===t.top&&l()),void n(t,"load",a))}function s(){function e(e,t){var n,r,o,a,s=i[t];if(n=s&&s[e.type])for(r=0,o=n.length;o>r;r++)if(a=n[r],a&&a.func.call(a.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var t=this,i={},s,c,u,d,f;c=l+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},s=1,t.domLoaded=!1,t.events=i,t.bind=function(r,l,h,p){function m(t){e(o(t||N.event),g)}var g,v,y,b,C,x,w,N=window;if(r&&3!==r.nodeType&&8!==r.nodeType){for(r[c]?g=r[c]:(g=s++,r[c]=g,i[g]={}),p=p||r,l=l.split(" "),y=l.length;y--;)b=l[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),t.domLoaded&&"ready"===b&&"complete"==r.readyState?h.call(p,o({type:b})):(d||(C=f[b],C&&(x=function(t){var n,r;if(n=t.currentTarget,r=t.relatedTarget,r&&n.contains)r=n.contains(r);else for(;r&&r!==n;)r=r.parentNode;r||(t=o(t||N.event),t.type="mouseout"===t.type?"mouseleave":"mouseenter",t.target=n,e(t,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(t){t=o(t||N.event),t.type="focus"===t.type?"focusin":"focusout",e(t,g)}),v=i[g][b],v?"ready"===b&&t.domLoaded?h({type:b}):v.push({func:h,scope:p}):(i[g][b]=v=[{func:h,scope:p}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?a(r,x,t):n(r,C||b,x,w)));return r=v=0,h}},t.unbind=function(e,n,o){var a,s,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return t;if(a=e[c]){if(f=i[a],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],s=f[d]){if(o)for(u=s.length;u--;)if(s[u].func===o){var h=s.nativeHandler,p=s.fakeName,m=s.capture;s=s.slice(0,u).concat(s.slice(u+1)),s.nativeHandler=h,s.fakeName=p,s.capture=m,f[d]=s}o&&0!==s.length||(delete f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture))}}else{for(d in f)s=f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture);f={}}for(d in f)return t;delete i[a];try{delete e[c]}catch(g){e[c]=null}}return t},t.fire=function(n,r,i){var a;if(!n||3===n.nodeType||8===n.nodeType)return t;i=o(null,i),i.type=r,i.target=n;do a=n[c],a&&e(i,a),n=n.parentNode||n.ownerDocument||n.defaultView||n.parentWindow;while(n&&!i.isPropagationStopped());return t},t.clean=function(e){var n,r,i=t.unbind;if(!e||3===e.nodeType||8===e.nodeType)return t;if(e[c]&&i(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(i(e),r=e.getElementsByTagName("*"),n=r.length;n--;)e=r[n],e[c]&&i(e);return t},t.destroy=function(){i={}},t.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var l="mce-data-",c=/^(?:mouse|contextmenu)|click/,u={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1};return s.Event=new s,s.Event.bind(window,"ready",function(){}),s}),r(h,[],function(){function e(e,t,n,r){var i,o,a,s,l,c,d,h,p,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&x.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(x.qsa&&(!P||!P.test(e))){if(h=d=F,p=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=_(e),(d=t.getAttribute("id"))?h=d.replace(be,"\\$&"):t.setAttribute("id",h),h="[id='"+h+"'] ",l=c.length;l--;)c[l]=h+f(c[l]);p=ye.test(e)&&u(t.parentNode)||t,m=c.join(",")}if(m)try{return Z.apply(n,p.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c=[U,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===U&&s[1]===o)return c[2]=s[2];if(l[r]=c,c[2]=e(t,n,a))return!0}}}function p(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;o>i;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),c&&t.push(s)));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,d,f=[],h=[],p=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:p||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,h),i(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[h[u]]=!(y[h[u]]=d));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(y[u]=d);o(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=o?te.call(r,d):f[u])>-1&&(r[c]=!(a[c]=d))}}else b=g(b===a?b.splice(p,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),c=h(function(e){return te.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=w.relative[e[s].type])u=[h(p(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&p(u),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}u.push(n)}return p(u)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,c){var u,d,f,h=0,p="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),C=U+=null==y?1:Math.random()||.1,x=b.length;for(c&&(T=a!==D&&a);p!==x&&null!=(u=b[p]);p++){if(o&&u){for(d=0;f=t[d++];)if(f(u,a,s)){l.push(u);break}c&&(U=C)}i&&((u=!f&&u)&&h--,r&&m.push(u))}if(h+=p,i&&p!==h){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(h>0)for(;p--;)m[p]||v[p]||(v[p]=J.call(l));v=g(v)}Z.apply(l,v),c&&!r&&v.length>0&&h+n.length>1&&e.uniqueSort(l)}return c&&(U=C,T=y),m};return i?r(a):a}var C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F="sizzle"+-new Date,z=window.document,U=0,W=0,V=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},Y=typeof t,X=1<<31,K={}.hasOwnProperty,G=[],J=G.pop,Q=G.push,Z=G.push,ee=G.slice,te=G.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ce=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ue=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),he={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,Ce=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),xe=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(G=ee.call(z.childNodes),z.childNodes),G[z.childNodes.length].nodeType}catch(we){Z={apply:G.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},E=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=e.setDocument=function(e){function t(e){try{return e.top}catch(t){}return null}var n,r=e?e.ownerDocument||e:z,o=r.defaultView;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!E(r),o&&o!==t(o)&&(o.addEventListener?o.addEventListener("unload",function(){B()},!1):o.attachEvent&&o.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=ge.test(r.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=F,!r.getElementsByName||!r.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==Y&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==Y?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){return M?t.getElementsByClassName(e):void 0},O=[],P=[],(x.qsa=ge.test(r.querySelectorAll))&&(i(function(e){e.innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||P.push(":checked")}),i(function(e){var t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=ge.test(H=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",ae)}),P=P.length&&new RegExp(P.join("|")),O=O.length&&new RegExp(O.join("|")),n=ge.test(L.compareDocumentPosition),I=n||ge.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=n?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===z&&I(z,e)?-1:t===r||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===r?-1:t===r?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)c.unshift(n);for(;l[i]===c[i];)i++;return i?a(l[i],c[i]):l[i]===z?-1:c[i]===z?1:0},r):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ue,"='$1']"),x.matchesSelector&&M&&(!O||!O.test(n))&&(!P||!P.test(n)))try{var r=H.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&K.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return i!==t?i:x.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},N=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=N(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=N(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Ce,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(Ce,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Ce,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=V[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&V(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,h,p,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],h=c[0]===U&&c[1],f=c[0]===U&&c[2],d=h&&g.childNodes[h];d=++h&&d&&d[m]||(f=h=0)||p.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[U,h,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===U)f=c[1];else for(;(d=++h&&d&&d[m]||(f=h=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[U,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(Ce,xe),function(t){return(t.textContent||t.innerText||N(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(Ce,xe).toLowerCase(),function(e){var n;do if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ce,xe),t)||[])[0], +!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ce,xe),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(c||S(e,d))(r,t,!M,n,ye.test(e)&&u(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="
    ","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(p,[],function(){function e(e){var t=e,n,r;if(!u(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function n(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function r(e,t){var r=[];return n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return n(e,function(n,i){t&&!t(n,i,e)||r.push(n)}),r}function o(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function a(e,t,n,r){var i=0;for(arguments.length<3&&(n=e[0]);ir;r++)if(t.call(n,e[r],r,e))return r;return-1}function l(e,n,r){var i=s(e,n,r);return-1!==i?e[i]:t}function c(e){return e[e.length-1]}var u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{isArray:u,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a,findIndex:s,find:l,last:c}}),r(m,[d,p],function(e,n){function r(e){return null===e||e===t?"":(""+e).replace(h,"")}function i(e,r){return r?"array"==r&&n.isArray(e)?!0:typeof e==r:e!==t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],c?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function s(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function l(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return t.call(i,e,n,r)===!1?!1:void l(e,t,r,i)}))}function c(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;nn&&(t=t[e[n]],t);n++);return t}function d(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function f(t){var n=e.cacheSuffix;return n&&(t+=(-1===t.indexOf("?")?"?":"&")+n),t}var h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,extend:s,create:a,walk:l,createNS:c,resolve:u,explode:d,_addCacheSuffix:f}}),r(g,[f,h,m,d],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function c(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)c(e,t[i],n,r);else for(i=0;ii&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function C(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function x(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,N=Array.prototype.push,E=Array.prototype.slice,_=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),A=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),B={"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},P=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:_.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)N.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;it;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:N,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:h,isArray:r.isArray,each:m,trim:p,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return C(e,"nextSibling",1)},prev:function(e){return C(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),0!==e.indexOf("parents")&&"prevUntil"!==e||(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(x(L,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),x(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(v,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,h="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+h).split(" "),l=0;l-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function h(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function p(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return C&&(n=C.call(x,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,C=e.url_converter,x=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":"color"!==v&&"background-color"!==v||(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,p),m[v]=b?h(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],!n||!n[e])}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(f&&!r(o,t)||(i+=(i.length>0?" ":"")+o+": "+a+";"));return i}}}}),r(y,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}function r(e,n,r,i){var o,a,s;if(e){if(o=e[r],t&&o===t)return;if(o){if(!i)for(s=o[n];s;s=s[n])if(!s[n])return s;return o}if(a=e.parentNode,a&&a!==t)return a}}var i=e;this.current=function(){return i},this.next=function(e){return i=n(i,"firstChild","nextSibling",e)},this.prev=function(e){return i=n(i,"lastChild","previousSibling",e)},this.prev2=function(e){return i=r(i,"lastChild","previousSibling",e)}}}),r(b,[m],function(e){function t(n){function r(){return P.createDocumentFragment()}function i(e,t){N(F,e,t)}function o(e,t){N(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(M[V]=M[W],M[$]=M[U]):(M[W]=M[V],M[U]=M[$]),M.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function h(e,t){var n=M[W],r=M[U],i=M[V],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function p(){E(I)}function m(){return E(O)}function g(){return E(H)}function v(e){var t=this[W],r=this[U],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return q(new t(n),{startContainer:M[W],startOffset:M[U],endContainer:M[V],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return M[W]==M[V]&&M[U]==M[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function N(e,t,r){var i,o;for(e?(M[W]=t,M[U]=r):(M[V]=t,M[$]=r),i=M[V];i.parentNode;)i=i.parentNode;for(o=M[W];o.parentNode;)o=o.parentNode;o==i?w(M[W],M[U],M[V],M[$])>0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[W],M[V])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(M[W]==M[V])return _(e);for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[W])return S(t,e);++n}for(t=M[W],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return k(t,e);++r}for(o=r-n,a=M[W];o>0;)a=a.parentNode,o--;for(s=M[V];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function _(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),M[U]==M[$])return t;if(3==M[W].nodeType){if(n=M[W].nodeValue,i=n.substring(M[U],M[$]),e!=H&&(o=M[W],c=M[U],u=M[$]-M[U],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(P.createTextNode(i)),t}for(o=C(M[W],M[U]),a=M[$]-M[U];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=H&&M.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[U],0>=a)return t!=H&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=H&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=H&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=H&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=C(M[V],M[$]-1),r,i,o,a,s,l=n!=M[V];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(M[W],M[U]),r=n!=M[W],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[U],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=H&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==H?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var M=this,P=n.doc,O=0,H=1,I=2,F=!0,z=!1,U="startOffset",W="startContainer",V="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(M,{startContainer:P,startOffset:0,endContainer:P,endOffset:0,collapsed:F,commonAncestorContainer:P,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:h,deleteContents:p,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(C,[m],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},a={"<":"<",">":">","&":"&",""":'"',"'":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(x,[m,u],function(e,t){return function(n,r){function i(e){n.getElementsByTagName("head")[0].appendChild(e)}function o(r,o,c){function u(){for(var e=b.passed,t=e.length;t--;)e[t]();b.status=2,b.passed=[],b.failed=[]}function d(){for(var e=b.failed,t=e.length;t--;)e[t]();b.status=3,b.passed=[],b.failed=[]}function f(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function h(e,n){e()||((new Date).getTime()-y0)return v=n.createElement("style"),v.textContent='@import "'+r+'"',m(),void i(v);p()}i(g),g.href=r}}var a=0,s={},l;r=r||{},l=r.maxLoadTime||5e3,this.load=o}}),r(w,[h,g,v,f,y,b,C,d,m,x],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function h(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n}function p(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var m=c.each,g=c.is,v=c.grep,y=c.trim,b=l.ie,C=/^([a-z0-9],?)+$/i,x=/^[ \t\r\n]*$/;return p.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(b&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n, +n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(C.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==p.DOM&&n===document){var o=p.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,p.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==p.DOM&&n===document?void p.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void m(e.split(","),function(e){var i;e=c._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="
    "+t,r.removeChild(r.firstChild)}catch(i){n("
    ").html("
    "+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("
    ").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null);do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!x.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:h,split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.insertBefore(n,e):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},p.DOM=new p(document),p.nodeIndex=h,p}),r(N,[w,m],function(e,t){function n(){function e(e,n){function i(){a.remove(l),s&&(s.onreadystatechange=s.onload=s=null),n()}function o(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var a=r,s,l;l=a.uniqueId(),s=document.createElement("script"),s.id=l,s.type="text/javascript",s.src=t._addCacheSuffix(e),"onreadystatechange"in s?s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&i()}:s.onload=i,s.onerror=o,(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}var n=0,a=1,s=2,l={},c=[],u={},d=[],f=0,h;this.isDone=function(e){return l[e]==s},this.markDone=function(e){l[e]=s},this.add=this.load=function(e,t,r){var i=l[e];i==h&&(c.push(e),l[e]=n),t&&(u[e]||(u[e]=[]),u[e].push({func:t,scope:r||this}))},this.remove=function(e){delete l[e],delete u[e]},this.loadQueue=function(e,t){this.loadScripts(c,e,t)},this.loadScripts=function(t,n,r){function c(e){i(u[e],function(e){e.func.call(e.scope)}),u[e]=h}var p;d.push({func:n,scope:r||this}),(p=function(){var n=o(t);t.length=0,i(n,function(t){return l[t]==s?void c(t):void(l[t]!=a&&(l[t]=a,f++,e(t,function(){l[t]=s,f--,c(t),p()})))}),f||(i(d,function(e){e.func.call(e.scope)}),d.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(E,[N,m],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},remove:function(e){delete this.urls[e],delete this.lookup[e]},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(_,[],function(){function e(e){return function(t){return!!t&&t.nodeType==e}}function t(e){return e=e.toLowerCase().split(" "),function(t){var n,r;if(t&&t.nodeType)for(r=t.nodeName.toLowerCase(),n=0;nn.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function a(e){this.walk=function(t,n){function r(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function i(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function a(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function s(e,t,o){var a=o?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=i(g==e?g:g[a],a),y.length&&(o||y.reverse(),n(r(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,h,p,m,g,v,y,b;if(b=e.select("td[data-mce-selected],th[data-mce-selected]"),b.length>0)return void l(b,function(e){n([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=o(d,f)),c==d)return n(r([c]));for(h=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return s(c,h,!0);if(g===h)break}for(g=d;g;g=g.parentNode){if(g===c)return s(d,h);if(g===h)break}p=a(c,h)||c,m=a(d,h)||d,s(c,p,!0),y=i(p==c?p:p.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&n(r(y)),s(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&rr?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r0&&o0)return h=v,p=n?v.nodeValue.length:0,void(i=!0);if(e.isBlock(v)||y[v.nodeName.toLowerCase()])return;s=v}o&&s&&(h=s,i=!0,p=0)}var h,p,m,g=e.getRoot(),v,y,b,C;if(h=n[(r?"start":"end")+"Container"],p=n[(r?"start":"end")+"Offset"],C=1==h.nodeType&&p===h.childNodes.length,y=e.schema.getNonEmptyElements(),b=r,!u(h)){if(1==h.nodeType&&p>h.childNodes.length-1&&(b=!1),9===h.nodeType&&(h=e.getRoot(),p=0),h===g){if(b&&(v=h.childNodes[p>0?p-1:0])){if(u(v))return;if(y[v.nodeName]||"TABLE"==v.nodeName)return}if(h.hasChildNodes()){if(p=Math.min(!b&&p>0?p-1:p,h.childNodes.length-1),h=h.childNodes[p],p=0,!o&&h===g.lastChild&&"TABLE"===h.nodeName)return;if(l(h)||u(h))return;if(h.hasChildNodes()&&!/TABLE/.test(h.nodeName)){v=h,m=new t(h,g);do{if(c(v)||u(v)){i=!1;break}if(3===v.nodeType&&v.nodeValue.length>0){p=b?0:v.nodeValue.length,h=v,i=!0;break}if(y[v.nodeName.toLowerCase()]&&!a(v)){p=e.nodeIndex(v),h=v.parentNode,"IMG"!=v.nodeName||b||p++,i=!0;break}}while(v=b?m.next():m.prev())}}}o&&(3===h.nodeType&&0===p&&f(!0),1===h.nodeType&&(v=h.childNodes[p],v||(v=h.childNodes[p-1]),!v||"BR"!==v.nodeName||d(v,"A")||s(v)||s(v,!0)||f(!0,v))),b&&!o&&3===h.nodeType&&p===h.nodeValue.length&&f(!1),i&&n["set"+(r?"Start":"End")](h,p)}}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}function s(t,n,r){var i,o,a;if(i=r.elementFromPoint(t,n),o=r.body.createTextRange(),i&&"HTML"!=i.tagName||(i=r.body),o.moveToElementText(i),a=e.toArray(o.getClientRects()),a=a.sort(function(e,t){return e=Math.abs(Math.max(e.top-n,e.bottom-n)),t=Math.abs(Math.max(t.top-n,t.bottom-n)),e-t}),a.length>0){n=(a[0].bottom+a[0].top)/2;try{return o.moveToPoint(t,n),o.collapse(!0),o}catch(s){}}return null}var l=e.each,c=n.isContentEditableFalse,u=i.isCaretContainer;return a.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},a.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r=s(e,t,n)}}return r},a.getSelectedNode=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset==n+1?t.childNodes[n]:null},a.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},a}),r(R,[T,d,u],function(e,t,n){return function(r){function i(e){var t,n;if(n=r.$(e).parentsUntil(r.getBody()).add(e),n.length===a.length){for(t=n.length;t>=0&&n[t]===a[t];t--);if(-1===t)return a=n,!0}return a=n,!1}var o,a=[];"onselectionchange"in r.getDoc()||r.on("NodeChange Click MouseUp KeyUp Focus",function(t){var n,i;n=r.selection.getRng(),i={startContainer:n.startContainer,startOffset:n.startOffset,endContainer:n.endContainer,endOffset:n.endOffset},"nodechange"!=t.type&&e.compareRanges(i,o)||r.fire("SelectionChange"),o=i}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!t.range&&r.selection.isCollapsed()||!i(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==r.selection.getNode().nodeName?n.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())}),this.nodeChanged=function(e){var t=r.selection,n,i,o;r.initialized&&t&&!r.settings.disable_nodechange&&!r.readonly&&(o=r.getBody(),n=t.getStart()||o,n.ownerDocument==r.getDoc()&&r.dom.isChildOf(n,o)||(n=o),"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),i=[],r.dom.getParent(n,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=n,e.parents=i,r.fire("NodeChange",e))}}}),r(A,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(B,[m],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;co;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,h;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),h=t("acronym applet basefont big font strike tt"),u.push.apply(u,h),s(h,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,h,p,m,g,v,b,x,w,N,E,_,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,N=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=S.exec(e[n])){if(b=s[1],h=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,N)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=k.exec(f[i])){if(c={},m=s[1],p=s[2].replace(/::/g,":"),b=s[3],_=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(p),c.required=!0),"-"===m){delete g[p],v.splice(u(v,p),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:p,value:_}),c.defaultValue=_),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:p,value:_}),c.forcedValue=_),"<"===b&&(c.validValues=a(_,"?"))), +T.test(p)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(p),l.attributePatterns.push(c)):(g[p]||v.push(p),g[p]=c)}w||"@"!=h||(w=g,N=v),x&&(l.outputName=h,y[x]=l),T.test(h)?(l.pattern=d(h),C.push(l)):y[h]=l}}function h(e){y={},C=[],f(e),s(N,function(e,t){b[t]=e.children})}function p(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],M[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(n){var r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var v=this,y={},b={},C=[],x,w,N,E,_,S,k,T,R,A,B,D,L,M={},P={};e=e||{},N=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),_=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),S=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),k=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption",D),L=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){P[e]=new RegExp("]*>","gi")}),e.valid_elements?h(e.valid_elements):(s(N,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),p(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return x},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return k},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return L},v.getShortEndedElements=function(){return S},v.getSelfClosingElements=function(){return _},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return P},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return M},v.addValidElements=f,v.setValidElements=h,v.addCustomElements=p,v.addValidChildren=m,v.elements=y}}),r(D,[B,C,m],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=h.length;t--&&h[t].name!==e;);if(t>=0){for(n=h.length-1;n>=t;n--)e=h[n],e.valid&&l.end(e.name);h.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in x?t:z(n||r||o||""),N&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(W[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(V.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}p.map[t]=n,p.push({name:t,value:n})}var l=this,c,u=0,d,f,h=[],p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F=0,z=t.decode,U,W=n.makeMap("src,href,data,background,formaction,poster"),V=/((java|vb)script|mhtml):/i,$=/^data:/i;for(P=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),O=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,C=a.getShortEndedElements(),M=i.self_closing_elements||a.getSelfClosingElements(),x=a.getBoolAttrs(),N=i.validate,b=i.remove_internals,U=i.fix_self_closing,H=a.getSpecialElements();c=P.exec(e);){if(u0&&h[h.length-1].name===d&&o(d),!N||(E=a.getElementRule(d))){if(_=!0,N&&(T=E.attributes,R=E.attributePatterns),(k=c[8])?(y=-1!==k.indexOf("data-mce-type"),y&&b&&(_=!1),p=[],p.map={},k.replace(O,s)):(p=[],p.map={}),N&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,L=E.removeEmptyAttrs,L&&!p.length&&(_=!1),D)for(m=D.length;m--;)S=D[m],v=S.name,I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I});if(B)for(m=B.length;m--;)S=B[m],v=S.name,v in p.map||(I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in p.map););-1===m&&(_=!1)}if(S=p.map["data-mce-bogus"]){if("all"===S){u=r(a,e,P.lastIndex),P.lastIndex=u;continue}_=!1}}_&&l.start(d,p,w)}else _=!1;if(f=H[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(_&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),_&&(g.length>0&&l.text(g,!0),l.end(d)),P.lastIndex=u;continue}w||(k&&k.indexOf("/")==k.length-1?_&&l.end(d):h.push({name:d,valid:_}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u=0;m--)d=h[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(L,[A,B,D,m],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,h,p,m,g,v,y,b;for(m=i("tr,td,th,tbody,thead,tfoot,table"),p=l.getNonEmptyElements(),g=l.getTextBlockElements(),v=l.getSpecialElements(),n=0;n1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),h=0;h0)return void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,C,x,w,N,E,_,S,k,T,R,A=[],B,D,L,M,P,O,H,I;if(o=o||{},h={},p={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),H=l.getNonEmptyElements(),O=l.children,k=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,P=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,L=/[ \t\r\n]+/g,M=/^[ \t\r\n]+$/,v=new n({validate:k,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(L," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=k?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=O[b.name],s&&O[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(_=p[a],_?_.push(r):p[a]=[r]);T[e]&&m(r),n||(b=r),!B&&P[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=k?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o}if(B&&P[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(H))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,T[b.name]?b.empty().remove():b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),k&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(S in h){for(_=d[S],C=h[S],N=C.length;N--;)C[N].parent||C.splice(N,1);for(x=0,w=_.length;w>x;x++)_[x](C,S,o)}for(x=0,w=f.length;w>x;x++)if(_=f[x],_.name in p){for(C=p[_.name],N=C.length;N--;)C[N].parent||C.splice(N,1);for(N=0,E=_.callbacks.length;E>N;N++)_.callbacks[N](C,_.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,h,p;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(h=l.getElementRule(c.name),h&&(h.removeEmpty?c.remove():h.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(p=new e("#text",3),p.value="\xa0",i.replace(p))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push(""),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("")},comment:function(e){r.push("")},pi:function(e,t){t?r.push(""):r.push(""),i&&r.push("\n")},doctype:function(e){r.push("",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(P,[M,B],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,h,p,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1&&(f=[],f.map={},m=r.getElementRule(e.name))){for(h=0,p=m.attributesOrder.length;p>h;h++)u=m.attributesOrder[h],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(h=0,p=c.length;p>h;h++)u=c[h].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(O,[w,L,D,C,P,A,B,d,m,S],function(e,t,n,r,i,o,a,s,l,c){function u(e){function t(e){return e&&"br"===e.name}var n,r;n=e.lastChild,t(n)&&(r=n.prev,t(r)&&(n.remove(),r.remove()))}var d=l.each,f=l.trim,h=e.DOM,p=["data-mce-selected"];return function(e,o){function m(e){var t=new RegExp(["]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>","\\s?("+p.join("|")+')="[^"]+"'].join("|"),"gi");return e=c.trim(e.replace(t,""))}function g(){var e=o.getBody().innerHTML,t=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,r,i,a,s,l,c=o.schema;for(e=m(e),l=c.getShortEndedElements();s=t.exec(e);)i=t.lastIndex,a=s[0].length,r=l[s[1]]?i:n.findEndTag(c,e,i),e=e.substring(0,i-a)+e.substring(r),t.lastIndex=i-a;return f(e)}function v(e){-1===l.inArray(p,e)&&(C.addAttributeFilter(e,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),p.push(e))}var y,b,C;return o&&(y=o.dom,b=o.schema),y=y||h,b=b||new a(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,C=new t(e,b),C.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),C.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,s=e.url_converter,l=e.url_converter_scope,c;r--;)i=t[r],o=i.attributes.map[a],o!==c?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=y.serializeStyle(y.parseStyle(o),i.name):s&&(o=s.call(l,o,n,i.name)),i.attr(n,o.length>0?o:null))}),C.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),C.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),C.addNodeFilter("noscript",function(e){for(var t=e.length,n;t--;)n=e[t].firstChild,n&&(n.value=r.decode(n.value))}),C.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/()/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// ")):o.length>0&&(i.firstChild.value="")}),C.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),C.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&C.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,"ul"!==r.name&&"ol"!==r.name||n.prev&&"li"===n.prev.name&&n.prev.append(n)}),C.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:b,addNodeFilter:C.addNodeFilter,addAttributeFilter:C.addAttributeFilter,serialize:function(t,n){var r=this,o,a,l,h,p,m;return s.ie&&y.select("script,style,select,map").length>0?(p=t.innerHTML,t=t.cloneNode(!1),y.setHTML(t,p)):t=t.cloneNode(!0),o=document.implementation,o.createHTMLDocument&&(a=o.createHTMLDocument(""),d("BODY"==t.nodeName?t.childNodes:[t],function(e){a.body.appendChild(a.importNode(e,!0))}),t="BODY"!=t.nodeName?a.body.firstChild:a.body,l=y.doc,y.doc=a),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,r.onPreProcess(n)),m=C.parse(f(n.getInner?t.innerHTML:y.getOuterHTML(t)),n),u(m),h=new i(e,b),n.content=h.serialize(m),n.cleanup||(n.content=c.trim(n.content),n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||r.onPostProcess(n),l&&(y.doc=l),n.node=null,n.content},addRules:function(e){b.addValidElements(e)},setRules:function(e){b.setValidElements(e)},onPreProcess:function(e){o&&o.fire("PreProcess",e)},onPostProcess:function(e){o&&o.fire("PostProcess",e)},addTempAttr:v,trimHtml:m,getTrimmedContent:g}}}),r(H,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,p;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),t!=f&&t!=f.documentElement||(t=h,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(p=t.childNodes,p.length?(n>=p.length?i.insertAfter(a,p[p.length-1]):t.insertBefore(a,p[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,h=f.body,p,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=h.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="":d=null,s.innerHTML="",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=h.createControlRange(),a.addElement(m),a.select(),p=e.getRng(),p.item&&m===p.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(I,[d],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(F,[I,m,u,d,_],function(e,t,n,r,i){function o(e,t){for(;t&&t!=e;){if(s(t)||a(t))return t;t=t.parentNode}return null}var a=i.isContentEditableFalse,s=i.isContentEditableTrue;return function(i,s){function l(e){var t=s.settings.object_resizing;return t===!1||r.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:e==s.getBody()?!1:s.dom.is(e,t))}function c(t){var n,r,i,o,a;n=t.screenX-L,r=t.screenY-M,U=n*B[2]+H,W=r*B[3]+I,U=5>U?5:U,W=5>W?5:W,i="IMG"==k.nodeName&&s.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==k.nodeName&&B[2]*B[3]!==0,i&&(j(n)>j(r)?(W=Y(U*F),U=Y(W/F)):(U=Y(W/F),W=Y(U*F))),_.setStyles(T,{width:U,height:W}),o=B.startPos.x+n,a=B.startPos.y+r,o=o>0?o:0,a=a>0?a:0,_.setStyles(R,{left:o,top:a,display:"block"}),R.innerHTML=U+" × "+W,B[2]<0&&T.clientWidth<=U&&_.setStyle(T,"left",P+(H-U)),B[3]<0&&T.clientHeight<=W&&_.setStyle(T,"top",O+(I-W)),n=X.scrollWidth-K,r=X.scrollHeight-G,n+r!==0&&_.setStyles(R,{left:o-n,top:a-r}),z||(s.fire("ObjectResizeStart",{target:k,width:H,height:I}),z=!0)}function u(){function e(e,t){t&&(k.style[e]||!s.schema.isValid(k.nodeName.toLowerCase(),e)?_.setStyle(k,e,t):_.setAttrib(k,e,t))}z=!1,e("width",U),e("height",W),_.unbind(V,"mousemove",c),_.unbind(V,"mouseup",u),$!=V&&(_.unbind($,"mousemove",c),_.unbind($,"mouseup",u)),_.remove(T),_.remove(R),q&&"TABLE"!=k.nodeName||d(k),s.fire("ObjectResized",{target:k,width:U,height:W}),_.setAttrib(k,"style",_.getAttrib(k,"style")),s.nodeChanged()}function d(e,t,n){var i,o,a,d,h;f(),x(),i=_.getPos(e,X),P=i.x,O=i.y,h=e.getBoundingClientRect(),o=h.width||h.right-h.left,a=h.height||h.bottom-h.top,k!=e&&(C(),k=e,U=W=0),d=s.fire("ObjectSelected",{target:e}),l(e)&&!d.isDefaultPrevented()?S(A,function(e,i){function s(t){L=t.screenX,M=t.screenY,H=k.clientWidth,I=k.clientHeight,F=I/H,B=e,e.startPos={x:o*e[0]+P,y:a*e[1]+O},K=X.scrollWidth,G=X.scrollHeight,T=k.cloneNode(!0),_.addClass(T,"mce-clonedresizable"),_.setAttrib(T,"data-mce-bogus","all"),T.contentEditable=!1,T.unSelectabe=!0,_.setStyles(T,{left:P,top:O,margin:0}),T.removeAttribute("data-mce-selected"),X.appendChild(T),_.bind(V,"mousemove",c),_.bind(V,"mouseup",u),$!=V&&(_.bind($,"mousemove",c),_.bind($,"mouseup",u)),R=_.add(X,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},H+" × "+I)}var l;return t?void(i==t&&s(n)):(l=_.get("mceResizeHandle"+i),l&&_.remove(l),l=_.add(X,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),r.ie&&(l.contentEditable=!1),_.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),s(e)}),e.elm=l,void _.setStyles(l,{left:o*e[0]+P-l.offsetWidth/2,top:a*e[1]+O-l.offsetHeight/2}))}):f(),k.setAttribute("data-mce-selected","1")}function f(){var e,t;x(),k&&k.removeAttribute("data-mce-selected");for(e in A)t=_.get("mceResizeHandle"+e),t&&(_.unbind(t),_.remove(t))}function h(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,r;if(!z&&!s.removed)return S(_.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),r="mousedown"==e.type?e.target:i.getNode(),r=_.$(r).closest(q?"table":"table,img,hr")[0],t(r,X)&&(w(),n=i.getStart(!0),t(n,r)&&t(i.getEnd(!0),r)&&(!q||r!=n&&"IMG"!==n.nodeName))?void d(r):void f()}function p(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function m(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function g(e){var t=e.srcElement,n,r,i,o,a,l,c;n=t.getBoundingClientRect(),l=D.clientX-n.left,c=D.clientY-n.top;for(r in A)if(i=A[r],o=t.offsetWidth*i[0],a=t.offsetHeight*i[1],j(o-l)<8&&j(a-c)<8){B=i;break}z=!0,s.fire("ObjectResizeStart",{target:k,width:k.clientWidth,height:k.clientHeight}),s.getDoc().selection.empty(),d(t,r,D)}function v(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function y(e){return a(o(s.getBody(),e))}function b(e){var t=e.srcElement;if(y(t))return void v(e);if(t!=k){if(s.fire("ObjectSelected",{target:t}),C(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);"IMG"!=t.nodeName&&"TABLE"!=t.nodeName||(f(),k=t,p(t,"resizestart",g))}}function C(){m(k,"resizestart",g)}function x(){for(var e in A){var t=A[e];t.elm&&(_.unbind(t.elm),delete t.elm)}}function w(){try{s.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function N(e){var t;if(q){t=V.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function E(){k=T=null,q&&(C(),m(X,"controlselect",b))}var _=s.dom,S=t.each,k,T,R,A,B,D,L,M,P,O,H,I,F,z,U,W,V=s.getDoc(),$=document,q=r.ie&&r.ie<11,j=Math.abs,Y=Math.round,X=s.getBody(),K,G;A={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var J=".mce-content-body";return s.contentStyles.push(J+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: box-sizing;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+J+" .mce-resizehandle:hover {background: #000}"+J+" img[data-mce-selected],"+J+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+J+" .mce-clonedresizable {position: absolute;"+(r.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+J+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),s.on("init",function(){q?(s.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(f(),N(e.target))}),p(X,"controlselect",b),s.on("mousedown",function(e){D=e})):(w(),r.ie>=11&&(s.on("mousedown click",function(e){var t=e.target,n=t.nodeName;z||!/^(TABLE|IMG|HR)$/.test(n)||y(t)||(s.selection.select(t,"TABLE"==n),"mousedown"==e.type&&s.nodeChanged())}),s.dom.bind(X,"mscontrolselect",function(e){function t(e){n.setEditorTimeout(s,function(){s.selection.select(e)})}return y(e.target)?(e.preventDefault(),void t(e.target)):void(/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&t(e.target)))})));var e=n.throttle(function(e){s.composing||h(e)});s.on("nodechange ResizeEditor ResizeWindow drop",e),s.on("keyup compositionend",function(t){k&&"TABLE"==k.nodeName&&e(t)}),s.on("hide blur",f)}),s.on("remove",x),{isResizable:l,showResizeRect:d,hideResizeRect:f,updateResizeRect:h,controlSelect:N,destroy:E}}}),r(z,[],function(){function e(e){return function(){return e}}function t(e){return function(t){return!e(t)}}function n(e,t){return function(n){return e(t(n))}}function r(){var e=a.call(arguments);return function(t){for(var n=0;n=e.length?e.apply(this,t.slice(1)):function(){var e=t.concat([].slice.call(arguments));return o.apply(this,e)}}var a=[].slice;return{constant:e,negate:t,and:i,or:r,curry:o,compose:n}}),r(U,[_,p,k],function(e,t,n){function r(e){return m(e)?!1:d(e)?!f(e.parentNode):h(e)||u(e)||p(e)||c(e)}function i(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode){if(c(e))return!1;if(l(e))return!0}return!0}function o(e){return c(e)?t.reduce(e.getElementsByTagName("*"),function(e,t){return e||l(t)},!1)!==!0:!1}function a(e){return h(e)||o(e)}function s(e,t){return r(e)&&i(e,t)}var l=e.isContentEditableTrue,c=e.isContentEditableFalse,u=e.isBr,d=e.isText,f=e.matchNodeNames("script style textarea"),h=e.matchNodeNames("img input textarea hr iframe video audio object"),p=e.matchNodeNames("table"),m=n.isCaretContainer;return{isCaretCandidate:r,isInEditable:i,isAtomic:a,isEditableCaretCandidate:s}}),r(W,[],function(){function e(e){return e?{left:u(e.left),top:u(e.top),bottom:u(e.bottom),right:u(e.right),width:u(e.width),height:u(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function t(t,n){return t=e(t),n?t.right=t.left:(t.left=t.left+t.width,t.right=t.left),t.width=0,t}function n(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}function r(e,t,n){return e>=0&&e<=Math.min(t.height,n.height)/2}function i(e,t){return e.bottomt.bottom?!1:r(t.top-e.bottom,e,t)}function o(e,t){return e.top>t.bottom?!0:e.bottomt.right}function l(e,t){return i(e,t)?-1:o(e,t)?1:a(e,t)?-1:s(e,t)?1:0}function c(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}var u=Math.round;return{clone:e,collapse:t,isEqual:n,isAbove:i,isBelow:o,isLeft:a,isRight:s,compare:l,containsXY:c}}),r(V,[],function(){function e(e){return"string"==typeof e&&e.charCodeAt(0)>=768&&t.test(e)}var t=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]");return{isExtendingChar:e}}),r($,[z,_,w,T,U,W,V],function(e,t,n,r,i,o,a){function s(e){return"createRange"in e?e.createRange():n.DOM.createRng()}function l(e){return e&&/[\r\n\t ]/.test(e)}function c(e){var t=e.startContainer,n=e.startOffset,r;return!!(l(e.toString())&&v(t.parentNode)&&(r=t.data,l(r[n-1])||l(r[n+1])))}function u(e){function t(e){var t=e.ownerDocument,n=s(t),r=t.createTextNode("\xa0"),i=e.parentNode,a;return i.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1),a=o.clone(n.getBoundingClientRect()),i.removeChild(r),a}function n(e){var n,r;return r=e.getClientRects(),n=r.length>0?o.clone(r[0]):o.clone(e.getBoundingClientRect()),b(e)&&0===n.left?t(e):n}function r(e,t){return e=o.collapse(e,t),e.width=1,e.right=e.left+1,e}function i(e){0!==e.height&&(u.length>0&&o.isEqual(e,u[u.length-1])||u.push(e))}function l(e,t){var o=s(e.ownerDocument);if(t0&&(o.setStart(e,t-1),o.setEnd(e,t),c(o)||i(r(n(o),!1))),t=t.data.length:n>=t.childNodes.length}function a(){var e;return e=s(t.ownerDocument),e.setStart(t,n),e.setEnd(t,n),e}function l(){return r||(r=u(new d(t,n))),r}function c(){return l().length>0}function f(e){return e&&t===e.container()&&n===e.offset()}function h(e){return x(t,e?n-1:n)}return{container:e.constant(t),offset:e.constant(n),toRange:a,getClientRects:l,isVisible:c,isAtStart:i,isAtEnd:o,isEqual:f,getNode:h}}var f=t.isElement,h=i.isCaretCandidate,p=t.matchStyleValues("display","block table"),m=t.matchStyleValues("float","left right"),g=e.and(f,h,e.negate(m)),v=e.negate(t.matchStyleValues("white-space","pre pre-line pre-wrap")),y=t.isText,b=t.isBr,C=n.nodeIndex,x=r.getNode;return d.fromRangeStart=function(e){return new d(e.startContainer,e.startOffset)},d.fromRangeEnd=function(e){return new d(e.endContainer,e.endOffset)},d.after=function(e){return new d(e.parentNode,C(e)+1)},d.before=function(e){return new d(e.parentNode,C(e))},d}),r(q,[_,w,z,p,$],function(e,t,n,r,i){function o(e){var t=e.parentNode;return v(t)?o(t):t}function a(e){return e?r.reduce(e.childNodes,function(e,t){return v(t)&&"BR"!=t.nodeName?e=e.concat(a(t)):e.push(t),e},[]):[]}function s(e,t){for(;(e=e.previousSibling)&&g(e);)t+=e.data.length;return t}function l(e){return function(t){return e===t}}function c(t){var n,i,s;return n=a(o(t)),i=r.findIndex(n,l(t),t),n=n.slice(0,i+1),s=r.reduce(n,function(e,t,r){return g(t)&&g(n[r-1])&&e++,e},0),n=r.filter(n,e.matchNodeNames(t.nodeName)),i=r.findIndex(n,l(t),t),i-s}function u(e){var t;return t=g(e)?"text()":e.nodeName.toLowerCase(),t+"["+c(e)+"]"}function d(e,t,n){var r=[];for(t=t.parentNode;t!=e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}function f(t,i){var o,a,l=[],c,f,h;return o=i.container(),a=i.offset(),g(o)?c=s(o,a):(f=o.childNodes,a>=f.length?(c="after",a=f.length-1):c="before",o=f[a]),l.push(u(o)),h=d(t,o),h=r.filter(h,n.negate(e.isBogus)),l=l.concat(r.map(h,function(e){return u(e)})),l.reverse().join("/")+","+c}function h(t,n,i){var o=a(t);return o=r.filter(o,function(e,t){return!g(e)||!g(o[t-1])}),o=r.filter(o,e.matchNodeNames(n)),o[i]}function p(e,t){for(var n=e,r=0,o;g(n);){if(o=n.data.length,t>=r&&r+o>=t){e=n,t-=r;break}if(!g(n.nextSibling)){e=n,t=o;break}r+=o,n=n.nextSibling}return t>e.data.length&&(t=e.data.length),new i(e,t)}function m(e,t){var n,o,a;return t?(n=t.split(","),t=n[0].split("/"),a=n.length>1?n[1]:"before",o=r.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),h(e,t[1],parseInt(t[2],10))):null},e),o?g(o)?p(o,parseInt(a,10)):(a="after"===a?y(o)+1:y(o),new i(o.parentNode,a)):null):null}var g=e.isText,v=e.isBogus,y=t.nodeIndex;return{create:f,resolve:m}}),r(j,[d,m,k,q,$,_],function(e,t,n,r,i,o){function a(a){var l=a.dom;this.getBookmark=function(e,c){function u(e,n){var r=0;return t.each(l.select(e),function(e){return"all"!==e.getAttribute("data-mce-bogus")?e==n?!1:void r++:void 0}),r}function d(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function f(e){function t(e,t){var r=e[t?"startContainer":"endContainer"],i=e[t?"startOffset":"endOffset"],o=[],a,s,u=0;if(3==r.nodeType){if(c)for(a=r.previousSibling;a&&3==a.nodeType;a=a.previousSibling)i+=a.nodeValue.length;o.push(i)}else s=r.childNodes,i>=s.length&&s.length&&(u=1,i=Math.max(0,s.length-1)),o.push(l.nodeIndex(s[i],c)+u);for(;r&&r!=n;r=r.parentNode)o.push(l.nodeIndex(r,c));return o}var n=l.getRoot(),r={};return r.start=t(e,!0),a.isCollapsed()||(r.end=t(e)),r}function h(e){function t(e){var t;if(n.isCaretContainer(e)){if(o.isText(e)&&n.isCaretContainerBlock(e)&&(e=e.parentNode),t=e.previousSibling,s(t))return t;if(t=e.nextSibling,s(t))return t}}return t(e.startContainer)||t(e.endContainer)}var p,m,g,v,y,b,C="",x;if(2==e)return b=a.getNode(),y=b?b.nodeName:null,p=a.getRng(),s(b)||"IMG"==y?{name:y,index:u(y,b)}:a.tridentSel?a.tridentSel.getBookmark(e):(b=h(p),b?(y=b.tagName,{name:y,index:u(y,b)}):f(p));if(3==e)return p=a.getRng(),{start:r.create(l.getRoot(),i.fromRangeStart(p)),end:r.create(l.getRoot(),i.fromRangeEnd(p))};if(e)return{rng:a.getRng()};if(p=a.getRng(),g=l.uniqueId(),v=a.isCollapsed(),x="overflow:hidden;line-height:0px",p.duplicate||p.item){if(p.item)return b=p.item(0),y=b.nodeName,{name:y,index:u(y,b)};m=p.duplicate();try{p.collapse(),p.pasteHTML(''+C+""),v||(m.collapse(!1),p.moveToElementText(m.parentElement()),0===p.compareEndPoints("StartToEnd",m)&&m.move("character",-1),m.pasteHTML(''+C+""))}catch(w){return null}}else{if(b=a.getNode(),y=b.nodeName,"IMG"==y)return{name:y,index:u(y,b)};m=d(p.cloneRange()),v||(m.collapse(!1),m.insertNode(l.create("span",{"data-mce-type":"bookmark",id:g+"_end",style:x},C))),p=d(p),p.collapse(!0),p.insertNode(l.create("span",{"data-mce-type":"bookmark",id:g+"_start",style:x},C))}return a.moveToBookmark({id:g,keep:1}),{id:g}},this.moveToBookmark=function(n){function i(e){var t=n[e?"start":"end"],r,i,o,a;if(t){for(o=t[0],i=d,r=t.length-1;r>=1;r--){if(a=i.childNodes,t[r]>a.length-1)return;i=a[t[r]]}3===i.nodeType&&(o=Math.min(t[0],i.nodeValue.length)),1===i.nodeType&&(o=Math.min(t[0],i.childNodes.length)),e?u.setStart(i,o):u.setEnd(i,o)}return!0}function o(r){var i=l.get(n.id+"_"+r),o,a,s,c,u=n.keep;if(i&&(o=i.parentNode,"start"==r?(u?(o=i.firstChild,a=1):a=l.nodeIndex(i),f=h=o,p=m=a):(u?(o=i.firstChild,a=1):a=l.nodeIndex(i),h=o,m=a),!u)){for(c=i.previousSibling,s=i.nextSibling,t.each(t.grep(i.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});i=l.get(n.id+"_"+r);)l.remove(i,1);c&&s&&c.nodeType==s.nodeType&&3==c.nodeType&&!e.opera&&(a=c.nodeValue.length,c.appendData(s.nodeValue),l.remove(s),"start"==r?(f=h=c,p=m=a):(h=c,m=a))}}function s(t){return!l.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='
    '),t}function c(){var e,t;return e=l.createRng(),t=r.resolve(l.getRoot(),n.start),e.setStart(t.container(),t.offset()),t=r.resolve(l.getRoot(),n.end),e.setEnd(t.container(),t.offset()),e}var u,d,f,h,p,m;if(n)if(t.isArray(n.start)){if(u=l.createRng(),d=l.getRoot(),a.tridentSel)return a.tridentSel.moveToBookmark(n);i(!0)&&i()&&a.setRng(u)}else"string"==typeof n.start?a.setRng(c(n)):n.id?(o("start"),o("end"),f&&(u=l.createRng(),u.setStart(s(f),p),u.setEnd(s(h),m),a.setRng(u))):n.name?a.select(l.select(n.name)[n.index]):n.rng&&a.setRng(n.rng)}}var s=o.isContentEditableFalse;return a.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},a}),r(Y,[y,H,F,T,j,_,d,m,$],function(e,n,r,i,o,a,s,l,c){function u(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var d=l.each,f=l.trim,h=s.ie;return u.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="
    "+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='_',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('_'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a,s,l;if(!n.win)return null;if(a=n.win.document,!e&&n.lastFocusBookmark){var c=n.lastFocusBookmark;return c.startContainer?(i=a.createRange(),i.setStart(c.startContainer,c.startOffset),i.setEnd(c.endContainer,c.endOffset)):i=c,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(u){}if(l=n.editor.fire("GetSelectionRange",{range:i}),l.range!==i)return l.range;if(h&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(u){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r,i,o;if(e)if(e.select){n.explicitRange=null;try{e.select()}catch(a){}}else if(n.tridentSel){if(e.cloneRange)try{n.tridentSel.addRange(e)}catch(a){}}else{if(r=n.getSel(),o=n.editor.fire("SetSelectionRange",{range:e}),e=o.range,r){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(a){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||s.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&n.getSel().setBaseAndExtent(i,0,i,1))}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i,o,a,s,l=t.dom.getRoot();return n?(i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r)):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return s.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};d(n.selectorChangedData,function(e,t){d(o,function(n){return i.is(n,t)?(r[t]||(d(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),d(r,function(e,n){a[n]||(delete r[n],d(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){function n(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var r,i,o=this,s=o.dom,l=s.getRoot(),c,u,d=0;if(a.isElement(e)){if(t===!1&&(d=e.offsetHeight),"BODY"!=l.nodeName){var f=o.getScrollContainer();if(f)return r=n(e).y-n(f).y+d,u=f.clientHeight,c=f.scrollTop,void((c>r||r+25>c+u)&&(f.scrollTop=c>r?r:r-u+25))}i=s.getViewPort(o.editor.getWin()),r=s.getPos(e).y+d,c=i.y,u=i.h,(rc+u)&&o.editor.getWin().scrollTo(0,c>r?r:r-u+25)}},placeCaretAt:function(e,t){this.setRng(i.getCaretRangeFromPoint(e,t,this.editor.getDoc()))},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),a=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==f(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(s.ie&&s.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},getBoundingClientRect:function(){var e=this.getRng();return e.collapsed?c.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){this.win=null,this.controlSelection.destroy()}},u}),r(X,[j,m],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&0!==i.indexOf("data-")&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(K,[m],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(G,[p,_,g],function(e,t,n){function r(e,t){var n=o[e];n||(o[e]=n=[]),o[e].push(t)}function i(e,t){s(o[e],function(e){e(t)})}var o=[],a=e.filter,s=e.each;return r("pre",function(r){function i(t){return c(t.previousSibling)&&-1!=e.indexOf(u,t.previousSibling)}function o(e,t){n(t).remove(),n(e).append("

    ").append(t.childNodes)}var l=r.selection.getRng(),c,u;c=t.matchNodeNames("pre"),l.collapsed||(u=r.selection.getSelectedBlocks(),s(a(a(u,c),i),function(e){o(e.previousSibling,e)}))}),{postProcess:i}}),r(J,[y,T,j,X,m,K,G],function(e,t,n,r,i,o,a){return function(s){function l(e){return e.nodeType&&(e=e.nodeName),!!s.schema.getTextBlockElements()[e.toLowerCase()]}function c(e){return/^(TH|TD)$/.test(e.nodeName)}function u(e){return e&&/^(IMG)$/.test(e.nodeName)}function d(e,t){return Y.getParents(e,t,Y.getRoot())}function f(e){return 1===e.nodeType&&"_mce_caret"===e.id}function h(){g({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){ue(n,function(t,n){Y.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),ue("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){g(e,{block:e,remove:"all"})}),g(s.settings.formats)}function p(){s.addShortcut("meta+b","bold_desc","Bold"),s.addShortcut("meta+i","italic_desc","Italic"),s.addShortcut("meta+u","underline_desc","Underline");for(var e=1;6>=e;e++)s.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);s.addShortcut("access+7","",["FormatBlock",!1,"p"]),s.addShortcut("access+8","",["FormatBlock",!1,"div"]),s.addShortcut("access+9","",["FormatBlock",!1,"address"])}function m(e){return e?j[e]:j}function g(e,t){e&&("string"!=typeof e?ue(e,function(e,t){g(t,e)}):(t=t.length?t:[t],ue(t,function(e){e.deep===oe&&(e.deep=!e.selector),e.split===oe&&(e.split=!e.selector||e.inline),e.remove===oe&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),j[e]=t))}function v(e){return e&&j[e]&&delete j[e],j}function y(e,t){var n=m(t);if(n)for(var r=0;r0)return r;if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}}var n=s.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var a=t(i,o),l=3==a.nodeType?a.data.length:a.childNodes.length;n.setEnd(a,l)}return n}function c(e,r,o){var a=[],s,c,h=!0;s=d.inline||d.block,c=Y.create(s),i(c),K.walk(e,function(e){function r(e){var m,v,y,b,C;return C=h,m=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&ae(e)&&(C=h,h="true"===ae(e),b=!0),B(m,"br")?(p=0,void(d.block&&Y.remove(e))):d.wrapper&&E(e,t,n)?void(p=0):h&&!b&&d.block&&!d.wrapper&&l(m)&&G(v,s)?(e=Y.rename(e,s),i(e),a.push(e),void(p=0)):d.selector&&(ue(u,function(t){return"collapsed"in t&&t.collapsed!==g?void 0:Y.is(e,t.selector)&&!f(e)?(i(e,t),y=!0,!1):void 0}),!d.inline||y)?void(p=0):void(!h||b||!G(s,m)||!G(v,s)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||f(e)||d.inline&&J(e)?(p=0,ue(de(e.childNodes),r),b&&(h=C),p=0):(p||(p=Y.clone(c,ne),e.parentNode.insertBefore(p,e),a.push(p)),p.appendChild(e)))}var p;ue(e,r)}),d.links===!0&&ue(a,function(e){function t(e){"A"===e.nodeName&&i(e,d),ue(de(e.childNodes),t)}t(e)}),ue(a,function(e){function r(e){var t=0;return ue(e.childNodes,function(e){P(e)||ce(e)||t++}),t}function o(e){var t,n;return ue(e.childNodes,function(e){return 1!=e.nodeType||ce(e)||f(e)?void 0:(t=e,ne)}),t&&!ce(t)&&A(t,d)&&(n=Y.clone(t,ne),i(n),Y.replace(n,e,re),Y.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!J(e))&&0===s)return void Y.remove(e,1);if(d.inline||d.wrapper){if(d.exact||1!==s||(e=o(e)),ue(u,function(t){ue(Y.select(t.inline,e),function(e){ce(e)||F(t,n,e,t.exact?e:null)})}),E(e.parentNode,t,n))return Y.remove(e,1),e=0,re;d.merge_with_parents&&Y.getParent(e.parentNode,function(r){return E(r,t,n)?(Y.remove(e,1),e=0,re):void 0}),e&&d.merge_siblings!==!1&&(e=W(U(e),e),e=W(e,U(e,re)))}})}var u=m(t),d=u[0],h,p,g=!r&&X.isCollapsed();if("false"!==ae(X.getNode())){if(d){if(r)r.nodeType?(p=Y.createRng(),p.setStartBefore(r),p.setEndAfter(r),c(H(p,u),null,!0)):c(r,null,!0);else if(g&&d.inline&&!Y.select("td[data-mce-selected],th[data-mce-selected]").length)$("apply",t,n);else{var v=s.selection.getNode();Q||!u[0].defaultBlock||Y.getParent(v,Y.isBlock)||x(u[0].defaultBlock),s.selection.setRng(o()),h=X.getBookmark(),c(H(X.getRng(re),u),h),d.styles&&(d.styles.color||d.styles.textDecoration)&&(fe(v,C,"childNodes"),C(v)),X.moveToBookmark(h),q(X.getRng(re)),s.nodeChanged()}a.postProcess(t,s)}}else{r=X.getNode();for(var y=0,b=u.length;b>y;y++)if(u[y].ceFalseOverride&&Y.is(r,u[y].selector))return void i(r,u[y])}}function w(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&ae(e)&&(a=y,y="true"===ae(e),s=!0),n=de(e.childNodes),y&&!s)for(r=0,o=h.length;o>r&&!F(h[r],t,e,e);r++);if(p.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(y=a)}}function o(n){var i;return ue(d(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=E(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function a(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode, +o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=Y.clone(o,ne),c=0;cC&&(!h[C].ceFalseOverride||!F(h[C],t,n,n));C++);}}function N(e,t,n){var r=m(e);!_(e,t,n)||"toggle"in r[0]&&!r[0].toggle?x(e,t,n):w(e,t,n)}function E(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===oe){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?Y.getAttrib(e,o):D(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!B(a,L(M(s[o],n),o)))return}}else for(l=0;l=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return re;for(i=r.length-1;i>=0;i--)if(Y.is(r[i],a))return re}return ne}function T(e,t,n){var r;return ie||(ie={},r={},s.on("NodeChange",function(e){var t=d(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),ue(ie,function(e,i){ue(t,function(o){return E(o,i,{},e.similar)?(r[i]||(ue(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):y(o,i)?!1:void 0})}),ue(r,function(i,o){n[o]||(delete r[o],ue(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),ue(e.split(","),function(e){ie[e]||(ie[e]=[],ie[e].similar=n),ie[e].push(t)}),this}function R(e){return o.getCssText(s,e)}function A(e,t){return B(e,t.inline)?re:B(e,t.block)?re:t.selector?1==e.nodeType&&Y.is(e,t.selector):void 0}function B(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function D(e,t){return L(Y.getStyle(e,t),t)}function L(e,t){return"color"!=t&&"backgroundColor"!=t||(e=Y.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function M(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function P(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function O(e,t,n){var r=Y.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function H(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=Y.getRoot(),3==r.nodeType&&!P(r)&&(e?v>0:bo?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var a,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(a=new e(t,Y.getParent(t,J)||s.getBody());l=a[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(J(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function u(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=d(e),o=0;oh?h:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(h=y.childNodes.length-1,y=y.childNodes[b>h?h:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=a(g),y=a(y),(ce(g.parentNode)||ce(g))&&(g=ce(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(ce(y.parentNode)||ce(y))&&(y=ce(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=c(g,v,!0),m&&(g=m.container,v=m.offset),m=c(y,b),m&&(y=m.container,b=m.offset)),p=o(y,b),p.node)){for(;p.node&&0===p.offset&&p.node.previousSibling;)p=o(p.node.previousSibling);p.node&&p.offset>0&&3===p.node.nodeType&&" "===p.node.nodeValue.charAt(p.offset-1)&&p.offset>1&&(y=p.node,y.splitText(p.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==ne&&!n[0].inline&&(g=u(g,"previousSibling"),y=u(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(J(g)||(g=i(!0)),J(y)||(y=i()))),1==g.nodeType&&(v=Z(g),g=g.parentNode),1==y.nodeType&&(b=Z(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function I(e,t){return t.links&&"A"==e.tagName}function F(e,t,n,r){var i,o,a;if(!A(n,e)&&!I(n,e))return ne;if("all"!=e.remove)for(ue(e.styles,function(i,o){i=L(M(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||B(D(r,o),i))&&Y.setStyle(n,o,""),a=1}),a&&""===Y.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),ue(e.attributes,function(e,i){var o;if(e=M(e,t),"number"==typeof i&&(i=e,r=0),!r||B(Y.getAttrib(r,i),e)){if("class"==i&&(e=Y.getAttrib(n,i),e&&(o="",ue(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void Y.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),te.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),ue(e.classes,function(e){e=M(e,t),r&&!Y.hasClass(r,e)||Y.removeClass(n,e)}),o=Y.getAttribs(n),i=0;io?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,s.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,s.getBody()).prev()||r),r}function $(t,n,r,i){function o(e){var t=Y.create("span",{id:g,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(s.getDoc().createTextNode(ee)),t}function a(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==ee||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=X.getRng(!0),a(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),Y.remove(e)):(n=u(e),n.nodeValue.charAt(0)===ee&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),Y.remove(e,1)),X.setRng(r);else if(e=c(X.getStart()),!e)for(;e=Y.get(g);)d(e,!1)}function f(){var e,t,i,a,s,l,d;e=X.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(X.getStart()),t&&(i=u(t)),d&&a>0&&a=0;h--)u.appendChild(Y.clone(f[h],!1)),u=u.firstChild;u.appendChild(Y.doc.createTextNode(ee)),u=u.firstChild;var g=Y.getParent(d,l);g&&Y.isEmpty(g)?d.parentNode.replaceChild(p,d):Y.insertAfter(p,d),X.setCursorLocation(u,1),Y.isEmpty(d)&&Y.remove(d)}}function p(){var e;e=c(X.getStart()),e&&!Y.isEmpty(e)&&fe(e,function(e){1!=e.nodeType||e.id===g||Y.isEmpty(e)||Y.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var g="_mce_caret",v=s.settings.caret_debug;s._hasCaretEvents||(le=function(){var e=[],t;if(a(c(X.getStart()),e))for(t=e.length;t--;)Y.setAttrib(e[t],"data-mce-bogus","1")},se=function(e){var t=e.keyCode;d(),8==t&&X.isCollapsed()&&X.getStart().innerHTML==ee&&d(c(X.getStart())),37!=t&&39!=t||d(c(X.getStart())),p()},s.on("SetContent",function(e){e.selection&&p()}),s._hasCaretEvents=!0),"apply"==t?f():h()}function q(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!u(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=Z(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,Y.getParent(n,Y.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!P(a))return l=Y.create("a",{"data-mce-bogus":"all"},ee),a.parentNode.insertBefore(l,a),t.setStart(a,0),X.setRng(t),void Y.remove(l)}var j={},Y=s.dom,X=s.selection,K=new t(Y),G=s.schema.isValidChild,J=Y.isBlock,Q=s.settings.forced_root_block,Z=Y.nodeIndex,ee="\ufeff",te=/^(src|href|style)$/,ne=!1,re=!0,ie,oe,ae=Y.getContentEditable,se,le,ce=n.isBookmarkNode,ue=i.each,de=i.grep,fe=i.walk,he=i.extend;he(this,{get:m,register:g,unregister:v,apply:x,remove:w,toggle:N,match:_,matchAll:S,matchNode:E,canApply:k,formatChanged:T,getCssText:R}),h(),p(),s.on("BeforeGetContent",function(e){le&&"raw"!=e.format&&le()}),s.on("mouseup keydown",function(e){se&&se(e)})}}),r(Q,[I,d],function(e,t){return function(e){function n(){return e.serializer.getTrimmedContent()}function r(t){e.setDirty(t)}function i(e){o.typing=!1,o.add({},e)}var o=this,a=0,s=[],l,c,u=0;return e.on("init",function(){o.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&o.beforeChange()}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&i(e)}),e.on("ObjectResizeStart Cut",function(){o.beforeChange()}),e.on("SaveContent ObjectResized blur",i),e.on("DragEnd",i),e.on("KeyUp",function(a){var l=a.keyCode;a.isDefaultPrevented()||((l>=33&&36>=l||l>=37&&40>=l||45==l||13==l||a.ctrlKey)&&(i(),e.nodeChanged()),(46==l||8==l||t.mac&&(91==l||93==l))&&e.nodeChanged(),c&&o.typing&&(e.isDirty()||(r(s[0]&&n()!=s[0].content),e.isDirty()&&e.fire("change",{level:s[0],lastLevel:null})),e.fire("TypingUndo"),c=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&36>=t||t>=37&&40>=t||45==t)return void(o.typing&&i(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(16>t||t>20)||224==t||91==t||o.typing||n||(o.beforeChange(),o.typing=!0,o.add({},e),c=!0)}}),e.on("MouseDown",function(e){o.typing&&i(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),o={data:s,typing:!1,beforeChange:function(){u||(l=e.selection.getBookmark(2,!0))},add:function(t,i){var o,c=e.settings,d;if(t=t||{},t.content=n(),u||e.removed)return null;if(d=s[a],e.fire("BeforeAddUndo",{level:t,lastLevel:d,originalEvent:i}).isDefaultPrevented())return null;if(d&&d.content==t.content)return null;if(s[a]&&(s[a].beforeBookmark=l),c.custom_undo_redo_levels&&s.length>c.custom_undo_redo_levels){for(o=0;o0&&(r(!0),e.fire("change",f)),t},undo:function(){var t;return o.typing&&(o.add(),o.typing=!1),a>0&&(t=s[--a],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.beforeBookmark),r(!0),e.fire("undo",{level:t})),t},redo:function(){var t;return a0||o.typing&&s[0]&&n()!=s[0].content},hasRedo:function(){return aP)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function y(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function b(e){e.innerHTML=r?"":'
    '}function C(e){var t=D,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==z?(n=a.create(e||W),y(n)):n=M.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while((t=t.parentNode)&&t!=B);return r||(o.innerHTML='
    '),n}function x(t){var n,r,i;if(3==D.nodeType&&(t?L>0:LD.childNodes.length-1,D=D.childNodes[Math.min(L,D.childNodes.length-1)]||D,L=V&&3==D.nodeType?D.nodeValue.length:0),B=S(D)){if(c.beforeChange(),!a.isBlock(B)&&B!=a.getRoot())return void(W&&!O||E());if((W&&!O||!W&&O)&&(D=w(D,L)),M=a.getParent(D,a.isBlock),F=M?a.getParent(M.parentNode,a.isBlock):null,z=M?M.nodeName.toUpperCase():"",U=F?F.nodeName.toUpperCase():"","LI"!=U||o.ctrlKey||(M=F,z=U),/^(LI|DT|DD)$/.test(z)){if(!W&&O)return void E();if(a.isEmpty(M))return void N()}if("PRE"==z&&l.br_in_pre!==!1){if(!O)return void E()}else if(!W&&!O&&"LI"!=z||W&&O)return void E();W&&M===i.getBody()||(W=W||"P",x()?T():x(!0)?(H=M.parentNode.insertBefore(C(),M),m(H),v(M)):(A=R.cloneRange(),A.setEndAfter(M),I=A.extractContents(),_(I),H=I.firstChild,a.insertAfter(I,M),g(H),k(M),a.isEmpty(M)&&b(M),H.normalize(),a.isEmpty(H)?(a.remove(H),T()):v(H)),a.setAttrib(H,"id",""),i.fire("NewBlock",{newBlock:H}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements(),f=u.getMoveCaretBeforeOnEnterElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(ee,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,h,p,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){p=t,t=t.nextSibling,r.remove(p);continue}h||(h=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(h,t),g=!0),p=t,t=t.nextSibling,h.appendChild(p)}else h=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(te,[z,y,_,$,k,U],function(e,t,n,r,i,o){function a(e){return e>0}function s(e){return 0>e}function l(e,n,r,i,o){var l=new t(e,i);if(s(n)){if(C(e)&&(e=l.prev(!0),r(e)))return e;for(;e=l.prev(o);)if(r(e))return e}if(a(n)){if(C(e)&&(e=l.next(!0),r(e)))return e;for(;e=l.next(o);)if(r(e))return e}return null}function c(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode)if(b(e))return e;return t}function u(e,t){for(;e&&e!=t;){if(x(e))return e;e=e.parentNode}return null}function d(e,t,n){return u(e.container(),n)==u(t.container(),n)}function f(e,t,n){return c(e.container(),n)==c(t.container(),n)}function h(e,t){var n,r;return t?(n=t.container(),r=t.offset(),E(n)?n.childNodes[r+e]:null):null}function p(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function m(e,t,n){return u(t,e)==u(n,e)}function g(e,t,n){var r,i;for(i=e?"previousSibling":"nextSibling";n&&n!=t;){if(r=n[i],w(r)&&(r=r[i]),C(r)){if(m(t,r,n))return r;break}if(_(r))break;n=n.parentNode}return null}function v(e,t,r){var o,a,s,l,c=N(g,!0,t),u=N(g,!1,t);if(a=r.startContainer,s=r.startOffset,i.isCaretContainerBlock(a)){if(E(a)||(a=a.parentNode),l=a.getAttribute("data-mce-caret"),"before"==l&&(o=a.nextSibling,C(o)))return S(o);if("after"==l&&(o=a.previousSibling,C(o)))return k(o)}if(!r.collapsed)return r;if(n.isText(a)){if(w(a)){if(1===e){if(o=u(a))return S(o);if(o=c(a))return k(o)}if(-1===e){if(o=c(a))return k(o);if(o=u(a))return S(o)}return r}if(i.endsWithCaretContainer(a)&&s>=a.data.length-1)return 1===e&&(o=u(a))?S(o):r;if(i.startsWithCaretContainer(a)&&1>=s)return-1===e&&(o=c(a))?k(o):r;if(s===a.data.length)return o=u(a),o?S(o):r;if(0===s)return o=c(a),o?k(o):r}return r}function y(e,t){return C(h(e,t))}var b=n.isContentEditableTrue,C=n.isContentEditableFalse,x=n.matchStyleValues("display","block table table-cell table-caption"),w=i.isCaretContainer,N=e.curry,E=n.isElement,_=o.isCaretCandidate,S=N(p,!0),k=N(p,!1);return{isForwards:a,isBackwards:s,findNode:l,getEditingHost:c,getParentBlock:u,isInSameBlock:d,isInSameEditingHost:f,isBeforeContentEditableFalse:N(y,0),isAfterContentEditableFalse:N(y,-1),normalizeRange:v}}),r(ne,[_,U,$,te,p,z],function(e,t,n,r,i,o){function a(e,t){for(var n=[];e&&e!=t;)n.push(e),e=e.parentNode;return n}function s(e,t){return e.hasChildNodes()&&t0)return n(C,--x);if(m(e)&&x0&&(N=s(C,x-1),v(N)))return!y(N)&&(E=r.findNode(N,e,b,N))?f(E)?n(E,E.data.length):n.after(E):f(N)?n(N,N.data.length):n.before(N);if(m(e)&&x0&&s(e[e.length-1])?e.slice(0,-1):e},c=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},u=function(e,t){return!!c(e,t)},d=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]},f=function(e,r){var i=n.before(e),o=new t(r),a=o.next(i);return a?a.toRange():null},h=function(e,r){var i=n.after(e),o=new t(r),a=o.prev(i);return a?a.toRange():null},p=function(t,n,r,i){var o=d(t,i),a=t.parentNode;return a.insertBefore(o[0],t),e.each(n,function(e){a.insertBefore(e,t)}),a.insertBefore(o[1],t),a.removeChild(t),h(n[n.length-1],r)},m=function(t,n,r){var i=t.parentNode;return e.each(n,function(e){i.insertBefore(e,t)}),f(t,r)},g=function(e,t,n,r){return r.insertAfter(t.reverse(),e),h(t[0],n)},v=function(e,r,i,s){var u=o(r,e,s),d=c(r,i.startContainer),f=l(a(u.firstChild)),h=1,v=2,y=r.getRoot(),b=function(e){var o=n.fromRangeStart(i),a=new t(r.getRoot()),s=e===h?a.prev(o):a.next(o);return s?c(r,s.getNode())!==d:!0};return b(h)?m(d,f,y):b(v)?g(d,f,y,r):p(d,f,y,i)};return{isListFragment:r,insertAtCaret:v,isParentBlockLi:u,trimListItems:l,listItems:a}}),r(ie,[d,m,P,ne,$,X,_,re],function(e,t,n,r,i,o,a,s){var l=a.matchNodeNames("td th"),c=function(a,c,u){function d(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=D.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^ /," "):t("previousSibling")||(e=e.replace(/^ /," ")),i|)$/," "):t("nextSibling")||(e=e.replace(/( | )(
    |)$/," "))),e}function f(){var e,t,n;e=D.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(c)||(c+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(c)||(c=" "+c)))}function h(){if(A){var e=a.getBody(),n=new o(L);t.each(L.select("*[data-mce-fragment]"),function(t){for(var r=t.parentNode;r&&r!=e;r=r.parentNode)B[t.nodeName.toLowerCase()]&&n.compare(r,t)&&L.remove(t,!0)})}}function p(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}function m(e){t.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}function g(e){return!!e.getAttribute("data-mce-fragment")}function v(e){return e&&!a.schema.getShortEndedElements()[e.nodeName]}function y(t){function n(e){for(var t=a.getBody();e&&e!==t;e=e.parentNode)if("false"===a.dom.getContentEditable(e))return e;return null}function o(e){var t=i.fromRangeStart(e),n=new r(a.getBody());return t=n.next(t),t?t.toRange():void 0}var s,c,u;if(t){if(D.scrollIntoView(t),s=n(t))return L.remove(t),void D.select(s);S=L.createRng(),k=t.previousSibling,k&&3==k.nodeType?(S.setStart(k,k.nodeValue.length),e.ie||(T=t.nextSibling,T&&3==T.nodeType&&(k.appendData(T.data),T.parentNode.removeChild(T)))):(S.setStartBefore(t),S.setEndBefore(t)),c=L.getParent(t,L.isBlock),L.remove(t),c&&L.isEmpty(c)&&(a.$(c).empty(),S.setStart(c,0),S.setEnd(c,0),l(c)||g(c)||!(u=o(S))?L.add(c,L.create("br",{"data-mce-bogus":"1"})):(S=u,L.remove(c))),D.setRng(S)}}var b,C,x,w,N,E,_,S,k,T,R,A,B=a.schema.getTextInlineElements(),D=a.selection,L=a.dom;/^ | $/.test(c)&&(c=d(c)),b=a.parser,A=u.merge,C=new n({validate:a.settings.validate},a.schema),R='​',E={content:c,format:"html",selection:!0},a.fire("BeforeSetContent",E),c=E.content,-1==c.indexOf("{$caret}")&&(c+="{$caret}"),c=c.replace(/\{\$caret\}/,R),S=D.getRng();var M=S.startContainer||(S.parentElement?S.parentElement():null),P=a.getBody();M===P&&D.isCollapsed()&&L.isBlock(P.firstChild)&&v(P.firstChild)&&L.isEmpty(P.firstChild)&&(S=L.createRng(),S.setStart(P.firstChild,0),S.setEnd(P.firstChild,0),D.setRng(S)),D.isCollapsed()||(a.selection.setRng(a.selection.getRng()),a.getDoc().execCommand("Delete",!1,null), +f()),x=D.getNode();var O={context:x.nodeName.toLowerCase(),data:u.data};if(N=b.parse(c,O),u.paste===!0&&s.isListFragment(N)&&s.isParentBlockLi(L,x))return S=s.insertAtCaret(C,L,a.selection.getRng(!0),N),a.selection.setRng(S),void a.fire("SetContent",E);if(p(N),k=N.lastChild,"mce_marker"==k.attr("id"))for(_=k,k=k.prev;k;k=k.walk(!0))if(3==k.type||!L.isBlock(k.name)){a.schema.isValidChild(k.parent.name,"span")&&k.parent.insert(_,k,"br"===k.name);break}if(a._selectionOverrides.showBlockCaretContainer(x),O.invalid){for(D.setContent(R),x=D.getNode(),w=a.getBody(),9==x.nodeType?x=k=w:k=x;k!==w;)x=k,k=k.parentNode;c=x==w?w.innerHTML:L.getOuterHTML(x),c=C.serialize(b.parse(c.replace(//i,function(){return C.serialize(N)}))),x==w?L.setHTML(w,c):L.setOuterHTML(x,c)}else c=C.serialize(N),k=x.firstChild,T=x.lastChild,!k||k===T&&"BR"===k.nodeName?L.setHTML(x,c):D.setContent(c);h(),y(L.get("mce_marker")),m(a.getBody()),a.fire("SetContent",E),a.addVisual()},u=function(e){var n;return"string"!=typeof e?(n=t.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:n}):{content:e,details:{}}},d=function(e,t){var n=u(t);c(e,n.content,n.details)};return{insertAtCaret:d}}),r(oe,[d,m,T,y,ie],function(e,n,r,i,o){var a=n.each,s=n.extend,l=n.map,c=n.inArray,u=n.explode,d=e.ie&&e.ie<11,f=!0,h=!1;return function(n){function p(e,t,r,i){var o,s,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||n.focus(),i=n.fire("BeforeExecCommand",{command:e,ui:t,value:r}),i.isDefaultPrevented())return!1;if(s=e.toLowerCase(),o=B.exec[s])return o(s,t,r),n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;if(a(n.plugins,function(i){return i.execCommand&&i.execCommand(e,t,r)?(n.fire("ExecCommand",{command:e,ui:t,value:r}),l=!0,!1):void 0}),l)return l;if(n.theme&&n.theme.execCommand&&n.theme.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;try{l=n.getDoc().execCommand(e,t,r)}catch(c){}return l?(n.fire("ExecCommand",{command:e,ui:t,value:r}),!0):!1}function m(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=B.state[e])return t(e);try{return n.getDoc().queryCommandState(e)}catch(r){}return!1}}function g(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=B.value[e])return t(e);try{return n.getDoc().queryCommandValue(e)}catch(r){}}}function v(e,t){t=t||"exec",a(e,function(e,n){a(n.toLowerCase().split(","),function(n){B[t][n]=e})})}function y(e,t,r){e=e.toLowerCase(),B.exec[e]=function(e,i,o,a){return t.call(r||n,i,o,a)}}function b(e){if(e=e.toLowerCase(),B.exec[e])return!0;try{return n.getDoc().queryCommandSupported(e)}catch(t){}return!1}function C(e,t,r){e=e.toLowerCase(),B.state[e]=function(){return t.call(r||n)}}function x(e,t,r){e=e.toLowerCase(),B.value[e]=function(){return t.call(r||n)}}function w(e){return e=e.toLowerCase(),!!B.exec[e]}function N(e,r,i){return r===t&&(r=h),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function E(e){return A.match(e)}function _(e,r){A.toggle(e,r?{value:r}:t),n.nodeChanged()}function S(e){L=R.getBookmark(e)}function k(){R.moveToBookmark(L)}var T,R,A,B={state:{},exec:{},value:{}},D=n.settings,L;n.on("PreInit",function(){T=n.dom,R=n.selection,D=n.settings,A=n.formatter}),s(this,{execCommand:p,queryCommandState:m,queryCommandValue:g,queryCommandSupported:b,addCommands:v,addCommand:y,addQueryStateHandler:C,addQueryValueHandler:x,hasCustomCommand:w}),v({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(t){var r=n.getDoc(),i;try{N(t)}catch(o){i=f}if("paste"!==t||r.queryCommandEnabled(t)||(i=!0),i||!r.queryCommandSupported(t)){var a=n.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");e.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),n.notificationManager.open({text:a,type:"error"})}},unlink:function(){if(R.isCollapsed()){var e=R.getNode();return void("A"==e.tagName&&n.dom.remove(e,!0))}A.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),a("left,center,right,justify".split(","),function(e){t!=e&&A.remove("align"+e)}),"none"!=t&&_("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;N(e),t=T.getParent(R.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(S(),T.split(n,t),k()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){_(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){_(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=u(D.font_size_style_values),r=u(D.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),_(e,n)},RemoveFormat:function(e){A.remove(e)},mceBlockQuote:function(){_("blockquote")},FormatBlock:function(e,t,n){return _(n||"p")},mceCleanup:function(){var e=R.getBookmark();n.setContent(n.getContent({cleanup:f}),{cleanup:f}),R.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var i=r||R.getNode();i!=n.getBody()&&(S(),n.dom.remove(i,f),k())},mceSelectNodeDepth:function(e,t,r){var i=0;T.getParent(R.getNode(),function(e){return 1==e.nodeType&&i++==r?(R.select(e),h):void 0},n.getBody())},mceSelectNode:function(e,t,n){R.select(n)},mceInsertContent:function(e,t,r){o.insertAtCaret(n,r)},mceInsertRawHTML:function(e,t,r){R.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return r}))},mceToggleFormat:function(e,t,n){_(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var t,r,i;t=D.indentation,r=/[a-z%]+$/i.exec(t),t=parseInt(t,10),m("InsertUnorderedList")||m("InsertOrderedList")?N(e):(D.forced_root_block||T.getParent(R.getNode(),T.isBlock)||A.apply("div"),a(R.getSelectedBlocks(),function(o){if("false"!==T.getContentEditable(o)&&"LI"!=o.nodeName){var a=n.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==T.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),T.setStyle(o,a,i?i+r:"")):(i=parseInt(o.style[a]||0,10)+t+r,T.setStyle(o,a,i))}}))},mceRepaint:function(){},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"
    ")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,R.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=T.getParent(R.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||A.remove("link"),n.href&&A.apply("link",n,r)},selectAll:function(){var e=T.getRoot(),t;R.getRng().setStart?(t=T.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),R.setRng(t)):(t=R.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){N("Delete");var e=n.getBody();T.isEmpty(e)&&(n.setContent(""),e.firstChild&&T.isBlock(e.firstChild)?n.selection.setCursorLocation(e.firstChild,0):n.selection.setCursorLocation(e,0))},mceNewDocument:function(){n.setContent("")},InsertLineBreak:function(e,t,o){function a(){for(var e=new i(m,v),t,r=n.schema.getNonEmptyElements();t=e.next();)if(r[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=o,l,c,u,h=R.getRng(!0);new r(T).normalize(h);var p=h.startOffset,m=h.startContainer;if(1==m.nodeType&&m.hasChildNodes()){var g=p>m.childNodes.length-1;m=m.childNodes[Math.min(p,m.childNodes.length-1)]||m,p=g&&3==m.nodeType?m.nodeValue.length:0}var v=T.getParent(m,T.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?T.getParent(v.parentNode,T.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),m&&3==m.nodeType&&p>=m.nodeValue.length&&(d||a()||(l=T.create("br"),h.insertNode(l),h.setStartAfter(l),h.setEndAfter(l),c=!0)),l=T.create("br"),h.insertNode(l);var w=T.doc.documentMode;return d&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(T.doc.createTextNode("\r"),l),u=T.create("span",{}," "),l.parentNode.insertBefore(u,l),R.scrollIntoView(u),T.remove(u),c?(h.setStartBefore(l),h.setEndBefore(l)):(h.setStartAfter(l),h.setEndAfter(l)),R.setRng(h),n.undoManager.add(),f}}),v({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=R.isCollapsed()?[T.getParent(R.getNode(),T.isBlock)]:R.getSelectedBlocks(),r=l(n,function(e){return!!A.matchNode(e,t)});return-1!==c(r,f)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return E(e)},mceBlockQuote:function(){return E("blockquote")},Outdent:function(){var e;if(D.inline_styles){if((e=T.getParent(R.getStart(),T.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return f;if((e=T.getParent(R.getEnd(),T.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return f}return m("InsertUnorderedList")||m("InsertOrderedList")||!D.inline_styles&&!!T.getParent(R.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=T.getParent(R.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),v({"FontSize,FontName":function(e){var t=0,n;return(n=T.getParent(R.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),v({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(ae,[m],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.lengtho;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},t}),r(se,[m],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&c[d]?u[d]=s(d,f):u[d]=f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r(le,[m],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,c;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=u),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;l>s;s++){if(c=o[s],c.once&&a(e,c.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(c.func.call(u,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return c}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return c}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var c=this,u,d={},f;t=t||{},u=t.scope||c,f=t.toggleEvent||n,c.fire=i,c.on=o,c.off=a,c.once=s,c.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(ce,[],function(){function e(e){this.create=e.create}return e.create=function(t,n){return new e({create:function(e,r){function i(t){e.set(r,t.value)}function o(e){t.set(n,e.value)}var a;return e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(ue,[le],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(de,[ce,ue,se,m],function(e,t,n,r){function i(e){return e.nodeType>0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(fe,[se],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.pseudo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,h,p;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,p=e,h=0,i=o-1;i>=0;i--)for(c=a[i];p;){if(c.pseudo)for(f=p.parent().items(),u=d=f.length;u--&&f[u]!==p;);for(s=0,l=c.length;l>s;s++)if(!c[s](p,u,d)){s=l+1;break}if(s===l){h++;break}if(i===o-1)break;p=p.parent()}if(h===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(he,[m,fe,se],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].classes.contains(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show hide append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(pe,[d,m,w],function(e,t,n){var r=0,i={id:function(){return"mceu_"+r++},create:function(e,r,i){var o=document.createElement(e);return n.DOM.setAttribs(o,r),"string"==typeof i?o.innerHTML=i:t.each(i,function(e){e.nodeType&&o.appendChild(e)}),o},createFragment:function(e){return n.DOM.createFragment(e)},getWindowSize:function(){return n.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return n.DOM.getPos(e,t||i.getContainer())},getContainer:function(){return e.container?e.container:document.body},getViewPort:function(e){return n.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return n.DOM.addClass(e,t)},removeClass:function(e,t){return n.DOM.removeClass(e,t)},hasClass:function(e,t){return n.DOM.hasClass(e,t)},toggleClass:function(e,t,r){return n.DOM.toggleClass(e,t,r)},css:function(e,t,r){return n.DOM.setStyle(e,t,r)},getRuntimeStyle:function(e,t){return n.DOM.getStyle(e,t,!0)},on:function(e,t,r,i){return n.DOM.bind(e,t,r,i)},off:function(e,t,r){return n.DOM.unbind(e,t,r)},fire:function(e,t,r){return n.DOM.fire(e,t,r)},innerHtml:function(e,t){n.DOM.setHTML(e,t)}};return i}),r(me,[],function(){return{parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(ge,[m],function(e){function t(){}function n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return e.extend(n.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var t=0;t0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(ve,[u],function(e){var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e.requestAnimationFrame(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(ye,[se,m,le,de,he,pe,g,me,ge,ve],function(e,t,n,r,i,o,a,s,l,c){function u(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=c._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),c._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=c._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(c._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;oo;o++)c=l[o]._eventsRoot;for(c||(c=l[l.length-1]||e),e._eventsRoot=c,s=o,o=0;s>o;o++)l[o]._eventsRoot=c;var p=c._delegates;p||(p=c._delegates={});for(d in u){if(!u)return!1;"wheel"!==d||h?("mouseenter"===d||"mouseleave"===d?c._hasMouseEnter||(a(c.getEl()).on("mouseleave",n).on("mouseover",r),c._hasMouseEnter=1):p[d]||(a(c.getEl()).on(d,t),p[d]=!0),u[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var f="onmousewheel"in document,h=!1,p="mce-",m,g=0,v={Statics:{classPrefix:p},isRtl:function(){return m.rtl},classPrefix:p,init:function(e){function n(e){var t;for(e=e.split(" "),t=0;tn.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=in.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=in.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=in.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,r.x===n.x&&r.y===n.y&&r.w===n.w&&r.h===n.h||(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a,s,l,c,u;c=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=c(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=c(i.y)+"px",l.y=i.y),i.w!==l.w&&(u=c(i.w-a),t.width=(u>=0?u:0)+"px",l.w=i.w),i.h!==l.h&&(u=c(i.h-s),t.height=(u>=0?u:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(u=c(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(u>=0?u:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(u=c(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(u>=0?u:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,o.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return u(r).on(e,n(t)),r},off:function(e,t){return u(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=u(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return u(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i; +if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'
    '},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var u in e._aria)e.aria(u,e._aria[u]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),c.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){c.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(be,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(Ce,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||C,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||C;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=C;return t(n)?n.getAttribute("aria-"+e):void 0}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t||"SELECT"==t}function a(e){return o(e)&&!e.hidden?!0:!!/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(n(e))}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){a(e)&&n.push(e);for(var r=0;re?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t=0&&t
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(we,[g],function(e){function t(e){var t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}function n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n").css({position:"absolute",top:0,left:0,width:c.width,height:c.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",u),i.start(r)},d=function(e){return n(e),e.button!==l?u(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-h,e.preventDefault(),void i.drag(e))},u=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",u),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",c)}}),r(Ne,[g,we],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,h,p,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!c)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),h=i.getEl("scroll"+t+"t"),p=d["client"+s]-2*o,p-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=p/m,v={},v[y]=d["offset"+a]+o,v[b]=p,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=p*g,e(h).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('
    '),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e("#"+u).addClass(d+"active")},drag:function(e){var t,u,d,f,h=i.layoutRect();u=h.contentW>h.innerW,d=h.contentH>h.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e("#"+u).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(Ee,[xe,Ne],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='
    '+t.renderHtml(e)+"
    ":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'
    '+(e._preBodyHtml||"")+n+"
    "}})}),r(_e,[pe],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,h;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),h=e.getSize(i),l=h.width,c=h.height,h=e.getSize(n),u=h.width,d=h.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o0&&a.x+a.w0&&a.y+a.hi.x&&a.x+a.wi.y&&a.y+a.he?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Se,[pe],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(ke,[Ee,_e,Se,pe,g,u],function(e,t,n,r,i,o){function a(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function s(e){for(var t=v.length;t--;){var n=v[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(a(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function l(){p||(p=function(e){2!=e.button&&s(e)},i(document).on("click touchstart",p))}function c(){m||(m=function(){var e;for(e=v.length;e--;)d(v[e])},i(window).on("scroll",m))}function u(){if(!g){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;g=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,C.hideAll())},i(window).on("resize",g)}}function d(e){function t(t,n){for(var r,i=0;in&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY
    ').appendTo(t.getContainerElm())),o.setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")}),b=!0),f(!0,t)}}),t.on("show",function(){t.parents().each(function(e){return e.state.get("fixed")?(t.fixed(!0),!1):void 0})}),e.popover&&(t._preBodyHtml='
    ',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=v.length;t--&&v[t]!==e;);return-1===t&&v.push(e),n},hide:function(){return h(this),f(!1,this),this._super()},hideAll:function(){C.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),f(!1,e)),e},remove:function(){h(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return C.hideAll=function(){for(var e=v.length;e--;){var t=v[e];t&&t.settings.autohide&&(t.hide(),v.splice(e,1))}},C}),r(Te,[ke,Ee,pe,g,we,me,d,u],function(e,t,n,r,i,o,a,s){function l(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof f&&(f=i),n.setAttribute("content",e?t:f))}function c(e){for(var t=0;tr.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='
    '+e.encode(i.title)+'
    '),i.url&&(s=''),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'
    '+o+'
    '+s+"
    "+a+"
    "},fullscreen:function(e){var t=this,i=document.documentElement,a,l=t.classPrefix,c;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=s.setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),c=t.layoutRect(),t._fullscreen=e,e){t._initial={x:c.x,y:c.y,w:c.w,h:c.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",c.deltaH-=c.headerH+2,r([i,document.body]).addClass(l+"fullscreen"),t.classes.add("fullscreen");var u=n.getWindowSize();t.moveTo(0,0).resizeTo(u.w,u.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",c.deltaH+=c.headerH,r([i,document.body]).removeClass(l+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),d.push(e),l(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),t=d.length;t--;)d[t]===e&&d.splice(t,1);l(d.length>0),c(e.classPrefix)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return u(),h}),r(Re,[Te],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(Ae,[Te,Re],function(e,t){return function(n){function r(){return s.length?s[s.length-1]:void 0}function i(e){n.fire("OpenWindow",{win:e})}function o(e){n.fire("CloseWindow",{win:e})}var a=this,s=[];a.windows=s,n.on("remove",function(){for(var e=s.length;e--;)s[e].close()}),a.open=function(t,r){var a;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){a.find("form")[0].submit()}},{text:"Cancel",onclick:function(){a.close()}}]),a=new e(t),s.push(a),a.on("close",function(){for(var e=s.length;e--;)s[e]===a&&s.splice(e,1);s.length||n.focus(),o(a)}),t.data&&a.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),a.features=t||{},a.params=r||{},1===s.length&&n.nodeChanged(),a=a.renderTo().reflow(),i(a),a},a.alert=function(e,r,a){var s;s=t.alert(e,function(){r?r.call(a||this):n.focus()}),s.on("close",function(){o(s)}),i(s)},a.confirm=function(e,n,r){var a;a=t.confirm(e,function(e){n.call(r||this,e)}),a.on("close",function(){o(a)}),i(a)},a.close=function(){r()&&r().close()},a.getParams=function(){return r()?r().params:null},a.setParams=function(e){r()&&(r().params=e)},a.getWindows=function(){return s}}}),r(Be,[ye,_e],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(De,[ye,Be],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(Le,[De],function(e){return e.extend({Defaults:{value:0},init:function(e){var t=this;t._super(e),t.classes.add("progress"),t.settings.filter||(t.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this,t=e._id,n=this.classPrefix;return'
    0%
    '},postRender:function(){var e=this;return e._super(),e.value(e.settings.value),e},bindStates:function(){function e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}var t=this;return t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}})}),r(Me,[ye,_e,Le,u],function(e,t,n,r){return e.extend({Mixins:[t],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new n),t.on("click",function(e){-1!=e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e=this,t=e.classPrefix,n="",r="",i="",o="";return e.icon&&(n=''),e.color&&(o=' style="background-color: '+e.color+'"'),e.closeButton&&(r=''),e.progressBar&&(i=e.progressBar.renderHtml()),'"},postRender:function(){var e=this;return r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[Me,u],function(e,t){return function(n){function r(){return l.length?l[l.length-1]:void 0}function i(){t.requestAnimationFrame(function(){o(),a()})}function o(){for(var e=0;e0){var e=l.slice(0,1)[0],t=n.inline?n.getElement():n.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),l.length>1)for(var r=1;r0&&(r.timer=setTimeout(function(){r.close()},t.timeout)),r.on("close",function(){var e=l.length;for(r.timer&&n.getWin().clearTimeout(r.timer);e--;)l[e]===r&&l.splice(e,1);a()}),r.renderTo(),a(),r},s.close=function(){r()&&r().close()},s.getNotifications=function(){return l},n.on("SkinLoaded",function(){var e=n.settings.service_message;e&&n.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(Oe,[w],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(He,[I,T,y,Oe,A,C,d,m,u,k,$,ne],function(e,t,n,r,i,o,a,s,l,c,u,d){return function(f){function h(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function p(){var e=f.getDoc().documentMode;return e?e:6}function m(e){return e.isDefaultPrevented()}function g(e){var t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ue+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function v(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ue)>=0)?(t=t.substr(ue.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function b(){function i(e){var t=C.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;for(s=C.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function c(e){var n,r,i,o,s;if(!e.collapsed&&(n=C.getParent(t.getNode(e.startContainer,e.startOffset),C.isBlock), +r=C.getParent(t.getNode(e.endContainer,e.endOffset),C.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==C.getContentEditable(n)&&"false"!==C.getContentEditable(r)))return e.deleteContents(),i=a(n,!1),o=a(r,!0),C.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),x.setRng(e),!0}function u(e,n){var r,i,s,l,c,u;if(!e.collapsed)return e;if(c=e.startContainer,u=e.startOffset,3==c.nodeType)if(n){if(u0)return e;if(r=t.getNode(e.startContainer,e.startOffset),s=C.getParent(r,C.isBlock),i=a(f.getBody(),n,r),l=C.getParent(i,C.isBlock),!r||!i)return e;if(l&&s!=l)if(n){if(!o(s,l))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function d(e){var t=x.getRng();return t=u(t,e),c(t)?!0:void 0}function h(e,t){function n(e,n){return m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(p=C.create("br"),m[0].appendChild(p),C.replace(l,e),t.setStartBefore(p),t.setEndBefore(p),f.selection.setRng(t),p):null}function i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var o,a,l,c,u,d,h,p,m;if(t.collapsed&&(d=t.startContainer,h=t.startOffset,a=C.getParent(d,C.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[h],d&&"BR"!=d.tagName)return;if(u=e?a.nextSibling:a.previousSibling,C.isEmpty(a)&&i(u)&&C.isEmpty(u)&&n(a,d))return C.remove(u),!0}else if(3==d.nodeType){if(o=r.create(a,d),c=a.cloneNode(!0),d=r.resolve(c,o),e){if(h>=d.data.length)return;d.deleteData(h,1)}else{if(0>=h)return;d.deleteData(h-1,1)}if(C.isEmpty(c))return n(a,d)}}function p(e){var t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new w(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(C.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),C.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var b=f.getDoc(),C=f.dom,x=f.selection,w=window.MutationObserver,N,E;w||(N=!0,w=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),f.on("keydown",function(e){var t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(h(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),p(t)}}),f.on("keypress",function(t){if(!m(t)&&!x.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),p(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=C.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=C.getParent(n.startContainer,C.isBlock),C.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){p()}),f.addCommand("ForwardDelete",function(){p(!0)}),N||(f.on("dragstart",function(e){E=x.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var r=t.getCaretRangeFromPoint(e.x,e.y,b);E&&(x.setRng(E),E=null),p(),x.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){p(!0)}))}))}function C(){function e(e){var t=ne.create("body"),n=e.cloneContents();return t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return i===a}f.on("keydown",function(e){var t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function x(){f.shortcuts.add("meta+a",null,"SelectAll")}function w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown mouseup",function(e){var t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(c.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else re.setRng(t)})}function N(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return ne.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function E(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function _(){f.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.getSel().setBaseAndExtent(t,0,t,1),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return function(){var t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var r;return m(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),ne.bind(f.getDoc(),"cut",function(n){var r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function k(){document.body.setAttribute("role","application")}function T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function R(){p()>7||(h("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre pre br {display: none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function A(){ne.bind(f.getBody(),"mouseup",function(){var e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function B(){f.on("keydown",function(t){var n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function D(){function e(){K(),h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),ie.object_resizing||h("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand MouseDown",e)}function L(){function e(){Q(ne.select("a"),function(e){var t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function M(){ie.forced_root_block&&f.on("init",function(){h("DefaultParagraphSeparator",ie.forced_root_block)})}function P(){f.on("keydown",function(e){var t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function O(){var e;p()>=10&&(e="",Q("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right: 1px !important}"))}function H(){p()<9&&(oe.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function I(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function F(){f.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function z(){f.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function W(){f.inline||(f.contentStyles.push("body {min-height: 150px}"),f.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function $(){h("AutoUrlDetect",!1)}function q(){f.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function Y(){oe.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);if(n&&n.id!=f.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function K(){var e,t;G()&&(e=f.getBody(),t=e.parentNode,t.removeChild(e),t.appendChild(e),e.focus())}function G(){var e;return se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function J(){function t(e){var t=new d(e.getBody()),n=e.selection.getRng(),r=u.fromRangeStart(n),i=u.fromRangeEnd(n);return!e.selection.isCollapsed()&&!t.prev(r)&&!t.next(i)}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ce=a.webkit,ue="data:text/mce-internal,",de=le?"Text":"URL";return B(),C(),a.windowsPhone||F(),ce&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(N(),k(),R(),A(),P(),O(),H(),I()),a.ie>=11&&(W(),T()),a.ie&&(x(),$(),X()),se&&(J(),N(),E(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ie,[ue,w,m],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){function n(e){return!e.hidden&&!e.readonly}var i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var i=r.target,a=e.editorManager.editors,s=a.length;s--;){var l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(Fe,[],function(){function e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var t,n;return t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function r(e,t){var r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(ze,[m,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e in o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s in o)l[s]?a.push(s):l[s]=!1;return l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function l(t,n,i,o){var l;return l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function c(e){return e.altKey||e.ctrlKey||e.metaKey}function u(e){return e.keyCode>=112&&e.keyCode<=123}function d(e,t){return t?t.ctrl!=e.ctrlKey||t.meta!=e.metaKey?!1:t.alt!=e.altKey||t.shift!=e.shiftKey?!1:e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode?(e.preventDefault(),!0):!1:!1}function f(e){return e.func?e.func.call(e.scope):null}var h=this,p={},m=[];a.on("keyup keypress keydown",function(e){!c(e)&&!u(e)||e.isDefaultPrevented()||(n(p,function(t){return d(e,t)?(m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0):void 0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),h.add=function(t,i,o,s){var c;return c=o,"string"==typeof o?o=function(){a.execCommand(c,!1,null)}:e.isArray(c)&&(o=function(){a.execCommand(c[0],c[1],c[2])}),n(r(e.trim(t.toLowerCase())),function(e){var t=l(e,i,o,s);p[t.id]=t}),!0},h.remove=function(e){var t=l(e);return p[t.id]?(delete p[t.id],!0):!1}}}),r(Ue,[c,m,z],function(e,t,n){return function(r,i){function o(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.id()+"."+t}function a(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function l(e,t,n,r){var s,l;s=new XMLHttpRequest,s.open("POST",i.url),s.withCredentials=i.credentials,s.upload.onprogress=function(e){r(e.loaded/e.total*100)},s.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+s.status)},s.onload=function(){var e;return 200!=s.status?void n("HTTP Error: "+s.status):(e=JSON.parse(s.responseText),e&&"string"==typeof e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON: "+s.responseText))},l=new FormData,l.append("file",e.blob(),o(e)),s.send(l)}function c(){return new e(function(e){e([])})}function u(e,t){return{url:t,blobInfo:e,status:!0}}function d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function h(t,n,i){return r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var c=function(){o&&(o.close(),a=l)},h=function(n){c(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),u(t,n)),e(u(t,n))},p=function(){c(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,p)),e(d(t,p))};a=function(e){0>e||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),h,p,a)}catch(m){e(d(t,m.message))}})}function p(e){return e===l}function m(t){var n=t.blobUri();return new e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return r.isPending(e.blobUri())?m(e):h(e,i.handler,o)}))}function v(e,t){return!i.url&&p(i.handler)?c():g(e,t)}var y={};return i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(We,[c],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function l(){var n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),c=a.ownerDocument.createRange(),f=g.firstChild,c.setStart(f,0),c.setEnd(f,1),c):(g=e.insertInline(a,o),c=a.ownerDocument.createRange(),s(g.nextSibling)?(c.setStart(g,0),c.setEnd(g,0)):(c.setStart(g,1),c.setEnd(g,1)),c)}function u(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(p)}function d(){p=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function f(){a.clearInterval(p)}function h(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"}var p,m,g;return{show:c,hide:u,getCss:h,destroy:f}}}),r(Xe,[p,_,W],function(e,t,n){function r(i){function o(t){return e.map(t,function(e){return e=n.clone(e),e.node=i,e})}if(e.isArray(i))return e.reduce(i,function(e,t){return e.concat(r(t))},[]);if(t.isElement(i))return o(i.getClientRects());if(t.isText(i)){var a=i.ownerDocument.createRange();return a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ke,[z,p,Xe,U,te,ne,$,W],function(e,t,n,r,i,o,a,s){function l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function c(e,r,i,o,a,s){function c(o){var s,l,c;for(c=n.getClientRects(o),-1==e&&(c=c.reverse()),s=0;s0&&r(l,t.last(f))&&u++,l.line=u,a(l))return!0;f.push(l)}}var u=0,d,f=[],h;return(h=t.last(s.getClientRects()))?(d=s.getNode(),c(d),l(e,o,c,d),f):f}function u(e,t){return t.line>e}function d(e,t){return t.line===e}function f(e,n,r,i){function l(n){return 1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var c=new o(n),u,d,f,h,p=[],m=0,g,v;1==e?(u=c.next,d=s.isBelow,f=s.isAbove,h=a.after(i)):(u=c.prev,d=s.isAbove,f=s.isBelow,h=a.before(i)),v=l(h);do if(h.isVisible()&&(g=l(h),!f(g,v))){if(p.length>0&&d(g,t.last(p))&&m++,g=s.clone(g),g.position=h,g.line=m,r(g))return p;p.push(g)}while(h=u(h));return p}var h=e.curry,p=h(c,-1,s.isAbove,s.isBelow),m=h(c,1,s.isBelow,s.isAbove);return{upUntil:p,downUntil:m,positionsUntil:f,isAboveLine:h(u),isLine:h(d)}}),r(Ge,[z,p,_,Xe,W,te,U],function(e,t,n,r,i,o,a){function s(e,t){return Math.abs(e.left-t)}function l(e,t){return Math.abs(e.right-t)}function c(e,n){function r(e,t){return e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var i,o;return i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:i>o?t:e})}function u(e,t,n,r){for(;r=g(r,e,a.isEditableCaretCandidate,t);)if(n(r))return}function d(e,n){function o(e,i){var o;return o=t.filter(r.getClientRects(i),function(t){return!e(t,n)}),a=a.concat(o),0===o.length}var a=[];return a.push(n),u(-1,e,v(o,i.isAbove),n.node),u(1,e,v(o,i.isBelow),n.node),a}function f(e){return t.filter(t.toArray(e.getElementsByTagName("*")),m)}function h(e,t){return{node:e.node,before:s(e,t)=e.top&&i<=e.bottom}),a=c(o,n),a&&(a=c(d(e,a),n),a&&m(a.node))?h(a,n):null}var m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:c,findLineNodeRects:d,closestCaret:p}}),r(Je,[],function(){var e=function(e){var t,n,r,i;return i=e.getBoundingClientRect(),t=e.ownerDocument,n=t.documentElement,r=t.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}},t=function(t){return t.inline?e(t.getBody()):{left:0,top:0}},n=function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}},r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},i={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:i},i=function(t,n){if(n.target.ownerDocument!==t.getDoc()){var i=e(t.getContentAreaContainer()),o=r(t);return{left:n.pageX-i.left+o.left,top:n.pageY-i.top+o.top}}return{left:n.pageX,top:n.pageY}},o=function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}},a=function(e,r){return o(t(e),n(e),i(e,r))};return{calc:a}}),r(Qe,[_,p,z,u,w,Je],function(e,t,n,r,i,o){var a=e.isContentEditableFalse,s=e.isContentEditableTrue,l=function(e){return a(e)},c=function(e,t,n){return t===n||e.dom.isChildOf(t,n)?!1:!a(t)},u=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t},d=function(e,t,n,r){var i=t.cloneNode(!0);e.dom.setStyles(i,{width:n,height:r}),e.dom.setAttrib(i,"data-mce-selected",null);var o=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(o,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(i,{margin:0,boxSizing:"border-box"}),o.appendChild(i),o},f=function(e,t){e.parentNode!==t&&t.appendChild(e)},h=function(e,t,n,r,i,o){var a=0,s=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>i&&(a=t.pageX+n-i), +t.pageY+r>o&&(s=t.pageY+r-o),e.style.width=n-a+"px",e.style.height=r-s+"px"},p=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},m=function(e){return 0===e.button},g=function(e){return e.element},v=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}},y=function(e,r){return function(i){if(m(i)){var o=t.find(r.dom.getParents(i.target),n.or(a,s));if(l(o)){var c=r.dom.getPos(o),u=r.getBody(),f=r.getDoc().documentElement;e.element=o,e.screenX=i.screenX,e.screenY=i.screenY,e.maxX=(r.inline?u.scrollWidth:f.offsetWidth)-2,e.maxY=(r.inline?u.scrollHeight:f.offsetHeight)-2,e.relX=i.pageX-c.x,e.relY=i.pageY-c.y,e.width=o.offsetWidth,e.height=o.offsetHeight,e.ghost=d(r,o,e.width,e.height)}}}},b=function(e,t){var n=r.throttle(function(e,n){t._selectionOverrides.hideFakeCaret(),t.selection.placeCaretAt(e,n)},0);return function(r){var i=Math.max(Math.abs(r.screenX-e.screenX),Math.abs(r.screenY-e.screenY));if(g(e)&&!e.dragging&&i>10){var a=t.fire("dragstart",{target:e.element});if(a.isDefaultPrevented())return;e.dragging=!0,t.focus()}if(e.dragging){var s=v(e,o.calc(t,r));f(e.ghost,t.getBody()),h(e.ghost,s,e.width,e.height,e.maxX,e.maxY),n(r.clientX,r.clientY)}}},C=function(e,t){return function(n){if(e.dragging&&c(t,t.selection.getNode(),e.element)){var r=u(e.element),i=t.fire("drop",{targetClone:r,clientX:n.clientX,clientY:n.clientY});i.isDefaultPrevented()||(r=i.targetClone,t.undoManager.transact(function(){p(e.element),t.insertContent(t.dom.getOuterHTML(r)),t._selectionOverrides.hideFakeCaret()}))}w(e)}},x=function(e,t){return function(){w(e),e.dragging&&t.fire("dragend")}},w=function(e){e.dragging=!1,e.element=null,p(e.ghost)},N=function(e){var t={},n,r,o,a,s,l;n=i.DOM,l=document,r=y(t,e),o=b(t,e),a=C(t,e),s=x(t,e),e.on("mousedown",r),e.on("mousemove",o),e.on("mouseup",a),n.bind(l,"mousemove",o),n.bind(l,"mouseup",s),e.on("remove",function(){n.unbind(l,"mousemove",o),n.unbind(l,"mouseup",s)})},E=function(e){e.on("drop",function(t){var n="undefined"!=typeof t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(a(n)||a(e.dom.getContentEditableParent(n)))&&t.preventDefault()})},_=function(e){N(e),E(e)};return{init:_}}),r(Ze,[d,ne,$,k,te,Ye,Ke,Ge,_,T,W,I,z,p,u,Qe,S],function(e,t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g){function v(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function y(c){function y(){var e=c.dom.get(le);return e?e.getElementsByTagName("*")[0]:e}function S(e){return c.dom.isBlock(e)}function k(e){e&&c.selection.setRng(e)}function T(){return c.selection.getRng()}function R(e,t){c.selection.scrollIntoView(e,t)}function A(e,t,n){var r;return r=c.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(R(t,-1===e),se.show(n,t))}function B(e){var t;return se.hide(),t=c.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:D(e)}function D(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function L(e,t){var n=i.isInSameBlock(e,t);return!n&&l.isBr(e.getNode())?!0:n}function M(e,t){return t=i.normalizeRange(e,re,t),-1==e?n.fromRangeStart(t):n.fromRangeEnd(t)}function P(e){return r.isCaretContainerBlock(e.startContainer)}function O(e,t,n,r){var i,o,a,s;return!r.collapsed&&(i=_(r),x(i))?A(e,i,-1==e):(s=P(r),o=M(e,r),n(o)?B(o.getNode(-1==e)):(o=t(o))?n(o)?A(e,o.getNode(-1==e),1==e):(a=t(o),n(a)&&L(o,a)?A(e,a.getNode(-1==e),1==e):s?$(o.toRange()):null):s?r:null)}function H(e,t,n){var r,i,o,l,c,u,d,f,p;if(p=_(n),r=M(e,n),i=t(re,a.isAboveLine(1),r),o=h.filter(i,a.isLine(1)),c=h.last(r.getClientRects()),E(r)&&(p=r.getNode()),N(r)&&(p=r.getNode(!0)),!c)return null;if(u=c.left,l=s.findClosestClientRect(o,u),l&&x(l.node))return d=Math.abs(u-l.left),f=Math.abs(u-l.right),A(e,l.node,f>d);if(p){var m=a.positionsUntil(e,re,a.isAboveLine(1),p);if(l=s.findClosestClientRect(h.filter(m,a.isLine(1)),u))return $(l.position.toRange());if(l=h.last(h.filter(m,a.isLine(0))))return $(l.position.toRange())}}function I(t,r){function i(){var t=c.dom.create(c.settings.forced_root_block);return(!e.ie||e.ie>=11)&&(t.innerHTML='
    '),t}var o,a,s;if(r.collapsed&&c.settings.forced_root_block){if(o=c.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?oe(n.fromRangeStart(r)):ae(n.fromRangeStart(r)),a||(s=i(),1==t?c.$(o).after(s):c.$(o).before(s),c.selection.select(s,!0),c.selection.collapse())}}function F(e,t,n,r){var i;return(i=O(e,t,n,r))?i:(i=I(e,r),i?i:null)}function z(e,t,n){var r;return(r=H(e,t,n))?r:(r=I(e,n),r?r:null)}function U(){return ue("*[data-mce-caret]")[0]}function W(e){e=ue(e),e.attr("data-mce-caret")&&(se.hide(),e.removeAttr("data-mce-caret"),e.removeAttr("data-mce-bogus"),e.removeAttr("style"),k(T()),R(e[0]))}function V(e){var t,r;return e=i.normalizeRange(1,re,e),t=n.fromRangeStart(e),x(t.getNode())?A(1,t.getNode(),!t.isAtEnd()):x(t.getNode(!0))?A(1,t.getNode(!0),!1):(r=c.dom.getParent(t.getNode(),f.or(x,C)),x(r)?A(1,r,!1):(se.hide(),null))}function $(e){var t;return e&&e.collapsed?(t=V(e),t?t:e):e}function q(e){var t,i,o,a;return x(e)?(x(e.previousSibling)&&(o=e.previousSibling),i=ae(n.before(e)),i||(t=oe(n.after(e))),t&&w(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),c.dom.remove(e),ee(),c.dom.isEmpty(c.getBody())?(c.setContent(""),void c.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function j(e){var t=c.schema.getTextBlockElements();return e.nodeName in t}function Y(e){return c.dom.isEmpty(e)}function X(e,t,r){var i=c.dom,o,a,s,l;if(o=i.getParent(t.getNode(),i.isBlock),a=i.getParent(r.getNode(),i.isBlock),-1===e){if(l=r.getNode(!0),N(r)&&S(l))return j(o)?(Y(o)&&i.remove(o),n.after(l).toRange()):q(r.getNode(!0))}else if(l=t.getNode(),E(t)&&S(l))return j(a)?(Y(a)&&i.remove(a),n.before(l).toRange()):q(t.getNode());if(o===a||!j(o)||!j(a))return null;for(;s=o.firstChild;)a.appendChild(s);return c.dom.remove(o),r.toRange()}function K(e,t,n,i){var o,a,s,l;return!i.collapsed&&(o=_(i),x(o))?$(q(o)):(a=M(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=-1==e?ie.prev(a):ie.next(a),l?$(l.toRange()):i):t(a)?$(q(a.getNode(-1==e))):(s=-1==e?ie.prev(a):ie.next(a),t(s)?-1===e?X(e,a,s):X(e,s,a):void 0))}function G(){function r(e,t){var n=t(T());n&&!e.isDefaultPrevented()&&(e.preventDefault(),k(n))}function i(e){for(var t=c.getBody();e&&e!=t;){if(C(e)||x(e))return e;e=e.parentNode}return null}function o(e,t,n){return n.collapsed?!1:h.reduce(n.getClientRects(),function(n,r){return n||u.containsXY(r,e,t)},!1)}function l(e){var t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var n=i(e.target);x(n)?t||(e.preventDefault(),Z(B(n))):ee()})}function f(){var e,t=i(c.selection.getNode());C(t)&&S(t)&&c.dom.isEmpty(t)&&(e=c.dom.create("br",{"data-mce-bogus":"1"}),c.$(t).empty().append(e),c.selection.setRng(n.before(e).toRange()))}function g(e){var t=U();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void W(t)):void(" "!=t.innerHTML&&W(t))}function v(e){var t;switch(e.keyCode){case d.DELETE:t=f();break;case d.BACKSPACE:t=f()}t&&e.preventDefault()}var w=b(F,1,oe,E),_=b(F,-1,ae,N),R=b(K,1,E,N),D=b(K,-1,N,E),L=b(z,-1,a.upUntil),M=b(z,1,a.downUntil);c.on("mouseup",function(){var e=T();e.collapsed&&k(V(e))}),c.on("click",function(e){var t;t=i(e.target),t&&x(t)&&(e.preventDefault(),c.focus())});var P=function(e){var r=new t(e);if(!e.firstChild)return!1;var i=n.before(e.firstChild),o=r.next(i);return o&&!E(o)&&!N(o)},O=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n===r},H=function(e,t){var n=c.dom.getParent(e,c.dom.isBlock),r=c.dom.getParent(t,c.dom.isBlock);return n&&!O(n,r)&&P(n)};l(c),c.on("mousedown",function(e){var t;if(t=i(e.target))x(t)?(e.preventDefault(),Z(B(t))):(ee(),o(e.clientX,e.clientY,c.selection.getRng())||c.selection.placeCaretAt(e.clientX,e.clientY));else{ee(),se.hide();var n=s.closestCaret(re,e.clientX,e.clientY);n&&(H(e.target,n.node)||(e.preventDefault(),c.getBody().focus(),k(A(1,n.node,n.before))))}}),c.on("keydown",function(e){if(!d.modifierPressed(e))switch(e.keyCode){case d.RIGHT:r(e,w);break;case d.DOWN:r(e,M);break;case d.LEFT:r(e,_);break;case d.UP:r(e,L);break;case d.DELETE:r(e,R);break;case d.BACKSPACE:r(e,D);break;default:x(c.selection.getNode())&&e.preventDefault()}}),c.on("keyup compositionstart",function(e){g(e),v(e)},!0),c.on("cut",function(){var e=c.selection.getNode();x(e)&&p.setEditorTimeout(c,function(){k($(q(e)))})}),c.on("getSelectionRange",function(e){var t=e.range;if(ce){if(!ce.parentNode)return void(ce=null);t=t.cloneRange(),t.selectNode(ce),e.range=t}}),c.on("setSelectionRange",function(e){var t;t=Z(e.range),t&&(e.range=t)}),c.on("focus",function(){p.setEditorTimeout(c,function(){c.selection.setRng($(c.selection.getRng()))},0)}),c.on("copy",function(t){var n=t.clipboardData;if(!t.isDefaultPrevented()&&t.clipboardData&&!e.ie){var r=y();r&&(t.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),m.init(c)}function J(){var e=c.contentStyles,t=".mce-content-body";e.push(se.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")}function Q(e){return r.isCaretContainer(e.startContainer)||r.isCaretContainer(e.endContainer)}function Z(t){var n,r=c.$,i=c.dom,o,a,s,l,u,d,f,h,p;if(!t)return ee(),null;if(t.collapsed){if(ee(),!Q(t)){if(f=M(1,t),x(f.getNode()))return A(1,f.getNode(),!f.isAtEnd());if(x(f.getNode(!0)))return A(1,f.getNode(!0),!1)}return null}return s=t.startContainer,l=t.startOffset,u=t.endOffset,3==s.nodeType&&0==l&&x(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?(ee(),null):(u==l+1&&(n=s.childNodes[l]),x(n)?(h=p=n.cloneNode(!0),d=c.fire("ObjectSelected",{target:n,targetClone:h}),d.isDefaultPrevented()?(ee(),null):(h=d.targetClone,o=r("#"+le),0===o.length&&(o=r('
    ').attr("id",le),o.appendTo(c.getBody())),t=c.dom.createRng(),h===p&&e.ie?(o.empty().append(g.ZWSP).append(h).append(g.ZWSP),t.setStart(o[0].firstChild,0),t.setEnd(o[0].lastChild,1)):(o.empty().append("\xa0").append(h).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,c.getBody()).y}),o[0].focus(),a=c.selection.getSel(),a.removeAllRanges(),a.addRange(t),c.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ce=n,t)):(ee(),null))}function ee(){ce&&(ce.removeAttribute("data-mce-selected"),c.$("#"+le).remove(),ce=null)}function te(){se.destroy(),ce=null}function ne(){se.hide()}var re=c.getBody(),ie=new t(re),oe=b(v,ie.next),ae=b(v,ie.prev),se=new o(c.getBody(),S),le="sel-"+c.dom.uniqueId(),ce,ue=c.$;return e.ceFalse&&(G(),J()),{showBlockCaretContainer:W,hideFakeCaret:ne,destroy:te}}var b=f.curry,C=l.isContentEditableTrue,x=l.isContentEditableFalse,w=l.isElement,N=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,_=c.getSelectedNode;return y}),r(et,[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)},t=(new Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),r(tt,[w,g,E,R,A,O,P,Y,J,Q,Z,ee,oe,ae,N,f,Ae,Pe,B,L,He,d,m,u,Ie,Fe,ze,je,Ze,et],function(e,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,C,x,w,N,E,_,S,k,T,R,A){function B(e,t,i){var o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=P({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=P({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new p(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new k(o),o.loadedCSS={},o.editorCommands=new h(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var D=e.DOM,L=r.ThemeManager,M=r.PluginManager,P=N.extend,O=N.each,H=N.explode,I=N.inArray,F=N.trim,z=N.resolve,U=g.Event,W=w.gecko,V=w.ie;return B.prototype={render:function(){function e(){D.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!L.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",L.load(r.theme,t)}N.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),O(r.external_plugins,function(e,t){M.load(t,e),r.plugins+=" "+t}),O(r.plugins.split(/[ ,]/),function(e){if(e=F(e),e&&!M.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=M.dependencies(e);O(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=M.createUrl(t,e),M.load(e.resource,e)})}else M.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!U.domLoaded)return void D.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||D.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(D.insertAfter(D.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},D.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new v(n),n.notificationManager=new y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=D.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function e(n){var r=M.get(n),i,o;if(i=M.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=F(n),r&&-1===I(m,n)){if(O(M.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,h,p,m=[];if(t.rtl=n.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(n.language),n.aria_label=n.aria_label||D.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=L.get(n.theme),t.theme=new c(t,L.urls[n.theme]),t.theme.init&&t.theme.init(t,L.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),O(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,h=/^[0-9\.]+(|px)$/i,h.test(""+i)&&(i=Math.max(parseInt(i,10),100)),h.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&O(H(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();if(t.iframeHTML=n.doctype+"",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+=''),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+=''),t.iframeHTML+='',!/#$/.test(document.location.href))for(p=0;p',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+=''),t.iframeHTML+='
    ';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(u=v);var y=D.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},D.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=D.add(l.iframeContainer,y),V)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(D.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=D.isHidden(l.editorContainer)),t.getElement().style.display="none",D.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),p,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();D.removeClass(e,"mce-content-body"),D.removeClass(e,"mce-edit-focus"),D.setAttrib(e,"contentEditable",null)}),D.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),p=n.getBody(),p.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==D.getStyle(p,"position",!0)&&(p.style.position="relative"),p.contentEditable=n.getParam("content_editable_state",!0)),p.disabled=!1,n.editorUpload=new T(n),n.schema=new b(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type",0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,D.setAttrib(p,"spellcheck","false")),n.quirks=new x(n),n.fire("PostRender"),r.directionality&&(p.dir=r.directionality),r.nowrap&&(p.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){O(r.protect,function(t){e.content=e.content.replace(t,function(e){return""})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",O(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),O(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&E.setEditorTimeout(n,function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=h=p=null},focus:function(e){function t(e){return n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),c;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),c=t(r.getNode()),n.$.contains(l,c))return c.focus(),r.normalize(),void n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),W||i){if(l.setActive)try{l.setActive()}catch(u){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?z(r):0,n=z(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?O(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[F(e[0])]=F(e[1]):i[F(e[0])]=F(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(D.show(e.getContainer()),D.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(V&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(D.hide(e.getContainer()),D.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=D.getParent(t.id,"form"))&&O(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=V&&11>V?"":'
    ',"TABLE"==r.nodeName?e="
    "+o+"
    ',e+="",d=0;b>d;d++){for(e+="",c=0;a>c;c++)e+="";e+=""}return e+="",e+="

    "},d=function(a){var b=a.dom.select("*[data-mce-id]");return b[0]},e=function(a,b,e){a.undoManager.transact(function(){var f,g;a.insertContent(c(b,e)),f=d(a),f.removeAttribute("data-mce-id"),g=a.dom.select("td,th",f),a.selection.setCursorLocation(g[0],0)})},f=function(a,b){a.execCommand("FormatBlock",!1,b)},g=function(b,c,d){var e,f;e=b.editorUpload.blobCache,f=e.create(a.uuid("mceu"),d,c),e.add(f),b.insertContent(b.dom.createHTML("img",{src:f.blobUri()}))},h=function(a){a.selection.collapse(!1)},i=function(a){a.focus(),b.unlinkSelection(a),h(a)},j=function(a,b,c){a.focus(),a.dom.setAttrib(b,"href",c),h(a)},k=function(a,b){a.execCommand("mceInsertLink",!1,{href:b}),h(a)},l=function(a,b){var c=a.dom.getParent(a.selection.getStart(),"a[href]");c?j(a,c,b):k(a,b)},m=function(a,b){0===b.trim().length?i(a):l(a,b)};return{insertTable:e,formatBlock:f,insertBlob:g,createLink:m,unlink:i}}),g("r",[],function(){var a=function(a){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(a.trim())},b=function(a){return/^https?:\/\//.test(a.trim())};return{isDomainLike:a,isAbsolute:b}}),g("g",["c","d","o","m","r"],function(a,b,c,d,e){var f=function(a){a.find("textbox").eq(0).each(function(a){a.focus()})},g=function(c,d){var e=b.create(a.extend({type:"form",layout:"flex",direction:"row",padding:5,name:c,spacing:3},d));return e.on("show",function(){f(e)}),e},h=function(a,b){return b?a.show():a.hide()},i=function(a,b){return new c(function(c){a.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(a){var d=a===!0?"http://"+b:b;c(d)})})},j=function(a,b){return!e.isAbsolute(b)&&e.isDomainLike(b)?i(a,b):c.resolve(b)},k=function(a,b){var c=function(){a.focus(),d.unlink(a),b()};return g("quicklink",{items:[{type:"button",name:"unlink",icon:"unlink",onclick:c,tooltip:"Remove link"},{type:"textbox",name:"linkurl",placeholder:"Paste or type a link"},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:function(){var b,c="";b=a.dom.getParent(a.selection.getStart(),"a[href]"),b&&(c=a.dom.getAttrib(b,"href")),this.fromJSON({linkurl:c}),h(this.find("#unlink"),b)},onsubmit:function(c){j(a,c.data.linkurl).then(function(c){d.createLink(a,c),b()})}})};return{createQuickLinkForm:k}}),h("s",tinymce.geom.Rect),g("t",[],function(){var a=function(a){return{x:a.left,y:a.top,w:a.width,h:a.height}},b=function(a){return{left:a.x,top:a.y,width:a.w,height:a.h,right:a.x+a.w,bottom:a.y+a.h}};return{fromClientRect:a,toClientRect:b}}),g("h",["e","s","t"],function(a,b,c){var d=function(b){var c=a.getViewPort();return{x:b.x+c.x,y:b.y+c.y,w:b.w,h:b.h}},e=function(a){var b=a.getBoundingClientRect();return d({x:b.left,y:b.top,w:Math.max(a.clientWidth,a.offsetWidth),h:Math.max(a.clientHeight,a.offsetHeight)})},f=function(a,b){return e(b)},g=function(a){return e(a.getElement().ownerDocument.body)},h=function(a){return e(a.getContentAreaContainer()||a.getBody())},i=function(a){var b=a.selection.getBoundingClientRect();return b?d(c.fromClientRect(b)):null};return{getElementRect:f,getPageAreaRect:g,getContentAreaRect:h,getSelectionRect:i}}),g("i",["s","t"],function(a,b){var c=function(a,b){return{rect:a,position:b}},d=function(a,b){return{x:b.x,y:b.y,w:a.w,h:a.h}},e=function(b,e,f,g,h){var i,j,k;return i=a.findBestRelativePosition(h,f,g,b),f=a.clamp(f,g),i?(j=a.relativePosition(h,f,i),k=d(h,j),c(k,i)):(f=a.intersect(g,f),f?(i=a.findBestRelativePosition(h,f,g,e))?(j=a.relativePosition(h,f,i),k=d(h,j),c(k,i)):(k=d(h,f),c(k,i)):null)},f=function(a,b,c){return e(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],a,b,c)},g=function(a,b,c){return e(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr"],["bc-tc","bl-tl","br-tr"],a,b,c)},h=function(a,c,d,e){var f;return"function"==typeof a?(f=a({elementRect:b.toClientRect(c),contentAreaRect:b.toClientRect(d),panelRect:b.toClientRect(e)}),b.fromClientRect(f)):e},i=function(a){return a.panelRect};return{calcInsert:f,calc:g,userConstrain:h,defaultHandler:i}}),g("a",["j"],function(a){var b=function(a,b){if(b(a))return!0;throw new Error("Default value doesn't match requested type.")},c=function(a){return function(c,d,e){var f=c.settings;return b(e,a),d in f&&a(f[d])?f[d]:e}},d=function(a,b){return a.split(b).filter(function(a){return a.length>0})},e=function(b,c){var e=function(a){return"string"==typeof a?d(a,/[ ,]/):a},f=function(a,b){return a===!1?[]:b};return a.isArray(b)?b:a.isString(b)?e(b):a.isBoolean(b)?f(b,c):c},f=function(a){return function(c,d,f){var g=d in c.settings?c.settings[d]:f;return b(f,a),e(g,f)}};return{getStringOr:c(a.isString),getBoolOr:c(a.isBoolean),getNumberOr:c(a.isNumber),getHandlerOr:c(a.isFunction),getToolbarItemsOr:f(a.isArray)}}),g("3",["c","d","e","f","g","h","i","a"],function(a,b,c,d,e,f,g,h){return function(){var i,j,k=["bold","italic","|","quicklink","h2","h3","blockquote"],l=["quickimage","quicktable"],m=function(b,c){return a.map(c,function(a){return d.create(b,a.id,a.items)})},n=function(a){return h.getToolbarItemsOr(a,"selection_toolbar",k)},o=function(a){return h.getToolbarItemsOr(a,"insert_toolbar",l)},p=function(a){return a.items().length>0},q=function(c,f){var g=m(c,f).concat([d.create(c,"text",n(c)),d.create(c,"insert",o(c)),e.createQuickLinkForm(c,z)]);return b.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:a.grep(g,p),oncancel:function(){c.focus()}})},r=function(a){a&&a.show()},s=function(a,b){a.moveTo(b.x,b.y)},t=function(b,c){c=c?c.substr(0,2):"",a.each({t:"down",b:"up",c:"center"},function(a,d){b.classes.toggle("arrow-"+a,d===c.substr(0,1))}),"cr"===c?(b.classes.toggle("arrow-left",!0),b.classes.toggle("arrow-right",!1)):"cl"===c?(b.classes.toggle("arrow-left",!0),b.classes.toggle("arrow-right",!0)):a.each({l:"left",r:"right"},function(a,d){b.classes.toggle("arrow-"+a,d===c.substr(1,1))})},u=function(a,b){var c=a.items().filter("#"+b);return c.length>0?(c[0].show(),a.reflow(),!0):!1},v=function(a,b,d,e){var i,k,l,m;return r(a),a.items().hide(),u(a,b)?(m=h.getHandlerOr(d,"inline_toolbar_position_handler",g.defaultHandler),i=f.getContentAreaRect(d),k=c.getRect(a.getEl()),l="insert"===b?g.calcInsert(e,i,k):g.calc(e,i,k),void(l?(k=l.rect,j=e,s(a,g.userConstrain(m,e,i,k)),t(a,l.position)):z(a))):void z(a)},w=function(){return i.items().filter("form:visible").length>0},x=function(a,b){if(i){if(i.items().hide(),!u(i,b))return void z(i);var d,e,k,l;r(i),i.items().hide(),u(i,b),l=h.getHandlerOr(a,"inline_toolbar_position_handler",g.defaultHandler),d=f.getContentAreaRect(a),e=c.getRect(i.getEl()),k=g.calc(j,d,e),k&&(e=k.rect,s(i,g.userConstrain(l,j,d,e)),t(i,k.position))}},y=function(a,b,c,d){i||(i=q(a,d),i.renderTo(document.body).reflow().moveTo(c.x,c.y),a.nodeChanged()),v(i,b,a,c)},z=function(){i&&i.hide()},A=function(){i&&i.find("toolbar:visible").eq(0).each(function(a){a.focus(!0)})},B=function(){i&&(i.remove(),i=null)},C=function(){return i&&i.visible()&&w()};return{show:y,showForm:x,inForm:C,hide:z,focus:A,remove:B}}}),g("k",["o"],function(a){var b=function(b){return new a(function(a){var c=new FileReader;c.onloadend=function(){a(c.result.split(",")[1])},c.readAsDataURL(b)})};return{blobToBase64:b}}),g("l",["o"],function(a){var b=function(){return new a(function(a){var b;b=document.createElement("input"),b.type="file",b.style.position="fixed",b.style.left=0,b.style.top=0,b.style.opacity=.001,document.body.appendChild(b),b.onchange=function(b){a(Array.prototype.slice.call(b.target.files))},b.click(),b.parentNode.removeChild(b)})};return{pickFile:b}}),g("4",["3","k","l","m"],function(a,b,c,d){var e=function(a){for(var b=function(b){return function(){d.formatBlock(a,b)}},c=1;6>c;c++){var e="h"+c;a.addButton(e,{text:e.toUpperCase(),tooltip:"Heading "+c,stateSelector:e,onclick:b(e),onPostRender:function(){var a=this.getEl().firstChild.firstChild;a.style.fontWeight="bold"}})}},f=function(a,f){a.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){f.showForm(a,"quicklink")}}),a.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){c.pickFile().then(function(c){var e=c[0];b.blobToBase64(e).then(function(b){d.insertBlob(a,b,e)})})}}),a.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){f.hide(),d.insertTable(a,2,2)}}),e(a)};return{addToEditor:f}}),h("n",tinymce.EditorManager),g("5",["n","e"],function(a,b){var c=function(a,b){var c=function(){a.fire("SkinLoaded"),b()};a.initialized?c():a.on("init",c)},d=function(b){var c=a.baseURL+"/skins/";return b?c+b:c+"lightgray"},e=function(a,b){return a.documentBaseURI.toAbsolute(b)},f=function(a,f){var g=a.settings,h=g.skin_url?e(a,g.skin_url):d(g.skin),i=function(){c(a,f)};b.styleSheetLoader.load(h+"/skin.min.css",i),a.contentCSS.push(h+"/content.inline.min.css")};return{load:f}}),g("8",[],function(){var a=function(a,b){return{id:a,rect:b}},b=function(a,b){for(var c=0;c li",c("UL")),"numlist"==g&&d.selectorChanged("ol > li",c("OL")),b.settings.stateSelector&&d.selectorChanged(b.settings.stateSelector,function(a){b.active(a)},!0),b.settings.disabledStateSelector&&d.selectorChanged(b.settings.disabledStateSelector,function(a){b.disabled(a)})}var g;"|"==b?d=null:n.has(b)?(b={type:b,size:c},e.push(b),d=null):(d||(d={type:"buttongroup",items:[]},e.push(d)),a.buttons[b]&&(g=b,b=a.buttons[g],"function"==typeof b&&(b=b()),b.type=b.type||"button",b.size=c,b=n.create(b),d.items.push(b),a.initialized?f():a.on("init",f)))}),{type:"toolbar",layout:"flow",items:e}}function c(a){function c(c){return c?(d.push(b(c,a)),!0):void 0}var d=[];if(tinymce.isArray(m.toolbar)){if(0===m.toolbar.length)return;tinymce.each(m.toolbar,function(a,b){m["toolbar"+(b+1)]=a}),delete m.toolbar}for(var e=1;10>e&&c(m["toolbar"+e]);e++);return d.length||m.toolbar===!1||c(m.toolbar||t),d.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:d}:void 0}function d(){function b(b){var c;return"|"==b?{text:"|"}:c=a.menuItems[b]}function c(c){var d,e,f,g,h;if(h=tinymce.makeMap((m.removed_menuitems||"").split(/[ ,]/)),m.menu?(e=m.menu[c],g=!0):e=s[c],e){d={text:e.title},f=[],o((e.items||"").split(/[ ,]/),function(a){var c=b(a);c&&!h[a]&&f.push(b(a))}),g||o(a.menuItems,function(a){a.context==c&&("before"==a.separator&&f.push({text:"|"}),a.prependToContext?f.unshift(a):f.push(a),"after"==a.separator&&f.push({text:"|"}))});for(var i=0;i=0;d--)for(e=g.length-1;e>=0;e--)if(g[e].predicate(f[d]))return{toolbar:g[e],element:f[d]};return null}var t;a.on("click keyup setContent",function(b){("setcontent"!=b.type||b.selection)&&tinymce.util.Delay.setEditorTimeout(a,function(){var b;b=s(a.selection.getNode()),b?(r(),p(b)):r()})}),a.on("blur hide",r),a.on("ObjectResizeStart",function(){var b=s(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.hide()}),a.on("nodeChange ResizeEditor ResizeWindow",k),a.on("remove",function(){tinymce.each(c(),function(a){a.panel&&a.panel.remove()}),a.contextToolbars={}}),a.shortcuts.add("ctrl+shift+e > ctrl+shift+p","",function(){var b=s(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.items()[0].focus()})}function i(a){return function(){a.initialized?a.fire("SkinLoaded"):a.on("init",function(){a.fire("SkinLoaded")})}}function j(b){function f(){if(o&&o.moveRel&&o.visible()&&!o._fixed){var b=a.selection.getScrollContainer(),c=a.getBody(),d=0,e=0;if(b){var f=p.getPos(c),g=p.getPos(b);d=Math.max(0,g.x-f.x),e=Math.max(0,g.y-f.y)}o.fixed(!1).moveRel(c,a.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(d,e)}}function g(){o&&(o.show(),f(),p.addClass(a.getBody(),"mce-edit-focus"))}function j(){o&&(o.hide(),r.hideAll(),p.removeClass(a.getBody(),"mce-edit-focus"))}function k(){return o?void(o.visible()||g()):(o=l.panel=n.create({type:q?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!q,border:1,items:[m.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(m.toolbar_items_size)]}),a.fire("BeforeRenderUI"),o.renderTo(q||document.body).reflow(),e(o),g(),h(),a.on("nodeChange",f),a.on("activate",g),a.on("deactivate",j),void a.nodeChanged())}var o,q;return m.fixed_toolbar_container&&(q=p.select(m.fixed_toolbar_container)[0]),m.content_editable=!0,a.on("focus",function(){b.skinUiCss?tinymce.DOM.styleSheetLoader.load(b.skinUiCss,k,k):k()}),a.on("blur hide",j),a.on("remove",function(){o&&(o.remove(),o=null)}),b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss,i(a)),{}}function k(b){function g(){return function(a){"readonly"==a.mode?j.find("*").disabled(!0):j.find("*").disabled(!1)}}var j,k,o;return b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss,i(a)),j=l.panel=n.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[m.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(m.toolbar_items_size),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),m.resize!==!1&&(k={type:"resizehandle",direction:m.resize,onResizeStart:function(){var b=a.getContentAreaContainer().firstChild;o={width:b.clientWidth,height:b.clientHeight}},onResize:function(a){"both"==m.resize?f(o.width+a.deltaX,o.height+a.deltaY):f(null,o.height+a.deltaY)}}),m.statusbar!==!1&&j.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:a},k]}),a.fire("BeforeRenderUI"),a.on("SwitchMode",g()),j.renderBefore(b.targetNode).reflow(),m.readonly&&a.setMode("readonly"),m.width&&tinymce.DOM.setStyle(j.getEl(),"width",m.width),a.on("remove",function(){j.remove(),j=null}),e(j),h(),{iframeContainer:j.find("#iframe")[0].getEl(),editorContainer:j.getEl()}}var l=this,m=a.settings,n=tinymce.ui.Factory,o=tinymce.each,p=tinymce.DOM,q=tinymce.geom.Rect,r=tinymce.ui.FloatPanel,s={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},t="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";l.renderUI=function(b){var c=m.skin!==!1?m.skin||"lightgray":!1;if(c){var d=m.skin_url;d=d?a.documentBaseURI.toAbsolute(d):tinymce.baseURL+"/skins/"+c,tinymce.Env.documentMode<=7?b.skinUiCss=d+"/skin.ie7.min.css":b.skinUiCss=d+"/skin.min.css",a.contentCSS.push(d+"/content"+(a.inline?".inline":"")+".min.css")}return a.on("ProgressState",function(a){l.throbber=l.throbber||new tinymce.ui.Throbber(l.panel.getEl("body")),a.state?l.throbber.show(a.time):l.throbber.hide()}),m.inline?j(b):k(b)},l.resizeTo=f,l.resizeBy=g}); +tinymce.PluginManager.add("advlist",function(a){function b(a,b){var c=[];return tinymce.each(b.split(/[ ,]/),function(a){c.push({text:a.replace(/\-/g," ").replace(/\b\w/g,function(a){return a.toUpperCase()}),data:"default"==a?"":a})}),c}function c(b,c){a.undoManager.transact(function(){var d,e=a.dom,f=a.selection;if(d=e.getParent(f.getNode(),"ol,ul"),!d||d.nodeName!=b||c===!1){var h={"list-style-type":c?c:""};a.execCommand("UL"==b?"InsertUnorderedList":"InsertOrderedList",!1,h)}c=c===!1?g[b]:c,g[b]=c,d=e.getParent(f.getNode(),"ol,ul"),d&&(e.setStyle(d,"listStyleType",c?c:null),d.removeAttribute("data-mce-style")),a.focus()})}function d(b){var c=a.dom.getStyle(a.dom.getParent(a.selection.getNode(),"ol,ul"),"listStyleType")||"";b.control.items().each(function(a){a.active(a.settings.data===c)})}var e,f,g={};e=b("OL",a.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),f=b("UL",a.getParam("advlist_bullet_styles","default,circle,disc,square")),a.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:e,onshow:d,onselect:function(a){c("OL",a.control.settings.data)},onclick:function(){c("OL",!1)}}),a.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:f,onshow:d,onselect:function(a){c("UL",a.control.settings.data)},onclick:function(){c("UL",!1)}})}); +tinymce.PluginManager.add("anchor",function(a){function b(){var b=a.selection.getNode(),c="",d="A"==b.tagName&&""===a.dom.getAttrib(b,"href");d&&(c=b.name||b.id||""),a.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:c},onsubmit:function(c){var e=c.data.name;d?b.id=e:(a.selection.collapse(!0),a.execCommand("mceInsertContent",!1,a.dom.createHTML("a",{id:e})))}})}a.addCommand("mceAnchor",b),a.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:b,stateSelector:"a:not([href])"}),a.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:b})}); +tinymce.PluginManager.add("autolink",function(a){function b(a){e(a,-1,"(",!0)}function c(a){e(a,0,"",!0)}function d(a){e(a,-1,"",!1)}function e(a,b,c){function d(a,b){if(0>b&&(b=0),3==a.nodeType){var c=a.data.length;b>c&&(b=c)}return b}function e(a,b){1!=a.nodeType||a.hasChildNodes()?h.setStart(a,d(a,b)):h.setStartBefore(a)}function f(a,b){1!=a.nodeType||a.hasChildNodes()?h.setEnd(a,d(a,b)):h.setEndAfter(a)}var h,i,j,k,l,m,n,o,p,q;if("A"!=a.selection.getNode().tagName){if(h=a.selection.getRng(!0).cloneRange(),h.startOffset<5){if(o=h.endContainer.previousSibling,!o){if(!h.endContainer.firstChild||!h.endContainer.firstChild.nextSibling)return;o=h.endContainer.firstChild.nextSibling}if(p=o.length,e(o,p),f(o,p),h.endOffset<5)return;i=h.endOffset,k=o}else{if(k=h.endContainer,3!=k.nodeType&&k.firstChild){for(;3!=k.nodeType&&k.firstChild;)k=k.firstChild;3==k.nodeType&&(e(k,0),f(k,k.nodeValue.length))}i=1==h.endOffset?2:h.endOffset-1-b}j=i;do e(k,i>=2?i-2:0),f(k,i>=1?i-1:0),i-=1,q=h.toString();while(" "!=q&&""!==q&&160!=q.charCodeAt(0)&&i-2>=0&&q!=c);h.toString()==c||160==h.toString().charCodeAt(0)?(e(k,i),f(k,j),i+=1):0===h.startOffset?(e(k,0),f(k,j)):(e(k,i),f(k,j)),m=h.toString(),"."==m.charAt(m.length-1)&&f(k,j-1),m=h.toString(),n=m.match(g),n&&("www."==n[1]?n[1]="http://www.":/@$/.test(n[1])&&!/^mailto:/.test(n[1])&&(n[1]="mailto:"+n[1]),l=a.selection.getBookmark(),a.selection.setRng(h),a.execCommand("createlink",!1,n[1]+n[2]),a.selection.moveToBookmark(l),a.nodeChanged())}}var f,g=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return a.settings.autolink_pattern&&(g=a.settings.autolink_pattern),a.on("keydown",function(b){return 13==b.keyCode?d(a):void 0}),tinymce.Env.ie?void a.on("focus",function(){if(!f){f=!0;try{a.execCommand("AutoUrlDetect",!1,!0)}catch(b){}}}):(a.on("keypress",function(c){return 41==c.keyCode?b(a):void 0}),void a.on("keyup",function(b){return 32==b.keyCode?c(a):void 0}))}); +tinymce.PluginManager.add("autoresize",function(a){function b(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function c(d){var g,h,i,j,k,l,m,n,o,p,q,r,s=tinymce.DOM;if(h=a.getDoc()){if(i=h.body,j=h.documentElement,k=e.autoresize_min_height,!i||d&&"setcontent"===d.type&&d.initial||b())return void(i&&j&&(i.style.overflowY="auto",j.style.overflowY="auto"));m=a.dom.getStyle(i,"margin-top",!0),n=a.dom.getStyle(i,"margin-bottom",!0),o=a.dom.getStyle(i,"padding-top",!0),p=a.dom.getStyle(i,"padding-bottom",!0),q=a.dom.getStyle(i,"border-top-width",!0),r=a.dom.getStyle(i,"border-bottom-width",!0),l=i.offsetHeight+parseInt(m,10)+parseInt(n,10)+parseInt(o,10)+parseInt(p,10)+parseInt(q,10)+parseInt(r,10),(isNaN(l)||0>=l)&&(l=tinymce.Env.ie?i.scrollHeight:tinymce.Env.webkit&&0===i.clientHeight?0:i.offsetHeight),l>e.autoresize_min_height&&(k=l),e.autoresize_max_height&&l>e.autoresize_max_height?(k=e.autoresize_max_height,i.style.overflowY="auto",j.style.overflowY="auto"):(i.style.overflowY="hidden",j.style.overflowY="hidden",i.scrollTop=0),k!==f&&(g=k-f,s.setStyle(a.iframeElement,"height",k+"px"),f=k,tinymce.isWebKit&&0>g&&c(d))}}function d(b,e,f){tinymce.util.Delay.setEditorTimeout(a,function(){c({}),b--?d(b,e,f):f&&f()},e)}var e=a.settings,f=0;a.settings.inline||(e.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),e.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),a.on("init",function(){var b,c;b=a.getParam("autoresize_overflow_padding",1),c=a.getParam("autoresize_bottom_margin",50),b!==!1&&a.dom.setStyles(a.getBody(),{paddingLeft:b,paddingRight:b}),c!==!1&&a.dom.setStyles(a.getBody(),{paddingBottom:c})}),a.on("nodechange setcontent keyup FullscreenStateChanged",c),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){d(20,100,function(){d(5,1e3)})}),a.addCommand("mceAutoResize",c))}); +tinymce._beforeUnloadHandler=function(){var a;return tinymce.each(tinymce.editors,function(b){b.plugins.autosave&&b.plugins.autosave.storeDraft(),!a&&b.isDirty()&&b.getParam("autosave_ask_before_unload",!0)&&(a=b.translate("You have unsaved changes are you sure you want to navigate away?"))}),a},tinymce.PluginManager.add("autosave",function(a){function b(a,b){var c={s:1e3,m:6e4};return a=/^(\d+)([ms]?)$/.exec(""+(a||b)),(a[2]?c[a[2]]:1)*parseInt(a,10)}function c(){var a=parseInt(n.getItem(k+"time"),10)||0;return(new Date).getTime()-a>m.autosave_retention?(d(!1),!1):!0}function d(b){n.removeItem(k+"draft"),n.removeItem(k+"time"),b!==!1&&a.fire("RemoveDraft")}function e(){!j()&&a.isDirty()&&(n.setItem(k+"draft",a.getContent({format:"raw",no_events:!0})),n.setItem(k+"time",(new Date).getTime()),a.fire("StoreDraft"))}function f(){c()&&(a.setContent(n.getItem(k+"draft"),{format:"raw"}),a.fire("RestoreDraft"))}function g(){l||(setInterval(function(){a.removed||e()},m.autosave_interval),l=!0)}function h(){var b=this;b.disabled(!c()),a.on("StoreDraft RestoreDraft RemoveDraft",function(){b.disabled(!c())}),g()}function i(){a.undoManager.beforeChange(),f(),d(),a.undoManager.add()}function j(b){var c=a.settings.forced_root_block;return b=tinymce.trim("undefined"==typeof b?a.getBody().innerHTML:b),""===b||new RegExp("^<"+c+"[^>]*>((\xa0| |[ ]|]*>)+?|)|
    $","i").test(b)}var k,l,m=a.settings,n=tinymce.util.LocalStorage;k=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",k=k.replace(/\{path\}/g,document.location.pathname),k=k.replace(/\{query\}/g,document.location.search),k=k.replace(/\{id\}/g,a.id),m.autosave_interval=b(m.autosave_interval,"30s"),m.autosave_retention=b(m.autosave_retention,"20m"),a.addButton("restoredraft",{title:"Restore last draft",onclick:i,onPostRender:h}),a.addMenuItem("restoredraft",{text:"Restore last draft",onclick:i,onPostRender:h,context:"file"}),a.settings.autosave_restore_when_empty!==!1&&(a.on("init",function(){c()&&j()&&f()}),a.on("saveContent",function(){d()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=c,this.storeDraft=e,this.restoreDraft=f,this.removeDraft=d,this.isEmpty=j}); +!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a){var b=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.on("beforeSetContent",function(a){a.content=b["_"+c+"_bbcode2html"](a.content)}),a.on("postProcess",function(a){a.set&&(a.content=b["_"+c+"_bbcode2html"](a.content)),a.get&&(a.content=b["_"+c+"_html2bbcode"](a.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Ephox Corp",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),b(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),b(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),b(/(.*?)<\/font>/gi,"$1"),b(//gi,"[img]$1[/img]"),b(/(.*?)<\/span>/gi,"[code]$1[/code]"),b(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),b(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),b(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),b(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),b(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),b(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),b(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),b(/<\/(strong|b)>/gi,"[/b]"),b(/<(strong|b)>/gi,"[b]"),b(/<\/(em|i)>/gi,"[/i]"),b(/<(em|i)>/gi,"[i]"),b(/<\/u>/gi,"[/u]"),b(/(.*?)<\/span>/gi,"[u]$1[/u]"),b(//gi,"[u]"),b(/]*>/gi,"[quote]"),b(/<\/blockquote>/gi,"[/quote]"),b(/
    /gi,"\n"),b(//gi,"\n"),b(/
    /gi,"\n"),b(/

    /gi,""),b(/<\/p>/gi,"\n"),b(/ |\u00a0/gi," "),b(/"/gi,'"'),b(/</gi,"<"),b(/>/gi,">"),b(/&/gi,"&"),a},_punbb_bbcode2html:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/\n/gi,"
    "),b(/\[b\]/gi,""),b(/\[\/b\]/gi,""),b(/\[i\]/gi,""),b(/\[\/i\]/gi,""),b(/\[u\]/gi,""),b(/\[\/u\]/gi,""),b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),b(/\[url\](.*?)\[\/url\]/gi,'$1'),b(/\[img\](.*?)\[\/img\]/gi,''),b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),b(/\[code\](.*?)\[\/code\]/gi,'$1 '),b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),a}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}(); +tinymce.PluginManager.add("charmap",function(a){function b(){return[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]]}function c(a){return tinymce.util.Tools.grep(a,function(a){return i(a)&&2==a.length})}function d(a){return i(a)?[].concat(c(a)):"function"==typeof a?a():[]}function e(b){var c=a.settings;return c.charmap&&(b=d(c.charmap)),c.charmap_append?[].concat(b).concat(d(c.charmap_append)):b}function f(){return e(b())}function g(b){a.fire("insertCustomChar",{chr:b}).chr,a.execCommand("mceInsertContent",!1,b)}function h(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var c,d,e,h;c='';var i=f(),j=Math.min(i.length,25),k=Math.ceil(i.length/j);for(e=0;k>e;e++){for(c+="",d=0;j>d;d++){var l=e*j+d;if(l
    '+(m?String.fromCharCode(parseInt(m[0],10)):" ")+"
    "}else c+="
    "}c+="";var n={type:"container",html:c,onclick:function(a){var c=a.target;/^(TD|DIV)$/.test(c.nodeName)&&b(c).firstChild&&(g(tinymce.trim(c.innerText||c.textContent)),a.ctrlKey||h.close())},onmouseover:function(a){var c=b(a.target);c&&c.firstChild?(h.find("#preview").text(c.firstChild.firstChild.data),h.find("#previewTitle").text(c.title)):(h.find("#preview").text(" "),h.find("#previewTitle").text(" "))}};h=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[n,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){h.close()}}]})}var i=tinymce.util.Tools.isArray;return a.addCommand("mceShowCharmap",h),a.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"}),{getCharMap:f,insertChar:g}}); +tinymce.PluginManager.add("code",function(a){function b(){var b=a.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:a.getParam("code_dialog_width",600),minHeight:a.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(b){a.focus(),a.undoManager.transact(function(){a.setContent(b.data.code)}),a.selection.setCursorLocation(),a.nodeChanged()}});b.find("#code").value(a.getContent({source_view:!0}))}a.addCommand("mceCodeEditor",b),a.addButton("code",{icon:"code",tooltip:"Source code",onclick:b}),a.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:b})}); +!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;fa.length)break a;if(!(q instanceof e)){k.lastIndex=0;var r=k.exec(q);if(r){m&&(n=r[1].length);var s=r.index-1+n,r=r[0].slice(n),t=r.length,u=s+t,v=q.slice(0,s+1),w=q.slice(u+1),x=[p,1];v&&x.push(v);var y=new e(h,l?c.tokenize(r,l):r,o);x.push(y),w&&x.push(w),Array.prototype.splice.apply(f,x)}}}}}return f},hooks:{all:{},add:function(a,b){var d=c.hooks.all;d[a]=d[a]||[],d[a].push(b)},run:function(a,b){var d=c.hooks.all[a];if(d&&d.length)for(var e,f=0;e=d[f++];)e(b)}}},d=c.Token=function(a,b,c){this.type=a,this.content=b,this.alias=c};return d.stringify=function(a,b,e){if("string"==typeof a)return a;if("Array"===c.util.type(a))return a.map(function(c){return d.stringify(c,b,a)}).join("");var f={type:a.type,content:d.stringify(a.content,b,e),tag:"span",classes:["token",a.type],attributes:{},language:b,parent:e};if("comment"==f.type&&(f.attributes.spellcheck="true"),a.alias){var g="Array"===c.util.type(a.alias)?a.alias:[a.alias];Array.prototype.push.apply(f.classes,g)}c.hooks.run("wrap",f);var h="";for(var i in f.attributes)h+=(h?" ":"")+i+'="'+(f.attributes[i]||"")+'"';return"<"+f.tag+' class="'+f.classes.join(" ")+'" '+h+">"+f.content+""},b.document?void 0:b.addEventListener?(b.addEventListener("message",function(a){var d=JSON.parse(a.data),e=d.language,f=d.code,g=d.immediateClose;b.postMessage(c.highlight(f,c.languages[e],e)),g&&b.close()},!1),b.Prism):b.Prism}();return"undefined"!=typeof module&&module.exports&&(module.exports=c),"undefined"!=typeof global&&(global.Prism=c),c.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),c.languages.xml=c.languages.markup,c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,c.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},c.languages.css.atrule.inside.rest=c.util.clone(c.languages.css),c.languages.markup&&(c.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/i,inside:{tag:{pattern:/|<\/style>/i,inside:c.languages.markup.tag.inside},rest:c.languages.css},alias:"language-css"}}),c.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:c.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:c.languages.css}},alias:"language-css"}},c.languages.markup.tag)),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),c.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),c.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/i,inside:{tag:{pattern:/|<\/script>/i,inside:c.languages.markup.tag.inside},rest:c.languages.javascript},alias:"language-javascript"}}),c.languages.js=c.languages.javascript,c.languages.c=c.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),c.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete c.languages.c["class-name"],delete c.languages.c["boolean"],c.languages.csharp=c.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),c.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),c.languages.cpp=c.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),c.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),c.languages.java=c.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),c.languages.php=c.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),c.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),c.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),c.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),c.languages.markup&&(c.hooks.add("before-highlight",function(a){"php"===a.language&&(a.tokenStack=[],a.backupCode=a.code,a.code=a.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(b){return a.tokenStack.push(b),"{{{PHP"+a.tokenStack.length+"}}}"}))}),c.hooks.add("before-insert",function(a){"php"===a.language&&(a.code=a.backupCode,delete a.backupCode)}),c.hooks.add("after-highlight",function(a){if("php"===a.language){for(var b,d=0;b=a.tokenStack[d];d++)a.highlightedCode=a.highlightedCode.replace("{{{PHP"+(d+1)+"}}}",c.highlight(b,a.grammar,"php").replace(/\$/g,"$$$$"));a.element.innerHTML=a.highlightedCode}}),c.hooks.add("wrap",function(a){"php"===a.language&&"markup"===a.type&&(a.content=a.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),c.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:c.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),c.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(a){a.languages.ruby=a.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var b={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:a.util.clone(a.languages.ruby)}};a.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:b}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:b}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:b}}]}(c),c}),d("tinymce/codesampleplugin/Utils",[],function(){function a(a){return a&&"PRE"==a.nodeName&&-1!==a.className.indexOf("language-")}function b(a){return function(b,c){return a(c)}}return{isCodeSample:a,trimArg:b}}),d("tinymce/codesampleplugin/Dialog",["tinymce/dom/DOMUtils","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Prism"],function(a,b,c){function d(a){var b=[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],c=a.settings.codesample_languages;return c?c:b}function e(a,b,d){a.undoManager.transact(function(){var e=f(a);d=i.encode(d),e?(a.dom.setAttrib(e,"class","language-"+b),e.innerHTML=d,c.highlightElement(e),a.selection.select(e)):(a.insertContent('

    '+d+"
    "),a.selection.select(a.$("#__new").removeAttr("id")[0]))})}function f(a){var c=a.selection.getNode();return b.isCodeSample(c)?c:null}function g(a){var b=f(a);return b?b.textContent:""}function h(a){var b,c=f(a);return c?(b=c.className.match(/language-(\w+)/),b?b[1]:""):""}var i=a.DOM;return{open:function(a){a.windowManager.open({title:"Insert/Edit code sample",minWidth:Math.min(i.getViewPort().w,a.getParam("codesample_dialog_width",800)),minHeight:Math.min(i.getViewPort().h,a.getParam("codesample_dialog_height",650)),layout:"flex",direction:"column",align:"stretch",body:[{type:"listbox",name:"language",label:"Language",maxWidth:200,value:h(a),values:d(a)},{type:"textbox",name:"code",multiline:!0,spellcheck:!1,ariaLabel:"Code view",flex:1,style:"direction: ltr; text-align: left",classes:"monospace",value:g(a),autofocus:!0}],onSubmit:function(b){e(a,b.data.language,b.data.code)}})}}}),d("tinymce/codesampleplugin/Plugin",["tinymce/Env","tinymce/PluginManager","tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Utils"],function(a,b,c,d,e){var f,g=e.trimArg;b.add("codesample",function(b,h){function i(){var a;b.inline&&f||!b.inline&&j||(b.inline?f=!0:j=!0,a=b.dom.create("link",{rel:"stylesheet",href:h+"/css/prism.css"}),b.getDoc().getElementsByTagName("head")[0].appendChild(a))}var j,k=b.$;a.ceFalse&&(b.on("PreProcess",function(a){k("pre[contenteditable=false]",a.node).filter(g(e.isCodeSample)).each(function(a,b){var c=k(b),d=b.textContent;c.attr("class",k.trim(c.attr("class"))),c.removeAttr("contentEditable"),c.empty().append(k("").each(function(){this.textContent=d}))})}),b.on("SetContent",function(){var a=k("pre").filter(g(e.isCodeSample)).filter(function(a,b){return"false"!==b.contentEditable});a.length&&b.undoManager.transact(function(){a.each(function(a,d){k(d).find("br").each(function(a,c){c.parentNode.replaceChild(b.getDoc().createTextNode("\n"),c)}),d.contentEditable=!1,d.innerHTML=b.dom.encode(d.textContent),c.highlightElement(d),d.className=k.trim(d.className)})})}),b.addCommand("codesample",function(){d.open(b)}),b.addButton("codesample",{cmd:"codesample",title:"Insert/Edit code sample"}),b.on("init",i))})}),f(["tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Plugin"])}(this); +tinymce.PluginManager.add("colorpicker",function(a){function b(b,c){function d(a){var b=new tinymce.util.Color(a),c=b.toRgb();f.fromJSON({r:c.r,g:c.g,b:c.b,hex:b.toHex().substr(1)}),e(b.toHex())}function e(a){f.find("#preview")[0].getEl().style.background=a}var f=a.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:c,onchange:function(){var a=this.rgb();f&&(f.find("#r").value(a.r),f.find("#g").value(a.g),f.find("#b").value(a.b),f.find("#hex").value(this.value().substr(1)),e(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var a,b,c=f.find("colorpicker")[0];return a=this.name(),b=this.value(),"hex"==a?(b="#"+b,d(b),void c.value(b)):(b={r:f.find("#r").value(),g:f.find("#g").value(),b:f.find("#b").value()},c.value(b),void d(b))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){b("#"+this.toJSON().hex)}});d(c)}a.settings.color_picker_callback||(a.settings.color_picker_callback=b)}); +tinymce.PluginManager.add("contextmenu",function(a){var b,c=a.settings.contextmenu_never_use_native,d=function(a){return a.ctrlKey&&!c},e=function(){return tinymce.Env.mac&&tinymce.Env.webkit};a.on("mousedown",function(b){e()&&2===b.button&&!d(b)&&a.selection.isCollapsed()&&a.once("contextmenu",function(b){a.selection.placeCaretAt(b.clientX,b.clientY)})}),a.on("contextmenu",function(c){var e;if(!d(c)){if(c.preventDefault(),e=a.settings.contextmenu||"link image inserttable | cell row column deletetable",b)b.show();else{var f=[];tinymce.each(e.split(/[ ,]/),function(b){var c=a.menuItems[b];"|"==b&&(c={text:b}),c&&(c.shortcut="",f.push(c))});for(var g=0;g
    "}var d=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent(''+c.getAttribute('),this.hide())}},tooltip:"Emoticons"})}); +tinymce.PluginManager.add("fullpage",function(a){function b(){var b=c();a.windowManager.open({title:"Document properties",data:b,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(a){d(tinymce.extend(b,a.data))}})}function c(){function b(a,b){var c=a.attr(b);return c||""}var c,d,f=e(),g={};return g.fontface=a.getParam("fullpage_default_fontface",""),g.fontsize=a.getParam("fullpage_default_fontsize",""),c=f.firstChild,7==c.type&&(g.xml_pi=!0,d=/encoding="([^"]+)"/.exec(c.value),d&&(g.docencoding=d[1])),c=f.getAll("#doctype")[0],c&&(g.doctype=""),c=f.getAll("title")[0],c&&c.firstChild&&(g.title=c.firstChild.value),k(f.getAll("meta"),function(a){var b,c=a.attr("name"),d=a.attr("http-equiv");c?g[c.toLowerCase()]=a.attr("content"):"Content-Type"==d&&(b=/charset\s*=\s*(.*)\s*/gi.exec(a.attr("content")),b&&(g.docencoding=b[1]))}),c=f.getAll("html")[0],c&&(g.langcode=b(c,"lang")||b(c,"xml:lang")),g.stylesheets=[],tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&g.stylesheets.push(a.attr("href"))}),c=f.getAll("body")[0],c&&(g.langdir=b(c,"dir"),g.style=b(c,"style"),g.visited_color=b(c,"vlink"),g.link_color=b(c,"link"),g.active_color=b(c,"alink")),g}function d(b){function c(a,b,c){a.attr(b,c?c:void 0)}function d(a){g.firstChild?g.insert(a,g.firstChild):g.append(a)}var f,g,h,j,m,n=a.dom;f=e(),g=f.getAll("head")[0],g||(j=f.getAll("html")[0],g=new l("head",1),j.firstChild?j.insert(g,j.firstChild,!0):j.append(g)),j=f.firstChild,b.xml_pi?(m='version="1.0"',b.docencoding&&(m+=' encoding="'+b.docencoding+'"'),7!=j.type&&(j=new l("xml",7),f.insert(j,f.firstChild,!0)),j.value=m):j&&7==j.type&&j.remove(),j=f.getAll("#doctype")[0],b.doctype?(j||(j=new l("#doctype",10),b.xml_pi?f.insert(j,f.firstChild):d(j)),j.value=b.doctype.substring(9,b.doctype.length-1)):j&&j.remove(),j=null,k(f.getAll("meta"),function(a){"Content-Type"==a.attr("http-equiv")&&(j=a)}),b.docencoding?(j||(j=new l("meta",1),j.attr("http-equiv","Content-Type"),j.shortEnded=!0,d(j)),j.attr("content","text/html; charset="+b.docencoding)):j&&j.remove(),j=f.getAll("title")[0],b.title?(j?j.empty():(j=new l("title",1),d(j)),j.append(new l("#text",3)).value=b.title):j&&j.remove(),k("keywords,description,author,copyright,robots".split(","),function(a){var c,e,g=f.getAll("meta"),h=b[a];for(c=0;c"))}function e(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(i)}function f(b){function c(a){return a.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase()})}var d,f,h,l,m=b.content,n="",o=a.dom;if(!b.selection&&!("raw"==b.format&&i||b.source_view&&a.getParam("fullpage_hide_in_source_view"))){0!==m.length||b.source_view||(m=tinymce.trim(i)+"\n"+tinymce.trim(m)+"\n"+tinymce.trim(j)),m=m.replace(/<(\/?)BODY/gi,"<$1body"),d=m.indexOf("",d),i=c(m.substring(0,d+1)),f=m.indexOf("\n"),h=e(),k(h.getAll("style"),function(a){a.firstChild&&(n+=a.firstChild.value)}),l=h.getAll("body")[0],l&&o.setAttribs(a.getBody(),{style:l.attr("style")||"",dir:l.attr("dir")||"",vLink:l.attr("vlink")||"",link:l.attr("link")||"",aLink:l.attr("alink")||""}),o.remove("fullpage_styles");var p=a.getDoc().getElementsByTagName("head")[0];n&&(o.add(p,"style",{id:"fullpage_styles"},n),l=o.get("fullpage_styles"),l.styleSheet&&(l.styleSheet.cssText=n));var q={};tinymce.each(p.getElementsByTagName("link"),function(a){"stylesheet"==a.rel&&a.getAttribute("data-mce-fullpage")&&(q[a.href]=a)}),tinymce.each(h.getAll("link"),function(a){var b=a.attr("href");q[b]||"stylesheet"!=a.attr("rel")||o.add(p,"link",{rel:"stylesheet",text:"text/css",href:b,"data-mce-fullpage":"1"}),delete q[b]}),tinymce.each(q,function(a){a.parentNode.removeChild(a)})}}function g(){var b,c="",d="";return a.getParam("fullpage_default_xml_pi")&&(c+='\n'),c+=a.getParam("fullpage_default_doctype",""),c+="\n\n\n",(b=a.getParam("fullpage_default_title"))&&(c+=""+b+"\n"),(b=a.getParam("fullpage_default_encoding"))&&(c+='\n'),(b=a.getParam("fullpage_default_font_family"))&&(d+="font-family: "+b+";"),(b=a.getParam("fullpage_default_font_size"))&&(d+="font-size: "+b+";"),(b=a.getParam("fullpage_default_text_color"))&&(d+="color: "+b+";"),c+="\n\n"}function h(b){b.selection||b.source_view&&a.getParam("fullpage_hide_in_source_view")||(b.content=tinymce.trim(i)+"\n"+tinymce.trim(b.content)+"\n"+tinymce.trim(j))}var i,j,k=tinymce.each,l=tinymce.html.Node;a.addCommand("mceFullPageProperties",b),a.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),a.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),a.on("BeforeSetContent",f),a.on("GetContent",h)}); +tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){var a=tinymce.DOM.getViewPort();return{x:a.x,y:a.y}}function d(a){scrollTo(a.x,a.y)}function e(){function e(){m.setStyle(p,"height",b().h-(o.clientHeight-p.clientHeight))}var n,o,p,q,r=document.body,s=document.documentElement;l=!l,o=a.getContainer(),n=o.style,p=a.getContentAreaContainer().firstChild,q=p.style,l?(k=c(),f=q.width,g=q.height,q.width=q.height="100%",i=n.width,j=n.height,n.width=n.height="",m.addClass(r,"mce-fullscreen"),m.addClass(s,"mce-fullscreen"),m.addClass(o,"mce-fullscreen"),m.bind(window,"resize",e),e(),h=e):(q.width=f,q.height=g,i&&(n.width=i),j&&(n.height=j),m.removeClass(r,"mce-fullscreen"),m.removeClass(s,"mce-fullscreen"),m.removeClass(o,"mce-fullscreen"),m.unbind(window,"resize",h),d(k)),a.fire("FullscreenStateChanged",{state:l})}var f,g,h,i,j,k,l=!1,m=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Ctrl+Shift+F","",e)}),a.on("remove",function(){h&&m.unbind(window,"resize",h)}),a.addCommand("mceFullScreen",e),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){e(),a.focus()},onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Shift+F",onClick:e,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return l}})}); +tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"
    ")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); +tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(Math.max(d.width,d.clientWidth),Math.max(d.height,d.clientHeight))},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&o&&p&&c&&d&&(o!=c?(d=Math.round(c/o*d),isNaN(d)||b.value(d)):(c=Math.round(d/p*c),isNaN(c)||a.value(c))),o=c,p=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){s.width||s.height||!u||t.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),c()},b.onerror=c}var c,d;j(),e(),s=tinymce.extend(s,l.toJSON()),s.alt||(s.alt=""),s.title||(s.title=""),""===s.width&&(s.width=null),""===s.height&&(s.height=null),s.style||(s.style=null),s={src:s.src,alt:s.alt,title:s.title,width:s.width,height:s.height,style:s.style,caption:s.caption,"class":s["class"]},a.undoManager.transact(function(){function e(b){return a.schema.getTextBlockElements()[b.nodeName]}if(!s.src)return void(m&&(t.remove(m),a.focus(),a.nodeChanged()));if(""===s.title&&(s.title=null),m?t.setAttribs(m,s):(s.id="__mcenew",a.focus(),a.selection.setContent(t.createHTML("img",s)),m=t.get("__mcenew"),t.setAttrib(m,"id",null)),a.editorUpload.uploadImagesAuto(),s.caption===!1&&t.is(m.parentNode,"figure.image")&&(c=m.parentNode,t.insertAfter(m,c),t.remove(c)),s.caption!==!0)b(m);else if(!t.is(m.parentNode,"figure.image")){d=m,m=m.cloneNode(!0),c=t.create("figure",{"class":"image"}),c.appendChild(m),c.appendChild(t.create("figcaption",{contentEditable:!0},"Caption")),c.contentEditable=!1;var f=t.getParent(d,e);f?t.split(f,d,c):t.replace(c,d),a.selection.select(c)}})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};q&&q.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&u&&(o=a.width,p=a.height,l.find("#width").value(o),l.find("#height").value(p))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=t.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=t.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(c["margin-top"]===c["margin-bottom"]?l.find("#vspace").value(g(c["margin-top"])):l.find("#vspace").value(""),c["margin-right"]===c["margin-left"]?l.find("#hspace").value(g(c["margin-right"])):l.find("#hspace").value("")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(c))))}}var l,m,n,o,p,q,r,s={},t=a.dom,u=a.settings.image_dimensions!==!1;m=a.selection.getNode(),n=t.getParent(m,"figure.image"),n&&(m=t.select("img",n)[0]),m&&("IMG"!=m.nodeName||m.getAttribute("data-mce-object")||m.getAttribute("data-mce-placeholder"))&&(m=null),m&&(o=t.getAttrib(m,"width"),p=t.getAttrib(m,"height"),s={src:t.getAttrib(m,"src"),alt:t.getAttrib(m,"alt"),title:t.getAttrib(m,"title"),"class":t.getAttrib(m,"class"),width:o,height:p,caption:!!n}),d&&(q={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:s.src&&a.convertURL(s.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){q=this}}),a.settings.image_class_list&&(r={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var v=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},q];a.settings.image_description!==!1&&v.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&v.push({name:"title",type:"textbox",label:"Image Title"}),u&&v.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),v.push(r),a.settings.image_caption&&tinymce.Env.ceFalse&&v.push({name:"caption",type:"checkbox",label:"Caption"}),a.settings.image_advtab?(m&&(m.style.marginLeft&&m.style.marginRight&&m.style.marginLeft===m.style.marginRight&&(s.hspace=g(m.style.marginLeft)),m.style.marginTop&&m.style.marginBottom&&m.style.marginTop===m.style.marginBottom&&(s.vspace=g(m.style.marginTop)),m.style.borderWidth&&(s.border=g(m.style.borderWidth)),s.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(m,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:s,bodyType:"tabpanel",body:[{title:"General",type:"form",items:v},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:s,body:v,onSubmit:f})}a.on("preInit",function(){function b(a){var b=a.attr("class");return b&&/\bimage\b/.test(b)}function c(a){return function(c){function d(b){b.attr("contenteditable",a?"true":null)}for(var e,f=c.length;f--;)e=c[f],b(e)&&(e.attr("contenteditable",a?"false":null),tinymce.each(e.getAll("figcaption"),d))}}a.parser.addNodeFilter("figure",c(!0)),a.serializer.addNodeFilter("figure",c(!1))}),a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))}); +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.PluginManager),h("2",tinymce.Env),h("3",tinymce.util.Promise),h("4",tinymce.util.URI),h("5",tinymce.util.Tools),h("6",tinymce.util.Delay),g("m",[],function(){function a(a,b){return d(document.createElement("canvas"),a,b)}function b(a){return a.getContext("2d")}function c(a){var b=null;try{b=a.getContext("webgl")||a.getContext("experimental-webgl")}catch(c){}return b||(b=null),b}function d(a,b,c){return a.width=b,a.height=c,a}return{create:a,resize:d,get2dContext:b,get3dContext:c}}),g("n",[],function(){function a(a){return a.naturalWidth||a.width}function b(a){return a.naturalHeight||a.height}return{getWidth:a,getHeight:b}}),g("o",[],function(){function a(a,b){return function(){a.apply(b,arguments)}}function b(b){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof b)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],h(b,a(d,this),a(e,this))}function c(a){var b=this;return null===this._state?void this._deferreds.push(a):void i(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function d(b){try{if(b===this)throw new TypeError("A promise cannot be resolved with itself.");if(b&&("object"==typeof b||"function"==typeof b)){var c=b.then;if("function"==typeof c)return void h(a(c,b),a(d,this),a(e,this))}this._state=!0,this._value=b,f.call(this)}catch(g){e.call(this,g)}}function e(a){this._state=!1,this._value=a,f.call(this)}function f(){for(var a=0,b=this._deferreds.length;b>a;a++)c.call(this,this._deferreds[a]);this._deferreds=null}function g(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function h(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}if(window.Promise)return window.Promise;var i=b.immediateFn||"function"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},j=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};return b.prototype["catch"]=function(a){return this.then(null,a)},b.prototype.then=function(a,d){var e=this;return new b(function(b,f){c.call(e,new g(a,d,b,f))})},b.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&j(arguments[0])?arguments[0]:arguments);return new b(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},b}),g("p",[],function(){function a(a){var b=document.createElement("a");return b.href=a,b.pathname}function b(b){var c=a(b).split("."),d=c[c.length-1],e={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"};return d&&(d=d.toLowerCase()),e[d]}return{guessMimeType:b}}),g("e",["o","m","p","n"],function(a,b,c,d){function e(b){return new a(function(a){function c(){b.removeEventListener("load",c),a(b)}b.complete?a(b):b.addEventListener("load",c)})}function f(a){return e(a).then(function(a){var c,e;return e=b.create(d.getWidth(a),d.getHeight(a)),c=b.get2dContext(e),c.drawImage(a,0,0),e})}function g(a){return e(a).then(function(a){var b=a.src;return 0===b.indexOf("blob:")?i(b):0===b.indexOf("data:")?j(b):f(a).then(function(a){return j(a.toDataURL(c.guessMimeType(b)))})})}function h(b){return new a(function(a){function c(){d.removeEventListener("load",c),a(d)}var d=new Image;d.addEventListener("load",c),d.src=URL.createObjectURL(b),d.complete&&c()})}function i(b){return new a(function(a){var c=new XMLHttpRequest;c.open("GET",b,!0),c.responseType="blob",c.onload=function(){200==this.status&&a(this.response)},c.send()})}function j(b){return new a(function(a){var c,d,e,f,g,h;if(b=b.split(","),f=/data:([^;]+)/.exec(b[0]),f&&(g=f[1]),c=atob(b[1]),window.WebKitBlobBuilder){for(h=new WebKitBlobBuilder,d=new ArrayBuffer(c.length),e=0;ec?a=c:b>a&&(a=b),a}function b(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function c(a,b){var c,d,e,f,g=[],h=new Array(10);for(c=0;5>c;c++){for(d=0;5>d;d++)g[d]=b[d+5*c];for(d=0;5>d;d++){for(f=0,e=0;5>e;e++)f+=a[d+5*e]*g[e];h[d+5*c]=f}}return h}function d(b,c){return c=a(c,0,1),b.map(function(b,d){return d%6===0?b=1-(1-b)*c:b*=c,a(b,0,1)})}function e(b,d){var e;return d=a(d,-1,1),d*=100,0>d?e=127+d/100*127:(e=d%1,e=0===e?l[d]:l[Math.floor(d)]*(1-e)+l[Math.floor(d)+1]*e,e=127*e+127),c(b,[e/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}function f(b,d){var e,f,g,h;return d=a(d,-1,1),e=1+(d>0?3*d:d),f=.3086,g=.6094,h=.082,c(b,[f*(1-e)+e,g*(1-e),h*(1-e),0,0,f*(1-e),g*(1-e)+e,h*(1-e),0,0,f*(1-e),g*(1-e),h*(1-e)+e,0,0,0,0,0,1,0,0,0,0,0,1])}function g(b,d){var e,f,g,h,i;return d=a(d,-180,180)/180*Math.PI,e=Math.cos(d),f=Math.sin(d),g=.213,h=.715,i=.072,c(b,[g+e*(1-g)+f*-g,h+e*-h+f*-h,i+e*-i+f*(1-i),0,0,g+e*-g+.143*f,h+e*(1-h)+.14*f,i+e*-i+f*-.283,0,0,g+e*-g+f*-(1-g),h+e*-h+f*h,i+e*(1-i)+f*i,0,0,0,0,0,1,0,0,0,0,0,1])}function h(b,d){return d=a(255*d,-255,255),c(b,[1,0,0,0,d,0,1,0,0,d,0,0,1,0,d,0,0,0,1,0,0,0,0,0,1])}function i(b,d,e,f){return d=a(d,0,2),e=a(e,0,2),f=a(f,0,2),c(b,[d,0,0,0,0,0,e,0,0,0,0,0,f,0,0,0,0,0,1,0,0,0,0,0,1])}function j(b,e){return e=a(e,0,1),c(b,d([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e))}function k(b,e){return e=a(e,0,1),c(b,d([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e))}var l=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];return{identity:b,adjust:d,multiply:c,adjustContrast:e,adjustBrightness:h,adjustSaturation:f,adjustHue:g,adjustColors:i,adjustSepia:j,adjustGrayscale:k}}),g("c",["m","n","e","q"],function(a,b,c,d){function e(d,e){return c.blobToImage(d).then(function(d){function f(a,b){var c,d,e,f,g,h=a.data,i=b[0],j=b[1],k=b[2],l=b[3],m=b[4],n=b[5],o=b[6],p=b[7],q=b[8],r=b[9],s=b[10],t=b[11],u=b[12],v=b[13],w=b[14],x=b[15],y=b[16],z=b[17],A=b[18],B=b[19];for(g=0;gc?a=c:b>a&&(a=b),a}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;for(g=Math.round(Math.sqrt(c.length)),h=Math.floor(g/2),e=a.data,f=b.data,t=a.width,u=a.height,j=0;u>j;j++)for(i=0;t>i;i++){for(k=l=m=0,o=0;g>o;o++)for(n=0;g>n;n++)p=d(i+n-h,0,t-1),q=d(j+o-h,0,u-1),r=4*(q*t+p),s=c[o*g+n],k+=e[r]*s,l+=e[r+1]*s,m+=e[r+2]*s;r=4*(j*t+i),f[r]=d(k,0,255),f[r+1]=d(l,0,255),f[r+2]=d(m,0,255)}return b}var g,h,i=a.create(b.getWidth(d),b.getHeight(d)),j=a.get2dContext(i);return j.drawImage(d,0,0),k(d),g=j.getImageData(0,0,i.width,i.height),h=j.getImageData(0,0,i.width,i.height),h=f(g,h,e),j.putImageData(h,0,0),c.canvasToBlob(i)})}function g(d){return function(e,f){return c.blobToImage(e).then(function(e){function g(a,b){var c,d=a.data;for(c=0;ci||i>2)&&(i=.5>i?.5:2,k=!0),(.5>j||j>2)&&(j=.5>j?.5:2,k=!0);var l=f(a,i,j);return k?l.then(function(a){return e(a,b,c)}):l}function f(b,e,f){return new a(function(a){var g=d.getWidth(b),h=d.getHeight(b),i=Math.floor(g*e),j=Math.floor(h*f),k=c.create(i,j),l=c.get2dContext(k);l.drawImage(b,0,0,g,h,0,0,i,j),a(k)})}return{scale:e}}),g("d",["e","m","n","r"],function(a,b,c,d){function e(d,e){return a.blobToImage(d).then(function(f){var g=b.create(c.getWidth(f),c.getHeight(f)),h=b.get2dContext(g),j=0,k=0;return e=0>e?360+e:e,90!=e&&270!=e||b.resize(g,g.height,g.width),90!=e&&180!=e||(j=g.width),270!=e&&180!=e||(k=g.height),h.translate(j,k),h.rotate(e*Math.PI/180),h.drawImage(f,0,0),i(f),a.canvasToBlob(g,d.type)})}function f(d,e){return a.blobToImage(d).then(function(d){var f=b.create(c.getWidth(d),c.getHeight(d)),g=b.get2dContext(f);return"v"==e?(g.scale(1,-1),g.drawImage(d,0,-f.height)):(g.scale(-1,1),g.drawImage(d,-f.width,0)),i(d),a.canvasToBlob(f)})}function g(c,d,e,f,g){return a.blobToImage(c).then(function(c){var h=b.create(f,g),j=b.get2dContext(h);return j.drawImage(c,-d,-e),i(c),a.canvasToBlob(h)})}function h(b,c,e){return a.blobToImage(b).then(function(f){var g;return g=d.scale(f,c,e).then(function(c){return a.canvasToBlob(c,b.type)}).then(j(f))["catch"](j(f))})}var i=a.revokeImageUrl,j=function(a){return function(b){return i(a),b}};return{rotate:e,flip:f,crop:g,resize:h}}),g("7",["c","d"],function(a,b){var c=function(b){return a.invert(b)},d=function(b){return a.sharpen(b)},e=function(b){return a.emboss(b)},f=function(b,c){return a.gamma(b,c)},g=function(b,c){return a.exposure(b,c)},h=function(b,c,d,e){return a.colorize(b,c,d,e)},i=function(b,c){return a.brightness(b,c)},j=function(b,c){return a.hue(b,c)},k=function(b,c){return a.saturate(b,c)},l=function(b,c){return a.contrast(b,c)},m=function(b,c){return a.grayscale(b,c)},n=function(b,c){return a.sepia(b,c)},o=function(a,c){return b.flip(a,c)},p=function(a,c,d,e,f){return b.crop(a,c,d,e,f)},q=function(a,c,d){return b.resize(a,c,d)},r=function(a,c){return b.rotate(a,c)};return{invert:c,sharpen:d,emboss:e,brightness:i,hue:j,saturate:k,contrast:l,grayscale:m,sepia:n,colorize:h,gamma:f,exposure:g,flip:o,crop:p,resize:q,rotate:r}}),g("8",["e"],function(a){var b=function(b){return a.blobToImage(b)},c=function(b){return a.imageToBlob(b)},d=function(b){return a.blobToDataUri(b)},e=function(b){return a.blobToBase64(b)};return{blobToImage:b,imageToBlob:c,blobToDataUri:d,blobToBase64:e}}),h("f",tinymce.dom.DOMUtils),h("g",tinymce.ui.Factory),h("h",tinymce.ui.Form),h("i",tinymce.ui.Container),h("s",tinymce.ui.Control),h("t",tinymce.ui.DragHelper),h("u",tinymce.geom.Rect),h("w",tinymce.dom.DomQuery),h("x",tinymce.util.Observable),h("y",tinymce.util.VK),g("v",["w","t","u","5","x","y"],function(a,b,c,d,e,f){var g=0;return function(h,i,j,k,l){function m(a,b){return{x:b.x+a.x,y:b.y+a.y,w:b.w,h:b.h}}function n(a,b){return{x:b.x-a.x,y:b.y-a.y,w:b.w,h:b.h}}function o(){return n(j,h)}function p(a,b,d,e){var f,g,i,k,l;f=b.x,g=b.y,i=b.w,k=b.h,f+=d*a.deltaX,g+=e*a.deltaY,i+=d*a.deltaW,k+=e*a.deltaH,20>i&&(i=20),20>k&&(k=20),l=h=c.clamp({x:f,y:g,w:i,h:k},j,"move"==a.name),l=n(j,l),y.fire("updateRect",{rect:l}),v(l)}function q(){function c(a){var c;return new b(D,{document:k.ownerDocument,handle:D+"-"+a.name,start:function(){c=h},drag:function(b){p(a,c,b.deltaX,b.deltaY)}})}a('
    ').appendTo(k),d.each(B,function(b){a("#"+D,k).append('