From b50c9267451a5a7d1957f5a7a27c9053a70c5b20 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 11:21:53 -0700 Subject: [PATCH 1/8] webui: Renamed themes dir to ui - Eliminated intermediate bootstrap dir --- CHANGELOG.md | 2 ++ pkg/config/config.go | 6 +++--- {themes => ui}/greeting.html | 0 {themes/bootstrap/public => ui/static}/bower.json | 0 .../static}/bower_components/bootstrap/.bower.json | 0 .../static}/bower_components/bootstrap/CHANGELOG.md | 0 .../static}/bower_components/bootstrap/Gemfile | 0 .../static}/bower_components/bootstrap/Gemfile.lock | 0 .../static}/bower_components/bootstrap/Gruntfile.js | 0 .../bower_components/bootstrap/ISSUE_TEMPLATE.md | 0 .../static}/bower_components/bootstrap/LICENSE | 0 .../static}/bower_components/bootstrap/README.md | 0 .../static}/bower_components/bootstrap/bower.json | 0 .../bootstrap/dist/css/bootstrap-theme.css | 0 .../bootstrap/dist/css/bootstrap-theme.css.map | 0 .../bootstrap/dist/css/bootstrap-theme.min.css | 0 .../bootstrap/dist/css/bootstrap-theme.min.css.map | 0 .../bootstrap/dist/css/bootstrap.css | 0 .../bootstrap/dist/css/bootstrap.css.map | 0 .../bootstrap/dist/css/bootstrap.min.css | 0 .../bootstrap/dist/css/bootstrap.min.css.map | 0 .../dist/fonts/glyphicons-halflings-regular.eot | Bin .../dist/fonts/glyphicons-halflings-regular.svg | 0 .../dist/fonts/glyphicons-halflings-regular.ttf | Bin .../dist/fonts/glyphicons-halflings-regular.woff | Bin .../dist/fonts/glyphicons-halflings-regular.woff2 | Bin .../bower_components/bootstrap/dist/js/bootstrap.js | 0 .../bootstrap/dist/js/bootstrap.min.js | 0 .../bower_components/bootstrap/dist/js/npm.js | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../bower_components/bootstrap/grunt/.jshintrc | 0 .../bootstrap/grunt/bs-commonjs-generator.js | 0 .../bootstrap/grunt/bs-glyphicons-data-generator.js | 0 .../bootstrap/grunt/bs-lessdoc-parser.js | 0 .../bootstrap/grunt/bs-raw-files-generator.js | 0 .../bootstrap/grunt/change-version.js | 0 .../bootstrap/grunt/configBridge.json | 0 .../bootstrap/grunt/npm-shrinkwrap.json | 0 .../bootstrap/grunt/sauce_browsers.yml | 0 .../static}/bower_components/bootstrap/js/.jscsrc | 0 .../static}/bower_components/bootstrap/js/.jshintrc | 0 .../static}/bower_components/bootstrap/js/affix.js | 0 .../static}/bower_components/bootstrap/js/alert.js | 0 .../static}/bower_components/bootstrap/js/button.js | 0 .../bower_components/bootstrap/js/carousel.js | 0 .../bower_components/bootstrap/js/collapse.js | 0 .../bower_components/bootstrap/js/dropdown.js | 0 .../static}/bower_components/bootstrap/js/modal.js | 0 .../bower_components/bootstrap/js/popover.js | 0 .../bower_components/bootstrap/js/scrollspy.js | 0 .../static}/bower_components/bootstrap/js/tab.js | 0 .../bower_components/bootstrap/js/tooltip.js | 0 .../bower_components/bootstrap/js/transition.js | 0 .../bower_components/bootstrap/less/.csscomb.json | 0 .../bower_components/bootstrap/less/.csslintrc | 0 .../bower_components/bootstrap/less/alerts.less | 0 .../bower_components/bootstrap/less/badges.less | 0 .../bower_components/bootstrap/less/bootstrap.less | 0 .../bootstrap/less/breadcrumbs.less | 0 .../bootstrap/less/button-groups.less | 0 .../bower_components/bootstrap/less/buttons.less | 0 .../bower_components/bootstrap/less/carousel.less | 0 .../bower_components/bootstrap/less/close.less | 0 .../bower_components/bootstrap/less/code.less | 0 .../bootstrap/less/component-animations.less | 0 .../bower_components/bootstrap/less/dropdowns.less | 0 .../bower_components/bootstrap/less/forms.less | 0 .../bower_components/bootstrap/less/glyphicons.less | 0 .../bower_components/bootstrap/less/grid.less | 0 .../bootstrap/less/input-groups.less | 0 .../bower_components/bootstrap/less/jumbotron.less | 0 .../bower_components/bootstrap/less/labels.less | 0 .../bower_components/bootstrap/less/list-group.less | 0 .../bower_components/bootstrap/less/media.less | 0 .../bower_components/bootstrap/less/mixins.less | 0 .../bootstrap/less/mixins/alerts.less | 0 .../bootstrap/less/mixins/background-variant.less | 0 .../bootstrap/less/mixins/border-radius.less | 0 .../bootstrap/less/mixins/buttons.less | 0 .../bootstrap/less/mixins/center-block.less | 0 .../bootstrap/less/mixins/clearfix.less | 0 .../bootstrap/less/mixins/forms.less | 0 .../bootstrap/less/mixins/gradients.less | 0 .../bootstrap/less/mixins/grid-framework.less | 0 .../bootstrap/less/mixins/grid.less | 0 .../bootstrap/less/mixins/hide-text.less | 0 .../bootstrap/less/mixins/image.less | 0 .../bootstrap/less/mixins/labels.less | 0 .../bootstrap/less/mixins/list-group.less | 0 .../bootstrap/less/mixins/nav-divider.less | 0 .../bootstrap/less/mixins/nav-vertical-align.less | 0 .../bootstrap/less/mixins/opacity.less | 0 .../bootstrap/less/mixins/pagination.less | 0 .../bootstrap/less/mixins/panels.less | 0 .../bootstrap/less/mixins/progress-bar.less | 0 .../bootstrap/less/mixins/reset-filter.less | 0 .../bootstrap/less/mixins/reset-text.less | 0 .../bootstrap/less/mixins/resize.less | 0 .../less/mixins/responsive-visibility.less | 0 .../bootstrap/less/mixins/size.less | 0 .../bootstrap/less/mixins/tab-focus.less | 0 .../bootstrap/less/mixins/table-row.less | 0 .../bootstrap/less/mixins/text-emphasis.less | 0 .../bootstrap/less/mixins/text-overflow.less | 0 .../bootstrap/less/mixins/vendor-prefixes.less | 0 .../bower_components/bootstrap/less/modals.less | 0 .../bower_components/bootstrap/less/navbar.less | 0 .../bower_components/bootstrap/less/navs.less | 0 .../bower_components/bootstrap/less/normalize.less | 0 .../bower_components/bootstrap/less/pager.less | 0 .../bower_components/bootstrap/less/pagination.less | 0 .../bower_components/bootstrap/less/panels.less | 0 .../bower_components/bootstrap/less/popovers.less | 0 .../bower_components/bootstrap/less/print.less | 0 .../bootstrap/less/progress-bars.less | 0 .../bootstrap/less/responsive-embed.less | 0 .../bootstrap/less/responsive-utilities.less | 0 .../bootstrap/less/scaffolding.less | 0 .../bower_components/bootstrap/less/tables.less | 0 .../bower_components/bootstrap/less/theme.less | 0 .../bower_components/bootstrap/less/thumbnails.less | 0 .../bower_components/bootstrap/less/tooltip.less | 0 .../bower_components/bootstrap/less/type.less | 0 .../bower_components/bootstrap/less/utilities.less | 0 .../bower_components/bootstrap/less/variables.less | 0 .../bower_components/bootstrap/less/wells.less | 0 .../bower_components/bootstrap/nuget/MyGet.ps1 | 0 .../bootstrap/nuget/bootstrap.less.nuspec | 0 .../bootstrap/nuget/bootstrap.nuspec | 0 .../static}/bower_components/bootstrap/package.js | 0 .../static}/bower_components/bootstrap/package.json | 0 .../static}/bower_components/clipboard/.bower.json | 0 .../static}/bower_components/clipboard/bower.json | 0 .../bower_components/clipboard/contributing.md | 0 .../bower_components/clipboard/dist/clipboard.js | 0 .../clipboard/dist/clipboard.min.js | 0 .../static}/bower_components/clipboard/package.js | 0 .../static}/bower_components/clipboard/package.json | 0 .../static}/bower_components/clipboard/readme.md | 0 .../bower_components/jquery-color/.bower.json | 0 .../bower_components/jquery-color/.gitignore | 0 .../bower_components/jquery-color/.gitmodules | 0 .../static}/bower_components/jquery-color/.jshintrc | 0 .../bower_components/jquery-color/AUTHORS.TXT | 0 .../bower_components/jquery-color/MIT-LICENSE.txt | 0 .../static}/bower_components/jquery-color/README.md | 0 .../bower_components/jquery-color/color.jquery.json | 0 .../static}/bower_components/jquery-color/grunt.js | 0 .../bower_components/jquery-color/jquery.color.js | 0 .../jquery-color/jquery.color.svg-names.js | 0 .../bower_components/jquery-color/package.json | 0 .../jquery-color/test/data/swarminject.js | 0 .../jquery-color/test/data/testinit.js | 0 .../bower_components/jquery-color/test/index.html | 0 .../jquery-color/test/jquery-1.5.1.js | 0 .../jquery-color/test/jquery-1.5.2.js | 0 .../jquery-color/test/jquery-1.5.js | 0 .../jquery-color/test/jquery-1.6.1.js | 0 .../jquery-color/test/jquery-1.6.2.js | 0 .../jquery-color/test/jquery-1.6.3.js | 0 .../jquery-color/test/jquery-1.6.4.js | 0 .../jquery-color/test/jquery-1.6.js | 0 .../jquery-color/test/jquery-1.7.1.js | 0 .../jquery-color/test/jquery-1.7.2.js | 0 .../jquery-color/test/jquery-1.7.js | 0 .../bower_components/jquery-color/test/jquery.js | 0 .../bower_components/jquery-color/test/test.html | 0 .../jquery-color/test/unit/.jshintrc | 0 .../jquery-color/test/unit/color.js | 0 .../jquery-load-template/.bower.json | 0 .../jquery-load-template/bower.json | 0 .../dist/jquery.loadTemplate.js | 0 .../dist/jquery.loadTemplate.min.js | 0 .../bower_components/jquery-sparkline/.bower.json | 0 .../bower_components/jquery-sparkline/Changelog.txt | 0 .../bower_components/jquery-sparkline/Makefile | 0 .../bower_components/jquery-sparkline/README.md | 0 .../bower_components/jquery-sparkline/bower.json | 0 .../jquery-sparkline/dist/jquery.sparkline.js | 0 .../jquery-sparkline/dist/jquery.sparkline.min.js | 0 .../bower_components/jquery-sparkline/minheader.txt | 0 .../jquery-sparkline/sparkline.jquery.json | 0 .../bower_components/jquery-sparkline/src/base.js | 0 .../jquery-sparkline/src/chart-bar.js | 0 .../jquery-sparkline/src/chart-box.js | 0 .../jquery-sparkline/src/chart-bullet.js | 0 .../jquery-sparkline/src/chart-discrete.js | 0 .../jquery-sparkline/src/chart-line.js | 0 .../jquery-sparkline/src/chart-pie.js | 0 .../jquery-sparkline/src/chart-tristate.js | 0 .../jquery-sparkline/src/defaults.js | 0 .../bower_components/jquery-sparkline/src/footer.js | 0 .../bower_components/jquery-sparkline/src/header.js | 0 .../jquery-sparkline/src/interact.js | 0 .../jquery-sparkline/src/rangemap.js | 0 .../jquery-sparkline/src/simpledraw.js | 0 .../bower_components/jquery-sparkline/src/utils.js | 0 .../jquery-sparkline/src/vcanvas-base.js | 0 .../jquery-sparkline/src/vcanvas-canvas.js | 0 .../jquery-sparkline/src/vcanvas-vml.js | 0 .../bower_components/jquery-sparkline/version.txt | 0 .../static}/bower_components/jquery/.bower.json | 0 .../static}/bower_components/jquery/AUTHORS.txt | 0 .../static}/bower_components/jquery/LICENSE.txt | 0 .../static}/bower_components/jquery/README.md | 0 .../static}/bower_components/jquery/bower.json | 0 .../static}/bower_components/jquery/dist/jquery.js | 0 .../bower_components/jquery/dist/jquery.min.js | 0 .../bower_components/jquery/dist/jquery.min.map | 0 .../jquery/external/sizzle/LICENSE.txt | 0 .../jquery/external/sizzle/dist/sizzle.js | 0 .../jquery/external/sizzle/dist/sizzle.min.js | 0 .../jquery/external/sizzle/dist/sizzle.min.map | 0 .../static}/bower_components/jquery/src/.jshintrc | 0 .../static}/bower_components/jquery/src/ajax.js | 0 .../bower_components/jquery/src/ajax/jsonp.js | 0 .../bower_components/jquery/src/ajax/load.js | 0 .../bower_components/jquery/src/ajax/parseJSON.js | 0 .../bower_components/jquery/src/ajax/parseXML.js | 0 .../bower_components/jquery/src/ajax/script.js | 0 .../jquery/src/ajax/var/location.js | 0 .../bower_components/jquery/src/ajax/var/nonce.js | 0 .../bower_components/jquery/src/ajax/var/rquery.js | 0 .../static}/bower_components/jquery/src/ajax/xhr.js | 0 .../bower_components/jquery/src/attributes.js | 0 .../bower_components/jquery/src/attributes/attr.js | 0 .../jquery/src/attributes/classes.js | 0 .../bower_components/jquery/src/attributes/prop.js | 0 .../jquery/src/attributes/support.js | 0 .../bower_components/jquery/src/attributes/val.js | 0 .../bower_components/jquery/src/callbacks.js | 0 .../static}/bower_components/jquery/src/core.js | 0 .../bower_components/jquery/src/core/access.js | 0 .../bower_components/jquery/src/core/init.js | 0 .../bower_components/jquery/src/core/parseHTML.js | 0 .../bower_components/jquery/src/core/ready.js | 0 .../jquery/src/core/var/rsingleTag.js | 0 .../static}/bower_components/jquery/src/css.js | 0 .../bower_components/jquery/src/css/addGetHookIf.js | 0 .../bower_components/jquery/src/css/adjustCSS.js | 0 .../bower_components/jquery/src/css/curCSS.js | 0 .../jquery/src/css/defaultDisplay.js | 0 .../jquery/src/css/hiddenVisibleSelectors.js | 0 .../bower_components/jquery/src/css/showHide.js | 0 .../bower_components/jquery/src/css/support.js | 0 .../jquery/src/css/var/cssExpand.js | 0 .../jquery/src/css/var/getStyles.js | 0 .../bower_components/jquery/src/css/var/isHidden.js | 0 .../bower_components/jquery/src/css/var/rmargin.js | 0 .../jquery/src/css/var/rnumnonpx.js | 0 .../bower_components/jquery/src/css/var/swap.js | 0 .../static}/bower_components/jquery/src/data.js | 0 .../bower_components/jquery/src/data/Data.js | 0 .../jquery/src/data/var/acceptData.js | 0 .../jquery/src/data/var/dataPriv.js | 0 .../jquery/src/data/var/dataUser.js | 0 .../static}/bower_components/jquery/src/deferred.js | 0 .../bower_components/jquery/src/deprecated.js | 0 .../bower_components/jquery/src/dimensions.js | 0 .../static}/bower_components/jquery/src/effects.js | 0 .../bower_components/jquery/src/effects/Tween.js | 0 .../jquery/src/effects/animatedSelector.js | 0 .../static}/bower_components/jquery/src/event.js | 0 .../bower_components/jquery/src/event/ajax.js | 0 .../bower_components/jquery/src/event/alias.js | 0 .../bower_components/jquery/src/event/focusin.js | 0 .../bower_components/jquery/src/event/support.js | 0 .../bower_components/jquery/src/event/trigger.js | 0 .../bower_components/jquery/src/exports/amd.js | 0 .../bower_components/jquery/src/exports/global.js | 0 .../static}/bower_components/jquery/src/intro.js | 0 .../static}/bower_components/jquery/src/jquery.js | 0 .../bower_components/jquery/src/manipulation.js | 0 .../jquery/src/manipulation/_evalUrl.js | 0 .../jquery/src/manipulation/buildFragment.js | 0 .../jquery/src/manipulation/getAll.js | 0 .../jquery/src/manipulation/setGlobalEval.js | 0 .../jquery/src/manipulation/support.js | 0 .../jquery/src/manipulation/var/rcheckableType.js | 0 .../jquery/src/manipulation/var/rscriptType.js | 0 .../jquery/src/manipulation/var/rtagName.js | 0 .../jquery/src/manipulation/wrapMap.js | 0 .../static}/bower_components/jquery/src/offset.js | 0 .../static}/bower_components/jquery/src/outro.js | 0 .../static}/bower_components/jquery/src/queue.js | 0 .../bower_components/jquery/src/queue/delay.js | 0 .../bower_components/jquery/src/selector-native.js | 0 .../bower_components/jquery/src/selector-sizzle.js | 0 .../static}/bower_components/jquery/src/selector.js | 0 .../bower_components/jquery/src/serialize.js | 0 .../bower_components/jquery/src/traversing.js | 0 .../jquery/src/traversing/findFilter.js | 0 .../jquery/src/traversing/var/dir.js | 0 .../jquery/src/traversing/var/rneedsContext.js | 0 .../jquery/src/traversing/var/siblings.js | 0 .../static}/bower_components/jquery/src/var/arr.js | 0 .../bower_components/jquery/src/var/class2type.js | 0 .../bower_components/jquery/src/var/concat.js | 0 .../bower_components/jquery/src/var/document.js | 0 .../jquery/src/var/documentElement.js | 0 .../bower_components/jquery/src/var/hasOwn.js | 0 .../bower_components/jquery/src/var/indexOf.js | 0 .../static}/bower_components/jquery/src/var/pnum.js | 0 .../static}/bower_components/jquery/src/var/push.js | 0 .../bower_components/jquery/src/var/rcssNum.js | 0 .../bower_components/jquery/src/var/rnotwhite.js | 0 .../bower_components/jquery/src/var/slice.js | 0 .../bower_components/jquery/src/var/support.js | 0 .../bower_components/jquery/src/var/toString.js | 0 .../static}/bower_components/jquery/src/wrap.js | 0 .../static}/bower_components/moment/.bower.json | 0 .../static}/bower_components/moment/CHANGELOG.md | 0 .../static}/bower_components/moment/LICENSE | 0 .../static}/bower_components/moment/README.md | 0 .../static}/bower_components/moment/bower.json | 0 .../static}/bower_components/moment/locale/af.js | 0 .../static}/bower_components/moment/locale/ar-dz.js | 0 .../static}/bower_components/moment/locale/ar-ly.js | 0 .../static}/bower_components/moment/locale/ar-ma.js | 0 .../static}/bower_components/moment/locale/ar-sa.js | 0 .../static}/bower_components/moment/locale/ar-tn.js | 0 .../static}/bower_components/moment/locale/ar.js | 0 .../static}/bower_components/moment/locale/az.js | 0 .../static}/bower_components/moment/locale/be.js | 0 .../static}/bower_components/moment/locale/bg.js | 0 .../static}/bower_components/moment/locale/bn.js | 0 .../static}/bower_components/moment/locale/bo.js | 0 .../static}/bower_components/moment/locale/br.js | 0 .../static}/bower_components/moment/locale/bs.js | 0 .../static}/bower_components/moment/locale/ca.js | 0 .../static}/bower_components/moment/locale/cs.js | 0 .../static}/bower_components/moment/locale/cv.js | 0 .../static}/bower_components/moment/locale/cy.js | 0 .../static}/bower_components/moment/locale/da.js | 0 .../static}/bower_components/moment/locale/de-at.js | 0 .../static}/bower_components/moment/locale/de.js | 0 .../static}/bower_components/moment/locale/dv.js | 0 .../static}/bower_components/moment/locale/el.js | 0 .../static}/bower_components/moment/locale/en-au.js | 0 .../static}/bower_components/moment/locale/en-ca.js | 0 .../static}/bower_components/moment/locale/en-gb.js | 0 .../static}/bower_components/moment/locale/en-ie.js | 0 .../static}/bower_components/moment/locale/en-nz.js | 0 .../static}/bower_components/moment/locale/eo.js | 0 .../static}/bower_components/moment/locale/es-do.js | 0 .../static}/bower_components/moment/locale/es.js | 0 .../static}/bower_components/moment/locale/et.js | 0 .../static}/bower_components/moment/locale/eu.js | 0 .../static}/bower_components/moment/locale/fa.js | 0 .../static}/bower_components/moment/locale/fi.js | 0 .../static}/bower_components/moment/locale/fo.js | 0 .../static}/bower_components/moment/locale/fr-ca.js | 0 .../static}/bower_components/moment/locale/fr-ch.js | 0 .../static}/bower_components/moment/locale/fr.js | 0 .../static}/bower_components/moment/locale/fy.js | 0 .../static}/bower_components/moment/locale/gd.js | 0 .../static}/bower_components/moment/locale/gl.js | 0 .../static}/bower_components/moment/locale/he.js | 0 .../static}/bower_components/moment/locale/hi.js | 0 .../static}/bower_components/moment/locale/hr.js | 0 .../static}/bower_components/moment/locale/hu.js | 0 .../static}/bower_components/moment/locale/hy-am.js | 0 .../static}/bower_components/moment/locale/id.js | 0 .../static}/bower_components/moment/locale/is.js | 0 .../static}/bower_components/moment/locale/it.js | 0 .../static}/bower_components/moment/locale/ja.js | 0 .../static}/bower_components/moment/locale/jv.js | 0 .../static}/bower_components/moment/locale/ka.js | 0 .../static}/bower_components/moment/locale/kk.js | 0 .../static}/bower_components/moment/locale/km.js | 0 .../static}/bower_components/moment/locale/ko.js | 0 .../static}/bower_components/moment/locale/ky.js | 0 .../static}/bower_components/moment/locale/lb.js | 0 .../static}/bower_components/moment/locale/lo.js | 0 .../static}/bower_components/moment/locale/lt.js | 0 .../static}/bower_components/moment/locale/lv.js | 0 .../static}/bower_components/moment/locale/me.js | 0 .../static}/bower_components/moment/locale/mi.js | 0 .../static}/bower_components/moment/locale/mk.js | 0 .../static}/bower_components/moment/locale/ml.js | 0 .../static}/bower_components/moment/locale/mr.js | 0 .../static}/bower_components/moment/locale/ms-my.js | 0 .../static}/bower_components/moment/locale/ms.js | 0 .../static}/bower_components/moment/locale/my.js | 0 .../static}/bower_components/moment/locale/nb.js | 0 .../static}/bower_components/moment/locale/ne.js | 0 .../static}/bower_components/moment/locale/nl-be.js | 0 .../static}/bower_components/moment/locale/nl.js | 0 .../static}/bower_components/moment/locale/nn.js | 0 .../static}/bower_components/moment/locale/pa-in.js | 0 .../static}/bower_components/moment/locale/pl.js | 0 .../static}/bower_components/moment/locale/pt-br.js | 0 .../static}/bower_components/moment/locale/pt.js | 0 .../static}/bower_components/moment/locale/ro.js | 0 .../static}/bower_components/moment/locale/ru.js | 0 .../static}/bower_components/moment/locale/se.js | 0 .../static}/bower_components/moment/locale/si.js | 0 .../static}/bower_components/moment/locale/sk.js | 0 .../static}/bower_components/moment/locale/sl.js | 0 .../static}/bower_components/moment/locale/sq.js | 0 .../bower_components/moment/locale/sr-cyrl.js | 0 .../static}/bower_components/moment/locale/sr.js | 0 .../static}/bower_components/moment/locale/ss.js | 0 .../static}/bower_components/moment/locale/sv.js | 0 .../static}/bower_components/moment/locale/sw.js | 0 .../static}/bower_components/moment/locale/ta.js | 0 .../static}/bower_components/moment/locale/te.js | 0 .../static}/bower_components/moment/locale/tet.js | 0 .../static}/bower_components/moment/locale/th.js | 0 .../static}/bower_components/moment/locale/tl-ph.js | 0 .../static}/bower_components/moment/locale/tlh.js | 0 .../static}/bower_components/moment/locale/tr.js | 0 .../static}/bower_components/moment/locale/tzl.js | 0 .../bower_components/moment/locale/tzm-latn.js | 0 .../static}/bower_components/moment/locale/tzm.js | 0 .../static}/bower_components/moment/locale/uk.js | 0 .../static}/bower_components/moment/locale/uz.js | 0 .../static}/bower_components/moment/locale/vi.js | 0 .../bower_components/moment/locale/x-pseudo.js | 0 .../static}/bower_components/moment/locale/yo.js | 0 .../static}/bower_components/moment/locale/zh-cn.js | 0 .../static}/bower_components/moment/locale/zh-hk.js | 0 .../static}/bower_components/moment/locale/zh-tw.js | 0 .../static}/bower_components/moment/min/locales.js | 0 .../bower_components/moment/min/locales.min.js | 0 .../moment/min/moment-with-locales.js | 0 .../moment/min/moment-with-locales.min.js | 0 .../bower_components/moment/min/moment.min.js | 0 .../static}/bower_components/moment/min/tests.js | 0 .../static}/bower_components/moment/moment.d.ts | 0 .../static}/bower_components/moment/moment.js | 0 .../moment/src/lib/create/check-overflow.js | 0 .../moment/src/lib/create/date-from-array.js | 0 .../moment/src/lib/create/from-anything.js | 0 .../moment/src/lib/create/from-array.js | 0 .../moment/src/lib/create/from-object.js | 0 .../moment/src/lib/create/from-string-and-array.js | 0 .../moment/src/lib/create/from-string-and-format.js | 0 .../moment/src/lib/create/from-string.js | 0 .../bower_components/moment/src/lib/create/local.js | 0 .../moment/src/lib/create/parsing-flags.js | 0 .../bower_components/moment/src/lib/create/utc.js | 0 .../bower_components/moment/src/lib/create/valid.js | 0 .../bower_components/moment/src/lib/duration/abs.js | 0 .../moment/src/lib/duration/add-subtract.js | 0 .../bower_components/moment/src/lib/duration/as.js | 0 .../moment/src/lib/duration/bubble.js | 0 .../moment/src/lib/duration/constructor.js | 0 .../moment/src/lib/duration/create.js | 0 .../moment/src/lib/duration/duration.js | 0 .../bower_components/moment/src/lib/duration/get.js | 0 .../moment/src/lib/duration/humanize.js | 0 .../moment/src/lib/duration/iso-string.js | 0 .../moment/src/lib/duration/prototype.js | 0 .../moment/src/lib/format/format.js | 0 .../moment/src/lib/locale/base-config.js | 0 .../moment/src/lib/locale/calendar.js | 0 .../moment/src/lib/locale/constructor.js | 0 .../bower_components/moment/src/lib/locale/en.js | 0 .../moment/src/lib/locale/formats.js | 0 .../moment/src/lib/locale/invalid.js | 0 .../bower_components/moment/src/lib/locale/lists.js | 0 .../moment/src/lib/locale/locale.js | 0 .../moment/src/lib/locale/locales.js | 0 .../moment/src/lib/locale/ordinal.js | 0 .../moment/src/lib/locale/pre-post-format.js | 0 .../moment/src/lib/locale/prototype.js | 0 .../moment/src/lib/locale/relative.js | 0 .../bower_components/moment/src/lib/locale/set.js | 0 .../moment/src/lib/moment/add-subtract.js | 0 .../moment/src/lib/moment/calendar.js | 0 .../bower_components/moment/src/lib/moment/clone.js | 0 .../moment/src/lib/moment/compare.js | 0 .../moment/src/lib/moment/constructor.js | 0 .../moment/src/lib/moment/creation-data.js | 0 .../bower_components/moment/src/lib/moment/diff.js | 0 .../moment/src/lib/moment/format.js | 0 .../bower_components/moment/src/lib/moment/from.js | 0 .../moment/src/lib/moment/get-set.js | 0 .../moment/src/lib/moment/locale.js | 0 .../moment/src/lib/moment/min-max.js | 0 .../moment/src/lib/moment/moment.js | 0 .../bower_components/moment/src/lib/moment/now.js | 0 .../moment/src/lib/moment/prototype.js | 0 .../moment/src/lib/moment/start-end-of.js | 0 .../moment/src/lib/moment/to-type.js | 0 .../bower_components/moment/src/lib/moment/to.js | 0 .../bower_components/moment/src/lib/moment/valid.js | 0 .../bower_components/moment/src/lib/parse/regex.js | 0 .../bower_components/moment/src/lib/parse/token.js | 0 .../moment/src/lib/units/aliases.js | 0 .../moment/src/lib/units/constants.js | 0 .../moment/src/lib/units/day-of-month.js | 0 .../moment/src/lib/units/day-of-week.js | 0 .../moment/src/lib/units/day-of-year.js | 0 .../bower_components/moment/src/lib/units/hour.js | 0 .../moment/src/lib/units/millisecond.js | 0 .../bower_components/moment/src/lib/units/minute.js | 0 .../bower_components/moment/src/lib/units/month.js | 0 .../bower_components/moment/src/lib/units/offset.js | 0 .../moment/src/lib/units/priorities.js | 0 .../moment/src/lib/units/quarter.js | 0 .../bower_components/moment/src/lib/units/second.js | 0 .../moment/src/lib/units/timestamp.js | 0 .../moment/src/lib/units/timezone.js | 0 .../bower_components/moment/src/lib/units/units.js | 0 .../moment/src/lib/units/week-calendar-utils.js | 0 .../moment/src/lib/units/week-year.js | 0 .../bower_components/moment/src/lib/units/week.js | 0 .../bower_components/moment/src/lib/units/year.js | 0 .../moment/src/lib/utils/abs-ceil.js | 0 .../moment/src/lib/utils/abs-floor.js | 0 .../moment/src/lib/utils/abs-round.js | 0 .../moment/src/lib/utils/compare-arrays.js | 0 .../moment/src/lib/utils/defaults.js | 0 .../moment/src/lib/utils/deprecate.js | 0 .../bower_components/moment/src/lib/utils/extend.js | 0 .../moment/src/lib/utils/has-own-prop.js | 0 .../bower_components/moment/src/lib/utils/hooks.js | 0 .../moment/src/lib/utils/index-of.js | 0 .../moment/src/lib/utils/is-array.js | 0 .../moment/src/lib/utils/is-date.js | 0 .../moment/src/lib/utils/is-function.js | 0 .../moment/src/lib/utils/is-number.js | 0 .../moment/src/lib/utils/is-object-empty.js | 0 .../moment/src/lib/utils/is-object.js | 0 .../moment/src/lib/utils/is-undefined.js | 0 .../bower_components/moment/src/lib/utils/keys.js | 0 .../bower_components/moment/src/lib/utils/map.js | 0 .../bower_components/moment/src/lib/utils/some.js | 0 .../bower_components/moment/src/lib/utils/to-int.js | 0 .../moment/src/lib/utils/zero-fill.js | 0 .../bower_components/moment/src/locale/af.js | 0 .../bower_components/moment/src/locale/ar-dz.js | 0 .../bower_components/moment/src/locale/ar-ly.js | 0 .../bower_components/moment/src/locale/ar-ma.js | 0 .../bower_components/moment/src/locale/ar-sa.js | 0 .../bower_components/moment/src/locale/ar-tn.js | 0 .../bower_components/moment/src/locale/ar.js | 0 .../bower_components/moment/src/locale/az.js | 0 .../bower_components/moment/src/locale/be.js | 0 .../bower_components/moment/src/locale/bg.js | 0 .../bower_components/moment/src/locale/bn.js | 0 .../bower_components/moment/src/locale/bo.js | 0 .../bower_components/moment/src/locale/br.js | 0 .../bower_components/moment/src/locale/bs.js | 0 .../bower_components/moment/src/locale/ca.js | 0 .../bower_components/moment/src/locale/cs.js | 0 .../bower_components/moment/src/locale/cv.js | 0 .../bower_components/moment/src/locale/cy.js | 0 .../bower_components/moment/src/locale/da.js | 0 .../bower_components/moment/src/locale/de-at.js | 0 .../bower_components/moment/src/locale/de.js | 0 .../bower_components/moment/src/locale/dv.js | 0 .../bower_components/moment/src/locale/el.js | 0 .../bower_components/moment/src/locale/en-au.js | 0 .../bower_components/moment/src/locale/en-ca.js | 0 .../bower_components/moment/src/locale/en-gb.js | 0 .../bower_components/moment/src/locale/en-ie.js | 0 .../bower_components/moment/src/locale/en-nz.js | 0 .../bower_components/moment/src/locale/eo.js | 0 .../bower_components/moment/src/locale/es-do.js | 0 .../bower_components/moment/src/locale/es.js | 0 .../bower_components/moment/src/locale/et.js | 0 .../bower_components/moment/src/locale/eu.js | 0 .../bower_components/moment/src/locale/fa.js | 0 .../bower_components/moment/src/locale/fi.js | 0 .../bower_components/moment/src/locale/fo.js | 0 .../bower_components/moment/src/locale/fr-ca.js | 0 .../bower_components/moment/src/locale/fr-ch.js | 0 .../bower_components/moment/src/locale/fr.js | 0 .../bower_components/moment/src/locale/fy.js | 0 .../bower_components/moment/src/locale/gd.js | 0 .../bower_components/moment/src/locale/gl.js | 0 .../bower_components/moment/src/locale/he.js | 0 .../bower_components/moment/src/locale/hi.js | 0 .../bower_components/moment/src/locale/hr.js | 0 .../bower_components/moment/src/locale/hu.js | 0 .../bower_components/moment/src/locale/hy-am.js | 0 .../bower_components/moment/src/locale/id.js | 0 .../bower_components/moment/src/locale/is.js | 0 .../bower_components/moment/src/locale/it.js | 0 .../bower_components/moment/src/locale/ja.js | 0 .../bower_components/moment/src/locale/jv.js | 0 .../bower_components/moment/src/locale/ka.js | 0 .../bower_components/moment/src/locale/kk.js | 0 .../bower_components/moment/src/locale/km.js | 0 .../bower_components/moment/src/locale/ko.js | 0 .../bower_components/moment/src/locale/ky.js | 0 .../bower_components/moment/src/locale/lb.js | 0 .../bower_components/moment/src/locale/lo.js | 0 .../bower_components/moment/src/locale/lt.js | 0 .../bower_components/moment/src/locale/lv.js | 0 .../bower_components/moment/src/locale/me.js | 0 .../bower_components/moment/src/locale/mi.js | 0 .../bower_components/moment/src/locale/mk.js | 0 .../bower_components/moment/src/locale/ml.js | 0 .../bower_components/moment/src/locale/mr.js | 0 .../bower_components/moment/src/locale/ms-my.js | 0 .../bower_components/moment/src/locale/ms.js | 0 .../bower_components/moment/src/locale/my.js | 0 .../bower_components/moment/src/locale/nb.js | 0 .../bower_components/moment/src/locale/ne.js | 0 .../bower_components/moment/src/locale/nl-be.js | 0 .../bower_components/moment/src/locale/nl.js | 0 .../bower_components/moment/src/locale/nn.js | 0 .../bower_components/moment/src/locale/pa-in.js | 0 .../bower_components/moment/src/locale/pl.js | 0 .../bower_components/moment/src/locale/pt-br.js | 0 .../bower_components/moment/src/locale/pt.js | 0 .../bower_components/moment/src/locale/ro.js | 0 .../bower_components/moment/src/locale/ru.js | 0 .../bower_components/moment/src/locale/se.js | 0 .../bower_components/moment/src/locale/si.js | 0 .../bower_components/moment/src/locale/sk.js | 0 .../bower_components/moment/src/locale/sl.js | 0 .../bower_components/moment/src/locale/sq.js | 0 .../bower_components/moment/src/locale/sr-cyrl.js | 0 .../bower_components/moment/src/locale/sr.js | 0 .../bower_components/moment/src/locale/ss.js | 0 .../bower_components/moment/src/locale/sv.js | 0 .../bower_components/moment/src/locale/sw.js | 0 .../bower_components/moment/src/locale/ta.js | 0 .../bower_components/moment/src/locale/te.js | 0 .../bower_components/moment/src/locale/tet.js | 0 .../bower_components/moment/src/locale/th.js | 0 .../bower_components/moment/src/locale/tl-ph.js | 0 .../bower_components/moment/src/locale/tlh.js | 0 .../bower_components/moment/src/locale/tr.js | 0 .../bower_components/moment/src/locale/tzl.js | 0 .../bower_components/moment/src/locale/tzm-latn.js | 0 .../bower_components/moment/src/locale/tzm.js | 0 .../bower_components/moment/src/locale/uk.js | 0 .../bower_components/moment/src/locale/uz.js | 0 .../bower_components/moment/src/locale/vi.js | 0 .../bower_components/moment/src/locale/x-pseudo.js | 0 .../bower_components/moment/src/locale/yo.js | 0 .../bower_components/moment/src/locale/zh-cn.js | 0 .../bower_components/moment/src/locale/zh-hk.js | 0 .../bower_components/moment/src/locale/zh-tw.js | 0 .../static}/bower_components/moment/src/moment.js | 0 .../bower_components/moment/templates/default.js | 0 .../moment/templates/locale-header.js | 0 .../moment/templates/test-header.js | 0 {themes/bootstrap/public => ui/static}/favicon.png | Bin {themes/bootstrap/public => ui/static}/inbucket.css | 0 {themes/bootstrap/public => ui/static}/mailbox.js | 0 {themes/bootstrap/public => ui/static}/metrics.js | 0 {themes/bootstrap/public => ui/static}/monitor.js | 0 {themes/bootstrap => ui}/templates/_base.html | 0 .../bootstrap => ui}/templates/mailbox/_html.html | 0 .../bootstrap => ui}/templates/mailbox/_show.html | 0 .../bootstrap => ui}/templates/mailbox/index.html | 0 {themes/bootstrap => ui}/templates/root/index.html | 0 .../bootstrap => ui}/templates/root/monitor.html | 0 {themes/bootstrap => ui}/templates/root/status.html | 0 660 files changed, 5 insertions(+), 3 deletions(-) rename {themes => ui}/greeting.html (100%) rename {themes/bootstrap/public => ui/static}/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/CHANGELOG.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/Gemfile (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/Gemfile.lock (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/Gruntfile.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/ISSUE_TEMPLATE.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/LICENSE (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/README.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap-theme.css (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap-theme.css.map (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap-theme.min.css (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap.css (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap.css.map (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap.min.css (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/css/bootstrap.min.css.map (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/js/bootstrap.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/js/bootstrap.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/dist/js/npm.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/.jshintrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/bs-commonjs-generator.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/bs-lessdoc-parser.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/bs-raw-files-generator.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/change-version.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/configBridge.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/npm-shrinkwrap.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/grunt/sauce_browsers.yml (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/.jscsrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/.jshintrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/affix.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/alert.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/button.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/carousel.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/collapse.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/dropdown.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/modal.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/popover.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/scrollspy.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/tab.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/tooltip.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/js/transition.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/.csscomb.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/.csslintrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/alerts.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/badges.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/bootstrap.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/breadcrumbs.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/button-groups.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/buttons.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/carousel.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/close.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/code.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/component-animations.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/dropdowns.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/forms.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/glyphicons.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/grid.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/input-groups.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/jumbotron.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/labels.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/list-group.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/media.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/alerts.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/background-variant.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/border-radius.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/buttons.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/center-block.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/clearfix.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/forms.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/gradients.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/grid-framework.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/grid.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/hide-text.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/image.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/labels.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/list-group.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/nav-divider.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/nav-vertical-align.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/opacity.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/pagination.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/panels.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/progress-bar.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/reset-filter.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/reset-text.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/resize.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/responsive-visibility.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/size.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/tab-focus.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/table-row.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/text-emphasis.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/text-overflow.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/mixins/vendor-prefixes.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/modals.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/navbar.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/navs.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/normalize.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/pager.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/pagination.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/panels.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/popovers.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/print.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/progress-bars.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/responsive-embed.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/responsive-utilities.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/scaffolding.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/tables.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/theme.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/thumbnails.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/tooltip.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/type.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/utilities.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/variables.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/less/wells.less (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/nuget/MyGet.ps1 (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/nuget/bootstrap.less.nuspec (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/nuget/bootstrap.nuspec (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/package.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/bootstrap/package.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/contributing.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/dist/clipboard.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/dist/clipboard.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/package.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/package.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/clipboard/readme.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/.gitignore (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/.gitmodules (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/.jshintrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/AUTHORS.TXT (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/MIT-LICENSE.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/README.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/color.jquery.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/grunt.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/jquery.color.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/jquery.color.svg-names.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/package.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/data/swarminject.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/data/testinit.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/index.html (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.5.1.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.5.2.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.5.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.6.1.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.6.2.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.6.3.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.6.4.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.6.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.7.1.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.7.2.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery-1.7.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/jquery.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/test.html (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/unit/.jshintrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-color/test/unit/color.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-load-template/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-load-template/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-load-template/dist/jquery.loadTemplate.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-load-template/dist/jquery.loadTemplate.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/Changelog.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/Makefile (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/README.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/dist/jquery.sparkline.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/dist/jquery.sparkline.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/minheader.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/sparkline.jquery.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/base.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-bar.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-box.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-bullet.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-discrete.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-line.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-pie.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/chart-tristate.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/defaults.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/footer.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/header.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/interact.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/rangemap.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/simpledraw.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/utils.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/vcanvas-base.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/vcanvas-canvas.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/src/vcanvas-vml.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery-sparkline/version.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/AUTHORS.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/LICENSE.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/README.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/dist/jquery.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/dist/jquery.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/dist/jquery.min.map (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/external/sizzle/LICENSE.txt (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/external/sizzle/dist/sizzle.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/external/sizzle/dist/sizzle.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/external/sizzle/dist/sizzle.min.map (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/.jshintrc (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/jsonp.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/load.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/parseJSON.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/parseXML.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/script.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/var/location.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/var/nonce.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/var/rquery.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/ajax/xhr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/attributes.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/attributes/attr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/attributes/classes.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/attributes/prop.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/attributes/support.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/attributes/val.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/callbacks.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/core.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/core/access.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/core/init.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/core/parseHTML.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/core/ready.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/core/var/rsingleTag.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/addGetHookIf.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/adjustCSS.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/curCSS.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/defaultDisplay.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/hiddenVisibleSelectors.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/showHide.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/support.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/var/cssExpand.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/var/getStyles.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/var/isHidden.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/var/rmargin.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/var/rnumnonpx.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/css/var/swap.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/data.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/data/Data.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/data/var/acceptData.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/data/var/dataPriv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/data/var/dataUser.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/deferred.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/deprecated.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/dimensions.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/effects.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/effects/Tween.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/effects/animatedSelector.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/event.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/event/ajax.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/event/alias.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/event/focusin.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/event/support.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/event/trigger.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/exports/amd.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/exports/global.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/intro.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/jquery.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/_evalUrl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/buildFragment.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/getAll.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/setGlobalEval.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/support.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/var/rcheckableType.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/var/rscriptType.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/var/rtagName.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/manipulation/wrapMap.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/offset.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/outro.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/queue.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/queue/delay.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/selector-native.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/selector-sizzle.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/selector.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/serialize.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/traversing.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/traversing/findFilter.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/traversing/var/dir.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/traversing/var/rneedsContext.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/traversing/var/siblings.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/arr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/class2type.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/concat.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/document.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/documentElement.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/hasOwn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/indexOf.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/pnum.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/push.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/rcssNum.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/rnotwhite.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/slice.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/support.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/var/toString.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/jquery/src/wrap.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/.bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/CHANGELOG.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/LICENSE (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/README.md (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/bower.json (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/af.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ar-dz.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ar-ly.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ar-ma.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ar-sa.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ar-tn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ar.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/az.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/be.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/bg.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/bn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/bo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/br.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/bs.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ca.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/cs.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/cv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/cy.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/da.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/de-at.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/de.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/dv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/el.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/en-au.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/en-ca.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/en-gb.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/en-ie.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/en-nz.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/eo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/es-do.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/es.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/et.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/eu.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fa.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fr-ca.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fr-ch.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/fy.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/gd.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/gl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/he.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/hi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/hr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/hu.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/hy-am.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/id.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/is.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/it.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ja.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/jv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ka.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/kk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/km.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ko.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ky.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/lb.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/lo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/lt.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/lv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/me.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/mi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/mk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ml.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/mr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ms-my.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ms.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/my.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/nb.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ne.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/nl-be.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/nl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/nn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/pa-in.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/pl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/pt-br.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/pt.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ro.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ru.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/se.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/si.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sq.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sr-cyrl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ss.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/sw.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/ta.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/te.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tet.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/th.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tl-ph.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tlh.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tzl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tzm-latn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/tzm.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/uk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/uz.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/vi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/x-pseudo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/yo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/zh-cn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/zh-hk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/locale/zh-tw.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/min/locales.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/min/locales.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/min/moment-with-locales.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/min/moment-with-locales.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/min/moment.min.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/min/tests.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/moment.d.ts (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/moment.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/check-overflow.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/date-from-array.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/from-anything.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/from-array.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/from-object.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/from-string-and-array.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/from-string-and-format.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/from-string.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/local.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/parsing-flags.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/utc.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/create/valid.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/abs.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/add-subtract.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/as.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/bubble.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/constructor.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/create.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/duration.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/get.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/humanize.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/iso-string.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/duration/prototype.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/format/format.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/base-config.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/calendar.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/constructor.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/en.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/formats.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/invalid.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/lists.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/locale.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/locales.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/ordinal.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/pre-post-format.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/prototype.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/relative.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/locale/set.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/add-subtract.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/calendar.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/clone.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/compare.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/constructor.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/creation-data.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/diff.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/format.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/from.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/get-set.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/locale.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/min-max.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/moment.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/now.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/prototype.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/start-end-of.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/to-type.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/to.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/moment/valid.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/parse/regex.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/parse/token.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/aliases.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/constants.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/day-of-month.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/day-of-week.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/day-of-year.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/hour.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/millisecond.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/minute.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/month.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/offset.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/priorities.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/quarter.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/second.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/timestamp.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/timezone.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/units.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/week-calendar-utils.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/week-year.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/week.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/units/year.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/abs-ceil.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/abs-floor.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/abs-round.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/compare-arrays.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/defaults.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/deprecate.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/extend.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/has-own-prop.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/hooks.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/index-of.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-array.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-date.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-function.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-number.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-object-empty.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-object.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/is-undefined.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/keys.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/map.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/some.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/to-int.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/lib/utils/zero-fill.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/af.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ar-dz.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ar-ly.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ar-ma.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ar-sa.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ar-tn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ar.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/az.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/be.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/bg.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/bn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/bo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/br.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/bs.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ca.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/cs.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/cv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/cy.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/da.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/de-at.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/de.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/dv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/el.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/en-au.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/en-ca.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/en-gb.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/en-ie.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/en-nz.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/eo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/es-do.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/es.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/et.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/eu.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fa.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fr-ca.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fr-ch.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/fy.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/gd.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/gl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/he.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/hi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/hr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/hu.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/hy-am.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/id.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/is.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/it.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ja.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/jv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ka.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/kk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/km.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ko.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ky.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/lb.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/lo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/lt.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/lv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/me.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/mi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/mk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ml.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/mr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ms-my.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ms.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/my.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/nb.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ne.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/nl-be.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/nl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/nn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/pa-in.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/pl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/pt-br.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/pt.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ro.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ru.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/se.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/si.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sq.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sr-cyrl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ss.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sv.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/sw.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/ta.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/te.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tet.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/th.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tl-ph.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tlh.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tr.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tzl.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tzm-latn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/tzm.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/uk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/uz.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/vi.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/x-pseudo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/yo.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/zh-cn.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/zh-hk.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/locale/zh-tw.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/src/moment.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/templates/default.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/templates/locale-header.js (100%) rename {themes/bootstrap/public => ui/static}/bower_components/moment/templates/test-header.js (100%) rename {themes/bootstrap/public => ui/static}/favicon.png (100%) rename {themes/bootstrap/public => ui/static}/inbucket.css (100%) rename {themes/bootstrap/public => ui/static}/mailbox.js (100%) rename {themes/bootstrap/public => ui/static}/metrics.js (100%) rename {themes/bootstrap/public => ui/static}/monitor.js (100%) rename {themes/bootstrap => ui}/templates/_base.html (100%) rename {themes/bootstrap => ui}/templates/mailbox/_html.html (100%) rename {themes/bootstrap => ui}/templates/mailbox/_show.html (100%) rename {themes/bootstrap => ui}/templates/mailbox/index.html (100%) rename {themes/bootstrap => ui}/templates/root/index.html (100%) rename {themes/bootstrap => ui}/templates/root/monitor.html (100%) rename {themes/bootstrap => ui}/templates/root/status.html (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c226d2..1aba3b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Massive refactor of back-end code. Inbucket should now be both easier and more enjoyable to work on. +- Renamed `themes` directory to `ui` and eliminated the intermediate `bootstrap` + directory. ## [v1.3.1] - 2018-03-10 diff --git a/pkg/config/config.go b/pkg/config/config.go index 24017f4..2ca6702 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -57,10 +57,10 @@ type POP3 struct { // Web contains the HTTP server configuration. type Web struct { Addr string `required:"true" default:"0.0.0.0:9000" desc:"Web server IP4 host:port"` - TemplateDir string `required:"true" default:"themes/bootstrap/templates" desc:"Theme template dir"` + TemplateDir string `required:"true" default:"ui/templates" desc:"Theme template dir"` TemplateCache bool `required:"true" default:"true" desc:"Cache templates after first use?"` - PublicDir string `required:"true" default:"themes/bootstrap/public" desc:"Theme public dir"` - GreetingFile string `required:"true" default:"themes/greeting.html" desc:"Home page greeting HTML"` + PublicDir string `required:"true" default:"ui/static" desc:"Theme public dir"` + GreetingFile string `required:"true" default:"ui/greeting.html" desc:"Home page greeting HTML"` MailboxPrompt string `required:"true" default:"@inbucket" desc:"Prompt next to mailbox input"` CookieAuthKey string `desc:"Session cipher key (text)"` MonitorVisible bool `required:"true" default:"true" desc:"Show monitor tab in UI?"` diff --git a/themes/greeting.html b/ui/greeting.html similarity index 100% rename from themes/greeting.html rename to ui/greeting.html diff --git a/themes/bootstrap/public/bower.json b/ui/static/bower.json similarity index 100% rename from themes/bootstrap/public/bower.json rename to ui/static/bower.json diff --git a/themes/bootstrap/public/bower_components/bootstrap/.bower.json b/ui/static/bower_components/bootstrap/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/.bower.json rename to ui/static/bower_components/bootstrap/.bower.json diff --git a/themes/bootstrap/public/bower_components/bootstrap/CHANGELOG.md b/ui/static/bower_components/bootstrap/CHANGELOG.md similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/CHANGELOG.md rename to ui/static/bower_components/bootstrap/CHANGELOG.md diff --git a/themes/bootstrap/public/bower_components/bootstrap/Gemfile b/ui/static/bower_components/bootstrap/Gemfile similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/Gemfile rename to ui/static/bower_components/bootstrap/Gemfile diff --git a/themes/bootstrap/public/bower_components/bootstrap/Gemfile.lock b/ui/static/bower_components/bootstrap/Gemfile.lock similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/Gemfile.lock rename to ui/static/bower_components/bootstrap/Gemfile.lock diff --git a/themes/bootstrap/public/bower_components/bootstrap/Gruntfile.js b/ui/static/bower_components/bootstrap/Gruntfile.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/Gruntfile.js rename to ui/static/bower_components/bootstrap/Gruntfile.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/ISSUE_TEMPLATE.md b/ui/static/bower_components/bootstrap/ISSUE_TEMPLATE.md similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/ISSUE_TEMPLATE.md rename to ui/static/bower_components/bootstrap/ISSUE_TEMPLATE.md diff --git a/themes/bootstrap/public/bower_components/bootstrap/LICENSE b/ui/static/bower_components/bootstrap/LICENSE similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/LICENSE rename to ui/static/bower_components/bootstrap/LICENSE diff --git a/themes/bootstrap/public/bower_components/bootstrap/README.md b/ui/static/bower_components/bootstrap/README.md similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/README.md rename to ui/static/bower_components/bootstrap/README.md diff --git a/themes/bootstrap/public/bower_components/bootstrap/bower.json b/ui/static/bower_components/bootstrap/bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/bower.json rename to ui/static/bower_components/bootstrap/bower.json diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.css b/ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.css similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.css rename to ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.css diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.css.map b/ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.css.map similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.css.map rename to ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.css.map diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.min.css b/ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.min.css rename to ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map b/ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map rename to ui/static/bower_components/bootstrap/dist/css/bootstrap-theme.min.css.map diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.css b/ui/static/bower_components/bootstrap/dist/css/bootstrap.css similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.css rename to ui/static/bower_components/bootstrap/dist/css/bootstrap.css diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.css.map b/ui/static/bower_components/bootstrap/dist/css/bootstrap.css.map similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.css.map rename to ui/static/bower_components/bootstrap/dist/css/bootstrap.css.map diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.min.css b/ui/static/bower_components/bootstrap/dist/css/bootstrap.min.css similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.min.css rename to ui/static/bower_components/bootstrap/dist/css/bootstrap.min.css diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.min.css.map b/ui/static/bower_components/bootstrap/dist/css/bootstrap.min.css.map similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/css/bootstrap.min.css.map rename to ui/static/bower_components/bootstrap/dist/css/bootstrap.min.css.map diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot rename to ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg rename to ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf rename to ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff rename to ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 rename to ui/static/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/js/bootstrap.js b/ui/static/bower_components/bootstrap/dist/js/bootstrap.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/js/bootstrap.js rename to ui/static/bower_components/bootstrap/dist/js/bootstrap.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/js/bootstrap.min.js b/ui/static/bower_components/bootstrap/dist/js/bootstrap.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/js/bootstrap.min.js rename to ui/static/bower_components/bootstrap/dist/js/bootstrap.min.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/dist/js/npm.js b/ui/static/bower_components/bootstrap/dist/js/npm.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/dist/js/npm.js rename to ui/static/bower_components/bootstrap/dist/js/npm.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot b/ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot rename to ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg b/ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg rename to ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf b/ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff b/ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff rename to ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to ui/static/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/.jshintrc b/ui/static/bower_components/bootstrap/grunt/.jshintrc similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/.jshintrc rename to ui/static/bower_components/bootstrap/grunt/.jshintrc diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/bs-commonjs-generator.js b/ui/static/bower_components/bootstrap/grunt/bs-commonjs-generator.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/bs-commonjs-generator.js rename to ui/static/bower_components/bootstrap/grunt/bs-commonjs-generator.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js b/ui/static/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js rename to ui/static/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/bs-lessdoc-parser.js b/ui/static/bower_components/bootstrap/grunt/bs-lessdoc-parser.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/bs-lessdoc-parser.js rename to ui/static/bower_components/bootstrap/grunt/bs-lessdoc-parser.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/bs-raw-files-generator.js b/ui/static/bower_components/bootstrap/grunt/bs-raw-files-generator.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/bs-raw-files-generator.js rename to ui/static/bower_components/bootstrap/grunt/bs-raw-files-generator.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/change-version.js b/ui/static/bower_components/bootstrap/grunt/change-version.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/change-version.js rename to ui/static/bower_components/bootstrap/grunt/change-version.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/configBridge.json b/ui/static/bower_components/bootstrap/grunt/configBridge.json similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/configBridge.json rename to ui/static/bower_components/bootstrap/grunt/configBridge.json diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/npm-shrinkwrap.json b/ui/static/bower_components/bootstrap/grunt/npm-shrinkwrap.json similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/npm-shrinkwrap.json rename to ui/static/bower_components/bootstrap/grunt/npm-shrinkwrap.json diff --git a/themes/bootstrap/public/bower_components/bootstrap/grunt/sauce_browsers.yml b/ui/static/bower_components/bootstrap/grunt/sauce_browsers.yml similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/grunt/sauce_browsers.yml rename to ui/static/bower_components/bootstrap/grunt/sauce_browsers.yml diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/.jscsrc b/ui/static/bower_components/bootstrap/js/.jscsrc similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/.jscsrc rename to ui/static/bower_components/bootstrap/js/.jscsrc diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/.jshintrc b/ui/static/bower_components/bootstrap/js/.jshintrc similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/.jshintrc rename to ui/static/bower_components/bootstrap/js/.jshintrc diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/affix.js b/ui/static/bower_components/bootstrap/js/affix.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/affix.js rename to ui/static/bower_components/bootstrap/js/affix.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/alert.js b/ui/static/bower_components/bootstrap/js/alert.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/alert.js rename to ui/static/bower_components/bootstrap/js/alert.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/button.js b/ui/static/bower_components/bootstrap/js/button.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/button.js rename to ui/static/bower_components/bootstrap/js/button.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/carousel.js b/ui/static/bower_components/bootstrap/js/carousel.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/carousel.js rename to ui/static/bower_components/bootstrap/js/carousel.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/collapse.js b/ui/static/bower_components/bootstrap/js/collapse.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/collapse.js rename to ui/static/bower_components/bootstrap/js/collapse.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/dropdown.js b/ui/static/bower_components/bootstrap/js/dropdown.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/dropdown.js rename to ui/static/bower_components/bootstrap/js/dropdown.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/modal.js b/ui/static/bower_components/bootstrap/js/modal.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/modal.js rename to ui/static/bower_components/bootstrap/js/modal.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/popover.js b/ui/static/bower_components/bootstrap/js/popover.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/popover.js rename to ui/static/bower_components/bootstrap/js/popover.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/scrollspy.js b/ui/static/bower_components/bootstrap/js/scrollspy.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/scrollspy.js rename to ui/static/bower_components/bootstrap/js/scrollspy.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/tab.js b/ui/static/bower_components/bootstrap/js/tab.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/tab.js rename to ui/static/bower_components/bootstrap/js/tab.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/tooltip.js b/ui/static/bower_components/bootstrap/js/tooltip.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/tooltip.js rename to ui/static/bower_components/bootstrap/js/tooltip.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/js/transition.js b/ui/static/bower_components/bootstrap/js/transition.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/js/transition.js rename to ui/static/bower_components/bootstrap/js/transition.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/.csscomb.json b/ui/static/bower_components/bootstrap/less/.csscomb.json similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/.csscomb.json rename to ui/static/bower_components/bootstrap/less/.csscomb.json diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/.csslintrc b/ui/static/bower_components/bootstrap/less/.csslintrc similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/.csslintrc rename to ui/static/bower_components/bootstrap/less/.csslintrc diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/alerts.less b/ui/static/bower_components/bootstrap/less/alerts.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/alerts.less rename to ui/static/bower_components/bootstrap/less/alerts.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/badges.less b/ui/static/bower_components/bootstrap/less/badges.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/badges.less rename to ui/static/bower_components/bootstrap/less/badges.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/bootstrap.less b/ui/static/bower_components/bootstrap/less/bootstrap.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/bootstrap.less rename to ui/static/bower_components/bootstrap/less/bootstrap.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/breadcrumbs.less b/ui/static/bower_components/bootstrap/less/breadcrumbs.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/breadcrumbs.less rename to ui/static/bower_components/bootstrap/less/breadcrumbs.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/button-groups.less b/ui/static/bower_components/bootstrap/less/button-groups.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/button-groups.less rename to ui/static/bower_components/bootstrap/less/button-groups.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/buttons.less b/ui/static/bower_components/bootstrap/less/buttons.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/buttons.less rename to ui/static/bower_components/bootstrap/less/buttons.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/carousel.less b/ui/static/bower_components/bootstrap/less/carousel.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/carousel.less rename to ui/static/bower_components/bootstrap/less/carousel.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/close.less b/ui/static/bower_components/bootstrap/less/close.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/close.less rename to ui/static/bower_components/bootstrap/less/close.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/code.less b/ui/static/bower_components/bootstrap/less/code.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/code.less rename to ui/static/bower_components/bootstrap/less/code.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/component-animations.less b/ui/static/bower_components/bootstrap/less/component-animations.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/component-animations.less rename to ui/static/bower_components/bootstrap/less/component-animations.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/dropdowns.less b/ui/static/bower_components/bootstrap/less/dropdowns.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/dropdowns.less rename to ui/static/bower_components/bootstrap/less/dropdowns.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/forms.less b/ui/static/bower_components/bootstrap/less/forms.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/forms.less rename to ui/static/bower_components/bootstrap/less/forms.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/glyphicons.less b/ui/static/bower_components/bootstrap/less/glyphicons.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/glyphicons.less rename to ui/static/bower_components/bootstrap/less/glyphicons.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/grid.less b/ui/static/bower_components/bootstrap/less/grid.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/grid.less rename to ui/static/bower_components/bootstrap/less/grid.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/input-groups.less b/ui/static/bower_components/bootstrap/less/input-groups.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/input-groups.less rename to ui/static/bower_components/bootstrap/less/input-groups.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/jumbotron.less b/ui/static/bower_components/bootstrap/less/jumbotron.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/jumbotron.less rename to ui/static/bower_components/bootstrap/less/jumbotron.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/labels.less b/ui/static/bower_components/bootstrap/less/labels.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/labels.less rename to ui/static/bower_components/bootstrap/less/labels.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/list-group.less b/ui/static/bower_components/bootstrap/less/list-group.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/list-group.less rename to ui/static/bower_components/bootstrap/less/list-group.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/media.less b/ui/static/bower_components/bootstrap/less/media.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/media.less rename to ui/static/bower_components/bootstrap/less/media.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins.less b/ui/static/bower_components/bootstrap/less/mixins.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins.less rename to ui/static/bower_components/bootstrap/less/mixins.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/alerts.less b/ui/static/bower_components/bootstrap/less/mixins/alerts.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/alerts.less rename to ui/static/bower_components/bootstrap/less/mixins/alerts.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/background-variant.less b/ui/static/bower_components/bootstrap/less/mixins/background-variant.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/background-variant.less rename to ui/static/bower_components/bootstrap/less/mixins/background-variant.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/border-radius.less b/ui/static/bower_components/bootstrap/less/mixins/border-radius.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/border-radius.less rename to ui/static/bower_components/bootstrap/less/mixins/border-radius.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/buttons.less b/ui/static/bower_components/bootstrap/less/mixins/buttons.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/buttons.less rename to ui/static/bower_components/bootstrap/less/mixins/buttons.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/center-block.less b/ui/static/bower_components/bootstrap/less/mixins/center-block.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/center-block.less rename to ui/static/bower_components/bootstrap/less/mixins/center-block.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/clearfix.less b/ui/static/bower_components/bootstrap/less/mixins/clearfix.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/clearfix.less rename to ui/static/bower_components/bootstrap/less/mixins/clearfix.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/forms.less b/ui/static/bower_components/bootstrap/less/mixins/forms.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/forms.less rename to ui/static/bower_components/bootstrap/less/mixins/forms.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/gradients.less b/ui/static/bower_components/bootstrap/less/mixins/gradients.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/gradients.less rename to ui/static/bower_components/bootstrap/less/mixins/gradients.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/grid-framework.less b/ui/static/bower_components/bootstrap/less/mixins/grid-framework.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/grid-framework.less rename to ui/static/bower_components/bootstrap/less/mixins/grid-framework.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/grid.less b/ui/static/bower_components/bootstrap/less/mixins/grid.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/grid.less rename to ui/static/bower_components/bootstrap/less/mixins/grid.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/hide-text.less b/ui/static/bower_components/bootstrap/less/mixins/hide-text.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/hide-text.less rename to ui/static/bower_components/bootstrap/less/mixins/hide-text.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/image.less b/ui/static/bower_components/bootstrap/less/mixins/image.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/image.less rename to ui/static/bower_components/bootstrap/less/mixins/image.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/labels.less b/ui/static/bower_components/bootstrap/less/mixins/labels.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/labels.less rename to ui/static/bower_components/bootstrap/less/mixins/labels.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/list-group.less b/ui/static/bower_components/bootstrap/less/mixins/list-group.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/list-group.less rename to ui/static/bower_components/bootstrap/less/mixins/list-group.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/nav-divider.less b/ui/static/bower_components/bootstrap/less/mixins/nav-divider.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/nav-divider.less rename to ui/static/bower_components/bootstrap/less/mixins/nav-divider.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/nav-vertical-align.less b/ui/static/bower_components/bootstrap/less/mixins/nav-vertical-align.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/nav-vertical-align.less rename to ui/static/bower_components/bootstrap/less/mixins/nav-vertical-align.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/opacity.less b/ui/static/bower_components/bootstrap/less/mixins/opacity.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/opacity.less rename to ui/static/bower_components/bootstrap/less/mixins/opacity.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/pagination.less b/ui/static/bower_components/bootstrap/less/mixins/pagination.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/pagination.less rename to ui/static/bower_components/bootstrap/less/mixins/pagination.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/panels.less b/ui/static/bower_components/bootstrap/less/mixins/panels.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/panels.less rename to ui/static/bower_components/bootstrap/less/mixins/panels.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/progress-bar.less b/ui/static/bower_components/bootstrap/less/mixins/progress-bar.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/progress-bar.less rename to ui/static/bower_components/bootstrap/less/mixins/progress-bar.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/reset-filter.less b/ui/static/bower_components/bootstrap/less/mixins/reset-filter.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/reset-filter.less rename to ui/static/bower_components/bootstrap/less/mixins/reset-filter.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/reset-text.less b/ui/static/bower_components/bootstrap/less/mixins/reset-text.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/reset-text.less rename to ui/static/bower_components/bootstrap/less/mixins/reset-text.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/resize.less b/ui/static/bower_components/bootstrap/less/mixins/resize.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/resize.less rename to ui/static/bower_components/bootstrap/less/mixins/resize.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/responsive-visibility.less b/ui/static/bower_components/bootstrap/less/mixins/responsive-visibility.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/responsive-visibility.less rename to ui/static/bower_components/bootstrap/less/mixins/responsive-visibility.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/size.less b/ui/static/bower_components/bootstrap/less/mixins/size.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/size.less rename to ui/static/bower_components/bootstrap/less/mixins/size.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/tab-focus.less b/ui/static/bower_components/bootstrap/less/mixins/tab-focus.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/tab-focus.less rename to ui/static/bower_components/bootstrap/less/mixins/tab-focus.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/table-row.less b/ui/static/bower_components/bootstrap/less/mixins/table-row.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/table-row.less rename to ui/static/bower_components/bootstrap/less/mixins/table-row.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/text-emphasis.less b/ui/static/bower_components/bootstrap/less/mixins/text-emphasis.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/text-emphasis.less rename to ui/static/bower_components/bootstrap/less/mixins/text-emphasis.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/text-overflow.less b/ui/static/bower_components/bootstrap/less/mixins/text-overflow.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/text-overflow.less rename to ui/static/bower_components/bootstrap/less/mixins/text-overflow.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/mixins/vendor-prefixes.less b/ui/static/bower_components/bootstrap/less/mixins/vendor-prefixes.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/mixins/vendor-prefixes.less rename to ui/static/bower_components/bootstrap/less/mixins/vendor-prefixes.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/modals.less b/ui/static/bower_components/bootstrap/less/modals.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/modals.less rename to ui/static/bower_components/bootstrap/less/modals.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/navbar.less b/ui/static/bower_components/bootstrap/less/navbar.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/navbar.less rename to ui/static/bower_components/bootstrap/less/navbar.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/navs.less b/ui/static/bower_components/bootstrap/less/navs.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/navs.less rename to ui/static/bower_components/bootstrap/less/navs.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/normalize.less b/ui/static/bower_components/bootstrap/less/normalize.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/normalize.less rename to ui/static/bower_components/bootstrap/less/normalize.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/pager.less b/ui/static/bower_components/bootstrap/less/pager.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/pager.less rename to ui/static/bower_components/bootstrap/less/pager.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/pagination.less b/ui/static/bower_components/bootstrap/less/pagination.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/pagination.less rename to ui/static/bower_components/bootstrap/less/pagination.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/panels.less b/ui/static/bower_components/bootstrap/less/panels.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/panels.less rename to ui/static/bower_components/bootstrap/less/panels.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/popovers.less b/ui/static/bower_components/bootstrap/less/popovers.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/popovers.less rename to ui/static/bower_components/bootstrap/less/popovers.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/print.less b/ui/static/bower_components/bootstrap/less/print.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/print.less rename to ui/static/bower_components/bootstrap/less/print.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/progress-bars.less b/ui/static/bower_components/bootstrap/less/progress-bars.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/progress-bars.less rename to ui/static/bower_components/bootstrap/less/progress-bars.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/responsive-embed.less b/ui/static/bower_components/bootstrap/less/responsive-embed.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/responsive-embed.less rename to ui/static/bower_components/bootstrap/less/responsive-embed.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/responsive-utilities.less b/ui/static/bower_components/bootstrap/less/responsive-utilities.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/responsive-utilities.less rename to ui/static/bower_components/bootstrap/less/responsive-utilities.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/scaffolding.less b/ui/static/bower_components/bootstrap/less/scaffolding.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/scaffolding.less rename to ui/static/bower_components/bootstrap/less/scaffolding.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/tables.less b/ui/static/bower_components/bootstrap/less/tables.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/tables.less rename to ui/static/bower_components/bootstrap/less/tables.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/theme.less b/ui/static/bower_components/bootstrap/less/theme.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/theme.less rename to ui/static/bower_components/bootstrap/less/theme.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/thumbnails.less b/ui/static/bower_components/bootstrap/less/thumbnails.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/thumbnails.less rename to ui/static/bower_components/bootstrap/less/thumbnails.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/tooltip.less b/ui/static/bower_components/bootstrap/less/tooltip.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/tooltip.less rename to ui/static/bower_components/bootstrap/less/tooltip.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/type.less b/ui/static/bower_components/bootstrap/less/type.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/type.less rename to ui/static/bower_components/bootstrap/less/type.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/utilities.less b/ui/static/bower_components/bootstrap/less/utilities.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/utilities.less rename to ui/static/bower_components/bootstrap/less/utilities.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/variables.less b/ui/static/bower_components/bootstrap/less/variables.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/variables.less rename to ui/static/bower_components/bootstrap/less/variables.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/less/wells.less b/ui/static/bower_components/bootstrap/less/wells.less similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/less/wells.less rename to ui/static/bower_components/bootstrap/less/wells.less diff --git a/themes/bootstrap/public/bower_components/bootstrap/nuget/MyGet.ps1 b/ui/static/bower_components/bootstrap/nuget/MyGet.ps1 similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/nuget/MyGet.ps1 rename to ui/static/bower_components/bootstrap/nuget/MyGet.ps1 diff --git a/themes/bootstrap/public/bower_components/bootstrap/nuget/bootstrap.less.nuspec b/ui/static/bower_components/bootstrap/nuget/bootstrap.less.nuspec similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/nuget/bootstrap.less.nuspec rename to ui/static/bower_components/bootstrap/nuget/bootstrap.less.nuspec diff --git a/themes/bootstrap/public/bower_components/bootstrap/nuget/bootstrap.nuspec b/ui/static/bower_components/bootstrap/nuget/bootstrap.nuspec similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/nuget/bootstrap.nuspec rename to ui/static/bower_components/bootstrap/nuget/bootstrap.nuspec diff --git a/themes/bootstrap/public/bower_components/bootstrap/package.js b/ui/static/bower_components/bootstrap/package.js similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/package.js rename to ui/static/bower_components/bootstrap/package.js diff --git a/themes/bootstrap/public/bower_components/bootstrap/package.json b/ui/static/bower_components/bootstrap/package.json similarity index 100% rename from themes/bootstrap/public/bower_components/bootstrap/package.json rename to ui/static/bower_components/bootstrap/package.json diff --git a/themes/bootstrap/public/bower_components/clipboard/.bower.json b/ui/static/bower_components/clipboard/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/.bower.json rename to ui/static/bower_components/clipboard/.bower.json diff --git a/themes/bootstrap/public/bower_components/clipboard/bower.json b/ui/static/bower_components/clipboard/bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/bower.json rename to ui/static/bower_components/clipboard/bower.json diff --git a/themes/bootstrap/public/bower_components/clipboard/contributing.md b/ui/static/bower_components/clipboard/contributing.md similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/contributing.md rename to ui/static/bower_components/clipboard/contributing.md diff --git a/themes/bootstrap/public/bower_components/clipboard/dist/clipboard.js b/ui/static/bower_components/clipboard/dist/clipboard.js similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/dist/clipboard.js rename to ui/static/bower_components/clipboard/dist/clipboard.js diff --git a/themes/bootstrap/public/bower_components/clipboard/dist/clipboard.min.js b/ui/static/bower_components/clipboard/dist/clipboard.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/dist/clipboard.min.js rename to ui/static/bower_components/clipboard/dist/clipboard.min.js diff --git a/themes/bootstrap/public/bower_components/clipboard/package.js b/ui/static/bower_components/clipboard/package.js similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/package.js rename to ui/static/bower_components/clipboard/package.js diff --git a/themes/bootstrap/public/bower_components/clipboard/package.json b/ui/static/bower_components/clipboard/package.json similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/package.json rename to ui/static/bower_components/clipboard/package.json diff --git a/themes/bootstrap/public/bower_components/clipboard/readme.md b/ui/static/bower_components/clipboard/readme.md similarity index 100% rename from themes/bootstrap/public/bower_components/clipboard/readme.md rename to ui/static/bower_components/clipboard/readme.md diff --git a/themes/bootstrap/public/bower_components/jquery-color/.bower.json b/ui/static/bower_components/jquery-color/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/.bower.json rename to ui/static/bower_components/jquery-color/.bower.json diff --git a/themes/bootstrap/public/bower_components/jquery-color/.gitignore b/ui/static/bower_components/jquery-color/.gitignore similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/.gitignore rename to ui/static/bower_components/jquery-color/.gitignore diff --git a/themes/bootstrap/public/bower_components/jquery-color/.gitmodules b/ui/static/bower_components/jquery-color/.gitmodules similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/.gitmodules rename to ui/static/bower_components/jquery-color/.gitmodules diff --git a/themes/bootstrap/public/bower_components/jquery-color/.jshintrc b/ui/static/bower_components/jquery-color/.jshintrc similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/.jshintrc rename to ui/static/bower_components/jquery-color/.jshintrc diff --git a/themes/bootstrap/public/bower_components/jquery-color/AUTHORS.TXT b/ui/static/bower_components/jquery-color/AUTHORS.TXT similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/AUTHORS.TXT rename to ui/static/bower_components/jquery-color/AUTHORS.TXT diff --git a/themes/bootstrap/public/bower_components/jquery-color/MIT-LICENSE.txt b/ui/static/bower_components/jquery-color/MIT-LICENSE.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/MIT-LICENSE.txt rename to ui/static/bower_components/jquery-color/MIT-LICENSE.txt diff --git a/themes/bootstrap/public/bower_components/jquery-color/README.md b/ui/static/bower_components/jquery-color/README.md similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/README.md rename to ui/static/bower_components/jquery-color/README.md diff --git a/themes/bootstrap/public/bower_components/jquery-color/color.jquery.json b/ui/static/bower_components/jquery-color/color.jquery.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/color.jquery.json rename to ui/static/bower_components/jquery-color/color.jquery.json diff --git a/themes/bootstrap/public/bower_components/jquery-color/grunt.js b/ui/static/bower_components/jquery-color/grunt.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/grunt.js rename to ui/static/bower_components/jquery-color/grunt.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/jquery.color.js b/ui/static/bower_components/jquery-color/jquery.color.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/jquery.color.js rename to ui/static/bower_components/jquery-color/jquery.color.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/jquery.color.svg-names.js b/ui/static/bower_components/jquery-color/jquery.color.svg-names.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/jquery.color.svg-names.js rename to ui/static/bower_components/jquery-color/jquery.color.svg-names.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/package.json b/ui/static/bower_components/jquery-color/package.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/package.json rename to ui/static/bower_components/jquery-color/package.json diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/data/swarminject.js b/ui/static/bower_components/jquery-color/test/data/swarminject.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/data/swarminject.js rename to ui/static/bower_components/jquery-color/test/data/swarminject.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/data/testinit.js b/ui/static/bower_components/jquery-color/test/data/testinit.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/data/testinit.js rename to ui/static/bower_components/jquery-color/test/data/testinit.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/index.html b/ui/static/bower_components/jquery-color/test/index.html similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/index.html rename to ui/static/bower_components/jquery-color/test/index.html diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.5.1.js b/ui/static/bower_components/jquery-color/test/jquery-1.5.1.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.5.1.js rename to ui/static/bower_components/jquery-color/test/jquery-1.5.1.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.5.2.js b/ui/static/bower_components/jquery-color/test/jquery-1.5.2.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.5.2.js rename to ui/static/bower_components/jquery-color/test/jquery-1.5.2.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.5.js b/ui/static/bower_components/jquery-color/test/jquery-1.5.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.5.js rename to ui/static/bower_components/jquery-color/test/jquery-1.5.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.1.js b/ui/static/bower_components/jquery-color/test/jquery-1.6.1.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.1.js rename to ui/static/bower_components/jquery-color/test/jquery-1.6.1.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.2.js b/ui/static/bower_components/jquery-color/test/jquery-1.6.2.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.2.js rename to ui/static/bower_components/jquery-color/test/jquery-1.6.2.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.3.js b/ui/static/bower_components/jquery-color/test/jquery-1.6.3.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.3.js rename to ui/static/bower_components/jquery-color/test/jquery-1.6.3.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.4.js b/ui/static/bower_components/jquery-color/test/jquery-1.6.4.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.4.js rename to ui/static/bower_components/jquery-color/test/jquery-1.6.4.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.js b/ui/static/bower_components/jquery-color/test/jquery-1.6.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.6.js rename to ui/static/bower_components/jquery-color/test/jquery-1.6.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.7.1.js b/ui/static/bower_components/jquery-color/test/jquery-1.7.1.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.7.1.js rename to ui/static/bower_components/jquery-color/test/jquery-1.7.1.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.7.2.js b/ui/static/bower_components/jquery-color/test/jquery-1.7.2.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.7.2.js rename to ui/static/bower_components/jquery-color/test/jquery-1.7.2.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.7.js b/ui/static/bower_components/jquery-color/test/jquery-1.7.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery-1.7.js rename to ui/static/bower_components/jquery-color/test/jquery-1.7.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/jquery.js b/ui/static/bower_components/jquery-color/test/jquery.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/jquery.js rename to ui/static/bower_components/jquery-color/test/jquery.js diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/test.html b/ui/static/bower_components/jquery-color/test/test.html similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/test.html rename to ui/static/bower_components/jquery-color/test/test.html diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/unit/.jshintrc b/ui/static/bower_components/jquery-color/test/unit/.jshintrc similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/unit/.jshintrc rename to ui/static/bower_components/jquery-color/test/unit/.jshintrc diff --git a/themes/bootstrap/public/bower_components/jquery-color/test/unit/color.js b/ui/static/bower_components/jquery-color/test/unit/color.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-color/test/unit/color.js rename to ui/static/bower_components/jquery-color/test/unit/color.js diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/.bower.json b/ui/static/bower_components/jquery-load-template/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-load-template/.bower.json rename to ui/static/bower_components/jquery-load-template/.bower.json diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/bower.json b/ui/static/bower_components/jquery-load-template/bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-load-template/bower.json rename to ui/static/bower_components/jquery-load-template/bower.json diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate.js b/ui/static/bower_components/jquery-load-template/dist/jquery.loadTemplate.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate.js rename to ui/static/bower_components/jquery-load-template/dist/jquery.loadTemplate.js diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate.min.js b/ui/static/bower_components/jquery-load-template/dist/jquery.loadTemplate.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate.min.js rename to ui/static/bower_components/jquery-load-template/dist/jquery.loadTemplate.min.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/.bower.json b/ui/static/bower_components/jquery-sparkline/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/.bower.json rename to ui/static/bower_components/jquery-sparkline/.bower.json diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/Changelog.txt b/ui/static/bower_components/jquery-sparkline/Changelog.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/Changelog.txt rename to ui/static/bower_components/jquery-sparkline/Changelog.txt diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/Makefile b/ui/static/bower_components/jquery-sparkline/Makefile similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/Makefile rename to ui/static/bower_components/jquery-sparkline/Makefile diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/README.md b/ui/static/bower_components/jquery-sparkline/README.md similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/README.md rename to ui/static/bower_components/jquery-sparkline/README.md diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/bower.json b/ui/static/bower_components/jquery-sparkline/bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/bower.json rename to ui/static/bower_components/jquery-sparkline/bower.json diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/dist/jquery.sparkline.js b/ui/static/bower_components/jquery-sparkline/dist/jquery.sparkline.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/dist/jquery.sparkline.js rename to ui/static/bower_components/jquery-sparkline/dist/jquery.sparkline.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/dist/jquery.sparkline.min.js b/ui/static/bower_components/jquery-sparkline/dist/jquery.sparkline.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/dist/jquery.sparkline.min.js rename to ui/static/bower_components/jquery-sparkline/dist/jquery.sparkline.min.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/minheader.txt b/ui/static/bower_components/jquery-sparkline/minheader.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/minheader.txt rename to ui/static/bower_components/jquery-sparkline/minheader.txt diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/sparkline.jquery.json b/ui/static/bower_components/jquery-sparkline/sparkline.jquery.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/sparkline.jquery.json rename to ui/static/bower_components/jquery-sparkline/sparkline.jquery.json diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/base.js b/ui/static/bower_components/jquery-sparkline/src/base.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/base.js rename to ui/static/bower_components/jquery-sparkline/src/base.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-bar.js b/ui/static/bower_components/jquery-sparkline/src/chart-bar.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-bar.js rename to ui/static/bower_components/jquery-sparkline/src/chart-bar.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-box.js b/ui/static/bower_components/jquery-sparkline/src/chart-box.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-box.js rename to ui/static/bower_components/jquery-sparkline/src/chart-box.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-bullet.js b/ui/static/bower_components/jquery-sparkline/src/chart-bullet.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-bullet.js rename to ui/static/bower_components/jquery-sparkline/src/chart-bullet.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-discrete.js b/ui/static/bower_components/jquery-sparkline/src/chart-discrete.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-discrete.js rename to ui/static/bower_components/jquery-sparkline/src/chart-discrete.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-line.js b/ui/static/bower_components/jquery-sparkline/src/chart-line.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-line.js rename to ui/static/bower_components/jquery-sparkline/src/chart-line.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-pie.js b/ui/static/bower_components/jquery-sparkline/src/chart-pie.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-pie.js rename to ui/static/bower_components/jquery-sparkline/src/chart-pie.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-tristate.js b/ui/static/bower_components/jquery-sparkline/src/chart-tristate.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/chart-tristate.js rename to ui/static/bower_components/jquery-sparkline/src/chart-tristate.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/defaults.js b/ui/static/bower_components/jquery-sparkline/src/defaults.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/defaults.js rename to ui/static/bower_components/jquery-sparkline/src/defaults.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/footer.js b/ui/static/bower_components/jquery-sparkline/src/footer.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/footer.js rename to ui/static/bower_components/jquery-sparkline/src/footer.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/header.js b/ui/static/bower_components/jquery-sparkline/src/header.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/header.js rename to ui/static/bower_components/jquery-sparkline/src/header.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/interact.js b/ui/static/bower_components/jquery-sparkline/src/interact.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/interact.js rename to ui/static/bower_components/jquery-sparkline/src/interact.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/rangemap.js b/ui/static/bower_components/jquery-sparkline/src/rangemap.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/rangemap.js rename to ui/static/bower_components/jquery-sparkline/src/rangemap.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/simpledraw.js b/ui/static/bower_components/jquery-sparkline/src/simpledraw.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/simpledraw.js rename to ui/static/bower_components/jquery-sparkline/src/simpledraw.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/utils.js b/ui/static/bower_components/jquery-sparkline/src/utils.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/utils.js rename to ui/static/bower_components/jquery-sparkline/src/utils.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/vcanvas-base.js b/ui/static/bower_components/jquery-sparkline/src/vcanvas-base.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/vcanvas-base.js rename to ui/static/bower_components/jquery-sparkline/src/vcanvas-base.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/vcanvas-canvas.js b/ui/static/bower_components/jquery-sparkline/src/vcanvas-canvas.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/vcanvas-canvas.js rename to ui/static/bower_components/jquery-sparkline/src/vcanvas-canvas.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/src/vcanvas-vml.js b/ui/static/bower_components/jquery-sparkline/src/vcanvas-vml.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/src/vcanvas-vml.js rename to ui/static/bower_components/jquery-sparkline/src/vcanvas-vml.js diff --git a/themes/bootstrap/public/bower_components/jquery-sparkline/version.txt b/ui/static/bower_components/jquery-sparkline/version.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery-sparkline/version.txt rename to ui/static/bower_components/jquery-sparkline/version.txt diff --git a/themes/bootstrap/public/bower_components/jquery/.bower.json b/ui/static/bower_components/jquery/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/.bower.json rename to ui/static/bower_components/jquery/.bower.json diff --git a/themes/bootstrap/public/bower_components/jquery/AUTHORS.txt b/ui/static/bower_components/jquery/AUTHORS.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/AUTHORS.txt rename to ui/static/bower_components/jquery/AUTHORS.txt diff --git a/themes/bootstrap/public/bower_components/jquery/LICENSE.txt b/ui/static/bower_components/jquery/LICENSE.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/LICENSE.txt rename to ui/static/bower_components/jquery/LICENSE.txt diff --git a/themes/bootstrap/public/bower_components/jquery/README.md b/ui/static/bower_components/jquery/README.md similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/README.md rename to ui/static/bower_components/jquery/README.md diff --git a/themes/bootstrap/public/bower_components/jquery/bower.json b/ui/static/bower_components/jquery/bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/bower.json rename to ui/static/bower_components/jquery/bower.json diff --git a/themes/bootstrap/public/bower_components/jquery/dist/jquery.js b/ui/static/bower_components/jquery/dist/jquery.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/dist/jquery.js rename to ui/static/bower_components/jquery/dist/jquery.js diff --git a/themes/bootstrap/public/bower_components/jquery/dist/jquery.min.js b/ui/static/bower_components/jquery/dist/jquery.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/dist/jquery.min.js rename to ui/static/bower_components/jquery/dist/jquery.min.js diff --git a/themes/bootstrap/public/bower_components/jquery/dist/jquery.min.map b/ui/static/bower_components/jquery/dist/jquery.min.map similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/dist/jquery.min.map rename to ui/static/bower_components/jquery/dist/jquery.min.map diff --git a/themes/bootstrap/public/bower_components/jquery/external/sizzle/LICENSE.txt b/ui/static/bower_components/jquery/external/sizzle/LICENSE.txt similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/external/sizzle/LICENSE.txt rename to ui/static/bower_components/jquery/external/sizzle/LICENSE.txt diff --git a/themes/bootstrap/public/bower_components/jquery/external/sizzle/dist/sizzle.js b/ui/static/bower_components/jquery/external/sizzle/dist/sizzle.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/external/sizzle/dist/sizzle.js rename to ui/static/bower_components/jquery/external/sizzle/dist/sizzle.js diff --git a/themes/bootstrap/public/bower_components/jquery/external/sizzle/dist/sizzle.min.js b/ui/static/bower_components/jquery/external/sizzle/dist/sizzle.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/external/sizzle/dist/sizzle.min.js rename to ui/static/bower_components/jquery/external/sizzle/dist/sizzle.min.js diff --git a/themes/bootstrap/public/bower_components/jquery/external/sizzle/dist/sizzle.min.map b/ui/static/bower_components/jquery/external/sizzle/dist/sizzle.min.map similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/external/sizzle/dist/sizzle.min.map rename to ui/static/bower_components/jquery/external/sizzle/dist/sizzle.min.map diff --git a/themes/bootstrap/public/bower_components/jquery/src/.jshintrc b/ui/static/bower_components/jquery/src/.jshintrc similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/.jshintrc rename to ui/static/bower_components/jquery/src/.jshintrc diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax.js b/ui/static/bower_components/jquery/src/ajax.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax.js rename to ui/static/bower_components/jquery/src/ajax.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/jsonp.js b/ui/static/bower_components/jquery/src/ajax/jsonp.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/jsonp.js rename to ui/static/bower_components/jquery/src/ajax/jsonp.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/load.js b/ui/static/bower_components/jquery/src/ajax/load.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/load.js rename to ui/static/bower_components/jquery/src/ajax/load.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/parseJSON.js b/ui/static/bower_components/jquery/src/ajax/parseJSON.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/parseJSON.js rename to ui/static/bower_components/jquery/src/ajax/parseJSON.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/parseXML.js b/ui/static/bower_components/jquery/src/ajax/parseXML.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/parseXML.js rename to ui/static/bower_components/jquery/src/ajax/parseXML.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/script.js b/ui/static/bower_components/jquery/src/ajax/script.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/script.js rename to ui/static/bower_components/jquery/src/ajax/script.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/var/location.js b/ui/static/bower_components/jquery/src/ajax/var/location.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/var/location.js rename to ui/static/bower_components/jquery/src/ajax/var/location.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/var/nonce.js b/ui/static/bower_components/jquery/src/ajax/var/nonce.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/var/nonce.js rename to ui/static/bower_components/jquery/src/ajax/var/nonce.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/var/rquery.js b/ui/static/bower_components/jquery/src/ajax/var/rquery.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/var/rquery.js rename to ui/static/bower_components/jquery/src/ajax/var/rquery.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/ajax/xhr.js b/ui/static/bower_components/jquery/src/ajax/xhr.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/ajax/xhr.js rename to ui/static/bower_components/jquery/src/ajax/xhr.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/attributes.js b/ui/static/bower_components/jquery/src/attributes.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/attributes.js rename to ui/static/bower_components/jquery/src/attributes.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/attributes/attr.js b/ui/static/bower_components/jquery/src/attributes/attr.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/attributes/attr.js rename to ui/static/bower_components/jquery/src/attributes/attr.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/attributes/classes.js b/ui/static/bower_components/jquery/src/attributes/classes.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/attributes/classes.js rename to ui/static/bower_components/jquery/src/attributes/classes.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/attributes/prop.js b/ui/static/bower_components/jquery/src/attributes/prop.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/attributes/prop.js rename to ui/static/bower_components/jquery/src/attributes/prop.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/attributes/support.js b/ui/static/bower_components/jquery/src/attributes/support.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/attributes/support.js rename to ui/static/bower_components/jquery/src/attributes/support.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/attributes/val.js b/ui/static/bower_components/jquery/src/attributes/val.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/attributes/val.js rename to ui/static/bower_components/jquery/src/attributes/val.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/callbacks.js b/ui/static/bower_components/jquery/src/callbacks.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/callbacks.js rename to ui/static/bower_components/jquery/src/callbacks.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/core.js b/ui/static/bower_components/jquery/src/core.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/core.js rename to ui/static/bower_components/jquery/src/core.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/core/access.js b/ui/static/bower_components/jquery/src/core/access.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/core/access.js rename to ui/static/bower_components/jquery/src/core/access.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/core/init.js b/ui/static/bower_components/jquery/src/core/init.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/core/init.js rename to ui/static/bower_components/jquery/src/core/init.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/core/parseHTML.js b/ui/static/bower_components/jquery/src/core/parseHTML.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/core/parseHTML.js rename to ui/static/bower_components/jquery/src/core/parseHTML.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/core/ready.js b/ui/static/bower_components/jquery/src/core/ready.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/core/ready.js rename to ui/static/bower_components/jquery/src/core/ready.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/core/var/rsingleTag.js b/ui/static/bower_components/jquery/src/core/var/rsingleTag.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/core/var/rsingleTag.js rename to ui/static/bower_components/jquery/src/core/var/rsingleTag.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css.js b/ui/static/bower_components/jquery/src/css.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css.js rename to ui/static/bower_components/jquery/src/css.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/addGetHookIf.js b/ui/static/bower_components/jquery/src/css/addGetHookIf.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/addGetHookIf.js rename to ui/static/bower_components/jquery/src/css/addGetHookIf.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/adjustCSS.js b/ui/static/bower_components/jquery/src/css/adjustCSS.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/adjustCSS.js rename to ui/static/bower_components/jquery/src/css/adjustCSS.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/curCSS.js b/ui/static/bower_components/jquery/src/css/curCSS.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/curCSS.js rename to ui/static/bower_components/jquery/src/css/curCSS.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/defaultDisplay.js b/ui/static/bower_components/jquery/src/css/defaultDisplay.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/defaultDisplay.js rename to ui/static/bower_components/jquery/src/css/defaultDisplay.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/hiddenVisibleSelectors.js b/ui/static/bower_components/jquery/src/css/hiddenVisibleSelectors.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/hiddenVisibleSelectors.js rename to ui/static/bower_components/jquery/src/css/hiddenVisibleSelectors.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/showHide.js b/ui/static/bower_components/jquery/src/css/showHide.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/showHide.js rename to ui/static/bower_components/jquery/src/css/showHide.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/support.js b/ui/static/bower_components/jquery/src/css/support.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/support.js rename to ui/static/bower_components/jquery/src/css/support.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/var/cssExpand.js b/ui/static/bower_components/jquery/src/css/var/cssExpand.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/var/cssExpand.js rename to ui/static/bower_components/jquery/src/css/var/cssExpand.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/var/getStyles.js b/ui/static/bower_components/jquery/src/css/var/getStyles.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/var/getStyles.js rename to ui/static/bower_components/jquery/src/css/var/getStyles.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/var/isHidden.js b/ui/static/bower_components/jquery/src/css/var/isHidden.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/var/isHidden.js rename to ui/static/bower_components/jquery/src/css/var/isHidden.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/var/rmargin.js b/ui/static/bower_components/jquery/src/css/var/rmargin.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/var/rmargin.js rename to ui/static/bower_components/jquery/src/css/var/rmargin.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/var/rnumnonpx.js b/ui/static/bower_components/jquery/src/css/var/rnumnonpx.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/var/rnumnonpx.js rename to ui/static/bower_components/jquery/src/css/var/rnumnonpx.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/css/var/swap.js b/ui/static/bower_components/jquery/src/css/var/swap.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/css/var/swap.js rename to ui/static/bower_components/jquery/src/css/var/swap.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/data.js b/ui/static/bower_components/jquery/src/data.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/data.js rename to ui/static/bower_components/jquery/src/data.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/data/Data.js b/ui/static/bower_components/jquery/src/data/Data.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/data/Data.js rename to ui/static/bower_components/jquery/src/data/Data.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/data/var/acceptData.js b/ui/static/bower_components/jquery/src/data/var/acceptData.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/data/var/acceptData.js rename to ui/static/bower_components/jquery/src/data/var/acceptData.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/data/var/dataPriv.js b/ui/static/bower_components/jquery/src/data/var/dataPriv.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/data/var/dataPriv.js rename to ui/static/bower_components/jquery/src/data/var/dataPriv.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/data/var/dataUser.js b/ui/static/bower_components/jquery/src/data/var/dataUser.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/data/var/dataUser.js rename to ui/static/bower_components/jquery/src/data/var/dataUser.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/deferred.js b/ui/static/bower_components/jquery/src/deferred.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/deferred.js rename to ui/static/bower_components/jquery/src/deferred.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/deprecated.js b/ui/static/bower_components/jquery/src/deprecated.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/deprecated.js rename to ui/static/bower_components/jquery/src/deprecated.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/dimensions.js b/ui/static/bower_components/jquery/src/dimensions.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/dimensions.js rename to ui/static/bower_components/jquery/src/dimensions.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/effects.js b/ui/static/bower_components/jquery/src/effects.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/effects.js rename to ui/static/bower_components/jquery/src/effects.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/effects/Tween.js b/ui/static/bower_components/jquery/src/effects/Tween.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/effects/Tween.js rename to ui/static/bower_components/jquery/src/effects/Tween.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/effects/animatedSelector.js b/ui/static/bower_components/jquery/src/effects/animatedSelector.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/effects/animatedSelector.js rename to ui/static/bower_components/jquery/src/effects/animatedSelector.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/event.js b/ui/static/bower_components/jquery/src/event.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/event.js rename to ui/static/bower_components/jquery/src/event.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/event/ajax.js b/ui/static/bower_components/jquery/src/event/ajax.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/event/ajax.js rename to ui/static/bower_components/jquery/src/event/ajax.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/event/alias.js b/ui/static/bower_components/jquery/src/event/alias.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/event/alias.js rename to ui/static/bower_components/jquery/src/event/alias.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/event/focusin.js b/ui/static/bower_components/jquery/src/event/focusin.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/event/focusin.js rename to ui/static/bower_components/jquery/src/event/focusin.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/event/support.js b/ui/static/bower_components/jquery/src/event/support.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/event/support.js rename to ui/static/bower_components/jquery/src/event/support.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/event/trigger.js b/ui/static/bower_components/jquery/src/event/trigger.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/event/trigger.js rename to ui/static/bower_components/jquery/src/event/trigger.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/exports/amd.js b/ui/static/bower_components/jquery/src/exports/amd.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/exports/amd.js rename to ui/static/bower_components/jquery/src/exports/amd.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/exports/global.js b/ui/static/bower_components/jquery/src/exports/global.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/exports/global.js rename to ui/static/bower_components/jquery/src/exports/global.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/intro.js b/ui/static/bower_components/jquery/src/intro.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/intro.js rename to ui/static/bower_components/jquery/src/intro.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/jquery.js b/ui/static/bower_components/jquery/src/jquery.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/jquery.js rename to ui/static/bower_components/jquery/src/jquery.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation.js b/ui/static/bower_components/jquery/src/manipulation.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation.js rename to ui/static/bower_components/jquery/src/manipulation.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/_evalUrl.js b/ui/static/bower_components/jquery/src/manipulation/_evalUrl.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/_evalUrl.js rename to ui/static/bower_components/jquery/src/manipulation/_evalUrl.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/buildFragment.js b/ui/static/bower_components/jquery/src/manipulation/buildFragment.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/buildFragment.js rename to ui/static/bower_components/jquery/src/manipulation/buildFragment.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/getAll.js b/ui/static/bower_components/jquery/src/manipulation/getAll.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/getAll.js rename to ui/static/bower_components/jquery/src/manipulation/getAll.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/setGlobalEval.js b/ui/static/bower_components/jquery/src/manipulation/setGlobalEval.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/setGlobalEval.js rename to ui/static/bower_components/jquery/src/manipulation/setGlobalEval.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/support.js b/ui/static/bower_components/jquery/src/manipulation/support.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/support.js rename to ui/static/bower_components/jquery/src/manipulation/support.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/var/rcheckableType.js b/ui/static/bower_components/jquery/src/manipulation/var/rcheckableType.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/var/rcheckableType.js rename to ui/static/bower_components/jquery/src/manipulation/var/rcheckableType.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/var/rscriptType.js b/ui/static/bower_components/jquery/src/manipulation/var/rscriptType.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/var/rscriptType.js rename to ui/static/bower_components/jquery/src/manipulation/var/rscriptType.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/var/rtagName.js b/ui/static/bower_components/jquery/src/manipulation/var/rtagName.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/var/rtagName.js rename to ui/static/bower_components/jquery/src/manipulation/var/rtagName.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/manipulation/wrapMap.js b/ui/static/bower_components/jquery/src/manipulation/wrapMap.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/manipulation/wrapMap.js rename to ui/static/bower_components/jquery/src/manipulation/wrapMap.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/offset.js b/ui/static/bower_components/jquery/src/offset.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/offset.js rename to ui/static/bower_components/jquery/src/offset.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/outro.js b/ui/static/bower_components/jquery/src/outro.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/outro.js rename to ui/static/bower_components/jquery/src/outro.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/queue.js b/ui/static/bower_components/jquery/src/queue.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/queue.js rename to ui/static/bower_components/jquery/src/queue.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/queue/delay.js b/ui/static/bower_components/jquery/src/queue/delay.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/queue/delay.js rename to ui/static/bower_components/jquery/src/queue/delay.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/selector-native.js b/ui/static/bower_components/jquery/src/selector-native.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/selector-native.js rename to ui/static/bower_components/jquery/src/selector-native.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/selector-sizzle.js b/ui/static/bower_components/jquery/src/selector-sizzle.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/selector-sizzle.js rename to ui/static/bower_components/jquery/src/selector-sizzle.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/selector.js b/ui/static/bower_components/jquery/src/selector.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/selector.js rename to ui/static/bower_components/jquery/src/selector.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/serialize.js b/ui/static/bower_components/jquery/src/serialize.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/serialize.js rename to ui/static/bower_components/jquery/src/serialize.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/traversing.js b/ui/static/bower_components/jquery/src/traversing.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/traversing.js rename to ui/static/bower_components/jquery/src/traversing.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/traversing/findFilter.js b/ui/static/bower_components/jquery/src/traversing/findFilter.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/traversing/findFilter.js rename to ui/static/bower_components/jquery/src/traversing/findFilter.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/traversing/var/dir.js b/ui/static/bower_components/jquery/src/traversing/var/dir.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/traversing/var/dir.js rename to ui/static/bower_components/jquery/src/traversing/var/dir.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/traversing/var/rneedsContext.js b/ui/static/bower_components/jquery/src/traversing/var/rneedsContext.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/traversing/var/rneedsContext.js rename to ui/static/bower_components/jquery/src/traversing/var/rneedsContext.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/traversing/var/siblings.js b/ui/static/bower_components/jquery/src/traversing/var/siblings.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/traversing/var/siblings.js rename to ui/static/bower_components/jquery/src/traversing/var/siblings.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/arr.js b/ui/static/bower_components/jquery/src/var/arr.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/arr.js rename to ui/static/bower_components/jquery/src/var/arr.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/class2type.js b/ui/static/bower_components/jquery/src/var/class2type.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/class2type.js rename to ui/static/bower_components/jquery/src/var/class2type.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/concat.js b/ui/static/bower_components/jquery/src/var/concat.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/concat.js rename to ui/static/bower_components/jquery/src/var/concat.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/document.js b/ui/static/bower_components/jquery/src/var/document.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/document.js rename to ui/static/bower_components/jquery/src/var/document.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/documentElement.js b/ui/static/bower_components/jquery/src/var/documentElement.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/documentElement.js rename to ui/static/bower_components/jquery/src/var/documentElement.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/hasOwn.js b/ui/static/bower_components/jquery/src/var/hasOwn.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/hasOwn.js rename to ui/static/bower_components/jquery/src/var/hasOwn.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/indexOf.js b/ui/static/bower_components/jquery/src/var/indexOf.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/indexOf.js rename to ui/static/bower_components/jquery/src/var/indexOf.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/pnum.js b/ui/static/bower_components/jquery/src/var/pnum.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/pnum.js rename to ui/static/bower_components/jquery/src/var/pnum.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/push.js b/ui/static/bower_components/jquery/src/var/push.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/push.js rename to ui/static/bower_components/jquery/src/var/push.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/rcssNum.js b/ui/static/bower_components/jquery/src/var/rcssNum.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/rcssNum.js rename to ui/static/bower_components/jquery/src/var/rcssNum.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/rnotwhite.js b/ui/static/bower_components/jquery/src/var/rnotwhite.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/rnotwhite.js rename to ui/static/bower_components/jquery/src/var/rnotwhite.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/slice.js b/ui/static/bower_components/jquery/src/var/slice.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/slice.js rename to ui/static/bower_components/jquery/src/var/slice.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/support.js b/ui/static/bower_components/jquery/src/var/support.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/support.js rename to ui/static/bower_components/jquery/src/var/support.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/var/toString.js b/ui/static/bower_components/jquery/src/var/toString.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/var/toString.js rename to ui/static/bower_components/jquery/src/var/toString.js diff --git a/themes/bootstrap/public/bower_components/jquery/src/wrap.js b/ui/static/bower_components/jquery/src/wrap.js similarity index 100% rename from themes/bootstrap/public/bower_components/jquery/src/wrap.js rename to ui/static/bower_components/jquery/src/wrap.js diff --git a/themes/bootstrap/public/bower_components/moment/.bower.json b/ui/static/bower_components/moment/.bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/moment/.bower.json rename to ui/static/bower_components/moment/.bower.json diff --git a/themes/bootstrap/public/bower_components/moment/CHANGELOG.md b/ui/static/bower_components/moment/CHANGELOG.md similarity index 100% rename from themes/bootstrap/public/bower_components/moment/CHANGELOG.md rename to ui/static/bower_components/moment/CHANGELOG.md diff --git a/themes/bootstrap/public/bower_components/moment/LICENSE b/ui/static/bower_components/moment/LICENSE similarity index 100% rename from themes/bootstrap/public/bower_components/moment/LICENSE rename to ui/static/bower_components/moment/LICENSE diff --git a/themes/bootstrap/public/bower_components/moment/README.md b/ui/static/bower_components/moment/README.md similarity index 100% rename from themes/bootstrap/public/bower_components/moment/README.md rename to ui/static/bower_components/moment/README.md diff --git a/themes/bootstrap/public/bower_components/moment/bower.json b/ui/static/bower_components/moment/bower.json similarity index 100% rename from themes/bootstrap/public/bower_components/moment/bower.json rename to ui/static/bower_components/moment/bower.json diff --git a/themes/bootstrap/public/bower_components/moment/locale/af.js b/ui/static/bower_components/moment/locale/af.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/af.js rename to ui/static/bower_components/moment/locale/af.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ar-dz.js b/ui/static/bower_components/moment/locale/ar-dz.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ar-dz.js rename to ui/static/bower_components/moment/locale/ar-dz.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ar-ly.js b/ui/static/bower_components/moment/locale/ar-ly.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ar-ly.js rename to ui/static/bower_components/moment/locale/ar-ly.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ar-ma.js b/ui/static/bower_components/moment/locale/ar-ma.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ar-ma.js rename to ui/static/bower_components/moment/locale/ar-ma.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ar-sa.js b/ui/static/bower_components/moment/locale/ar-sa.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ar-sa.js rename to ui/static/bower_components/moment/locale/ar-sa.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ar-tn.js b/ui/static/bower_components/moment/locale/ar-tn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ar-tn.js rename to ui/static/bower_components/moment/locale/ar-tn.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ar.js b/ui/static/bower_components/moment/locale/ar.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ar.js rename to ui/static/bower_components/moment/locale/ar.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/az.js b/ui/static/bower_components/moment/locale/az.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/az.js rename to ui/static/bower_components/moment/locale/az.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/be.js b/ui/static/bower_components/moment/locale/be.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/be.js rename to ui/static/bower_components/moment/locale/be.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/bg.js b/ui/static/bower_components/moment/locale/bg.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/bg.js rename to ui/static/bower_components/moment/locale/bg.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/bn.js b/ui/static/bower_components/moment/locale/bn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/bn.js rename to ui/static/bower_components/moment/locale/bn.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/bo.js b/ui/static/bower_components/moment/locale/bo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/bo.js rename to ui/static/bower_components/moment/locale/bo.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/br.js b/ui/static/bower_components/moment/locale/br.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/br.js rename to ui/static/bower_components/moment/locale/br.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/bs.js b/ui/static/bower_components/moment/locale/bs.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/bs.js rename to ui/static/bower_components/moment/locale/bs.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ca.js b/ui/static/bower_components/moment/locale/ca.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ca.js rename to ui/static/bower_components/moment/locale/ca.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/cs.js b/ui/static/bower_components/moment/locale/cs.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/cs.js rename to ui/static/bower_components/moment/locale/cs.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/cv.js b/ui/static/bower_components/moment/locale/cv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/cv.js rename to ui/static/bower_components/moment/locale/cv.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/cy.js b/ui/static/bower_components/moment/locale/cy.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/cy.js rename to ui/static/bower_components/moment/locale/cy.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/da.js b/ui/static/bower_components/moment/locale/da.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/da.js rename to ui/static/bower_components/moment/locale/da.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/de-at.js b/ui/static/bower_components/moment/locale/de-at.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/de-at.js rename to ui/static/bower_components/moment/locale/de-at.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/de.js b/ui/static/bower_components/moment/locale/de.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/de.js rename to ui/static/bower_components/moment/locale/de.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/dv.js b/ui/static/bower_components/moment/locale/dv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/dv.js rename to ui/static/bower_components/moment/locale/dv.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/el.js b/ui/static/bower_components/moment/locale/el.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/el.js rename to ui/static/bower_components/moment/locale/el.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/en-au.js b/ui/static/bower_components/moment/locale/en-au.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/en-au.js rename to ui/static/bower_components/moment/locale/en-au.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/en-ca.js b/ui/static/bower_components/moment/locale/en-ca.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/en-ca.js rename to ui/static/bower_components/moment/locale/en-ca.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/en-gb.js b/ui/static/bower_components/moment/locale/en-gb.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/en-gb.js rename to ui/static/bower_components/moment/locale/en-gb.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/en-ie.js b/ui/static/bower_components/moment/locale/en-ie.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/en-ie.js rename to ui/static/bower_components/moment/locale/en-ie.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/en-nz.js b/ui/static/bower_components/moment/locale/en-nz.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/en-nz.js rename to ui/static/bower_components/moment/locale/en-nz.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/eo.js b/ui/static/bower_components/moment/locale/eo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/eo.js rename to ui/static/bower_components/moment/locale/eo.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/es-do.js b/ui/static/bower_components/moment/locale/es-do.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/es-do.js rename to ui/static/bower_components/moment/locale/es-do.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/es.js b/ui/static/bower_components/moment/locale/es.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/es.js rename to ui/static/bower_components/moment/locale/es.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/et.js b/ui/static/bower_components/moment/locale/et.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/et.js rename to ui/static/bower_components/moment/locale/et.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/eu.js b/ui/static/bower_components/moment/locale/eu.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/eu.js rename to ui/static/bower_components/moment/locale/eu.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fa.js b/ui/static/bower_components/moment/locale/fa.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fa.js rename to ui/static/bower_components/moment/locale/fa.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fi.js b/ui/static/bower_components/moment/locale/fi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fi.js rename to ui/static/bower_components/moment/locale/fi.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fo.js b/ui/static/bower_components/moment/locale/fo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fo.js rename to ui/static/bower_components/moment/locale/fo.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fr-ca.js b/ui/static/bower_components/moment/locale/fr-ca.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fr-ca.js rename to ui/static/bower_components/moment/locale/fr-ca.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fr-ch.js b/ui/static/bower_components/moment/locale/fr-ch.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fr-ch.js rename to ui/static/bower_components/moment/locale/fr-ch.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fr.js b/ui/static/bower_components/moment/locale/fr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fr.js rename to ui/static/bower_components/moment/locale/fr.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/fy.js b/ui/static/bower_components/moment/locale/fy.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/fy.js rename to ui/static/bower_components/moment/locale/fy.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/gd.js b/ui/static/bower_components/moment/locale/gd.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/gd.js rename to ui/static/bower_components/moment/locale/gd.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/gl.js b/ui/static/bower_components/moment/locale/gl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/gl.js rename to ui/static/bower_components/moment/locale/gl.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/he.js b/ui/static/bower_components/moment/locale/he.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/he.js rename to ui/static/bower_components/moment/locale/he.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/hi.js b/ui/static/bower_components/moment/locale/hi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/hi.js rename to ui/static/bower_components/moment/locale/hi.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/hr.js b/ui/static/bower_components/moment/locale/hr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/hr.js rename to ui/static/bower_components/moment/locale/hr.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/hu.js b/ui/static/bower_components/moment/locale/hu.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/hu.js rename to ui/static/bower_components/moment/locale/hu.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/hy-am.js b/ui/static/bower_components/moment/locale/hy-am.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/hy-am.js rename to ui/static/bower_components/moment/locale/hy-am.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/id.js b/ui/static/bower_components/moment/locale/id.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/id.js rename to ui/static/bower_components/moment/locale/id.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/is.js b/ui/static/bower_components/moment/locale/is.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/is.js rename to ui/static/bower_components/moment/locale/is.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/it.js b/ui/static/bower_components/moment/locale/it.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/it.js rename to ui/static/bower_components/moment/locale/it.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ja.js b/ui/static/bower_components/moment/locale/ja.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ja.js rename to ui/static/bower_components/moment/locale/ja.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/jv.js b/ui/static/bower_components/moment/locale/jv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/jv.js rename to ui/static/bower_components/moment/locale/jv.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ka.js b/ui/static/bower_components/moment/locale/ka.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ka.js rename to ui/static/bower_components/moment/locale/ka.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/kk.js b/ui/static/bower_components/moment/locale/kk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/kk.js rename to ui/static/bower_components/moment/locale/kk.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/km.js b/ui/static/bower_components/moment/locale/km.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/km.js rename to ui/static/bower_components/moment/locale/km.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ko.js b/ui/static/bower_components/moment/locale/ko.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ko.js rename to ui/static/bower_components/moment/locale/ko.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ky.js b/ui/static/bower_components/moment/locale/ky.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ky.js rename to ui/static/bower_components/moment/locale/ky.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/lb.js b/ui/static/bower_components/moment/locale/lb.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/lb.js rename to ui/static/bower_components/moment/locale/lb.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/lo.js b/ui/static/bower_components/moment/locale/lo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/lo.js rename to ui/static/bower_components/moment/locale/lo.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/lt.js b/ui/static/bower_components/moment/locale/lt.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/lt.js rename to ui/static/bower_components/moment/locale/lt.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/lv.js b/ui/static/bower_components/moment/locale/lv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/lv.js rename to ui/static/bower_components/moment/locale/lv.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/me.js b/ui/static/bower_components/moment/locale/me.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/me.js rename to ui/static/bower_components/moment/locale/me.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/mi.js b/ui/static/bower_components/moment/locale/mi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/mi.js rename to ui/static/bower_components/moment/locale/mi.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/mk.js b/ui/static/bower_components/moment/locale/mk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/mk.js rename to ui/static/bower_components/moment/locale/mk.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ml.js b/ui/static/bower_components/moment/locale/ml.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ml.js rename to ui/static/bower_components/moment/locale/ml.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/mr.js b/ui/static/bower_components/moment/locale/mr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/mr.js rename to ui/static/bower_components/moment/locale/mr.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ms-my.js b/ui/static/bower_components/moment/locale/ms-my.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ms-my.js rename to ui/static/bower_components/moment/locale/ms-my.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ms.js b/ui/static/bower_components/moment/locale/ms.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ms.js rename to ui/static/bower_components/moment/locale/ms.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/my.js b/ui/static/bower_components/moment/locale/my.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/my.js rename to ui/static/bower_components/moment/locale/my.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/nb.js b/ui/static/bower_components/moment/locale/nb.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/nb.js rename to ui/static/bower_components/moment/locale/nb.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ne.js b/ui/static/bower_components/moment/locale/ne.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ne.js rename to ui/static/bower_components/moment/locale/ne.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/nl-be.js b/ui/static/bower_components/moment/locale/nl-be.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/nl-be.js rename to ui/static/bower_components/moment/locale/nl-be.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/nl.js b/ui/static/bower_components/moment/locale/nl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/nl.js rename to ui/static/bower_components/moment/locale/nl.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/nn.js b/ui/static/bower_components/moment/locale/nn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/nn.js rename to ui/static/bower_components/moment/locale/nn.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/pa-in.js b/ui/static/bower_components/moment/locale/pa-in.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/pa-in.js rename to ui/static/bower_components/moment/locale/pa-in.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/pl.js b/ui/static/bower_components/moment/locale/pl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/pl.js rename to ui/static/bower_components/moment/locale/pl.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/pt-br.js b/ui/static/bower_components/moment/locale/pt-br.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/pt-br.js rename to ui/static/bower_components/moment/locale/pt-br.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/pt.js b/ui/static/bower_components/moment/locale/pt.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/pt.js rename to ui/static/bower_components/moment/locale/pt.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ro.js b/ui/static/bower_components/moment/locale/ro.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ro.js rename to ui/static/bower_components/moment/locale/ro.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ru.js b/ui/static/bower_components/moment/locale/ru.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ru.js rename to ui/static/bower_components/moment/locale/ru.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/se.js b/ui/static/bower_components/moment/locale/se.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/se.js rename to ui/static/bower_components/moment/locale/se.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/si.js b/ui/static/bower_components/moment/locale/si.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/si.js rename to ui/static/bower_components/moment/locale/si.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sk.js b/ui/static/bower_components/moment/locale/sk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sk.js rename to ui/static/bower_components/moment/locale/sk.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sl.js b/ui/static/bower_components/moment/locale/sl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sl.js rename to ui/static/bower_components/moment/locale/sl.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sq.js b/ui/static/bower_components/moment/locale/sq.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sq.js rename to ui/static/bower_components/moment/locale/sq.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sr-cyrl.js b/ui/static/bower_components/moment/locale/sr-cyrl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sr-cyrl.js rename to ui/static/bower_components/moment/locale/sr-cyrl.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sr.js b/ui/static/bower_components/moment/locale/sr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sr.js rename to ui/static/bower_components/moment/locale/sr.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ss.js b/ui/static/bower_components/moment/locale/ss.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ss.js rename to ui/static/bower_components/moment/locale/ss.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sv.js b/ui/static/bower_components/moment/locale/sv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sv.js rename to ui/static/bower_components/moment/locale/sv.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/sw.js b/ui/static/bower_components/moment/locale/sw.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/sw.js rename to ui/static/bower_components/moment/locale/sw.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/ta.js b/ui/static/bower_components/moment/locale/ta.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/ta.js rename to ui/static/bower_components/moment/locale/ta.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/te.js b/ui/static/bower_components/moment/locale/te.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/te.js rename to ui/static/bower_components/moment/locale/te.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tet.js b/ui/static/bower_components/moment/locale/tet.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tet.js rename to ui/static/bower_components/moment/locale/tet.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/th.js b/ui/static/bower_components/moment/locale/th.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/th.js rename to ui/static/bower_components/moment/locale/th.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tl-ph.js b/ui/static/bower_components/moment/locale/tl-ph.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tl-ph.js rename to ui/static/bower_components/moment/locale/tl-ph.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tlh.js b/ui/static/bower_components/moment/locale/tlh.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tlh.js rename to ui/static/bower_components/moment/locale/tlh.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tr.js b/ui/static/bower_components/moment/locale/tr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tr.js rename to ui/static/bower_components/moment/locale/tr.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tzl.js b/ui/static/bower_components/moment/locale/tzl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tzl.js rename to ui/static/bower_components/moment/locale/tzl.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tzm-latn.js b/ui/static/bower_components/moment/locale/tzm-latn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tzm-latn.js rename to ui/static/bower_components/moment/locale/tzm-latn.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/tzm.js b/ui/static/bower_components/moment/locale/tzm.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/tzm.js rename to ui/static/bower_components/moment/locale/tzm.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/uk.js b/ui/static/bower_components/moment/locale/uk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/uk.js rename to ui/static/bower_components/moment/locale/uk.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/uz.js b/ui/static/bower_components/moment/locale/uz.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/uz.js rename to ui/static/bower_components/moment/locale/uz.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/vi.js b/ui/static/bower_components/moment/locale/vi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/vi.js rename to ui/static/bower_components/moment/locale/vi.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/x-pseudo.js b/ui/static/bower_components/moment/locale/x-pseudo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/x-pseudo.js rename to ui/static/bower_components/moment/locale/x-pseudo.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/yo.js b/ui/static/bower_components/moment/locale/yo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/yo.js rename to ui/static/bower_components/moment/locale/yo.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/zh-cn.js b/ui/static/bower_components/moment/locale/zh-cn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/zh-cn.js rename to ui/static/bower_components/moment/locale/zh-cn.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/zh-hk.js b/ui/static/bower_components/moment/locale/zh-hk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/zh-hk.js rename to ui/static/bower_components/moment/locale/zh-hk.js diff --git a/themes/bootstrap/public/bower_components/moment/locale/zh-tw.js b/ui/static/bower_components/moment/locale/zh-tw.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/locale/zh-tw.js rename to ui/static/bower_components/moment/locale/zh-tw.js diff --git a/themes/bootstrap/public/bower_components/moment/min/locales.js b/ui/static/bower_components/moment/min/locales.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/min/locales.js rename to ui/static/bower_components/moment/min/locales.js diff --git a/themes/bootstrap/public/bower_components/moment/min/locales.min.js b/ui/static/bower_components/moment/min/locales.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/min/locales.min.js rename to ui/static/bower_components/moment/min/locales.min.js diff --git a/themes/bootstrap/public/bower_components/moment/min/moment-with-locales.js b/ui/static/bower_components/moment/min/moment-with-locales.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/min/moment-with-locales.js rename to ui/static/bower_components/moment/min/moment-with-locales.js diff --git a/themes/bootstrap/public/bower_components/moment/min/moment-with-locales.min.js b/ui/static/bower_components/moment/min/moment-with-locales.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/min/moment-with-locales.min.js rename to ui/static/bower_components/moment/min/moment-with-locales.min.js diff --git a/themes/bootstrap/public/bower_components/moment/min/moment.min.js b/ui/static/bower_components/moment/min/moment.min.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/min/moment.min.js rename to ui/static/bower_components/moment/min/moment.min.js diff --git a/themes/bootstrap/public/bower_components/moment/min/tests.js b/ui/static/bower_components/moment/min/tests.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/min/tests.js rename to ui/static/bower_components/moment/min/tests.js diff --git a/themes/bootstrap/public/bower_components/moment/moment.d.ts b/ui/static/bower_components/moment/moment.d.ts similarity index 100% rename from themes/bootstrap/public/bower_components/moment/moment.d.ts rename to ui/static/bower_components/moment/moment.d.ts diff --git a/themes/bootstrap/public/bower_components/moment/moment.js b/ui/static/bower_components/moment/moment.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/moment.js rename to ui/static/bower_components/moment/moment.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/check-overflow.js b/ui/static/bower_components/moment/src/lib/create/check-overflow.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/check-overflow.js rename to ui/static/bower_components/moment/src/lib/create/check-overflow.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/date-from-array.js b/ui/static/bower_components/moment/src/lib/create/date-from-array.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/date-from-array.js rename to ui/static/bower_components/moment/src/lib/create/date-from-array.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/from-anything.js b/ui/static/bower_components/moment/src/lib/create/from-anything.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/from-anything.js rename to ui/static/bower_components/moment/src/lib/create/from-anything.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/from-array.js b/ui/static/bower_components/moment/src/lib/create/from-array.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/from-array.js rename to ui/static/bower_components/moment/src/lib/create/from-array.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/from-object.js b/ui/static/bower_components/moment/src/lib/create/from-object.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/from-object.js rename to ui/static/bower_components/moment/src/lib/create/from-object.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/from-string-and-array.js b/ui/static/bower_components/moment/src/lib/create/from-string-and-array.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/from-string-and-array.js rename to ui/static/bower_components/moment/src/lib/create/from-string-and-array.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/from-string-and-format.js b/ui/static/bower_components/moment/src/lib/create/from-string-and-format.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/from-string-and-format.js rename to ui/static/bower_components/moment/src/lib/create/from-string-and-format.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/from-string.js b/ui/static/bower_components/moment/src/lib/create/from-string.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/from-string.js rename to ui/static/bower_components/moment/src/lib/create/from-string.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/local.js b/ui/static/bower_components/moment/src/lib/create/local.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/local.js rename to ui/static/bower_components/moment/src/lib/create/local.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/parsing-flags.js b/ui/static/bower_components/moment/src/lib/create/parsing-flags.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/parsing-flags.js rename to ui/static/bower_components/moment/src/lib/create/parsing-flags.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/utc.js b/ui/static/bower_components/moment/src/lib/create/utc.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/utc.js rename to ui/static/bower_components/moment/src/lib/create/utc.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/create/valid.js b/ui/static/bower_components/moment/src/lib/create/valid.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/create/valid.js rename to ui/static/bower_components/moment/src/lib/create/valid.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/abs.js b/ui/static/bower_components/moment/src/lib/duration/abs.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/abs.js rename to ui/static/bower_components/moment/src/lib/duration/abs.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/add-subtract.js b/ui/static/bower_components/moment/src/lib/duration/add-subtract.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/add-subtract.js rename to ui/static/bower_components/moment/src/lib/duration/add-subtract.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/as.js b/ui/static/bower_components/moment/src/lib/duration/as.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/as.js rename to ui/static/bower_components/moment/src/lib/duration/as.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/bubble.js b/ui/static/bower_components/moment/src/lib/duration/bubble.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/bubble.js rename to ui/static/bower_components/moment/src/lib/duration/bubble.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/constructor.js b/ui/static/bower_components/moment/src/lib/duration/constructor.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/constructor.js rename to ui/static/bower_components/moment/src/lib/duration/constructor.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/create.js b/ui/static/bower_components/moment/src/lib/duration/create.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/create.js rename to ui/static/bower_components/moment/src/lib/duration/create.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/duration.js b/ui/static/bower_components/moment/src/lib/duration/duration.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/duration.js rename to ui/static/bower_components/moment/src/lib/duration/duration.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/get.js b/ui/static/bower_components/moment/src/lib/duration/get.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/get.js rename to ui/static/bower_components/moment/src/lib/duration/get.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/humanize.js b/ui/static/bower_components/moment/src/lib/duration/humanize.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/humanize.js rename to ui/static/bower_components/moment/src/lib/duration/humanize.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/iso-string.js b/ui/static/bower_components/moment/src/lib/duration/iso-string.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/iso-string.js rename to ui/static/bower_components/moment/src/lib/duration/iso-string.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/duration/prototype.js b/ui/static/bower_components/moment/src/lib/duration/prototype.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/duration/prototype.js rename to ui/static/bower_components/moment/src/lib/duration/prototype.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/format/format.js b/ui/static/bower_components/moment/src/lib/format/format.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/format/format.js rename to ui/static/bower_components/moment/src/lib/format/format.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/base-config.js b/ui/static/bower_components/moment/src/lib/locale/base-config.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/base-config.js rename to ui/static/bower_components/moment/src/lib/locale/base-config.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/calendar.js b/ui/static/bower_components/moment/src/lib/locale/calendar.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/calendar.js rename to ui/static/bower_components/moment/src/lib/locale/calendar.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/constructor.js b/ui/static/bower_components/moment/src/lib/locale/constructor.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/constructor.js rename to ui/static/bower_components/moment/src/lib/locale/constructor.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/en.js b/ui/static/bower_components/moment/src/lib/locale/en.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/en.js rename to ui/static/bower_components/moment/src/lib/locale/en.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/formats.js b/ui/static/bower_components/moment/src/lib/locale/formats.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/formats.js rename to ui/static/bower_components/moment/src/lib/locale/formats.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/invalid.js b/ui/static/bower_components/moment/src/lib/locale/invalid.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/invalid.js rename to ui/static/bower_components/moment/src/lib/locale/invalid.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/lists.js b/ui/static/bower_components/moment/src/lib/locale/lists.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/lists.js rename to ui/static/bower_components/moment/src/lib/locale/lists.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/locale.js b/ui/static/bower_components/moment/src/lib/locale/locale.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/locale.js rename to ui/static/bower_components/moment/src/lib/locale/locale.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/locales.js b/ui/static/bower_components/moment/src/lib/locale/locales.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/locales.js rename to ui/static/bower_components/moment/src/lib/locale/locales.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/ordinal.js b/ui/static/bower_components/moment/src/lib/locale/ordinal.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/ordinal.js rename to ui/static/bower_components/moment/src/lib/locale/ordinal.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/pre-post-format.js b/ui/static/bower_components/moment/src/lib/locale/pre-post-format.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/pre-post-format.js rename to ui/static/bower_components/moment/src/lib/locale/pre-post-format.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/prototype.js b/ui/static/bower_components/moment/src/lib/locale/prototype.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/prototype.js rename to ui/static/bower_components/moment/src/lib/locale/prototype.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/relative.js b/ui/static/bower_components/moment/src/lib/locale/relative.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/relative.js rename to ui/static/bower_components/moment/src/lib/locale/relative.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/locale/set.js b/ui/static/bower_components/moment/src/lib/locale/set.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/locale/set.js rename to ui/static/bower_components/moment/src/lib/locale/set.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/add-subtract.js b/ui/static/bower_components/moment/src/lib/moment/add-subtract.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/add-subtract.js rename to ui/static/bower_components/moment/src/lib/moment/add-subtract.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/calendar.js b/ui/static/bower_components/moment/src/lib/moment/calendar.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/calendar.js rename to ui/static/bower_components/moment/src/lib/moment/calendar.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/clone.js b/ui/static/bower_components/moment/src/lib/moment/clone.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/clone.js rename to ui/static/bower_components/moment/src/lib/moment/clone.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/compare.js b/ui/static/bower_components/moment/src/lib/moment/compare.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/compare.js rename to ui/static/bower_components/moment/src/lib/moment/compare.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/constructor.js b/ui/static/bower_components/moment/src/lib/moment/constructor.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/constructor.js rename to ui/static/bower_components/moment/src/lib/moment/constructor.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/creation-data.js b/ui/static/bower_components/moment/src/lib/moment/creation-data.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/creation-data.js rename to ui/static/bower_components/moment/src/lib/moment/creation-data.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/diff.js b/ui/static/bower_components/moment/src/lib/moment/diff.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/diff.js rename to ui/static/bower_components/moment/src/lib/moment/diff.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/format.js b/ui/static/bower_components/moment/src/lib/moment/format.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/format.js rename to ui/static/bower_components/moment/src/lib/moment/format.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/from.js b/ui/static/bower_components/moment/src/lib/moment/from.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/from.js rename to ui/static/bower_components/moment/src/lib/moment/from.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/get-set.js b/ui/static/bower_components/moment/src/lib/moment/get-set.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/get-set.js rename to ui/static/bower_components/moment/src/lib/moment/get-set.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/locale.js b/ui/static/bower_components/moment/src/lib/moment/locale.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/locale.js rename to ui/static/bower_components/moment/src/lib/moment/locale.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/min-max.js b/ui/static/bower_components/moment/src/lib/moment/min-max.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/min-max.js rename to ui/static/bower_components/moment/src/lib/moment/min-max.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/moment.js b/ui/static/bower_components/moment/src/lib/moment/moment.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/moment.js rename to ui/static/bower_components/moment/src/lib/moment/moment.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/now.js b/ui/static/bower_components/moment/src/lib/moment/now.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/now.js rename to ui/static/bower_components/moment/src/lib/moment/now.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/prototype.js b/ui/static/bower_components/moment/src/lib/moment/prototype.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/prototype.js rename to ui/static/bower_components/moment/src/lib/moment/prototype.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/start-end-of.js b/ui/static/bower_components/moment/src/lib/moment/start-end-of.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/start-end-of.js rename to ui/static/bower_components/moment/src/lib/moment/start-end-of.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/to-type.js b/ui/static/bower_components/moment/src/lib/moment/to-type.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/to-type.js rename to ui/static/bower_components/moment/src/lib/moment/to-type.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/to.js b/ui/static/bower_components/moment/src/lib/moment/to.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/to.js rename to ui/static/bower_components/moment/src/lib/moment/to.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/moment/valid.js b/ui/static/bower_components/moment/src/lib/moment/valid.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/moment/valid.js rename to ui/static/bower_components/moment/src/lib/moment/valid.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/parse/regex.js b/ui/static/bower_components/moment/src/lib/parse/regex.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/parse/regex.js rename to ui/static/bower_components/moment/src/lib/parse/regex.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/parse/token.js b/ui/static/bower_components/moment/src/lib/parse/token.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/parse/token.js rename to ui/static/bower_components/moment/src/lib/parse/token.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/aliases.js b/ui/static/bower_components/moment/src/lib/units/aliases.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/aliases.js rename to ui/static/bower_components/moment/src/lib/units/aliases.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/constants.js b/ui/static/bower_components/moment/src/lib/units/constants.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/constants.js rename to ui/static/bower_components/moment/src/lib/units/constants.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/day-of-month.js b/ui/static/bower_components/moment/src/lib/units/day-of-month.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/day-of-month.js rename to ui/static/bower_components/moment/src/lib/units/day-of-month.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/day-of-week.js b/ui/static/bower_components/moment/src/lib/units/day-of-week.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/day-of-week.js rename to ui/static/bower_components/moment/src/lib/units/day-of-week.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/day-of-year.js b/ui/static/bower_components/moment/src/lib/units/day-of-year.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/day-of-year.js rename to ui/static/bower_components/moment/src/lib/units/day-of-year.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/hour.js b/ui/static/bower_components/moment/src/lib/units/hour.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/hour.js rename to ui/static/bower_components/moment/src/lib/units/hour.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/millisecond.js b/ui/static/bower_components/moment/src/lib/units/millisecond.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/millisecond.js rename to ui/static/bower_components/moment/src/lib/units/millisecond.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/minute.js b/ui/static/bower_components/moment/src/lib/units/minute.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/minute.js rename to ui/static/bower_components/moment/src/lib/units/minute.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/month.js b/ui/static/bower_components/moment/src/lib/units/month.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/month.js rename to ui/static/bower_components/moment/src/lib/units/month.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/offset.js b/ui/static/bower_components/moment/src/lib/units/offset.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/offset.js rename to ui/static/bower_components/moment/src/lib/units/offset.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/priorities.js b/ui/static/bower_components/moment/src/lib/units/priorities.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/priorities.js rename to ui/static/bower_components/moment/src/lib/units/priorities.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/quarter.js b/ui/static/bower_components/moment/src/lib/units/quarter.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/quarter.js rename to ui/static/bower_components/moment/src/lib/units/quarter.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/second.js b/ui/static/bower_components/moment/src/lib/units/second.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/second.js rename to ui/static/bower_components/moment/src/lib/units/second.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/timestamp.js b/ui/static/bower_components/moment/src/lib/units/timestamp.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/timestamp.js rename to ui/static/bower_components/moment/src/lib/units/timestamp.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/timezone.js b/ui/static/bower_components/moment/src/lib/units/timezone.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/timezone.js rename to ui/static/bower_components/moment/src/lib/units/timezone.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/units.js b/ui/static/bower_components/moment/src/lib/units/units.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/units.js rename to ui/static/bower_components/moment/src/lib/units/units.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/week-calendar-utils.js b/ui/static/bower_components/moment/src/lib/units/week-calendar-utils.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/week-calendar-utils.js rename to ui/static/bower_components/moment/src/lib/units/week-calendar-utils.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/week-year.js b/ui/static/bower_components/moment/src/lib/units/week-year.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/week-year.js rename to ui/static/bower_components/moment/src/lib/units/week-year.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/week.js b/ui/static/bower_components/moment/src/lib/units/week.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/week.js rename to ui/static/bower_components/moment/src/lib/units/week.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/units/year.js b/ui/static/bower_components/moment/src/lib/units/year.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/units/year.js rename to ui/static/bower_components/moment/src/lib/units/year.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/abs-ceil.js b/ui/static/bower_components/moment/src/lib/utils/abs-ceil.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/abs-ceil.js rename to ui/static/bower_components/moment/src/lib/utils/abs-ceil.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/abs-floor.js b/ui/static/bower_components/moment/src/lib/utils/abs-floor.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/abs-floor.js rename to ui/static/bower_components/moment/src/lib/utils/abs-floor.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/abs-round.js b/ui/static/bower_components/moment/src/lib/utils/abs-round.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/abs-round.js rename to ui/static/bower_components/moment/src/lib/utils/abs-round.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/compare-arrays.js b/ui/static/bower_components/moment/src/lib/utils/compare-arrays.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/compare-arrays.js rename to ui/static/bower_components/moment/src/lib/utils/compare-arrays.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/defaults.js b/ui/static/bower_components/moment/src/lib/utils/defaults.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/defaults.js rename to ui/static/bower_components/moment/src/lib/utils/defaults.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/deprecate.js b/ui/static/bower_components/moment/src/lib/utils/deprecate.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/deprecate.js rename to ui/static/bower_components/moment/src/lib/utils/deprecate.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/extend.js b/ui/static/bower_components/moment/src/lib/utils/extend.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/extend.js rename to ui/static/bower_components/moment/src/lib/utils/extend.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/has-own-prop.js b/ui/static/bower_components/moment/src/lib/utils/has-own-prop.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/has-own-prop.js rename to ui/static/bower_components/moment/src/lib/utils/has-own-prop.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/hooks.js b/ui/static/bower_components/moment/src/lib/utils/hooks.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/hooks.js rename to ui/static/bower_components/moment/src/lib/utils/hooks.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/index-of.js b/ui/static/bower_components/moment/src/lib/utils/index-of.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/index-of.js rename to ui/static/bower_components/moment/src/lib/utils/index-of.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-array.js b/ui/static/bower_components/moment/src/lib/utils/is-array.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-array.js rename to ui/static/bower_components/moment/src/lib/utils/is-array.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-date.js b/ui/static/bower_components/moment/src/lib/utils/is-date.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-date.js rename to ui/static/bower_components/moment/src/lib/utils/is-date.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-function.js b/ui/static/bower_components/moment/src/lib/utils/is-function.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-function.js rename to ui/static/bower_components/moment/src/lib/utils/is-function.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-number.js b/ui/static/bower_components/moment/src/lib/utils/is-number.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-number.js rename to ui/static/bower_components/moment/src/lib/utils/is-number.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-object-empty.js b/ui/static/bower_components/moment/src/lib/utils/is-object-empty.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-object-empty.js rename to ui/static/bower_components/moment/src/lib/utils/is-object-empty.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-object.js b/ui/static/bower_components/moment/src/lib/utils/is-object.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-object.js rename to ui/static/bower_components/moment/src/lib/utils/is-object.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/is-undefined.js b/ui/static/bower_components/moment/src/lib/utils/is-undefined.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/is-undefined.js rename to ui/static/bower_components/moment/src/lib/utils/is-undefined.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/keys.js b/ui/static/bower_components/moment/src/lib/utils/keys.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/keys.js rename to ui/static/bower_components/moment/src/lib/utils/keys.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/map.js b/ui/static/bower_components/moment/src/lib/utils/map.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/map.js rename to ui/static/bower_components/moment/src/lib/utils/map.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/some.js b/ui/static/bower_components/moment/src/lib/utils/some.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/some.js rename to ui/static/bower_components/moment/src/lib/utils/some.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/to-int.js b/ui/static/bower_components/moment/src/lib/utils/to-int.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/to-int.js rename to ui/static/bower_components/moment/src/lib/utils/to-int.js diff --git a/themes/bootstrap/public/bower_components/moment/src/lib/utils/zero-fill.js b/ui/static/bower_components/moment/src/lib/utils/zero-fill.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/lib/utils/zero-fill.js rename to ui/static/bower_components/moment/src/lib/utils/zero-fill.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/af.js b/ui/static/bower_components/moment/src/locale/af.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/af.js rename to ui/static/bower_components/moment/src/locale/af.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ar-dz.js b/ui/static/bower_components/moment/src/locale/ar-dz.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ar-dz.js rename to ui/static/bower_components/moment/src/locale/ar-dz.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ar-ly.js b/ui/static/bower_components/moment/src/locale/ar-ly.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ar-ly.js rename to ui/static/bower_components/moment/src/locale/ar-ly.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ar-ma.js b/ui/static/bower_components/moment/src/locale/ar-ma.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ar-ma.js rename to ui/static/bower_components/moment/src/locale/ar-ma.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ar-sa.js b/ui/static/bower_components/moment/src/locale/ar-sa.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ar-sa.js rename to ui/static/bower_components/moment/src/locale/ar-sa.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ar-tn.js b/ui/static/bower_components/moment/src/locale/ar-tn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ar-tn.js rename to ui/static/bower_components/moment/src/locale/ar-tn.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ar.js b/ui/static/bower_components/moment/src/locale/ar.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ar.js rename to ui/static/bower_components/moment/src/locale/ar.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/az.js b/ui/static/bower_components/moment/src/locale/az.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/az.js rename to ui/static/bower_components/moment/src/locale/az.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/be.js b/ui/static/bower_components/moment/src/locale/be.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/be.js rename to ui/static/bower_components/moment/src/locale/be.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/bg.js b/ui/static/bower_components/moment/src/locale/bg.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/bg.js rename to ui/static/bower_components/moment/src/locale/bg.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/bn.js b/ui/static/bower_components/moment/src/locale/bn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/bn.js rename to ui/static/bower_components/moment/src/locale/bn.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/bo.js b/ui/static/bower_components/moment/src/locale/bo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/bo.js rename to ui/static/bower_components/moment/src/locale/bo.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/br.js b/ui/static/bower_components/moment/src/locale/br.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/br.js rename to ui/static/bower_components/moment/src/locale/br.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/bs.js b/ui/static/bower_components/moment/src/locale/bs.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/bs.js rename to ui/static/bower_components/moment/src/locale/bs.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ca.js b/ui/static/bower_components/moment/src/locale/ca.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ca.js rename to ui/static/bower_components/moment/src/locale/ca.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/cs.js b/ui/static/bower_components/moment/src/locale/cs.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/cs.js rename to ui/static/bower_components/moment/src/locale/cs.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/cv.js b/ui/static/bower_components/moment/src/locale/cv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/cv.js rename to ui/static/bower_components/moment/src/locale/cv.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/cy.js b/ui/static/bower_components/moment/src/locale/cy.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/cy.js rename to ui/static/bower_components/moment/src/locale/cy.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/da.js b/ui/static/bower_components/moment/src/locale/da.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/da.js rename to ui/static/bower_components/moment/src/locale/da.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/de-at.js b/ui/static/bower_components/moment/src/locale/de-at.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/de-at.js rename to ui/static/bower_components/moment/src/locale/de-at.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/de.js b/ui/static/bower_components/moment/src/locale/de.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/de.js rename to ui/static/bower_components/moment/src/locale/de.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/dv.js b/ui/static/bower_components/moment/src/locale/dv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/dv.js rename to ui/static/bower_components/moment/src/locale/dv.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/el.js b/ui/static/bower_components/moment/src/locale/el.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/el.js rename to ui/static/bower_components/moment/src/locale/el.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/en-au.js b/ui/static/bower_components/moment/src/locale/en-au.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/en-au.js rename to ui/static/bower_components/moment/src/locale/en-au.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/en-ca.js b/ui/static/bower_components/moment/src/locale/en-ca.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/en-ca.js rename to ui/static/bower_components/moment/src/locale/en-ca.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/en-gb.js b/ui/static/bower_components/moment/src/locale/en-gb.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/en-gb.js rename to ui/static/bower_components/moment/src/locale/en-gb.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/en-ie.js b/ui/static/bower_components/moment/src/locale/en-ie.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/en-ie.js rename to ui/static/bower_components/moment/src/locale/en-ie.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/en-nz.js b/ui/static/bower_components/moment/src/locale/en-nz.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/en-nz.js rename to ui/static/bower_components/moment/src/locale/en-nz.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/eo.js b/ui/static/bower_components/moment/src/locale/eo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/eo.js rename to ui/static/bower_components/moment/src/locale/eo.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/es-do.js b/ui/static/bower_components/moment/src/locale/es-do.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/es-do.js rename to ui/static/bower_components/moment/src/locale/es-do.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/es.js b/ui/static/bower_components/moment/src/locale/es.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/es.js rename to ui/static/bower_components/moment/src/locale/es.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/et.js b/ui/static/bower_components/moment/src/locale/et.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/et.js rename to ui/static/bower_components/moment/src/locale/et.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/eu.js b/ui/static/bower_components/moment/src/locale/eu.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/eu.js rename to ui/static/bower_components/moment/src/locale/eu.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fa.js b/ui/static/bower_components/moment/src/locale/fa.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fa.js rename to ui/static/bower_components/moment/src/locale/fa.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fi.js b/ui/static/bower_components/moment/src/locale/fi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fi.js rename to ui/static/bower_components/moment/src/locale/fi.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fo.js b/ui/static/bower_components/moment/src/locale/fo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fo.js rename to ui/static/bower_components/moment/src/locale/fo.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fr-ca.js b/ui/static/bower_components/moment/src/locale/fr-ca.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fr-ca.js rename to ui/static/bower_components/moment/src/locale/fr-ca.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fr-ch.js b/ui/static/bower_components/moment/src/locale/fr-ch.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fr-ch.js rename to ui/static/bower_components/moment/src/locale/fr-ch.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fr.js b/ui/static/bower_components/moment/src/locale/fr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fr.js rename to ui/static/bower_components/moment/src/locale/fr.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/fy.js b/ui/static/bower_components/moment/src/locale/fy.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/fy.js rename to ui/static/bower_components/moment/src/locale/fy.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/gd.js b/ui/static/bower_components/moment/src/locale/gd.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/gd.js rename to ui/static/bower_components/moment/src/locale/gd.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/gl.js b/ui/static/bower_components/moment/src/locale/gl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/gl.js rename to ui/static/bower_components/moment/src/locale/gl.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/he.js b/ui/static/bower_components/moment/src/locale/he.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/he.js rename to ui/static/bower_components/moment/src/locale/he.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/hi.js b/ui/static/bower_components/moment/src/locale/hi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/hi.js rename to ui/static/bower_components/moment/src/locale/hi.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/hr.js b/ui/static/bower_components/moment/src/locale/hr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/hr.js rename to ui/static/bower_components/moment/src/locale/hr.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/hu.js b/ui/static/bower_components/moment/src/locale/hu.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/hu.js rename to ui/static/bower_components/moment/src/locale/hu.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/hy-am.js b/ui/static/bower_components/moment/src/locale/hy-am.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/hy-am.js rename to ui/static/bower_components/moment/src/locale/hy-am.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/id.js b/ui/static/bower_components/moment/src/locale/id.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/id.js rename to ui/static/bower_components/moment/src/locale/id.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/is.js b/ui/static/bower_components/moment/src/locale/is.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/is.js rename to ui/static/bower_components/moment/src/locale/is.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/it.js b/ui/static/bower_components/moment/src/locale/it.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/it.js rename to ui/static/bower_components/moment/src/locale/it.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ja.js b/ui/static/bower_components/moment/src/locale/ja.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ja.js rename to ui/static/bower_components/moment/src/locale/ja.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/jv.js b/ui/static/bower_components/moment/src/locale/jv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/jv.js rename to ui/static/bower_components/moment/src/locale/jv.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ka.js b/ui/static/bower_components/moment/src/locale/ka.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ka.js rename to ui/static/bower_components/moment/src/locale/ka.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/kk.js b/ui/static/bower_components/moment/src/locale/kk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/kk.js rename to ui/static/bower_components/moment/src/locale/kk.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/km.js b/ui/static/bower_components/moment/src/locale/km.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/km.js rename to ui/static/bower_components/moment/src/locale/km.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ko.js b/ui/static/bower_components/moment/src/locale/ko.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ko.js rename to ui/static/bower_components/moment/src/locale/ko.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ky.js b/ui/static/bower_components/moment/src/locale/ky.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ky.js rename to ui/static/bower_components/moment/src/locale/ky.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/lb.js b/ui/static/bower_components/moment/src/locale/lb.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/lb.js rename to ui/static/bower_components/moment/src/locale/lb.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/lo.js b/ui/static/bower_components/moment/src/locale/lo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/lo.js rename to ui/static/bower_components/moment/src/locale/lo.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/lt.js b/ui/static/bower_components/moment/src/locale/lt.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/lt.js rename to ui/static/bower_components/moment/src/locale/lt.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/lv.js b/ui/static/bower_components/moment/src/locale/lv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/lv.js rename to ui/static/bower_components/moment/src/locale/lv.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/me.js b/ui/static/bower_components/moment/src/locale/me.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/me.js rename to ui/static/bower_components/moment/src/locale/me.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/mi.js b/ui/static/bower_components/moment/src/locale/mi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/mi.js rename to ui/static/bower_components/moment/src/locale/mi.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/mk.js b/ui/static/bower_components/moment/src/locale/mk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/mk.js rename to ui/static/bower_components/moment/src/locale/mk.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ml.js b/ui/static/bower_components/moment/src/locale/ml.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ml.js rename to ui/static/bower_components/moment/src/locale/ml.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/mr.js b/ui/static/bower_components/moment/src/locale/mr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/mr.js rename to ui/static/bower_components/moment/src/locale/mr.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ms-my.js b/ui/static/bower_components/moment/src/locale/ms-my.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ms-my.js rename to ui/static/bower_components/moment/src/locale/ms-my.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ms.js b/ui/static/bower_components/moment/src/locale/ms.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ms.js rename to ui/static/bower_components/moment/src/locale/ms.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/my.js b/ui/static/bower_components/moment/src/locale/my.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/my.js rename to ui/static/bower_components/moment/src/locale/my.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/nb.js b/ui/static/bower_components/moment/src/locale/nb.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/nb.js rename to ui/static/bower_components/moment/src/locale/nb.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ne.js b/ui/static/bower_components/moment/src/locale/ne.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ne.js rename to ui/static/bower_components/moment/src/locale/ne.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/nl-be.js b/ui/static/bower_components/moment/src/locale/nl-be.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/nl-be.js rename to ui/static/bower_components/moment/src/locale/nl-be.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/nl.js b/ui/static/bower_components/moment/src/locale/nl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/nl.js rename to ui/static/bower_components/moment/src/locale/nl.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/nn.js b/ui/static/bower_components/moment/src/locale/nn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/nn.js rename to ui/static/bower_components/moment/src/locale/nn.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/pa-in.js b/ui/static/bower_components/moment/src/locale/pa-in.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/pa-in.js rename to ui/static/bower_components/moment/src/locale/pa-in.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/pl.js b/ui/static/bower_components/moment/src/locale/pl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/pl.js rename to ui/static/bower_components/moment/src/locale/pl.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/pt-br.js b/ui/static/bower_components/moment/src/locale/pt-br.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/pt-br.js rename to ui/static/bower_components/moment/src/locale/pt-br.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/pt.js b/ui/static/bower_components/moment/src/locale/pt.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/pt.js rename to ui/static/bower_components/moment/src/locale/pt.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ro.js b/ui/static/bower_components/moment/src/locale/ro.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ro.js rename to ui/static/bower_components/moment/src/locale/ro.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ru.js b/ui/static/bower_components/moment/src/locale/ru.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ru.js rename to ui/static/bower_components/moment/src/locale/ru.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/se.js b/ui/static/bower_components/moment/src/locale/se.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/se.js rename to ui/static/bower_components/moment/src/locale/se.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/si.js b/ui/static/bower_components/moment/src/locale/si.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/si.js rename to ui/static/bower_components/moment/src/locale/si.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sk.js b/ui/static/bower_components/moment/src/locale/sk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sk.js rename to ui/static/bower_components/moment/src/locale/sk.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sl.js b/ui/static/bower_components/moment/src/locale/sl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sl.js rename to ui/static/bower_components/moment/src/locale/sl.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sq.js b/ui/static/bower_components/moment/src/locale/sq.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sq.js rename to ui/static/bower_components/moment/src/locale/sq.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sr-cyrl.js b/ui/static/bower_components/moment/src/locale/sr-cyrl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sr-cyrl.js rename to ui/static/bower_components/moment/src/locale/sr-cyrl.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sr.js b/ui/static/bower_components/moment/src/locale/sr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sr.js rename to ui/static/bower_components/moment/src/locale/sr.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ss.js b/ui/static/bower_components/moment/src/locale/ss.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ss.js rename to ui/static/bower_components/moment/src/locale/ss.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sv.js b/ui/static/bower_components/moment/src/locale/sv.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sv.js rename to ui/static/bower_components/moment/src/locale/sv.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/sw.js b/ui/static/bower_components/moment/src/locale/sw.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/sw.js rename to ui/static/bower_components/moment/src/locale/sw.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/ta.js b/ui/static/bower_components/moment/src/locale/ta.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/ta.js rename to ui/static/bower_components/moment/src/locale/ta.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/te.js b/ui/static/bower_components/moment/src/locale/te.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/te.js rename to ui/static/bower_components/moment/src/locale/te.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tet.js b/ui/static/bower_components/moment/src/locale/tet.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tet.js rename to ui/static/bower_components/moment/src/locale/tet.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/th.js b/ui/static/bower_components/moment/src/locale/th.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/th.js rename to ui/static/bower_components/moment/src/locale/th.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tl-ph.js b/ui/static/bower_components/moment/src/locale/tl-ph.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tl-ph.js rename to ui/static/bower_components/moment/src/locale/tl-ph.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tlh.js b/ui/static/bower_components/moment/src/locale/tlh.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tlh.js rename to ui/static/bower_components/moment/src/locale/tlh.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tr.js b/ui/static/bower_components/moment/src/locale/tr.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tr.js rename to ui/static/bower_components/moment/src/locale/tr.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tzl.js b/ui/static/bower_components/moment/src/locale/tzl.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tzl.js rename to ui/static/bower_components/moment/src/locale/tzl.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tzm-latn.js b/ui/static/bower_components/moment/src/locale/tzm-latn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tzm-latn.js rename to ui/static/bower_components/moment/src/locale/tzm-latn.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/tzm.js b/ui/static/bower_components/moment/src/locale/tzm.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/tzm.js rename to ui/static/bower_components/moment/src/locale/tzm.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/uk.js b/ui/static/bower_components/moment/src/locale/uk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/uk.js rename to ui/static/bower_components/moment/src/locale/uk.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/uz.js b/ui/static/bower_components/moment/src/locale/uz.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/uz.js rename to ui/static/bower_components/moment/src/locale/uz.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/vi.js b/ui/static/bower_components/moment/src/locale/vi.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/vi.js rename to ui/static/bower_components/moment/src/locale/vi.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/x-pseudo.js b/ui/static/bower_components/moment/src/locale/x-pseudo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/x-pseudo.js rename to ui/static/bower_components/moment/src/locale/x-pseudo.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/yo.js b/ui/static/bower_components/moment/src/locale/yo.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/yo.js rename to ui/static/bower_components/moment/src/locale/yo.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/zh-cn.js b/ui/static/bower_components/moment/src/locale/zh-cn.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/zh-cn.js rename to ui/static/bower_components/moment/src/locale/zh-cn.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/zh-hk.js b/ui/static/bower_components/moment/src/locale/zh-hk.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/zh-hk.js rename to ui/static/bower_components/moment/src/locale/zh-hk.js diff --git a/themes/bootstrap/public/bower_components/moment/src/locale/zh-tw.js b/ui/static/bower_components/moment/src/locale/zh-tw.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/locale/zh-tw.js rename to ui/static/bower_components/moment/src/locale/zh-tw.js diff --git a/themes/bootstrap/public/bower_components/moment/src/moment.js b/ui/static/bower_components/moment/src/moment.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/src/moment.js rename to ui/static/bower_components/moment/src/moment.js diff --git a/themes/bootstrap/public/bower_components/moment/templates/default.js b/ui/static/bower_components/moment/templates/default.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/templates/default.js rename to ui/static/bower_components/moment/templates/default.js diff --git a/themes/bootstrap/public/bower_components/moment/templates/locale-header.js b/ui/static/bower_components/moment/templates/locale-header.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/templates/locale-header.js rename to ui/static/bower_components/moment/templates/locale-header.js diff --git a/themes/bootstrap/public/bower_components/moment/templates/test-header.js b/ui/static/bower_components/moment/templates/test-header.js similarity index 100% rename from themes/bootstrap/public/bower_components/moment/templates/test-header.js rename to ui/static/bower_components/moment/templates/test-header.js diff --git a/themes/bootstrap/public/favicon.png b/ui/static/favicon.png similarity index 100% rename from themes/bootstrap/public/favicon.png rename to ui/static/favicon.png diff --git a/themes/bootstrap/public/inbucket.css b/ui/static/inbucket.css similarity index 100% rename from themes/bootstrap/public/inbucket.css rename to ui/static/inbucket.css diff --git a/themes/bootstrap/public/mailbox.js b/ui/static/mailbox.js similarity index 100% rename from themes/bootstrap/public/mailbox.js rename to ui/static/mailbox.js diff --git a/themes/bootstrap/public/metrics.js b/ui/static/metrics.js similarity index 100% rename from themes/bootstrap/public/metrics.js rename to ui/static/metrics.js diff --git a/themes/bootstrap/public/monitor.js b/ui/static/monitor.js similarity index 100% rename from themes/bootstrap/public/monitor.js rename to ui/static/monitor.js diff --git a/themes/bootstrap/templates/_base.html b/ui/templates/_base.html similarity index 100% rename from themes/bootstrap/templates/_base.html rename to ui/templates/_base.html diff --git a/themes/bootstrap/templates/mailbox/_html.html b/ui/templates/mailbox/_html.html similarity index 100% rename from themes/bootstrap/templates/mailbox/_html.html rename to ui/templates/mailbox/_html.html diff --git a/themes/bootstrap/templates/mailbox/_show.html b/ui/templates/mailbox/_show.html similarity index 100% rename from themes/bootstrap/templates/mailbox/_show.html rename to ui/templates/mailbox/_show.html diff --git a/themes/bootstrap/templates/mailbox/index.html b/ui/templates/mailbox/index.html similarity index 100% rename from themes/bootstrap/templates/mailbox/index.html rename to ui/templates/mailbox/index.html diff --git a/themes/bootstrap/templates/root/index.html b/ui/templates/root/index.html similarity index 100% rename from themes/bootstrap/templates/root/index.html rename to ui/templates/root/index.html diff --git a/themes/bootstrap/templates/root/monitor.html b/ui/templates/root/monitor.html similarity index 100% rename from themes/bootstrap/templates/root/monitor.html rename to ui/templates/root/monitor.html diff --git a/themes/bootstrap/templates/root/status.html b/ui/templates/root/status.html similarity index 100% rename from themes/bootstrap/templates/root/status.html rename to ui/templates/root/status.html From 04bb842549610c3f77ab87464443af2c99bd0ea3 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 11:55:23 -0700 Subject: [PATCH 2/8] config: Combine TemplateDir and PublicDir into UIDir - Define static names for `templates` and `static` --- pkg/config/config.go | 5 ++--- pkg/rest/testutils_test.go | 3 +-- pkg/server/web/server.go | 12 +++++++++--- pkg/server/web/template.go | 7 +++---- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/pkg/config/config.go b/pkg/config/config.go index 2ca6702..5346eea 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -57,10 +57,9 @@ type POP3 struct { // Web contains the HTTP server configuration. type Web struct { Addr string `required:"true" default:"0.0.0.0:9000" desc:"Web server IP4 host:port"` - TemplateDir string `required:"true" default:"ui/templates" desc:"Theme template dir"` - TemplateCache bool `required:"true" default:"true" desc:"Cache templates after first use?"` - PublicDir string `required:"true" default:"ui/static" desc:"Theme public dir"` + UIDir string `required:"true" default:"ui" desc:"User interface dir"` GreetingFile string `required:"true" default:"ui/greeting.html" desc:"Home page greeting HTML"` + TemplateCache bool `required:"true" default:"true" desc:"Cache templates after first use?"` MailboxPrompt string `required:"true" default:"@inbucket" desc:"Prompt next to mailbox input"` CookieAuthKey string `desc:"Session cipher key (text)"` MonitorVisible bool `required:"true" default:"true" desc:"Show monitor tab in UI?"` diff --git a/pkg/rest/testutils_test.go b/pkg/rest/testutils_test.go index e2f2e3d..b062083 100644 --- a/pkg/rest/testutils_test.go +++ b/pkg/rest/testutils_test.go @@ -36,8 +36,7 @@ func setupWebServer(mm message.Manager) *bytes.Buffer { http.DefaultServeMux = http.NewServeMux() cfg := &config.Root{ Web: config.Web{ - TemplateDir: "../themes/bootstrap/templates", - PublicDir: "../themes/bootstrap/public", + UIDir: "../ui", }, } shutdownChan := make(chan bool) diff --git a/pkg/server/web/server.go b/pkg/server/web/server.go index 96716f0..8e5524c 100644 --- a/pkg/server/web/server.go +++ b/pkg/server/web/server.go @@ -6,6 +6,7 @@ import ( "expvar" "net" "net/http" + "path/filepath" "time" "github.com/gorilla/mux" @@ -20,6 +21,11 @@ import ( // Handler is a function type that handles an HTTP request in Inbucket type Handler func(http.ResponseWriter, *http.Request, *Context) error +const ( + staticDir = "static" + templateDir = "templates" +) + var ( // msgHub holds a reference to the message pub/sub system msgHub *msghub.Hub @@ -59,10 +65,10 @@ func Initialize( manager = mm // Content Paths - log.Infof("HTTP templates mapped to %q", conf.Web.TemplateDir) - log.Infof("HTTP static content mapped to %q", conf.Web.PublicDir) + staticPath := filepath.Join(conf.Web.UIDir, staticDir) + log.Infof("Web UI content mapped to path: %s", conf.Web.UIDir) Router.PathPrefix("/public/").Handler(http.StripPrefix("/public/", - http.FileServer(http.Dir(conf.Web.PublicDir)))) + http.FileServer(http.Dir(staticPath)))) http.Handle("/", Router) // Session cookie setup diff --git a/pkg/server/web/template.go b/pkg/server/web/template.go index 2597ada..87675a5 100644 --- a/pkg/server/web/template.go +++ b/pkg/server/web/template.go @@ -5,7 +5,6 @@ import ( "net/http" "path" "path/filepath" - "strings" "sync" "github.com/jhillyerd/inbucket/pkg/log" @@ -49,8 +48,7 @@ func ParseTemplate(name string, partial bool) (*template.Template, error) { return t, nil } - tempPath := strings.Replace(name, "/", string(filepath.Separator), -1) - tempFile := filepath.Join(rootConfig.Web.TemplateDir, tempPath) + tempFile := filepath.Join(rootConfig.Web.UIDir, templateDir, filepath.FromSlash(name)) log.Tracef("Parsing template %v", tempFile) var err error @@ -62,7 +60,8 @@ func ParseTemplate(name string, partial bool) (*template.Template, error) { t, err = t.ParseFiles(tempFile) } else { t = template.New("_base.html").Funcs(TemplateFuncs) - t, err = t.ParseFiles(filepath.Join(rootConfig.Web.TemplateDir, "_base.html"), tempFile) + t, err = t.ParseFiles( + filepath.Join(rootConfig.Web.UIDir, templateDir, "_base.html"), tempFile) } if err != nil { return nil, err From 69a0d355f99a817f3fb66f84af424d700ab9b617 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 10:06:03 -0700 Subject: [PATCH 3/8] doc: Add doc/config.md to document config for #86 - Increase default max message size to 10MB. --- doc/config.md | 349 +++++++++++++++++++++++++++++++++++++ pkg/config/config.go | 2 +- pkg/storage/mem/maxsize.go | 4 +- 3 files changed, 352 insertions(+), 3 deletions(-) create mode 100644 doc/config.md diff --git a/doc/config.md b/doc/config.md new file mode 100644 index 0000000..5f9fa92 --- /dev/null +++ b/doc/config.md @@ -0,0 +1,349 @@ +# Inbucket Configuration + +Inbucket is configured via environment variables. Most options have a +reasonable default, but it is likely you will need to change some to suite your +desired use cases. + +Running `inbucket -help` will yield a condensed summary of the environment +variables it supports: + + KEY DEFAULT DESCRIPTION + INBUCKET_LOGLEVEL INFO TRACE, INFO, WARN, or ERROR + INBUCKET_SMTP_ADDR 0.0.0.0:2500 SMTP server IP4 host:port + INBUCKET_SMTP_DOMAIN inbucket HELO domain + INBUCKET_SMTP_DOMAINNOSTORE Load testing domain + INBUCKET_SMTP_MAXRECIPIENTS 200 Maximum RCPT TO per message + INBUCKET_SMTP_MAXMESSAGEBYTES 10240000 Maximum message size + INBUCKET_SMTP_STOREMESSAGES true Store incoming mail? + INBUCKET_SMTP_TIMEOUT 300s Idle network timeout + INBUCKET_POP3_ADDR 0.0.0.0:1100 POP3 server IP4 host:port + INBUCKET_POP3_DOMAIN inbucket HELLO domain + INBUCKET_POP3_TIMEOUT 600s Idle network timeout + INBUCKET_WEB_ADDR 0.0.0.0:9000 Web server IP4 host:port + INBUCKET_WEB_UIDIR ui User interface dir + INBUCKET_WEB_GREETINGFILE ui/greeting.html Home page greeting HTML + INBUCKET_WEB_TEMPLATECACHE true Cache templates after first use? + INBUCKET_WEB_MAILBOXPROMPT @inbucket Prompt next to mailbox input + INBUCKET_WEB_COOKIEAUTHKEY Session cipher key (text) + INBUCKET_WEB_MONITORVISIBLE true Show monitor tab in UI? + INBUCKET_WEB_MONITORHISTORY 30 Monitor remembered messages + INBUCKET_STORAGE_TYPE memory Storage impl: file or memory + INBUCKET_STORAGE_PARAMS Storage impl parameters, see docs. + INBUCKET_STORAGE_RETENTIONPERIOD 24h Duration to retain messages + INBUCKET_STORAGE_RETENTIONSLEEP 50ms Duration to sleep between mailboxes + INBUCKET_STORAGE_MAILBOXMSGCAP 500 Maximum messages per mailbox + +The following documentation will describe each of these in more detail. + + +## Global + +### Log Level + +`INBUCKET_LOGLEVEL` + +This setting controls the verbosity of log output. A small desktop installation +should probably select INFO, but a busy shared installation would be better off +with WARN or ERROR. + +- Default: `INFO` +- Values: one of `TRACE`, `INFO`, `WARN`, or `ERROR` + + +## SMTP + +### Address and Port + +`INBUCKET_SMTP_ADDR` + +The IPv4 address and TCP port number the SMTP server should listen on, separated +by a colon. Some operating systems may prevent Inbucket from listening on port +25 without escalated privileges. Using an IP address of 0.0.0.0 will cause +Inbucket to listen on all available network interfaces. + +- Default: `0.0.0.0:2500` + +### Greeting Domain + +`INBUCKET_SMTP_DOMAIN` + +The domain used in the SMTP greeting: + + 220 domain Inbucket SMTP ready + +Most SMTP clients appear to ignore this value. + +- Default: `inbucket` + +### Load Testing/No Store Domain + +`INBUCKET_SMTP_DOMAINNOSTORE` + +Mail sent to this domain will not be stored by Inbucket. This is helpful if you +are load or soak testing a service, and do not plan to inspect the resulting +emails. Messages sent to a domain other than this will be stored normally. + +- Default: None +- Example: `bitbucket.local` + +### Maximum Recipients + +`INBUCKET_SMTP_MAXRECIPIENTS` + +Maximum number of recipients allowed (SMTP `RCPT TO` phase). If you are testing +a mailing list server, you may need to increase this value. For comparison, the +Postfix SMTP server uses a default of 1000, it would be unwise to exceed this. + +- Default: `200` + +### Maximum Message Size + +`INBUCKET_SMTP_MAXMESSAGEBYTES` + +Maximum allowable size of a message (including headers) in bytes. Messages +exceeding this size will be rejected during the SMTP `DATA` phase. + +- Default: `10240000` (10MB) + +### Store Messages + +`INBUCKET_SMTP_STOREMESSAGES` + +This option can be used to disable mail storage entirely. Useful for load +testing, or turning Inbucket into a black hole that will consume our entire +solar system. + +- Default: `true` +- Values: `true` or `false` + +### Network Idle Timeout + +`INBUCKET_SMTP_TIMEOUT` + +Delay before closing an idle SMTP connection. The SMTP RFC recommends 300 +seconds. Consider reducing this *significantly* if you plan to expose Inbucket +to the public internet. + +- Default: `300s` +- Values: Duration ending in `s` for seconds, `m` for minutes + + +## POP3 + +### Address and Port + +`INBUCKET_POP3_ADDR` + +The IPv4 address and TCP port number the POP3 server should listen on, separated +by a colon. Some operating systems may prevent Inbucket from listening on port +110 without escalated privileges. Using an IP address of 0.0.0.0 will cause +Inbucket to listen on all available network interfaces. + +- Default: `0.0.0.0:1100` + +### Greeting Domain + +`INBUCKET_POP3_DOMAIN` + +The domain used in the POP3 greeting: + + +OK Inbucket POP3 server ready <26641.1522000423@domain> + +Most POP3 clients appear to ignore this value. + +- Default: `inbucket` + +### Network Idle Timeout + +`INBUCKET_POP3_TIMEOUT` + +Delay before closing an idle POP3 connection. The POP3 RFC recommends 600 +seconds. Consider reducing this *significantly* if you plan to expose Inbucket +to the public internet. + +- Default: `600s` +- Values: Duration ending in `s` for seconds, `m` for minutes + + +## Web + +### Address and Port + +`INBUCKET_WEB_ADDR` + +The IPv4 address and TCP port number the HTTP server should listen on, separated +by a colon. Some operating systems may prevent Inbucket from listening on port +80 without escalated privileges. Using an IP address of 0.0.0.0 will cause +Inbucket to listen on all available network interfaces. + +- Default: `0.0.0.0:9000` + +### UI Directory + +`INBUCKET_WEB_UIDIR` + +This directory contains the templates and static assets for the web user +interface. You will need to change this if the current working directory +doesn't contain the `ui` directory at startup. + +Inbucket will load templates from the `templates` sub-directory, and serve +static assets from the `static` sub-directory. + +- Default: `ui` +- Values: Operating system specific path syntax + +### Greeting HTML File + +`INBUCKET_WEB_GREETINGFILE` + +The content of the greeting file will be injected into the front page of +Inbucket. It can be used to instruct users on how to send mail into your +Inbucket installation, as well as link to REST documentation, etc. + +- Default: `ui/greeting.html` + +### Template Caching + +`INBUCKET_WEB_TEMPLATECACHE` + +Tells Inbucket to cache parsed template files. This should be left as default +unless you are a developer working on the Inbucket web interface. + +- Default: `true` +- Values: `true` or `false` + +### Mailbox Prompt + +`INBUCKET_WEB_MAILBOXPROMPT` + +Text prompt displayed to the right of the mailbox name input field in the web +interface. Can be used to nudge your users into typing just the mailbox name +instead of an entire email address. + +Set to an empty string to hide the prompt. + +- Default: `@inbucket` + +### Cookie Authentication Key + +`INBUCKET_WEB_COOKIEAUTHKEY` + +Inbucket stores session information in an encrypted browser cookie. Unless +specified, Inbucket generates a random key at startup. The only notable data +stored in a user session is the list of recently accessed mailboxes. + +- Default: None +- Value: Text string, no particular format required + +### Monitor Visible + +`INBUCKET_WEB_MONITORVISIBLE` + +If true, the Monitor tab will be available, allowing users to observe all +messages received by Inbucket as they arrive. Disabling the monitor facilitates +security through obscurity. + +This setting has no impact on the availability of the underlying WebSocket, +which may be used by other parts of the Inbucket interface or continuous +integration tests. + +- Default: `true` +- Values: `true` or `false` + +### Monitor History + +`INBUCKET_WEB_MONITORHISTORY` + +The number of messages to remember on the *server* for new Monitor clients. +Does not impact the amount of *new* messages displayed by the Monitor. +Increasing this has no appreciable impact on memory use, but may slow down the +Monitor user interface. + +This setting has the same effect on the amount of messages available via +WebSocket. + +Setting to 0 will disable the monitor, but will probably break new mail +notifications in the web interface when I finally get around to implementing +them. + +- Default: `30` +- Values: Integer greater than or equal to 0 + + +## Storage + +### Type + +`INBUCKET_STORAGE_TYPE` + +Selects the storage implementation to use. Currently Inbucket supports two: + +- `file`: stores messages as individual files in a nested directory structure + based on the hash of the mailbox name. Each mailbox also includes an index + file to speed up enumeration of the mailbox contents. +- `memory`: stores messages in RAM, they will be lost if Inbucket is restarted, + or crashes, etc. + +File storage is recommended for larger/shared installations. Memory is better +suited to desktop or continuous integration test use cases. + +- Default: `memory` +- Values: `file` or `memory` + +### Parameters + +`INBUCKET_STORAGE_PARAMS` + +Parameters specific to the storage type selected. Formatted as a comma +separated list of key:value pairs. + +- Default: None +- Examples: `maxkb=10240` or `path=/tmp/inbucket` + +#### file parameters + +- `path`: Operating system specific path to the directory where mail should be + stored. + +#### memory parameters + +- `maxkb`: Maximum size of the mail store in kilobytes. The oldest messages in + the store will be deleted to enforce the limit. In-memory storage has some + overhead, for now it is recommended to set this to half the total amount of + memory you are willing to allocate to Inbucket. + +### Retention Period + +`INBUCKET_STORAGE_RETENTIONPERIOD` + +If set, Inbucket will scan the contents of its mail store once per minute, +removing messages older than this. This will be enforced regardless of the type +of storage configured. + +- Default: `24h` +- Values: Duration ending in `m` for minutes, `h` for hours. Should be + significantly longer than one minute, or `0` to disable. + +### Retention Sleep + +`INBUCKET_STORAGE_RETENTIONSLEEP` + +Duration to sleep between scanning each mailbox for expired messages. +Increasing this number will reduce disk thrashing, but extend the length of time +required to complete a scan of the entire mail store. + +This delay is still enforced for memory stores, but could be reduced from the +default. Setting to `0` may degrade performance of HTTP/SMTP/POP3 services. + +- Default: `50ms` +- Values: Duration ending in `ms` for milliseconds, `s` for seconds + +### Per Mailbox Message Cap + +`INBUCKET_STORAGE_MAILBOXMSGCAP` + +Maximum messages allowed in a single mailbox, exceeding this will cause older +messages to be deleted from the mailbox. + +- Default: `500` +- Values: Positive integer, or `0` to disable diff --git a/pkg/config/config.go b/pkg/config/config.go index 5346eea..dd35f39 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -42,7 +42,7 @@ type SMTP struct { Domain string `required:"true" default:"inbucket" desc:"HELO domain"` DomainNoStore string `desc:"Load testing domain"` MaxRecipients int `required:"true" default:"200" desc:"Maximum RCPT TO per message"` - MaxMessageBytes int `required:"true" default:"2048000" desc:"Maximum message size"` + MaxMessageBytes int `required:"true" default:"10240000" desc:"Maximum message size"` StoreMessages bool `required:"true" default:"true" desc:"Store incoming mail?"` Timeout time.Duration `required:"true" default:"300s" desc:"Idle network timeout"` } diff --git a/pkg/storage/mem/maxsize.go b/pkg/storage/mem/maxsize.go index 888247b..3b11850 100644 --- a/pkg/storage/mem/maxsize.go +++ b/pkg/storage/mem/maxsize.go @@ -7,8 +7,8 @@ type msgDone struct { done chan struct{} } -// enforceMaxSize will delete the oldest message until the entire mail store is equal to or less -// than Store.maxSize bytes. +// maxSizeEnforcer will delete the oldest message until the entire mail store is equal to or less +// than maxSize bytes. func (s *Store) maxSizeEnforcer(maxSize int64) { all := &list.List{} curSize := int64(0) From ce2339ee9ce81f9cfcd4533e50598b780346c46e Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 14:30:34 -0700 Subject: [PATCH 4/8] conf: Delete obsolete config files for #86 --- etc/devel.conf | 129 ----------------------------- etc/docker/defaults/inbucket.conf | 131 ------------------------------ etc/homebrew/inbucket.conf | 131 ------------------------------ etc/inbucket.conf | 129 ----------------------------- etc/unix-sample.conf | 129 ----------------------------- etc/win-sample.conf | 129 ----------------------------- 6 files changed, 778 deletions(-) delete mode 100644 etc/devel.conf delete mode 100644 etc/docker/defaults/inbucket.conf delete mode 100644 etc/homebrew/inbucket.conf delete mode 100644 etc/inbucket.conf delete mode 100644 etc/unix-sample.conf delete mode 100644 etc/win-sample.conf diff --git a/etc/devel.conf b/etc/devel.conf deleted file mode 100644 index 1e765d4..0000000 --- a/etc/devel.conf +++ /dev/null @@ -1,129 +0,0 @@ -# devel.conf -# Sample development configuration - -############################################################################# -[DEFAULT] - -# Not used directly, but is typically referenced below in %()s format. -install.dir=. -default.domain=inbucket.local - -############################################################################# -[logging] - -# Options from least to most verbose: ERROR, WARN, INFO, TRACE -level=TRACE - -############################################################################# -[smtp] - -# IPv4 address to listen for SMTP connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for SMTP connections on. -ip4.port=2500 - -# used in SMTP greeting -domain=%(default.domain)s - -# optional: mail sent to accounts at this domain will not be stored, -# for mixed use (content and load testing) -domain.nostore=bitbucket.local - -# Maximum number of RCPT TO: addresses we allow from clients, the SMTP -# RFC recommends this be at least 100. -max.recipients=100 - -# How long we allow a network connection to be idle before hanging up on the -# client, SMTP RFC recommends at least 5 minutes (300 seconds). -max.idle.seconds=30 - -# Maximum allowable size of message body in bytes (including attachments) -max.message.bytes=20480000 - -# Should we place messages into the datastore, or just throw them away -# (for load testing): true or false -store.messages=true - -############################################################################# -[pop3] - -# IPv4 address to listen for POP3 connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for POP3 connections on. -ip4.port=1100 - -# used in POP3 greeting -domain=%(default.domain)s - -# How long we allow a network connection to be idle before hanging up on the -# client, POP3 RFC requires at least 10 minutes (600 seconds). -max.idle.seconds=600 - -############################################################################# -[web] - -# IPv4 address to serve HTTP web interface on -ip4.address=0.0.0.0 - -# IPv4 port to serve HTTP web interface on -ip4.port=9000 - -# Name of web theme to use -theme=bootstrap - -# Prompt displayed between the mailbox entry field and View button. Leave -# empty or comment out to hide the prompt. -mailbox.prompt=@inbucket - -# Path to the selected themes template files -template.dir=%(install.dir)s/themes/%(theme)s/templates - -# Should we cache parsed templates (set to false during theme dev) -template.cache=false - -# Path to the selected themes public (static) files -public.dir=%(install.dir)s/themes/%(theme)s/public - -# Path to the greeting HTML displayed on front page, can be moved out of -# installation dir for customization -greeting.file=%(install.dir)s/themes/greeting.html - -# Key used to sign session cookie data so that it cannot be tampered with. -# If this is left unset, Inbucket will generate a random key at startup -# and previous sessions will be invalidated. -cookie.auth.key=secret-inbucket-session-cookie-key - -# Enable or disable the live message monitor tab for the web UI. This will let -# anybody see all messages delivered to Inbucket. This setting has no impact -# on the availability of the underlying WebSocket. -monitor.visible=true - -# How many historical message headers should be cached for display by new -# monitor connections. It does not limit the number of messages displayed by -# the browser once the monitor is open; all freshly received messages will be -# appended to the on screen list. This setting also affects the underlying -# API/WebSocket. -monitor.history=30 - -############################################################################# -[datastore] - -# Path to the datastore, mail will be written into subdirectories -path=/tmp/inbucket - -# How many minutes after receipt should a message be stored until it's -# automatically purged. To retain messages until manually deleted, set this -# to 0 -retention.minutes=0 - -# How many milliseconds to sleep after purging messages from a mailbox. -# This should help reduce disk I/O when there are a large number of messages -# to purge. -retention.sleep.millis=100 - -# Maximum number of messages we will store in a single mailbox. If this -# number is exceeded, the oldest message in the box will be deleted each -# time a new message is received for it. -mailbox.message.cap=100 diff --git a/etc/docker/defaults/inbucket.conf b/etc/docker/defaults/inbucket.conf deleted file mode 100644 index 8825e87..0000000 --- a/etc/docker/defaults/inbucket.conf +++ /dev/null @@ -1,131 +0,0 @@ -# inbucket.conf -# Configuration for Inbucket inside of Docker -# -# These should be reasonable defaults for a production install of Inbucket - -############################################################################# -[DEFAULT] - -# Not used directly, but is typically referenced below in %()s format. -install.dir=/opt/inbucket -default.domain=inbucket.local - -############################################################################# -[logging] - -# Options from least to most verbose: ERROR, WARN, INFO, TRACE -level=INFO - -############################################################################# -[smtp] - -# IPv4 address to listen for SMTP connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for SMTP connections on. -ip4.port=10025 - -# used in SMTP greeting -domain=%(default.domain)s - -# optional: mail sent to accounts at this domain will not be stored, -# for mixed use (content and load testing) -domain.nostore=bitbucket.local - -# Maximum number of RCPT TO: addresses we allow from clients, the SMTP -# RFC recommends this be at least 100. -max.recipients=100 - -# How long we allow a network connection to be idle before hanging up on the -# client, SMTP RFC recommends at least 5 minutes (300 seconds). -max.idle.seconds=300 - -# Maximum allowable size of message body in bytes (including attachments) -max.message.bytes=2048000 - -# Should we place messages into the datastore, or just throw them away -# (for load testing): true or false -store.messages=true - -############################################################################# -[pop3] - -# IPv4 address to listen for POP3 connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for POP3 connections on. -ip4.port=10110 - -# used in POP3 greeting -domain=%(default.domain)s - -# How long we allow a network connection to be idle before hanging up on the -# client, POP3 RFC requires at least 10 minutes (600 seconds). -max.idle.seconds=600 - -############################################################################# -[web] - -# IPv4 address to serve HTTP web interface on -ip4.address=0.0.0.0 - -# IPv4 port to serve HTTP web interface on -ip4.port=10080 - -# Name of web theme to use -theme=bootstrap - -# Prompt displayed between the mailbox entry field and View button. Leave -# empty or comment out to hide the prompt. -mailbox.prompt=@inbucket - -# Path to the selected themes template files -template.dir=%(install.dir)s/themes/%(theme)s/templates - -# Should we cache parsed templates (set to false during theme dev) -template.cache=true - -# Path to the selected themes public (static) files -public.dir=%(install.dir)s/themes/%(theme)s/public - -# Path to the greeting HTML displayed on front page, can be moved out of -# installation dir for customization -greeting.file=/con/configuration/greeting.html - -# Key used to sign session cookie data so that it cannot be tampered with. -# If this is left unset, Inbucket will generate a random key at startup -# and previous sessions will be invalidated. -#cookie.auth.key=secret-inbucket-session-cookie-key - -# Enable or disable the live message monitor tab for the web UI. This will let -# anybody see all messages delivered to Inbucket. This setting has no impact -# on the availability of the underlying WebSocket. -monitor.visible=true - -# How many historical message headers should be cached for display by new -# monitor connections. It does not limit the number of messages displayed by -# the browser once the monitor is open; all freshly received messages will be -# appended to the on screen list. This setting also affects the underlying -# API/WebSocket. -monitor.history=30 - -############################################################################# -[datastore] - -# Path to the datastore, mail will be written into subdirectories -path=/con/data - -# How many minutes after receipt should a message be stored until it's -# automatically purged. To retain messages until manually deleted, set this -# to 0 -retention.minutes=4320 - -# How many milliseconds to sleep after purging messages from a mailbox. -# This should help reduce disk I/O when there are a large number of messages -# to purge. -retention.sleep.millis=100 - -# Maximum number of messages we will store in a single mailbox. If this -# number is exceeded, the oldest message in the box will be deleted each -# time a new message is received for it. -mailbox.message.cap=300 diff --git a/etc/homebrew/inbucket.conf b/etc/homebrew/inbucket.conf deleted file mode 100644 index bebd42a..0000000 --- a/etc/homebrew/inbucket.conf +++ /dev/null @@ -1,131 +0,0 @@ -# inbucket.conf -# homebrew inbucket configuration -# {{}} values will be replaced during installation - -############################################################################# -[DEFAULT] - -# Not used directly, but is typically referenced below in %()s format. -default.domain=inbucket.local -themes.dir={{HOMEBREW_PREFIX}}/share/inbucket/themes -datastore.dir={{HOMEBREW_PREFIX}}/var/inbucket/datastore - -############################################################################# -[logging] - -# Options from least to most verbose: ERROR, WARN, INFO, TRACE -level=INFO - -############################################################################# -[smtp] - -# IPv4 address to listen for SMTP connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for SMTP connections on. -ip4.port=2500 - -# used in SMTP greeting -domain=%(default.domain)s - -# optional: mail sent to accounts at this domain will not be stored, -# for mixed use (content and load testing) -domain.nostore=bitbucket.local - -# Maximum number of RCPT TO: addresses we allow from clients, the SMTP -# RFC recommends this be at least 100. -max.recipients=100 - -# How long we allow a network connection to be idle before hanging up on the -# client, SMTP RFC recommends at least 5 minutes (300 seconds). -max.idle.seconds=300 - -# Maximum allowable size of message body in bytes (including attachments) -max.message.bytes=2048000 - -# Should we place messages into the datastore, or just throw them away -# (for load testing): true or false -store.messages=true - -############################################################################# -[pop3] - -# IPv4 address to listen for POP3 connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for POP3 connections on. -ip4.port=1100 - -# used in POP3 greeting -domain=%(default.domain)s - -# How long we allow a network connection to be idle before hanging up on the -# client, POP3 RFC requires at least 10 minutes (600 seconds). -max.idle.seconds=600 - -############################################################################# -[web] - -# IPv4 address to serve HTTP web interface on -ip4.address=0.0.0.0 - -# IPv4 port to serve HTTP web interface on -ip4.port=9000 - -# Name of web theme to use -theme=bootstrap - -# Prompt displayed between the mailbox entry field and View button. Leave -# empty or comment out to hide the prompt. -mailbox.prompt=@inbucket - -# Path to the selected themes template files -template.dir=%(themes.dir)s/%(theme)s/templates - -# Should we cache parsed templates (set to false during theme dev) -template.cache=true - -# Path to the selected themes public (static) files -public.dir=%(themes.dir)s/%(theme)s/public - -# Path to the greeting HTML displayed on front page, can be moved out of -# installation dir for customization -greeting.file=%(themes.dir)s/greeting.html - -# Key used to sign session cookie data so that it cannot be tampered with. -# If this is left unset, Inbucket will generate a random key at startup -# and previous sessions will be invalidated. -cookie.auth.key=secret-inbucket-session-cookie-key - -# Enable or disable the live message monitor tab for the web UI. This will let -# anybody see all messages delivered to Inbucket. This setting has no impact -# on the availability of the underlying WebSocket. -monitor.visible=true - -# How many historical message headers should be cached for display by new -# monitor connections. It does not limit the number of messages displayed by -# the browser once the monitor is open; all freshly received messages will be -# appended to the on screen list. This setting also affects the underlying -# API/WebSocket. -monitor.history=30 - -############################################################################# -[datastore] - -# Path to the datastore, mail will be written into subdirectories -path=%(datastore.dir)s - -# How many minutes after receipt should a message be stored until it's -# automatically purged. To retain messages until manually deleted, set this -# to 0 -retention.minutes=10080 - -# How many milliseconds to sleep after purging messages from a mailbox. -# This should help reduce disk I/O when there are a large number of messages -# to purge. -retention.sleep.millis=100 - -# Maximum number of messages we will store in a single mailbox. If this -# number is exceeded, the oldest message in the box will be deleted each -# time a new message is received for it. -mailbox.message.cap=100 diff --git a/etc/inbucket.conf b/etc/inbucket.conf deleted file mode 100644 index e8e16d4..0000000 --- a/etc/inbucket.conf +++ /dev/null @@ -1,129 +0,0 @@ -# inbucket.conf -# Sample inbucket configuration - -############################################################################# -[DEFAULT] - -# Not used directly, but is typically referenced below in %()s format. -install.dir=. -default.domain=inbucket.local - -############################################################################# -[logging] - -# Options from least to most verbose: ERROR, WARN, INFO, TRACE -level=INFO - -############################################################################# -[smtp] - -# IPv4 address to listen for SMTP connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for SMTP connections on. -ip4.port=2500 - -# used in SMTP greeting -domain=%(default.domain)s - -# optional: mail sent to accounts at this domain will not be stored, -# for mixed use (content and load testing) -#domain.nostore=bitbucket.local - -# Maximum number of RCPT TO: addresses we allow from clients, the SMTP -# RFC recommends this be at least 100. -max.recipients=100 - -# How long we allow a network connection to be idle before hanging up on the -# client, SMTP RFC recommends at least 5 minutes (300 seconds). -max.idle.seconds=300 - -# Maximum allowable size of message body in bytes (including attachments) -max.message.bytes=2048000 - -# Should we place messages into the datastore, or just throw them away -# (for load testing): true or false -store.messages=true - -############################################################################# -[pop3] - -# IPv4 address to listen for POP3 connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for POP3 connections on. -ip4.port=1100 - -# used in POP3 greeting -domain=%(default.domain)s - -# How long we allow a network connection to be idle before hanging up on the -# client, POP3 RFC requires at least 10 minutes (600 seconds). -max.idle.seconds=600 - -############################################################################# -[web] - -# IPv4 address to serve HTTP web interface on -ip4.address=0.0.0.0 - -# IPv4 port to serve HTTP web interface on -ip4.port=9000 - -# Name of web theme to use -theme=bootstrap - -# Prompt displayed between the mailbox entry field and View button. Leave -# empty or comment out to hide the prompt. -mailbox.prompt=@inbucket - -# Path to the selected themes template files -template.dir=%(install.dir)s/themes/%(theme)s/templates - -# Should we cache parsed templates (set to false during theme dev) -template.cache=true - -# Path to the selected themes public (static) files -public.dir=%(install.dir)s/themes/%(theme)s/public - -# Path to the greeting HTML displayed on front page, can be moved out of -# installation dir for customization -greeting.file=%(install.dir)s/themes/greeting.html - -# Key used to sign session cookie data so that it cannot be tampered with. -# If this is left unset, Inbucket will generate a random key at startup -# and previous sessions will be invalidated. -#cookie.auth.key=secret-inbucket-session-cookie-key - -# Enable or disable the live message monitor tab for the web UI. This will let -# anybody see all messages delivered to Inbucket. This setting has no impact -# on the availability of the underlying WebSocket. -monitor.visible=true - -# How many historical message headers should be cached for display by new -# monitor connections. It does not limit the number of messages displayed by -# the browser once the monitor is open; all freshly received messages will be -# appended to the on screen list. This setting also affects the underlying -# API/WebSocket. -monitor.history=30 - -############################################################################# -[datastore] - -# Path to the datastore, mail will be written into subdirectories -path=/tmp/inbucket - -# How many minutes after receipt should a message be stored until it's -# automatically purged. To retain messages until manually deleted, set this -# to 0 -retention.minutes=240 - -# How many milliseconds to sleep after purging messages from a mailbox. -# This should help reduce disk I/O when there are a large number of messages -# to purge. -retention.sleep.millis=100 - -# Maximum number of messages we will store in a single mailbox. If this -# number is exceeded, the oldest message in the box will be deleted each -# time a new message is received for it. -mailbox.message.cap=500 diff --git a/etc/unix-sample.conf b/etc/unix-sample.conf deleted file mode 100644 index 240923f..0000000 --- a/etc/unix-sample.conf +++ /dev/null @@ -1,129 +0,0 @@ -# inbucket.conf -# Sample inbucket configuration - -############################################################################# -[DEFAULT] - -# Not used directly, but is typically referenced below in %()s format. -install.dir=/opt/inbucket -default.domain=inbucket.local - -############################################################################# -[logging] - -# Options from least to most verbose: ERROR, WARN, INFO, TRACE -level=INFO - -############################################################################# -[smtp] - -# IPv4 address to listen for SMTP connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for SMTP connections on. -ip4.port=25 - -# used in SMTP greeting -domain=%(default.domain)s - -# optional: mail sent to accounts at this domain will not be stored, -# for mixed use (content and load testing) -#domain.nostore=bitbucket.local - -# Maximum number of RCPT TO: addresses we allow from clients, the SMTP -# RFC recommends this be at least 100. -max.recipients=100 - -# How long we allow a network connection to be idle before hanging up on the -# client, SMTP RFC recommends at least 5 minutes (300 seconds). -max.idle.seconds=300 - -# Maximum allowable size of message body in bytes (including attachments) -max.message.bytes=2048000 - -# Should we place messages into the datastore, or just throw them away -# (for load testing): true or false -store.messages=true - -############################################################################# -[pop3] - -# IPv4 address to listen for POP3 connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for POP3 connections on. -ip4.port=110 - -# used in POP3 greeting -domain=%(default.domain)s - -# How long we allow a network connection to be idle before hanging up on the -# client, POP3 RFC requires at least 10 minutes (600 seconds). -max.idle.seconds=600 - -############################################################################# -[web] - -# IPv4 address to serve HTTP web interface on -ip4.address=0.0.0.0 - -# IPv4 port to serve HTTP web interface on -ip4.port=80 - -# Name of web theme to use -theme=bootstrap - -# Prompt displayed between the mailbox entry field and View button. Leave -# empty or comment out to hide the prompt. -mailbox.prompt=@inbucket - -# Path to the selected themes template files -template.dir=%(install.dir)s/themes/%(theme)s/templates - -# Should we cache parsed templates (set to false during theme dev) -template.cache=true - -# Path to the selected themes public (static) files -public.dir=%(install.dir)s/themes/%(theme)s/public - -# Path to the greeting HTML displayed on front page, can be moved out of -# installation dir for customization -greeting.file=%(install.dir)s/themes/greeting.html - -# Key used to sign session cookie data so that it cannot be tampered with. -# If this is left unset, Inbucket will generate a random key at startup -# and previous sessions will be invalidated. -#cookie.auth.key=secret-inbucket-session-cookie-key - -# Enable or disable the live message monitor tab for the web UI. This will let -# anybody see all messages delivered to Inbucket. This setting has no impact -# on the availability of the underlying WebSocket. -monitor.visible=true - -# How many historical message headers should be cached for display by new -# monitor connections. It does not limit the number of messages displayed by -# the browser once the monitor is open; all freshly received messages will be -# appended to the on screen list. This setting also affects the underlying -# API/WebSocket. -monitor.history=30 - -############################################################################# -[datastore] - -# Path to the datastore, mail will be written into subdirectories -path=/var/opt/inbucket - -# How many minutes after receipt should a message be stored until it's -# automatically purged. To retain messages until manually deleted, set this -# to 0 -retention.minutes=240 - -# How many milliseconds to sleep after purging messages from a mailbox. -# This should help reduce disk I/O when there are a large number of messages -# to purge. -retention.sleep.millis=100 - -# Maximum number of messages we will store in a single mailbox. If this -# number is exceeded, the oldest message in the box will be deleted each -# time a new message is received for it. -mailbox.message.cap=500 diff --git a/etc/win-sample.conf b/etc/win-sample.conf deleted file mode 100644 index 398dbd0..0000000 --- a/etc/win-sample.conf +++ /dev/null @@ -1,129 +0,0 @@ -# win-sample.conf -# Sample inbucket configuration for Windows - -############################################################################# -[DEFAULT] - -# Not used directly, but is typically referenced below in %()s format. -install.dir=. -default.domain=inbucket.local - -############################################################################# -[logging] - -# Options from least to most verbose: ERROR, WARN, INFO, TRACE -level=INFO - -############################################################################# -[smtp] - -# IPv4 address to listen for SMTP connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for SMTP connections on. -ip4.port=2500 - -# used in SMTP greeting -domain=%(default.domain)s - -# optional: mail sent to accounts at this domain will not be stored, -# for mixed use (content and load testing) -#domain.nostore=bitbucket.local - -# Maximum number of RCPT TO: addresses we allow from clients, the SMTP -# RFC recommends this be at least 100. -max.recipients=100 - -# How long we allow a network connection to be idle before hanging up on the -# client, SMTP RFC recommends at least 5 minutes (300 seconds). -max.idle.seconds=300 - -# Maximum allowable size of message body in bytes (including attachments) -max.message.bytes=2048000 - -# Should we place messages into the datastore, or just throw them away -# (for load testing): true or false -store.messages=true - -############################################################################# -[pop3] - -# IPv4 address to listen for POP3 connections on. -ip4.address=0.0.0.0 - -# IPv4 port to listen for POP3 connections on. -ip4.port=1100 - -# used in POP3 greeting -domain=%(default.domain)s - -# How long we allow a network connection to be idle before hanging up on the -# client, POP3 RFC requires at least 10 minutes (600 seconds). -max.idle.seconds=600 - -############################################################################# -[web] - -# IPv4 address to serve HTTP web interface on -ip4.address=0.0.0.0 - -# IPv4 port to serve HTTP web interface on -ip4.port=9000 - -# Name of web theme to use -theme=bootstrap - -# Prompt displayed between the mailbox entry field and View button. Leave -# empty or comment out to hide the prompt. -mailbox.prompt=@inbucket - -# Path to the selected themes template files -template.dir=%(install.dir)s\themes\%(theme)s\templates - -# Should we cache parsed templates (set to false during theme dev) -template.cache=true - -# Path to the selected themes public (static) files -public.dir=%(install.dir)s\themes\%(theme)s\public - -# Path to the greeting HTML displayed on front page, can be moved out of -# installation dir for customization -greeting.file=%(install.dir)s\themes\greeting.html - -# Key used to sign session cookie data so that it cannot be tampered with. -# If this is left unset, Inbucket will generate a random key at startup -# and previous sessions will be invalidated. -#cookie.auth.key=secret-inbucket-session-cookie-key - -# Enable or disable the live message monitor tab for the web UI. This will let -# anybody see all messages delivered to Inbucket. This setting has no impact -# on the availability of the underlying WebSocket. -monitor.visible=true - -# How many historical message headers should be cached for display by new -# monitor connections. It does not limit the number of messages displayed by -# the browser once the monitor is open; all freshly received messages will be -# appended to the on screen list. This setting also affects the underlying -# API/WebSocket. -monitor.history=30 - -############################################################################# -[datastore] - -# Path to the datastore, mail will be written into subdirectories -path=.\inbucket-data - -# How many minutes after receipt should a message be stored until it's -# automatically purged. To retain messages until manually deleted, set this -# to 0 -retention.minutes=240 - -# How many milliseconds to sleep after purging messages from a mailbox. -# This should help reduce disk I/O when there are a large number of messages -# to purge. -retention.sleep.millis=100 - -# Maximum number of messages we will store in a single mailbox. If this -# number is exceeded, the oldest message in the box will be deleted each -# time a new message is received for it. -mailbox.message.cap=500 From 86c8ccf9eaf10bae3989611476bba785440e1dc5 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 15:35:45 -0700 Subject: [PATCH 5/8] docker: Update for environment config for #86 - Change to default ports (less surprising) - Drop `/con/` volume naming, never caught on --- CHANGELOG.md | 4 ++++ Dockerfile | 29 +++++++++++++++++---------- etc/docker/defaults/start-inbucket.sh | 3 +-- etc/docker/install.sh | 5 ++--- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aba3b7..7e933c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ This project adheres to [Semantic Versioning](http://semver.org/). more enjoyable to work on. - Renamed `themes` directory to `ui` and eliminated the intermediate `bootstrap` directory. +- Docker build: + - Uses the same default ports as other builds; smtp:2500 http:9000 pop3:1100 + - Uses volume `/config` for `greeting.html` + - Uses volume `/storage` for mail storage ## [v1.3.1] - 2018-03-10 diff --git a/Dockerfile b/Dockerfile index ba393f5..5bc5da5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,23 +2,30 @@ # Inbucket website: http://www.inbucket.org/ FROM golang:1.10-alpine -MAINTAINER James Hillyerd, @jameshillyerd -# Configuration (WORKDIR doesn't support env vars) +# Configuration ENV INBUCKET_SRC $GOPATH/src/github.com/jhillyerd/inbucket ENV INBUCKET_HOME /opt/inbucket -WORKDIR $INBUCKET_HOME -ENTRYPOINT ["/con/context/start-inbucket.sh"] -CMD ["/con/configuration/inbucket.conf"] +ENV INBUCKET_SMTP_DOMAINNOSTORE bitbucket.local +ENV INBUCKET_SMTP_TIMEOUT 30s +ENV INBUCKET_POP3_TIMEOUT 30s +ENV INBUCKET_WEB_UIDIR $INBUCKET_HOME/ui +ENV INBUCKET_WEB_GREETINGFILE /config/greeting.html +ENV INBUCKET_WEB_COOKIEAUTHKEY secret-inbucket-session-cookie-key +ENV INBUCKET_STORAGE_TYPE file +ENV INBUCKET_STORAGE_PARAMS path:/storage +ENV INBUCKET_STORAGE_RETENTIONPERIOD 72h +ENV INBUCKET_STORAGE_MAILBOXMSGCAP 300 # Ports: SMTP, HTTP, POP3 -EXPOSE 10025 10080 10110 +EXPOSE 2500 9000 1100 -# Persistent Volumes, following convention at: -# https://github.com/docker/docker/issues/9277 -# NOTE /con/context is also used, not exposed by default -VOLUME /con/configuration -VOLUME /con/data +# Persistent Volumes +VOLUME /config +VOLUME /storage + +WORKDIR $INBUCKET_HOME +ENTRYPOINT "/start-inbucket.sh" # Build Inbucket COPY . $INBUCKET_SRC/ diff --git a/etc/docker/defaults/start-inbucket.sh b/etc/docker/defaults/start-inbucket.sh index 3f30e6b..7315ee7 100755 --- a/etc/docker/defaults/start-inbucket.sh +++ b/etc/docker/defaults/start-inbucket.sh @@ -3,7 +3,7 @@ # description: start inbucket (runs within a docker container) CONF_SOURCE="$INBUCKET_HOME/defaults" -CONF_TARGET="/con/configuration" +CONF_TARGET="/config" set -eo pipefail @@ -18,7 +18,6 @@ install_default_config() { fi } -install_default_config "inbucket.conf" install_default_config "greeting.html" exec "$INBUCKET_HOME/bin/inbucket" $* diff --git a/etc/docker/install.sh b/etc/docker/install.sh index 54507db..413f8de 100755 --- a/etc/docker/install.sh +++ b/etc/docker/install.sh @@ -35,10 +35,9 @@ set -x mkdir -p "$bindir" install inbucket "$bindir" mkdir -p "$contextdir" -install etc/docker/defaults/start-inbucket.sh "$contextdir" -cp -r themes "$installdir/" +install etc/docker/defaults/start-inbucket.sh / +cp -r ui "$installdir/" mkdir -p "$defaultsdir" -cp etc/docker/defaults/inbucket.conf "$defaultsdir" cp etc/docker/defaults/greeting.html "$defaultsdir" set +x From 2d09e94f873e15da14a6938cff28dab959751de3 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 16:08:34 -0700 Subject: [PATCH 6/8] log: Fix another deadlock. --- pkg/log/stdout_unix.go | 11 ++++++----- pkg/log/stdout_windows.go | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/log/stdout_unix.go b/pkg/log/stdout_unix.go index 1197844..0908102 100644 --- a/pkg/log/stdout_unix.go +++ b/pkg/log/stdout_unix.go @@ -3,8 +3,10 @@ package log import ( - "golang.org/x/sys/unix" + "log" "os" + + "golang.org/x/sys/unix" ) // closeStdin will close stdin on Unix platforms - this is standard practice @@ -12,20 +14,19 @@ import ( func closeStdin() { if err := os.Stdin.Close(); err != nil { // Not a fatal error - Errorf("Failed to close os.Stdin during log setup") + log.Printf("Failed to close os.Stdin during log setup") } } // reassignStdout points stdout/stderr to our logfile on systems that support // the Dup2 syscall per https://github.com/golang/go/issues/325 func reassignStdout() { - Tracef("Unix reassignStdout()") if err := unix.Dup2(int(logf.Fd()), 1); err != nil { // Not considered fatal - Errorf("Failed to re-assign stdout to logfile: %v", err) + log.Printf("Failed to re-assign stdout to logfile: %v", err) } if err := unix.Dup2(int(logf.Fd()), 2); err != nil { // Not considered fatal - Errorf("Failed to re-assign stderr to logfile: %v", err) + log.Printf("Failed to re-assign stderr to logfile: %v", err) } } diff --git a/pkg/log/stdout_windows.go b/pkg/log/stdout_windows.go index ad8d829..f883d24 100644 --- a/pkg/log/stdout_windows.go +++ b/pkg/log/stdout_windows.go @@ -3,6 +3,7 @@ package log import ( + "log" "os" ) @@ -16,7 +17,6 @@ func closeStdin() { // reassignStdout points stdout/stderr to our logfile on systems that do not // support the Dup2 syscall func reassignStdout() { - Tracef("Windows reassignStdout()") if !stdOutsClosed { // Close std* streams to prevent accidental output, they will be redirected to // our logfile below @@ -24,11 +24,11 @@ func reassignStdout() { // Warning: this will hide panic() output, sorry Windows users if err := os.Stderr.Close(); err != nil { // Not considered fatal - Errorf("Failed to close os.Stderr during log setup") + log.Printf("Failed to close os.Stderr during log setup") } if err := os.Stdin.Close(); err != nil { // Not considered fatal - Errorf("Failed to close os.Stdin during log setup") + log.Printf("Failed to close os.Stdin during log setup") } os.Stdout = logf os.Stderr = logf From 23dc3572020fc0422ae55c8e2285986480aeb793 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 16:16:06 -0700 Subject: [PATCH 7/8] etc: Add dev-start.sh script for #86 --- etc/dev-start.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 etc/dev-start.sh diff --git a/etc/dev-start.sh b/etc/dev-start.sh new file mode 100755 index 0000000..6112cf3 --- /dev/null +++ b/etc/dev-start.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# dev-start.sh +# description: Developer friendly Inbucket configuration + +export INBUCKET_LOGLEVEL="TRACE" +export INBUCKET_SMTP_DOMAINNOSTORE="bitbucket.local" +export INBUCKET_WEB_TEMPLATECACHE="false" +export INBUCKET_WEB_COOKIEAUTHKEY="not-secret" +export INBUCKET_STORAGE_TYPE="file" +export INBUCKET_STORAGE_PARAMS="path:/tmp/inbucket" +export INBUCKET_STORAGE_RETENTIONPERIOD="5m" + +if ! test -x ./inbucket; then + echo "$PWD/inbucket not found/executable!" >&2 + echo "Run this script from the inbucket root directory after running make" >&2 + exit 1 +fi + +exec ./inbucket $* From 06989c8218ca8af4865db7e93e26438cb136eb43 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 16:28:37 -0700 Subject: [PATCH 8/8] Update goreleaser config for #86 - Remove inbucket.bat, with new env defaults Windows does not need a script to launch. --- .goreleaser.yml | 5 ++--- inbucket.bat | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 inbucket.bat diff --git a/.goreleaser.yml b/.goreleaser.yml index f8fe52c..d4c588b 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -20,7 +20,7 @@ builds: - amd64 goarm: - "6" - main: . + main: ./cmd/inbucket ldflags: -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} - binary: client goos: @@ -46,9 +46,8 @@ archive: - LICENSE* - README* - CHANGELOG* - - inbucket.bat - etc/**/* - - themes/**/* + - ui/**/* fpm: bindir: /usr/local/bin snapshot: diff --git a/inbucket.bat b/inbucket.bat deleted file mode 100644 index 0737139..0000000 --- a/inbucket.bat +++ /dev/null @@ -1 +0,0 @@ -inbucket.exe etc\win-sample.conf \ No newline at end of file