`, and ``.\n@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the ``.\n@headings-font-family: inherit;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n@icon-font-path: "../fonts/";\n//** File name for all font files.\n@icon-font-name: "glyphicons-halflings-regular";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: "glyphicons_halflingsregular";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 6px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 10px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.33;\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ` `s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap\'s buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #333;\n@btn-default-bg: #fff;\n@btn-default-border: #ccc;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** ` ` background color\n@input-bg: #fff;\n//** ` ` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for ` `s\n@input-color: @gray;\n//** ` ` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: #999;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: #f5f5f5;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They\'re used for a bird\'s eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal: 1040;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don\'t overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #777;\n@navbar-default-bg: #f8f8f8;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #777;\n@navbar-default-link-hover-color: #333;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #555;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #888;\n@navbar-default-toggle-border-color: #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: lighten(@gray-light, 15%);\n@navbar-inverse-bg: #222;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: lighten(@gray-light, 15%);\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #333;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #3c763d;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #31708f;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #8a6d3b;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: #a94442;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 15px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: "/";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n',"wells.less":"//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n"},__fonts={"glyphicons-halflings-regular.eot":"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","glyphicons-halflings-regular.svg":"PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+PC9tZXRhZGF0YT4KPGRlZnM+Cjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA+Cjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIC8+CjxnbHlwaCAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZDsiIC8+CjxnbHlwaCB1bmljb2RlPSIgIiAvPgo8Z2x5cGggdW5pY29kZT0iKiIgZD0iTTEwMCA1MDB2MjAwaDI1OWwtMTgzIDE4M2wxNDEgMTQxbDE4MyAtMTgzdjI1OWgyMDB2LTI1OWwxODMgMTgzbDE0MSAtMTQxbC0xODMgLTE4M2gyNTl2LTIwMGgtMjU5bDE4MyAtMTgzbC0xNDEgLTE0MWwtMTgzIDE4M3YtMjU5aC0yMDB2MjU5bC0xODMgLTE4M2wtMTQxIDE0MWwxODMgMTgzaC0yNTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTAgNDAwdjMwMGg0MDB2NDAwaDMwMHYtNDAwaDQwMHYtMzAwaC00MDB2LTQwMGgtMzAwdjQwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGEwOyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzA0IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTIiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDQiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzNCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI2IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTciIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYzIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNMTAwIDUwMGwxMDAgMTAwaDExM3EwIDQ3IDUgMTAwaC0yMThsMTAwIDEwMGgxMzVxMzcgMTY3IDExMiAyNTdxMTE3IDE0MSAyOTcgMTQxcTI0MiAwIDM1NCAtMTg5cTYwIC0xMDMgNjYgLTIwOWgtMTgxcTAgNTUgLTI1LjUgOTl0LTYzLjUgNjh0LTc1IDM2LjV0LTY3IDEyLjVxLTI0IDAgLTUyLjUgLTEwdC02Mi41IC0zMnQtNjUuNSAtNjd0LTUwLjUgLTEwN2gzNzlsLTEwMCAtMTAwaC0zMDBxLTYgLTQ2IC02IC0xMDBoNDA2bC0xMDAgLTEwMCBoLTMwMHE5IC03NCAzMyAtMTMydDUyLjUgLTkxdDYyIC01NC41dDU5IC0yOXQ0Ni41IC03LjVxMjkgMCA2NiAxM3Q3NSAzN3Q2My41IDY3LjV0MjUuNSA5Ni41aDE3NHEtMzEgLTE3MiAtMTI4IC0yNzhxLTEwNyAtMTE3IC0yNzQgLTExN3EtMjA1IDAgLTMyNCAxNThxLTM2IDQ2IC02OSAxMzEuNXQtNDUgMjA1LjVoLTIxN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMjEyOyIgZD0iTTIwMCA0MDBoOTAwdjMwMGgtOTAwdi0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjVmYzsiIGhvcml6LWFkdi14PSI1MDAiIGQ9Ik0wIDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjYwMTsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoNzUwcTEyMCAwIDIwNSA4Ni41dDg1IDIwNy41dC04NSAyMDd0LTIwNSA4NnEtNDYgMCAtOTAgLTE0cS00NCA5NyAtMTM0LjUgMTU2LjV0LTIwMC41IDU5LjVxLTE1MiAwIC0yNjAgLTEwNy41dC0xMDggLTI2MC41cTAgLTI1IDIgLTM3cS02NiAtMTQgLTEwOC41IC02Ny41dC00Mi41IC0xMjIuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTAgMTAwbDQwMCA0MDBsMjAwIC0yMDBsMjAwIDIwMGw0MDAgLTQwMGgtMTIwMHpNMCAzMDB2NjAwbDMwMCAtMzAwek0wIDExMDBsNjAwIC02MDNsNjAwIDYwM2gtMTIwMHpNOTAwIDYwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0tMTMgLTEzbDMzMyAxMTJsLTIyMyAyMjN6TTE4NyA0MDNsMjE0IC0yMTRsNjE0IDYxNGwtMjE0IDIxNHpNODg3IDExMDNsMjE0IC0yMTRsOTkgOTJxMTMgMTMgMTMgMzIuNXQtMTMgMzMuNWwtMTUzIDE1M3EtMTUgMTMgLTMzIDEzdC0zMyAtMTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik0wIDEyMDBoMTIwMGwtNTAwIC01NTB2LTU1MGgzMDB2LTEwMGgtODAwdjEwMGgzMDB2NTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDI7IiBkPSJNMTQgODRxMTggLTU1IDg2IC03NS41dDE0NyA1LjVxNjUgMjEgMTA5IDY5dDQ0IDkwdjYwNmw2MDAgMTU1di01MjFxLTY0IDE2IC0xMzggLTdxLTc5IC0yNiAtMTIyLjUgLTgzdC0yNS41IC0xMTFxMTggLTU1IDg2IC03NS41dDE0NyA0LjVxNzAgMjMgMTExLjUgNjMuNXQ0MS41IDk1LjV2ODgxcTAgMTAgLTcgMTUuNXQtMTcgMi41bC03NTIgLTE5M3EtMTAgLTMgLTE3IC0xMi41dC03IC0xOS41di02ODlxLTY0IDE3IC0xMzggLTcgcS03OSAtMjUgLTEyMi41IC04MnQtMjUuNSAtMTEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNMjMgNjkzcTAgMjAwIDE0MiAzNDJ0MzQyIDE0MnQzNDIgLTE0MnQxNDIgLTM0MnEwIC0xNDIgLTc4IC0yNjFsMzAwIC0zMDBxNyAtOCA3IC0xOHQtNyAtMThsLTEwOSAtMTA5cS04IC03IC0xOCAtN3QtMTggN2wtMzAwIDMwMHEtMTE5IC03OCAtMjYxIC03OHEtMjAwIDAgLTM0MiAxNDJ0LTE0MiAzNDJ6TTE3NiA2OTNxMCAtMTM2IDk3IC0yMzN0MjM0IC05N3QyMzMuNSA5Ni41dDk2LjUgMjMzLjV0LTk2LjUgMjMzLjV0LTIzMy41IDk2LjUgdC0yMzQgLTk3dC05NyAtMjMzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNMTAwIDc4NHEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQuNSA2NHQxMTkgMjAuNXQxMjAgLTM4LjV0MTA0LjUgLTEwNC41cTQ4IDY5IDEwOS41IDEwNXQxMjEuNSAzOHQxMTguNSAtMjAuNXQxMDIuNSAtNjR0NzEgLTEwMC41dDI3IC0xMjNxMCAtNTcgLTMzLjUgLTExNy41dC05NCAtMTI0LjV0LTEyNi41IC0xMjcuNXQtMTUwIC0xNTIuNXQtMTQ2IC0xNzRxLTYyIDg1IC0xNDUuNSAxNzR0LTE0OS41IDE1Mi41dC0xMjYuNSAxMjcuNSB0LTk0IDEyNC41dC0zMy41IDExNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDY7IiBkPSJNLTcyIDgwMGg0NzlsMTQ2IDQwMGgybDE0NiAtNDAwaDQ3MmwtMzgyIC0yNzhsMTQ1IC00NDlsLTM4NCAyNzVsLTM4MiAtMjc1bDE0NiA0NDd6TTE2OCA3MWwyIDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNzsiIGQ9Ik0tNzIgODAwaDQ3OWwxNDYgNDAwaDJsMTQ2IC00MDBoNDcybC0zODIgLTI3OGwxNDUgLTQ0OWwtMzg0IDI3NWwtMzgyIC0yNzVsMTQ2IDQ0N3pNMTY4IDcxbDIgMXpNMjM3IDcwMGwxOTYgLTE0MmwtNzMgLTIyNmwxOTIgMTQwbDE5NSAtMTQxbC03NCAyMjlsMTkzIDE0MGgtMjM1bC03NyAyMTFsLTc4IC0yMTFoLTIzOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDA4OyIgZD0iTTAgMHYxNDNsNDAwIDI1N3YxMDBxLTM3IDAgLTY4LjUgNzQuNXQtMzEuNSAxMjUuNXYyMDBxMCAxMjQgODggMjEydDIxMiA4OHQyMTIgLTg4dDg4IC0yMTJ2LTIwMHEwIC01MSAtMzEuNSAtMTI1LjV0LTY4LjUgLTc0LjV2LTEwMGw0MDAgLTI1N3YtMTQzaC0xMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMCAwdjExMDBoMTIwMHYtMTEwMGgtMTIwMHpNMTAwIDEwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDMwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDUwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDcwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDkwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMzAwIDEwMGg2MDB2NDAwaC02MDB2LTQwMHpNMzAwIDYwMGg2MDB2NDAwaC02MDB2LTQwMHpNMTAwMCAxMDBoMTAwdjEwMGgtMTAwdi0xMDB6IE0xMDAwIDMwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwMCA1MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMDAgNzAwaDEwMHYxMDBoLTEwMHYtMTAwek0xMDAwIDkwMGgxMDB2MTAwaC0xMDB2LTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDEwOyIgZD0iTTAgNTB2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMCA2NTB2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTYwMCA1MHY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek02MDAgNjUwdjQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTE7IiBkPSJNMCA1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0wIDQ1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMCA4NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNDAwIDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjUgdC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek00MDAgNDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTQwMCA4NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTgwMCA1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek04MDAgNDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek04MDAgODUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik0wIDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNDUwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djIwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMjAwcS0yMSAwIC0zNS41IC0xNC41IHQtMTQuNSAtMzUuNXYtMjAwek0wIDg1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek00MDAgNTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTcwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTQwMCA0NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNDAwIDg1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNSB2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDEzOyIgZD0iTTI5IDQ1NGw0MTkgLTQyMGw4MTggODIwbC0yMTIgMjEybC02MDcgLTYwN2wtMjA2IDIwN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDE0OyIgZD0iTTEwNiAzMThsMjgyIDI4MmwtMjgyIDI4MmwyMTIgMjEybDI4MiAtMjgybDI4MiAyODJsMjEyIC0yMTJsLTI4MiAtMjgybDI4MiAtMjgybC0yMTIgLTIxMmwtMjgyIDI4MmwtMjgyIC0yODJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNTsiIGQ9Ik0yMyA2OTNxMCAyMDAgMTQyIDM0MnQzNDIgMTQydDM0MiAtMTQydDE0MiAtMzQycTAgLTE0MiAtNzggLTI2MWwzMDAgLTMwMHE3IC04IDcgLTE4dC03IC0xOGwtMTA5IC0xMDlxLTggLTcgLTE4IC03dC0xOCA3bC0zMDAgMzAwcS0xMTkgLTc4IC0yNjEgLTc4cS0yMDAgMCAtMzQyIDE0MnQtMTQyIDM0MnpNMTc2IDY5M3EwIC0xMzYgOTcgLTIzM3QyMzQgLTk3dDIzMy41IDk2LjV0OTYuNSAyMzMuNXQtOTYuNSAyMzMuNXQtMjMzLjUgOTYuNSB0LTIzNCAtOTd0LTk3IC0yMzN6TTMwMCA2MDB2MjAwaDEwMHYxMDBoMjAwdi0xMDBoMTAwdi0yMDBoLTEwMHYtMTAwaC0yMDB2MTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNjsiIGQ9Ik0yMyA2OTRxMCAyMDAgMTQyIDM0MnQzNDIgMTQydDM0MiAtMTQydDE0MiAtMzQycTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE3IC03IDcgLTE4dC03IC0xOGwtMTA5IC0xMDlxLTggLTggLTE4IC04dC0xOCA4bC0zMDAgMzAwcS0xMTkgLTc4IC0yNjEgLTc4cS0yMDAgMCAtMzQyIDE0MnQtMTQyIDM0MnpNMTc2IDY5NHEwIC0xMzYgOTcgLTIzM3QyMzQgLTk3dDIzMy41IDk3dDk2LjUgMjMzdC05Ni41IDIzM3QtMjMzLjUgOTd0LTIzNCAtOTcgdC05NyAtMjMzek0zMDAgNjAxaDQwMHYyMDBoLTQwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTc7IiBkPSJNMjMgNjAwcTAgMTgzIDEwNSAzMzF0MjcyIDIxMHYtMTY2cS0xMDMgLTU1IC0xNjUgLTE1NXQtNjIgLTIyMHEwIC0xNzcgMTI1IC0zMDJ0MzAyIC0xMjV0MzAyIDEyNXQxMjUgMzAycTAgMTIwIC02MiAyMjB0LTE2NSAxNTV2MTY2cTE2NyAtNjIgMjcyIC0yMTB0MTA1IC0zMzFxMCAtMTE4IC00NS41IC0yMjQuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjQuNSAtNDUuNXQtMjI0LjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjQuNSB6TTUwMCA3NTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41aDEwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2NDAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDE4OyIgZD0iTTEwMCAxaDIwMHYzMDBoLTIwMHYtMzAwek00MDAgMXY1MDBoMjAwdi01MDBoLTIwMHpNNzAwIDF2ODAwaDIwMHYtODAwaC0yMDB6TTEwMDAgMXYxMjAwaDIwMHYtMTIwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTk7IiBkPSJNMjYgNjAxcTAgLTMzIDYgLTc0bDE1MSAtMzhsMiAtNnExNCAtNDkgMzggLTkzbDMgLTVsLTgwIC0xMzRxNDUgLTU5IDEwNSAtMTA1bDEzMyA4MWw1IC0zcTQ1IC0yNiA5NCAtMzlsNSAtMmwzOCAtMTUxcTQwIC01IDc0IC01cTI3IDAgNzQgNWwzOCAxNTFsNiAycTQ2IDEzIDkzIDM5bDUgM2wxMzQgLTgxcTU2IDQ0IDEwNCAxMDVsLTgwIDEzNGwzIDVxMjQgNDQgMzkgOTNsMSA2bDE1MiAzOHE1IDQwIDUgNzRxMCAyOCAtNSA3M2wtMTUyIDM4IGwtMSA2cS0xNiA1MSAtMzkgOTNsLTMgNWw4MCAxMzRxLTQ0IDU4IC0xMDQgMTA1bC0xMzQgLTgxbC01IDNxLTQ1IDI1IC05MyAzOWwtNiAxbC0zOCAxNTJxLTQwIDUgLTc0IDVxLTI3IDAgLTc0IC01bC0zOCAtMTUybC01IC0xcS01MCAtMTQgLTk0IC0zOWwtNSAtM2wtMTMzIDgxcS01OSAtNDcgLTEwNSAtMTA1bDgwIC0xMzRsLTMgLTVxLTI1IC00NyAtMzggLTkzbC0yIC02bC0xNTEgLTM4cS02IC00OCAtNiAtNzN6TTM4NSA2MDEgcTAgODggNjMgMTUxdDE1MiA2M3QxNTIgLTYzdDYzIC0xNTFxMCAtODkgLTYzIC0xNTJ0LTE1MiAtNjN0LTE1MiA2M3QtNjMgMTUyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNMTAwIDEwMjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgzMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMGgyNzVxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMSAtNyAtMTh0LTE4IC03aC0xMDUwcS0xMSAwIC0xOCA3dC03IDE4ek0yMDAgMTAwdjgwMGg5MDB2LTgwMHEwIC00MSAtMjkuNSAtNzF0LTcwLjUgLTMwaC03MDBxLTQxIDAgLTcwLjUgMzAgdC0yOS41IDcxek0zMDAgMTAwaDEwMHY3MDBoLTEwMHYtNzAwek01MDAgMTAwaDEwMHY3MDBoLTEwMHYtNzAwek01MDAgMTEwMGgzMDB2MTAwaC0zMDB2LTEwMHpNNzAwIDEwMGgxMDB2NzAwaC0xMDB2LTcwMHpNOTAwIDEwMGgxMDB2NzAwaC0xMDB2LTcwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDIxOyIgZD0iTTEgNjAxbDY1NiA2NDRsNjQ0IC02NDRoLTIwMHYtNjAwaC0zMDB2NDAwaC0zMDB2LTQwMGgtMzAwdjYwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjI7IiBkPSJNMTAwIDI1djExNTBxMCAxMSA3IDE4dDE4IDdoNDc1di01MDBoNDAwdi02NzVxMCAtMTEgLTcgLTE4dC0xOCAtN2gtODUwcS0xMSAwIC0xOCA3dC03IDE4ek03MDAgODAwdjMwMGwzMDAgLTMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MSAxMjEuNSAtMjkyLjV0MjkyLjUgLTEyMS41dDI5Mi41IDEyMS41dDEyMS41IDI5Mi41dC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek01MDAgNTAwdjQwMGgxMDAgdi0zMDBoMjAwdi0xMDBoLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTS0xMDAgMGw0MzEgMTIwMGgyMDlsLTIxIC0zMDBoMTYybC0yMCAzMDBoMjA4bDQzMSAtMTIwMGgtNTM4bC00MSA0MDBoLTI0MmwtNDAgLTQwMGgtNTM5ek00ODggNTAwaDIyNGwtMjcgMzAwaC0xNzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNTsiIGQ9Ik0wIDB2NDAwaDQ5MGwtMjkwIDMwMGgyMDB2NTAwaDMwMHYtNTAwaDIwMGwtMjkwIC0zMDBoNDkwdi00MDBoLTExMDB6TTgxMyAyMDBoMTc1djEwMGgtMTc1di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNjsiIGQ9Ik0xIDYwMHEwIDEyMiA0Ny41IDIzM3QxMjcuNSAxOTF0MTkxIDEyNy41dDIzMyA0Ny41dDIzMyAtNDcuNXQxOTEgLTEyNy41dDEyNy41IC0xOTF0NDcuNSAtMjMzdC00Ny41IC0yMzN0LTEyNy41IC0xOTF0LTE5MSAtMTI3LjV0LTIzMyAtNDcuNXQtMjMzIDQ3LjV0LTE5MSAxMjcuNXQtMTI3LjUgMTkxdC00Ny41IDIzM3pNMTg4IDYwMHEwIC0xNzAgMTIxIC0yOTF0MjkxIC0xMjF0MjkxIDEyMXQxMjEgMjkxdC0xMjEgMjkxdC0yOTEgMTIxIHQtMjkxIC0xMjF0LTEyMSAtMjkxek0zNTAgNjAwaDE1MHYzMDBoMjAwdi0zMDBoMTUwbC0yNTAgLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI3OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzUwIDYwMGwyNTAgMzAwIGwyNTAgLTMwMGgtMTUwdi0zMDBoLTIwMHYzMDBoLTE1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTAgMjV2NDc1bDIwMCA3MDBoODAwbDE5OSAtNzAwbDEgLTQ3NXEwIC0xMSAtNyAtMTh0LTE4IC03aC0xMTUwcS0xMSAwIC0xOCA3dC03IDE4ek0yMDAgNTAwaDIwMGw1MCAtMjAwaDMwMGw1MCAyMDBoMjAwbC05NyA1MDBoLTYwNnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzIgMTIxLjUgLTI5M3QyOTIuNSAtMTIxdDI5Mi41IDEyMXQxMjEuNSAyOTNxMCAxNzEgLTEyMS41IDI5Mi41dC0yOTIuNSAxMjEuNXQtMjkyLjUgLTEyMS41dC0xMjEuNSAtMjkyLjV6TTUwMCAzOTd2NDAxIGwyOTcgLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMwOyIgZD0iTTIzIDYwMHEwIC0xMTggNDUuNSAtMjI0LjV0MTIzIC0xODR0MTg0IC0xMjN0MjI0LjUgLTQ1LjV0MjI0LjUgNDUuNXQxODQgMTIzdDEyMyAxODR0NDUuNSAyMjQuNWgtMTUwcTAgLTE3NyAtMTI1IC0zMDJ0LTMwMiAtMTI1dC0zMDIgMTI1dC0xMjUgMzAydDEyNSAzMDJ0MzAyIDEyNXExMzYgMCAyNDYgLTgxbC0xNDYgLTE0Nmg0MDB2NDAwbC0xNDUgLTE0NXEtMTU3IDEyMiAtMzU1IDEyMnEtMTE4IDAgLTIyNC41IC00NS41dC0xODQgLTEyMyB0LTEyMyAtMTg0dC00NS41IC0yMjQuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTIzIDYwMHEwIDExOCA0NS41IDIyNC41dDEyMyAxODR0MTg0IDEyM3QyMjQuNSA0NS41cTE5OCAwIDM1NSAtMTIybDE0NSAxNDV2LTQwMGgtNDAwbDE0NyAxNDdxLTExMiA4MCAtMjQ3IDgwcS0xNzcgMCAtMzAyIC0xMjV0LTEyNSAtMzAyaC0xNTB6TTEwMCAwdjQwMGg0MDBsLTE0NyAtMTQ3cTExMiAtODAgMjQ3IC04MHExNzcgMCAzMDIgMTI1dDEyNSAzMDJoMTUwcTAgLTExOCAtNDUuNSAtMjI0LjV0LTEyMyAtMTg0dC0xODQgLTEyMyB0LTIyNC41IC00NS41cS0xOTggMCAtMzU1IDEyMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEwMCAwaDExMDB2MTIwMGgtMTEwMHYtMTIwMHpNMjAwIDEwMHY5MDBoOTAwdi05MDBoLTkwMHpNMzAwIDIwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDQwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDYwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDgwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDIwMGg1MDB2MTAwaC01MDB2LTEwMHpNNTAwIDQwMHYxMDBoNTAwdi0xMDBoLTUwMHpNNTAwIDYwMHYxMDBoNTAwdi0xMDBoLTUwMHogTTUwMCA4MDB2MTAwaDUwMHYtMTAwaC01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik0wIDEwMHY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMHYyMDBxMCA4MiA1OSAxNDF0MTQxIDU5aDMwMHE4MiAwIDE0MSAtNTl0NTkgLTE0MXYtMjAwaDEwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC05MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek00MDAgODAwaDMwMHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDM0OyIgZD0iTTEwMCAwdjExMDBoMTAwdi0xMTAwaC0xMDB6TTMwMCA0MDBxNjAgNjAgMTI3LjUgODR0MTI3LjUgMTcuNXQxMjIgLTIzdDExOSAtMzB0MTEwIC0xMXQxMDMgNDJ0OTEgMTIwLjV2NTAwcS00MCAtODEgLTEwMS41IC0xMTUuNXQtMTI3LjUgLTI5LjV0LTEzOCAyNXQtMTM5LjUgNDB0LTEyNS41IDI1dC0xMDMgLTI5LjV0LTY1IC0xMTUuNXYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzU7IiBkPSJNMCAyNzVxMCAtMTEgNyAtMTh0MTggLTdoNTBxMTEgMCAxOCA3dDcgMTh2MzAwcTAgMTI3IDcwLjUgMjMxLjV0MTg0LjUgMTYxLjV0MjQ1IDU3dDI0NSAtNTd0MTg0LjUgLTE2MS41dDcwLjUgLTIzMS41di0zMDBxMCAtMTEgNyAtMTh0MTggLTdoNTBxMTEgMCAxOCA3dDcgMTh2MzAwcTAgMTE2IC00OS41IDIyN3QtMTMxIDE5Mi41dC0xOTIuNSAxMzF0LTIyNyA0OS41dC0yMjcgLTQ5LjV0LTE5Mi41IC0xMzF0LTEzMSAtMTkyLjUgdC00OS41IC0yMjd2LTMwMHpNMjAwIDIwdjQ2MHEwIDggNiAxNHQxNCA2aDE2MHE4IDAgMTQgLTZ0NiAtMTR2LTQ2MHEwIC04IC02IC0xNHQtMTQgLTZoLTE2MHEtOCAwIC0xNCA2dC02IDE0ek04MDAgMjB2NDYwcTAgOCA2IDE0dDE0IDZoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNjsiIGQ9Ik0wIDQwMGgzMDBsMzAwIC0yMDB2ODAwbC0zMDAgLTIwMGgtMzAwdi00MDB6TTY4OCA0NTlsMTQxIDE0MWwtMTQxIDE0MWw3MSA3MWwxNDEgLTE0MWwxNDEgMTQxbDcxIC03MWwtMTQxIC0xNDFsMTQxIC0xNDFsLTcxIC03MWwtMTQxIDE0MWwtMTQxIC0xNDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0wIDQwMGgzMDBsMzAwIC0yMDB2ODAwbC0zMDAgLTIwMGgtMzAwdi00MDB6TTcwMCA4NTdsNjkgNTNxMTExIC0xMzUgMTExIC0zMTBxMCAtMTY5IC0xMDYgLTMwMmwtNjcgNTRxODYgMTEwIDg2IDI0OHEwIDE0NiAtOTMgMjU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNMCA0MDF2NDAwaDMwMGwzMDAgMjAwdi04MDBsLTMwMCAyMDBoLTMwMHpNNzAyIDg1OGw2OSA1M3ExMTEgLTEzNSAxMTEgLTMxMHEwIC0xNzAgLTEwNiAtMzAzbC02NyA1NXE4NiAxMTAgODYgMjQ4cTAgMTQ1IC05MyAyNTd6TTg4OSA5NTFsNyAtOHExMjMgLTE1MSAxMjMgLTM0NHEwIC0xODkgLTExOSAtMzM5bC03IC04bDgxIC02Nmw2IDhxMTQyIDE3OCAxNDIgNDA1cTAgMjMwIC0xNDQgNDA4bC02IDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzOTsiIGQ9Ik0wIDBoNTAwdjUwMGgtMjAwdjEwMGgtMTAwdi0xMDBoLTIwMHYtNTAwek0wIDYwMGgxMDB2MTAwaDQwMHYxMDBoMTAwdjEwMGgtMTAwdjMwMGgtNTAwdi02MDB6TTEwMCAxMDB2MzAwaDMwMHYtMzAwaC0zMDB6TTEwMCA4MDB2MzAwaDMwMHYtMzAwaC0zMDB6TTIwMCAyMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTIwMCA5MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTUwMCA1MDB2MTAwaDMwMHYtMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMCBoLTEwMHYxMDBoMTAwdjIwMGgtMjAwek02MDAgMHYxMDBoMTAwdi0xMDBoLTEwMHpNNjAwIDEwMDBoMTAwdi0zMDBoMjAwdi0zMDBoMzAwdjIwMGgtMjAwdjEwMGgyMDB2NTAwaC02MDB2LTIwMHpNODAwIDgwMHYzMDBoMzAwdi0zMDBoLTMwMHpNOTAwIDB2MTAwaDMwMHYtMTAwaC0zMDB6TTkwMCA5MDB2MTAwaDEwMHYtMTAwaC0xMDB6TTExMDAgMjAwdjEwMGgxMDB2LTEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDA7IiBkPSJNMCAyMDBoMTAwdjEwMDBoLTEwMHYtMTAwMHpNMTAwIDB2MTAwaDMwMHYtMTAwaC0zMDB6TTIwMCAyMDB2MTAwMGgxMDB2LTEwMDBoLTEwMHpNNTAwIDB2OTFoMTAwdi05MWgtMTAwek01MDAgMjAwdjEwMDBoMjAwdi0xMDAwaC0yMDB6TTcwMCAwdjkxaDEwMHYtOTFoLTEwMHpNODAwIDIwMHYxMDAwaDEwMHYtMTAwMGgtMTAwek05MDAgMHY5MWgyMDB2LTkxaC0yMDB6TTEwMDAgMjAwdjEwMDBoMjAwdi0xMDAwaC0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0MTsiIGQ9Ik0wIDcwMGwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NGw3MDAgLTcwMGwtNTAwIC01MDB6TTE0OCA5NTNxMCAtNDIgMjkgLTcxcTMwIC0zMCA3MS41IC0zMHQ3MS41IDMwcTI5IDI5IDI5IDcxdC0yOSA3MXEtMzAgMzAgLTcxLjUgMzB0LTcxLjUgLTMwcS0yOSAtMjkgLTI5IC03MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTEgNzAwbDEgNDc1cTAgMTEgNyAxOHQxOCA3aDQ3NGw3MDAgLTcwMGwtNTAwIC01MDB6TTE0OCA5NTNxMCAtNDIgMzAgLTcxcTI5IC0zMCA3MSAtMzB0NzEgMzBxMzAgMjkgMzAgNzF0LTMwIDcxcS0yOSAzMCAtNzEgMzB0LTcxIC0zMHEtMzAgLTI5IC0zMCAtNzF6TTcwMSAxMjAwaDEwMGw3MDAgLTcwMGwtNTAwIC01MDBsLTUwIDUwbDQ1MCA0NTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0MzsiIGQ9Ik0xMDAgMHYxMDI1bDE3NSAxNzVoOTI1di0xMDAwbC0xMDAgLTEwMHYxMDAwaC03NTBsLTEwMCAtMTAwaDc1MHYtMTAwMGgtOTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDQ7IiBkPSJNMjAwIDBsNDUwIDQ0NGw0NTAgLTQ0M3YxMTUwcTAgMjAgLTE0LjUgMzV0LTM1LjUgMTVoLTgwMHEtMjEgMCAtMzUuNSAtMTV0LTE0LjUgLTM1di0xMTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDU7IiBkPSJNMCAxMDB2NzAwaDIwMGwxMDAgLTIwMGg2MDBsMTAwIDIwMGgyMDB2LTcwMGgtMjAwdjIwMGgtODAwdi0yMDBoLTIwMHpNMjUzIDgyOWw0MCAtMTI0aDU5Mmw2MiAxMjRsLTk0IDM0NnEtMiAxMSAtMTAgMTh0LTE4IDdoLTQ1MHEtMTAgMCAtMTggLTd0LTEwIC0xOHpNMjgxIDI0bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDUwMHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAtMy41IC0xN3QtMTUuNSAtN2gtNjAwIHEtMTAgMCAtMTUuNSA3dC0zLjUgMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik0wIDIwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xNTBxLTQgOCAtMTEuNSAyMS41dC0zMyA0OHQtNTMgNjF0LTY5IDQ4dC04My41IDIxLjVoLTIwMHEtNDEgMCAtODIgLTIwLjV0LTcwIC01MHQtNTIgLTU5dC0zNCAtNTAuNWwtMTIgLTIwaC0xNTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTYwMHogTTM1NiA1MDBxMCAxMDAgNzIgMTcydDE3MiA3MnQxNzIgLTcydDcyIC0xNzJ0LTcyIC0xNzJ0LTE3MiAtNzJ0LTE3MiA3MnQtNzIgMTcyek00OTQgNTAwcTAgLTQ0IDMxIC03NXQ3NSAtMzF0NzUgMzF0MzEgNzV0LTMxIDc1dC03NSAzMXQtNzUgLTMxdC0zMSAtNzV6TTkwMCA3MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik01MyAwaDM2NXY2NnEtNDEgMCAtNzIgMTF0LTQ5IDM4dDEgNzFsOTIgMjM0aDM5MWw4MiAtMjIycTE2IC00NSAtNS41IC04OC41dC03NC41IC00My41di02Nmg0MTd2NjZxLTM0IDEgLTc0IDQzcS0xOCAxOSAtMzMgNDJ0LTIxIDM3bC02IDEzbC0zODUgOTk4aC05M2wtMzk5IC0xMDA2cS0yNCAtNDggLTUyIC03NXEtMTIgLTEyIC0zMyAtMjV0LTM2IC0yMGwtMTUgLTd2LTY2ek00MTYgNTIxbDE3OCA0NTdsNDYgLTE0MGwxMTYgLTMxN2gtMzQwIHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTEwMCAwdjg5cTQxIDcgNzAuNSAzMi41dDI5LjUgNjUuNXY4MjdxMCAyOCAtMSAzOS41dC01LjUgMjZ0LTE1LjUgMjF0LTI5IDE0dC00OSAxNC41djcxbDQ3MSAtMXExMjAgMCAyMTMgLTg4dDkzIC0yMjhxMCAtNTUgLTExLjUgLTEwMS41dC0yOCAtNzR0LTMzLjUgLTQ3LjV0LTI4IC0yOGwtMTIgLTdxOCAtMyAyMS41IC05dDQ4IC0zMS41dDYwLjUgLTU4dDQ3LjUgLTkxLjV0MjEuNSAtMTI5cTAgLTg0IC01OSAtMTU2LjV0LTE0MiAtMTExIHQtMTYyIC0zOC41aC01MDB6TTQwMCAyMDBoMTYxcTg5IDAgMTUzIDQ4LjV0NjQgMTMyLjVxMCA5MCAtNjIuNSAxNTQuNXQtMTU2LjUgNjQuNWgtMTU5di00MDB6TTQwMCA3MDBoMTM5cTc2IDAgMTMwIDYxLjV0NTQgMTM4LjVxMCA4MiAtODQgMTMwLjV0LTIzOSA0OC41di0zNzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0OTsiIGQ9Ik0yMDAgMHY1N3E3NyA3IDEzNC41IDQwLjV0NjUuNSA4MC41bDE3MyA4NDlxMTAgNTYgLTEwIDc0dC05MSAzN3EtNiAxIC0xMC41IDIuNXQtOS41IDIuNXY1N2g0MjVsMiAtNTdxLTMzIC04IC02MiAtMjUuNXQtNDYgLTM3dC0yOS41IC0zOHQtMTcuNSAtMzAuNWwtNSAtMTJsLTEyOCAtODI1cS0xMCAtNTIgMTQgLTgydDk1IC0zNnYtNTdoLTUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTS03NSAyMDBoNzV2ODAwaC03NWwxMjUgMTY3bDEyNSAtMTY3aC03NXYtODAwaDc1bC0xMjUgLTE2N3pNMzAwIDkwMHYzMDBoMTUwaDcwMGgxNTB2LTMwMGgtNTBxMCAyOSAtOCA0OC41dC0xOC41IDMwdC0zMy41IDE1dC0zOS41IDUuNXQtNTAuNSAxaC0yMDB2LTg1MGwxMDAgLTUwdi0xMDBoLTQwMHYxMDBsMTAwIDUwdjg1MGgtMjAwcS0zNCAwIC01MC41IC0xdC00MCAtNS41dC0zMy41IC0xNXQtMTguNSAtMzB0LTguNSAtNDguNWgtNDl6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTE7IiBkPSJNMzMgNTFsMTY3IDEyNXYtNzVoODAwdjc1bDE2NyAtMTI1bC0xNjcgLTEyNXY3NWgtODAwdi03NXpNMTAwIDkwMXYzMDBoMTUwaDcwMGgxNTB2LTMwMGgtNTBxMCAyOSAtOCA0OC41dC0xOCAzMHQtMzMuNSAxNXQtNDAgNS41dC01MC41IDFoLTIwMHYtNjUwbDEwMCAtNTB2LTEwMGgtNDAwdjEwMGwxMDAgNTB2NjUwaC0yMDBxLTM0IDAgLTUwLjUgLTF0LTM5LjUgLTUuNXQtMzMuNSAtMTV0LTE4LjUgLTMwdC04IC00OC41aC01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDUyOyIgZD0iTTAgNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoMTEwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTExMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMCAzNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoODAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtODAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41IHYtMTAwek0wIDY1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMDAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0wIDk1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWg2MDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC02MDBxLTIxIDAgLTM1LjUgLTE0LjUgdC0xNC41IC0zNS41di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0wIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDExMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTAgNjUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDExMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41IHYtMTAwek0yMDAgMzUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDcwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTcwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0yMDAgOTUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDcwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTcwMHEtMjEgMCAtMzUuNSAtMTQuNSB0LTE0LjUgLTM1LjV2LTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTEwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMDAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMzAwIDM1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTgwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNNTAwIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTYwMCBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NTsiIGQ9Ik0wIDUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTExMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTExMDBxLTIxIDAgLTM1LjUgMTUgdC0xNC41IDM1ek0wIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0wIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMTAwIHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDU2OyIgZD0iTTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMCA2NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTAgOTUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMzAwIDUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtODAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtODAwIHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMzAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTgwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMzAwIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTUgaC04MDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NzsiIGQ9Ik0tMTAxIDUwMHYxMDBoMjAxdjc1bDE2NiAtMTI1bC0xNjYgLTEyNXY3NWgtMjAxek0zMDAgMGgxMDB2MTEwMGgtMTAwdi0xMTAwek01MDAgNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNjAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTYwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek01MDAgMzUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDMwMHEyMCAwIDM1IDE1dDE1IDM1IHYxMDBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtMzAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTUwMCA2NTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNTAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTUwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek01MDAgOTUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDEwMHEyMCAwIDM1IDE1dDE1IDM1djEwMCBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik0xIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDYwMHEyMCAwIDM1IDE1dDE1IDM1djEwMHEwIDIxIC0xNSAzNS41dC0zNSAxNC41aC02MDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMSAzNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoMzAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0xIDY1MCBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNTAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTUwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0xIDk1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMDBxMjAgMCAzNSAxNXQxNSAzNXYxMDBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTgwMSAwdjExMDBoMTAwdi0xMTAwIGgtMTAwek05MzQgNTUwbDE2NyAtMTI1djc1aDIwMHYxMDBoLTIwMHY3NXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDU5OyIgZD0iTTAgMjc1djY1MHEwIDMxIDIyIDUzdDUzIDIyaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzek05MDAgNjAwbDMwMCAzMDB2LTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDYwOyIgZD0iTTAgNDR2MTAxMnEwIDE4IDEzIDMxdDMxIDEzaDExMTJxMTkgMCAzMS41IC0xM3QxMi41IC0zMXYtMTAxMnEwIC0xOCAtMTIuNSAtMzF0LTMxLjUgLTEzaC0xMTEycS0xOCAwIC0zMSAxM3QtMTMgMzF6TTEwMCAyNjNsMjQ3IDE4MmwyOTggLTEzMWwtNzQgMTU2bDI5MyAzMThsMjM2IC0yODh2NTAwaC0xMDAwdi03Mzd6TTIwOCA3NTBxMCA1NiAzOSA5NXQ5NSAzOXQ5NSAtMzl0MzkgLTk1dC0zOSAtOTV0LTk1IC0zOXQtOTUgMzl0LTM5IDk1eiAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDYyOyIgZD0iTTE0OCA3NDVxMCAxMjQgNjAuNSAyMzEuNXQxNjUgMTcydDIyNi41IDY0LjVxMTIzIDAgMjI3IC02M3QxNjQuNSAtMTY5LjV0NjAuNSAtMjI5LjV0LTczIC0yNzJxLTczIC0xMTQgLTE2Ni41IC0yMzd0LTE1MC41IC0xODlsLTU3IC02NnEtMTAgOSAtMjcgMjZ0LTY2LjUgNzAuNXQtOTYgMTA5dC0xMDQgMTM1LjV0LTEwMC41IDE1NXEtNjMgMTM5IC02MyAyNjJ6TTM0MiA3NzJxMCAtMTA3IDc1LjUgLTE4Mi41dDE4MS41IC03NS41IHExMDcgMCAxODIuNSA3NS41dDc1LjUgMTgyLjV0LTc1LjUgMTgydC0xODIuNSA3NXQtMTgyIC03NS41dC03NSAtMTgxLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MzsiIGQ9Ik0xIDYwMHEwIDEyMiA0Ny41IDIzM3QxMjcuNSAxOTF0MTkxIDEyNy41dDIzMyA0Ny41dDIzMyAtNDcuNXQxOTEgLTEyNy41dDEyNy41IC0xOTF0NDcuNSAtMjMzdC00Ny41IC0yMzN0LTEyNy41IC0xOTF0LTE5MSAtMTI3LjV0LTIzMyAtNDcuNXQtMjMzIDQ3LjV0LTE5MSAxMjcuNXQtMTI3LjUgMTkxdC00Ny41IDIzM3pNMTczIDYwMHEwIC0xNzcgMTI1LjUgLTMwMnQzMDEuNSAtMTI1djg1NHEtMTc2IDAgLTMwMS41IC0xMjUgdC0xMjUuNSAtMzAyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjQ7IiBkPSJNMTE3IDQwNnEwIDk0IDM0IDE4NnQ4OC41IDE3Mi41dDExMiAxNTl0MTE1IDE3N3Q4Ny41IDE5NC41cTIxIC03MSA1Ny41IC0xNDIuNXQ3NiAtMTMwLjV0ODMgLTExOC41dDgyIC0xMTd0NzAgLTExNnQ1MCAtMTI1LjV0MTguNSAtMTM2cTAgLTg5IC0zOSAtMTY1LjV0LTEwMiAtMTI2LjV0LTE0MCAtNzkuNXQtMTU2IC0zMy41cS0xMTQgNiAtMjExLjUgNTN0LTE2MS41IDEzOXQtNjQgMjEwek0yNDMgNDE0cTE0IC04MiA1OS41IC0xMzYgdDEzNi41IC04MGwxNiA5OHEtNyA2IC0xOCAxN3QtMzQgNDh0LTMzIDc3cS0xNSA3MyAtMTQgMTQzLjV0MTAgMTIyLjVsOSA1MXEtOTIgLTExMCAtMTE5LjUgLTE4NXQtMTIuNSAtMTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41cTM2NiAtNiAzOTcgLTE0bC0xODYgLTE4NmgtMzExcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTI1bDIwMCAyMDB2LTIyNXEwIC0xNjUgLTExNy41IC0yODIuNXQtMjgyLjUgLTExNy41aC0zMDBxLTE2NSAwIC0yODIuNSAxMTcuNSB0LTExNy41IDI4Mi41ek00MzYgMzQxbDE2MSA1MGw0MTIgNDEybC0xMTQgMTEzbC00MDUgLTQwNXpNOTk1IDEwMTVsMTEzIC0xMTNsMTEzIDExM2wtMjEgODVsLTkyIDI4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjY7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41aDI2MWwyIC04MHEtMTMzIC0zMiAtMjE4IC0xMjBoLTE0NXEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41bDIwMCAxNTN2LTUzcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41dC0xMTcuNSAyODIuNSB6TTQyMyA1MjRxMzAgMzggODEuNSA2NHQxMDMgMzUuNXQ5OSAxNHQ3Ny41IDMuNWwyOSAtMXYtMjA5bDM2MCAzMjRsLTM1OSAzMTh2LTIxNnEtNyAwIC0xOSAtMXQtNDggLTh0LTY5LjUgLTE4LjV0LTc2LjUgLTM3dC03Ni41IC01OXQtNjIgLTg4dC0zOS41IC0xMjEuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTAgNDAwdjMwMHEwIDE2NSAxMTcuNSAyODIuNXQyODIuNSAxMTcuNWgzMDBxNjEgMCAxMjcgLTIzbC0xNzggLTE3N2gtMzQ5cS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjlsMjAwIDIwMHYtMTY5cTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41IHQtMTE3LjUgMjgyLjV6TTM0MiA2MzJsMjgzIC0yODRsNTY3IDU2N2wtMTM3IDEzN2wtNDMwIC00MzFsLTE0NiAxNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2ODsiIGQ9Ik0wIDYwM2wzMDAgMjk2di0xOThoMjAwdjIwMGgtMjAwbDMwMCAzMDBsMjk1IC0zMDBoLTE5NXYtMjAwaDIwMHYxOThsMzAwIC0yOTZsLTMwMCAtMzAwdjE5OGgtMjAwdi0yMDBoMTk1bC0yOTUgLTMwMGwtMzAwIDMwMGgyMDB2MjAwaC0yMDB2LTE5OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTIwMCA1MHYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQzN2w1MDAgNDg3di0xMTAwbC01MDAgNDg4di00MzhxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MDsiIGQ9Ik0wIDUwdjEwMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM3bDUwMCA0ODd2LTQ4N2w1MDAgNDg3di0xMTAwbC01MDAgNDg4di00ODhsLTUwMCA0ODh2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEzNiA1NTBsNTY0IDU1MHYtNDg3bDUwMCA0ODd2LTExMDBsLTUwMCA0ODh2LTQ4OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDcyOyIgZD0iTTIwMCAwbDkwMCA1NTBsLTkwMCA1NTB2LTExMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MzsiIGQ9Ik0yMDAgMTUwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djgwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMjAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di04MDB6TTYwMCAxNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41aDIwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2ODAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0yMDAgcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di04MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NDsiIGQ9Ik0yMDAgMTUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDgwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXY4MDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTgwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtODAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzU7IiBkPSJNMCAwdjExMDBsNTAwIC00ODd2NDg3bDU2NCAtNTUwbC01NjQgLTU1MHY0ODh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0wIDB2MTEwMGw1MDAgLTQ4N3Y0ODdsNTAwIC00ODd2NDM3cTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC01MDAgLTQ4OHY0ODh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik0zMDAgMHYxMTAwbDUwMCAtNDg3djQzN3EwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQzOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDc4OyIgZD0iTTEwMCAyNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0xMDAgNTAwaDExMDBsLTU1MCA1NjR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3OTsiIGQ9Ik0xODUgNTk5bDU5MiAtNTkybDI0MCAyNDBsLTM1MyAzNTNsMzUzIDM1M2wtMjQwIDI0MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgwOyIgZD0iTTI3MiAxOTRsMzUzIDM1M2wtMzUzIDM1M2wyNDEgMjQwbDU3MiAtNTcxbDIxIC0yMmwtMSAtMXYtMWwtNTkyIC01OTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MTsiIGQ9Ik0zIDYwMHEwIDE2MiA4MCAyOTkuNXQyMTcuNSAyMTcuNXQyOTkuNSA4MHQyOTkuNSAtODB0MjE3LjUgLTIxNy41dDgwIC0yOTkuNXQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMjk5LjUgODB0LTIxNy41IDIxNy41dC04MCAyOTkuNXpNMzAwIDUwMGgyMDB2LTIwMGgyMDB2MjAwaDIwMHYyMDBoLTIwMHYyMDBoLTIwMHYtMjAwaC0yMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgyOyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0yOTkuNSA4MHQtMjE3LjUgMjE3LjV0LTgwIDI5OS41ek0zMDAgNTAwaDYwMHYyMDBoLTYwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODM7IiBkPSJNMyA2MDBxMCAxNjIgODAgMjk5LjV0MjE3LjUgMjE3LjV0Mjk5LjUgODB0Mjk5LjUgLTgwdDIxNy41IC0yMTcuNXQ4MCAtMjk5LjV0LTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTI0NiA0NTlsMjEzIC0yMTNsMTQxIDE0MmwxNDEgLTE0MmwyMTMgMjEzbC0xNDIgMTQxbDE0MiAxNDFsLTIxMyAyMTJsLTE0MSAtMTQxbC0xNDEgMTQybC0yMTIgLTIxM2wxNDEgLTE0MSB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik0zIDYwMHEwIDE2MiA4MCAyOTkuNXQyMTcuNSAyMTcuNXQyOTkuNSA4MHQyOTkuNSAtODB0MjE3LjUgLTIxNy41dDgwIC0yOTkuNXQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMjk5LjUgODB0LTIxNy41IDIxNy41dC04MCAyOTkuNXpNMjcwIDU1MWwyNzYgLTI3N2w0MTEgNDExbC0xNzUgMTc0bC0yMzYgLTIzNmwtMTAyIDEwMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDg1OyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0yOTkuNSA4MHQtMjE3LjUgMjE3LjV0LTgwIDI5OS41ek0zNjQgNzAwaDE0M3E0IDAgMTEuNSAtMXQxMSAtMXQ2LjUgM3QzIDl0MSAxMXQzLjUgOC41dDMuNSA2dDUuNSA0dDYuNSAyLjV0OSAxLjV0OSAwLjVoMTEuNWgxMi41IHExOSAwIDMwIC0xMHQxMSAtMjZxMCAtMjIgLTQgLTI4dC0yNyAtMjJxLTUgLTEgLTEyLjUgLTN0LTI3IC0xMy41dC0zNCAtMjd0LTI2LjUgLTQ2dC0xMSAtNjguNWgyMDBxNSAzIDE0IDh0MzEuNSAyNS41dDM5LjUgNDUuNXQzMSA2OXQxNCA5NHEwIDUxIC0xNy41IDg5dC00MiA1OHQtNTguNSAzMnQtNTguNSAxNXQtNTEuNSAzcS01MCAwIC05MC41IC0xMnQtNzUgLTM4LjV0LTUzLjUgLTc0LjV0LTE5IC0xMTR6TTUwMCAzMDBoMjAwdjEwMGgtMjAwIHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODY7IiBkPSJNMyA2MDBxMCAxNjIgODAgMjk5LjV0MjE3LjUgMjE3LjV0Mjk5LjUgODB0Mjk5LjUgLTgwdDIxNy41IC0yMTcuNXQ4MCAtMjk5LjV0LTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTQwMCAzMDBoNDAwdjEwMGgtMTAwdjMwMGgtMzAwdi0xMDBoMTAwdi0yMDBoLTEwMHYtMTAwek01MDAgODAwaDIwMHYxMDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODc7IiBkPSJNMCA1MDB2MjAwaDE5NXEzMSAxMjUgOTguNSAxOTkuNXQyMDYuNSAxMDAuNXYyMDBoMjAwdi0yMDBxNTQgLTIwIDExMyAtNjB0MTEyLjUgLTEwNS41dDcxLjUgLTEzNC41aDIwM3YtMjAwaC0yMDNxLTI1IC0xMDIgLTExNi41IC0xODZ0LTE4MC41IC0xMTd2LTE5N2gtMjAwdjE5N3EtMTQwIDI3IC0yMDggMTAyLjV0LTk4IDIwMC41aC0xOTR6TTI5MCA1MDBxMjQgLTczIDc5LjUgLTEyNy41dDEzMC41IC03OC41djIwNmgyMDB2LTIwNiBxMTQ5IDQ4IDIwMSAyMDZoLTIwMXYyMDBoMjAwcS0yNSA3NCAtNzUuNSAxMjd0LTEyNC41IDc3di0yMDRoLTIwMHYyMDNxLTc1IC0yMyAtMTMwIC03N3QtNzkgLTEyNmgyMDl2LTIwMGgtMjEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODg7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MSAxMjEuNSAtMjkyLjV0MjkyLjUgLTEyMS41dDI5Mi41IDEyMS41dDEyMS41IDI5Mi41dC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek0zNTYgNDY1bDEzNSAxMzUgbC0xMzUgMTM1bDEwOSAxMDlsMTM1IC0xMzVsMTM1IDEzNWwxMDkgLTEwOWwtMTM1IC0xMzVsMTM1IC0xMzVsLTEwOSAtMTA5bC0xMzUgMTM1bC0xMzUgLTEzNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDg5OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzIyIDUzN2wxNDEgMTQxIGw4NyAtODdsMjA0IDIwNWwxNDIgLTE0MmwtMzQ2IC0zNDV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MDsiIGQ9Ik00IDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4NiA2MDBxMCAtMTE1IDYyIC0yMTVsNTY4IDU2N3EtMTAwIDYyIC0yMTYgNjJxLTE3MSAwIC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzkxIDI0NXE5NyAtNTkgMjA5IC01OXExNzEgMCAyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNSBxMCAxMTIgLTU5IDIwOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTAgNTQ3bDYwMCA0NTN2LTMwMGg2MDB2LTMwMGgtNjAwdi0zMDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MjsiIGQ9Ik0wIDQwMHYzMDBoNjAwdjMwMGw2MDAgLTQ1M2wtNjAwIC00NDh2MzAxaC02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik0yMDQgNjAwbDQ1MCA2MDBsNDQ0IC02MDBoLTI5OHYtNjAwaC0zMDB2NjAwaC0yOTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NDsiIGQ9Ik0xMDQgNjAwaDI5NnY2MDBoMzAwdi02MDBoMjk4bC00NDkgLTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDk1OyIgZD0iTTAgMjAwcTYgMTMyIDQxIDIzOC41dDEwMy41IDE5M3QxODQgMTM4dDI3MS41IDU5LjV2MjcxbDYwMCAtNDUzbC02MDAgLTQ0OHYzMDFxLTk1IC0yIC0xODMgLTIwdC0xNzAgLTUydC0xNDcgLTkyLjV0LTEwMCAtMTM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NjsiIGQ9Ik0wIDB2NDAwbDEyOSAtMTI5bDI5NCAyOTRsMTQyIC0xNDJsLTI5NCAtMjk0bDEyOSAtMTI5aC00MDB6TTYzNSA3NzdsMTQyIC0xNDJsMjk0IDI5NGwxMjkgLTEyOXY0MDBoLTQwMGwxMjkgLTEyOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTM0IDE3NmwyOTUgMjk1bC0xMjkgMTI5aDQwMHYtNDAwbC0xMjkgMTMwbC0yOTUgLTI5NXpNNjAwIDYwMHY0MDBsMTI5IC0xMjlsMjk1IDI5NWwxNDIgLTE0MWwtMjk1IC0yOTVsMTI5IC0xMzBoLTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTIzIDYwMHEwIDExOCA0NS41IDIyNC41dDEyMyAxODR0MTg0IDEyM3QyMjQuNSA0NS41dDIyNC41IC00NS41dDE4NCAtMTIzdDEyMyAtMTg0dDQ1LjUgLTIyNC41dC00NS41IC0yMjQuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjQuNSAtNDUuNXQtMjI0LjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjQuNXpNNDU2IDg1MWw1OCAtMzAycTQgLTIwIDIxLjUgLTM0LjV0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNSB0MjEuNSAzNC41bDU4IDMwMnE0IDIwIC04IDM0LjV0LTMyIDE0LjVoLTIwN3EtMjEgMCAtMzMgLTE0LjV0LTggLTM0LjV6TTUwMCAzMDBoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwMjsiIGQ9Ik0wIDgwMGgxMDB2LTIwMGg0MDB2MzAwaDIwMHYtMzAwaDQwMHYyMDBoMTAwdjEwMGgtMTExcTEgMSAxIDYuNXQtMS41IDE1dC0zLjUgMTcuNWwtMzQgMTcycS0xMSAzOSAtNDEuNSA2M3QtNjkuNSAyNHEtMzIgMCAtNjEgLTE3bC0yMzkgLTE0NHEtMjIgLTEzIC00MCAtMzVxLTE5IDI0IC00MCAzNmwtMjM4IDE0NHEtMzMgMTggLTYyIDE4cS0zOSAwIC02OS41IC0yM3QtNDAuNSAtNjFsLTM1IC0xNzdxLTIgLTggLTMgLTE4dC0xIC0xNXYtNiBoLTExMXYtMTAwek0xMDAgMGg0MDB2NDAwaC00MDB2LTQwMHpNMjAwIDkwMHEtMyAwIDE0IDQ4dDM2IDk2bDE4IDQ3bDIxMyAtMTkxaC0yODF6TTcwMCAwdjQwMGg0MDB2LTQwMGgtNDAwek03MzEgOTAwbDIwMiAxOTdxNSAtMTIgMTIgLTMyLjV0MjMgLTY0dDI1IC03MnQ3IC0yOC41aC0yNjl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwMzsiIGQ9Ik0wIC0yMnYxNDNsMjE2IDE5M3EtOSA1MyAtMTMgODN0LTUuNSA5NHQ5IDExM3QzOC41IDExNHQ3NCAxMjRxNDcgNjAgOTkuNSAxMDIuNXQxMDMgNjh0MTI3LjUgNDh0MTQ1LjUgMzcuNXQxODQuNSA0My41dDIyMCA1OC41cTAgLTE4OSAtMjIgLTM0M3QtNTkgLTI1OHQtODkgLTE4MS41dC0xMDguNSAtMTIwdC0xMjIgLTY4dC0xMjUuNSAtMzB0LTEyMS41IC0xLjV0LTEwNy41IDEyLjV0LTg3LjUgMTd0LTU2LjUgNy41bC05OSAtNTV6IE0yMzguNSAzMDAuNXExOS41IC02LjUgODYuNSA3Ni41cTU1IDY2IDM2NyAyMzRxNzAgMzggMTE4LjUgNjkuNXQxMDIgNzl0OTkgMTExLjV0ODYuNSAxNDhxMjIgNTAgMjQgNjB0LTYgMTlxLTcgNSAtMTcgNXQtMjYuNSAtMTQuNXQtMzMuNSAtMzkuNXEtMzUgLTUxIC0xMTMuNSAtMTA4LjV0LTEzOS41IC04OS41bC02MSAtMzJxLTM2OSAtMTk3IC00NTggLTQwMXEtNDggLTExMSAtMjguNSAtMTE3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik0xMTEgNDA4cTAgLTMzIDUgLTYzcTkgLTU2IDQ0IC0xMTkuNXQxMDUgLTEwOC41cTMxIC0yMSA2NCAtMTZ0NjIgMjMuNXQ1NyA0OS41dDQ4IDYxLjV0MzUgNjAuNXEzMiA2NiAzOSAxODQuNXQtMTMgMTU3LjVxNzkgLTgwIDEyMiAtMTY0dDI2IC0xODRxLTUgLTMzIC0yMC41IC02OS41dC0zNy41IC04MC41cS0xMCAtMTkgLTE0LjUgLTI5dC0xMiAtMjZ0LTkgLTIzLjV0LTMgLTE5dDIuNSAtMTUuNXQxMSAtOS41dDE5LjUgLTV0MzAuNSAyLjUgdDQyIDhxNTcgMjAgOTEgMzR0ODcuNSA0NC41dDg3IDY0dDY1LjUgODguNXQ0NyAxMjJxMzggMTcyIC00NC41IDM0MS41dC0yNDYuNSAyNzguNXEyMiAtNDQgNDMgLTEyOXEzOSAtMTU5IC0zMiAtMTU0cS0xNSAyIC0zMyA5cS03OSAzMyAtMTIwLjUgMTAwdC00NCAxNzUuNXQ0OC41IDI1Ny41cS0xMyAtOCAtMzQgLTIzLjV0LTcyLjUgLTY2LjV0LTg4LjUgLTEwNS41dC02MCAtMTM4dC04IC0xNjYuNXEyIC0xMiA4IC00MS41dDggLTQzdDYgLTM5LjUgdDMuNSAtMzkuNXQtMSAtMzMuNXQtNiAtMzEuNXQtMTMuNSAtMjR0LTIxIC0yMC41dC0zMSAtMTJxLTM4IC0xMCAtNjcgMTN0LTQwLjUgNjEuNXQtMTUgODEuNXQxMC41IDc1cS01MiAtNDYgLTgzLjUgLTEwMXQtMzkgLTEwN3QtNy41IC04NXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTA1OyIgZD0iTS02MSA2MDBsMjYgNDBxNiAxMCAyMCAzMHQ0OSA2My41dDc0LjUgODUuNXQ5NyA5MHQxMTYuNSA4My41dDEzMi41IDU5dDE0NS41IDIzLjV0MTQ1LjUgLTIzLjV0MTMyLjUgLTU5dDExNi41IC04My41dDk3IC05MHQ3NC41IC04NS41dDQ5IC02My41dDIwIC0zMGwyNiAtNDBsLTI2IC00MHEtNiAtMTAgLTIwIC0zMHQtNDkgLTYzLjV0LTc0LjUgLTg1LjV0LTk3IC05MHQtMTE2LjUgLTgzLjV0LTEzMi41IC01OXQtMTQ1LjUgLTIzLjUgdC0xNDUuNSAyMy41dC0xMzIuNSA1OXQtMTE2LjUgODMuNXQtOTcgOTB0LTc0LjUgODUuNXQtNDkgNjMuNXQtMjAgMzB6TTEyMCA2MDBxNyAtMTAgNDAuNSAtNTh0NTYgLTc4LjV0NjggLTc3LjV0ODcuNSAtNzV0MTAzIC00OS41dDEyNSAtMjEuNXQxMjMuNSAyMHQxMDAuNSA0NS41dDg1LjUgNzEuNXQ2Ni41IDc1LjV0NTggODEuNXQ0NyA2NnEtMSAxIC0yOC41IDM3LjV0LTQyIDU1dC00My41IDUzdC01Ny41IDYzLjV0LTU4LjUgNTQgcTQ5IC03NCA0OSAtMTYzcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHQtMjEyIDg4dC04OCAyMTJxMCA4NSA0NiAxNThxLTEwMiAtODcgLTIyNiAtMjU4ek0zNzcgNjU2cTQ5IC0xMjQgMTU0IC0xOTFsMTA1IDEwNXEtMzcgMjQgLTc1IDcydC01NyA4NGwtMjAgMzZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik0tNjEgNjAwbDI2IDQwcTYgMTAgMjAgMzB0NDkgNjMuNXQ3NC41IDg1LjV0OTcgOTB0MTE2LjUgODMuNXQxMzIuNSA1OXQxNDUuNSAyMy41cTYxIDAgMTIxIC0xN2wzNyAxNDJoMTQ4bC0zMTQgLTEyMDBoLTE0OGwzNyAxNDNxLTgyIDIxIC0xNjUgNzEuNXQtMTQwIDEwMnQtMTA5LjUgMTEydC03MiA4OC41dC0yOS41IDQzek0xMjAgNjAwcTIxMCAtMjgyIDM5MyAtMzM2bDM3IDE0MXEtMTA3IDE4IC0xNzguNSAxMDEuNXQtNzEuNSAxOTMuNSBxMCA4NSA0NiAxNThxLTEwMiAtODcgLTIyNiAtMjU4ek0zNzcgNjU2cTQ5IC0xMjQgMTU0IC0xOTFsNDcgNDdsMjMgODdxLTMwIDI4IC01OSA2OXQtNDQgNjhsLTE0IDI2ek03ODAgMTYxbDM4IDE0NXEyMiAxNSA0NC41IDM0dDQ2IDQ0dDQwLjUgNDR0NDEgNTAuNXQzMy41IDQzLjV0MzMgNDR0MjQuNSAzNHEtOTcgMTI3IC0xNDAgMTc1bDM5IDE0NnE2NyAtNTQgMTMxLjUgLTEyNS41dDg3LjUgLTEwMy41dDM2IC01MmwyNiAtNDBsLTI2IC00MCBxLTcgLTEyIC0yNS41IC0zOHQtNjMuNSAtNzkuNXQtOTUuNSAtMTAyLjV0LTEyNCAtMTAwdC0xNDYuNSAtNzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNzsiIGQ9Ik0tOTcuNSAzNHExMy41IC0zNCA1MC41IC0zNGgxMjk0cTM3IDAgNTAuNSAzNS41dC03LjUgNjcuNWwtNjQyIDEwNTZxLTIwIDM0IC00OCAzNi41dC00OCAtMjkuNWwtNjQyIC0xMDY2cS0yMSAtMzIgLTcuNSAtNjZ6TTE1NSAyMDBsNDQ1IDcyM2w0NDUgLTcyM2gtMzQ1djEwMGgtMjAwdi0xMDBoLTM0NXpNNTAwIDYwMGwxMDAgLTMwMGwxMDAgMzAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik0xMDAgMjYydjQxcTAgMjAgMTEgNDQuNXQyNiAzOC41bDM2MyAzMjV2MzM5cTAgNjIgNDQgMTA2dDEwNiA0NHQxMDYgLTQ0dDQ0IC0xMDZ2LTMzOWwzNjMgLTMyNXExNSAtMTQgMjYgLTM4LjV0MTEgLTQ0LjV2LTQxcTAgLTIwIC0xMiAtMjYuNXQtMjkgNS41bC0zNTkgMjQ5di0yNjNxMTAwIC05MSAxMDAgLTExM3YtNjRxMCAtMjAgLTEzIC0yOC41dC0zMiAwLjVsLTk0IDc4aC0yMjJsLTk0IC03OHEtMTkgLTkgLTMyIC0wLjV0LTEzIDI4LjUgdjY0cTAgMjIgMTAwIDExM3YyNjNsLTM1OSAtMjQ5cS0xNyAtMTIgLTI5IC01LjV0LTEyIDI2LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik0wIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDEwMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2NzUwaC0xMTAwdi03NTB6TTAgOTAwaDExMDB2MTUwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xNTB2MTAwaC0xMDB2LTEwMGgtNTAwdjEwMGgtMTAwdi0xMDBoLTE1MHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTUwek0xMDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwek0xMDAgMzAwdjEwMGgxMDB2LTEwMGgtMTAweiBNMTAwIDUwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDUwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDUwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNzAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNzAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNzAwIDUwMCB2MTAwaDEwMHYtMTAwaC0xMDB6TTkwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTkwMCAzMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTkwMCA1MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExMDsiIGQ9Ik0wIDIwMHYyMDBoMjU5bDYwMCA2MDBoMjQxdjE5OGwzMDAgLTI5NWwtMzAwIC0zMDB2MTk3aC0xNTlsLTYwMCAtNjAwaC0zNDF6TTAgODAwaDI1OWwxMjIgLTEyMmwxNDEgMTQybC0xODEgMTgwaC0zNDF2LTIwMHpNNjc4IDM4MWwxNDEgMTQybDEyMiAtMTIzaDE1OXYxOThsMzAwIC0yOTVsLTMwMCAtMzAwdjE5N2gtMjQxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMCA0MDB2NjAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTU5NmwtMzA0IC0zMDB2MzAwaC0xMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTAwIDYwMHYyMDBoMzAwdi0yNTBxMCAtMTEzIDYgLTE0NXExNyAtOTIgMTAyIC0xMTdxMzkgLTExIDkyIC0xMXEzNyAwIDY2LjUgNS41dDUwIDE1LjV0MzYgMjR0MjQgMzEuNXQxNCAzNy41dDcgNDJ0Mi41IDQ1dDAgNDd2MjV2MjUwaDMwMHYtMjAwcTAgLTQyIC0zIC04M3QtMTUgLTEwNHQtMzEuNSAtMTE2dC01OCAtMTA5LjV0LTg5IC05Ni41dC0xMjkgLTY1LjV0LTE3NC41IC0yNS41dC0xNzQuNSAyNS41dC0xMjkgNjUuNXQtODkgOTYuNSB0LTU4IDEwOS41dC0zMS41IDExNnQtMTUgMTA0dC0zIDgzek0xMDAgOTAwdjMwMGgzMDB2LTMwMGgtMzAwek04MDAgOTAwdjMwMGgzMDB2LTMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNLTMwIDQxMWwyMjcgLTIyN2wzNTIgMzUzbDM1MyAtMzUzbDIyNiAyMjdsLTU3OCA1Nzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExNDsiIGQ9Ik03MCA3OTdsNTgwIC01NzlsNTc4IDU3OWwtMjI2IDIyN2wtMzUzIC0zNTNsLTM1MiAzNTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExNTsiIGQ9Ik0tMTk4IDcwMGwyOTkgMjgzbDMwMCAtMjgzaC0yMDN2LTQwMGgzODVsMjE1IC0yMDBoLTgwMHY2MDBoLTE5NnpNNDAyIDEwMDBsMjE1IC0yMDBoMzgxdi00MDBoLTE5OGwyOTkgLTI4M2wyOTkgMjgzaC0yMDB2NjAwaC03OTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExNjsiIGQ9Ik0xOCA5MzlxLTUgMjQgMTAgNDJxMTQgMTkgMzkgMTloODk2bDM4IDE2MnE1IDE3IDE4LjUgMjcuNXQzMC41IDEwLjVoOTRxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXQtMTUgLTM1LjV0LTM1IC0xNC41aC01NGwtMjAxIC05NjFxLTIgLTQgLTYgLTEwLjV0LTE5IC0xNy41dC0zMyAtMTFoLTMxdi01MHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1dC0zNS41IDE1dC0xNC41IDM1djUwaC0zMDB2LTUwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTUgdC0zNS41IDE1dC0xNC41IDM1djUwaC01MHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTM1bDQ4IDIwMGgtNjMzcS0zMiAwIC01NC41IDIxdC0yNy41IDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMCAwdjgwMGgxMjAwdi04MDBoLTEyMDB6TTAgOTAwdjEwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNWg1MDB2LTEwMGgtMTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTEgMGwzMDAgNzAwaDEyMDBsLTMwMCAtNzAwaC0xMjAwek0xIDQwMHY2MDBoMjAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgzMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjVoNTAwdi0yMDBoLTEwMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExOTsiIGQ9Ik0zMDIgMzAwaDE5OHY2MDBoLTE5OGwyOTggMzAwbDI5OCAtMzAwaC0xOTh2LTYwMGgxOThsLTI5OCAtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNMCA2MDBsMzAwIDI5OHYtMTk4aDYwMHYxOThsMzAwIC0yOThsLTMwMCAtMjk3djE5N2gtNjAwdi0xOTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0wIDEwMHYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTMxIDQwMGwxNzIgNzM5cTUgMjIgMjMgNDEuNXQzOCAxOS41aDY3MnExOSAwIDM3LjUgLTIyLjV0MjMuNSAtNDUuNWwxNzIgLTczMmgtMTEzOHpNODAwIDEwMGgxMDB2MTAwaC0xMDB2LTEwMHogTTEwMDAgMTAwaDEwMHYxMDBoLTEwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjI7IiBkPSJNLTEwMSA2MDB2NTBxMCAyNCAyNSA0OXQ1MCAzOGwyNSAxM3YtMjUwbC0xMSA1LjV0LTI0IDE0dC0zMCAyMS41dC0yNCAyNy41dC0xMSAzMS41ek0xMDAgNTAwdjI1MHY4djh2N3QwLjUgN3QxLjUgNS41dDIgNXQzIDR0NC41IDMuNXQ2IDEuNXQ3LjUgMC41aDIwMGw2NzUgMjUwdi04NTBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMiAtMTIgLTMgLTE3LjV0LTExIC02dC0yMSAtMC41aC04aC04M3EtMjAgMCAtMzQuNSAxNHQtMTguNSAzNSBxLTU1IDMzNyAtNTUgMzUxek0xMTAwIDIwMHY4NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41cTIwIDAgMzUgLTE0LjV0MTUgLTM1LjV2LTg1MHEwIC0yMCAtMTUgLTM1dC0zNSAtMTVxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMzsiIGQ9Ik03NCAzNTBxMCAyMSAxMy41IDM1LjV0MzMuNSAxNC41aDE4bDExNyAxNzNsNjMgMzI3cTE1IDc3IDc2IDE0MHQxNDQgODNsLTE4IDMycS02IDE5IDMgMzJ0MjkgMTNoOTRxMjAgMCAyOSAtMTAuNXQzIC0yOS41cS0xOCAtMzYgLTE4IC0zN3E4MyAtMTkgMTQ0IC04Mi41dDc2IC0xNDAuNWw2MyAtMzI3bDExOCAtMTczaDE3cTIwIDAgMzMuNSAtMTQuNXQxMy41IC0zNS41cTAgLTIwIC0xMyAtNDB0LTMxIC0yN3EtOCAtMyAtMjMgLTguNSB0LTY1IC0yMHQtMTAzIC0yNXQtMTMyLjUgLTE5LjV0LTE1OC41IC05cS0xMjUgMCAtMjQ1LjUgMjAuNXQtMTc4LjUgNDAuNWwtNTggMjBxLTE4IDcgLTMxIDI3LjV0LTEzIDQwLjV6TTQ5NyAxMTBxMTIgLTQ5IDQwIC03OS41dDYzIC0zMC41dDYzIDMwLjV0MzkgNzkuNXEtNDggLTYgLTEwMiAtNnQtMTAzIDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNDsiIGQ9Ik0yMSA0NDVsMjMzIC00NWwtNzggLTIyNGwyMjQgNzhsNDUgLTIzM2wxNTUgMTc5bDE1NSAtMTc5bDQ1IDIzM2wyMjQgLTc4bC03OCAyMjRsMjM0IDQ1bC0xODAgMTU1bDE4MCAxNTZsLTIzNCA0NGw3OCAyMjVsLTIyNCAtNzhsLTQ1IDIzM2wtMTU1IC0xODBsLTE1NSAxODBsLTQ1IC0yMzNsLTIyNCA3OGw3OCAtMjI1bC0yMzMgLTQ0bDE3OSAtMTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjU7IiBkPSJNMCAyMDBoMjAwdjYwMGgtMjAwdi02MDB6TTMwMCAyNzVxMCAtNzUgMTAwIC03NWg2MXExMjQgLTEwMCAxMzkgLTEwMGgyNTBxNDYgMCA4MyA1N2wyMzggMzQ0cTI5IDMxIDI5IDc0djEwMHEwIDQ0IC0zMC41IDg0LjV0LTY5LjUgNDAuNWgtMzI4cTI4IDExOCAyOCAxMjV2MTUwcTAgNDQgLTMwLjUgODQuNXQtNjkuNSA0MC41aC01MHEtMjcgMCAtNTEgLTIwdC0zOCAtNDhsLTk2IC0xOThsLTE0NSAtMTk2cS0yMCAtMjYgLTIwIC02M3YtNDAweiBNNDAwIDMwMHYzNzVsMTUwIDIxM2wxMDAgMjEyaDUwdi0xNzVsLTUwIC0yMjVoNDUwdi0xMjVsLTI1MCAtMzc1aC0yMTRsLTEzNiAxMDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTAgNDAwdjYwMGgyMDB2LTYwMGgtMjAwek0zMDAgNTI1djQwMHEwIDc1IDEwMCA3NWg2MXExMjQgMTAwIDEzOSAxMDBoMjUwcTQ2IDAgODMgLTU3bDIzOCAtMzQ0cTI5IC0zMSAyOSAtNzR2LTEwMHEwIC00NCAtMzAuNSAtODQuNXQtNjkuNSAtNDAuNWgtMzI4cTI4IC0xMTggMjggLTEyNXYtMTUwcTAgLTQ0IC0zMC41IC04NC41dC02OS41IC00MC41aC01MHEtMjcgMCAtNTEgMjB0LTM4IDQ4bC05NiAxOThsLTE0NSAxOTYgcS0yMCAyNiAtMjAgNjN6TTQwMCA1MjVsMTUwIC0yMTJsMTAwIC0yMTNoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0bC0xMzYgLTEwMGgtMTAwdi0zNzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNzsiIGQ9Ik04IDIwMHY2MDBoMjAwdi02MDBoLTIwMHpNMzA4IDI3NXY1MjVxMCAxNyAxNCAzNS41dDI4IDI4LjVsMTQgOWwzNjIgMjMwcTE0IDYgMjUgNnExNyAwIDI5IC0xMmwxMDkgLTExMnExNCAtMTQgMTQgLTM0cTAgLTE4IC0xMSAtMzJsLTg1IC0xMjFoMzAycTg1IDAgMTM4LjUgLTM4dDUzLjUgLTExMHQtNTQuNSAtMTExdC0xMzguNSAtMzloLTEwN2wtMTMwIC0zMzlxLTcgLTIyIC0yMC41IC00MS41dC0yOC41IC0xOS41aC0zNDEgcS03IDAgLTkwIDgxdC04MyA5NHpNNDA4IDI4OWwxMDAgLTg5aDI5M2wxMzEgMzM5cTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3ExNiAwIDI1IDE1dDkgMzZxMCAyMCAtOSAzNC41dC0yNSAxNC41aC00NTdoLTYuNWgtNy41dC02LjUgMC41dC02IDF0LTUgMS41dC01LjUgMi41dC00IDR0LTQgNS41cS01IDEyIC01IDIwcTAgMTQgMTAgMjdsMTQ3IDE4M2wtODYgODNsLTMzOSAtMjM2di01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik0tMTAxIDY1MXEwIDcyIDU0IDExMHQxMzkgMzhsMzAyIC0xbC04NSAxMjFxLTExIDE2IC0xMSAzMnEwIDIxIDE0IDM0bDEwOSAxMTNxMTMgMTIgMjkgMTJxMTEgMCAyNSAtNmwzNjUgLTIzMHE3IC00IDE3IC0xMC41dDI2LjUgLTI2dDE2LjUgLTM2LjV2LTUyNnEwIC0xMyAtODYgLTkzLjV0LTk0IC04MC41aC0zNDFxLTE2IDAgLTI5LjUgMjB0LTE5LjUgNDFsLTEzMCAzMzloLTEwN3EtODQgMCAtMTM5IDM5dC01NSAxMTF6TS0xIDYwMWgyMjIgcTE1IDAgMjguNSAtMjAuNXQxOS41IC00MC41bDEzMSAtMzM5aDI5M2wxMDcgODl2NTAybC0zNDMgMjM3bC04NyAtODNsMTQ1IC0xODRxMTAgLTExIDEwIC0yNnEwIC0xMSAtNSAtMjBxLTEgLTMgLTMuNSAtNS41bC00IC00dC01IC0yLjV0LTUuNSAtMS41dC02LjUgLTF0LTYuNSAtMC41aC03LjVoLTYuNWgtNDc2di0xMDB6TTEwMDAgMjAxdjYwMGgyMDB2LTYwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjk7IiBkPSJNOTcgNzE5bDIzMCAtMzYzcTQgLTYgMTAuNSAtMTUuNXQyNiAtMjV0MzYuNSAtMTUuNWg1MjVxMTMgMCA5NCA4M3Q4MSA5MHYzNDJxMCAxNSAtMjAgMjguNXQtNDEgMTkuNWwtMzM5IDEzMXYxMDZxMCA4NCAtMzkgMTM5dC0xMTEgNTV0LTExMCAtNTMuNXQtMzggLTEzOC41di0zMDJsLTEyMSA4NHEtMTUgMTIgLTMzLjUgMTEuNXQtMzIuNSAtMTMuNWwtMTEyIC0xMTBxLTIyIC0yMiAtNiAtNTN6TTE3MiA3MzlsODMgODZsMTgzIC0xNDYgcTIyIC0xOCA0NyAtNXEzIDEgNS41IDMuNWw0IDR0Mi41IDV0MS41IDUuNXQxIDYuNXQwLjUgNi41djcuNXY2LjV2NDU2cTAgMjIgMjUgMzF0NTAgLTAuNXQyNSAtMzAuNXYtMjAycTAgLTE2IDIwIC0yOS41dDQxIC0xOS41bDMzOSAtMTMwdi0yOTRsLTg5IC0xMDBoLTUwM3pNNDAwIDB2MjAwaDYwMHYtMjAwaC02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0yIDU4NXEtMTYgLTMxIDYgLTUzbDExMiAtMTEwcTEzIC0xMyAzMiAtMTMuNXQzNCAxMC41bDEyMSA4NXEwIC01MSAtMC41IC0xNTMuNXQtMC41IC0xNDguNXEwIC04NCAzOC41IC0xMzh0MTEwLjUgLTU0dDExMSA1NXQzOSAxMzl2MTA2bDMzOSAxMzFxMjAgNiA0MC41IDE5LjV0MjAuNSAyOC41djM0MnEwIDcgLTgxIDkwdC05NCA4M2gtNTI1cS0xNyAwIC0zNS41IC0xNHQtMjguNSAtMjhsLTEwIC0xNXpNNzcgNTY1bDIzNiAzMzloNTAzIGw4OSAtMTAwdi0yOTRsLTM0MCAtMTMwcS0yMCAtNiAtNDAgLTIwdC0yMCAtMjl2LTIwMnEwIC0yMiAtMjUgLTMxdC01MCAwdC0yNSAzMXY0NTZ2MTQuNXQtMS41IDExLjV0LTUgMTJ0LTkuNSA3cS0yNCAxMyAtNDYgLTVsLTE4NCAtMTQ2ek0zMDUgMTEwNHYyMDBoNjAwdi0yMDBoLTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTMxOyIgZD0iTTUgNTk3cTAgMTIyIDQ3LjUgMjMyLjV0MTI3LjUgMTkwLjV0MTkwLjUgMTI3LjV0MjMyLjUgNDcuNXExNjIgMCAyOTkuNSAtODB0MjE3LjUgLTIxOHQ4MCAtMzAwdC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0zMDAgODB0LTIxOCAyMTcuNXQtODAgMjk5LjV6TTI5OCA3MDFsMiAtMjAxaDMwMGwtMiAtMTk0bDQwMiAyOTRsLTQwMiAyOTh2LTE5N2gtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzI7IiBkPSJNMCA1OTdxMCAxMjIgNDcuNSAyMzIuNXQxMjcuNSAxOTAuNXQxOTAuNSAxMjcuNXQyMzEuNSA0Ny41cTEyMiAwIDIzMi41IC00Ny41dDE5MC41IC0xMjcuNXQxMjcuNSAtMTkwLjV0NDcuNSAtMjMyLjVxMCAtMTYyIC04MCAtMjk5LjV0LTIxOCAtMjE3LjV0LTMwMCAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTIwMCA2MDBsNDAyIC0yOTRsLTIgMTk0aDMwMGwyIDIwMWgtMzAwdjE5N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTMzOyIgZD0iTTUgNTk3cTAgMTIyIDQ3LjUgMjMyLjV0MTI3LjUgMTkwLjV0MTkwLjUgMTI3LjV0MjMyLjUgNDcuNXExNjIgMCAyOTkuNSAtODB0MjE3LjUgLTIxOHQ4MCAtMzAwdC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0zMDAgODB0LTIxOCAyMTcuNXQtODAgMjk5LjV6TTMwMCA2MDBoMjAwdi0zMDBoMjAwdjMwMGgyMDBsLTMwMCA0MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNDsiIGQ9Ik01IDU5N3EwIDEyMiA0Ny41IDIzMi41dDEyNy41IDE5MC41dDE5MC41IDEyNy41dDIzMi41IDQ3LjVxMTYyIDAgMjk5LjUgLTgwdDIxNy41IC0yMTh0ODAgLTMwMHQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMzAwIDgwdC0yMTggMjE3LjV0LTgwIDI5OS41ek0zMDAgNjAwbDMwMCAtNDAwbDMwMCA0MDBoLTIwMHYzMDBoLTIwMHYtMzAwaC0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik01IDU5N3EwIDEyMiA0Ny41IDIzMi41dDEyNy41IDE5MC41dDE5MC41IDEyNy41dDIzMi41IDQ3LjVxMTIxIDAgMjMxLjUgLTQ3LjV0MTkwLjUgLTEyNy41dDEyNy41IC0xOTAuNXQ0Ny41IC0yMzIuNXEwIC0xNjIgLTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTMwMCA4MHQtMjE4IDIxNy41dC04MCAyOTkuNXpNMjU0IDc4MHEtOCAtMzMgNS41IC05Mi41dDcuNSAtODcuNXEwIC05IDE3IC00NHQxNiAtNjAgcTEyIDAgMjMgLTUuNXQyMyAtMTV0MjAgLTEzLjVxMjQgLTEyIDEwOCAtNDJxMjIgLTggNTMgLTMxLjV0NTkuNSAtMzguNXQ1Ny41IC0xMXE4IC0xOCAtMTUgLTU1dC0yMCAtNTdxNDIgLTcxIDg3IC04MHEwIC02IC0zIC0xNS41dC0zLjUgLTE0LjV0NC41IC0xN3ExMDQgLTMgMjIxIDExMnEzMCAyOSA0NyA0N3QzNC41IDQ5dDIwLjUgNjJxLTE0IDkgLTM3IDkuNXQtMzYgNy41cS0xNCA3IC00OSAxNXQtNTIgMTlxLTkgMCAtMzkuNSAtMC41IHQtNDYuNSAtMS41dC0zOSAtNi41dC0zOSAtMTYuNXEtNTAgLTM1IC02NiAtMTJxLTQgMiAtMy41IDI1LjV0MC41IDI1LjVxLTYgMTMgLTI2LjUgMTd0LTI0LjUgN3EyIDIyIC0yIDQxdC0xNi41IDI4dC0zOC41IC0yMHEtMjMgLTI1IC00MiA0cS0xOSAyOCAtOCA1OHE2IDE2IDIyIDIycTYgLTEgMjYgLTEuNXQzMy41IC00dDE5LjUgLTEzLjVxMTIgLTE5IDMyIC0zNy41dDM0IC0yNy41bDE0IC04cTAgMyA5LjUgMzkuNXQ1LjUgNTcuNSBxLTQgMjMgMTQuNSA0NC41dDIyLjUgMzEuNXE1IDE0IDEwIDM1dDguNSAzMXQxNS41IDIyLjV0MzQgMjEuNXEtNiAxOCAxMCAzN3E4IDAgMjMuNSAtMS41dDI0LjUgLTEuNXQyMC41IDQuNXQyMC41IDE1LjVxLTEwIDIzIC0zMC41IDQyLjV0LTM4IDMwdC00OSAyNi41dC00My41IDIzcTExIDM5IDIgNDRxMzEgLTEzIDU4IC0xNC41dDM5IDMuNWwxMSA0cTcgMzYgLTE2LjUgNTMuNXQtNjQuNSAyOC41dC01NiAyM3EtMTkgLTMgLTM3IDAgcS0xNSAtMTIgLTM2LjUgLTIxdC0zNC41IC0xMnQtNDQgLTh0LTM5IC02cS0xNSAtMyAtNDUuNSAwLjV0LTQ1LjUgLTIuNXEtMjEgLTcgLTUyIC0yNi41dC0zNCAtMzQuNXEtMyAtMTEgNi41IC0yMi41dDguNSAtMTguNXEtMyAtMzQgLTI3LjUgLTkwLjV0LTI5LjUgLTc5LjV6TTUxOCA5MTZxMyAxMiAxNiAzMHQxNiAyNXExMCAtMTAgMTguNSAtMTB0MTQgNnQxNC41IDE0LjV0MTYgMTIuNXEwIC0yNCAxNyAtNjYuNXQxNyAtNDMuNSBxLTkgMiAtMzEgNXQtMzYgNXQtMzIgOHQtMzAgMTR6TTY5MiAxMDAzaDFoLTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNjsiIGQ9Ik0wIDE2NC41cTAgMjEuNSAxNSAzNy41bDYwMCA1OTlxLTMzIDEwMSA2IDIwMS41dDEzNSAxNTQuNXExNjQgOTIgMzA2IC05bC0yNTkgLTEzOGwxNDUgLTIzMmwyNTEgMTI2cTEzIC0xNzUgLTE1MSAtMjY3cS0xMjMgLTcwIC0yNTMgLTIzbC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNzsiIGhvcml6LWFkdi14PSIxMjIwIiBkPSJNMCAxOTZ2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0wIDU5NnYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0wIDk5NnYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTYwMCA1OTZoNTAwdjEwMGgtNTAwdi0xMDB6TTgwMCAxOTZoMzAwdjEwMGgtMzAwdi0xMDB6TTkwMCA5OTZoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzODsiIGQ9Ik0xMDAgMTEwMHYxMDBoMTAwMHYtMTAwaC0xMDAwek0xNTAgMTAwMGg5MDBsLTM1MCAtNTAwdi0zMDBsLTIwMCAtMjAwdjUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTAgMjAwdjIwMGgxMjAwdi0yMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0wIDUwMHY0MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAweiBNNTAwIDEwMDBoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik0wIDB2NDAwbDEyOSAtMTI5bDIwMCAyMDBsMTQyIC0xNDJsLTIwMCAtMjAwbDEyOSAtMTI5aC00MDB6TTAgODAwbDEyOSAxMjlsMjAwIC0yMDBsMTQyIDE0MmwtMjAwIDIwMGwxMjkgMTI5aC00MDB2LTQwMHpNNzI5IDMyOWwxNDIgMTQybDIwMCAtMjAwbDEyOSAxMjl2LTQwMGgtNDAwbDEyOSAxMjl6TTcyOSA4NzFsMjAwIDIwMGwtMTI5IDEyOWg0MDB2LTQwMGwtMTI5IDEyOWwtMjAwIC0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik0wIDU5NnEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4MiA1OTZxMCAtMTcyIDEyMS41IC0yOTN0MjkyLjUgLTEyMXQyOTIuNSAxMjF0MTIxLjUgMjkzcTAgMTcxIC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek0yOTEgNjU1IHEwIDIzIDE1LjUgMzguNXQzOC41IDE1LjV0MzkgLTE2dDE2IC0zOHEwIC0yMyAtMTYgLTM5dC0zOSAtMTZxLTIyIDAgLTM4IDE2dC0xNiAzOXpNNDAwIDg1MHEwIDIyIDE2IDM4LjV0MzkgMTYuNXEyMiAwIDM4IC0xNnQxNiAtMzl0LTE2IC0zOXQtMzggLTE2cS0yMyAwIC0zOSAxNi41dC0xNiAzOC41ek01MTQgNjA5cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIyIDE2IDM4LjV0MzkgMTYuNSBxMjIgMCAzOCAtMTZ0MTYgLTM5dC0xNiAtMzl0LTM4IC0xNnEtMTQgMCAtMjkgMTBsLTU1IC0xNDVxMTcgLTIyIDE3IC01MXEwIC0zNiAtMjUuNSAtNjEuNXQtNjEuNSAtMjUuNXQtNjEuNSAyNS41dC0yNS41IDYxLjV6TTgwMCA2NTVxMCAyMiAxNiAzOHQzOSAxNnQzOC41IC0xNS41dDE1LjUgLTM4LjV0LTE2IC0zOXQtMzggLTE2cS0yMyAwIC0zOSAxNnQtMTYgMzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MjsiIGQ9Ik0tNDAgMzc1cS0xMyAtOTUgMzUgLTE3M3EzNSAtNTcgOTQgLTg5dDEyOSAtMzJxNjMgMCAxMTkgMjhxMzMgMTYgNjUgNDAuNXQ1Mi41IDQ1LjV0NTkuNSA2NHE0MCA0NCA1NyA2MWwzOTQgMzk0cTM1IDM1IDQ3IDg0dC0zIDk2cS0yNyA4NyAtMTE3IDEwNHEtMjAgMiAtMjkgMnEtNDYgMCAtNzguNSAtMTYuNXQtNjcuNSAtNTEuNWwtMzg5IC0zOTZsLTcgLTdsNjkgLTY3bDM3NyAzNzNxMjAgMjIgMzkgMzhxMjMgMjMgNTAgMjMgcTM4IDAgNTMgLTM2cTE2IC0zOSAtMjAgLTc1bC01NDcgLTU0N3EtNTIgLTUyIC0xMjUgLTUycS01NSAwIC0xMDAgMzN0LTU0IDk2cS01IDM1IDIuNSA2NnQzMS41IDYzdDQyIDUwdDU2IDU0cTI0IDIxIDQ0IDQxbDM0OCAzNDhxNTIgNTIgODIuNSA3OS41dDg0IDU0dDEwNy41IDI2LjVxMjUgMCA0OCAtNHE5NSAtMTcgMTU0IC05NC41dDUxIC0xNzUuNXEtNyAtMTAxIC05OCAtMTkybC0yNTIgLTI0OWwtMjUzIC0yNTZsNyAtN2w2OSAtNjAgbDUxNyA1MTFxNjcgNjcgOTUgMTU3dDExIDE4M3EtMTYgODcgLTY3IDE1NHQtMTMwIDEwM3EtNjkgMzMgLTE1MiAzM3EtMTA3IDAgLTE5NyAtNTVxLTQwIC0yNCAtMTExIC05NWwtNTEyIC01MTJxLTY4IC02OCAtODEgLTE2M3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTgwIDc4NHEwIDEzMSA5OC41IDIyOS41dDIzMC41IDk4LjVxMTQzIDAgMjQxIC0xMjlxMTAzIDEyOSAyNDYgMTI5cTEyOSAwIDIyNiAtOTguNXQ5NyAtMjI5LjVxMCAtNDYgLTE3LjUgLTkxdC02MSAtOTl0LTc3IC04OS41dC0xMDQuNSAtMTA1LjVxLTE5NyAtMTkxIC0yOTMgLTMyMmwtMTcgLTIzbC0xNiAyM3EtNDMgNTggLTEwMCAxMjIuNXQtOTIgOTkuNXQtMTAxIDEwMHEtNzEgNzAgLTEwNC41IDEwNS41dC03NyA4OS41dC02MSA5OSB0LTE3LjUgOTF6TTI1MCA3ODRxMCAtMjcgMzAuNSAtNzB0NjEuNSAtNzUuNXQ5NSAtOTQuNWwyMiAtMjJxOTMgLTkwIDE5MCAtMjAxcTgyIDkyIDE5NSAyMDNsMTIgMTJxNjQgNjIgOTcuNSA5N3Q2NC41IDc5dDMxIDcycTAgNzEgLTQ4IDExOS41dC0xMDUgNDguNXEtNzQgMCAtMTMyIC04M2wtMTE4IC0xNzFsLTExNCAxNzRxLTUxIDgwIC0xMjMgODBxLTYwIDAgLTEwOS41IC00OS41dC00OS41IC0xMTguNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTU3IDM1M3EwIC05NSA2NiAtMTU5bDE0MSAtMTQycTY4IC02NiAxNTkgLTY2cTkzIDAgMTU5IDY2bDI4MyAyODNxNjYgNjYgNjYgMTU5dC02NiAxNTlsLTE0MSAxNDFxLTggOSAtMTkgMTdsLTEwNSAtMTA1bDIxMiAtMjEybC0zODkgLTM4OWwtMjQ3IDI0OGw5NSA5NWwtMTggMThxLTQ2IDQ1IC03NSAxMDFsLTU1IC01NXEtNjYgLTY2IC02NiAtMTU5ek0yNjkgNzA2cTAgLTkzIDY2IC0xNTlsMTQxIC0xNDFxNyAtNyAxOSAtMTdsMTA1IDEwNSBsLTIxMiAyMTJsMzg5IDM4OWwyNDcgLTI0N2wtOTUgLTk2bDE4IC0xN3E0NyAtNDkgNzcgLTEwMGwyOSAyOXEzNSAzNSA2Mi41IDg4dDI3LjUgOTZxMCA5MyAtNjYgMTU5bC0xNDEgMTQxcS02NiA2NiAtMTU5IDY2cS05NSAwIC0xNTkgLTY2bC0yODMgLTI4M3EtNjYgLTY0IC02NiAtMTU5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNMjAwIDEwMHY5NTNxMCAyMSAzMCA0NnQ4MSA0OHQxMjkgMzh0MTYzIDE1dDE2MiAtMTV0MTI3IC0zOHQ3OSAtNDh0MjkgLTQ2di05NTNxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTMwMCAzMDBoNjAwdjcwMGgtNjAwdi03MDB6TTQ5NiAxNTBxMCAtNDMgMzAuNSAtNzMuNXQ3My41IC0zMC41dDczLjUgMzAuNXQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41IHQtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQ2OyIgZD0iTTAgMGwzMDMgMzgwbDIwNyAyMDhsLTIxMCAyMTJoMzAwbDI2NyAyNzlsLTM1IDM2cS0xNSAxNCAtMTUgMzV0MTUgMzVxMTQgMTUgMzUgMTV0MzUgLTE1bDI4MyAtMjgycTE1IC0xNSAxNSAtMzZ0LTE1IC0zNXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0zNiAzNWwtMjc5IC0yNjd2LTMwMGwtMjEyIDIxMGwtMjA4IC0yMDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0ODsiIGQ9Ik0yOTUgNDMzaDEzOXE1IC03NyA0OC41IC0xMjYuNXQxMTcuNSAtNjQuNXYzMzVxLTYgMSAtMTUuNSA0dC0xMS41IDNxLTQ2IDE0IC03OSAyNi41dC03MiAzNnQtNjIuNSA1MnQtNDAgNzIuNXQtMTYuNSA5OXEwIDkyIDQ0IDE1OS41dDEwOSAxMDF0MTQ0IDQwLjV2NzhoMTAwdi03OXEzOCAtNCA3Mi41IC0xMy41dDc1LjUgLTMxLjV0NzEgLTUzLjV0NTEuNSAtODR0MjQuNSAtMTE4LjVoLTE1OXEtOCA3MiAtMzUgMTA5LjV0LTEwMSA1MC41IHYtMzA3bDY0IC0xNHEzNCAtNyA2NCAtMTYuNXQ3MCAtMzEuNXQ2Ny41IC01MnQ0Ny41IC04MC41dDIwIC0xMTIuNXEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTZ2LTc3aC0xMDB2NzhxLTE1MiAxNyAtMjM3IDEwNHEtNDAgNDAgLTUyLjUgOTMuNXQtMTUuNSAxMzkuNXpNNDY2IDg4OXEwIC0yOSA4IC01MXQxNi41IC0zNHQyOS41IC0yMi41dDMxIC0xMy41dDM4IC0xMHE3IC0yIDExIC0zdjI3NHEtNjEgLTggLTk3LjUgLTM3LjV0LTM2LjUgLTEwMi41IHpNNzAwIDIzN3ExNzAgMTggMTcwIDE1MXEwIDY0IC00NCA5OS41dC0xMjYgNjAuNXYtMzExeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDk7IiBkPSJNMTAwIDYwMHYxMDBoMTY2cS0yNCA0OSAtNDQgMTA0cS0xMCAyNiAtMTQuNSA1NS41dC0zIDcyLjV0MjUgOTB0NjguNSA4N3E5NyA4OCAyNjMgODhxMTI5IDAgMjMwIC04OXQxMDEgLTIwOGgtMTUzcTAgNTIgLTM0IDg5LjV0LTc0IDUxLjV0LTc2IDE0cS0zNyAwIC03OSAtMTQuNXQtNjIgLTM1LjVxLTQxIC00NCAtNDEgLTEwMXEwIC0yOCAxNi41IC02OS41dDI4IC02Mi41dDQxLjUgLTcyaDI0MXYtMTAwaC0xOTdxOCAtNTAgLTIuNSAtMTE1IHQtMzEuNSAtOTRxLTQxIC01OSAtOTkgLTExM3EzNSAxMSA4NCAxOHQ3MCA3cTMzIDEgMTAzIC0xNnQxMDMgLTE3cTc2IDAgMTM2IDMwbDUwIC0xNDdxLTQxIC0yNSAtODAuNSAtMzYuNXQtNTkgLTEzdC02MS41IC0xLjVxLTIzIDAgLTEyOCAzM3QtMTU1IDI5cS0zOSAtNCAtODIgLTE3dC02NiAtMjVsLTI0IC0xMWwtNTUgMTQ1bDE2LjUgMTF0MTUuNSAxMHQxMy41IDkuNXQxNC41IDEydDE0LjUgMTR0MTcuNSAxOC41cTQ4IDU1IDU0IDEyNi41IHQtMzAgMTQyLjVoLTIyMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUwOyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTYwMiA5MDBsMjk4IDMwMGwyOTggLTMwMGgtMTk4di05MDBoLTIwMHY5MDBoLTE5OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTIgMzAwaDE5OHY5MDBoMjAwdi05MDBoMTk4bC0yOTggLTMwMHpNNzAwIDB2MjAwaDEwMHYtMTAwaDIwMHYtMTAwaC0zMDB6TTcwMCA0MDB2MTAwaDMwMHYtMjAwaC05OXYtMTAwaC0xMDB2MTAwaDk5djEwMGgtMjAwek03MDAgNzAwdjUwMGgzMDB2LTUwMGgtMTAwdjEwMGgtMTAwdi0xMDBoLTEwMHpNODAxIDkwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUyOyIgZD0iTTIgMzAwaDE5OHY5MDBoMjAwdi05MDBoMTk4bC0yOTggLTMwMHpNNzAwIDB2NTAwaDMwMHYtNTAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwek03MDAgNzAwdjIwMGgxMDB2LTEwMGgyMDB2LTEwMGgtMzAwek03MDAgMTEwMHYxMDBoMzAwdi0yMDBoLTk5di0xMDBoLTEwMHYxMDBoOTl2MTAwaC0yMDB6TTgwMSAyMDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MzsiIGQ9Ik0yIDMwMGwyOTggLTMwMGwyOTggMzAwaC0xOTh2OTAwaC0yMDB2LTkwMGgtMTk4ek04MDAgMTAwdjQwMGgzMDB2LTUwMGgtMTAwdjEwMGgtMjAwek04MDAgMTEwMHYxMDBoMjAwdi01MDBoLTEwMHY0MDBoLTEwMHpNOTAxIDIwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTU0OyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTgwMCA0MDB2MTAwaDIwMHYtNTAwaC0xMDB2NDAwaC0xMDB6TTgwMCA4MDB2NDAwaDMwMHYtNTAwaC0xMDB2MTAwaC0yMDB6TTkwMSA5MDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1NTsiIGQ9Ik0yIDMwMGwyOTggLTMwMGwyOTggMzAwaC0xOTh2OTAwaC0yMDB2LTkwMGgtMTk4ek03MDAgMTAwdjIwMGg1MDB2LTIwMGgtNTAwek03MDAgNDAwdjIwMGg0MDB2LTIwMGgtNDAwek03MDAgNzAwdjIwMGgzMDB2LTIwMGgtMzAwek03MDAgMTAwMHYyMDBoMjAwdi0yMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTU2OyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTcwMCAxMDB2MjAwaDIwMHYtMjAwaC0yMDB6TTcwMCA0MDB2MjAwaDMwMHYtMjAwaC0zMDB6TTcwMCA3MDB2MjAwaDQwMHYtMjAwaC00MDB6TTcwMCAxMDAwdjIwMGg1MDB2LTIwMGgtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41aDMwMHExNjIgMCAyODEgLTExOC41dDExOSAtMjgxLjV2LTMwMHEwIC0xNjUgLTExOC41IC0yODIuNXQtMjgxLjUgLTExNy41aC0zMDBxLTE2NSAwIC0yODIuNSAxMTcuNXQtMTE3LjUgMjgyLjV6TTIwMCAzMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41IGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1ODsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjMgMTE5IDI4MS41dDI4MSAxMTguNWgzMDBxMTY1IDAgMjgyLjUgLTExNy41dDExNy41IC0yODIuNXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTYzIDAgLTI4MS41IDExNy41dC0xMTguNSAyODIuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNNDAwIDMwMGwzMzMgMjUwbC0zMzMgMjUwdi01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjMgMTE3LjUgMjgxLjV0MjgyLjUgMTE4LjVoMzAwcTE2MyAwIDI4MS41IC0xMTl0MTE4LjUgLTI4MXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41dC0xMTcuNSAyODIuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMzAwIDcwMGwyNTAgLTMzM2wyNTAgMzMzaC01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MDsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjUgMTE3LjUgMjgyLjV0MjgyLjUgMTE3LjVoMzAwcTE2NSAwIDI4Mi41IC0xMTcuNXQxMTcuNSAtMjgyLjV2LTMwMHEwIC0xNjIgLTExOC41IC0yODF0LTI4MS41IC0xMTloLTMwMHEtMTY1IDAgLTI4Mi41IDExOC41dC0xMTcuNSAyODEuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMzAwIDQwMGg1MDBsLTI1MCAzMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik0wIDQwMHYzMDBoMzAwdjIwMGw0MDAgLTM1MGwtNDAwIC0zNTB2MjAwaC0zMDB6TTUwMCAwdjIwMGg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtNTAwdjIwMGg0MDBxMTY1IDAgMjgyLjUgLTExNy41dDExNy41IC0yODIuNXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTIxNyA1MTlxOCAtMTkgMzEgLTE5aDMwMnEtMTU1IC00MzggLTE2MCAtNDU4cS01IC0yMSA0IC0zMmw5IC04aDlxMTQgMCAyNiAxNXExMSAxMyAyNzQuNSAzMjEuNXQyNjQuNSAzMDguNXExNCAxOSA1IDM2cS04IDE3IC0zMSAxN2wtMzAxIC0xcTEgNCA3OCAyMTkuNXQ3OSAyMjcuNXEyIDE1IC01IDI3bC05IDloLTlxLTE1IDAgLTI1IC0xNnEtNCAtNiAtOTggLTExMS41dC0yMjguNSAtMjU3dC0yMDkuNSAtMjM3LjVxLTE2IC0xOSAtNiAtNDEgeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjM7IiBkPSJNMCA0MDBxMCAtMTY1IDExNy41IC0yODIuNXQyODIuNSAtMTE3LjVoMzAwcTQ3IDAgMTAwIDE1djE4NWgtNTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY1MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDUwMHYxODVxLTE0IDQgLTExNCA3LjV0LTE5MyA1LjVsLTkzIDJxLTE2NSAwIC0yODIuNSAtMTE3LjV0LTExNy41IC0yODIuNXYtMzAwek02MDAgNDAwdjMwMGgzMDB2MjAwbDQwMCAtMzUwbC00MDAgLTM1MHYyMDBoLTMwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NDsiIGQ9Ik0wIDQwMHEwIC0xNjUgMTE3LjUgLTI4Mi41dDI4Mi41IC0xMTcuNWgzMDBxMTYzIDAgMjgxLjUgMTE3LjV0MTE4LjUgMjgyLjV2OThsLTc4IDczbC0xMjIgLTEyM3YtMTQ4cTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTU2bDExOCAxMjJsLTc0IDc4aC0xMDBxLTE2NSAwIC0yODIuNSAtMTE3LjV0LTExNy41IC0yODIuNSB2LTMwMHpNNDk2IDcwOWwzNTMgMzQybC0xNDkgMTQ5aDUwMHYtNTAwbC0xNDkgMTQ5bC0zNDIgLTM1M3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNDA2IDYwMCBxMCA4MCA1NyAxMzd0MTM3IDU3dDEzNyAtNTd0NTcgLTEzN3QtNTcgLTEzN3QtMTM3IC01N3QtMTM3IDU3dC01NyAxMzd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NjsiIGQ9Ik0wIDB2Mjc1cTAgMTEgNyAxOHQxOCA3aDEwNDhxMTEgMCAxOSAtNy41dDggLTE3LjV2LTI3NWgtMTEwMHpNMTAwIDgwMGw0NDUgLTUwMGw0NTAgNTAwaC0yOTV2NDAwaC0zMDB2LTQwMGgtMzAwek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY3OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgNzAwaDMwMHYtMzAwaDMwMHYzMDBoMjk1bC00NDUgNTAwek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY4OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgNzA1bDMwNSAtMzA1bDU5NiA1OTZsLTE1NCAxNTVsLTQ0MiAtNDQybC0xNTAgMTUxek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgOTg4bDk3IC05OGwyMTIgMjEzbC05NyA5N3pNMjAwIDQwMGw2OTcgMWwzIDY5OWwtMjUwIC0yMzlsLTE0OSAxNDlsLTIxMiAtMjEybDE0OSAtMTQ5ek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTcwOyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0yMDAgNjEybDIxMiAtMjEybDk4IDk3bC0yMTMgMjEyek0zMDAgMTIwMGwyMzkgLTI1MGwtMTQ5IC0xNDlsMjEyIC0yMTJsMTQ5IDE0OGwyNDkgLTIzN2wtMSA2OTd6TTkwMCAxNTBoMTAwdjUwaC0xMDB2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzE7IiBkPSJNMjMgNDE1bDExNzcgNzg0di0xMDc5bC00NzUgMjcybC0zMTAgLTM5M3Y0MTZoLTM5MnpNNDk0IDIxMGw2NzIgOTM4bC02NzIgLTcxMnYtMjI2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMCAxNTB2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMGwyMDAgLTIwMHYtODUwcTAgLTIxIC0xNSAtMzUuNXQtMzUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek02MDAgMTAwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTczOyIgZD0iTTAgMTUwdjEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDBsMjAwIC0yMDB2LTIxOGwtMjc2IC0yNzVsLTEyMCAxMjBsLTEyNiAtMTI3aC0zNzh2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNTgxIDMwNmwxMjMgMTIzbDEyMCAtMTIwbDM1MyAzNTJsMTIzIC0xMjNsLTQ3NSAtNDc2ek02MDAgMTAwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTc0OyIgZD0iTTAgMTUwdjEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDBsMjAwIC0yMDB2LTI2OWwtMTAzIC0xMDNsLTE3MCAxNzBsLTI5OCAtMjk4aC0zMjl2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDEwMDBoMTAwdjIwMGgtMTAwdi0yMDB6TTcwMCAxMzNsMTcwIDE3MGwtMTcwIDE3MGwxMjcgMTI3bDE3MCAtMTcwbDE3MCAxNzBsMTI3IC0xMjhsLTE3MCAtMTY5bDE3MCAtMTcwIGwtMTI3IC0xMjdsLTE3MCAxNzBsLTE3MCAtMTcweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzU7IiBkPSJNMCAxNTB2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMGwyMDAgLTIwMHYtMzAwaC00MDB2LTIwMGgtNTAwdi00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTYwMCAzMDBsMzAwIC0zMDBsMzAwIDMwMGgtMjAwdjMwMGgtMjAwdi0zMDBoLTIwMHpNNjAwIDEwMDB2MjAwaDEwMHYtMjAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0wIDE1MHYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwbDIwMCAtMjAwdi00MDJsLTIwMCAyMDBsLTI5OCAtMjk4aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDMwMGgyMDB2LTMwMGgyMDB2MzAwaDIwMGwtMzAwIDMwMHpNNjAwIDEwMDB2MjAwaDEwMHYtMjAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik0wIDI1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTEwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2NTUwaC0xMjAwdi01NTB6TTAgOTAwaDEyMDB2MTUwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTB6TTEwMCAzMDB2MjAwaDQwMHYtMjAwaC00MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3ODsiIGQ9Ik0wIDQwMGwzMDAgMjk4di0xOThoNDAwdi0yMDBoLTQwMHYtMTk4ek0xMDAgODAwdjIwMGgxMDB2LTIwMGgtMTAwek0zMDAgODAwdjIwMGgxMDB2LTIwMGgtMTAwek01MDAgODAwdjIwMGg0MDB2MTk4bDMwMCAtMjk4bC0zMDAgLTI5OHYxOThoLTQwMHpNODAwIDMwMHYyMDBoMTAwdi0yMDBoLTEwMHpNMTAwMCAzMDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3OTsiIGQ9Ik0xMDAgNzAwdjQwMGw1MCAxMDBsNTAgLTEwMHYtMzAwaDEwMHYzMDBsNTAgMTAwbDUwIC0xMDB2LTMwMGgxMDB2MzAwbDUwIDEwMGw1MCAtMTAwdi00MDBsLTEwMCAtMjAzdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3ek04MDAgNTk3cTAgLTI5IDEwLjUgLTU1LjV0MjUgLTQzdDI5IC0yOC41dDI1LjUgLTE4bDEwIC01di0zOTdxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djExMDZxMCAzMSAtMTggNDAuNXQtNDQgLTcuNWwtMjc2IC0xMTZxLTI1IC0xNyAtNDMuNSAtNTEuNXQtMTguNSAtNjUuNXYtMzU5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODA7IiBkPSJNMTAwIDBoNDAwdjU2cS03NSAwIC04Ny41IDZ0LTEyLjUgNDR2Mzk0aDUwMHYtMzk0cTAgLTM4IC0xMi41IC00NHQtODcuNSAtNnYtNTZoNDAwdjU2cS00IDAgLTExIDAuNXQtMjQgM3QtMzAgN3QtMjQgMTV0LTExIDI0LjV2ODg4cTAgMjIgMjUgMzQuNXQ1MCAxMy41bDI1IDJ2NTZoLTQwMHYtNTZxNzUgMCA4Ny41IC02dDEyLjUgLTQ0di0zOTRoLTUwMHYzOTRxMCAzOCAxMi41IDQ0dDg3LjUgNnY1NmgtNDAwdi01NnE0IDAgMTEgLTAuNSB0MjQgLTN0MzAgLTd0MjQgLTE1dDExIC0yNC41di04ODhxMCAtMjIgLTI1IC0zNC41dC01MCAtMTMuNWwtMjUgLTJ2LTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNMCAzMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0zMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMTAwIDEwMGg0MDBsMjAwIDIwMGgxMDVsMjk1IDk4di0yOThoLTQyNWwtMTAwIC0xMDBoLTM3NXpNMTAwIDMwMHYyMDBoMzAwdi0yMDBoLTMwMHpNMTAwIDYwMHYyMDBoMzAwdi0yMDBoLTMwMHogTTEwMCAxMDAwaDQwMGwyMDAgLTIwMHYtOThsMjk1IDk4aDEwNXYyMDBoLTQyNWwtMTAwIDEwMGgtMzc1ek03MDAgNDAydjE2M2w0MDAgMTMzdi0xNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MjsiIGQ9Ik0xNi41IDk3NC41cTAuNSAtMjEuNSAxNiAtOTB0NDYuNSAtMTQwdDEwNCAtMTc3LjV0MTc1IC0yMDhxMTAzIC0xMDMgMjA3LjUgLTE3NnQxODAgLTEwMy41dDEzNyAtNDd0OTIuNSAtMTYuNWwzMSAxbDE2MyAxNjJxMTcgMTggMTMuNSA0MXQtMjIuNSAzN2wtMTkyIDEzNnEtMTkgMTQgLTQ1IDEydC00MiAtMTlsLTExOCAtMTE4cS0xNDIgMTAxIC0yNjggMjI3dC0yMjcgMjY4bDExOCAxMThxMTcgMTcgMjAgNDEuNXQtMTEgNDQuNSBsLTEzOSAxOTRxLTE0IDE5IC0zNi41IDIydC00MC41IC0xNGwtMTYyIC0xNjJxLTEgLTExIC0wLjUgLTMyLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik0wIDUwdjIxMnEwIDIwIDEwLjUgNDUuNXQyNC41IDM5LjVsMzY1IDMwM3Y1MHEwIDQgMSAxMC41dDEyIDIyLjV0MzAgMjguNXQ2MCAyM3Q5NyAxMC41dDk3IC0xMHQ2MCAtMjMuNXQzMCAtMjcuNXQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNCAyNC41IC0zOS41dDEwLjUgLTQ1LjV2LTIxMnEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjAgMCAtMzUgMTQuNXQtMTUgMzUuNXpNMCA3MTIgcTAgLTIxIDE0LjUgLTMzLjV0MzQuNSAtOC41bDIwMiAzM3EyMCA0IDM0LjUgMjF0MTQuNSAzOHYxNDZxMTQxIDI0IDMwMCAyNHQzMDAgLTI0di0xNDZxMCAtMjEgMTQuNSAtMzh0MzQuNSAtMjFsMjAyIC0zM3EyMCAtNCAzNC41IDguNXQxNC41IDMzLjV2MjAwcS02IDggLTE5IDIwLjV0LTYzIDQ1dC0xMTIgNTd0LTE3MSA0NXQtMjM1IDIwLjVxLTkyIDAgLTE3NSAtMTAuNXQtMTQxLjUgLTI3dC0xMDguNSAtMzYuNXQtODEuNSAtNDAgdC01My41IC0zNi41dC0zMSAtMjcuNWwtOSAtMTB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg0OyIgZD0iTTEwMCAwdjEwMGgxMTAwdi0xMDBoLTExMDB6TTE3NSAyMDBoOTUwbC0xMjUgMTUwdjI1MGwxMDAgMTAwdjQwMGgtMTAwdi0yMDBoLTEwMHYyMDBoLTIwMHYtMjAwaC0xMDB2MjAwaC0yMDB2LTIwMGgtMTAwdjIwMGgtMTAwdi00MDBsMTAwIC0xMDB2LTI1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg1OyIgZD0iTTEwMCAwaDMwMHY0MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNDAwek01MDAgMHYxMDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMDBoLTMwMHpNOTAwIDB2NzAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTcwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODY7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjMwMGgtMjAwdjEwMGgyMDB2MTAwaC0zMDB2LTMwMGgyMDB2LTEwMGgtMjAwdi0xMDB6TTYwMCAzMDBoMjAwdjEwMGgxMDB2MzAwaC0xMDB2MTAwaC0yMDB2LTUwMCB6TTcwMCA0MDB2MzAwaDEwMHYtMzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NzsiIGQ9Ik0tMTAwIDMwMHY1MDBxMCAxMjQgODggMjEydDIxMiA4OGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnpNMTAwIDIwMGg5MDB2NzAwaC05MDB2LTcwMHpNMjAwIDMwMGgxMDB2MjAwaDEwMHYtMjAwaDEwMHY1MDBoLTEwMHYtMjAwaC0xMDB2MjAwaC0xMDB2LTUwMHpNNjAwIDMwMGgyMDB2MTAwaDEwMHYzMDBoLTEwMHYxMDBoLTIwMHYtNTAwIHpNNzAwIDQwMHYzMDBoMTAwdi0zMDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTS0xMDAgMzAwdjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4aDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAgMjAwaDkwMHY3MDBoLTkwMHYtNzAwek0yMDAgMzAwaDMwMHYxMDBoLTIwMHYzMDBoMjAwdjEwMGgtMzAwdi01MDB6TTYwMCAzMDBoMzAwdjEwMGgtMjAwdjMwMGgyMDB2MTAwaC0zMDB2LTUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg5OyIgZD0iTS0xMDAgMzAwdjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4aDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAgMjAwaDkwMHY3MDBoLTkwMHYtNzAwek0yMDAgNTUwbDMwMCAtMTUwdjMwMHpNNjAwIDQwMGwzMDAgMTUwbC0zMDAgMTUwdi0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MDsiIGQ9Ik0tMTAwIDMwMHY1MDBxMCAxMjQgODggMjEydDIxMiA4OGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnpNMTAwIDIwMGg5MDB2NzAwaC05MDB2LTcwMHpNMjAwIDMwMHY1MDBoNzAwdi01MDBoLTcwMHpNMzAwIDQwMGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB2LTMwMHpNNTc1IDU0OSBxMCAtNjUgMjcgLTEwN3Q2OCAtNDJoMTMwdjMwMGgtMTMwcS0zOCAwIC02Ni41IC00M3QtMjguNSAtMTA4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTE7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjMwMGgtMjAwdjEwMGgyMDB2MTAwaC0zMDB2LTMwMGgyMDB2LTEwMGgtMjAwdi0xMDB6TTYwMSAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTcwMCA3MDBoMTAwIHYtNDAwaDEwMHY1MDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTI7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjQwMGgtMjAwdjEwMGgtMTAwdi01MDB6TTMwMSA0MDB2MjAwaDEwMHYtMjAwaC0xMDB6TTYwMSAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTcwMCA3MDBoMTAwIHYtNDAwaDEwMHY1MDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTM7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCA3MDB2MTAwaDMwMHYtMzAwaC05OXYtMTAwaC0xMDB2MTAwaDk5djIwMGgtMjAwek0yMDEgMzAwdjEwMGgxMDB2LTEwMGgtMTAwek02MDEgMzAwdjEwMGgxMDB2LTEwMGgtMTAweiBNNzAwIDcwMHYxMDBoMjAwdi01MDBoLTEwMHY0MDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTk0OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNDAwIDUwMHYyMDAgbDEwMCAxMDBoMzAwdi0xMDBoLTMwMHYtMjAwaDMwMHYtMTAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NTsiIGQ9Ik0wIDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4MiA2MDBxMCAtMTcxIDEyMS41IC0yOTIuNXQyOTIuNSAtMTIxLjV0MjkyLjUgMTIxLjV0MTIxLjUgMjkyLjV0LTEyMS41IDI5Mi41dC0yOTIuNSAxMjEuNXQtMjkyLjUgLTEyMS41dC0xMjEuNSAtMjkyLjV6TTQwMCA0MDB2NDAwaDMwMCBsMTAwIC0xMDB2LTEwMGgtMTAwdjEwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaC0xMDB6TTcwMCA0MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NzsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoMjIydjMwMGg0MDB2LTMwMGgxMjhxMTIwIDAgMjA1IDg2LjV0ODUgMjA3LjV0LTg1IDIwN3QtMjA1IDg2cS00NiAwIC05MCAtMTRxLTQ0IDk3IC0xMzQuNSAxNTYuNXQtMjAwLjUgNTkuNXEtMTUyIDAgLTI2MCAtMTA3LjV0LTEwOCAtMjYwLjVxMCAtMjUgMiAtMzdxLTY2IC0xNCAtMTA4LjUgLTY3LjV0LTQyLjUgLTEyMi41ek0zMDAgMjAwaDIwMHYzMDBoMjAwdi0zMDBoMjAwIGwtMzAwIC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5ODsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoOGw0MTQgNDE0bDQwMyAtNDAzcTk0IDI2IDE1NC41IDEwNC41dDYwLjUgMTc4LjVxMCAxMjAgLTg1IDIwNi41dC0yMDUgODYuNXEtNDYgMCAtOTAgLTE0cS00NCA5NyAtMTM0LjUgMTU2LjV0LTIwMC41IDU5LjVxLTE1MiAwIC0yNjAgLTEwNy41dC0xMDggLTI2MC41cTAgLTI1IDIgLTM3cS02NiAtMTQgLTEwOC41IC02Ny41dC00Mi41IC0xMjIuNXpNMzAwIDIwMGwzMDAgMzAwIGwzMDAgLTMwMGgtMjAwdi0zMDBoLTIwMHYzMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTEwMCAyMDBoNDAwdi0xNTVsLTc1IC00NWgzNTBsLTc1IDQ1djE1NWg0MDBsLTI3MCAzMDBoMTcwbC0yNzAgMzAwaDE3MGwtMzAwIDMzM2wtMzAwIC0zMzNoMTcwbC0yNzAgLTMwMGgxNzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMDsiIGQ9Ik0xMjEgNzAwcTAgLTUzIDI4LjUgLTk3dDc1LjUgLTY1cS00IC0xNiAtNCAtMzhxMCAtNzQgNTIuNSAtMTI2LjV0MTI2LjUgLTUyLjVxNTYgMCAxMDAgMzB2LTMwNmwtNzUgLTQ1aDM1MGwtNzUgNDV2MzA2cTQ2IC0zMCAxMDAgLTMwcTc0IDAgMTI2LjUgNTIuNXQ1Mi41IDEyNi41cTAgMjQgLTkgNTVxNTAgMzIgNzkuNSA4M3QyOS41IDExMnEwIDkwIC02MS41IDE1NS41dC0xNTAuNSA3MS41cS0yNiA4OSAtOTkuNSAxNDUuNSB0LTE2Ny41IDU2LjVxLTExNiAwIC0xOTcuNSAtODEuNXQtODEuNSAtMTk3LjVxMCAtNCAxIC0xMS41dDEgLTExLjVxLTE0IDIgLTIzIDJxLTc0IDAgLTEyNi41IC01Mi41dC01Mi41IC0xMjYuNXoiIC8+CjwvZm9udD4KPC9kZWZzPjwvc3ZnPg==","glyphicons-halflings-regular.ttf":"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/zr+0wXdAAEAAAAAAAAAAAAAAAAAAACfAbgAKASwAAAEsAAABLAAAASwAGQEsAAABLAAAAKMAAAFGAAAAowAAAUYAAABsgAAAUYAAADZAAAA2QAAAKMAAAEEAAAASAAAAQQAAAFGAAAEsABkBLAAyAH0AAAEsP/yBLAAAASw//MEsAAABLAADgSwABcEsABkBLD/uASw/7gEsAAABLAAAASwAAAEsAAABLAAAASwAB0EsABqBLAAFwSwABcEsAAXBLAAZASwABoEsABkBLAAAQSwAGQEsAAEBLD/nASwAAAEsAABBLAABASwAAAEsAAEBLAAFwSwABcEsABkBLAAAASwAGQEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAQSwAGQEsADIBLAAAASwAAAEsAA1BLAAZASwAMgEsP+1BLAAIQSwAAAEsAAABLAAAASwAAAEsAAABLD/mwSwAAEEsAAABLAAAASwAJQEsAABBLAAdQSwAAAEsAAABLAAAASwAAAEsADIBLAAAASwAIgEsADIBLAAyASwAMgEsAAABLAAAASwASwEsABkBLAAuQSwARAEsAADBLAAAwSwAAMEsAADBLAAAwSwAAMEsAAABLAABASwAAQEsAAEBLAAAASwAAAEsADMBLAAaASwAAAEsAAABLAAIgSwABcEsAAABLAAAASwAG8EsP/DBLD/wwSw/58EsABkBLAAAASwAAAEsAAABLAAZASw/+IEsABGBLD/OgSwABIEsAAABLAAAQSwAS4EsAAABLAAAASw/5sEsABKBLAAFQSwAAAEsAAABLAACASw/5sEsABhBLAAAgSwAAUEsAAABLAABQSwAAUEsAAFBLAAAATEAAAEsABkAAAAAAAA/9gAUAA5AMgAAAEnAGQAAgACAAIAAgACAAIAAgAAAAAAAAAAAAAA2QAAAAAABAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAGQAZAAAABAAAABkAGT/nP+c/5z/nP+c/5z/nP+cAAQAAP/y//IAZAB5AAAAKgAqACoAKgBmAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkATABSAFQAYQBqgHOAf4CNgKYAswC7gMsA0wD9ARyBWQGDgYiBkQG4gdMB7AH6AiUCTAJYAmUCgoKRAqICu4LVguQC+YMPgywDRwNdg2qDjoOYA6KDtwP2BBMEIgQ1hEOESYRlBIUEmAS2hMWE44UDBRiFLoVJhWSFmIW2hdMF4YX6Bg4GIIYvhksGZgZ/BpKGnwathrWGuQbFBswG04bhhu2G+Ab9BwOHFocpBzuHTIdwh4QHooe7B9GH6AfwB/iIAYgKiBGIG4gkCDyIWohxCJCIsgjfiOuJBQkkiTmJRQliCWcJbIl7iZaJogmviboJw4naifOKDgoZCi4KTYp1CpuKuwraCuyK/osRCyYLb4t5i5mLpIu+i86MBgwtjEmMX4x0jIIMrgzYDOQNBo0ojUENWY1vjYWNlw2tDcKN2A3rDf8OFA4tDkYOVg5ljnUOhg6XjqGOtY7LDt0O948QDxoPNw9RD2oPhA+SD68Pu4/MD+aQAJAYEC0QSJBiEHwQoJC+EOIQ/ZEPERgRJ4AAQAAANsAmwARAAAAAAACAAEAAgAWAAABAAEBAAAAAAAAAA8AugABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA/gADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB+gADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACknd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQAzACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAAxADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAATQBvAG4AIABKAGEAbgAgADIANwAgADAAOAA6ADAAMQA6ADMANAAgADIAMAAxADQAAgAAAAAAAP+1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADbAAABAgEDAAMADQAOAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESAO8BEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXBmdseXBoMQd1bmkwMDBEB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTI1RkMHdW5pMjYwMQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMLgB/4WwAY0AS7AIUFixAQGOWbFGBitYIbAQWUuwFFJYIbCAWR2wBitcWFmwFCsAAAABUuZYrgAA","glyphicons-halflings-regular.woff":"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"};
-/*!
- * Bootstrap Customizer (http://getbootstrap.com/customize/)
- * Copyright 2011-2014 Twitter, Inc.
- *
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
- * details, see http://creativecommons.org/licenses/by/3.0/.
- */
-window.onload=function(){"use strict";function a(a,b){throw $('× Warning: '+a+"
"+(b.extract?'":"")+"
").appendTo("body").alert(),b}function b(a){$('× '+a+"
").insertAfter(".bs-customize-download")}function c(a,b){var c=$('");b?c.appendTo(".bs-docs-container"):c.insertAfter(".bs-customize-download")}function d(a,b,c){$(''+b+'×
').insertAfter(c)}function e(a){a=a.replace(/[*+?^$.\[\]{}()|\\\/]/g,"\\$&");var b=location.search.match(new RegExp("[?&]"+a+"=([^&]+)(&|$)"));return b&&decodeURIComponent(b[1].replace(/\+/g," "))}function f(c,d){var e={description:"Bootstrap Customizer Config","public":!0,files:{"config.json":{content:c}}};$.ajax({url:"https://api.github.com/gists",type:"POST",contentType:"application/json; charset=UTF-8",dataType:"json",data:JSON.stringify(e)}).success(function(a){var c=a.html_url,e=window.location.protocol+"//"+window.location.host,f=e+window.location.pathname+"?id="+a.id;b('Success! Your configuration has been saved to '+c+' and can be revisited here at '+f+" for further customization."),history.replaceState(!1,document.title,f),d(c,f)}).error(function(b){try{a("Ruh roh! Could not save gist file, configuration not saved.",b)}catch(c){}d("","")})}function g(){var a={};$("#less-variables-section input").each(function(){$(this).val()&&(a[$(this).prev().text()]=$(this).val())});var b={vars:a,css:$("#less-section input:checked").map(function(){return this.value}).toArray(),js:$("#plugin-section input:checked").map(function(){return this.value}).toArray()};if(!$.isEmptyObject(b.vars)||b.css.length||b.js.length)return b}function h(a){if(a.js&&$("#plugin-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,a.js))}),a.css&&$("#less-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,a.css))}),a.vars)for(var b in a.vars)$('input[data-var="'+b+'"]').val(a.vars[b])}function i(){var b=e("id");b&&$.ajax({url:"https://api.github.com/gists/"+b,type:"GET",dataType:"json"}).success(function(a){var b=JSON.parse(a.files["config.json"].content);h(b)}).error(function(b){a("Error fetching bootstrap config file",b)})}function j(b,c,d,e,f){if(!b&&!c)return a("Ruh roh! No Bootstrap files selected.",new Error("no Bootstrap"));var g=new JSZip;if(b){var h=g.folder("css");for(var i in b)h.file(i,b[i])}if(c){var j=g.folder("js");for(var k in c)j.file(k,c[k])}if(d){var l=g.folder("fonts");for(var m in d)l.file(m,d[m],{base64:!0})}e&&g.file("config.json",e);var n=g.generate({type:"blob"});f(n)}function k(a){var b="";for(var c in a)b+=c+": "+a[c]+";\n";return b+"\n\n"}function l(){var a=$('#less-section [value="glyphicons.less"]:checked');return a.length?__fonts:void 0}function m(a){var b=/^@import \"(.*?)\";$/,c=__less[a].split("\n"),d=[];return $.each(c,function(a,c){var e=b.exec(c);if(e){var f=e[1],g=m(f);$.each(g,function(a,b){-1===$.inArray(b,d)&&d.push(b)}),d.push(f)}}),d}function n(a,b,c){var d=__less[a],e=m(a);return $.each(e,function(a,e){var f=b[e];(f||null==f)&&(d+=__less[e]),"variables.less"===e&&c&&(d+=k(c))}),d=d.replace(/@import[^\n]*/gi,"")}function o(a,b,c){var d=$.Deferred(),e=new less.Parser({paths:["variables.less","mixins.less"],optimization:0,filename:b+".css"});return e.parse(a,function(a,e){return a?d.reject(a):(c[b+".css"]=v+e.toCSS(),c[b+".min.css"]=v+e.toCSS({compress:!0}),void d.resolve())}),d.promise()}function p(b){var c=$.Deferred(),d=!1,e={};if($("#less-section input").each(function(){var a=$(this),b=a.is(":checked");e[a.val()]=b,d=d||b}),!d)return!1;var f={},g={};$("#less-variables-section input").each(function(){$(this).val()&&(g[$(this).prev().text()]=$(this).val())});var h=b+n("bootstrap.less",e,g),i=b+n("theme.less",e,g),j=autoprefixer({browsers:__configBridge.autoprefixerBrowsers});return $.when(o(h,"bootstrap",f),o(i,"bootstrap-theme",f)).done(function(){for(var a in f)f[a]=j.process(f[a]).css;c.resolve(f)}).fail(function(b){a("Ruh roh! Could not parse less files.",b),c.reject()}),c.promise()}function q(a){var b=UglifyJS.parse(a);b.figure_out_scope();var c=UglifyJS.Compressor(),d=b.transform(c);d.figure_out_scope(),d.compute_char_frequency(),d.mangle_names();var e=UglifyJS.OutputStream();return d.print(e),e.toString()}function r(a){var b=$("#plugin-section input:checked"),c=__configBridge.jqueryCheck.join("\n"),d=__configBridge.jqueryVersionCheck.join("\n");if(!b.length)return!1;var e=b.map(function(){return __js[this.value]}).toArray().join("\n");return a=v+a,e=c+d+e,{"bootstrap.js":a+e,"bootstrap.min.js":a+q(e)}}function s(){x.nextAll(".alert").remove()}function t(a){a.stopPropagation(),a.preventDefault();var b=a.originalEvent.hasOwnProperty("dataTransfer")?a.originalEvent.dataTransfer.files[0]:a.originalEvent.target.files[0],c=new FileReader;c.onload=function(a){var b=a.target.result;try{var c=JSON.parse(b);if(!$.isPlainObject(c))throw new Error("JSON data from config file is not an object.");h(c),d("success","Woohoo! Your configuration was successfully uploaded. Tweak your settings, then hit Download.",x)}catch(e){return d("danger","Shucks. We can only read valid .json
files. Please try again.",x)}},c.readAsText(b,"utf-8")}function u(a){a.stopPropagation(),a.preventDefault(),a.originalEvent.dataTransfer.dropEffect="copy",s()}var v="/*!\n * Bootstrap v3.3.1 (http://getbootstrap.com)\n * Copyright 2011-"+(new Date).getFullYear()+" Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n",w=window.File&&window.FileReader&&window.FileList&&window.Blob,x=$("#import-drop-target");w&&x.on("dragover",u).on("drop",t),$("#import-file-select").on("change",t),$("#import-manual-trigger").on("click",s);var y=$("#less-section input"),z=$("#plugin-section input"),A=$("#less-variables-section input");$("#less-section .toggle").on("click",function(a){a.preventDefault(),y.prop("checked",!y.is(":checked"))}),$("#plugin-section .toggle").on("click",function(a){a.preventDefault(),z.prop("checked",!z.is(":checked"))}),$("#less-variables-section .toggle").on("click",function(a){a.preventDefault(),A.val("")}),$("[data-dependencies]").on("click",function(){if($(this).is(":checked")){var a=this.getAttribute("data-dependencies");if(a){a=a.split(",");for(var b=0;bupgrade to a more modern browser (other than Safari).',!0)}var b=window.webkitURL||window.URL,d=new Blob([" "],{type:"image/svg+xml;charset=utf-8"}),e=b.createObjectURL(d);null!==/^blob:/.exec(e)&&w?$(" ").on("load",function(){B.prop("disabled",!1)}).on("error",a).attr("src",e):a()}(),i()};
\ No newline at end of file
diff --git a/Eclipse update site/WebContentV2/js/docs.min.js b/Eclipse update site/WebContentV2/js/docs.min.js
deleted file mode 100644
index c12e6e423..000000000
--- a/Eclipse update site/WebContentV2/js/docs.min.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*!
-
-Holder - client side image placeholders
-Version 2.4.1+f2l1h
-© 2014 Ivan Malopinsky - http://imsky.co
-
-Site: http://imsky.github.io/holder
-Issues: https://github.com/imsky/holder/issues
-License: http://opensource.org/licenses/MIT
-
-*/
-!function(a,b,c){b[a]=c}("onDomReady",this,function(a){"use strict";function b(a){if(!v){if(!g.body)return e(b);for(v=!0;a=w.shift();)e(a)}}function c(a){(t||a.type===i||g[m]===l)&&(d(),b())}function d(){t?(g[s](q,c,j),a[s](i,c,j)):(g[o](r,c),a[o](k,c))}function e(a,b){setTimeout(a,+b>=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}(this)),document.querySelectorAll||(document.querySelectorAll=function(a){var b,c=document.createElement("style"),d=[];for(document.documentElement.firstChild.appendChild(c),document._qsa=[],c.styleSheet.cssText=a+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",window.scrollBy(0,0),c.parentNode.removeChild(c);document._qsa.length;)b=document._qsa.shift(),b.style.removeAttribute("x-qsa"),d.push(b);return document._qsa=null,d}),document.querySelector||(document.querySelector=function(a){var b=document.querySelectorAll(a);return b.length?b[0]:null}),document.getElementsByClassName||(document.getElementsByClassName=function(a){return a=String(a).replace(/^|\s+/g,"."),document.querySelectorAll(a)}),Object.keys||(Object.keys=function(a){if(a!==Object(a))throw TypeError("Object.keys called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(this),function(){function a(b,c,d){b.document;var e,f=b.currentStyle[c].match(/([\d\.]+)(%|cm|em|in|mm|pc|pt|)/)||[0,0,""],g=f[1],h=f[2];return d=d?/%|em/.test(h)&&b.parentElement?a(b.parentElement,"fontSize",null):16:d,e="fontSize"==c?d:/width/i.test(c)?b.clientWidth:b.clientHeight,"%"==h?g/100*e:"cm"==h?.3937*g*96:"em"==h?g*d:"in"==h?96*g:"mm"==h?.3937*g*96/10:"pc"==h?12*g*96/72:"pt"==h?96*g/72:g}function b(a,b){var c="border"==b?"Width":"",d=b+"Top"+c,e=b+"Right"+c,f=b+"Bottom"+c,g=b+"Left"+c;a[b]=(a[d]==a[e]&&a[d]==a[f]&&a[d]==a[g]?[a[d]]:a[d]==a[f]&&a[g]==a[e]?[a[d],a[e]]:a[g]==a[e]?[a[d],a[e],a[f]]:[a[d],a[e],a[f],a[g]]).join(" ")}function c(c){var d,e=this,f=c.currentStyle,g=a(c,"fontSize"),h=function(a){return"-"+a.toLowerCase()};for(d in f)if(Array.prototype.push.call(e,"styleFloat"==d?"float":d.replace(/[A-Z]/,h)),"width"==d)e[d]=c.offsetWidth+"px";else if("height"==d)e[d]=c.offsetHeight+"px";else if("styleFloat"==d)e.float=f[d];else if(/margin.|padding.|border.+W/.test(d)&&"auto"!=e[d])e[d]=Math.round(a(c,d,g))+"px";else if(/^outline/.test(d))try{e[d]=f[d]}catch(i){e.outlineColor=f.color,e.outlineStyle=e.outlineStyle||"none",e.outlineWidth=e.outlineWidth||"0px",e.outline=[e.outlineColor,e.outlineWidth,e.outlineStyle].join(" ")}else e[d]=f[d];b(e,"margin"),b(e,"padding"),b(e,"border"),e.fontSize=Math.round(g)+"px"}window.getComputedStyle||(c.prototype={constructor:c,getPropertyPriority:function(){throw new Error("NotSupportedError: DOM Exception 9")},getPropertyValue:function(a){var b=a.replace(/-([a-z])/g,function(a){return a=a.charAt?a.split(""):a,a[1].toUpperCase()}),c=this[b];return c},item:function(a){return this[a]},removeProperty:function(){throw new Error("NoModificationAllowedError: DOM Exception 7")},setProperty:function(){throw new Error("NoModificationAllowedError: DOM Exception 7")},getPropertyCSSValue:function(){throw new Error("NotSupportedError: DOM Exception 9")}},window.getComputedStyle=function(a){return new c(a)})}(),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(a,b){a.augment=b()}(this,function(){"use strict";var a=function(){},b=Array.prototype.slice,c=function(c,d){var e=a.prototype="function"==typeof c?c.prototype:c,f=new a,g=d.apply(f,b.call(arguments,2).concat(e));if("object"==typeof g)for(var h in g)f[h]=g[h];if(!f.hasOwnProperty("constructor"))return f;var i=f.constructor;return i.prototype=f,i};return c.defclass=function(a){var b=a.constructor;return b.prototype=a,b},c.extend=function(a,b){return c(a,function(a){return this.uber=a,b})},c}),function(a,b){function c(a,b,c,f){var g=d(c.substr(c.lastIndexOf(a.domain)),a);g&&e(null,f,g,b)}function d(a,b){for(var c={theme:p(A.settings.themes.gray,null),stylesheets:b.stylesheets,holderURL:[]},d=!1,e=String.fromCharCode(11),f=a.replace(/([^\\])\//g,"$1"+e).split(e),g=/%[0-9a-f]{2}/gi,h=f.length,i=0;h>i;i++){var j=f[i];if(j.match(g))try{j=decodeURIComponent(j)}catch(k){j=f[i]}var l=!1;if(A.flags.dimensions.match(j))d=!0,c.dimensions=A.flags.dimensions.output(j),l=!0;else if(A.flags.fluid.match(j))d=!0,c.dimensions=A.flags.fluid.output(j),c.fluid=!0,l=!0;else if(A.flags.textmode.match(j))c.textmode=A.flags.textmode.output(j),l=!0;else if(A.flags.colors.match(j)){var m=A.flags.colors.output(j);c.theme=p(c.theme,m),l=!0}else if(b.themes[j])b.themes.hasOwnProperty(j)&&(c.theme=p(b.themes[j],null)),l=!0;else if(A.flags.font.match(j))c.font=A.flags.font.output(j),l=!0;else if(A.flags.auto.match(j))c.auto=!0,l=!0;else if(A.flags.text.match(j))c.text=A.flags.text.output(j),l=!0;else if(A.flags.random.match(j)){null==A.vars.cache.themeKeys&&(A.vars.cache.themeKeys=Object.keys(b.themes));var n=A.vars.cache.themeKeys[0|Math.random()*A.vars.cache.themeKeys.length];c.theme=p(b.themes[n],null),l=!0}l&&c.holderURL.push(j)}return c.holderURL.unshift(b.domain),c.holderURL=c.holderURL.join("/"),d?c:!1}function e(a,b,c,d){var e=c.dimensions,g=c.theme,h=e.width+"x"+e.height;if(a=null==a?c.fluid?"fluid":"image":a,null!=c.text&&(g.text=c.text,"object"===b.nodeName.toLowerCase())){for(var j=g.text.split("\\n"),l=0;l16?g.text.substring(0,16)+"…":g.text)+" ["+h+"]":h}),"image"==a?("html"!=o.renderer&&c.auto||(b.style.width=e.width+"px",b.style.height=e.height+"px"),"html"==o.renderer?b.style.backgroundColor=g.background:(f(a,{dimensions:e,theme:g,flags:c},b,o),c.textmode&&"exact"==c.textmode&&(A.vars.resizableImages.push(b),i(b)))):"background"==a&&"html"!=o.renderer?f(a,{dimensions:e,theme:g,flags:c},b,o):"fluid"==a&&("%"==e.height.slice(-1)?b.style.height=e.height:null!=c.auto&&c.auto||(b.style.height=e.height+"px"),"%"==e.width.slice(-1)?b.style.width=e.width:null!=c.auto&&c.auto||(b.style.width=e.width+"px"),("inline"==b.style.display||""===b.style.display||"none"==b.style.display)&&(b.style.display="block"),k(b),"html"==o.renderer?b.style.backgroundColor=g.background:(A.vars.resizableImages.push(b),i(b)))}function f(a,b,c,d){function e(){var a=null;switch(d.renderer){case"canvas":a=C(i);break;case"svg":a=D(i,d);break;default:throw"Holder: invalid renderer: "+d.renderer}return a}var f=null;switch(d.renderer){case"svg":if(!A.setup.supportsSVG)return;break;case"canvas":if(!A.setup.supportsCanvas)return;break;default:return}var h={width:b.dimensions.width,height:b.dimensions.height,theme:b.theme,flags:b.flags},i=g(h);if({text:h.text,width:h.width,height:h.height,textHeight:h.font.size,font:h.font.family,fontWeight:h.font.weight,template:h.theme},f=e(),null==f)throw"Holder: couldn't render placeholder";"background"==a?(c.style.backgroundImage="url("+f+")",c.style.backgroundSize=h.width+"px "+h.height+"px"):("img"===c.nodeName.toLowerCase()?m(c,{src:f}):"object"===c.nodeName.toLowerCase()&&(m(c,{data:f}),m(c,{type:"image/svg+xml"})),d.reRender&&setTimeout(function(){var a=e();if(null==a)throw"Holder: couldn't render placeholder";"img"===c.nodeName.toLowerCase()?m(c,{src:a}):"object"===c.nodeName.toLowerCase()&&(m(c,{data:a}),m(c,{type:"image/svg+xml"}))},100)),m(c,{"data-holder-rendered":!0})}function g(a){function b(a,b,c,d){b.width=c,b.height=d,a.width=Math.max(a.width,b.width),a.height+=b.height,a.add(b)}switch(a.font={family:a.theme.font?a.theme.font:"Arial, Helvetica, Open Sans, sans-serif",size:h(a.width,a.height,a.theme.size?a.theme.size:A.defaults.size),units:a.theme.units?a.theme.units:A.defaults.units,weight:a.theme.fontweight?a.theme.fontweight:"bold"},a.text=a.theme.text?a.theme.text:Math.floor(a.width)+"x"+Math.floor(a.height),a.flags.textmode){case"literal":a.text=a.flags.dimensions.width+"x"+a.flags.dimensions.height;break;case"exact":if(!a.flags.exactDimensions)break;a.text=Math.floor(a.flags.exactDimensions.width)+"x"+Math.floor(a.flags.exactDimensions.height)}var c=new E({width:a.width,height:a.height}),d=c.Shape,e=new d.Rect("holderBg",{fill:a.theme.background});e.resize(a.width,a.height),c.root.add(e);var f=new d.Group("holderTextGroup",{text:a.text,align:"center",font:a.font,fill:a.theme.foreground});f.moveTo(null,null,1),c.root.add(f);var g=f.textPositionData=B(c);if(!g)throw"Holder: staging fallback not supported yet.";f.properties.leading=g.boundingBox.height;var i=null,j=null;if(g.lineCount>1){var k=0,l=0,m=a.width*A.setup.lineWrapRatio,n=0;j=new d.Group("line"+n);for(var o=0;o=m||q===!0)&&(b(f,j,k,f.properties.leading),k=0,l+=f.properties.leading,n+=1,j=new d.Group("line"+n),j.y=l),q!==!0&&(i.moveTo(k,0),k+=g.spaceWidth+p.width,j.add(i))}b(f,j,k,f.properties.leading);for(var r in f.children)j=f.children[r],j.moveTo((f.width-j.width)/2,null,null);f.moveTo((a.width-f.width)/2,(a.height-f.height)/2,null),(a.height-f.height)/2<0&&f.moveTo(null,0,null)}else i=new d.Text(a.text),j=new d.Group("line0"),j.add(i),f.add(j),f.moveTo((a.width-g.boundingBox.width)/2,(a.height-g.boundingBox.height)/2,null);return c}function h(a,b,c){b=parseInt(b,10),a=parseInt(a,10);var d=Math.max(b,a),e=Math.min(b,a),f=A.defaults.scale,g=Math.min(.75*e,.75*d*f);return Math.round(Math.max(c,g))}function i(a){var b;b=null==a||null==a.nodeType?A.vars.resizableImages:[a];for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];if(d.holderData){var e=d.holderData.flags,g=j(d,z.invisibleErrorFn(i));if(g){if(e.fluid&&e.auto){var h=d.holderData.fluidConfig;switch(h.mode){case"width":g.height=g.width/h.ratio;break;case"height":g.width=g.height*h.ratio}}var k={dimensions:g,theme:e.theme,flags:e};e.textmode&&"exact"==e.textmode&&(e.exactDimensions=g,k.dimensions=e.dimensions),f("image",k,d,d.holderData.renderSettings)}}}}function j(a,b){var c={height:a.clientHeight,width:a.clientWidth};return c.height||c.width?(a.removeAttribute("data-holder-invisible"),c):(m(a,{"data-holder-invisible":!0}),void b.call(this,a))}function k(a){if(a.holderData){var b=j(a,z.invisibleErrorFn(k));if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}}}function l(a,b){return null==b?y.createElement(a):y.createElementNS(b,a)}function m(a,b){for(var c in b)a.setAttribute(c,b[c])}function n(a,b,c){if(null==a){a=l("svg",x);var d=l("defs",x);a.appendChild(d)}return a.webkitMatchesSelector&&a.setAttribute("xmlns",x),m(a,{width:b,height:c,viewBox:"0 0 "+b+" "+c,preserveAspectRatio:"none"}),a}function o(a,c){if(b.XMLSerializer){var d=new XMLSerializer,e="",f=c.stylesheets;if(a.querySelector("defs"),c.svgXMLStylesheet){for(var g=(new DOMParser).parseFromString(" ","application/xml"),h=f.length-1;h>=0;h--){var i=g.createProcessingInstruction("xml-stylesheet",'href="'+f[h]+'" rel="stylesheet"');g.insertBefore(i,g.firstChild)}var j=g.createProcessingInstruction("xml",'version="1.0" encoding="UTF-8" standalone="yes"');g.insertBefore(j,g.firstChild),g.removeChild(g.documentElement),e=d.serializeToString(g)}var k=d.serializeToString(a);return k=k.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),e+k}}function p(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);if(null!=b)for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);return c}function q(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c+":"+a[c]);return b.join(";")}function r(a){A.vars.debounceTimer||a.call(this),A.vars.debounceTimer&&clearTimeout(A.vars.debounceTimer),A.vars.debounceTimer=setTimeout(function(){A.vars.debounceTimer=null,a.call(this)},A.setup.debounce)}function s(){r(function(){i(null)})}function t(a){var c=null;return"string"==typeof a?c=y.querySelectorAll(a):b.NodeList&&a instanceof b.NodeList?c=a:b.Node&&a instanceof b.Node?c=[a]:b.HTMLCollection&&a instanceof b.HTMLCollection?c=a:null===a&&(c=[]),c}function u(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a}function v(a){for(var b=[],c=0,d=a.length-1;d>=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["",c,";"].join(""):a[d]);return b.join("")}function w(a){return a.replace(/(\d+);/g,function(a,b){return String.fromCharCode(b)})}var x="http://www.w3.org/2000/svg",y=b.document,z={addTheme:function(a,b){return null!=a&&null!=b&&(A.settings.themes[a]=b),delete A.vars.cache.themeKeys,this},addImage:function(a,b){var c=y.querySelectorAll(b);if(c.length)for(var d=0,e=c.length;e>d;d++){var f=l("img");m(f,{"data-src":a}),c[d].appendChild(f)}return this},run:function(a){a=a||{};var f={};A.vars.preempted=!0;var g=p(A.settings,a);f.renderer=g.renderer?g.renderer:A.setup.renderer,-1===A.setup.renderers.join(",").indexOf(f.renderer)&&(f.renderer=A.setup.supportsSVG?"svg":A.setup.supportsCanvas?"canvas":"html"),g.use_canvas?f.renderer="canvas":g.use_svg&&(f.renderer="svg");var h=t(g.images),i=t(g.bgnodes),j=t(g.stylenodes),k=t(g.objects);f.stylesheets=[],f.svgXMLStylesheet=!0,f.noFontFallback=g.noFontFallback?g.noFontFallback:!1;for(var m=0;m1){c.nodeValue="";for(var v=0;v=10}var d,e={bridge:null,version:"0.0.0",disabled:null,outdated:null,ready:null},f={},g=0,h={},i=0,j={},k=null,l=null,m=function(){var a,b,c,d,e="ZeroClipboard.swf";if(document.currentScript&&(d=document.currentScript.src));else{var f=document.getElementsByTagName("script");if("readyState"in f[0])for(a=f.length;a--&&("interactive"!==f[a].readyState||!(d=f[a].src)););else if("loading"===document.readyState)d=f[f.length-1].src;else{for(a=f.length;a--;){if(c=f[a].src,!c){b=null;break}if(c=c.split("#")[0].split("?")[0],c=c.slice(0,c.lastIndexOf("/")+1),null==b)b=c;else if(b!==c){b=null;break}}null!==b&&(d=b)}}return d&&(d=d.split("#")[0].split("?")[0],e=d.slice(0,d.lastIndexOf("/")+1)+e),e}(),n=function(){var a=/\-([a-z])/g,b=function(a,b){return b.toUpperCase()};return function(c){return c.replace(a,b)}}(),o=function(b,c){var d,e,f;return a.getComputedStyle?d=a.getComputedStyle(b,null).getPropertyValue(c):(e=n(c),d=b.currentStyle?b.currentStyle[e]:b.style[e]),"cursor"!==c||d&&"auto"!==d||(f=b.tagName.toLowerCase(),"a"!==f)?d:"pointer"},p=function(b){b||(b=a.event);var c;this!==a?c=this:b.target?c=b.target:b.srcElement&&(c=b.srcElement),K.activate(c)},q=function(a,b,c){a&&1===a.nodeType&&(a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c))},r=function(a,b,c){a&&1===a.nodeType&&(a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c))},s=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)||a.classList.add(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},t=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)&&a.classList.remove(b),a;if(b&&"string"==typeof b||void 0===b){var c=(b||"").split(/\s+/);if(1===a.nodeType&&a.className)if(b){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},u=function(){var a,b,c,d=1;return"function"==typeof document.body.getBoundingClientRect&&(a=document.body.getBoundingClientRect(),b=a.right-a.left,c=document.body.offsetWidth,d=Math.round(b/c*100)/100),d},v=function(b,c){var d={left:0,top:0,width:0,height:0,zIndex:B(c)-1};if(b.getBoundingClientRect){var e,f,g,h=b.getBoundingClientRect();"pageXOffset"in a&&"pageYOffset"in a?(e=a.pageXOffset,f=a.pageYOffset):(g=u(),e=Math.round(document.documentElement.scrollLeft/g),f=Math.round(document.documentElement.scrollTop/g));var i=document.documentElement.clientLeft||0,j=document.documentElement.clientTop||0;d.left=h.left+e-i,d.top=h.top+f-j,d.width="width"in h?h.width:h.right-h.left,d.height="height"in h?h.height:h.bottom-h.top}return d},w=function(a,b){var c=null==b||b&&b.cacheBust===!0&&b.useNoCache===!0;return c?(-1===a.indexOf("?")?"?":"&")+"noCache="+(new Date).getTime():""},x=function(b){var c,d,e,f=[],g=[],h=[];if(b.trustedOrigins&&("string"==typeof b.trustedOrigins?g.push(b.trustedOrigins):"object"==typeof b.trustedOrigins&&"length"in b.trustedOrigins&&(g=g.concat(b.trustedOrigins))),b.trustedDomains&&("string"==typeof b.trustedDomains?g.push(b.trustedDomains):"object"==typeof b.trustedDomains&&"length"in b.trustedDomains&&(g=g.concat(b.trustedDomains))),g.length)for(c=0,d=g.length;d>c;c++)if(g.hasOwnProperty(c)&&g[c]&&"string"==typeof g[c]){if(e=E(g[c]),!e)continue;if("*"===e){h=[e];break}h.push.apply(h,[e,"//"+e,a.location.protocol+"//"+e])}return h.length&&f.push("trustedOrigins="+encodeURIComponent(h.join(","))),"string"==typeof b.jsModuleId&&b.jsModuleId&&f.push("jsModuleId="+encodeURIComponent(b.jsModuleId)),f.join("&")},y=function(a,b,c){if("function"==typeof b.indexOf)return b.indexOf(a,c);var d,e=b.length;for("undefined"==typeof c?c=0:0>c&&(c=e+c),d=c;e>d;d++)if(b.hasOwnProperty(d)&&b[d]===a)return d;return-1},z=function(a){if("string"==typeof a)throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},A=function(b,c,d,e){e?a.setTimeout(function(){b.apply(c,d)},0):b.apply(c,d)},B=function(a){var b,c;return a&&("number"==typeof a&&a>0?b=a:"string"==typeof a&&(c=parseInt(a,10))&&!isNaN(c)&&c>0&&(b=c)),b||("number"==typeof N.zIndex&&N.zIndex>0?b=N.zIndex:"string"==typeof N.zIndex&&(c=parseInt(N.zIndex,10))&&!isNaN(c)&&c>0&&(b=c)),b||0},C=function(a,b){if(a&&b!==!1&&"undefined"!=typeof console&&console&&(console.warn||console.log)){var c="`"+a+"` is deprecated. See docs for more info:\n https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations";console.warn?console.warn(c):console.log(c)}},D=function(){var a,b,c,d,e,f,g=arguments[0]||{};for(a=1,b=arguments.length;b>a;a++)if(null!=(c=arguments[a]))for(d in c)if(c.hasOwnProperty(d)){if(e=g[d],f=c[d],g===f)continue;void 0!==f&&(g[d]=f)}return g},E=function(a){if(null==a||""===a)return null;if(a=a.replace(/^\s+|\s+$/g,""),""===a)return null;var b=a.indexOf("//");a=-1===b?a:a.slice(b+2);var c=a.indexOf("/");return a=-1===c?a:-1===b||0===c?null:a.slice(0,c),a&&".swf"===a.slice(-4).toLowerCase()?null:a||null},F=function(){var a=function(a,b){var c,d,e;if(null!=a&&"*"!==b[0]&&("string"==typeof a&&(a=[a]),"object"==typeof a&&"length"in a))for(c=0,d=a.length;d>c;c++)if(a.hasOwnProperty(c)&&(e=E(a[c]))){if("*"===e){b.length=0,b.push("*");break}-1===y(e,b)&&b.push(e)}},b={always:"always",samedomain:"sameDomain",never:"never"};return function(c,d){var e,f=d.allowScriptAccess;if("string"==typeof f&&(e=f.toLowerCase())&&/^always|samedomain|never$/.test(e))return b[e];var g=E(d.moviePath);null===g&&(g=c);var h=[];a(d.trustedOrigins,h),a(d.trustedDomains,h);var i=h.length;if(i>0){if(1===i&&"*"===h[0])return"always";if(-1!==y(c,h))return 1===i&&c===g?"sameDomain":"always"}return"never"}}(),G=function(a){if(null==a)return[];if(Object.keys)return Object.keys(a);var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},H=function(a){if(a)for(var b in a)a.hasOwnProperty(b)&&delete a[b];return a},I=function(){try{return document.activeElement}catch(a){}return null},J=function(){var a=!1;if("boolean"==typeof e.disabled)a=e.disabled===!1;else{if("function"==typeof ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){}!a&&navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0)}return a},K=function(a,b){return this instanceof K?(this.id=""+g++,h[this.id]={instance:this,elements:[],handlers:{}},a&&this.clip(a),"undefined"!=typeof b&&(C("new ZeroClipboard(elements, options)",N.debug),K.config(b)),this.options=K.config(),"boolean"!=typeof e.disabled&&(e.disabled=!J()),void(e.disabled===!1&&e.outdated!==!0&&null===e.bridge&&(e.outdated=!1,e.ready=!1,O()))):new K(a,b)};K.prototype.setText=function(a){return a&&""!==a&&(f["text/plain"]=a,e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setText?e.bridge.setText(a):e.ready=!1),this},K.prototype.setSize=function(a,b){return e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setSize?e.bridge.setSize(a,b):e.ready=!1,this};var L=function(a){e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setHandCursor?e.bridge.setHandCursor(a):e.ready=!1};K.prototype.destroy=function(){this.unclip(),this.off(),delete h[this.id]};var M=function(){var a,b,c,d=[],e=G(h);for(a=0,b=e.length;b>a;a++)c=h[e[a]].instance,c&&c instanceof K&&d.push(c);return d};K.version="1.3.5";var N={swfPath:m,trustedDomains:a.location.host?[a.location.host]:[],cacheBust:!0,forceHandCursor:!1,zIndex:999999999,debug:!0,title:null,autoActivate:!0};K.config=function(a){if("object"==typeof a&&null!==a&&D(N,a),"string"!=typeof a||!a){var b={};for(var c in N)N.hasOwnProperty(c)&&(b[c]="object"==typeof N[c]&&null!==N[c]?"length"in N[c]?N[c].slice(0):D({},N[c]):N[c]);return b}return N.hasOwnProperty(a)?N[a]:void 0},K.destroy=function(){K.deactivate();for(var a in h)if(h.hasOwnProperty(a)&&h[a]){var b=h[a].instance;b&&"function"==typeof b.destroy&&b.destroy()}var c=P(e.bridge);c&&c.parentNode&&(c.parentNode.removeChild(c),e.ready=null,e.bridge=null)},K.activate=function(a){d&&(t(d,N.hoverClass),t(d,N.activeClass)),d=a,s(a,N.hoverClass),Q();var b=N.title||a.getAttribute("title");if(b){var c=P(e.bridge);c&&c.setAttribute("title",b)}var f=N.forceHandCursor===!0||"pointer"===o(a,"cursor");L(f)},K.deactivate=function(){var a=P(e.bridge);a&&(a.style.left="0px",a.style.top="-9999px",a.removeAttribute("title")),d&&(t(d,N.hoverClass),t(d,N.activeClass),d=null)};var O=function(){var b,c,d=document.getElementById("global-zeroclipboard-html-bridge");if(!d){var f=K.config();f.jsModuleId="string"==typeof k&&k||"string"==typeof l&&l||null;var g=F(a.location.host,N),h=x(f),i=N.moviePath+w(N.moviePath,N),j=' ';d=document.createElement("div"),d.id="global-zeroclipboard-html-bridge",d.setAttribute("class","global-zeroclipboard-container"),d.style.position="absolute",d.style.left="0px",d.style.top="-9999px",d.style.width="15px",d.style.height="15px",d.style.zIndex=""+B(N.zIndex),document.body.appendChild(d),d.innerHTML=j}b=document["global-zeroclipboard-flash-bridge"],b&&(c=b.length)&&(b=b[c-1]),e.bridge=b||d.children[0].lastElementChild},P=function(a){for(var b=/^OBJECT|EMBED$/,c=a&&a.parentNode;c&&b.test(c.nodeName)&&c.parentNode;)c=c.parentNode;return c||null},Q=function(){if(d){var a=v(d,N.zIndex),b=P(e.bridge);b&&(b.style.top=a.top+"px",b.style.left=a.left+"px",b.style.width=a.width+"px",b.style.height=a.height+"px",b.style.zIndex=a.zIndex+1),e.ready===!0&&e.bridge&&"function"==typeof e.bridge.setSize?e.bridge.setSize(a.width,a.height):e.ready=!1}return this};K.prototype.on=function(a,b){var c,d,f,g={},i=h[this.id]&&h[this.id].handlers;if("string"==typeof a&&a)f=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)a.hasOwnProperty(c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.on(c,a[c]);if(f&&f.length){for(c=0,d=f.length;d>c;c++)a=f[c].replace(/^on/,""),g[a]=!0,i[a]||(i[a]=[]),i[a].push(b);g.noflash&&e.disabled&&T.call(this,"noflash",{}),g.wrongflash&&e.outdated&&T.call(this,"wrongflash",{flashVersion:e.version}),g.load&&e.ready&&T.call(this,"load",{flashVersion:e.version})}return this},K.prototype.off=function(a,b){var c,d,e,f,g,i=h[this.id]&&h[this.id].handlers;if(0===arguments.length)f=G(i);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)a.hasOwnProperty(c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),g=i[a],g&&g.length)if(b)for(e=y(b,g);-1!==e;)g.splice(e,1),e=y(b,g,e);else i[a].length=0;return this},K.prototype.handlers=function(a){var b,c=null,d=h[this.id]&&h[this.id].handlers;if(d){if("string"==typeof a&&a)return d[a]?d[a].slice(0):null;c={};for(b in d)d.hasOwnProperty(b)&&d[b]&&(c[b]=d[b].slice(0))}return c};var R=function(b,c,d,e){var f=h[this.id]&&h[this.id].handlers[b];if(f&&f.length){var g,i,j,k=c||this;for(g=0,i=f.length;i>g;g++)j=f[g],c=k,"string"==typeof j&&"function"==typeof a[j]&&(j=a[j]),"object"==typeof j&&j&&"function"==typeof j.handleEvent&&(c=j,j=j.handleEvent),"function"==typeof j&&A(j,c,d,e)}return this};K.prototype.clip=function(a){a=z(a);for(var b=0;bd;d++)f=h[c[d]].instance,f&&f instanceof K&&g.push(f);return g};N.hoverClass="zeroclipboard-is-hover",N.activeClass="zeroclipboard-is-active",N.trustedOrigins=null,N.allowScriptAccess=null,N.useNoCache=!0,N.moviePath="ZeroClipboard.swf",K.detectFlashSupport=function(){return C("ZeroClipboard.detectFlashSupport",N.debug),J()},K.dispatch=function(a,b){if("string"==typeof a&&a){var c=a.toLowerCase().replace(/^on/,"");if(c)for(var e=d&&N.autoActivate===!0?S(d):M(),f=0,g=e.length;g>f;f++)T.call(e[f],c,b)}},K.prototype.setHandCursor=function(a){return C("ZeroClipboard.prototype.setHandCursor",N.debug),a="boolean"==typeof a?a:!!a,L(a),N.forceHandCursor=a,this},K.prototype.reposition=function(){return C("ZeroClipboard.prototype.reposition",N.debug),Q()},K.prototype.receiveEvent=function(a,b){if(C("ZeroClipboard.prototype.receiveEvent",N.debug),"string"==typeof a&&a){var c=a.toLowerCase().replace(/^on/,"");c&&T.call(this,c,b)}},K.prototype.setCurrent=function(a){return C("ZeroClipboard.prototype.setCurrent",N.debug),K.activate(a),this},K.prototype.resetBridge=function(){return C("ZeroClipboard.prototype.resetBridge",N.debug),K.deactivate(),this},K.prototype.setTitle=function(a){if(C("ZeroClipboard.prototype.setTitle",N.debug),a=a||N.title||d&&d.getAttribute("title")){var b=P(e.bridge);b&&b.setAttribute("title",a)}return this},K.setDefaults=function(a){C("ZeroClipboard.setDefaults",N.debug),K.config(a)},K.prototype.addEventListener=function(a,b){return C("ZeroClipboard.prototype.addEventListener",N.debug),this.on(a,b)},K.prototype.removeEventListener=function(a,b){return C("ZeroClipboard.prototype.removeEventListener",N.debug),this.off(a,b)},K.prototype.ready=function(){return C("ZeroClipboard.prototype.ready",N.debug),e.ready===!0};var T=function(a,g){a=a.toLowerCase().replace(/^on/,"");var h=g&&g.flashVersion&&b(g.flashVersion)||null,i=d,j=!0;switch(a){case"load":if(h){if(!c(h))return void T.call(this,"onWrongFlash",{flashVersion:h});e.outdated=!1,e.ready=!0,e.version=h}break;case"wrongflash":h&&!c(h)&&(e.outdated=!0,e.ready=!1,e.version=h);break;case"mouseover":s(i,N.hoverClass);break;case"mouseout":N.autoActivate===!0&&K.deactivate();break;case"mousedown":s(i,N.activeClass);break;case"mouseup":t(i,N.activeClass);break;case"datarequested":if(i){var k=i.getAttribute("data-clipboard-target"),l=k?document.getElementById(k):null;if(l){var m=l.value||l.textContent||l.innerText;m&&this.setText(m)}else{var n=i.getAttribute("data-clipboard-text");n&&this.setText(n)}}j=!1;break;case"complete":H(f),i&&i!==I()&&i.focus&&i.focus()}var o=i,p=[this,g];return R.call(this,a,o,p,j)};"function"==typeof define&&define.amd?define(["require","exports","module"],function(a,b,c){return k=c&&c.id||null,K}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports&&"function"==typeof a.require?(l=module.id||null,module.exports=K):a.ZeroClipboard=K}(function(){return this}()),/*!
- * JavaScript for Bootstrap's docs (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
- * details, see http://creativecommons.org/licenses/by/3.0/.
- */
-!function(a){"use strict";a(function(){var b=a(window),c=a(document.body);c.scrollspy({target:".bs-docs-sidebar"}),b.on("load",function(){c.scrollspy("refresh")}),a(".bs-docs-container [href=#]").click(function(a){a.preventDefault()}),setTimeout(function(){var b=a(".bs-docs-sidebar");b.affix({offset:{top:function(){var c=b.offset().top,d=parseInt(b.children(0).css("margin-top"),10),e=a(".bs-docs-nav").height();return this.top=c-e-d},bottom:function(){return this.bottom=a(".bs-docs-footer").outerHeight(!0)}}})},100),setTimeout(function(){a(".bs-top").affix()},100),function(){var b=a("#bs-theme-stylesheet"),c=a(".bs-docs-theme-toggle"),d=function(){b.attr("href",b.attr("data-href")),c.text("Disable theme preview"),localStorage.setItem("previewTheme",!0)};localStorage.getItem("previewTheme")&&d(),c.click(function(){var a=b.attr("href");a&&0!==a.indexOf("data")?(b.attr("href",""),c.text("Preview theme"),localStorage.removeItem("previewTheme")):d()})}(),a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).siblings(".progress").find(".progress-bar-striped").toggleClass("active")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='Copy
';a(this).before(b)});var d=new ZeroClipboard(a(".btn-clipboard")),e=a("#global-zeroclipboard-html-bridge");d.on("load",function(){e.data("placement","top").attr("title","Copy to clipboard").tooltip()}),d.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),d.on("complete",function(){e.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),d.on("noflash wrongflash",function(){e.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery);
\ No newline at end of file
diff --git a/Eclipse update site/WebContentV2/js/ie-emulation-modes-warning.js b/Eclipse update site/WebContentV2/js/ie-emulation-modes-warning.js
deleted file mode 100644
index 896ed6225..000000000
--- a/Eclipse update site/WebContentV2/js/ie-emulation-modes-warning.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
-// IT'S JUST JUNK FOR OUR DOCS!
-// ++++++++++++++++++++++++++++++++++++++++++
-/*!
- * Copyright 2014 Twitter, Inc.
- *
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
- * details, see http://creativecommons.org/licenses/by/3.0/.
- */
-// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
-(function () {
- 'use strict';
-
- function emulatedIEMajorVersion() {
- var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
- if (groups === null) {
- return null
- }
- var ieVersionNum = parseInt(groups[1], 10)
- var ieMajorVersion = Math.floor(ieVersionNum)
- return ieMajorVersion
- }
-
- function actualNonEmulatedIEMajorVersion() {
- // Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
- // IE JavaScript conditional compilation docs: http://msdn.microsoft.com/en-us/library/ie/121hztk3(v=vs.94).aspx
- // @cc_on docs: http://msdn.microsoft.com/en-us/library/ie/8ka90k2e(v=vs.94).aspx
- var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line
- if (jscriptVersion === undefined) {
- return 11 // IE11+ not in emulation mode
- }
- if (jscriptVersion < 9) {
- return 8 // IE8 (or lower; haven't tested on IE<8)
- }
- return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
- }
-
- var ua = window.navigator.userAgent
- if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
- return // Opera, which might pretend to be IE
- }
- var emulated = emulatedIEMajorVersion()
- if (emulated === null) {
- return // Not IE
- }
- var nonEmulated = actualNonEmulatedIEMajorVersion()
-
- if (emulated !== nonEmulated) {
- window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
- }
-})();
diff --git a/Eclipse update site/WebContentV2/js/ie10-viewport-bug-workaround.js b/Eclipse update site/WebContentV2/js/ie10-viewport-bug-workaround.js
deleted file mode 100644
index 7f53b6145..000000000
--- a/Eclipse update site/WebContentV2/js/ie10-viewport-bug-workaround.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*!
- * IE10 viewport hack for Surface/desktop Windows 8 bug
- * Copyright 2014 Twitter, Inc.
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
- * details, see http://creativecommons.org/licenses/by/3.0/.
- */
-
-// See the Getting Started docs for more information:
-// http://getbootstrap.com/getting-started/#support-ie10-width
-
-(function () {
- 'use strict';
- if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
- var msViewportStyle = document.createElement('style')
- msViewportStyle.appendChild(
- document.createTextNode(
- '@-ms-viewport{width:auto!important}'
- )
- )
- document.querySelector('head').appendChild(msViewportStyle)
- }
-})();
diff --git a/Eclipse update site/WebContentV2/js/ie8-responsive-file-warning.js b/Eclipse update site/WebContentV2/js/ie8-responsive-file-warning.js
deleted file mode 100644
index 280a73f40..000000000
--- a/Eclipse update site/WebContentV2/js/ie8-responsive-file-warning.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
-// IT'S JUST JUNK FOR OUR DOCS!
-// ++++++++++++++++++++++++++++++++++++++++++
-/*!
- * Copyright 2011-2014 Twitter, Inc.
- *
- * Licensed under the Creative Commons Attribution 3.0 Unported License. For
- * details, see http://creativecommons.org/licenses/by/3.0/.
- */
-// Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8.
-if (window.location.protocol == 'file:') {
- window.alert('ERROR: Bootstrap\'s responsive CSS is disabled!\nSee getbootstrap.com/getting-started/#respond-file-proto for details.')
-}
diff --git a/Eclipse update site/WebContentV2/js/jquery-1.11.1.min.js b/Eclipse update site/WebContentV2/js/jquery-1.11.1.min.js
deleted file mode 100644
index ab28a2472..000000000
--- a/Eclipse update site/WebContentV2/js/jquery-1.11.1.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML=" ",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML=" ","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML=" ",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
-if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" a ",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML=" ",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h ]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""," "],legend:[1,""," "],area:[1,""," "],param:[1,""," "],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:k.htmlSerialize?[0,"",""]:[1,"X","
"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" a ",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
-},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();ca ",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/Eclipse update site/WebContentV2/js/jquery.nav.js b/Eclipse update site/WebContentV2/js/jquery.nav.js
deleted file mode 100644
index 129644356..000000000
--- a/Eclipse update site/WebContentV2/js/jquery.nav.js
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * jQuery One Page Nav Plugin
- * http://github.com/davist11/jQuery-One-Page-Nav
- *
- * Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
- * Dual licensed under the MIT and GPL licenses.
- * Uses the same license as jQuery, see:
- * http://jquery.org/license
- *
- * @version 3.0.0
- *
- * Example usage:
- * $('#nav').onePageNav({
- * currentClass: 'current',
- * changeHash: false,
- * scrollSpeed: 750
- * });
- */
-
-;(function($, window, document, undefined){
-
- // our plugin constructor
- var OnePageNav = function(elem, options){
- this.elem = elem;
- this.$elem = $(elem);
- this.options = options;
- this.metadata = this.$elem.data('plugin-options');
- this.$win = $(window);
- this.sections = {};
- this.didScroll = false;
- this.$doc = $(document);
- this.docHeight = this.$doc.height();
- };
-
- // the plugin prototype
- OnePageNav.prototype = {
- defaults: {
- navItems: 'a',
- currentClass: 'current',
- changeHash: false,
- easing: 'swing',
- filter: '',
- scrollSpeed: 750,
- scrollThreshold: 0.5,
- begin: false,
- end: false,
- scrollChange: false
- },
-
- init: function() {
- // Introduce defaults that can be extended either
- // globally or using an object literal.
- this.config = $.extend({}, this.defaults, this.options, this.metadata);
-
- this.$nav = this.$elem.find(this.config.navItems);
-
- //Filter any links out of the nav
- if(this.config.filter !== '') {
- this.$nav = this.$nav.filter(this.config.filter);
- }
-
- //Handle clicks on the nav
- this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this));
-
- //Get the section positions
- this.getPositions();
-
- //Handle scroll changes
- this.bindInterval();
-
- //Update the positions on resize too
- this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this));
-
- return this;
- },
-
- adjustNav: function(self, $parent) {
- self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass);
- $parent.addClass(self.config.currentClass);
- },
-
- bindInterval: function() {
- var self = this;
- var docHeight;
-
- self.$win.on('scroll.onePageNav', function() {
- self.didScroll = true;
- });
-
- self.t = setInterval(function() {
- docHeight = self.$doc.height();
-
- //If it was scrolled
- if(self.didScroll) {
- self.didScroll = false;
- self.scrollChange();
- }
-
- //If the document height changes
- if(docHeight !== self.docHeight) {
- self.docHeight = docHeight;
- self.getPositions();
- }
- }, 250);
- },
-
- getHash: function($link) {
- return $link.attr('href').split('#')[1];
- },
-
- getPositions: function() {
- var self = this;
- var linkHref;
- var topPos;
- var $target;
-
- self.$nav.each(function() {
- linkHref = self.getHash($(this));
- $target = $('#' + linkHref);
-
- if($target.length) {
- topPos = $target.offset().top;
- self.sections[linkHref] = Math.round(topPos);
- }
- });
- },
-
- getSection: function(windowPos) {
- var returnValue = null;
- var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold);
-
- for(var section in this.sections) {
- if((this.sections[section] - windowHeight) < windowPos) {
- returnValue = section;
- }
- }
-
- return returnValue;
- },
-
- handleClick: function(e) {
- var self = this;
- var $link = $(e.currentTarget);
- var $parent = $link.parent();
- var newLoc = '#' + self.getHash($link);
-
- if(!$parent.hasClass(self.config.currentClass)) {
- //Start callback
- if(self.config.begin) {
- self.config.begin();
- }
-
- //Change the highlighted nav item
- self.adjustNav(self, $parent);
-
- //Removing the auto-adjust on scroll
- self.unbindInterval();
-
- //Scroll to the correct position
- self.scrollTo(newLoc, function() {
- //Do we need to change the hash?
- if(self.config.changeHash) {
- window.location.hash = newLoc;
- }
-
- //Add the auto-adjust on scroll back in
- self.bindInterval();
-
- //End callback
- if(self.config.end) {
- self.config.end();
- }
- });
- }
-
- e.preventDefault();
- },
-
- scrollChange: function() {
- var windowTop = this.$win.scrollTop();
- var position = this.getSection(windowTop);
- var $parent;
-
- //If the position is set
- if(position !== null) {
- $parent = this.$elem.find('a[href$="#' + position + '"]').parent();
-
- //If it's not already the current section
- if(!$parent.hasClass(this.config.currentClass)) {
- //Change the highlighted nav item
- this.adjustNav(this, $parent);
-
- //If there is a scrollChange callback
- if(this.config.scrollChange) {
- this.config.scrollChange($parent);
- }
- }
- }
- },
-
- scrollTo: function(target, callback) {
- var offset = $(target).offset().top;
-
- $('html, body').animate({
- scrollTop: offset
- }, this.config.scrollSpeed, this.config.easing, callback);
- },
-
- unbindInterval: function() {
- clearInterval(this.t);
- this.$win.unbind('scroll.onePageNav');
- }
- };
-
- OnePageNav.defaults = OnePageNav.prototype.defaults;
-
- $.fn.onePageNav = function(options) {
- return this.each(function() {
- new OnePageNav(this, options).init();
- });
- };
-
-})( jQuery, window , document );
\ No newline at end of file
diff --git a/Eclipse update site/WebContentV2/js/jquery.scrollTo.min.js b/Eclipse update site/WebContentV2/js/jquery.scrollTo.min.js
deleted file mode 100644
index d9f9b1599..000000000
--- a/Eclipse update site/WebContentV2/js/jquery.scrollTo.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) 2007-2014 Ariel Flesler - aflesler
gmailcom | http://flesler.blogspot.com
- * Licensed under MIT
- * @author Ariel Flesler
- * @version 1.4.14
- */
-;(function(k){'use strict';k(['jquery'],function($){var j=$.scrollTo=function(a,b,c){return $(window).scrollTo(a,b,c)};j.defaults={axis:'xy',duration:0,limit:!0};j.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(f,g,h){if(typeof g=='object'){h=g;g=0}if(typeof h=='function')h={onAfter:h};if(f=='max')f=9e9;h=$.extend({},j.defaults,h);g=g||h.duration;h.queue=h.queue&&h.axis.length>1;if(h.queue)g/=2;h.offset=both(h.offset);h.over=both(h.over);return this._scrollable().each(function(){if(f==null)return;var d=this,$elem=$(d),targ=f,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=win?$(targ):$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}var e=$.isFunction(h.offset)&&h.offset(d,targ)||h.offset;$.each(h.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=j.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(h.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=e[pos]||0;if(h.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*h.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(h.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&h.queue){if(old!=attr[key])animate(h.onAfterFirst);delete attr[key]}});animate(h.onAfter);function animate(a){$elem.animate(attr,g,h.easing,a&&function(){a.call(this,targ,h)})}}).end()};j.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}return j})}(typeof define==='function'&&define.amd?define:function(a,b){if(typeof module!=='undefined'&&module.exports){module.exports=b(require('jquery'))}else{b(jQuery)}}));
\ No newline at end of file
diff --git a/Eclipse update site/WebContentV2/js/npm.js b/Eclipse update site/WebContentV2/js/npm.js
deleted file mode 100644
index bf6aa8060..000000000
--- a/Eclipse update site/WebContentV2/js/npm.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
-require('../../js/transition.js')
-require('../../js/alert.js')
-require('../../js/button.js')
-require('../../js/carousel.js')
-require('../../js/collapse.js')
-require('../../js/dropdown.js')
-require('../../js/modal.js')
-require('../../js/tooltip.js')
-require('../../js/popover.js')
-require('../../js/scrollspy.js')
-require('../../js/tab.js')
-require('../../js/affix.js')
\ No newline at end of file
diff --git a/Eclipse update site/WebContentV2/js/raw-files.min.js b/Eclipse update site/WebContentV2/js/raw-files.min.js
deleted file mode 100644
index 89ab36f64..000000000
--- a/Eclipse update site/WebContentV2/js/raw-files.min.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-var __js = {"affix.js":"/* ========================================================================\n * Bootstrap: affix.js v3.3.1\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed =\n this.unpin =\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && colliderTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = $('body').height()\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.3.1\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.3.1\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n else $parent.find('.active').removeClass('active')\n }\n if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n e.preventDefault()\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","carousel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.3.1\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var delta = direction == 'prev' ? -1 : 1\n var activeIndex = this.getItemIndex(active)\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.3.1\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $(this.options.trigger).filter('[href=\"#' + element.id + '\"], [data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true,\n trigger: '[data-toggle=\"collapse\"]'\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && option == 'show') options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.3.1\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.1'\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $('').insertAfter($(this)).on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown', relatedTarget)\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.divider):visible a'\n var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.js v3.3.1\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n this.scrollbarWidth = 0\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n if (that.options.backdrop) that.adjustBackdrop()\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$element.find('.modal-dialog') // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
')\n .prependTo(this.$element)\n .on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n if (this.options.backdrop) this.adjustBackdrop()\n this.adjustDialog()\n }\n\n Modal.prototype.adjustBackdrop = function () {\n this.$backdrop\n .css('height', 0)\n .css('height', this.$element[0].scrollHeight)\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', '')\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.3.1\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n var selector = options && options.selector\n\n if (!data && option == 'destroy') return\n if (selector) {\n if (!data) $this.data('bs.popover', (data = {}))\n if (!data[selector]) data[selector] = new Popover(this, options)\n } else {\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n }\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","scrollspy.js":"/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.1\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var process = $.proxy(this.process, this)\n\n this.$body = $('body')\n this.$scrollElement = $(element).is('body') ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', process)\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n var self = this\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","tab.js":"/* ========================================================================\n * Bootstrap: tab.js v3.3.1\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\n\n Tab.VERSION = '3.3.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu')) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","tooltip.js":"/* ========================================================================\n * Bootstrap: tooltip.js v3.3.1\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (self && self.$tip && self.$tip.is(':visible')) {\n self.hoverState = 'in'\n return\n }\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var $container = this.options.container ? $(this.options.container) : this.$element.parent()\n var containerDim = this.getPosition($container)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top = offset.top + marginTop\n offset.left = offset.left + marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {\n this.arrow()\n .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isHorizontal ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = this.tip()\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n return (this.$tip = this.$tip || $(this.options.template))\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n var selector = options && options.selector\n\n if (!data && option == 'destroy') return\n if (selector) {\n if (!data) $this.data('bs.tooltip', (data = {}))\n if (!data[selector]) data[selector] = new Tooltip(this, options)\n } else {\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n }\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","transition.js":"/* ========================================================================\n * Bootstrap: transition.js v3.3.1\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n"}
-var __less = {"alerts.less":"//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","badges.less":"//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n .btn-xs & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n .list-group-item > & {\n float: right;\n }\n .list-group-item > & + & {\n margin-right: 5px;\n }\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","bootstrap.less":"// Core variables and mixins\n@import \"variables.less\";\n@import \"mixins.less\";\n\n// Reset and dependencies\n@import \"normalize.less\";\n@import \"print.less\";\n@import \"glyphicons.less\";\n\n// Core CSS\n@import \"scaffolding.less\";\n@import \"type.less\";\n@import \"code.less\";\n@import \"grid.less\";\n@import \"tables.less\";\n@import \"forms.less\";\n@import \"buttons.less\";\n\n// Components\n@import \"component-animations.less\";\n@import \"dropdowns.less\";\n@import \"button-groups.less\";\n@import \"input-groups.less\";\n@import \"navs.less\";\n@import \"navbar.less\";\n@import \"breadcrumbs.less\";\n@import \"pagination.less\";\n@import \"pager.less\";\n@import \"labels.less\";\n@import \"badges.less\";\n@import \"jumbotron.less\";\n@import \"thumbnails.less\";\n@import \"alerts.less\";\n@import \"progress-bars.less\";\n@import \"media.less\";\n@import \"list-group.less\";\n@import \"panels.less\";\n@import \"responsive-embed.less\";\n@import \"wells.less\";\n@import \"close.less\";\n\n// Components w/ JavaScript\n@import \"modals.less\";\n@import \"tooltip.less\";\n@import \"popovers.less\";\n@import \"carousel.less\";\n\n// Utility classes\n@import \"utilities.less\";\n@import \"responsive-utilities.less\";\n","breadcrumbs.less":"//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","button-groups.less":"//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","buttons.less":"//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","carousel.less":"//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n transition: transform .6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n\n &.next,\n &.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","close.less":"//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","code.less":"//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","component-animations.less":"//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n visibility: hidden;\n\n &.in { display: block; visibility: visible; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","dropdowns.less":"//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","forms.less":"//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: @input-height-base;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm {\n line-height: @input-height-small;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg {\n line-height: @input-height-large;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because
s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm,\n.form-group-sm .form-control {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n\n.input-lg,\n.form-group-lg .form-control {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: (@grid-gutter-width / 2);\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n }\n }\n }\n}\n","glyphicons.less":"//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star \n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","grid.less":"//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","input-groups.less":"//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","jumbotron.less":"//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding (@jumbotron-padding / 2);\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding: (@jumbotron-padding * 1.6) 0;\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","labels.less":"//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","list-group.less":"//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on , , or .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","media.less":".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","mixins.less":"// Mixins\n// --------------------------------------------------\n\n// Utilities\n@import \"mixins/hide-text.less\";\n@import \"mixins/opacity.less\";\n@import \"mixins/image.less\";\n@import \"mixins/labels.less\";\n@import \"mixins/reset-filter.less\";\n@import \"mixins/resize.less\";\n@import \"mixins/responsive-visibility.less\";\n@import \"mixins/size.less\";\n@import \"mixins/tab-focus.less\";\n@import \"mixins/text-emphasis.less\";\n@import \"mixins/text-overflow.less\";\n@import \"mixins/vendor-prefixes.less\";\n\n// Components\n@import \"mixins/alerts.less\";\n@import \"mixins/buttons.less\";\n@import \"mixins/panels.less\";\n@import \"mixins/pagination.less\";\n@import \"mixins/list-group.less\";\n@import \"mixins/nav-divider.less\";\n@import \"mixins/forms.less\";\n@import \"mixins/progress-bar.less\";\n@import \"mixins/table-row.less\";\n\n// Skins\n@import \"mixins/background-variant.less\";\n@import \"mixins/border-radius.less\";\n@import \"mixins/gradients.less\";\n\n// Layout\n@import \"mixins/clearfix.less\";\n@import \"mixins/center-block.less\";\n@import \"mixins/nav-vertical-align.less\";\n@import \"mixins/grid-framework.less\";\n@import \"mixins/grid.less\";\n","mixins/alerts.less":"// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","mixins/background-variant.less":"// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n","mixins/border-radius.less":"// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","mixins/buttons.less":"// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","mixins/center-block.less":"// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","mixins/clearfix.less":"// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","mixins/forms.less":"// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `
`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","mixins/gradients.less":"// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","mixins/grid-framework.less":"// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","mixins/grid.less":"// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","mixins/hide-text.less":"// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","mixins/image.less":"// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","mixins/labels.less":"// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","mixins/list-group.less":"// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","mixins/nav-divider.less":"// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","mixins/nav-vertical-align.less":"// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","mixins/opacity.less":"// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","mixins/pagination.less":"// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","mixins/panels.less":"// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","mixins/progress-bar.less":"// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n","mixins/reset-filter.less":"// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","mixins/resize.less":"// Resize anything\n\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`\n}\n","mixins/responsive-visibility.less":"// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n","mixins/size.less":"// Sizing shortcuts\n\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n\n.square(@size) {\n .size(@size; @size);\n}\n","mixins/tab-focus.less":"// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","mixins/table-row.less":"// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","mixins/text-emphasis.less":"// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n","mixins/text-overflow.less":"// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","mixins/vendor-prefixes.less":"// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","modals.less":"//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","navbar.less":"//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n visibility: visible !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","navs.less":"//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n visibility: hidden;\n }\n > .active {\n display: block;\n visibility: visible;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","normalize.less":"/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","pager.less":"//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","pagination.less":"//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","panels.less":"//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","popovers.less":"//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","print.less":"/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n //\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","progress-bars.less":"//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","responsive-embed.less":"// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n\n // Modifier class for 16:9 aspect ratio\n &.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n }\n\n // Modifier class for 4:3 aspect ratio\n &.embed-responsive-4by3 {\n padding-bottom: 75%;\n }\n}\n","responsive-utilities.less":"//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","scaffolding.less":"//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n","tables.less":"//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-child(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","theme.less":"\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &:disabled,\n &[disabled] {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","thumbnails.less":"//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","tooltip.less":"//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-small;\n font-weight: normal;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","type.less":"//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","utilities.less":"//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","variables.less":"//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-base: #000;\n@gray-darker: lighten(@gray-base, 13.5%); // #222\n@gray-dark: lighten(@gray-base, 20%); // #333\n@gray: lighten(@gray-base, 33.5%); // #555\n@gray-light: lighten(@gray-base, 46.7%); // #777\n@gray-lighter: lighten(@gray-base, 93.5%); // #eee\n\n@brand-primary: darken(#428bca, 6.5%);\n@brand-success: #5cb85c;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for ``.\n@body-bg: #fff;\n//** Global text color on ``.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n//** Link hover decoration.\n@link-hover-decoration: underline;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for ``, ``, and ``.\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base: 1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the ``.\n@headings-font-family: inherit;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n@icon-font-path: \"../fonts/\";\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical: 6px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 10px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.33;\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color: #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg: @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base: 4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large: 5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ` `s.\n@table-cell-padding: 8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding: 5px;\n\n//** Default background color used for all tables.\n@table-bg: transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent: #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color: #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n@btn-font-weight: normal;\n\n@btn-default-color: #333;\n@btn-default-bg: #fff;\n@btn-default-border: #ccc;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** ` ` background color\n@input-bg: #fff;\n//** ` ` background color\n@input-bg-disabled: @gray-lighter;\n\n//** Text color for ` `s\n@input-color: @gray;\n//** ` ` border color\n@input-border: #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n@input-border-radius: @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large: @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small: @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus: #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder: #999;\n\n//** Default `.form-control` height\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg: @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled: not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg: #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border: rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border: #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg: #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color: @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg: #f5f5f5;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color: @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg: @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color: @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color: @gray-light;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color: #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1060;\n@zindex-tooltip: 1070;\n@zindex-navbar-fixed: 1030;\n@zindex-modal: 1040;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs: 480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min: @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns: 12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width: 30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint: @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet: (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg: @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height: 340px;\n\n@navbar-default-color: #777;\n@navbar-default-bg: #f8f8f8;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #777;\n@navbar-default-link-hover-color: #333;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #555;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #888;\n@navbar-default-toggle-border-color: #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color: lighten(@gray-light, 15%);\n@navbar-inverse-bg: #222;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: lighten(@gray-light, 15%);\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #333;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n//== Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n//== Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text: #3c763d;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #31708f;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #8a6d3b;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: #a94442;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width: 200px;\n//** Tooltip text color\n@tooltip-color: #fff;\n//** Tooltip background color\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width: 5px;\n//** Tooltip arrow color\n@tooltip-arrow-color: @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg: #fff;\n//** Popover maximum width\n@popover-max-width: 276px;\n//** Popover border color\n@popover-border-color: rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color: #ccc;\n\n//** Popover title background color\n@popover-title-bg: darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width: 10px;\n//** Popover arrow color\n@popover-arrow-color: @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color: fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg: @gray-light;\n//** Primary label background color\n@label-primary-bg: @brand-primary;\n//** Success label background color\n@label-success-bg: @brand-success;\n//** Info label background color\n@label-info-bg: @brand-info;\n//** Warning label background color\n@label-warning-bg: @brand-warning;\n//** Danger label background color\n@label-danger-bg: @brand-danger;\n\n//** Default label text color\n@label-color: #fff;\n//** Default text color of a linked label\n@label-link-hover-color: #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding: 15px;\n\n//** Padding applied to the modal title\n@modal-title-padding: 15px;\n//** Modal title line-height\n@modal-title-line-height: @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg: #fff;\n//** Modal content border color\n@modal-content-border-color: rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color: #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg: #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity: .5;\n//** Modal header border color\n@modal-header-border-color: #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-md: 600px;\n@modal-sm: 300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg: #f5f5f5;\n//** Progress bar text color\n@progress-bar-color: #fff;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius: @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg: @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg: @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg: @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg: @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg: @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg: #fff;\n//** `.list-group-item` border color\n@list-group-border: #ddd;\n//** List group border radius\n@list-group-border-radius: @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg: #f5f5f5;\n//** Text color of active list items\n@list-group-active-color: @component-active-color;\n//** Background color of active list items\n@list-group-active-bg: @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border: @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n//** Text color of disabled list items\n@list-group-disabled-color: @gray-light;\n//** Background color of disabled list items\n@list-group-disabled-bg: @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color: #555;\n@list-group-link-hover-color: @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-heading-padding: 10px 15px;\n@panel-footer-padding: @panel-heading-padding;\n@panel-border-radius: @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding: 4px;\n//** Thumbnail background color\n@thumbnail-bg: @body-bg;\n//** Thumbnail border color\n@thumbnail-border: #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius: @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color: @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding: 9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color: #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color: @link-color;\n//** Badge background color in active nav link\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg: #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color: #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color: @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator: \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted: @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color: @gray-light;\n//** Headings small color\n@headings-small-color: @gray-light;\n//** Blockquote small color\n@blockquote-small-color: @gray-light;\n//** Blockquote font size\n@blockquote-font-size: (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color: @gray-lighter;\n//** Page header border color\n@page-header-border-color: @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset: @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border: @gray-lighter;\n","wells.less":"//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n"}
-var __fonts = {"glyphicons-halflings-regular.eot":"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","glyphicons-halflings-regular.svg":"PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+PC9tZXRhZGF0YT4KPGRlZnM+Cjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA+Cjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIC8+CjxnbHlwaCAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZDsiIC8+CjxnbHlwaCB1bmljb2RlPSIgIiAvPgo8Z2x5cGggdW5pY29kZT0iKiIgZD0iTTEwMCA1MDB2MjAwaDI1OWwtMTgzIDE4M2wxNDEgMTQxbDE4MyAtMTgzdjI1OWgyMDB2LTI1OWwxODMgMTgzbDE0MSAtMTQxbC0xODMgLTE4M2gyNTl2LTIwMGgtMjU5bDE4MyAtMTgzbC0xNDEgLTE0MWwtMTgzIDE4M3YtMjU5aC0yMDB2MjU5bC0xODMgLTE4M2wtMTQxIDE0MWwxODMgMTgzaC0yNTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTAgNDAwdjMwMGg0MDB2NDAwaDMwMHYtNDAwaDQwMHYtMzAwaC00MDB2LTQwMGgtMzAwdjQwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGEwOyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzA0IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTIiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDQiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzNCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI2IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTciIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYzIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNMTAwIDUwMGwxMDAgMTAwaDExM3EwIDQ3IDUgMTAwaC0yMThsMTAwIDEwMGgxMzVxMzcgMTY3IDExMiAyNTdxMTE3IDE0MSAyOTcgMTQxcTI0MiAwIDM1NCAtMTg5cTYwIC0xMDMgNjYgLTIwOWgtMTgxcTAgNTUgLTI1LjUgOTl0LTYzLjUgNjh0LTc1IDM2LjV0LTY3IDEyLjVxLTI0IDAgLTUyLjUgLTEwdC02Mi41IC0zMnQtNjUuNSAtNjd0LTUwLjUgLTEwN2gzNzlsLTEwMCAtMTAwaC0zMDBxLTYgLTQ2IC02IC0xMDBoNDA2bC0xMDAgLTEwMCBoLTMwMHE5IC03NCAzMyAtMTMydDUyLjUgLTkxdDYyIC01NC41dDU5IC0yOXQ0Ni41IC03LjVxMjkgMCA2NiAxM3Q3NSAzN3Q2My41IDY3LjV0MjUuNSA5Ni41aDE3NHEtMzEgLTE3MiAtMTI4IC0yNzhxLTEwNyAtMTE3IC0yNzQgLTExN3EtMjA1IDAgLTMyNCAxNThxLTM2IDQ2IC02OSAxMzEuNXQtNDUgMjA1LjVoLTIxN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMjEyOyIgZD0iTTIwMCA0MDBoOTAwdjMwMGgtOTAwdi0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjVmYzsiIGhvcml6LWFkdi14PSI1MDAiIGQ9Ik0wIDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjYwMTsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoNzUwcTEyMCAwIDIwNSA4Ni41dDg1IDIwNy41dC04NSAyMDd0LTIwNSA4NnEtNDYgMCAtOTAgLTE0cS00NCA5NyAtMTM0LjUgMTU2LjV0LTIwMC41IDU5LjVxLTE1MiAwIC0yNjAgLTEwNy41dC0xMDggLTI2MC41cTAgLTI1IDIgLTM3cS02NiAtMTQgLTEwOC41IC02Ny41dC00Mi41IC0xMjIuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTAgMTAwbDQwMCA0MDBsMjAwIC0yMDBsMjAwIDIwMGw0MDAgLTQwMGgtMTIwMHpNMCAzMDB2NjAwbDMwMCAtMzAwek0wIDExMDBsNjAwIC02MDNsNjAwIDYwM2gtMTIwMHpNOTAwIDYwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0tMTMgLTEzbDMzMyAxMTJsLTIyMyAyMjN6TTE4NyA0MDNsMjE0IC0yMTRsNjE0IDYxNGwtMjE0IDIxNHpNODg3IDExMDNsMjE0IC0yMTRsOTkgOTJxMTMgMTMgMTMgMzIuNXQtMTMgMzMuNWwtMTUzIDE1M3EtMTUgMTMgLTMzIDEzdC0zMyAtMTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik0wIDEyMDBoMTIwMGwtNTAwIC01NTB2LTU1MGgzMDB2LTEwMGgtODAwdjEwMGgzMDB2NTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDI7IiBkPSJNMTQgODRxMTggLTU1IDg2IC03NS41dDE0NyA1LjVxNjUgMjEgMTA5IDY5dDQ0IDkwdjYwNmw2MDAgMTU1di01MjFxLTY0IDE2IC0xMzggLTdxLTc5IC0yNiAtMTIyLjUgLTgzdC0yNS41IC0xMTFxMTggLTU1IDg2IC03NS41dDE0NyA0LjVxNzAgMjMgMTExLjUgNjMuNXQ0MS41IDk1LjV2ODgxcTAgMTAgLTcgMTUuNXQtMTcgMi41bC03NTIgLTE5M3EtMTAgLTMgLTE3IC0xMi41dC03IC0xOS41di02ODlxLTY0IDE3IC0xMzggLTcgcS03OSAtMjUgLTEyMi41IC04MnQtMjUuNSAtMTEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNMjMgNjkzcTAgMjAwIDE0MiAzNDJ0MzQyIDE0MnQzNDIgLTE0MnQxNDIgLTM0MnEwIC0xNDIgLTc4IC0yNjFsMzAwIC0zMDBxNyAtOCA3IC0xOHQtNyAtMThsLTEwOSAtMTA5cS04IC03IC0xOCAtN3QtMTggN2wtMzAwIDMwMHEtMTE5IC03OCAtMjYxIC03OHEtMjAwIDAgLTM0MiAxNDJ0LTE0MiAzNDJ6TTE3NiA2OTNxMCAtMTM2IDk3IC0yMzN0MjM0IC05N3QyMzMuNSA5Ni41dDk2LjUgMjMzLjV0LTk2LjUgMjMzLjV0LTIzMy41IDk2LjUgdC0yMzQgLTk3dC05NyAtMjMzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNMTAwIDc4NHEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQuNSA2NHQxMTkgMjAuNXQxMjAgLTM4LjV0MTA0LjUgLTEwNC41cTQ4IDY5IDEwOS41IDEwNXQxMjEuNSAzOHQxMTguNSAtMjAuNXQxMDIuNSAtNjR0NzEgLTEwMC41dDI3IC0xMjNxMCAtNTcgLTMzLjUgLTExNy41dC05NCAtMTI0LjV0LTEyNi41IC0xMjcuNXQtMTUwIC0xNTIuNXQtMTQ2IC0xNzRxLTYyIDg1IC0xNDUuNSAxNzR0LTE0OS41IDE1Mi41dC0xMjYuNSAxMjcuNSB0LTk0IDEyNC41dC0zMy41IDExNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDY7IiBkPSJNLTcyIDgwMGg0NzlsMTQ2IDQwMGgybDE0NiAtNDAwaDQ3MmwtMzgyIC0yNzhsMTQ1IC00NDlsLTM4NCAyNzVsLTM4MiAtMjc1bDE0NiA0NDd6TTE2OCA3MWwyIDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNzsiIGQ9Ik0tNzIgODAwaDQ3OWwxNDYgNDAwaDJsMTQ2IC00MDBoNDcybC0zODIgLTI3OGwxNDUgLTQ0OWwtMzg0IDI3NWwtMzgyIC0yNzVsMTQ2IDQ0N3pNMTY4IDcxbDIgMXpNMjM3IDcwMGwxOTYgLTE0MmwtNzMgLTIyNmwxOTIgMTQwbDE5NSAtMTQxbC03NCAyMjlsMTkzIDE0MGgtMjM1bC03NyAyMTFsLTc4IC0yMTFoLTIzOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDA4OyIgZD0iTTAgMHYxNDNsNDAwIDI1N3YxMDBxLTM3IDAgLTY4LjUgNzQuNXQtMzEuNSAxMjUuNXYyMDBxMCAxMjQgODggMjEydDIxMiA4OHQyMTIgLTg4dDg4IC0yMTJ2LTIwMHEwIC01MSAtMzEuNSAtMTI1LjV0LTY4LjUgLTc0LjV2LTEwMGw0MDAgLTI1N3YtMTQzaC0xMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMCAwdjExMDBoMTIwMHYtMTEwMGgtMTIwMHpNMTAwIDEwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDMwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDUwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDcwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwIDkwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMzAwIDEwMGg2MDB2NDAwaC02MDB2LTQwMHpNMzAwIDYwMGg2MDB2NDAwaC02MDB2LTQwMHpNMTAwMCAxMDBoMTAwdjEwMGgtMTAwdi0xMDB6IE0xMDAwIDMwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwMCA1MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMDAgNzAwaDEwMHYxMDBoLTEwMHYtMTAwek0xMDAwIDkwMGgxMDB2MTAwaC0xMDB2LTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDEwOyIgZD0iTTAgNTB2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMCA2NTB2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTYwMCA1MHY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek02MDAgNjUwdjQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTE7IiBkPSJNMCA1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0wIDQ1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMCA4NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNDAwIDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjUgdC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek00MDAgNDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTQwMCA4NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTgwMCA1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek04MDAgNDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek04MDAgODUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik0wIDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNDUwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djIwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMjAwcS0yMSAwIC0zNS41IC0xNC41IHQtMTQuNSAtMzUuNXYtMjAwek0wIDg1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek00MDAgNTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTcwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTQwMCA0NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNDAwIDg1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNSB2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDEzOyIgZD0iTTI5IDQ1NGw0MTkgLTQyMGw4MTggODIwbC0yMTIgMjEybC02MDcgLTYwN2wtMjA2IDIwN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDE0OyIgZD0iTTEwNiAzMThsMjgyIDI4MmwtMjgyIDI4MmwyMTIgMjEybDI4MiAtMjgybDI4MiAyODJsMjEyIC0yMTJsLTI4MiAtMjgybDI4MiAtMjgybC0yMTIgLTIxMmwtMjgyIDI4MmwtMjgyIC0yODJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNTsiIGQ9Ik0yMyA2OTNxMCAyMDAgMTQyIDM0MnQzNDIgMTQydDM0MiAtMTQydDE0MiAtMzQycTAgLTE0MiAtNzggLTI2MWwzMDAgLTMwMHE3IC04IDcgLTE4dC03IC0xOGwtMTA5IC0xMDlxLTggLTcgLTE4IC03dC0xOCA3bC0zMDAgMzAwcS0xMTkgLTc4IC0yNjEgLTc4cS0yMDAgMCAtMzQyIDE0MnQtMTQyIDM0MnpNMTc2IDY5M3EwIC0xMzYgOTcgLTIzM3QyMzQgLTk3dDIzMy41IDk2LjV0OTYuNSAyMzMuNXQtOTYuNSAyMzMuNXQtMjMzLjUgOTYuNSB0LTIzNCAtOTd0LTk3IC0yMzN6TTMwMCA2MDB2MjAwaDEwMHYxMDBoMjAwdi0xMDBoMTAwdi0yMDBoLTEwMHYtMTAwaC0yMDB2MTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNjsiIGQ9Ik0yMyA2OTRxMCAyMDAgMTQyIDM0MnQzNDIgMTQydDM0MiAtMTQydDE0MiAtMzQycTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE3IC03IDcgLTE4dC03IC0xOGwtMTA5IC0xMDlxLTggLTggLTE4IC04dC0xOCA4bC0zMDAgMzAwcS0xMTkgLTc4IC0yNjEgLTc4cS0yMDAgMCAtMzQyIDE0MnQtMTQyIDM0MnpNMTc2IDY5NHEwIC0xMzYgOTcgLTIzM3QyMzQgLTk3dDIzMy41IDk3dDk2LjUgMjMzdC05Ni41IDIzM3QtMjMzLjUgOTd0LTIzNCAtOTcgdC05NyAtMjMzek0zMDAgNjAxaDQwMHYyMDBoLTQwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTc7IiBkPSJNMjMgNjAwcTAgMTgzIDEwNSAzMzF0MjcyIDIxMHYtMTY2cS0xMDMgLTU1IC0xNjUgLTE1NXQtNjIgLTIyMHEwIC0xNzcgMTI1IC0zMDJ0MzAyIC0xMjV0MzAyIDEyNXQxMjUgMzAycTAgMTIwIC02MiAyMjB0LTE2NSAxNTV2MTY2cTE2NyAtNjIgMjcyIC0yMTB0MTA1IC0zMzFxMCAtMTE4IC00NS41IC0yMjQuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjQuNSAtNDUuNXQtMjI0LjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjQuNSB6TTUwMCA3NTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41aDEwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2NDAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDE4OyIgZD0iTTEwMCAxaDIwMHYzMDBoLTIwMHYtMzAwek00MDAgMXY1MDBoMjAwdi01MDBoLTIwMHpNNzAwIDF2ODAwaDIwMHYtODAwaC0yMDB6TTEwMDAgMXYxMjAwaDIwMHYtMTIwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTk7IiBkPSJNMjYgNjAxcTAgLTMzIDYgLTc0bDE1MSAtMzhsMiAtNnExNCAtNDkgMzggLTkzbDMgLTVsLTgwIC0xMzRxNDUgLTU5IDEwNSAtMTA1bDEzMyA4MWw1IC0zcTQ1IC0yNiA5NCAtMzlsNSAtMmwzOCAtMTUxcTQwIC01IDc0IC01cTI3IDAgNzQgNWwzOCAxNTFsNiAycTQ2IDEzIDkzIDM5bDUgM2wxMzQgLTgxcTU2IDQ0IDEwNCAxMDVsLTgwIDEzNGwzIDVxMjQgNDQgMzkgOTNsMSA2bDE1MiAzOHE1IDQwIDUgNzRxMCAyOCAtNSA3M2wtMTUyIDM4IGwtMSA2cS0xNiA1MSAtMzkgOTNsLTMgNWw4MCAxMzRxLTQ0IDU4IC0xMDQgMTA1bC0xMzQgLTgxbC01IDNxLTQ1IDI1IC05MyAzOWwtNiAxbC0zOCAxNTJxLTQwIDUgLTc0IDVxLTI3IDAgLTc0IC01bC0zOCAtMTUybC01IC0xcS01MCAtMTQgLTk0IC0zOWwtNSAtM2wtMTMzIDgxcS01OSAtNDcgLTEwNSAtMTA1bDgwIC0xMzRsLTMgLTVxLTI1IC00NyAtMzggLTkzbC0yIC02bC0xNTEgLTM4cS02IC00OCAtNiAtNzN6TTM4NSA2MDEgcTAgODggNjMgMTUxdDE1MiA2M3QxNTIgLTYzdDYzIC0xNTFxMCAtODkgLTYzIC0xNTJ0LTE1MiAtNjN0LTE1MiA2M3QtNjMgMTUyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNMTAwIDEwMjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgzMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMGgyNzVxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMSAtNyAtMTh0LTE4IC03aC0xMDUwcS0xMSAwIC0xOCA3dC03IDE4ek0yMDAgMTAwdjgwMGg5MDB2LTgwMHEwIC00MSAtMjkuNSAtNzF0LTcwLjUgLTMwaC03MDBxLTQxIDAgLTcwLjUgMzAgdC0yOS41IDcxek0zMDAgMTAwaDEwMHY3MDBoLTEwMHYtNzAwek01MDAgMTAwaDEwMHY3MDBoLTEwMHYtNzAwek01MDAgMTEwMGgzMDB2MTAwaC0zMDB2LTEwMHpNNzAwIDEwMGgxMDB2NzAwaC0xMDB2LTcwMHpNOTAwIDEwMGgxMDB2NzAwaC0xMDB2LTcwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDIxOyIgZD0iTTEgNjAxbDY1NiA2NDRsNjQ0IC02NDRoLTIwMHYtNjAwaC0zMDB2NDAwaC0zMDB2LTQwMGgtMzAwdjYwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjI7IiBkPSJNMTAwIDI1djExNTBxMCAxMSA3IDE4dDE4IDdoNDc1di01MDBoNDAwdi02NzVxMCAtMTEgLTcgLTE4dC0xOCAtN2gtODUwcS0xMSAwIC0xOCA3dC03IDE4ek03MDAgODAwdjMwMGwzMDAgLTMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MSAxMjEuNSAtMjkyLjV0MjkyLjUgLTEyMS41dDI5Mi41IDEyMS41dDEyMS41IDI5Mi41dC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek01MDAgNTAwdjQwMGgxMDAgdi0zMDBoMjAwdi0xMDBoLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTS0xMDAgMGw0MzEgMTIwMGgyMDlsLTIxIC0zMDBoMTYybC0yMCAzMDBoMjA4bDQzMSAtMTIwMGgtNTM4bC00MSA0MDBoLTI0MmwtNDAgLTQwMGgtNTM5ek00ODggNTAwaDIyNGwtMjcgMzAwaC0xNzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNTsiIGQ9Ik0wIDB2NDAwaDQ5MGwtMjkwIDMwMGgyMDB2NTAwaDMwMHYtNTAwaDIwMGwtMjkwIC0zMDBoNDkwdi00MDBoLTExMDB6TTgxMyAyMDBoMTc1djEwMGgtMTc1di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNjsiIGQ9Ik0xIDYwMHEwIDEyMiA0Ny41IDIzM3QxMjcuNSAxOTF0MTkxIDEyNy41dDIzMyA0Ny41dDIzMyAtNDcuNXQxOTEgLTEyNy41dDEyNy41IC0xOTF0NDcuNSAtMjMzdC00Ny41IC0yMzN0LTEyNy41IC0xOTF0LTE5MSAtMTI3LjV0LTIzMyAtNDcuNXQtMjMzIDQ3LjV0LTE5MSAxMjcuNXQtMTI3LjUgMTkxdC00Ny41IDIzM3pNMTg4IDYwMHEwIC0xNzAgMTIxIC0yOTF0MjkxIC0xMjF0MjkxIDEyMXQxMjEgMjkxdC0xMjEgMjkxdC0yOTEgMTIxIHQtMjkxIC0xMjF0LTEyMSAtMjkxek0zNTAgNjAwaDE1MHYzMDBoMjAwdi0zMDBoMTUwbC0yNTAgLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI3OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzUwIDYwMGwyNTAgMzAwIGwyNTAgLTMwMGgtMTUwdi0zMDBoLTIwMHYzMDBoLTE1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTAgMjV2NDc1bDIwMCA3MDBoODAwbDE5OSAtNzAwbDEgLTQ3NXEwIC0xMSAtNyAtMTh0LTE4IC03aC0xMTUwcS0xMSAwIC0xOCA3dC03IDE4ek0yMDAgNTAwaDIwMGw1MCAtMjAwaDMwMGw1MCAyMDBoMjAwbC05NyA1MDBoLTYwNnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzIgMTIxLjUgLTI5M3QyOTIuNSAtMTIxdDI5Mi41IDEyMXQxMjEuNSAyOTNxMCAxNzEgLTEyMS41IDI5Mi41dC0yOTIuNSAxMjEuNXQtMjkyLjUgLTEyMS41dC0xMjEuNSAtMjkyLjV6TTUwMCAzOTd2NDAxIGwyOTcgLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMwOyIgZD0iTTIzIDYwMHEwIC0xMTggNDUuNSAtMjI0LjV0MTIzIC0xODR0MTg0IC0xMjN0MjI0LjUgLTQ1LjV0MjI0LjUgNDUuNXQxODQgMTIzdDEyMyAxODR0NDUuNSAyMjQuNWgtMTUwcTAgLTE3NyAtMTI1IC0zMDJ0LTMwMiAtMTI1dC0zMDIgMTI1dC0xMjUgMzAydDEyNSAzMDJ0MzAyIDEyNXExMzYgMCAyNDYgLTgxbC0xNDYgLTE0Nmg0MDB2NDAwbC0xNDUgLTE0NXEtMTU3IDEyMiAtMzU1IDEyMnEtMTE4IDAgLTIyNC41IC00NS41dC0xODQgLTEyMyB0LTEyMyAtMTg0dC00NS41IC0yMjQuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTIzIDYwMHEwIDExOCA0NS41IDIyNC41dDEyMyAxODR0MTg0IDEyM3QyMjQuNSA0NS41cTE5OCAwIDM1NSAtMTIybDE0NSAxNDV2LTQwMGgtNDAwbDE0NyAxNDdxLTExMiA4MCAtMjQ3IDgwcS0xNzcgMCAtMzAyIC0xMjV0LTEyNSAtMzAyaC0xNTB6TTEwMCAwdjQwMGg0MDBsLTE0NyAtMTQ3cTExMiAtODAgMjQ3IC04MHExNzcgMCAzMDIgMTI1dDEyNSAzMDJoMTUwcTAgLTExOCAtNDUuNSAtMjI0LjV0LTEyMyAtMTg0dC0xODQgLTEyMyB0LTIyNC41IC00NS41cS0xOTggMCAtMzU1IDEyMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEwMCAwaDExMDB2MTIwMGgtMTEwMHYtMTIwMHpNMjAwIDEwMHY5MDBoOTAwdi05MDBoLTkwMHpNMzAwIDIwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDQwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDYwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDgwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDIwMGg1MDB2MTAwaC01MDB2LTEwMHpNNTAwIDQwMHYxMDBoNTAwdi0xMDBoLTUwMHpNNTAwIDYwMHYxMDBoNTAwdi0xMDBoLTUwMHogTTUwMCA4MDB2MTAwaDUwMHYtMTAwaC01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik0wIDEwMHY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMHYyMDBxMCA4MiA1OSAxNDF0MTQxIDU5aDMwMHE4MiAwIDE0MSAtNTl0NTkgLTE0MXYtMjAwaDEwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC05MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek00MDAgODAwaDMwMHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDM0OyIgZD0iTTEwMCAwdjExMDBoMTAwdi0xMTAwaC0xMDB6TTMwMCA0MDBxNjAgNjAgMTI3LjUgODR0MTI3LjUgMTcuNXQxMjIgLTIzdDExOSAtMzB0MTEwIC0xMXQxMDMgNDJ0OTEgMTIwLjV2NTAwcS00MCAtODEgLTEwMS41IC0xMTUuNXQtMTI3LjUgLTI5LjV0LTEzOCAyNXQtMTM5LjUgNDB0LTEyNS41IDI1dC0xMDMgLTI5LjV0LTY1IC0xMTUuNXYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzU7IiBkPSJNMCAyNzVxMCAtMTEgNyAtMTh0MTggLTdoNTBxMTEgMCAxOCA3dDcgMTh2MzAwcTAgMTI3IDcwLjUgMjMxLjV0MTg0LjUgMTYxLjV0MjQ1IDU3dDI0NSAtNTd0MTg0LjUgLTE2MS41dDcwLjUgLTIzMS41di0zMDBxMCAtMTEgNyAtMTh0MTggLTdoNTBxMTEgMCAxOCA3dDcgMTh2MzAwcTAgMTE2IC00OS41IDIyN3QtMTMxIDE5Mi41dC0xOTIuNSAxMzF0LTIyNyA0OS41dC0yMjcgLTQ5LjV0LTE5Mi41IC0xMzF0LTEzMSAtMTkyLjUgdC00OS41IC0yMjd2LTMwMHpNMjAwIDIwdjQ2MHEwIDggNiAxNHQxNCA2aDE2MHE4IDAgMTQgLTZ0NiAtMTR2LTQ2MHEwIC04IC02IC0xNHQtMTQgLTZoLTE2MHEtOCAwIC0xNCA2dC02IDE0ek04MDAgMjB2NDYwcTAgOCA2IDE0dDE0IDZoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNjsiIGQ9Ik0wIDQwMGgzMDBsMzAwIC0yMDB2ODAwbC0zMDAgLTIwMGgtMzAwdi00MDB6TTY4OCA0NTlsMTQxIDE0MWwtMTQxIDE0MWw3MSA3MWwxNDEgLTE0MWwxNDEgMTQxbDcxIC03MWwtMTQxIC0xNDFsMTQxIC0xNDFsLTcxIC03MWwtMTQxIDE0MWwtMTQxIC0xNDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0wIDQwMGgzMDBsMzAwIC0yMDB2ODAwbC0zMDAgLTIwMGgtMzAwdi00MDB6TTcwMCA4NTdsNjkgNTNxMTExIC0xMzUgMTExIC0zMTBxMCAtMTY5IC0xMDYgLTMwMmwtNjcgNTRxODYgMTEwIDg2IDI0OHEwIDE0NiAtOTMgMjU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNMCA0MDF2NDAwaDMwMGwzMDAgMjAwdi04MDBsLTMwMCAyMDBoLTMwMHpNNzAyIDg1OGw2OSA1M3ExMTEgLTEzNSAxMTEgLTMxMHEwIC0xNzAgLTEwNiAtMzAzbC02NyA1NXE4NiAxMTAgODYgMjQ4cTAgMTQ1IC05MyAyNTd6TTg4OSA5NTFsNyAtOHExMjMgLTE1MSAxMjMgLTM0NHEwIC0xODkgLTExOSAtMzM5bC03IC04bDgxIC02Nmw2IDhxMTQyIDE3OCAxNDIgNDA1cTAgMjMwIC0xNDQgNDA4bC02IDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzOTsiIGQ9Ik0wIDBoNTAwdjUwMGgtMjAwdjEwMGgtMTAwdi0xMDBoLTIwMHYtNTAwek0wIDYwMGgxMDB2MTAwaDQwMHYxMDBoMTAwdjEwMGgtMTAwdjMwMGgtNTAwdi02MDB6TTEwMCAxMDB2MzAwaDMwMHYtMzAwaC0zMDB6TTEwMCA4MDB2MzAwaDMwMHYtMzAwaC0zMDB6TTIwMCAyMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTIwMCA5MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTUwMCA1MDB2MTAwaDMwMHYtMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMCBoLTEwMHYxMDBoMTAwdjIwMGgtMjAwek02MDAgMHYxMDBoMTAwdi0xMDBoLTEwMHpNNjAwIDEwMDBoMTAwdi0zMDBoMjAwdi0zMDBoMzAwdjIwMGgtMjAwdjEwMGgyMDB2NTAwaC02MDB2LTIwMHpNODAwIDgwMHYzMDBoMzAwdi0zMDBoLTMwMHpNOTAwIDB2MTAwaDMwMHYtMTAwaC0zMDB6TTkwMCA5MDB2MTAwaDEwMHYtMTAwaC0xMDB6TTExMDAgMjAwdjEwMGgxMDB2LTEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDA7IiBkPSJNMCAyMDBoMTAwdjEwMDBoLTEwMHYtMTAwMHpNMTAwIDB2MTAwaDMwMHYtMTAwaC0zMDB6TTIwMCAyMDB2MTAwMGgxMDB2LTEwMDBoLTEwMHpNNTAwIDB2OTFoMTAwdi05MWgtMTAwek01MDAgMjAwdjEwMDBoMjAwdi0xMDAwaC0yMDB6TTcwMCAwdjkxaDEwMHYtOTFoLTEwMHpNODAwIDIwMHYxMDAwaDEwMHYtMTAwMGgtMTAwek05MDAgMHY5MWgyMDB2LTkxaC0yMDB6TTEwMDAgMjAwdjEwMDBoMjAwdi0xMDAwaC0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0MTsiIGQ9Ik0wIDcwMGwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NGw3MDAgLTcwMGwtNTAwIC01MDB6TTE0OCA5NTNxMCAtNDIgMjkgLTcxcTMwIC0zMCA3MS41IC0zMHQ3MS41IDMwcTI5IDI5IDI5IDcxdC0yOSA3MXEtMzAgMzAgLTcxLjUgMzB0LTcxLjUgLTMwcS0yOSAtMjkgLTI5IC03MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTEgNzAwbDEgNDc1cTAgMTEgNyAxOHQxOCA3aDQ3NGw3MDAgLTcwMGwtNTAwIC01MDB6TTE0OCA5NTNxMCAtNDIgMzAgLTcxcTI5IC0zMCA3MSAtMzB0NzEgMzBxMzAgMjkgMzAgNzF0LTMwIDcxcS0yOSAzMCAtNzEgMzB0LTcxIC0zMHEtMzAgLTI5IC0zMCAtNzF6TTcwMSAxMjAwaDEwMGw3MDAgLTcwMGwtNTAwIC01MDBsLTUwIDUwbDQ1MCA0NTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0MzsiIGQ9Ik0xMDAgMHYxMDI1bDE3NSAxNzVoOTI1di0xMDAwbC0xMDAgLTEwMHYxMDAwaC03NTBsLTEwMCAtMTAwaDc1MHYtMTAwMGgtOTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDQ7IiBkPSJNMjAwIDBsNDUwIDQ0NGw0NTAgLTQ0M3YxMTUwcTAgMjAgLTE0LjUgMzV0LTM1LjUgMTVoLTgwMHEtMjEgMCAtMzUuNSAtMTV0LTE0LjUgLTM1di0xMTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDU7IiBkPSJNMCAxMDB2NzAwaDIwMGwxMDAgLTIwMGg2MDBsMTAwIDIwMGgyMDB2LTcwMGgtMjAwdjIwMGgtODAwdi0yMDBoLTIwMHpNMjUzIDgyOWw0MCAtMTI0aDU5Mmw2MiAxMjRsLTk0IDM0NnEtMiAxMSAtMTAgMTh0LTE4IDdoLTQ1MHEtMTAgMCAtMTggLTd0LTEwIC0xOHpNMjgxIDI0bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDUwMHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAtMy41IC0xN3QtMTUuNSAtN2gtNjAwIHEtMTAgMCAtMTUuNSA3dC0zLjUgMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik0wIDIwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xNTBxLTQgOCAtMTEuNSAyMS41dC0zMyA0OHQtNTMgNjF0LTY5IDQ4dC04My41IDIxLjVoLTIwMHEtNDEgMCAtODIgLTIwLjV0LTcwIC01MHQtNTIgLTU5dC0zNCAtNTAuNWwtMTIgLTIwaC0xNTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTYwMHogTTM1NiA1MDBxMCAxMDAgNzIgMTcydDE3MiA3MnQxNzIgLTcydDcyIC0xNzJ0LTcyIC0xNzJ0LTE3MiAtNzJ0LTE3MiA3MnQtNzIgMTcyek00OTQgNTAwcTAgLTQ0IDMxIC03NXQ3NSAtMzF0NzUgMzF0MzEgNzV0LTMxIDc1dC03NSAzMXQtNzUgLTMxdC0zMSAtNzV6TTkwMCA3MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik01MyAwaDM2NXY2NnEtNDEgMCAtNzIgMTF0LTQ5IDM4dDEgNzFsOTIgMjM0aDM5MWw4MiAtMjIycTE2IC00NSAtNS41IC04OC41dC03NC41IC00My41di02Nmg0MTd2NjZxLTM0IDEgLTc0IDQzcS0xOCAxOSAtMzMgNDJ0LTIxIDM3bC02IDEzbC0zODUgOTk4aC05M2wtMzk5IC0xMDA2cS0yNCAtNDggLTUyIC03NXEtMTIgLTEyIC0zMyAtMjV0LTM2IC0yMGwtMTUgLTd2LTY2ek00MTYgNTIxbDE3OCA0NTdsNDYgLTE0MGwxMTYgLTMxN2gtMzQwIHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTEwMCAwdjg5cTQxIDcgNzAuNSAzMi41dDI5LjUgNjUuNXY4MjdxMCAyOCAtMSAzOS41dC01LjUgMjZ0LTE1LjUgMjF0LTI5IDE0dC00OSAxNC41djcxbDQ3MSAtMXExMjAgMCAyMTMgLTg4dDkzIC0yMjhxMCAtNTUgLTExLjUgLTEwMS41dC0yOCAtNzR0LTMzLjUgLTQ3LjV0LTI4IC0yOGwtMTIgLTdxOCAtMyAyMS41IC05dDQ4IC0zMS41dDYwLjUgLTU4dDQ3LjUgLTkxLjV0MjEuNSAtMTI5cTAgLTg0IC01OSAtMTU2LjV0LTE0MiAtMTExIHQtMTYyIC0zOC41aC01MDB6TTQwMCAyMDBoMTYxcTg5IDAgMTUzIDQ4LjV0NjQgMTMyLjVxMCA5MCAtNjIuNSAxNTQuNXQtMTU2LjUgNjQuNWgtMTU5di00MDB6TTQwMCA3MDBoMTM5cTc2IDAgMTMwIDYxLjV0NTQgMTM4LjVxMCA4MiAtODQgMTMwLjV0LTIzOSA0OC41di0zNzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0OTsiIGQ9Ik0yMDAgMHY1N3E3NyA3IDEzNC41IDQwLjV0NjUuNSA4MC41bDE3MyA4NDlxMTAgNTYgLTEwIDc0dC05MSAzN3EtNiAxIC0xMC41IDIuNXQtOS41IDIuNXY1N2g0MjVsMiAtNTdxLTMzIC04IC02MiAtMjUuNXQtNDYgLTM3dC0yOS41IC0zOHQtMTcuNSAtMzAuNWwtNSAtMTJsLTEyOCAtODI1cS0xMCAtNTIgMTQgLTgydDk1IC0zNnYtNTdoLTUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTS03NSAyMDBoNzV2ODAwaC03NWwxMjUgMTY3bDEyNSAtMTY3aC03NXYtODAwaDc1bC0xMjUgLTE2N3pNMzAwIDkwMHYzMDBoMTUwaDcwMGgxNTB2LTMwMGgtNTBxMCAyOSAtOCA0OC41dC0xOC41IDMwdC0zMy41IDE1dC0zOS41IDUuNXQtNTAuNSAxaC0yMDB2LTg1MGwxMDAgLTUwdi0xMDBoLTQwMHYxMDBsMTAwIDUwdjg1MGgtMjAwcS0zNCAwIC01MC41IC0xdC00MCAtNS41dC0zMy41IC0xNXQtMTguNSAtMzB0LTguNSAtNDguNWgtNDl6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTE7IiBkPSJNMzMgNTFsMTY3IDEyNXYtNzVoODAwdjc1bDE2NyAtMTI1bC0xNjcgLTEyNXY3NWgtODAwdi03NXpNMTAwIDkwMXYzMDBoMTUwaDcwMGgxNTB2LTMwMGgtNTBxMCAyOSAtOCA0OC41dC0xOCAzMHQtMzMuNSAxNXQtNDAgNS41dC01MC41IDFoLTIwMHYtNjUwbDEwMCAtNTB2LTEwMGgtNDAwdjEwMGwxMDAgNTB2NjUwaC0yMDBxLTM0IDAgLTUwLjUgLTF0LTM5LjUgLTUuNXQtMzMuNSAtMTV0LTE4LjUgLTMwdC04IC00OC41aC01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDUyOyIgZD0iTTAgNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoMTEwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTExMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMCAzNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoODAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtODAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41IHYtMTAwek0wIDY1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMDAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0wIDk1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWg2MDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC02MDBxLTIxIDAgLTM1LjUgLTE0LjUgdC0xNC41IC0zNS41di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0wIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDExMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTAgNjUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDExMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41IHYtMTAwek0yMDAgMzUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDcwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTcwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0yMDAgOTUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDcwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTcwMHEtMjEgMCAtMzUuNSAtMTQuNSB0LTE0LjUgLTM1LjV2LTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTEwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMDAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMzAwIDM1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTgwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNNTAwIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTYwMCBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NTsiIGQ9Ik0wIDUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTExMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTExMDBxLTIxIDAgLTM1LjUgMTUgdC0xNC41IDM1ek0wIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0wIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMTAwIHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDU2OyIgZD0iTTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMCA2NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTAgOTUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMzAwIDUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtODAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtODAwIHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMzAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTgwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMzAwIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTUgaC04MDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NzsiIGQ9Ik0tMTAxIDUwMHYxMDBoMjAxdjc1bDE2NiAtMTI1bC0xNjYgLTEyNXY3NWgtMjAxek0zMDAgMGgxMDB2MTEwMGgtMTAwdi0xMTAwek01MDAgNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNjAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTYwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek01MDAgMzUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDMwMHEyMCAwIDM1IDE1dDE1IDM1IHYxMDBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtMzAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTUwMCA2NTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNTAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTUwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek01MDAgOTUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDEwMHEyMCAwIDM1IDE1dDE1IDM1djEwMCBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik0xIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDYwMHEyMCAwIDM1IDE1dDE1IDM1djEwMHEwIDIxIC0xNSAzNS41dC0zNSAxNC41aC02MDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMSAzNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoMzAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0xIDY1MCBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNTAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTUwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0xIDk1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMDBxMjAgMCAzNSAxNXQxNSAzNXYxMDBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTgwMSAwdjExMDBoMTAwdi0xMTAwIGgtMTAwek05MzQgNTUwbDE2NyAtMTI1djc1aDIwMHYxMDBoLTIwMHY3NXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDU5OyIgZD0iTTAgMjc1djY1MHEwIDMxIDIyIDUzdDUzIDIyaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzek05MDAgNjAwbDMwMCAzMDB2LTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDYwOyIgZD0iTTAgNDR2MTAxMnEwIDE4IDEzIDMxdDMxIDEzaDExMTJxMTkgMCAzMS41IC0xM3QxMi41IC0zMXYtMTAxMnEwIC0xOCAtMTIuNSAtMzF0LTMxLjUgLTEzaC0xMTEycS0xOCAwIC0zMSAxM3QtMTMgMzF6TTEwMCAyNjNsMjQ3IDE4MmwyOTggLTEzMWwtNzQgMTU2bDI5MyAzMThsMjM2IC0yODh2NTAwaC0xMDAwdi03Mzd6TTIwOCA3NTBxMCA1NiAzOSA5NXQ5NSAzOXQ5NSAtMzl0MzkgLTk1dC0zOSAtOTV0LTk1IC0zOXQtOTUgMzl0LTM5IDk1eiAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDYyOyIgZD0iTTE0OCA3NDVxMCAxMjQgNjAuNSAyMzEuNXQxNjUgMTcydDIyNi41IDY0LjVxMTIzIDAgMjI3IC02M3QxNjQuNSAtMTY5LjV0NjAuNSAtMjI5LjV0LTczIC0yNzJxLTczIC0xMTQgLTE2Ni41IC0yMzd0LTE1MC41IC0xODlsLTU3IC02NnEtMTAgOSAtMjcgMjZ0LTY2LjUgNzAuNXQtOTYgMTA5dC0xMDQgMTM1LjV0LTEwMC41IDE1NXEtNjMgMTM5IC02MyAyNjJ6TTM0MiA3NzJxMCAtMTA3IDc1LjUgLTE4Mi41dDE4MS41IC03NS41IHExMDcgMCAxODIuNSA3NS41dDc1LjUgMTgyLjV0LTc1LjUgMTgydC0xODIuNSA3NXQtMTgyIC03NS41dC03NSAtMTgxLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MzsiIGQ9Ik0xIDYwMHEwIDEyMiA0Ny41IDIzM3QxMjcuNSAxOTF0MTkxIDEyNy41dDIzMyA0Ny41dDIzMyAtNDcuNXQxOTEgLTEyNy41dDEyNy41IC0xOTF0NDcuNSAtMjMzdC00Ny41IC0yMzN0LTEyNy41IC0xOTF0LTE5MSAtMTI3LjV0LTIzMyAtNDcuNXQtMjMzIDQ3LjV0LTE5MSAxMjcuNXQtMTI3LjUgMTkxdC00Ny41IDIzM3pNMTczIDYwMHEwIC0xNzcgMTI1LjUgLTMwMnQzMDEuNSAtMTI1djg1NHEtMTc2IDAgLTMwMS41IC0xMjUgdC0xMjUuNSAtMzAyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjQ7IiBkPSJNMTE3IDQwNnEwIDk0IDM0IDE4NnQ4OC41IDE3Mi41dDExMiAxNTl0MTE1IDE3N3Q4Ny41IDE5NC41cTIxIC03MSA1Ny41IC0xNDIuNXQ3NiAtMTMwLjV0ODMgLTExOC41dDgyIC0xMTd0NzAgLTExNnQ1MCAtMTI1LjV0MTguNSAtMTM2cTAgLTg5IC0zOSAtMTY1LjV0LTEwMiAtMTI2LjV0LTE0MCAtNzkuNXQtMTU2IC0zMy41cS0xMTQgNiAtMjExLjUgNTN0LTE2MS41IDEzOXQtNjQgMjEwek0yNDMgNDE0cTE0IC04MiA1OS41IC0xMzYgdDEzNi41IC04MGwxNiA5OHEtNyA2IC0xOCAxN3QtMzQgNDh0LTMzIDc3cS0xNSA3MyAtMTQgMTQzLjV0MTAgMTIyLjVsOSA1MXEtOTIgLTExMCAtMTE5LjUgLTE4NXQtMTIuNSAtMTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41cTM2NiAtNiAzOTcgLTE0bC0xODYgLTE4NmgtMzExcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTI1bDIwMCAyMDB2LTIyNXEwIC0xNjUgLTExNy41IC0yODIuNXQtMjgyLjUgLTExNy41aC0zMDBxLTE2NSAwIC0yODIuNSAxMTcuNSB0LTExNy41IDI4Mi41ek00MzYgMzQxbDE2MSA1MGw0MTIgNDEybC0xMTQgMTEzbC00MDUgLTQwNXpNOTk1IDEwMTVsMTEzIC0xMTNsMTEzIDExM2wtMjEgODVsLTkyIDI4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjY7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41aDI2MWwyIC04MHEtMTMzIC0zMiAtMjE4IC0xMjBoLTE0NXEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41bDIwMCAxNTN2LTUzcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41dC0xMTcuNSAyODIuNSB6TTQyMyA1MjRxMzAgMzggODEuNSA2NHQxMDMgMzUuNXQ5OSAxNHQ3Ny41IDMuNWwyOSAtMXYtMjA5bDM2MCAzMjRsLTM1OSAzMTh2LTIxNnEtNyAwIC0xOSAtMXQtNDggLTh0LTY5LjUgLTE4LjV0LTc2LjUgLTM3dC03Ni41IC01OXQtNjIgLTg4dC0zOS41IC0xMjEuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTAgNDAwdjMwMHEwIDE2NSAxMTcuNSAyODIuNXQyODIuNSAxMTcuNWgzMDBxNjEgMCAxMjcgLTIzbC0xNzggLTE3N2gtMzQ5cS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjlsMjAwIDIwMHYtMTY5cTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41IHQtMTE3LjUgMjgyLjV6TTM0MiA2MzJsMjgzIC0yODRsNTY3IDU2N2wtMTM3IDEzN2wtNDMwIC00MzFsLTE0NiAxNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2ODsiIGQ9Ik0wIDYwM2wzMDAgMjk2di0xOThoMjAwdjIwMGgtMjAwbDMwMCAzMDBsMjk1IC0zMDBoLTE5NXYtMjAwaDIwMHYxOThsMzAwIC0yOTZsLTMwMCAtMzAwdjE5OGgtMjAwdi0yMDBoMTk1bC0yOTUgLTMwMGwtMzAwIDMwMGgyMDB2MjAwaC0yMDB2LTE5OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTIwMCA1MHYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQzN2w1MDAgNDg3di0xMTAwbC01MDAgNDg4di00MzhxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MDsiIGQ9Ik0wIDUwdjEwMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM3bDUwMCA0ODd2LTQ4N2w1MDAgNDg3di0xMTAwbC01MDAgNDg4di00ODhsLTUwMCA0ODh2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEzNiA1NTBsNTY0IDU1MHYtNDg3bDUwMCA0ODd2LTExMDBsLTUwMCA0ODh2LTQ4OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDcyOyIgZD0iTTIwMCAwbDkwMCA1NTBsLTkwMCA1NTB2LTExMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MzsiIGQ9Ik0yMDAgMTUwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djgwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMjAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di04MDB6TTYwMCAxNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41aDIwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2ODAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0yMDAgcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di04MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NDsiIGQ9Ik0yMDAgMTUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDgwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXY4MDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTgwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtODAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzU7IiBkPSJNMCAwdjExMDBsNTAwIC00ODd2NDg3bDU2NCAtNTUwbC01NjQgLTU1MHY0ODh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0wIDB2MTEwMGw1MDAgLTQ4N3Y0ODdsNTAwIC00ODd2NDM3cTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC01MDAgLTQ4OHY0ODh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik0zMDAgMHYxMTAwbDUwMCAtNDg3djQzN3EwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQzOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDc4OyIgZD0iTTEwMCAyNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0xMDAgNTAwaDExMDBsLTU1MCA1NjR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3OTsiIGQ9Ik0xODUgNTk5bDU5MiAtNTkybDI0MCAyNDBsLTM1MyAzNTNsMzUzIDM1M2wtMjQwIDI0MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgwOyIgZD0iTTI3MiAxOTRsMzUzIDM1M2wtMzUzIDM1M2wyNDEgMjQwbDU3MiAtNTcxbDIxIC0yMmwtMSAtMXYtMWwtNTkyIC01OTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MTsiIGQ9Ik0zIDYwMHEwIDE2MiA4MCAyOTkuNXQyMTcuNSAyMTcuNXQyOTkuNSA4MHQyOTkuNSAtODB0MjE3LjUgLTIxNy41dDgwIC0yOTkuNXQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMjk5LjUgODB0LTIxNy41IDIxNy41dC04MCAyOTkuNXpNMzAwIDUwMGgyMDB2LTIwMGgyMDB2MjAwaDIwMHYyMDBoLTIwMHYyMDBoLTIwMHYtMjAwaC0yMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgyOyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0yOTkuNSA4MHQtMjE3LjUgMjE3LjV0LTgwIDI5OS41ek0zMDAgNTAwaDYwMHYyMDBoLTYwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODM7IiBkPSJNMyA2MDBxMCAxNjIgODAgMjk5LjV0MjE3LjUgMjE3LjV0Mjk5LjUgODB0Mjk5LjUgLTgwdDIxNy41IC0yMTcuNXQ4MCAtMjk5LjV0LTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTI0NiA0NTlsMjEzIC0yMTNsMTQxIDE0MmwxNDEgLTE0MmwyMTMgMjEzbC0xNDIgMTQxbDE0MiAxNDFsLTIxMyAyMTJsLTE0MSAtMTQxbC0xNDEgMTQybC0yMTIgLTIxM2wxNDEgLTE0MSB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik0zIDYwMHEwIDE2MiA4MCAyOTkuNXQyMTcuNSAyMTcuNXQyOTkuNSA4MHQyOTkuNSAtODB0MjE3LjUgLTIxNy41dDgwIC0yOTkuNXQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMjk5LjUgODB0LTIxNy41IDIxNy41dC04MCAyOTkuNXpNMjcwIDU1MWwyNzYgLTI3N2w0MTEgNDExbC0xNzUgMTc0bC0yMzYgLTIzNmwtMTAyIDEwMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDg1OyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0yOTkuNSA4MHQtMjE3LjUgMjE3LjV0LTgwIDI5OS41ek0zNjQgNzAwaDE0M3E0IDAgMTEuNSAtMXQxMSAtMXQ2LjUgM3QzIDl0MSAxMXQzLjUgOC41dDMuNSA2dDUuNSA0dDYuNSAyLjV0OSAxLjV0OSAwLjVoMTEuNWgxMi41IHExOSAwIDMwIC0xMHQxMSAtMjZxMCAtMjIgLTQgLTI4dC0yNyAtMjJxLTUgLTEgLTEyLjUgLTN0LTI3IC0xMy41dC0zNCAtMjd0LTI2LjUgLTQ2dC0xMSAtNjguNWgyMDBxNSAzIDE0IDh0MzEuNSAyNS41dDM5LjUgNDUuNXQzMSA2OXQxNCA5NHEwIDUxIC0xNy41IDg5dC00MiA1OHQtNTguNSAzMnQtNTguNSAxNXQtNTEuNSAzcS01MCAwIC05MC41IC0xMnQtNzUgLTM4LjV0LTUzLjUgLTc0LjV0LTE5IC0xMTR6TTUwMCAzMDBoMjAwdjEwMGgtMjAwIHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODY7IiBkPSJNMyA2MDBxMCAxNjIgODAgMjk5LjV0MjE3LjUgMjE3LjV0Mjk5LjUgODB0Mjk5LjUgLTgwdDIxNy41IC0yMTcuNXQ4MCAtMjk5LjV0LTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTQwMCAzMDBoNDAwdjEwMGgtMTAwdjMwMGgtMzAwdi0xMDBoMTAwdi0yMDBoLTEwMHYtMTAwek01MDAgODAwaDIwMHYxMDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODc7IiBkPSJNMCA1MDB2MjAwaDE5NXEzMSAxMjUgOTguNSAxOTkuNXQyMDYuNSAxMDAuNXYyMDBoMjAwdi0yMDBxNTQgLTIwIDExMyAtNjB0MTEyLjUgLTEwNS41dDcxLjUgLTEzNC41aDIwM3YtMjAwaC0yMDNxLTI1IC0xMDIgLTExNi41IC0xODZ0LTE4MC41IC0xMTd2LTE5N2gtMjAwdjE5N3EtMTQwIDI3IC0yMDggMTAyLjV0LTk4IDIwMC41aC0xOTR6TTI5MCA1MDBxMjQgLTczIDc5LjUgLTEyNy41dDEzMC41IC03OC41djIwNmgyMDB2LTIwNiBxMTQ5IDQ4IDIwMSAyMDZoLTIwMXYyMDBoMjAwcS0yNSA3NCAtNzUuNSAxMjd0LTEyNC41IDc3di0yMDRoLTIwMHYyMDNxLTc1IC0yMyAtMTMwIC03N3QtNzkgLTEyNmgyMDl2LTIwMGgtMjEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODg7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MSAxMjEuNSAtMjkyLjV0MjkyLjUgLTEyMS41dDI5Mi41IDEyMS41dDEyMS41IDI5Mi41dC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek0zNTYgNDY1bDEzNSAxMzUgbC0xMzUgMTM1bDEwOSAxMDlsMTM1IC0xMzVsMTM1IDEzNWwxMDkgLTEwOWwtMTM1IC0xMzVsMTM1IC0xMzVsLTEwOSAtMTA5bC0xMzUgMTM1bC0xMzUgLTEzNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDg5OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzIyIDUzN2wxNDEgMTQxIGw4NyAtODdsMjA0IDIwNWwxNDIgLTE0MmwtMzQ2IC0zNDV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MDsiIGQ9Ik00IDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4NiA2MDBxMCAtMTE1IDYyIC0yMTVsNTY4IDU2N3EtMTAwIDYyIC0yMTYgNjJxLTE3MSAwIC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzkxIDI0NXE5NyAtNTkgMjA5IC01OXExNzEgMCAyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNSBxMCAxMTIgLTU5IDIwOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTAgNTQ3bDYwMCA0NTN2LTMwMGg2MDB2LTMwMGgtNjAwdi0zMDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MjsiIGQ9Ik0wIDQwMHYzMDBoNjAwdjMwMGw2MDAgLTQ1M2wtNjAwIC00NDh2MzAxaC02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik0yMDQgNjAwbDQ1MCA2MDBsNDQ0IC02MDBoLTI5OHYtNjAwaC0zMDB2NjAwaC0yOTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NDsiIGQ9Ik0xMDQgNjAwaDI5NnY2MDBoMzAwdi02MDBoMjk4bC00NDkgLTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDk1OyIgZD0iTTAgMjAwcTYgMTMyIDQxIDIzOC41dDEwMy41IDE5M3QxODQgMTM4dDI3MS41IDU5LjV2MjcxbDYwMCAtNDUzbC02MDAgLTQ0OHYzMDFxLTk1IC0yIC0xODMgLTIwdC0xNzAgLTUydC0xNDcgLTkyLjV0LTEwMCAtMTM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NjsiIGQ9Ik0wIDB2NDAwbDEyOSAtMTI5bDI5NCAyOTRsMTQyIC0xNDJsLTI5NCAtMjk0bDEyOSAtMTI5aC00MDB6TTYzNSA3NzdsMTQyIC0xNDJsMjk0IDI5NGwxMjkgLTEyOXY0MDBoLTQwMGwxMjkgLTEyOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTM0IDE3NmwyOTUgMjk1bC0xMjkgMTI5aDQwMHYtNDAwbC0xMjkgMTMwbC0yOTUgLTI5NXpNNjAwIDYwMHY0MDBsMTI5IC0xMjlsMjk1IDI5NWwxNDIgLTE0MWwtMjk1IC0yOTVsMTI5IC0xMzBoLTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTIzIDYwMHEwIDExOCA0NS41IDIyNC41dDEyMyAxODR0MTg0IDEyM3QyMjQuNSA0NS41dDIyNC41IC00NS41dDE4NCAtMTIzdDEyMyAtMTg0dDQ1LjUgLTIyNC41dC00NS41IC0yMjQuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjQuNSAtNDUuNXQtMjI0LjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjQuNXpNNDU2IDg1MWw1OCAtMzAycTQgLTIwIDIxLjUgLTM0LjV0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNSB0MjEuNSAzNC41bDU4IDMwMnE0IDIwIC04IDM0LjV0LTMyIDE0LjVoLTIwN3EtMjEgMCAtMzMgLTE0LjV0LTggLTM0LjV6TTUwMCAzMDBoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwMjsiIGQ9Ik0wIDgwMGgxMDB2LTIwMGg0MDB2MzAwaDIwMHYtMzAwaDQwMHYyMDBoMTAwdjEwMGgtMTExcTEgMSAxIDYuNXQtMS41IDE1dC0zLjUgMTcuNWwtMzQgMTcycS0xMSAzOSAtNDEuNSA2M3QtNjkuNSAyNHEtMzIgMCAtNjEgLTE3bC0yMzkgLTE0NHEtMjIgLTEzIC00MCAtMzVxLTE5IDI0IC00MCAzNmwtMjM4IDE0NHEtMzMgMTggLTYyIDE4cS0zOSAwIC02OS41IC0yM3QtNDAuNSAtNjFsLTM1IC0xNzdxLTIgLTggLTMgLTE4dC0xIC0xNXYtNiBoLTExMXYtMTAwek0xMDAgMGg0MDB2NDAwaC00MDB2LTQwMHpNMjAwIDkwMHEtMyAwIDE0IDQ4dDM2IDk2bDE4IDQ3bDIxMyAtMTkxaC0yODF6TTcwMCAwdjQwMGg0MDB2LTQwMGgtNDAwek03MzEgOTAwbDIwMiAxOTdxNSAtMTIgMTIgLTMyLjV0MjMgLTY0dDI1IC03MnQ3IC0yOC41aC0yNjl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwMzsiIGQ9Ik0wIC0yMnYxNDNsMjE2IDE5M3EtOSA1MyAtMTMgODN0LTUuNSA5NHQ5IDExM3QzOC41IDExNHQ3NCAxMjRxNDcgNjAgOTkuNSAxMDIuNXQxMDMgNjh0MTI3LjUgNDh0MTQ1LjUgMzcuNXQxODQuNSA0My41dDIyMCA1OC41cTAgLTE4OSAtMjIgLTM0M3QtNTkgLTI1OHQtODkgLTE4MS41dC0xMDguNSAtMTIwdC0xMjIgLTY4dC0xMjUuNSAtMzB0LTEyMS41IC0xLjV0LTEwNy41IDEyLjV0LTg3LjUgMTd0LTU2LjUgNy41bC05OSAtNTV6IE0yMzguNSAzMDAuNXExOS41IC02LjUgODYuNSA3Ni41cTU1IDY2IDM2NyAyMzRxNzAgMzggMTE4LjUgNjkuNXQxMDIgNzl0OTkgMTExLjV0ODYuNSAxNDhxMjIgNTAgMjQgNjB0LTYgMTlxLTcgNSAtMTcgNXQtMjYuNSAtMTQuNXQtMzMuNSAtMzkuNXEtMzUgLTUxIC0xMTMuNSAtMTA4LjV0LTEzOS41IC04OS41bC02MSAtMzJxLTM2OSAtMTk3IC00NTggLTQwMXEtNDggLTExMSAtMjguNSAtMTE3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik0xMTEgNDA4cTAgLTMzIDUgLTYzcTkgLTU2IDQ0IC0xMTkuNXQxMDUgLTEwOC41cTMxIC0yMSA2NCAtMTZ0NjIgMjMuNXQ1NyA0OS41dDQ4IDYxLjV0MzUgNjAuNXEzMiA2NiAzOSAxODQuNXQtMTMgMTU3LjVxNzkgLTgwIDEyMiAtMTY0dDI2IC0xODRxLTUgLTMzIC0yMC41IC02OS41dC0zNy41IC04MC41cS0xMCAtMTkgLTE0LjUgLTI5dC0xMiAtMjZ0LTkgLTIzLjV0LTMgLTE5dDIuNSAtMTUuNXQxMSAtOS41dDE5LjUgLTV0MzAuNSAyLjUgdDQyIDhxNTcgMjAgOTEgMzR0ODcuNSA0NC41dDg3IDY0dDY1LjUgODguNXQ0NyAxMjJxMzggMTcyIC00NC41IDM0MS41dC0yNDYuNSAyNzguNXEyMiAtNDQgNDMgLTEyOXEzOSAtMTU5IC0zMiAtMTU0cS0xNSAyIC0zMyA5cS03OSAzMyAtMTIwLjUgMTAwdC00NCAxNzUuNXQ0OC41IDI1Ny41cS0xMyAtOCAtMzQgLTIzLjV0LTcyLjUgLTY2LjV0LTg4LjUgLTEwNS41dC02MCAtMTM4dC04IC0xNjYuNXEyIC0xMiA4IC00MS41dDggLTQzdDYgLTM5LjUgdDMuNSAtMzkuNXQtMSAtMzMuNXQtNiAtMzEuNXQtMTMuNSAtMjR0LTIxIC0yMC41dC0zMSAtMTJxLTM4IC0xMCAtNjcgMTN0LTQwLjUgNjEuNXQtMTUgODEuNXQxMC41IDc1cS01MiAtNDYgLTgzLjUgLTEwMXQtMzkgLTEwN3QtNy41IC04NXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTA1OyIgZD0iTS02MSA2MDBsMjYgNDBxNiAxMCAyMCAzMHQ0OSA2My41dDc0LjUgODUuNXQ5NyA5MHQxMTYuNSA4My41dDEzMi41IDU5dDE0NS41IDIzLjV0MTQ1LjUgLTIzLjV0MTMyLjUgLTU5dDExNi41IC04My41dDk3IC05MHQ3NC41IC04NS41dDQ5IC02My41dDIwIC0zMGwyNiAtNDBsLTI2IC00MHEtNiAtMTAgLTIwIC0zMHQtNDkgLTYzLjV0LTc0LjUgLTg1LjV0LTk3IC05MHQtMTE2LjUgLTgzLjV0LTEzMi41IC01OXQtMTQ1LjUgLTIzLjUgdC0xNDUuNSAyMy41dC0xMzIuNSA1OXQtMTE2LjUgODMuNXQtOTcgOTB0LTc0LjUgODUuNXQtNDkgNjMuNXQtMjAgMzB6TTEyMCA2MDBxNyAtMTAgNDAuNSAtNTh0NTYgLTc4LjV0NjggLTc3LjV0ODcuNSAtNzV0MTAzIC00OS41dDEyNSAtMjEuNXQxMjMuNSAyMHQxMDAuNSA0NS41dDg1LjUgNzEuNXQ2Ni41IDc1LjV0NTggODEuNXQ0NyA2NnEtMSAxIC0yOC41IDM3LjV0LTQyIDU1dC00My41IDUzdC01Ny41IDYzLjV0LTU4LjUgNTQgcTQ5IC03NCA0OSAtMTYzcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHQtMjEyIDg4dC04OCAyMTJxMCA4NSA0NiAxNThxLTEwMiAtODcgLTIyNiAtMjU4ek0zNzcgNjU2cTQ5IC0xMjQgMTU0IC0xOTFsMTA1IDEwNXEtMzcgMjQgLTc1IDcydC01NyA4NGwtMjAgMzZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik0tNjEgNjAwbDI2IDQwcTYgMTAgMjAgMzB0NDkgNjMuNXQ3NC41IDg1LjV0OTcgOTB0MTE2LjUgODMuNXQxMzIuNSA1OXQxNDUuNSAyMy41cTYxIDAgMTIxIC0xN2wzNyAxNDJoMTQ4bC0zMTQgLTEyMDBoLTE0OGwzNyAxNDNxLTgyIDIxIC0xNjUgNzEuNXQtMTQwIDEwMnQtMTA5LjUgMTEydC03MiA4OC41dC0yOS41IDQzek0xMjAgNjAwcTIxMCAtMjgyIDM5MyAtMzM2bDM3IDE0MXEtMTA3IDE4IC0xNzguNSAxMDEuNXQtNzEuNSAxOTMuNSBxMCA4NSA0NiAxNThxLTEwMiAtODcgLTIyNiAtMjU4ek0zNzcgNjU2cTQ5IC0xMjQgMTU0IC0xOTFsNDcgNDdsMjMgODdxLTMwIDI4IC01OSA2OXQtNDQgNjhsLTE0IDI2ek03ODAgMTYxbDM4IDE0NXEyMiAxNSA0NC41IDM0dDQ2IDQ0dDQwLjUgNDR0NDEgNTAuNXQzMy41IDQzLjV0MzMgNDR0MjQuNSAzNHEtOTcgMTI3IC0xNDAgMTc1bDM5IDE0NnE2NyAtNTQgMTMxLjUgLTEyNS41dDg3LjUgLTEwMy41dDM2IC01MmwyNiAtNDBsLTI2IC00MCBxLTcgLTEyIC0yNS41IC0zOHQtNjMuNSAtNzkuNXQtOTUuNSAtMTAyLjV0LTEyNCAtMTAwdC0xNDYuNSAtNzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNzsiIGQ9Ik0tOTcuNSAzNHExMy41IC0zNCA1MC41IC0zNGgxMjk0cTM3IDAgNTAuNSAzNS41dC03LjUgNjcuNWwtNjQyIDEwNTZxLTIwIDM0IC00OCAzNi41dC00OCAtMjkuNWwtNjQyIC0xMDY2cS0yMSAtMzIgLTcuNSAtNjZ6TTE1NSAyMDBsNDQ1IDcyM2w0NDUgLTcyM2gtMzQ1djEwMGgtMjAwdi0xMDBoLTM0NXpNNTAwIDYwMGwxMDAgLTMwMGwxMDAgMzAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik0xMDAgMjYydjQxcTAgMjAgMTEgNDQuNXQyNiAzOC41bDM2MyAzMjV2MzM5cTAgNjIgNDQgMTA2dDEwNiA0NHQxMDYgLTQ0dDQ0IC0xMDZ2LTMzOWwzNjMgLTMyNXExNSAtMTQgMjYgLTM4LjV0MTEgLTQ0LjV2LTQxcTAgLTIwIC0xMiAtMjYuNXQtMjkgNS41bC0zNTkgMjQ5di0yNjNxMTAwIC05MSAxMDAgLTExM3YtNjRxMCAtMjAgLTEzIC0yOC41dC0zMiAwLjVsLTk0IDc4aC0yMjJsLTk0IC03OHEtMTkgLTkgLTMyIC0wLjV0LTEzIDI4LjUgdjY0cTAgMjIgMTAwIDExM3YyNjNsLTM1OSAtMjQ5cS0xNyAtMTIgLTI5IC01LjV0LTEyIDI2LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik0wIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDEwMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2NzUwaC0xMTAwdi03NTB6TTAgOTAwaDExMDB2MTUwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xNTB2MTAwaC0xMDB2LTEwMGgtNTAwdjEwMGgtMTAwdi0xMDBoLTE1MHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTUwek0xMDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwek0xMDAgMzAwdjEwMGgxMDB2LTEwMGgtMTAweiBNMTAwIDUwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMzAwIDUwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNTAwIDUwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNzAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNzAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHpNNzAwIDUwMCB2MTAwaDEwMHYtMTAwaC0xMDB6TTkwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTkwMCAzMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTkwMCA1MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExMDsiIGQ9Ik0wIDIwMHYyMDBoMjU5bDYwMCA2MDBoMjQxdjE5OGwzMDAgLTI5NWwtMzAwIC0zMDB2MTk3aC0xNTlsLTYwMCAtNjAwaC0zNDF6TTAgODAwaDI1OWwxMjIgLTEyMmwxNDEgMTQybC0xODEgMTgwaC0zNDF2LTIwMHpNNjc4IDM4MWwxNDEgMTQybDEyMiAtMTIzaDE1OXYxOThsMzAwIC0yOTVsLTMwMCAtMzAwdjE5N2gtMjQxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMCA0MDB2NjAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTU5NmwtMzA0IC0zMDB2MzAwaC0xMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTAwIDYwMHYyMDBoMzAwdi0yNTBxMCAtMTEzIDYgLTE0NXExNyAtOTIgMTAyIC0xMTdxMzkgLTExIDkyIC0xMXEzNyAwIDY2LjUgNS41dDUwIDE1LjV0MzYgMjR0MjQgMzEuNXQxNCAzNy41dDcgNDJ0Mi41IDQ1dDAgNDd2MjV2MjUwaDMwMHYtMjAwcTAgLTQyIC0zIC04M3QtMTUgLTEwNHQtMzEuNSAtMTE2dC01OCAtMTA5LjV0LTg5IC05Ni41dC0xMjkgLTY1LjV0LTE3NC41IC0yNS41dC0xNzQuNSAyNS41dC0xMjkgNjUuNXQtODkgOTYuNSB0LTU4IDEwOS41dC0zMS41IDExNnQtMTUgMTA0dC0zIDgzek0xMDAgOTAwdjMwMGgzMDB2LTMwMGgtMzAwek04MDAgOTAwdjMwMGgzMDB2LTMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNLTMwIDQxMWwyMjcgLTIyN2wzNTIgMzUzbDM1MyAtMzUzbDIyNiAyMjdsLTU3OCA1Nzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExNDsiIGQ9Ik03MCA3OTdsNTgwIC01NzlsNTc4IDU3OWwtMjI2IDIyN2wtMzUzIC0zNTNsLTM1MiAzNTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExNTsiIGQ9Ik0tMTk4IDcwMGwyOTkgMjgzbDMwMCAtMjgzaC0yMDN2LTQwMGgzODVsMjE1IC0yMDBoLTgwMHY2MDBoLTE5NnpNNDAyIDEwMDBsMjE1IC0yMDBoMzgxdi00MDBoLTE5OGwyOTkgLTI4M2wyOTkgMjgzaC0yMDB2NjAwaC03OTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExNjsiIGQ9Ik0xOCA5MzlxLTUgMjQgMTAgNDJxMTQgMTkgMzkgMTloODk2bDM4IDE2MnE1IDE3IDE4LjUgMjcuNXQzMC41IDEwLjVoOTRxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXQtMTUgLTM1LjV0LTM1IC0xNC41aC01NGwtMjAxIC05NjFxLTIgLTQgLTYgLTEwLjV0LTE5IC0xNy41dC0zMyAtMTFoLTMxdi01MHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1dC0zNS41IDE1dC0xNC41IDM1djUwaC0zMDB2LTUwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTUgdC0zNS41IDE1dC0xNC41IDM1djUwaC01MHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTM1bDQ4IDIwMGgtNjMzcS0zMiAwIC01NC41IDIxdC0yNy41IDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMCAwdjgwMGgxMjAwdi04MDBoLTEyMDB6TTAgOTAwdjEwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNWg1MDB2LTEwMGgtMTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTEgMGwzMDAgNzAwaDEyMDBsLTMwMCAtNzAwaC0xMjAwek0xIDQwMHY2MDBoMjAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgzMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjVoNTAwdi0yMDBoLTEwMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExOTsiIGQ9Ik0zMDIgMzAwaDE5OHY2MDBoLTE5OGwyOTggMzAwbDI5OCAtMzAwaC0xOTh2LTYwMGgxOThsLTI5OCAtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNMCA2MDBsMzAwIDI5OHYtMTk4aDYwMHYxOThsMzAwIC0yOThsLTMwMCAtMjk3djE5N2gtNjAwdi0xOTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0wIDEwMHYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTMxIDQwMGwxNzIgNzM5cTUgMjIgMjMgNDEuNXQzOCAxOS41aDY3MnExOSAwIDM3LjUgLTIyLjV0MjMuNSAtNDUuNWwxNzIgLTczMmgtMTEzOHpNODAwIDEwMGgxMDB2MTAwaC0xMDB2LTEwMHogTTEwMDAgMTAwaDEwMHYxMDBoLTEwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjI7IiBkPSJNLTEwMSA2MDB2NTBxMCAyNCAyNSA0OXQ1MCAzOGwyNSAxM3YtMjUwbC0xMSA1LjV0LTI0IDE0dC0zMCAyMS41dC0yNCAyNy41dC0xMSAzMS41ek0xMDAgNTAwdjI1MHY4djh2N3QwLjUgN3QxLjUgNS41dDIgNXQzIDR0NC41IDMuNXQ2IDEuNXQ3LjUgMC41aDIwMGw2NzUgMjUwdi04NTBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMiAtMTIgLTMgLTE3LjV0LTExIC02dC0yMSAtMC41aC04aC04M3EtMjAgMCAtMzQuNSAxNHQtMTguNSAzNSBxLTU1IDMzNyAtNTUgMzUxek0xMTAwIDIwMHY4NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41cTIwIDAgMzUgLTE0LjV0MTUgLTM1LjV2LTg1MHEwIC0yMCAtMTUgLTM1dC0zNSAtMTVxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMzsiIGQ9Ik03NCAzNTBxMCAyMSAxMy41IDM1LjV0MzMuNSAxNC41aDE4bDExNyAxNzNsNjMgMzI3cTE1IDc3IDc2IDE0MHQxNDQgODNsLTE4IDMycS02IDE5IDMgMzJ0MjkgMTNoOTRxMjAgMCAyOSAtMTAuNXQzIC0yOS41cS0xOCAtMzYgLTE4IC0zN3E4MyAtMTkgMTQ0IC04Mi41dDc2IC0xNDAuNWw2MyAtMzI3bDExOCAtMTczaDE3cTIwIDAgMzMuNSAtMTQuNXQxMy41IC0zNS41cTAgLTIwIC0xMyAtNDB0LTMxIC0yN3EtOCAtMyAtMjMgLTguNSB0LTY1IC0yMHQtMTAzIC0yNXQtMTMyLjUgLTE5LjV0LTE1OC41IC05cS0xMjUgMCAtMjQ1LjUgMjAuNXQtMTc4LjUgNDAuNWwtNTggMjBxLTE4IDcgLTMxIDI3LjV0LTEzIDQwLjV6TTQ5NyAxMTBxMTIgLTQ5IDQwIC03OS41dDYzIC0zMC41dDYzIDMwLjV0MzkgNzkuNXEtNDggLTYgLTEwMiAtNnQtMTAzIDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNDsiIGQ9Ik0yMSA0NDVsMjMzIC00NWwtNzggLTIyNGwyMjQgNzhsNDUgLTIzM2wxNTUgMTc5bDE1NSAtMTc5bDQ1IDIzM2wyMjQgLTc4bC03OCAyMjRsMjM0IDQ1bC0xODAgMTU1bDE4MCAxNTZsLTIzNCA0NGw3OCAyMjVsLTIyNCAtNzhsLTQ1IDIzM2wtMTU1IC0xODBsLTE1NSAxODBsLTQ1IC0yMzNsLTIyNCA3OGw3OCAtMjI1bC0yMzMgLTQ0bDE3OSAtMTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjU7IiBkPSJNMCAyMDBoMjAwdjYwMGgtMjAwdi02MDB6TTMwMCAyNzVxMCAtNzUgMTAwIC03NWg2MXExMjQgLTEwMCAxMzkgLTEwMGgyNTBxNDYgMCA4MyA1N2wyMzggMzQ0cTI5IDMxIDI5IDc0djEwMHEwIDQ0IC0zMC41IDg0LjV0LTY5LjUgNDAuNWgtMzI4cTI4IDExOCAyOCAxMjV2MTUwcTAgNDQgLTMwLjUgODQuNXQtNjkuNSA0MC41aC01MHEtMjcgMCAtNTEgLTIwdC0zOCAtNDhsLTk2IC0xOThsLTE0NSAtMTk2cS0yMCAtMjYgLTIwIC02M3YtNDAweiBNNDAwIDMwMHYzNzVsMTUwIDIxM2wxMDAgMjEyaDUwdi0xNzVsLTUwIC0yMjVoNDUwdi0xMjVsLTI1MCAtMzc1aC0yMTRsLTEzNiAxMDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTAgNDAwdjYwMGgyMDB2LTYwMGgtMjAwek0zMDAgNTI1djQwMHEwIDc1IDEwMCA3NWg2MXExMjQgMTAwIDEzOSAxMDBoMjUwcTQ2IDAgODMgLTU3bDIzOCAtMzQ0cTI5IC0zMSAyOSAtNzR2LTEwMHEwIC00NCAtMzAuNSAtODQuNXQtNjkuNSAtNDAuNWgtMzI4cTI4IC0xMTggMjggLTEyNXYtMTUwcTAgLTQ0IC0zMC41IC04NC41dC02OS41IC00MC41aC01MHEtMjcgMCAtNTEgMjB0LTM4IDQ4bC05NiAxOThsLTE0NSAxOTYgcS0yMCAyNiAtMjAgNjN6TTQwMCA1MjVsMTUwIC0yMTJsMTAwIC0yMTNoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0bC0xMzYgLTEwMGgtMTAwdi0zNzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNzsiIGQ9Ik04IDIwMHY2MDBoMjAwdi02MDBoLTIwMHpNMzA4IDI3NXY1MjVxMCAxNyAxNCAzNS41dDI4IDI4LjVsMTQgOWwzNjIgMjMwcTE0IDYgMjUgNnExNyAwIDI5IC0xMmwxMDkgLTExMnExNCAtMTQgMTQgLTM0cTAgLTE4IC0xMSAtMzJsLTg1IC0xMjFoMzAycTg1IDAgMTM4LjUgLTM4dDUzLjUgLTExMHQtNTQuNSAtMTExdC0xMzguNSAtMzloLTEwN2wtMTMwIC0zMzlxLTcgLTIyIC0yMC41IC00MS41dC0yOC41IC0xOS41aC0zNDEgcS03IDAgLTkwIDgxdC04MyA5NHpNNDA4IDI4OWwxMDAgLTg5aDI5M2wxMzEgMzM5cTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3ExNiAwIDI1IDE1dDkgMzZxMCAyMCAtOSAzNC41dC0yNSAxNC41aC00NTdoLTYuNWgtNy41dC02LjUgMC41dC02IDF0LTUgMS41dC01LjUgMi41dC00IDR0LTQgNS41cS01IDEyIC01IDIwcTAgMTQgMTAgMjdsMTQ3IDE4M2wtODYgODNsLTMzOSAtMjM2di01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik0tMTAxIDY1MXEwIDcyIDU0IDExMHQxMzkgMzhsMzAyIC0xbC04NSAxMjFxLTExIDE2IC0xMSAzMnEwIDIxIDE0IDM0bDEwOSAxMTNxMTMgMTIgMjkgMTJxMTEgMCAyNSAtNmwzNjUgLTIzMHE3IC00IDE3IC0xMC41dDI2LjUgLTI2dDE2LjUgLTM2LjV2LTUyNnEwIC0xMyAtODYgLTkzLjV0LTk0IC04MC41aC0zNDFxLTE2IDAgLTI5LjUgMjB0LTE5LjUgNDFsLTEzMCAzMzloLTEwN3EtODQgMCAtMTM5IDM5dC01NSAxMTF6TS0xIDYwMWgyMjIgcTE1IDAgMjguNSAtMjAuNXQxOS41IC00MC41bDEzMSAtMzM5aDI5M2wxMDcgODl2NTAybC0zNDMgMjM3bC04NyAtODNsMTQ1IC0xODRxMTAgLTExIDEwIC0yNnEwIC0xMSAtNSAtMjBxLTEgLTMgLTMuNSAtNS41bC00IC00dC01IC0yLjV0LTUuNSAtMS41dC02LjUgLTF0LTYuNSAtMC41aC03LjVoLTYuNWgtNDc2di0xMDB6TTEwMDAgMjAxdjYwMGgyMDB2LTYwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjk7IiBkPSJNOTcgNzE5bDIzMCAtMzYzcTQgLTYgMTAuNSAtMTUuNXQyNiAtMjV0MzYuNSAtMTUuNWg1MjVxMTMgMCA5NCA4M3Q4MSA5MHYzNDJxMCAxNSAtMjAgMjguNXQtNDEgMTkuNWwtMzM5IDEzMXYxMDZxMCA4NCAtMzkgMTM5dC0xMTEgNTV0LTExMCAtNTMuNXQtMzggLTEzOC41di0zMDJsLTEyMSA4NHEtMTUgMTIgLTMzLjUgMTEuNXQtMzIuNSAtMTMuNWwtMTEyIC0xMTBxLTIyIC0yMiAtNiAtNTN6TTE3MiA3MzlsODMgODZsMTgzIC0xNDYgcTIyIC0xOCA0NyAtNXEzIDEgNS41IDMuNWw0IDR0Mi41IDV0MS41IDUuNXQxIDYuNXQwLjUgNi41djcuNXY2LjV2NDU2cTAgMjIgMjUgMzF0NTAgLTAuNXQyNSAtMzAuNXYtMjAycTAgLTE2IDIwIC0yOS41dDQxIC0xOS41bDMzOSAtMTMwdi0yOTRsLTg5IC0xMDBoLTUwM3pNNDAwIDB2MjAwaDYwMHYtMjAwaC02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0yIDU4NXEtMTYgLTMxIDYgLTUzbDExMiAtMTEwcTEzIC0xMyAzMiAtMTMuNXQzNCAxMC41bDEyMSA4NXEwIC01MSAtMC41IC0xNTMuNXQtMC41IC0xNDguNXEwIC04NCAzOC41IC0xMzh0MTEwLjUgLTU0dDExMSA1NXQzOSAxMzl2MTA2bDMzOSAxMzFxMjAgNiA0MC41IDE5LjV0MjAuNSAyOC41djM0MnEwIDcgLTgxIDkwdC05NCA4M2gtNTI1cS0xNyAwIC0zNS41IC0xNHQtMjguNSAtMjhsLTEwIC0xNXpNNzcgNTY1bDIzNiAzMzloNTAzIGw4OSAtMTAwdi0yOTRsLTM0MCAtMTMwcS0yMCAtNiAtNDAgLTIwdC0yMCAtMjl2LTIwMnEwIC0yMiAtMjUgLTMxdC01MCAwdC0yNSAzMXY0NTZ2MTQuNXQtMS41IDExLjV0LTUgMTJ0LTkuNSA3cS0yNCAxMyAtNDYgLTVsLTE4NCAtMTQ2ek0zMDUgMTEwNHYyMDBoNjAwdi0yMDBoLTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTMxOyIgZD0iTTUgNTk3cTAgMTIyIDQ3LjUgMjMyLjV0MTI3LjUgMTkwLjV0MTkwLjUgMTI3LjV0MjMyLjUgNDcuNXExNjIgMCAyOTkuNSAtODB0MjE3LjUgLTIxOHQ4MCAtMzAwdC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0zMDAgODB0LTIxOCAyMTcuNXQtODAgMjk5LjV6TTI5OCA3MDFsMiAtMjAxaDMwMGwtMiAtMTk0bDQwMiAyOTRsLTQwMiAyOTh2LTE5N2gtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzI7IiBkPSJNMCA1OTdxMCAxMjIgNDcuNSAyMzIuNXQxMjcuNSAxOTAuNXQxOTAuNSAxMjcuNXQyMzEuNSA0Ny41cTEyMiAwIDIzMi41IC00Ny41dDE5MC41IC0xMjcuNXQxMjcuNSAtMTkwLjV0NDcuNSAtMjMyLjVxMCAtMTYyIC04MCAtMjk5LjV0LTIxOCAtMjE3LjV0LTMwMCAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTIwMCA2MDBsNDAyIC0yOTRsLTIgMTk0aDMwMGwyIDIwMWgtMzAwdjE5N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTMzOyIgZD0iTTUgNTk3cTAgMTIyIDQ3LjUgMjMyLjV0MTI3LjUgMTkwLjV0MTkwLjUgMTI3LjV0MjMyLjUgNDcuNXExNjIgMCAyOTkuNSAtODB0MjE3LjUgLTIxOHQ4MCAtMzAwdC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0zMDAgODB0LTIxOCAyMTcuNXQtODAgMjk5LjV6TTMwMCA2MDBoMjAwdi0zMDBoMjAwdjMwMGgyMDBsLTMwMCA0MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNDsiIGQ9Ik01IDU5N3EwIDEyMiA0Ny41IDIzMi41dDEyNy41IDE5MC41dDE5MC41IDEyNy41dDIzMi41IDQ3LjVxMTYyIDAgMjk5LjUgLTgwdDIxNy41IC0yMTh0ODAgLTMwMHQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMzAwIDgwdC0yMTggMjE3LjV0LTgwIDI5OS41ek0zMDAgNjAwbDMwMCAtNDAwbDMwMCA0MDBoLTIwMHYzMDBoLTIwMHYtMzAwaC0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik01IDU5N3EwIDEyMiA0Ny41IDIzMi41dDEyNy41IDE5MC41dDE5MC41IDEyNy41dDIzMi41IDQ3LjVxMTIxIDAgMjMxLjUgLTQ3LjV0MTkwLjUgLTEyNy41dDEyNy41IC0xOTAuNXQ0Ny41IC0yMzIuNXEwIC0xNjIgLTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTMwMCA4MHQtMjE4IDIxNy41dC04MCAyOTkuNXpNMjU0IDc4MHEtOCAtMzMgNS41IC05Mi41dDcuNSAtODcuNXEwIC05IDE3IC00NHQxNiAtNjAgcTEyIDAgMjMgLTUuNXQyMyAtMTV0MjAgLTEzLjVxMjQgLTEyIDEwOCAtNDJxMjIgLTggNTMgLTMxLjV0NTkuNSAtMzguNXQ1Ny41IC0xMXE4IC0xOCAtMTUgLTU1dC0yMCAtNTdxNDIgLTcxIDg3IC04MHEwIC02IC0zIC0xNS41dC0zLjUgLTE0LjV0NC41IC0xN3ExMDQgLTMgMjIxIDExMnEzMCAyOSA0NyA0N3QzNC41IDQ5dDIwLjUgNjJxLTE0IDkgLTM3IDkuNXQtMzYgNy41cS0xNCA3IC00OSAxNXQtNTIgMTlxLTkgMCAtMzkuNSAtMC41IHQtNDYuNSAtMS41dC0zOSAtNi41dC0zOSAtMTYuNXEtNTAgLTM1IC02NiAtMTJxLTQgMiAtMy41IDI1LjV0MC41IDI1LjVxLTYgMTMgLTI2LjUgMTd0LTI0LjUgN3EyIDIyIC0yIDQxdC0xNi41IDI4dC0zOC41IC0yMHEtMjMgLTI1IC00MiA0cS0xOSAyOCAtOCA1OHE2IDE2IDIyIDIycTYgLTEgMjYgLTEuNXQzMy41IC00dDE5LjUgLTEzLjVxMTIgLTE5IDMyIC0zNy41dDM0IC0yNy41bDE0IC04cTAgMyA5LjUgMzkuNXQ1LjUgNTcuNSBxLTQgMjMgMTQuNSA0NC41dDIyLjUgMzEuNXE1IDE0IDEwIDM1dDguNSAzMXQxNS41IDIyLjV0MzQgMjEuNXEtNiAxOCAxMCAzN3E4IDAgMjMuNSAtMS41dDI0LjUgLTEuNXQyMC41IDQuNXQyMC41IDE1LjVxLTEwIDIzIC0zMC41IDQyLjV0LTM4IDMwdC00OSAyNi41dC00My41IDIzcTExIDM5IDIgNDRxMzEgLTEzIDU4IC0xNC41dDM5IDMuNWwxMSA0cTcgMzYgLTE2LjUgNTMuNXQtNjQuNSAyOC41dC01NiAyM3EtMTkgLTMgLTM3IDAgcS0xNSAtMTIgLTM2LjUgLTIxdC0zNC41IC0xMnQtNDQgLTh0LTM5IC02cS0xNSAtMyAtNDUuNSAwLjV0LTQ1LjUgLTIuNXEtMjEgLTcgLTUyIC0yNi41dC0zNCAtMzQuNXEtMyAtMTEgNi41IC0yMi41dDguNSAtMTguNXEtMyAtMzQgLTI3LjUgLTkwLjV0LTI5LjUgLTc5LjV6TTUxOCA5MTZxMyAxMiAxNiAzMHQxNiAyNXExMCAtMTAgMTguNSAtMTB0MTQgNnQxNC41IDE0LjV0MTYgMTIuNXEwIC0yNCAxNyAtNjYuNXQxNyAtNDMuNSBxLTkgMiAtMzEgNXQtMzYgNXQtMzIgOHQtMzAgMTR6TTY5MiAxMDAzaDFoLTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNjsiIGQ9Ik0wIDE2NC41cTAgMjEuNSAxNSAzNy41bDYwMCA1OTlxLTMzIDEwMSA2IDIwMS41dDEzNSAxNTQuNXExNjQgOTIgMzA2IC05bC0yNTkgLTEzOGwxNDUgLTIzMmwyNTEgMTI2cTEzIC0xNzUgLTE1MSAtMjY3cS0xMjMgLTcwIC0yNTMgLTIzbC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNzsiIGhvcml6LWFkdi14PSIxMjIwIiBkPSJNMCAxOTZ2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0wIDU5NnYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0wIDk5NnYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTYwMCA1OTZoNTAwdjEwMGgtNTAwdi0xMDB6TTgwMCAxOTZoMzAwdjEwMGgtMzAwdi0xMDB6TTkwMCA5OTZoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzODsiIGQ9Ik0xMDAgMTEwMHYxMDBoMTAwMHYtMTAwaC0xMDAwek0xNTAgMTAwMGg5MDBsLTM1MCAtNTAwdi0zMDBsLTIwMCAtMjAwdjUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTAgMjAwdjIwMGgxMjAwdi0yMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0wIDUwMHY0MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHYxMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAweiBNNTAwIDEwMDBoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik0wIDB2NDAwbDEyOSAtMTI5bDIwMCAyMDBsMTQyIC0xNDJsLTIwMCAtMjAwbDEyOSAtMTI5aC00MDB6TTAgODAwbDEyOSAxMjlsMjAwIC0yMDBsMTQyIDE0MmwtMjAwIDIwMGwxMjkgMTI5aC00MDB2LTQwMHpNNzI5IDMyOWwxNDIgMTQybDIwMCAtMjAwbDEyOSAxMjl2LTQwMGgtNDAwbDEyOSAxMjl6TTcyOSA4NzFsMjAwIDIwMGwtMTI5IDEyOWg0MDB2LTQwMGwtMTI5IDEyOWwtMjAwIC0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik0wIDU5NnEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4MiA1OTZxMCAtMTcyIDEyMS41IC0yOTN0MjkyLjUgLTEyMXQyOTIuNSAxMjF0MTIxLjUgMjkzcTAgMTcxIC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek0yOTEgNjU1IHEwIDIzIDE1LjUgMzguNXQzOC41IDE1LjV0MzkgLTE2dDE2IC0zOHEwIC0yMyAtMTYgLTM5dC0zOSAtMTZxLTIyIDAgLTM4IDE2dC0xNiAzOXpNNDAwIDg1MHEwIDIyIDE2IDM4LjV0MzkgMTYuNXEyMiAwIDM4IC0xNnQxNiAtMzl0LTE2IC0zOXQtMzggLTE2cS0yMyAwIC0zOSAxNi41dC0xNiAzOC41ek01MTQgNjA5cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIyIDE2IDM4LjV0MzkgMTYuNSBxMjIgMCAzOCAtMTZ0MTYgLTM5dC0xNiAtMzl0LTM4IC0xNnEtMTQgMCAtMjkgMTBsLTU1IC0xNDVxMTcgLTIyIDE3IC01MXEwIC0zNiAtMjUuNSAtNjEuNXQtNjEuNSAtMjUuNXQtNjEuNSAyNS41dC0yNS41IDYxLjV6TTgwMCA2NTVxMCAyMiAxNiAzOHQzOSAxNnQzOC41IC0xNS41dDE1LjUgLTM4LjV0LTE2IC0zOXQtMzggLTE2cS0yMyAwIC0zOSAxNnQtMTYgMzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MjsiIGQ9Ik0tNDAgMzc1cS0xMyAtOTUgMzUgLTE3M3EzNSAtNTcgOTQgLTg5dDEyOSAtMzJxNjMgMCAxMTkgMjhxMzMgMTYgNjUgNDAuNXQ1Mi41IDQ1LjV0NTkuNSA2NHE0MCA0NCA1NyA2MWwzOTQgMzk0cTM1IDM1IDQ3IDg0dC0zIDk2cS0yNyA4NyAtMTE3IDEwNHEtMjAgMiAtMjkgMnEtNDYgMCAtNzguNSAtMTYuNXQtNjcuNSAtNTEuNWwtMzg5IC0zOTZsLTcgLTdsNjkgLTY3bDM3NyAzNzNxMjAgMjIgMzkgMzhxMjMgMjMgNTAgMjMgcTM4IDAgNTMgLTM2cTE2IC0zOSAtMjAgLTc1bC01NDcgLTU0N3EtNTIgLTUyIC0xMjUgLTUycS01NSAwIC0xMDAgMzN0LTU0IDk2cS01IDM1IDIuNSA2NnQzMS41IDYzdDQyIDUwdDU2IDU0cTI0IDIxIDQ0IDQxbDM0OCAzNDhxNTIgNTIgODIuNSA3OS41dDg0IDU0dDEwNy41IDI2LjVxMjUgMCA0OCAtNHE5NSAtMTcgMTU0IC05NC41dDUxIC0xNzUuNXEtNyAtMTAxIC05OCAtMTkybC0yNTIgLTI0OWwtMjUzIC0yNTZsNyAtN2w2OSAtNjAgbDUxNyA1MTFxNjcgNjcgOTUgMTU3dDExIDE4M3EtMTYgODcgLTY3IDE1NHQtMTMwIDEwM3EtNjkgMzMgLTE1MiAzM3EtMTA3IDAgLTE5NyAtNTVxLTQwIC0yNCAtMTExIC05NWwtNTEyIC01MTJxLTY4IC02OCAtODEgLTE2M3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTgwIDc4NHEwIDEzMSA5OC41IDIyOS41dDIzMC41IDk4LjVxMTQzIDAgMjQxIC0xMjlxMTAzIDEyOSAyNDYgMTI5cTEyOSAwIDIyNiAtOTguNXQ5NyAtMjI5LjVxMCAtNDYgLTE3LjUgLTkxdC02MSAtOTl0LTc3IC04OS41dC0xMDQuNSAtMTA1LjVxLTE5NyAtMTkxIC0yOTMgLTMyMmwtMTcgLTIzbC0xNiAyM3EtNDMgNTggLTEwMCAxMjIuNXQtOTIgOTkuNXQtMTAxIDEwMHEtNzEgNzAgLTEwNC41IDEwNS41dC03NyA4OS41dC02MSA5OSB0LTE3LjUgOTF6TTI1MCA3ODRxMCAtMjcgMzAuNSAtNzB0NjEuNSAtNzUuNXQ5NSAtOTQuNWwyMiAtMjJxOTMgLTkwIDE5MCAtMjAxcTgyIDkyIDE5NSAyMDNsMTIgMTJxNjQgNjIgOTcuNSA5N3Q2NC41IDc5dDMxIDcycTAgNzEgLTQ4IDExOS41dC0xMDUgNDguNXEtNzQgMCAtMTMyIC04M2wtMTE4IC0xNzFsLTExNCAxNzRxLTUxIDgwIC0xMjMgODBxLTYwIDAgLTEwOS41IC00OS41dC00OS41IC0xMTguNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTU3IDM1M3EwIC05NSA2NiAtMTU5bDE0MSAtMTQycTY4IC02NiAxNTkgLTY2cTkzIDAgMTU5IDY2bDI4MyAyODNxNjYgNjYgNjYgMTU5dC02NiAxNTlsLTE0MSAxNDFxLTggOSAtMTkgMTdsLTEwNSAtMTA1bDIxMiAtMjEybC0zODkgLTM4OWwtMjQ3IDI0OGw5NSA5NWwtMTggMThxLTQ2IDQ1IC03NSAxMDFsLTU1IC01NXEtNjYgLTY2IC02NiAtMTU5ek0yNjkgNzA2cTAgLTkzIDY2IC0xNTlsMTQxIC0xNDFxNyAtNyAxOSAtMTdsMTA1IDEwNSBsLTIxMiAyMTJsMzg5IDM4OWwyNDcgLTI0N2wtOTUgLTk2bDE4IC0xN3E0NyAtNDkgNzcgLTEwMGwyOSAyOXEzNSAzNSA2Mi41IDg4dDI3LjUgOTZxMCA5MyAtNjYgMTU5bC0xNDEgMTQxcS02NiA2NiAtMTU5IDY2cS05NSAwIC0xNTkgLTY2bC0yODMgLTI4M3EtNjYgLTY0IC02NiAtMTU5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNMjAwIDEwMHY5NTNxMCAyMSAzMCA0NnQ4MSA0OHQxMjkgMzh0MTYzIDE1dDE2MiAtMTV0MTI3IC0zOHQ3OSAtNDh0MjkgLTQ2di05NTNxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTMwMCAzMDBoNjAwdjcwMGgtNjAwdi03MDB6TTQ5NiAxNTBxMCAtNDMgMzAuNSAtNzMuNXQ3My41IC0zMC41dDczLjUgMzAuNXQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41IHQtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQ2OyIgZD0iTTAgMGwzMDMgMzgwbDIwNyAyMDhsLTIxMCAyMTJoMzAwbDI2NyAyNzlsLTM1IDM2cS0xNSAxNCAtMTUgMzV0MTUgMzVxMTQgMTUgMzUgMTV0MzUgLTE1bDI4MyAtMjgycTE1IC0xNSAxNSAtMzZ0LTE1IC0zNXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0zNiAzNWwtMjc5IC0yNjd2LTMwMGwtMjEyIDIxMGwtMjA4IC0yMDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0ODsiIGQ9Ik0yOTUgNDMzaDEzOXE1IC03NyA0OC41IC0xMjYuNXQxMTcuNSAtNjQuNXYzMzVxLTYgMSAtMTUuNSA0dC0xMS41IDNxLTQ2IDE0IC03OSAyNi41dC03MiAzNnQtNjIuNSA1MnQtNDAgNzIuNXQtMTYuNSA5OXEwIDkyIDQ0IDE1OS41dDEwOSAxMDF0MTQ0IDQwLjV2NzhoMTAwdi03OXEzOCAtNCA3Mi41IC0xMy41dDc1LjUgLTMxLjV0NzEgLTUzLjV0NTEuNSAtODR0MjQuNSAtMTE4LjVoLTE1OXEtOCA3MiAtMzUgMTA5LjV0LTEwMSA1MC41IHYtMzA3bDY0IC0xNHEzNCAtNyA2NCAtMTYuNXQ3MCAtMzEuNXQ2Ny41IC01MnQ0Ny41IC04MC41dDIwIC0xMTIuNXEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTZ2LTc3aC0xMDB2NzhxLTE1MiAxNyAtMjM3IDEwNHEtNDAgNDAgLTUyLjUgOTMuNXQtMTUuNSAxMzkuNXpNNDY2IDg4OXEwIC0yOSA4IC01MXQxNi41IC0zNHQyOS41IC0yMi41dDMxIC0xMy41dDM4IC0xMHE3IC0yIDExIC0zdjI3NHEtNjEgLTggLTk3LjUgLTM3LjV0LTM2LjUgLTEwMi41IHpNNzAwIDIzN3ExNzAgMTggMTcwIDE1MXEwIDY0IC00NCA5OS41dC0xMjYgNjAuNXYtMzExeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDk7IiBkPSJNMTAwIDYwMHYxMDBoMTY2cS0yNCA0OSAtNDQgMTA0cS0xMCAyNiAtMTQuNSA1NS41dC0zIDcyLjV0MjUgOTB0NjguNSA4N3E5NyA4OCAyNjMgODhxMTI5IDAgMjMwIC04OXQxMDEgLTIwOGgtMTUzcTAgNTIgLTM0IDg5LjV0LTc0IDUxLjV0LTc2IDE0cS0zNyAwIC03OSAtMTQuNXQtNjIgLTM1LjVxLTQxIC00NCAtNDEgLTEwMXEwIC0yOCAxNi41IC02OS41dDI4IC02Mi41dDQxLjUgLTcyaDI0MXYtMTAwaC0xOTdxOCAtNTAgLTIuNSAtMTE1IHQtMzEuNSAtOTRxLTQxIC01OSAtOTkgLTExM3EzNSAxMSA4NCAxOHQ3MCA3cTMzIDEgMTAzIC0xNnQxMDMgLTE3cTc2IDAgMTM2IDMwbDUwIC0xNDdxLTQxIC0yNSAtODAuNSAtMzYuNXQtNTkgLTEzdC02MS41IC0xLjVxLTIzIDAgLTEyOCAzM3QtMTU1IDI5cS0zOSAtNCAtODIgLTE3dC02NiAtMjVsLTI0IC0xMWwtNTUgMTQ1bDE2LjUgMTF0MTUuNSAxMHQxMy41IDkuNXQxNC41IDEydDE0LjUgMTR0MTcuNSAxOC41cTQ4IDU1IDU0IDEyNi41IHQtMzAgMTQyLjVoLTIyMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUwOyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTYwMiA5MDBsMjk4IDMwMGwyOTggLTMwMGgtMTk4di05MDBoLTIwMHY5MDBoLTE5OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTIgMzAwaDE5OHY5MDBoMjAwdi05MDBoMTk4bC0yOTggLTMwMHpNNzAwIDB2MjAwaDEwMHYtMTAwaDIwMHYtMTAwaC0zMDB6TTcwMCA0MDB2MTAwaDMwMHYtMjAwaC05OXYtMTAwaC0xMDB2MTAwaDk5djEwMGgtMjAwek03MDAgNzAwdjUwMGgzMDB2LTUwMGgtMTAwdjEwMGgtMTAwdi0xMDBoLTEwMHpNODAxIDkwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUyOyIgZD0iTTIgMzAwaDE5OHY5MDBoMjAwdi05MDBoMTk4bC0yOTggLTMwMHpNNzAwIDB2NTAwaDMwMHYtNTAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwek03MDAgNzAwdjIwMGgxMDB2LTEwMGgyMDB2LTEwMGgtMzAwek03MDAgMTEwMHYxMDBoMzAwdi0yMDBoLTk5di0xMDBoLTEwMHYxMDBoOTl2MTAwaC0yMDB6TTgwMSAyMDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MzsiIGQ9Ik0yIDMwMGwyOTggLTMwMGwyOTggMzAwaC0xOTh2OTAwaC0yMDB2LTkwMGgtMTk4ek04MDAgMTAwdjQwMGgzMDB2LTUwMGgtMTAwdjEwMGgtMjAwek04MDAgMTEwMHYxMDBoMjAwdi01MDBoLTEwMHY0MDBoLTEwMHpNOTAxIDIwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTU0OyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTgwMCA0MDB2MTAwaDIwMHYtNTAwaC0xMDB2NDAwaC0xMDB6TTgwMCA4MDB2NDAwaDMwMHYtNTAwaC0xMDB2MTAwaC0yMDB6TTkwMSA5MDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1NTsiIGQ9Ik0yIDMwMGwyOTggLTMwMGwyOTggMzAwaC0xOTh2OTAwaC0yMDB2LTkwMGgtMTk4ek03MDAgMTAwdjIwMGg1MDB2LTIwMGgtNTAwek03MDAgNDAwdjIwMGg0MDB2LTIwMGgtNDAwek03MDAgNzAwdjIwMGgzMDB2LTIwMGgtMzAwek03MDAgMTAwMHYyMDBoMjAwdi0yMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTU2OyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTcwMCAxMDB2MjAwaDIwMHYtMjAwaC0yMDB6TTcwMCA0MDB2MjAwaDMwMHYtMjAwaC0zMDB6TTcwMCA3MDB2MjAwaDQwMHYtMjAwaC00MDB6TTcwMCAxMDAwdjIwMGg1MDB2LTIwMGgtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41aDMwMHExNjIgMCAyODEgLTExOC41dDExOSAtMjgxLjV2LTMwMHEwIC0xNjUgLTExOC41IC0yODIuNXQtMjgxLjUgLTExNy41aC0zMDBxLTE2NSAwIC0yODIuNSAxMTcuNXQtMTE3LjUgMjgyLjV6TTIwMCAzMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41IGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1ODsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjMgMTE5IDI4MS41dDI4MSAxMTguNWgzMDBxMTY1IDAgMjgyLjUgLTExNy41dDExNy41IC0yODIuNXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTYzIDAgLTI4MS41IDExNy41dC0xMTguNSAyODIuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNNDAwIDMwMGwzMzMgMjUwbC0zMzMgMjUwdi01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjMgMTE3LjUgMjgxLjV0MjgyLjUgMTE4LjVoMzAwcTE2MyAwIDI4MS41IC0xMTl0MTE4LjUgLTI4MXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41dC0xMTcuNSAyODIuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMzAwIDcwMGwyNTAgLTMzM2wyNTAgMzMzaC01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MDsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjUgMTE3LjUgMjgyLjV0MjgyLjUgMTE3LjVoMzAwcTE2NSAwIDI4Mi41IC0xMTcuNXQxMTcuNSAtMjgyLjV2LTMwMHEwIC0xNjIgLTExOC41IC0yODF0LTI4MS41IC0xMTloLTMwMHEtMTY1IDAgLTI4Mi41IDExOC41dC0xMTcuNSAyODEuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMzAwIDQwMGg1MDBsLTI1MCAzMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik0wIDQwMHYzMDBoMzAwdjIwMGw0MDAgLTM1MGwtNDAwIC0zNTB2MjAwaC0zMDB6TTUwMCAwdjIwMGg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtNTAwdjIwMGg0MDBxMTY1IDAgMjgyLjUgLTExNy41dDExNy41IC0yODIuNXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTIxNyA1MTlxOCAtMTkgMzEgLTE5aDMwMnEtMTU1IC00MzggLTE2MCAtNDU4cS01IC0yMSA0IC0zMmw5IC04aDlxMTQgMCAyNiAxNXExMSAxMyAyNzQuNSAzMjEuNXQyNjQuNSAzMDguNXExNCAxOSA1IDM2cS04IDE3IC0zMSAxN2wtMzAxIC0xcTEgNCA3OCAyMTkuNXQ3OSAyMjcuNXEyIDE1IC01IDI3bC05IDloLTlxLTE1IDAgLTI1IC0xNnEtNCAtNiAtOTggLTExMS41dC0yMjguNSAtMjU3dC0yMDkuNSAtMjM3LjVxLTE2IC0xOSAtNiAtNDEgeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjM7IiBkPSJNMCA0MDBxMCAtMTY1IDExNy41IC0yODIuNXQyODIuNSAtMTE3LjVoMzAwcTQ3IDAgMTAwIDE1djE4NWgtNTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY1MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDUwMHYxODVxLTE0IDQgLTExNCA3LjV0LTE5MyA1LjVsLTkzIDJxLTE2NSAwIC0yODIuNSAtMTE3LjV0LTExNy41IC0yODIuNXYtMzAwek02MDAgNDAwdjMwMGgzMDB2MjAwbDQwMCAtMzUwbC00MDAgLTM1MHYyMDBoLTMwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NDsiIGQ9Ik0wIDQwMHEwIC0xNjUgMTE3LjUgLTI4Mi41dDI4Mi41IC0xMTcuNWgzMDBxMTYzIDAgMjgxLjUgMTE3LjV0MTE4LjUgMjgyLjV2OThsLTc4IDczbC0xMjIgLTEyM3YtMTQ4cTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTU2bDExOCAxMjJsLTc0IDc4aC0xMDBxLTE2NSAwIC0yODIuNSAtMTE3LjV0LTExNy41IC0yODIuNSB2LTMwMHpNNDk2IDcwOWwzNTMgMzQybC0xNDkgMTQ5aDUwMHYtNTAwbC0xNDkgMTQ5bC0zNDIgLTM1M3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNDA2IDYwMCBxMCA4MCA1NyAxMzd0MTM3IDU3dDEzNyAtNTd0NTcgLTEzN3QtNTcgLTEzN3QtMTM3IC01N3QtMTM3IDU3dC01NyAxMzd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NjsiIGQ9Ik0wIDB2Mjc1cTAgMTEgNyAxOHQxOCA3aDEwNDhxMTEgMCAxOSAtNy41dDggLTE3LjV2LTI3NWgtMTEwMHpNMTAwIDgwMGw0NDUgLTUwMGw0NTAgNTAwaC0yOTV2NDAwaC0zMDB2LTQwMGgtMzAwek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY3OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgNzAwaDMwMHYtMzAwaDMwMHYzMDBoMjk1bC00NDUgNTAwek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY4OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgNzA1bDMwNSAtMzA1bDU5NiA1OTZsLTE1NCAxNTVsLTQ0MiAtNDQybC0xNTAgMTUxek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgOTg4bDk3IC05OGwyMTIgMjEzbC05NyA5N3pNMjAwIDQwMGw2OTcgMWwzIDY5OWwtMjUwIC0yMzlsLTE0OSAxNDlsLTIxMiAtMjEybDE0OSAtMTQ5ek05MDAgMTUwaDEwMHY1MGgtMTAwdi01MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTcwOyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0yMDAgNjEybDIxMiAtMjEybDk4IDk3bC0yMTMgMjEyek0zMDAgMTIwMGwyMzkgLTI1MGwtMTQ5IC0xNDlsMjEyIC0yMTJsMTQ5IDE0OGwyNDkgLTIzN2wtMSA2OTd6TTkwMCAxNTBoMTAwdjUwaC0xMDB2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzE7IiBkPSJNMjMgNDE1bDExNzcgNzg0di0xMDc5bC00NzUgMjcybC0zMTAgLTM5M3Y0MTZoLTM5MnpNNDk0IDIxMGw2NzIgOTM4bC02NzIgLTcxMnYtMjI2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMCAxNTB2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMGwyMDAgLTIwMHYtODUwcTAgLTIxIC0xNSAtMzUuNXQtMzUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek02MDAgMTAwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTczOyIgZD0iTTAgMTUwdjEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDBsMjAwIC0yMDB2LTIxOGwtMjc2IC0yNzVsLTEyMCAxMjBsLTEyNiAtMTI3aC0zNzh2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNTgxIDMwNmwxMjMgMTIzbDEyMCAtMTIwbDM1MyAzNTJsMTIzIC0xMjNsLTQ3NSAtNDc2ek02MDAgMTAwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTc0OyIgZD0iTTAgMTUwdjEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDBsMjAwIC0yMDB2LTI2OWwtMTAzIC0xMDNsLTE3MCAxNzBsLTI5OCAtMjk4aC0zMjl2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDEwMDBoMTAwdjIwMGgtMTAwdi0yMDB6TTcwMCAxMzNsMTcwIDE3MGwtMTcwIDE3MGwxMjcgMTI3bDE3MCAtMTcwbDE3MCAxNzBsMTI3IC0xMjhsLTE3MCAtMTY5bDE3MCAtMTcwIGwtMTI3IC0xMjdsLTE3MCAxNzBsLTE3MCAtMTcweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzU7IiBkPSJNMCAxNTB2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMGwyMDAgLTIwMHYtMzAwaC00MDB2LTIwMGgtNTAwdi00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTYwMCAzMDBsMzAwIC0zMDBsMzAwIDMwMGgtMjAwdjMwMGgtMjAwdi0zMDBoLTIwMHpNNjAwIDEwMDB2MjAwaDEwMHYtMjAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0wIDE1MHYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwbDIwMCAtMjAwdi00MDJsLTIwMCAyMDBsLTI5OCAtMjk4aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDMwMGgyMDB2LTMwMGgyMDB2MzAwaDIwMGwtMzAwIDMwMHpNNjAwIDEwMDB2MjAwaDEwMHYtMjAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik0wIDI1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTEwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2NTUwaC0xMjAwdi01NTB6TTAgOTAwaDEyMDB2MTUwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTB6TTEwMCAzMDB2MjAwaDQwMHYtMjAwaC00MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3ODsiIGQ9Ik0wIDQwMGwzMDAgMjk4di0xOThoNDAwdi0yMDBoLTQwMHYtMTk4ek0xMDAgODAwdjIwMGgxMDB2LTIwMGgtMTAwek0zMDAgODAwdjIwMGgxMDB2LTIwMGgtMTAwek01MDAgODAwdjIwMGg0MDB2MTk4bDMwMCAtMjk4bC0zMDAgLTI5OHYxOThoLTQwMHpNODAwIDMwMHYyMDBoMTAwdi0yMDBoLTEwMHpNMTAwMCAzMDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3OTsiIGQ9Ik0xMDAgNzAwdjQwMGw1MCAxMDBsNTAgLTEwMHYtMzAwaDEwMHYzMDBsNTAgMTAwbDUwIC0xMDB2LTMwMGgxMDB2MzAwbDUwIDEwMGw1MCAtMTAwdi00MDBsLTEwMCAtMjAzdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3ek04MDAgNTk3cTAgLTI5IDEwLjUgLTU1LjV0MjUgLTQzdDI5IC0yOC41dDI1LjUgLTE4bDEwIC01di0zOTdxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djExMDZxMCAzMSAtMTggNDAuNXQtNDQgLTcuNWwtMjc2IC0xMTZxLTI1IC0xNyAtNDMuNSAtNTEuNXQtMTguNSAtNjUuNXYtMzU5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODA7IiBkPSJNMTAwIDBoNDAwdjU2cS03NSAwIC04Ny41IDZ0LTEyLjUgNDR2Mzk0aDUwMHYtMzk0cTAgLTM4IC0xMi41IC00NHQtODcuNSAtNnYtNTZoNDAwdjU2cS00IDAgLTExIDAuNXQtMjQgM3QtMzAgN3QtMjQgMTV0LTExIDI0LjV2ODg4cTAgMjIgMjUgMzQuNXQ1MCAxMy41bDI1IDJ2NTZoLTQwMHYtNTZxNzUgMCA4Ny41IC02dDEyLjUgLTQ0di0zOTRoLTUwMHYzOTRxMCAzOCAxMi41IDQ0dDg3LjUgNnY1NmgtNDAwdi01NnE0IDAgMTEgLTAuNSB0MjQgLTN0MzAgLTd0MjQgLTE1dDExIC0yNC41di04ODhxMCAtMjIgLTI1IC0zNC41dC01MCAtMTMuNWwtMjUgLTJ2LTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNMCAzMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0zMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMTAwIDEwMGg0MDBsMjAwIDIwMGgxMDVsMjk1IDk4di0yOThoLTQyNWwtMTAwIC0xMDBoLTM3NXpNMTAwIDMwMHYyMDBoMzAwdi0yMDBoLTMwMHpNMTAwIDYwMHYyMDBoMzAwdi0yMDBoLTMwMHogTTEwMCAxMDAwaDQwMGwyMDAgLTIwMHYtOThsMjk1IDk4aDEwNXYyMDBoLTQyNWwtMTAwIDEwMGgtMzc1ek03MDAgNDAydjE2M2w0MDAgMTMzdi0xNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MjsiIGQ9Ik0xNi41IDk3NC41cTAuNSAtMjEuNSAxNiAtOTB0NDYuNSAtMTQwdDEwNCAtMTc3LjV0MTc1IC0yMDhxMTAzIC0xMDMgMjA3LjUgLTE3NnQxODAgLTEwMy41dDEzNyAtNDd0OTIuNSAtMTYuNWwzMSAxbDE2MyAxNjJxMTcgMTggMTMuNSA0MXQtMjIuNSAzN2wtMTkyIDEzNnEtMTkgMTQgLTQ1IDEydC00MiAtMTlsLTExOCAtMTE4cS0xNDIgMTAxIC0yNjggMjI3dC0yMjcgMjY4bDExOCAxMThxMTcgMTcgMjAgNDEuNXQtMTEgNDQuNSBsLTEzOSAxOTRxLTE0IDE5IC0zNi41IDIydC00MC41IC0xNGwtMTYyIC0xNjJxLTEgLTExIC0wLjUgLTMyLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik0wIDUwdjIxMnEwIDIwIDEwLjUgNDUuNXQyNC41IDM5LjVsMzY1IDMwM3Y1MHEwIDQgMSAxMC41dDEyIDIyLjV0MzAgMjguNXQ2MCAyM3Q5NyAxMC41dDk3IC0xMHQ2MCAtMjMuNXQzMCAtMjcuNXQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNCAyNC41IC0zOS41dDEwLjUgLTQ1LjV2LTIxMnEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjAgMCAtMzUgMTQuNXQtMTUgMzUuNXpNMCA3MTIgcTAgLTIxIDE0LjUgLTMzLjV0MzQuNSAtOC41bDIwMiAzM3EyMCA0IDM0LjUgMjF0MTQuNSAzOHYxNDZxMTQxIDI0IDMwMCAyNHQzMDAgLTI0di0xNDZxMCAtMjEgMTQuNSAtMzh0MzQuNSAtMjFsMjAyIC0zM3EyMCAtNCAzNC41IDguNXQxNC41IDMzLjV2MjAwcS02IDggLTE5IDIwLjV0LTYzIDQ1dC0xMTIgNTd0LTE3MSA0NXQtMjM1IDIwLjVxLTkyIDAgLTE3NSAtMTAuNXQtMTQxLjUgLTI3dC0xMDguNSAtMzYuNXQtODEuNSAtNDAgdC01My41IC0zNi41dC0zMSAtMjcuNWwtOSAtMTB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg0OyIgZD0iTTEwMCAwdjEwMGgxMTAwdi0xMDBoLTExMDB6TTE3NSAyMDBoOTUwbC0xMjUgMTUwdjI1MGwxMDAgMTAwdjQwMGgtMTAwdi0yMDBoLTEwMHYyMDBoLTIwMHYtMjAwaC0xMDB2MjAwaC0yMDB2LTIwMGgtMTAwdjIwMGgtMTAwdi00MDBsMTAwIC0xMDB2LTI1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg1OyIgZD0iTTEwMCAwaDMwMHY0MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNDAwek01MDAgMHYxMDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMDBoLTMwMHpNOTAwIDB2NzAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTcwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODY7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjMwMGgtMjAwdjEwMGgyMDB2MTAwaC0zMDB2LTMwMGgyMDB2LTEwMGgtMjAwdi0xMDB6TTYwMCAzMDBoMjAwdjEwMGgxMDB2MzAwaC0xMDB2MTAwaC0yMDB2LTUwMCB6TTcwMCA0MDB2MzAwaDEwMHYtMzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NzsiIGQ9Ik0tMTAwIDMwMHY1MDBxMCAxMjQgODggMjEydDIxMiA4OGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnpNMTAwIDIwMGg5MDB2NzAwaC05MDB2LTcwMHpNMjAwIDMwMGgxMDB2MjAwaDEwMHYtMjAwaDEwMHY1MDBoLTEwMHYtMjAwaC0xMDB2MjAwaC0xMDB2LTUwMHpNNjAwIDMwMGgyMDB2MTAwaDEwMHYzMDBoLTEwMHYxMDBoLTIwMHYtNTAwIHpNNzAwIDQwMHYzMDBoMTAwdi0zMDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTS0xMDAgMzAwdjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4aDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAgMjAwaDkwMHY3MDBoLTkwMHYtNzAwek0yMDAgMzAwaDMwMHYxMDBoLTIwMHYzMDBoMjAwdjEwMGgtMzAwdi01MDB6TTYwMCAzMDBoMzAwdjEwMGgtMjAwdjMwMGgyMDB2MTAwaC0zMDB2LTUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg5OyIgZD0iTS0xMDAgMzAwdjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4aDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAgMjAwaDkwMHY3MDBoLTkwMHYtNzAwek0yMDAgNTUwbDMwMCAtMTUwdjMwMHpNNjAwIDQwMGwzMDAgMTUwbC0zMDAgMTUwdi0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MDsiIGQ9Ik0tMTAwIDMwMHY1MDBxMCAxMjQgODggMjEydDIxMiA4OGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnpNMTAwIDIwMGg5MDB2NzAwaC05MDB2LTcwMHpNMjAwIDMwMHY1MDBoNzAwdi01MDBoLTcwMHpNMzAwIDQwMGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB2LTMwMHpNNTc1IDU0OSBxMCAtNjUgMjcgLTEwN3Q2OCAtNDJoMTMwdjMwMGgtMTMwcS0zOCAwIC02Ni41IC00M3QtMjguNSAtMTA4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTE7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjMwMGgtMjAwdjEwMGgyMDB2MTAwaC0zMDB2LTMwMGgyMDB2LTEwMGgtMjAwdi0xMDB6TTYwMSAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTcwMCA3MDBoMTAwIHYtNDAwaDEwMHY1MDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTI7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjQwMGgtMjAwdjEwMGgtMTAwdi01MDB6TTMwMSA0MDB2MjAwaDEwMHYtMjAwaC0xMDB6TTYwMSAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTcwMCA3MDBoMTAwIHYtNDAwaDEwMHY1MDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTM7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCA3MDB2MTAwaDMwMHYtMzAwaC05OXYtMTAwaC0xMDB2MTAwaDk5djIwMGgtMjAwek0yMDEgMzAwdjEwMGgxMDB2LTEwMGgtMTAwek02MDEgMzAwdjEwMGgxMDB2LTEwMGgtMTAweiBNNzAwIDcwMHYxMDBoMjAwdi01MDBoLTEwMHY0MDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTk0OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNDAwIDUwMHYyMDAgbDEwMCAxMDBoMzAwdi0xMDBoLTMwMHYtMjAwaDMwMHYtMTAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NTsiIGQ9Ik0wIDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4MiA2MDBxMCAtMTcxIDEyMS41IC0yOTIuNXQyOTIuNSAtMTIxLjV0MjkyLjUgMTIxLjV0MTIxLjUgMjkyLjV0LTEyMS41IDI5Mi41dC0yOTIuNSAxMjEuNXQtMjkyLjUgLTEyMS41dC0xMjEuNSAtMjkyLjV6TTQwMCA0MDB2NDAwaDMwMCBsMTAwIC0xMDB2LTEwMGgtMTAwdjEwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaC0xMDB6TTcwMCA0MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NzsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoMjIydjMwMGg0MDB2LTMwMGgxMjhxMTIwIDAgMjA1IDg2LjV0ODUgMjA3LjV0LTg1IDIwN3QtMjA1IDg2cS00NiAwIC05MCAtMTRxLTQ0IDk3IC0xMzQuNSAxNTYuNXQtMjAwLjUgNTkuNXEtMTUyIDAgLTI2MCAtMTA3LjV0LTEwOCAtMjYwLjVxMCAtMjUgMiAtMzdxLTY2IC0xNCAtMTA4LjUgLTY3LjV0LTQyLjUgLTEyMi41ek0zMDAgMjAwaDIwMHYzMDBoMjAwdi0zMDBoMjAwIGwtMzAwIC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5ODsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoOGw0MTQgNDE0bDQwMyAtNDAzcTk0IDI2IDE1NC41IDEwNC41dDYwLjUgMTc4LjVxMCAxMjAgLTg1IDIwNi41dC0yMDUgODYuNXEtNDYgMCAtOTAgLTE0cS00NCA5NyAtMTM0LjUgMTU2LjV0LTIwMC41IDU5LjVxLTE1MiAwIC0yNjAgLTEwNy41dC0xMDggLTI2MC41cTAgLTI1IDIgLTM3cS02NiAtMTQgLTEwOC41IC02Ny41dC00Mi41IC0xMjIuNXpNMzAwIDIwMGwzMDAgMzAwIGwzMDAgLTMwMGgtMjAwdi0zMDBoLTIwMHYzMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTEwMCAyMDBoNDAwdi0xNTVsLTc1IC00NWgzNTBsLTc1IDQ1djE1NWg0MDBsLTI3MCAzMDBoMTcwbC0yNzAgMzAwaDE3MGwtMzAwIDMzM2wtMzAwIC0zMzNoMTcwbC0yNzAgLTMwMGgxNzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMDsiIGQ9Ik0xMjEgNzAwcTAgLTUzIDI4LjUgLTk3dDc1LjUgLTY1cS00IC0xNiAtNCAtMzhxMCAtNzQgNTIuNSAtMTI2LjV0MTI2LjUgLTUyLjVxNTYgMCAxMDAgMzB2LTMwNmwtNzUgLTQ1aDM1MGwtNzUgNDV2MzA2cTQ2IC0zMCAxMDAgLTMwcTc0IDAgMTI2LjUgNTIuNXQ1Mi41IDEyNi41cTAgMjQgLTkgNTVxNTAgMzIgNzkuNSA4M3QyOS41IDExMnEwIDkwIC02MS41IDE1NS41dC0xNTAuNSA3MS41cS0yNiA4OSAtOTkuNSAxNDUuNSB0LTE2Ny41IDU2LjVxLTExNiAwIC0xOTcuNSAtODEuNXQtODEuNSAtMTk3LjVxMCAtNCAxIC0xMS41dDEgLTExLjVxLTE0IDIgLTIzIDJxLTc0IDAgLTEyNi41IC01Mi41dC01Mi41IC0xMjYuNXoiIC8+CjwvZm9udD4KPC9kZWZzPjwvc3ZnPg==","glyphicons-halflings-regular.ttf":"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/zr+0wXdAAEAAAAAAAAAAAAAAAAAAACfAbgAKASwAAAEsAAABLAAAASwAGQEsAAABLAAAAKMAAAFGAAAAowAAAUYAAABsgAAAUYAAADZAAAA2QAAAKMAAAEEAAAASAAAAQQAAAFGAAAEsABkBLAAyAH0AAAEsP/yBLAAAASw//MEsAAABLAADgSwABcEsABkBLD/uASw/7gEsAAABLAAAASwAAAEsAAABLAAAASwAB0EsABqBLAAFwSwABcEsAAXBLAAZASwABoEsABkBLAAAQSwAGQEsAAEBLD/nASwAAAEsAABBLAABASwAAAEsAAEBLAAFwSwABcEsABkBLAAAASwAGQEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAQSwAGQEsADIBLAAAASwAAAEsAA1BLAAZASwAMgEsP+1BLAAIQSwAAAEsAAABLAAAASwAAAEsAAABLD/mwSwAAEEsAAABLAAAASwAJQEsAABBLAAdQSwAAAEsAAABLAAAASwAAAEsADIBLAAAASwAIgEsADIBLAAyASwAMgEsAAABLAAAASwASwEsABkBLAAuQSwARAEsAADBLAAAwSwAAMEsAADBLAAAwSwAAMEsAAABLAABASwAAQEsAAEBLAAAASwAAAEsADMBLAAaASwAAAEsAAABLAAIgSwABcEsAAABLAAAASwAG8EsP/DBLD/wwSw/58EsABkBLAAAASwAAAEsAAABLAAZASw/+IEsABGBLD/OgSwABIEsAAABLAAAQSwAS4EsAAABLAAAASw/5sEsABKBLAAFQSwAAAEsAAABLAACASw/5sEsABhBLAAAgSwAAUEsAAABLAABQSwAAUEsAAFBLAAAATEAAAEsABkAAAAAAAA/9gAUAA5AMgAAAEnAGQAAgACAAIAAgACAAIAAgAAAAAAAAAAAAAA2QAAAAAABAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAGQAZAAAABAAAABkAGT/nP+c/5z/nP+c/5z/nP+cAAQAAP/y//IAZAB5AAAAKgAqACoAKgBmAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkATABSAFQAYQBqgHOAf4CNgKYAswC7gMsA0wD9ARyBWQGDgYiBkQG4gdMB7AH6AiUCTAJYAmUCgoKRAqICu4LVguQC+YMPgywDRwNdg2qDjoOYA6KDtwP2BBMEIgQ1hEOESYRlBIUEmAS2hMWE44UDBRiFLoVJhWSFmIW2hdMF4YX6Bg4GIIYvhksGZgZ/BpKGnwathrWGuQbFBswG04bhhu2G+Ab9BwOHFocpBzuHTIdwh4QHooe7B9GH6AfwB/iIAYgKiBGIG4gkCDyIWohxCJCIsgjfiOuJBQkkiTmJRQliCWcJbIl7iZaJogmviboJw4naifOKDgoZCi4KTYp1CpuKuwraCuyK/osRCyYLb4t5i5mLpIu+i86MBgwtjEmMX4x0jIIMrgzYDOQNBo0ojUENWY1vjYWNlw2tDcKN2A3rDf8OFA4tDkYOVg5ljnUOhg6XjqGOtY7LDt0O948QDxoPNw9RD2oPhA+SD68Pu4/MD+aQAJAYEC0QSJBiEHwQoJC+EOIQ/ZEPERgRJ4AAQAAANsAmwARAAAAAAACAAEAAgAWAAABAAEBAAAAAAAAAA8AugABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA/gADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB+gADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACknd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQAzACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAAxADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAATQBvAG4AIABKAGEAbgAgADIANwAgADAAOAA6ADAAMQA6ADMANAAgADIAMAAxADQAAgAAAAAAAP+1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADbAAABAgEDAAMADQAOAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESAO8BEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXBmdseXBoMQd1bmkwMDBEB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTI1RkMHdW5pMjYwMQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMLgB/4WwAY0AS7AIUFixAQGOWbFGBitYIbAQWUuwFFJYIbCAWR2wBitcWFmwFCsAAAABUuZYrgAA","glyphicons-halflings-regular.woff":"d09GRgABAAAAAFsYABEAAAAAoUAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcalXC8EdERUYAAAGcAAAAHgAAACABCAAET1MvMgAAAbwAAABDAAAAYGenS4RjbWFwAAACAAAAARsAAAJySvAJmmN2dCAAAAMcAAAACAAAAAgAKAOHZnBnbQAAAyQAAAGxAAACZVO0L6dnYXNwAAAE2AAAAAgAAAAIAAAAEGdseWYAAATgAABODAAAiTweHjMhaGVhZAAAUuwAAAA0AAAANgJiWP5oaGVhAABTIAAAABwAAAAkCjIED2htdHgAAFM8AAABFAAAAvTBwRGObG9jYQAAVFAAAAGrAAABuDSPVk5tYXhwAABV/AAAACAAAAAgAgQBoG5hbWUAAFYcAAABggAAA3zUr5ntcG9zdAAAV6AAAANAAAAIhLlGpmlwcmVwAABa4AAAAC4AAAAusPIrFHdlYmYAAFsQAAAABgAAAAZYr1LmAAAAAQAAAADMPaLPAAAAAM8MFvIAAAAAzwwJLnjaY2BkYGDgA2IJBhBgYmAEwltAzALmMQAADagBDQAAeNpjYGZpZJzAwMrAwszDdIGBgSEKQjMuYTBi2gHkA6Wwg1DvcD8GBwbeRwzMB/4LANVJMNQAhRmRlCgwMAIAC2EJ1gB42s2RP0vDYBDG723aSIrSUESsiHcIWqqDXbvFRe0gBJw6tTgUCx2Kk926dusixc0P4OiXaQZzjx2cnNRFhPiagENdHBx84P693P0O7iUihzLbJGM9mb6tTFrnTWhjSAEVyLfZCgnt060U5UDacrdd3vnYNVWvWlJHPa1oTRva1JZ2tKdDHesUHiqooYEjNNFCD0OMcY2bR0qSr10pcc8S6QfRaEF9Fa1roKElnutARzqBgQ9BHQFOEKKDAUaYYJoSTfKWzJMo6epSPI/v44sHJ9qI1malWVEqsi5lWRZXiN/5lV/4mZ8YfMWX3Ocud7jNLT7jUz7mQw62ouwafyvj0jfW5KzLLTZkX5EpX6B/LXfxYfU3U5+Pg2iWAAAAAI8AKAL4eNpdUbtOW0EQ3Q0PA4HE2CA52hSzmZDGe6EFCcTVjWJkO4XlCGk3cpGLcQEfQIFEDdqvGaChpEibBiEXSHxCPiESM2uIojQ7O7NzzpkzS8qRqnfpa89T5ySQwt0GzTb9Tki1swD3pOvrjYy0gwdabGb0ynX7/gsGm9GUO2oA5T1vKQ8ZTTuBWrSn/tH8Cob7/B/zOxi0NNP01DoJ6SEE5ptxS4PvGc26yw/6gtXhYjAwpJim4i4/plL+tzTnasuwtZHRvIMzEfnJNEBTa20Emv7UIdXzcRRLkMumsTaYmLL+JBPBhcl0VVO1zPjawV2ys+hggyrNgQfYw1Z5DB4ODyYU0rckyiwNEfZiq8QIEZMcCjnl3Mn+pED5SBLGvElKO+OGtQbGkdfAoDZPs/88m01tbx3C+FkcwXe/GUs6+MiG2hgRYjtiKYAJREJGVfmGGs+9LAbkUvvPQJSA5fGPf50ItO7YRDyXtXUOMVYIen7b3PLLirtWuc6LQndvqmqo0inN+17OvscDnh4Lw0FjwZvP+/5Kgfo8LK40aA4EQ3o3ev+iteqIq7wXPrIn07+xWgAAAAABAAH//wAPeNq9vQlgG+WVADzfzEijWxpJo5FkS7IkS/IpxZJlxfGR4Nx3yM2dgIBCOMIVrhAghXK0CYZCKA0tKSyQco6UUNpu2G3pwoq26hnSQrcsvVhajm0hu90m8fC/981Ilu0Eyu7//3EkzSXNe+973/vePQzLtDEM+QzXwnCMwKRLhMkMlgWefS9bMhr+bbDMsbDJlDg8bMDDZcHIHRssEzyeE6NiIifG28gs9e0//5lrOfZmG/sThjBFpsgv4ZcwMtPKKExGsecUUlWsWaL4M4rnkGLIKu6qImRLAdLJTOvx5KOpgizmxIIsRKWoLKTEuCikCkXCPb/j+Qq8CKeO1TYPTzqgjtHLAA0G/tH7WplFTNnCMJ14c4He3JAtE8bSuW8W4cydRLFlFMshhc0q5qrCZ8tmC54yC+bOssWMmxbG3FmyU+gCJCrW/sgo6SKj6mb14PiWupmMUpwN/Bf4Z5gCs4VRshmlrVpuy+JPtaXNFI4ohSOSVQwZpTmnGKtKMKtIGcVaLUtWvFByIWTTM0qBQharlkKRLHy6St2kU3FllXRVcWZL/aSzFCuIbkXoV7rFsrUl29/fj1Qs5HoL8UKur9CXy8o+Od6bZuMxBytEhahRgrcwn8sOs/mcUTDGY6k0SRWLlxleL96WWHzV/g82Dxqfyy1ZFPb3z5npIdcX1YNGsgvezdP6Z+ek0KIluWciGzc9Xr26dcRGDhcz+eLjp+544fwLC+unBbxdpw4X033FRVeOdDqD09bln7rwqq+mn7yGwTGpkFF+CXsA+MtNeYGrEoXPlAzayANRK9wtx7YiORlGH8Pavx7Y/+gD0sW/yJ/ESEyEUbiM4qjCmBHFlynJ8BMlMye6S1axv39aD+f15aLZvt5kPCakSTxmlLyygzguW86+f80TT1yT7up67pIv/ZIdWUPeX3H50x885dh49S8eCNgcm5Bt4FXkFeAdHuaBhbEzTJ7IBZIQzQYY9QpgcXQF6VIPsuvZ9TD6XUU8qG6u0L3DY4+yp6k20jW2F36H++jDjz7kX+BfYFjGyLgYRkgAexN4Ffp6MyQZE+xk6b+feog979DaQ+fY7Q84W532zf9+snbgdHvK8YDdXqMFwKQwZibHlI3Iz0JV4WAaWTKK6RCQssyZkHM4AzCuicNNkxEY10qJK0aJCNMpHxV5BYE79iaQUhl7fez1YpFN4u87GBPMl2eZFoZJhklhmOTFhJgUHETW93qTgsFBJDhm5FtvX34SID9r0fJ1bvfty+etcljGXBYH7H/+kvagtKGDPXP32F9dcvDyvkJ7QD65wF1msXLf5TyWseWiP8AANeSP3uX/hX+A8TBNzClM2YEYuTOKXFWaNMZozijkkCJVFcmFskExwBwAdg9Ionsfx7rcrXK/YhCB85mS2wFTwNyvyKLi6lea3PsIIxjg/LQetwsQkrwC8XmdxBhLEWB31uVr6XMlW2TSDKzWvIx0CcLFJq9JPXj1zspnXyTu735XfZ+8h+fU31d2Xq0ehJMXCwLpWsZepP75xe/CFRp/Fpn1/LP8HCYAHEmUYEZhDiFPOqqlJo2le4fZMJHhjZW8Dk5I88Xpp1599bVd066/5qr1fbOvvWXv8PDjt1w7m3PN2rKqm184Z+4CvnvVlln91950Y3nNmvKNN10LtProm8x8/j4YewtjA5aKenKeKPGYiYcrLCD/fg97D/mluv1u9SZ1+z33slwLFUV/UmcSj/oe+Wf4pHzY+Bs+xs8odhC/VAzxwERypuSnIE/4dY8sFORUIZ4Spt5n9r8s/M73Fn33naXLjnNH9sqdv/3Cjj984ec/n8C7HpjHeZKPJYdIb1/WFyJeY1wiEhlNzFT+R5mZIKN3EVK8L1fZqihbK7n7iupHdzE4/+j3l9B1yco44Xdk4JoIE2dSTCeTgRmhMGUGOYivlvwtICiFjBLLKaaq0ppVrBklmVNsVaUtqzgzSkdOcVWVrqziySjpnOKtKtOyiH84m0NyEKWXjiNf3WeyubytclbhXSii9pntooS7/qrSDO8aV4aySkt1X2tb1zQ81eIqReHKRHt3D+5y1VIeBZPNCoIp2NTfrzjFUnMIBVQPXS/z8fykF0pBmKVRcpxzvHJ0f7H+D8TN2F76OjB+kF/SeAnKUhBOx7bWjzC6fNPWRifQMMPMZEaYsh2p15UDtJFkoYwySEnTC7wxi9LDRddHP7y7Si2AOBCtvapMz5ZOonwD8qEPJK5PEmFMo7FkgEzcJ59wPgRcIIVCkroZ38e32fUnOpNtOMxe3LAz9sKJzjAgPSfjvpw5i7mUuZG5C9ZqSoXS4EU5pEOpt5hFSpSWbM0hLUpzroT97kzp9C/Afmu1tPqWLFBnFKlTciHTmYH52rKUQtNAUs1aAdv91dKC9fjpKm2AY5tvgu0LqqVrbs9mS3dTyuFcGCDabOgksaSY//h9kv//9vqQVEGCneCNjP7fzmfre+TR420e+6//6wWwztbkReMYr9V5fJDyeC+d/ktySnNVmYOjqpyOY6qshhHdMGFE5ROMaGnj8UfP64PdPjichF2jNPk8jgbyPZV9UY36H7f/ydRmD+DO2Bx8P/52I83Hv/0pKIoyPMTE+A/4DsbAMLA4pEgqRB7hsgfHvvYj8rJ6OtcLWz/G6y5kLuTn8fNATuN1BTORzUQwkwtJUH3rIAmS4EH1LfoGH8MT9w/iNbBWTdANUszzE7QDUAviOSVUVaLZcnMI1ZzmJGg8oWbcDEVAv9b1h7YG/SEJAiucVRJVpSVbTiTx0kQcvpVM4GayGb6VqGsZ7TDSSdAyyqwPRHa/khAVd78SAK1DdgUbtA7ZDVqHq78UAu1jH2OQ/HiuSSx7A6S//xN0Dw7keU7KSXEpnv9YPWResQKi/hO0EfUUvAile412X6a0izBnHE+zapmqWUV1zeo51KyaQx+jWz2HulVz+BO1Kw6WsY/HDLUG8r6O2I5r1VcFH1xlqiH2InG9CIhRXZGR+QdAf2iC1X4ug4ajBdDoouuSUC0L1JgTwJhTBFfJBhh5qmWbBw/awI5Ck6lkE2CQZH9zHACnmpm7IIE26wVg873JVN7nBg2NjaVZok1g1HfpBJZ/9vj5W4+Qs49sPf/xn522+9V3X919Gvl1SCri7CjiAvU8aRt+rFC5pnTkSOmaSuGxYfWXz2+Bq+BiYhtfs2DdLTIE5FKprsdMY8o8rjgmWy5HFFdG4REfRMIESFjBTNbQcVZLIpU2BbCwCRjHtb8iGCNdFRj6CkGDhBxWbWh5g6KwAukWZJr4XfwuZj5zMnM2g0ywoqoszih9QL2VlHoLqsoCV2kp3AMWtFVApwUM2lBDwPZLxX1OKdePrNDqLgUyYFiWVgDLlwRQYJTF4j4umpqLZ/vcpc6TkOE93gjrixDBJxdkH2zmsjPZvplE7iukCn2wme/NsMkMKSRTQioJm/GYkzU6ScooyIIRNg2oFEpeYywZNN7POvzciu7BWw3dPYZkW6wpkzSmM4bPTZ+2gvM7yZcMhi8Rl8yt6Br8nKF7mlG7wpDtMtw6kF7BBezs/UZy/rbyNvjPnhJtTxp7ugyfG0ifzAXhlMFwP2sPcid3DX3O0NWDX27uThpzHYbPzciczAUc2s87AtzJmRmfM2TSxuS0wPpt29afsm0byEKBKX70Ea8YvKD3j2ugBeYOphzFudYK1v603iwsFalMuSPblwN1oakKKiYqFY4uOJ7JULsVzPvgIVx1Wl2lBM7DrNKGmmk50UYlFAMM3eZCeaRMAy3VVeqBre6s0ltV7Nlybw9e1OuBi3pdqGeCUESHAHWi4CJSX0kalhMPqJ3aFrKSB16obnr07aLTQjwD7aSrfYB4LE6H9ehbVkeRu2WgfWxO+0CRyhjkM03a8CRrcRbbBwba4XtZq8Nx7BJkvvbBwXb2wNgc9gBYxkf3a5uavQR/Bon/NdggXUzZTPV14HvQz82HUFc3UT0bqQRMXzKYQPAQOlnNJF5zurCj7C0V9SD+saewt4xtHduLcoRdj/yOAvBtkBMORmRiTBmMpU6CXA/SzlgtGwkSzGgCieDRZhPVSesUISIpOqzkV2TUYT32jNXBriddAX6b1aHaxs4A9Dg34o4ylmd4/in+KZjDHuCB7Qza4M6q4kUhW5a9eBtZgnHx4JBTwxAgsMOouUpeQHD8ogBcJLtwcsO8R6Ox5LWDnLJwDg/MrJIow46Zd6Kty5S8TtgTGLsLT3nwlJGINl0Qu1tbeLeL5Vta3boA9qCEkPg9xE3mEPeePer76gH1fd+HZO2HH6pPzAeR8Y3GE3v2sGepT3yIp8dUIOlBaiuwHz3IMAYv0BTlVVq3soQcYgwWlTNDHQ9O6nggZmRhlGO6tIqTHAd/JMrFOU+OixfJsz+VHvb+hDw79lb7B209bzY9wSvoQDm6gq4FhzW/D6vr6No9FzFlK95TuxuYICQ7LirLvIC35hlN9NuBjhYqK0sCD5KKNYOksosgX6lXDL0g6KcEiKjtRf6kvoHyU30Dtn7z7LPUjwciFP14lSKMM/Ar2PfPAhQyE2bO0TVID53LBhjYCB1YsaqI2kIKymSzqyTBFiiOLbikiqJ7v513y1Q3aBaVcL8iuffbDB5fiI6p7IE1l5jMTFBfUXuH2WyYpUsRqY0kR4U9R87a88bhN/acpX2c/gFZ/cEH6lMrdlV2HSENJ+CDZdWnPsDzKp2uwLQTeTbIbKzxrM6iTQ0sipiAjeuv82UzYgJ8uR/50ouY+EVF6lfgCDKnj2LicSImRoGhetDxWZJrgokcF0/Ek8uPHNl1Yq5Uz9ZwoUzC1n0KiE+7Lk2AR1xUsWcBJW8GRwKMbzOocjxxUJ0sL3qiTTVZmJOjhRwXrXAt/0pA1m23OiqVLOnKVjaOPRwgv0LJpSZg4pO3YJk9PIGGEuNn5jXMe6RhgNIQYLDVKRcEyok2IAxvtnA+f30aU0L55CmE8uj6SAvMbMOJyPQhmUHaJ5OJ7IcRf+pJOH8nubsCnFvTmZqZVQy6mWFsxYwSADhDFE6A2+kqWTReDQOcFoTLwHu8cgCH2CyWJB+u+SKOPGHMXgkPB0SFAu0Ns+hAjnuNLUkXOpmFqCjAiu4gsq4k7TqifhU0otsvuYeM3v2Vl0EjYn/0rqYWbQFVCTSqk/HMdaftZjQdj6Hwupgocx1TFnE8YX75qmVfBOe4Lwhz3I7zrmw34AE7gy7ymOacgIHXGDdYLcUBGReqMaK7HwF+XjBYLaCbRBH+oLtkNiFavggsL1EqHsx4nQGd6JrLDrApiNFCEt3GnBgVQJHpy+dgTsZjKcRuy8tfuVvd/MXNt5WOLCSj9HOXdphdj4rfdXh2xZESLk34SY8xsOoVdZ49nh9rBaOYMoo/hyIumMWgRHMOBy2URWnXkkMxE80ir7XmUHdPZKmJYzpUtrm8qGxYq2WH2wdbqDCAtMOVDZf7BBgaqYaXBxb8IRKVEnntpfmMuFuOvVlzEqEMHH+h1wnd8tryr/0f21us7zbIa9SHQF7LOHYtmo7TCiN2CEalbAjioBlQUgdduNQpDgC4CQ86QIdBBYgpteCqxjsMQToz0Kc0MG4w5xq8SaDcaOo5KB9bVpKulVuoInJsK2guIMWp3Vpk17cPVFZu2bKyAgrMXjjP/mEX1cR1XYH6gTiYy7K2rmEkAbmJq9J4ApAQ5K5nmITZYVIQHSTNGQVAe/C2a7ZefmGxve36W0Zvu/JUL9KPjA5Os0ebDMtPJodPnmtpa7PMPRnJwuly6n7g6h7mJOZ8ppxB6gznlGRV6aPjHAIyjei2DK5iMaBNZ1XpdJWysDVQVQZcJRdVG0qzgbWznUAjmzXUTKVJMgOzU3B5vBxytw3WOifKObFuxQyTljCRxvfTbMzBSh5Rc0sgQdEtkZi077CCQrfj98T4+x1085xH3nj7jUfOqdhMe0w2+sauH98mHpCSVtJ1408vv/ynN6oHtb0r4QvwvSvHXiU/xAvVXnxv2NbleIVfz73NGEBnY8SoQTRESQHjIzJYBSkwczWpzyo7dsyv/SejILMr6pMNh2q/xW2mv+Vk3AxVExyHUL6JehAEfz1RABtDSIGYrf/2gbmXXjh7rfar/fnbnv36rX2X3HlPbfy+zZ/N/ZX+ZogZpHEr9BKH9d9G35BHEzwRGB0PrDb7XD5ZW94Jgwqcw6Pxc4BEE2KC1O8PVpIEhrNcQMuIaNCQeygsZwrXXy2cbNw5aiR3A1zH3qyQVwCwJ24tXHLn3VXT/d99YZdpxFT+3VtlU90/roBUEYGbAwBnlNokM5nZYPstZpYTonF4adocMEbc1XJ7z1yUGcFMOdW5RDNQyonupXgslimxRjgSB4U8C2iWHAtgL1ot9S5Ef+cKNFpKhjD6RqslDqOSIc07ZkfTJldV8vDuKqWtnUoHdbnMypbT1M+Sjpk7y8TqxLskXKUCfGfOAtgeqJaSi/DTVVoClBzJKsur5f6heSjLToaLpoVgZfJK/kDvTFR9CwlY0Nvap2OosxRrAgp7vNOpnRoXy/yMAfTZhN2zzAZfoK8wODRrNiV+T1SM59HdkstH0ZmuCUcCLw6EIofqYB5UQ+qRwYu0oyAAorirXc2BuCQoQuFFDqPdTUaLRdVGtSw0xFF4dmkWueajh+3K2F78wEuobNVlbBcIDYwhHsB3lKfsAfwlelGxAltF7m1kzgqK4814EQpo7hYQvnM0P765Pu5T15PNmvVT5r3NOLr2akkKZbP0GNVcW2nQUPMwoGyxZVGtRX0QTBQryhq0S/ywBZZrk+bxj1dRSJdcGMwQjP39pSaQ1jScgf5/NCGBPCmgmIwrDXxK8JnXP3Gfol2pryKVCvf20RWwxb19zF857bTjfk7Q9QRN1xN0jxZPtTxUZmCKU13PLQBrMEYr1fVED64cZsJ4ZV+20NebSsYEAhbu6+wBsOh+GQqvCofwDYbgVxYn6Ho27nerQ+FwCN/o3Cdg+/xav28A5Ld2Zzmn3VzxZmu2nVmL+NH774f7+wKU55rIVAgSOfSeElA4dUB+od0Q3lhrEY9kyYsIktUxCSQF9+FkLfao0cQCs1y3yjS910qXEktVsUwwpy0MejQFE501Au4Q3kDplBMLoLuBnhMVi89yXymOuYvs+zx59pgfWLBIhwBj93S9LMH9GMBA7E3COmyUKuRF8mJIOvamFCIH1Ln8Nm847G1Y91A/l0G7OYUpJxBGsJAs1Ga0cLXUCkXIljnLBAuyjaIA3MlmkUFNmm9E0FyzJiuuf85UTPPkAYOhGg+TOyp5YItLE4RM4ArDBPWGCPFRlaEC6gCw3LE3823siuEzWZdFHba42JEk67GQwxYPm2StlrG9FhwDmLNzKhX2ta1byam4lh29+UsWh8OCbxPyA0JMgukGvriUZiOAqGvPKN2gpmVgMhFM/AAsItVyhPonIxnALuIqpejyXsoBKhEYBiXQX+pMAUrR1kQLXTS622EvEoujRahExVK6BwSax73fGghmpmmKkZbdoPko0zws2A7WSbMcGHSheY0x1uvD7IcYKn8D7dzbqBzt4p25wqqOSvvKGWmrbRdoSsXRyuhoxTi8fnh4PQHq4FWoNJma5uY7YUfyDrSDKQzXjJIWvGj4TKrv5enYPgs2cQxeGvfZc0q4WmZtKN2JEs+UWnUtNA+W7EwSlWEYpGg+mUoTWOviYAA5iJMQj+zJk4vbh1s9p5PbVro68+RrsTZ32GhUbzxDvczfbOtwOsmmcvrKEV9f15/e6F43MkI6PGmHnXvrmHtaky0oCORfyStfUL8HPIf+n+8Bz7WAlOhhzmXKLQhZtKp9Ejo+HVWlJ6NZusBhdJT4Q3ANLlZRWLYwvQa065ZDIjArHaVEGkbJBwPTHoWN5n6lQ4RdpQed/4BgniZHpLlU3oDeSxyJMA+fJJ5CuwGHKK9txEFHZc2+1gj5xTXflqMxqw0I3du55bHlla+dctMNZz70+SUX7d19ipBr4waa5ZDdKcwnyhcKZxTaTAJny520Zd7qu5dWNq4+9ebi9UtXbqzPS+5Sqnu36CNBaJgWxIADo94oovR0BAS14OnDIUjlo7KDcxLO6JOlytIrTE9b2uYbzQbydTY6IxYwGG6yTJvfL8zOcCdPb/UQjvT3m+KphM127F97B439DPvRc7pfyAxzYBtTbtLstTJr8OGCYwOut1GudwHXW4AjklRQahouWp0wW0AHCFFfQ9lPAzn+IAZy/DSQ0wRf82trk7OKc6ZkAdlaMlDbLdKkxSRsosLDEKRg9hfkuJgTPGIuCjswGp1ElIHdCiKYpJy0ePHiG26A15Fd7IFdWZeUjsYqRXVzsRKLZrwiqH2PP37szce5c3CZDaUkM3vsmWyxmOVWsmYpFaJrUPSjb/B3gfxDfO9gQO0CfNkqNVEb0bUA3E4NXcuhT49kCHSbfazJTFDRcfnRGgJRRsUCawL8GRDZSkQE2R2ksnsmASRlAWQfdwLUo49r2BU11L2ZcdTTkit3g0YZ7sd11Me2IOrsnTXU9XyBxngqowsgjHLSZeDT7ockfglaYkf34zvXgu+4hsD223TbTyOY62kEcy+oLris0IhL5WO3/h5YxUn7nk84PxHW8e3KCcOtdXDI4fqmuvl4R48Db1L3MoJ+0Z3B4EAog4kYQxmlt4q5GHq+xRCZGCf25D/dfiMmxUayVxrHozJhELSQFwDPXlTfVN8+3tGPx0vDSMPuk/ASP3W8/PijdaLtcaTIrE/YRJRMx80twPyRlTp+S2h+wRyaQ3M6zaFZTfMLLqL5BcUsYrw1hzGcK0FM3IQ6QtnVMi1Lsw3K/rbpaPXc/L/KDDle5sf/jZa1IOfHv6G/ZcIc/sTtT0H1Y6OfZoSMH+3Wx8cImmqQ6WBmMItgZUSrPUmz3dJA9cUZNDQ185yuIBiOBylK42CfXrRNSPg495XHHkPzBmcOznOcOTDnu3BbPTg+/1VbDWoUBWAWohxWbfySo2/9vcIO/hmpjSI18ONswFdmyrOoP2txRpl1SJldpehO6yn8H3HD0LNHpulo5NPhx7UUo49XKn+vHD/6FjrV2OQNi4uLdR+Rwr1NvTrdNHMRphhafx6qYoP15YW108zQfAymxNt15y+6XCammYHl0hVh3490dUXG3JEu7hYw1z3snXR/C7yTopa4yzXMcxkoe4o+u2G5r4VyaR7FBN9zqIquED38gxkVoQBAJPYrkljyuKniApCVXR4JXRRNouLtn5o4N5MYUsQjRt26Jh908+s9gYDn6F53sPhX0rGIJN495r9o2eZlyzZ3cYfdwaD7mA3e3/vGZx8kw+qb5LD6Izy3DOh270cf8s38C4wXtPQhHYOQBnuEwq7lgKAz1qQFrJokIJ2dR1hDCKvA+Kme4ekFayobJl6qtaf5VBJ5iZoYxnuv/el11//k2oUL/7G/3xI754wrOme+eP+Fm+6//9Au9o9bf3Hztlf/+77L/3tkxBzbdOmexZ/fRc/cjzrVeHxNYhaOR9e8WnTN1xBd82hEldHDJuogYojCgJG9ktcDihJG0Y4bQ8uJsYmhs6VHFWVyxMysfvUItxZguorhuX83OBkf6HkMoM0VwkbU6oU0WwgTuZBmU8m+mcRBrppz8RVXhKWFy9ctnZlYtu3Lyy//3k3bHKed5hJ8aYuTNZtPL5BdZ37za195acP8u7ZcfcVVn5t7ygPFAd545je3rbwoeLbRt6ht4Y7e3CW76vbyS/xnmGYmCmvlOqYcRGo4qxgVwAFL0QHToktIDV+11IbUsGEcOBRG01HxiaVIDAliwlCxFNJCHry4ryUWT+guSOA2XhYmKDoFSWO9RIGkzIBihrzzKLkk8m31FTQIyeH2gco7j6oHH32H7P8aefBydRP522WXSaejo/3Rd4ymb4ORaMMrb6j85tF33rkwSx68DK75n8suW9M8Hs+9D+ZSM5NmFuiYwbSJZZRUVTFrs9mlGAHLDMXSXkWHIlOKuYAFpVArsGDJHIS5lOgv8Ub4TNantmwU4uO45GuokGEuQiQzkWIOAyBjYG9dc/dkZB4Pn3/+WeEQ+Yz6gOBfMHvt7H4NoxUt62sYPZAHhEg02esxE/JTMocM/5J1yLnZF4/jtZf6AeK4/jfpeJm1EWvVcRkP+1P/GY3wC+EI+i8wqyoK42UGRPf5wObXxqvUEm0QXicYLTObIinArWtopKw+Mhm5taSJLdyhrrxHw0ku1VCaW/k64rRD/T2eP/mLWn62lpckM3OZshux8FHrEewbs1ao4z2kcFnEzUQLdUouL0xCI5VpPswJssswH1mxxNio541IsEaYSRw+zCQPH2bMZ5bQGwoCN/U96g2tfE99Dd4r7Gmk7WXtyMvqL9WDL1eoM/Xlcfv2FqCxB6isRQWtOer202gL8Ej1ZA4tgkHgT1OAKpp6cli10Y2spuWqi8l/HN1P3lYX1XIba7IeJX1ZQj+53YkZWX56F7GGNVMLSdXuMn4n/UY0e2DKzdSAfkN//aaEub2up3j1eg7MhREy6O3CnBft129ne/E32SSbHP+VBn/cEuRCoC4tnMGrKF9WmCJ3C10vIwxTmJTQNjnBrXL85N1dx9fe9HsX+SX095nCuCtKcwg2fmkXLugN30M6t9Vwpr4KQyPOwDciLNDkMNs79kN+CSKMFSrk7SljRGMZINlzNebksyg0AvWfIZPiWXk8BsMzrrSiqoV3gNdz4yYn+QYOEtwPswy4t2t8R2F1aHznphVZ1qrOd9Hj3aur8U70PhPuocUfQafh26hO49Z1GlRoUFQgO0/WzaNkgpnGLxl7/UhdCydOthdo9C1G4P7Gf53m6GLqbepb7Io/qw+RjX9m140pfyYbYQtxc330M34lfyVaMwkzKRBZkOAg2ag+9Bd2UCJjyov00rGXfISMlTRZxzEc/zT/NPXnjtDMB0cVS9YQav/UzIeAnvmwDzMfqP9CwjRZzHuYmvWQAzmBSmVcinN7iAfkrGfPHvU99YD63h0V+o+mO9QP7tlDTqaHJ8DlBB1iPC8J4XI1wGXX4MLcIPsEuGwWjGcwsMTwsGqWiLF/MnjRfHQKWFh4cRygptIqS2HS9VV/3QmmUUggcEebC8Uoj2DYpSk3lwtyIVVICSlBngzEqld37Hh15054P7hjCixttTPwPhEmcSJM7gaYPHWYHOMwOafABJwlpCZDs4l4ye5n3z1vCiS3qO+Q3c+8e54WTx2HYzozyFxEIemvKoNUF4hS9bpXG70hOtfCVSWsuWUBvmGAL4zrTbQX1pu0uN/Mt80YoMOYGtSHUYmKSgdmKpdtzjQq2r1iyUim4JDLood82DCD5hV4jYKDl3PDfL43zWGlpAf4cTKGr9zFOwUja2DNvIP3cB6fSTY4UyE/qRjc3bHmeM+cnqbsyXOTt0/lVzbAGm0WwcCxxOvy2VyElyNDSc7Snl2fzS1p8xv9+Q1qujiBPhjJHahxtEQXZDdN4vFVMdeIH3ftltxSjYd9qB1PRbcQxYgnJpwfD7H3yKgWeJwK+B1gEBUrcL4xDucHS/MCpuzV43ARWhDFZMqOQDRHi6jKtng3jQNMQ+lcNjS3o3/DUy0L4RT6N3pQcwUVYl8sns7Q4XPDniL1lxhMywn1K0Qsh9vatThePjdMCvmcFGZlQMBBBCmeT5NUDtRxONpXiOdzsAsH4VRO+l7kts9X+rZscv/gB4HnT6l84fbwBv+liyv39b5SCZy7qLL4Ev9PyeHKDfcFKxXvis/OrZy3N/rSS03337DwYv+PfjTtq5VFF/p/+AP5ogUVjV8b8+Yi4zlfnroJWM+b0yUfGn6YM0VzvrzBiclxNC/gBMlxDVkPJ0r9WnjbbRfX/p84ffNXDVcxU/NVJ+MQnIpD0wQc/JNwCHwMDoABORH0m3as++FO9bETZ/jFd6yr7lQfnwJzkw6zj7I/Xy8O1SR7QIOZFofWcu2cXgqz6NNhdjQdJ9dOJpji5aHpXb2pKVAPs9OLVz75YXXj5ic/HJiab3dFkS0Mfzj2wcCHT27eWKtXPof6KYxMkObcYThW125KrAEYm6HKMc1kxuLhsb1snLxEs5l/PuX7ep5J7ft1XxXWoIOWpH2fpqx2qQPqLNKtwfBDmKOLYI4aUU8yUC+QQHOw+Cr+UIk3NKRVIyA/JC+SA+ohrZx5bC/WFOLvfAYG4a3a7xhrv0PGfweWCcXYrxdug3ryGdIGsHSoM2u/U6PJv1K9DauowZhG0B2ccd4d//EgXnWW8g/bK7e8+vT5JuLUsGBb51zVKGuM8E2xlp/lyJScuo4nE/jzwEuMyjeT5E719Zvf2UmSN6ubbyaj+gHOjEdgF34vxsT5nfxO+nsMGLpREWxd7VdiJIUXqa+RvTeT1E71tZsVOKJu3q6+xubxx1I71Ne2Y20Nzal8gOrVcWY51dpaqkqc+rNDmVpmBWl0Cpk1qy/gwuxKm52PxrUs0DjIaTMuVyER6Nk/2W9BPGGCajrG61BNR7Fdy6zUPsjaGXzc2+eN8zN4v/fHkn8aSO/fjp+HD3ae+jNvKOQlaXgfewlkuKFO1yTTwUxjemGF6WXKKZTkPTkMjqLUhsW4h3Zm6KWdGYYA/t4e0b3favPkZ2hhdzEnRWlyDMDV15vMEKyyd8JUg02cVU7iIF6JlrN6YlgEQrNtCmHMAh/F9eRSwrEx61CqJfSfPrdHej8aSg1Z4ix7aRFzwYtczON+9Vewedf3DY4WN8u1aBZikVg9pqdS08RRu89vG3WnkyWT10Jo14DDG6Zl/hm31M3cLS/Z2tf1Ix999Cf+WVo7lB3P88uBtoEpsKVeyk1SvpDGHL9hQ8HLOvg0Gxf6fIW+xDAmEaSSMS1WzQu/NJs4aXo6c8G5X77j7c90LfrMZZ+95vrTVznPcadmF8j0eRs3ndbu402CNyrGvzI0pN51iu+u7+YHbzp7+8Dgmlx3uD/8gvrDn+xekzMbPc7CjfZVI3uTM8+6aXXWazaEArkrWlpe+iHOmUsZGz+H/w9mAXAZURZSjppbVea6SoMwFIvgNTgX2GdGH029cXtlWAl9GrBhArCCLhMmiA9f6GNTPtmXSqbSbAE0nDDn4AUjbpNLDeZ58yIjM6a3OVsc3uVrRUPEZzE7Oc7kCLT6++dsmj3LmXz0H3xSar7TvXyVIWfvOH9R2snaeBMhVlfQnZwhC47emeRbI+HpN3ZLlsTwUHjkvdSKvcXowi6Pt8Upm6yEN3qbh2ZfMvspsurirjUPGVgh+rnX7jNFzrv48VW2gabepjY54OIt6aVrW9KXYJ3695gb+Pf4HBNlZjLzmdkMLk/tVWWGlk66IKMMHlIK1dJCIEIBVL5ZFnMgaGpvyw/TPC+mZJ4hup9nxNZ0fnhkPhX6QBdjNmyIAFmMsbQhVQgbskCZNJ/Sio3yvQWj7JMLmJgwFDQ2z1t+xZYvjn5xyxXL5zUbg5MP7BZmd5+2+rqbrl55StcCKymEZvSHe5T/UdLn3dpzwQWJJR4vu77N0rZu9Yb5mcz8DavXtWE26MR9y4ahM6d3tuVOH/iMgyxMzJ0RWHQKlryvWbjuiq2zL/BvaG3FaQq0YIAWCuOjGQ0nMV9jys6aJTqSwWxQpS/47aH//M9fM1KnRXGmHYrtO4aSg/zNodi/ozhd+6xOm6dzn4u+B+h7kL630vcEvpfhbMudLXfGjWCg9SuBfiXYr7T2K4l+xdrPPG+12V2BYGsirf8jsyxwyOGccDCdVmYFCaPRGtOncySOBC64kaw6gWcSmvoBVxSSMAgsDghfJ/iCocHEverL9yZWPnb5BSnL7p89n9h0FyVqRg7PcDpIW9LXnYlN82TIxs7U7JvT9mBQSJx67hfHyS3uPLriLunc86+d7mxT3+rb4X78Eo2imXXNK5uCY4/f7UxmkzP9s9gbp93Td9csb1ubrXfT2efR/ghfBeHopvqGG3PRk9StkQKQBbSkQX2WxCaSj1/alDA4Ek3S2DbvdO/Ytv8iL5AX1Mcx4DNnzvwWviVmaDl6qMj+fKy7iIIMu4PU8rUkKnfbYVZj8ihyc0dGSVA568OOOGUfzZL0+c2d5YSvVqNa6gRO9yVguofCaJOZw7DpS1CnfL63r4DeB+qPChP0FaQSIvUZZEhcMGKfhYJoMCaLPifZtH7rerLJ6fOL6gPFoOfMN870BIvqA6KfGNu9PQ4yl6waXr9+WH1a/UdHj7fda7f9Tf3bab5ZXtG8bJlZ9M7ynUaEv9lwNa7le5sndWEowGpSzzllVjHr6tH3PJaZabkwmAUEhj5G3huz0j/ltuYLObqfXxKSdmHi5C4pVPzYfzT2xL5fuzAkHVtUS2GH9ebv2tL89JzhGv4ZxsK4QJc+ieppfhpZ9NCkGxNtL8Flx40zQmsRfLDUW8V9gt1N6yhcYKU5cBCHCPZ6QC8pcBmY+lFSkLV9WCDX/wUXvYfG9qpPEu66Hc+pT7KP7bjuITz4l0qFXf8yelBfQpXtup37x+7beb12oNFf5gZdUqsBdoEhmZvoZZoYHiNiPJasZYuNPaX+pIjZ9JgQpuXPIzcPMFqeFR3/BHBzN7OBKUfw983VspmWapgxj0/KYg5MRw7N+k6gRpr6UpPYFAMbcXCukpvQDGEZSx5LGeByDlVckDxusRSOALlkTI7TekJJXhAgoKgPG1O9WLzgdRhAlNfaMYGNahTXpPKJgfaIaAUbG/b9qaXnfuU7Xzl3acpvxPZMpItdXzlyWcvpAavV2xxv60r7RdORSsfKbRdetiKXW3HZhdtWkrVaIi9W+WG/od8y3+Q/w72BWhMno6Ms/DuygWz87dg/kd2/Q3fZ79jZSOt5zOv8D3mmVhtvJvPYOezIb9WH1D1caOwFdvbv0Amn1dPNYIqGLaDjm2AetTGoU+tOGIGq1uiB4QVNRdc2HLiE0QpIGTQoeKFjXXyZdJKuH5Cbf3HsTXLvL8gNuN9ZYQ+QJvUPtBUR1rVtVv9AmlCdBxjdMGZPwJhlAdpyDMcrkFO6gPYuJallB2Pwha8im6BsAhWpFbMXMWWxWYtegLJUkpsBpG46KskC8A7oHOj7RM8n52A7CV1R6QjRzzgur3hZNJZMuQ1OR4C7KWloEs/Eydj3CmsKuyOhjpB6EN6yNI1GnjZ2W0u3gXvS7/Y8LEpw/NhM3u6jszervYe9UqjS4WMacoOxjsPZmAHHozau2LMUl3pFInZdIfmczvRRCQulK3rB62EsXuVu0Qpatd/W8n/xt10wVvXfdtL8QYP222IGGbnBPsuRKBgW4/eIEmy1pB5suNMxP9aW1aYWOhoISQOPbacyNapVs9HOTtQzhz2cNLccb6YaH8lpTJCDr738MukgHS+/rB5CDteSyXX+hf8ZsCe3w2820+oitEctGdoSajydjIZroihxotL4T8An/VH1Fy+91JADpgCVtfqChVqGuRKsYmeFEC1RMlDu8VZpWVZTzXcXoVZQOUKbqUWwmRpWaJkjoj69J6f8NBEtc1f2YNAIhGG8JpOO+dsHIk8ZWr3sHk/C8JR6V1FLtKdDBm9kDfs7X6pbHmul3iy6ru/Wc3WtIKsKYPXQsmsGC4IVo6vUAbBladl0qcOIfs8gJTAHTDuTSGlezg9yw4YBkhATcY/PAfyMHv4US9vZ6HIzljw3GwjwjljQ9wphWd4g8BX2kbEzkhnWYnMauFXeEF/g3g5JyLzYMCDrz9rtR1hB8kXXHAF92sILnIElR449U1HftVlJs0ROVn/LraS+/mdoXgvLLAL6nwf074R1Nq9XEeVoRmskhzLVny2305zq9gTWxfVmtNZD7TnAqqtHi+H3DZCCB+yCVJIGLASjFEYbuu4ABVTQkDOE0fA0xhY1ed1XzXRet8ptdHvP9ML7quucM7eI3qag2xQuXvjQ8hv+MmOGO0get02fN9067SJyphR6msxfus3b4glKnlbiuXGp+q2nAfM2gbOGJHe71yu0/1vP0FCPEflTAp3oQf5B1Ldoqyn8S6G3uyCgwzslC7L0x2Vvdu/e3f3msj/t3/+n2vYf95EX6Mc+evrBrt8s++P+/X9c9puuB7U1uqjXRcSYNKx/NK7cdghj5lio4msD1vPWqhaId4BgRAwsbS3xpZ7v4mRBRxFnkpwkRCUunsLgZXFoq/NIOvF+aCilfrN5KJVtmubYcLe3uKsIhvOLRw7djm2ZPlxc7CfrI53FrpO3CLu6Tm5rfvlfggn1DnL1qwef/c0N6h3FxtqwJTqcm5lyM45qgnp7mRw2A4BVU8CSZ2x2YanHx2G4Yf3kaU2GEtfam2gVu9grQNSwTMZFd9nU1oUucK1et92tdMKqkkYR3kE9STmxIPYOEOQG2aNPwHr6WIZNFiIwBVPRPBcX4jDTPgn3Ioq0sb03kFEggLp3MgEOvgrIk6vpvIT1r2iQ+DUU95OYaxl0pbbSFiXtNEPbi2iXe2idfA8t9Rw5Lu7dWnJtN82o7R4E6YJFct2A/H6b2OSdSY3CplZAOQ4UEBV/f8nbA5SRB0+i3uWCSIkA0z0BMzpCaElWtLaiEdoqQY566DJHk7ijHSzmv+TB8k0ZTJVis8NBLnRYRdvFDusakl6z6eLVm7YLTU71SeExsAESnzU2OX/gcrtdaoFYeTMn8DxrsHxxrfo07eC1mLWLCYv5LaNts8Prdly7ZHSZ+rQv9XDTKWSV1BaWvCFCWM7A2UwO+/Or3tVl2rnAN2uZMI2hXEs7omiZorBeT8f6CmVGtjydioPp/Ui7IbqUYC0CbYIQ6dJqEZBxgNBeF0pAZVALsCQjWFJoa+bbKe1CrTThQomICtNf4qZj5Uiqi9KOBSFo0EiBJcCGMFvLYkpx8VgqhzI8WhATAha6CQ5DB0ElMyeeexESyuq42O6yOsjFgjf6lEl90tVk3L5pteUNZ5PxsySxSf36urstBmIAgpl5K1FbuT9W2NmjS8i1Lpdkv8xmfIu3p8SxD+xfa5PIqmK7V336FPLf7636ptVpNXMYaSGqDSmszbWNqLMaHGCx9DEzwEIpF3CuTYc5NZBRpENKAfuZldslKkJnAHlycMCFein280O/SzsGWdx9/f0lR4bmdTFY4RNma/HvVCKP6VCSmEoancSITVAKw4ZBrA7ow0nlkw2iEMUaso0UdNZuf7hNUp9eNrrkWmfCsdl32qrnfQEN8mwWkTpFNZvY9eyP1fuMnshjAlmLpLlw9SWb1qg/W20j9kt81rX3uO11GpEKutK+j4RUXwe7paLHMFjGwr1n8MO63QscM5dR8loPmH6apJ7PKp3VcictwemcDphHs1h8mtKy0mcA5p0YB7SBSl5ypgBzO1X/jBEwOWeCrJCw1mSIJLQmkZgF4CScJyqLBgc1SZN5cRBWlVTSSVCTZ12+zfak81qydHQZWeVtf9g+9iHMAMuX3yV/PUV9ytuWzXKC0e/75j2A+sKI7xI7sa7JVdOrL7pk9YU4mcha4bFmh1PdDqOuvr7d2Oz8vs/t9pGKVXCZOLv7HvYyijiL+jjMkycZB6w0M3R9xUX1Nz2/jKbvac1DXTZ0yLq1Hn2Mh1aEl0ze/npNuB42YEEFF8xEMpy159fXPVwPlb27hyRYUJ/IPeol7Jrrfr3nrD3qu3oA1EMsr7xIkqTjJV1ffRJgcsGqN123zGAK+jSYtGwGi5bKUPJi7yU35nWVLYzYr1Wpo0tLpBBhV0kKErqzC9E8QHRt450r5B4EST2oAUQB1gB6VH39xVdemkKjYZ1GYp06Wvadezz7TkRj1ubsp1aaQcIsPHfJ6tW6zk6gU4J2rSBT6QTraKUGUwORHkXLi4xOhmmpDpO3cdC0vMUGsKQJYLl0sESaHGjDdZBx9U8dyoSZ9qM4Doi0irNyHBg3oyWp6dd8HU4XczvzJebLzFZ9PDuqyvKM8oUMUXZTcDURu17rTvIg5oAx2sCuF2c5HAZPNN46uGjNNbfcese96BuwuGdZ7LHktIFTz9/ywJepEF7eIbqf903rG5y3YM06vOYL4iyzhfGuv+jWHTvvpW5Oz0Se8Bh9gtcnZNE1LIfZgg9dcF4HQaHEFmA6wn/sCGwEZRCjqX1pgtuFvkKYlcMkAko5nCkMc4VkAUPlhTSX6kvhjIcrU8aUAyYptocV4D4OnPwFXxbevD4pzRVylKTXUuJpJP2bqckYIzaf3+Rf7RvuD5nSXEe3kRg+c1U4Fuccabtjnmgeakm7si6eGNt51hQIyh6P1egytjUZbW0Oh4fnE7zBIvh9Rpcp4pbNlvb4TJvVHOmzWYXMSqfH7ewMDpucQ05pmOM8hOshHBfkLKLVLcTMXc2tD5Mp84CcEr262TwvYPXwtrApE+bdi7zzzUaPxcZdEWodjpiJILishLVa4zKbYe0mzpd0hwKh5rDLSIhg8STMJm6hJHdaHB3egNnt4cxWOSW1CCmDnTPwrXGfjeNsbqOFALWElNMqC7HLLrO1ChabyPvXENbI286qxclY/ln+VsbLMIOkQID0fbJBLoCSniLGWIY42fXRZRv+Yac6dvdR+z9cv33sKWen89K7Ol3sunNf6Tv93Dvf3vbs6fMyY0+5XJcwtAfiBuDNp/S8cM03t4LBfgO9VaVArePmDPaVAkMfphPol9OruBQmqjT+kz9U6ukf72lZzlPrLY/WG3ZGxJjQ/6Jag2CzKdpwaqJRd6JtsEIPqzatdrpS+ZdxQ+9bx9tUH0BHIHugON7fAW0ArNjS6rX0kKrWMVmzq5kSY9INd1ycDKCfCGKRe/vYIu4W9eEKv6SIBd7qQWwAwzTaFminJ5gN1INDaFVrKIeagj+G1e1aBWgyozgPKTHaddAZQwKCagJg0Ebeca0nIRaGxWlhGHYhZLO47jIlB6y4SkRzD0qNHVPrJR7Ua0fd0rQzbI12pGugvdI+gH4GIBz9Rw1jMto+oBEKSzppHTozwa7HuKgXtKNaZp47h1F2jKpr4VbMTCA0Fwk9lNgfhStgEFW4ubKzglFX7YN9Td+rYEi1gi84wLXQj2MPaCfZt7RrGL1X515+L813iYCNPsIsYX6md2x3VtFTviinBKrK3CyWBffTvgS92XIbpVnbSebOWvudpQ0pAbAk6IXrUWsndtpIaqb+cFUZdtG4yYLqvsKC2aZOpYdaGwXaB0/PfliGSjD2FbA4aFuN0jBI31L3IOg/BTAdnjM7PXxGyzoKaz25bKLWG2dfR/fgMG62aUk4SlwsZQZw4fGT43X58ekd7+KxPupPwC0ZbBGWes20/ZSghakSWkEA2Ogn6gt0cSTd0iL7lsKrpcUnr2yPXEfM2o7DCXbOghwJt6QjcKqFlE/QPug27fzvu6It6ZZvt/QYthGHw4c7lrt9odZcbqWvBW9D/aO/ZAb4bwPvLAftCvMdUlW04kCa9MGoVbFXBPZvYEopzDmY2a+0iPutzmBTD1JIcpeyOWpEGGG5yWVxVeorEIy3pjCALBDgN71/vYCNJeGwfgk26AnDwgNqZoTgN1C5jMdAwpKm4LT4lnkzp0dntafaRHJn3O9sOtVrTp8UV68X5pJrvR65Kel0tY79undh4VSzwTmtNen3ktN7hzb1BeSztpiE046NCXNZw+zpouu85XNXbTq1bb7KkEP/tKx/VrOrp6OzC3/17Mw6kY3G1SuF2eQqn0tuTeEvjsyMD89qbZXw9wp5Xtx99rmn/e0jRhgkH83ef8a6z7VGC374Mc23uILp47/Hr4cZl2eGGJTC3dSPI2QJkg+0Bq2bWIemNWCzjI5mbH0uOLV8HC4HRDVofh0gCHVHYZ0CdlRMsylYhb24jPtkMG2HWbRcY05KJ+OKl2656+zz77r5xfi62fNf2iC6Oi+fNzJ/9rr4E0PDs3xnbFx5mW3W7OEN/YtmbLk8t2DwHM712Zduvvmlz6ZPvWj+vH/+rCzPuHneSfPmX3RqumntScO+Uy89/VLb8Lz1zfM3rnrymRXnaPj1f/QBfzX/T4wf1h7G4wVAYIwJbXqfErADPoyzYKQnQKgQkC7wCSZEL80fgBHvH9kx57QzRkjTyMgOk/WCg+r1fz3LnQ4VRg6O7BBsFxwkt8J+JhyKF0Z2jJxx1iz1DyNk41mzdo7gV749ssNswu/8z1nu7umFEcKfAd+y0G9tEHtyofiFnXBkZET9wyxNrlf03oHYQSWEefA00hqgVrWbemSMWtcXGBnYd2tVGLSDBhU1Gdr+pckNyqbR4NMew1AQtZSOmlVciIpRt16ZXxk878EnvlycoYVWimio/svQ2qGhtUXuW1I2HQ6ns9Kx+SCx/8IeOPYanhia0EvdP54VE8hgozEU0wTjR6lkb6EvKxOfV0DFgYCMJpkf/wxUWmvc6XR0OEgT/WhV/3jwJ2TrTw4SuRV2nU71LSd+xNX/Ug/+7McMR1KMG+zK3zA9wKGzmfsZrGPsoPWNw9lyN089LuhJGKBOSHe17B7AY24Puhzm0AY5sNZlq7hAZl2lLtJZ5t0zMBUQDE5vZJhuuUqzgJAgOpqx5r6pWpqLTY4wu4jtV7pExYyBkG7Ybe9XBsRvMI6m1Awa61fcmDGI3nDQccU0iaf5fK+eKcjLcRAKooyV+EbMF8Sid483zAGXiQ7ioU1fSerzhnWLjB42PbIsE12/fXkxOXflYCf3kKlv0azY4IpCW3l38Utr2gJ7XWKHt1nghxb+6Yn1K0lp6TlOspwYHYFM//rC6bfNFpYt5z1dMy8YWbDYrlYdgqdr8Nzhzz9hXbpMXNe2iQ2HuvySUQCz3m0aGOt03zprfkCPCZ/H3cs/DbTdweAqBHYDqChhGk1spo3srNWyhz4QxOPQaSocUvppD/rWbNlPux/6w+bOskD9XwKjVZQ7Na8FUtKPjW/Z6SOUYk7xOWukpaMnhzsOt9IFtO3owcUNjUtGLHUNaoHlHNILaEmlSryXPkJDAEsfKJ2T4j7YFoZJrg/ntIx90ZI0QyY1bMAclOJjfq/FzGW6Nz528/cfmLOiNbHa2x6Vw395ySRJ7TPiZ0vRL0SXDGbbl6c65J9lU2tlf8EoWUSbaJ5ma2XXF3sKwYG1Z7atL1/du7g5JHX1N6/qyBWz20MDfVYHiYW/GJC5EZ4P2qx38w6j3SpaCnfNB5kD1jX/jK7LRGr9Px0ZxYbNRJAoJSsYg4qp3lQ0LppZfGdpDAXsZf2TRgFpSQUNhxzbyt2C0T1WlxFG+gwF7H7xmN4TxpgDIa1tmmhipbdaYnhgbzvNk6eeuXKIRkdDMrZAwz5LOIosbZah5dXhgwYwtc4uwxct+iNfLLSisNSE7chdoLIGstl9bpdkopVyHpRN2Gmjlo6nmERYE8DoNdFaSMUuKiIOqGaLR2nPaQz0aI2QOFFrilQAFZJ9uYIxpNEirb45p3gOOruLBFv2ICFo01c8q7U4OowNiiqVCTRx0DrDGLNHyxcsCRbsPER9koCrifpdQHK6qJO3mYpU31QCCICMUwJkgX9FJIDDReNfoRaNKB4gzr6gxWrSNLwMNt5qJICgESAWwWoD3oDVBqVmF5zzYx2mEmigho49N5kqDdRAGhTrJDlnnBoaBdgD41Q5thVLcigPLtF5xA1csqnWvxRNAnRfACEoU5TtDtrGUMSJLWcUEX1R+zwu0UQf7SLQRyV5aB4hdmSyUuzxIR20A85+huWMtEuEA6tdDTydt7o/gyLGYXBDREtL527kZRgzbUxrDA4aOiDCvQ1GDj4oosJ8HA4Chd6NmJTdtL+2G9t7YLFYleJgRd/VPg8dHTvFU6A4WDQcRMrCFAfPRBx8k3FIUOg1Bk014kBbEBfPacShSIHHP8qVuERSvtTtGgtwJmKxktERsNZqRFz6VKWwOw+VBasHlyRgUmw7Sbva+ixmfAfpq8FtNaE45YxaFUuN4LQvWO2Vk2rihNaD0da2mLrYQHTatrv++t/BawV4nRReEDAgfCx0nbC4EV6L7xPgzUlcA8x1eCsakHoz3hODW+/5qNWdd4zX7jZPLY2W6wXRzNSC7Mn1Y1jQ+PD77z2CRYwVraRRq1zU6hi1E++cVCt3HGivxdFqsMTQizkJmvhUaFBkyCAWaKklU2r24GbseCXjkyH0dJP3H0ZYsNLykfcmAFkhS9V9COkj72l1mI2QqrYjR8bjfv9reGPj8Eb/HnjlJiznrUM0Ad7ikSMatO8/PBnaIiCy9P932kY5hLU2zhNhJYePaEyAiACPzGwg7WaAlfKkwUvrC4PMIFNfjqnbBysH3FqnY1AHZNrVGESpQI2oWvaGIooKp+XYY0KEJ18HLl+DWnvUW6UGFxlFeBCuivqw+jA+BmxCIS7V814DQXeI/yoTxYwfh+YbgiWxmUakMRnC16wlQ5Q86PF34kwFwoAtF0HLuI/J9YHhZuhzF/oyoImBrsUIxtdMMknvNhjMZrPDZmWdxGE2yerPyZdZVjCbnRb+gPrhYhcreNRFXslqctrZCzyiSHjyrM1pM7uMP1d/utZTn8uUbn4Y45lMmdPpZsKabCw1CtK8DhCL3vrUtmoTuhTk9MxExSUqzVrnURjSQj6KhZDUY4VZn7R5BKUpjm8mr9Uik8OOyhlnPPoOrkxU6AAxnd/S6PctXmDZd2hQQKNsQ01AiGllVutwOumiGgTAEg22mVXz5CRR5QOT7Dl/IBxpaUWtF/SDOFYtYzWLyRyOxenRoEi9bfUi65Sge920gt9CCvMVE7RqQJ9Ny66rVVQ/uGVR8dF3yJ/JxvvI4fvUJzSWOHvh9ffWGPS6Ze88aiZr71Nt96kPTaltObVWj9NEH9Lhaaxw0apysKUEWKKBuoeq9iC053mzxeF0e7RKRrkJjhCjYLO7ROaENTqs3ljiRFU68uV7Lr98z4mLdNx4+vIGOYa+UBfofmm9C7eod3CgD3mUaBGfCfQF+nQ6NzqQfbpPsSYLzCxt7Q+rvMPK+62uY37yAnkRMxmxWyY2l3Va1Pe4FuxGjGwytiXLHOf+nZPu//fdXEshNE+4excWqauzyZnjd2cP0PDU4aNvTbj3jXBv7LtZw11boQ1aY0rQ6GxZvL1Iby/i7aUpuIMZOuHmPezqL6vzdrG3Ntz8u+qP2dW71Xn3j83I1p/fhXijz9Zfx1yqYgDRoPUi91HMffTWPrx1cDLmciHFJTxYWdoIwMaDGzez3+KO3HfwPvKjBvL/29mvbjz2JmH/8T/hjGo/HhzpE8Dhyf4doHhkQS7I1gZQth48+1UO7/Y3ck4DMYoHNx4k7wB8977HfuvoH7OaDJPxmRz8s6BJmbDOg6e2n5lWPhmr2HFOK6rHmh8zkfkH1IT6/eXsnrEN5CHOdfQV4lKvJnuq3BNj02sysUhxwyrMpQyuHkYYSCMdSHzmhiNbNor0gRI87Jmytef/gfwxUhHkpO4hWkrnNIrustkna14hTaTgcwhkWjGOOm4siXiHpCPA8ZWwd9fYnF2YKVYs7uLe9oapEDz2DBboq5tD3PkVyn/DtP+eh+bjzWJQPwQInRRCJxgVZaNzAnjh2kJtpJ2KmZIRRGDZKvv1xvh1oCSQfhSkRAHLo7hxwNR3r9mmfg4hm3v9NWTj9WriN40Qvq6+d82NAGAJTm64Xm3lnqjU5orR4KCwykycPiuxtQGYRENnBY0qQorUaeJpKIvUwTj/CfWQ+rxOoOITT9xY+z8OivohvYgS6+ir9ORNX8f3Cb1J3ZR2F9E1GWjnoLRzoEljdKHKHcRy5BJvytbJ5wQKM+OBHLpAOl3Iz9j9x5alTsAgtijxYGk5rOYlJLB2yDKRzvhATkpmTSnnaFa7RufNqo2ip4WhKw00BjsCsHqSCiPaPrhSYY6D02nHwel42EyAvxF4JSRinkcJi0LKVlsA/UOwSE5GQR8oLdZvJuMoVID6l1AcaLRfPdiIwyUVOjY6Fvj01BoOFZoPZ6acMrl2QNMQwVzR+rcdXcErev86MnqE5g4ni7RrxZib/iDGls6D33tGt6m0ztg3Y6Si5AvmsL1JSW6mD4ssWZ05fFxkyebSqSPUWuhaqSsNvRA+ugpTIlktaFUZNOPVh40NeM7p0mNAbq8kah0btZJPUDlKxAv0MyFhtXRb+KNuB/qiehHuDmDWv6Zf0h7Ro3rTaLoJBtrL7LdpRA/zcg+9TON79V72tbrsGVpdNi29ZmpOFdmKS9M+s0s2Yf9njNWYqcZusVJHYY8mHkX9ycvam1DvZ5HwYrXOeA957UmwxWxW/08bhtBGgVYL3W4Nqu8GEuwB2h4ba2Bq75t/oJ5Ee2D8czGUj/qNBvUK2o9vZcQjXinOjTT2Nl7C5DBDhkYjbTklVy2zVgfau22Zsr85gZXmKXxWwniyaxsmuxpbaFPjaB4hp8/2kbAHLZenSX7APjRwiksPboc51OqdBCi8OEAOBxaTUZrJmw0E1M2LA6otsFjdXDsy3ZYkd6pbkrbp04nBLDm4a3wBwk6Hw+oWcmf98LHb8bAe29RsJz/TzLSAnZxmskzZr2sKvgz1mdNSH7cX3UCZjNb4yO2iLBVoplqcOMVKKuQS2K+5bsNHZSkB6KSiJJ+QtCxz0E4PotE0WrkAdJl1RfWOYq24AQswUxfQY6hQaVdrBs3YnMrZ6qFi3dwfrZx9dqU4Nu+RWx+BcXExLv4h/iF8RrA7zMlhLjeT9GHBJxAwTVKFYYLpw07iIpHhe847/6f3Xx+JPCIKnu94el1bdh47d4todHze0e1+mPt95x13HTzv/HuGouRhd9pxu4MXt5x7bOcWscf7oscoPjwxtx/Xt4zeXwmf45qheXsnZUoj9AEvTWhfZmCCtYn7ku3ZWZRomJpQIPneYS6LzCvp9VE0K8Hrm0mGyRDpa5ElL3aIBo0/zcdjDt5JJAe5mPUlV25emfQRQi52SChkvOGQ9/ve0A4yvINuGIPFra9vO/2xq4ozu8zm7EFvzkEyWd7eEpC8Tc0WS1b9qSPnxXZ47JNSgI/yMekev/8eKQabAaliCpzU0y5F29qiVkt9/mIecKAefycTO/dGpUQ0hT1dJa2LPX2JMn16x0fcN26gj+PQus5Xdh2hT6TGf+rmou5zqN3DTDvatOoRdm+OSjvLIepN1vpUaQuB9gSReuO/WoubXH2riKkGtEKIfhT1Hc0cr6VwsAc0rqImJj5LSu+ph70UsGpsge5PcNXtnq4Gf4Ko+RPw+X2iiz4DoCXe1qF1I6D7wZZkW7tW5DmpjR6G2jzoPMxpXf0NOXQogjqBfeiVrewBrLccm7NVoZ2TKMNjLyqgm/6UM3IYr1Bt8I7VGns1IUa930XNoff/Ek6BT4cTXTI0NiAfj5P+oIETYlShDj/69II6RvwEfJpAW5szBZvWqdgkdGz2eaXmUB2Xfd5gc+xjRgcYGEaH6J8nHBXqXKlo5tdEDCjkFH4qKibA7oO5NBX24FTYm8Zhl/3jsEs+vc/FcWE3iJ5uclyIdSk7EVT14V14eNeuqTwjU645dRxSL40LxbPYojFBH/Wjw97WALu3nvGPtVnRKrYubyW15zbomGnPATou/PTp0xiH7iQ8LuugxB0HG6Tx9va+/uR24ulr3749eZxpgXGQ1dvXrt2+GltmTZ4PcVrvOnkUOqaOQmfDHI+2pibMh1iy7e+d43Ea24l/3Ay/u4jRg8rHznD0fzPGCbhoVU8pZskUbNqmYtOuY/O8Vwo2hyOxRB2f573+YFO4pTX58RjFsdZV/gR8iufixD4BMqM0/7uODOrDE/AJ0fy1Tmb3OD7hTCnWDlpVhLIfNReQG5OUCVPZ40mzMBYQZHUG1MoE9wXkZhOtCwvi88aQH2P1fu+YzdJeVdpdNCkrgxn24wKRKTVhURho0V6s0zg+eWQYaz1OBySK0kgGhoqOS6Jziuf8K52TlSnyr0LHGhdIKiRpCGly35kQ1lZovrkQ9YIGaMhSp0N40mMdEeO6h46aUl7gX4vDw9GH/Smi+JzZybvlJsoMwRBWWdhdjFd/rJrUr/jc+4w2kZy4vU6+EKW2Q/REzrvQuJJ34qc70gVBy/3j+b06ri2gE+ypYRvNgGaAiYtNmQYBlJiEcAucz5ZbaIlOSxgszBYXOoWVQBarUeQsPtdUHHfEtnhpSh11VmKTLh8+WHaf2enmKUFiUZ0gYf05yrI/glan1ECUxiy6OlGAJ6hChM/uwdXxBKQJ4PxGnah4YtJ8GQ0W7R/W6n7w0YP8i/xJ9NkKl9MMN+pdVuyYqWLSqryjDWYWNtLVah4FzfkTw8A0PmtFkrFffymMqqobDJSSFZ9m4IxgfAQfdLqPsWhPXbaL+6xOSXsyIEclM4g2FNTxmECzMCSv7CBEi2A7Llv+Bhm96Zonnrgm3dX13CVf+iU7sobMoBY3eX/F5cgHT3/wlGPj1b94IGBzbFLv0x8H2YAb+vzDDHXrhw+h7kcbF4cBZjFo0BxWFA4zweSsiWBoyRMAhYl8lXzxzGsngqE5LygcX1UvDn6leM3TUyDBNYPouboXg33BAIMLoOhGSY5g01CSQ8OMnAlmmfrBE/gfvoSfld3d3bup92Cpuq9W73ot/E6B3w1rDuPx+mSsTMllCyL8oKg3eaI4pHQMfBJmw13bn+EvWDS9C++S7lt0gTk7cP0pwS+eeeUjrMO86AL2QH695PItuiCs/qi7m2TDFyzyR1rOGzr1s8ZTLnvkSt7Jsxcw/w8un4kSeNpjYGRgYGBkcFz6/1NPPL/NVwZ5lg1AEYbzPJx6MPq/1f85rHdZJYBcDgYmkCgAaDML2XjaY2BkYGCV+N8CJq3+XWa9ywAUQQHzAYk7Bkt42mPcwaDBsoGBAQmnwNhMPQwMrBIImnETELsxMDDchOLFQD4LkPaA0CA5qP4TjF9A7P+fIGb9/ww1kw+IxSFq/u+AYBS7YVgWiLOgasURehikoDQjlGYBmjEHqocRwgezWdD0ofgLB4aZeQJJzBQh9n8rkFbErvf/bKh+mNgUKL8Ui3qY+R1Q9glUOxl1oHbuBLIFgDQzDgzzJwuSv0H4DBBnIPGVoOEA4+cD3XsYiudjCRdQ3DwC0m5A2gpICyHCh1EPzc9eQCyKpJcDKp4IxExAzAoVZ0XCDCxHIPYwgMH/GwwBDJYMJ4DpRx0oxoQCEeAmmGRBEhFnQAUpYBMFIKz/c1AhSOf/T/8/AeUqAVIarnx42mNgYNCCwjSGJfggowGjB2MAYwvjKsZzjP+YzJhmMJ1hesesw+zD/IWliDWFjY9Nic2F7RG7D/sG9hccUzgNOBM4p3BxcblwdXC94w7jnsD9jMeOZwOvDG8Z7yo+K74Evi6+O/w3BHwEOgSuCfIJqglOERIRShC6JSwm3CfCI5IksktUTXSSWJLYLXEf8TbxFxIWEk0S+yR1JGdI/pHykqqR2iZ1TeqJtIi0gbSfdJv0NukH0l9k+GSiZJbIvJM1kj0kJyDXJfdG3k1+gfwB+UcKbApaCm4KeQoTFD4pZikeUXJSOqFcp7xORURlksozVRHVDtU5qptU36lFqXWo7VN7oc6nnqV+TsNCI0Vjh6aZ5hWtPK032hnam7R/6bjozNDdp/tML01vkt4vfSsDCYNthmqGdYaXjDiMdhgnGE8wkTJZZMpimma6z0zMLMZsizmXeYL5GvM/FgEWWywlLCMsp1lesZKwirNqs7pmrWNdYn3PxsEmw+aOrYvtCjsBOw+7PXbv7A3sZzkwOSQ4bHFUcuxw/ODU5PTDucP5m4uNS4LLPABRwojtAAABAAAA2wCbABEAAAAAAAIAAQACABYAAAEAAQEAAAAAeNqtUs1OwkAYnBY0Eo0aSTj34MGLDSAiwsl4EP+JRtGjVCiVQomtVBKfwmfw4sWDR59A38On8GCcXRYkyMEYaXZ39ut8s7NTAMzhBRrEL44FzhFo0RjXK+56WMMS7hTWMYsHhSPYw7PCUeTwqfAEbrWswpPIak8KTyGhvSscI/5QeBqL+rzCM8QZhePEZwq/IqH3Pbwhqd+HYWjabrdddyyv5ZuW18QmPLTRxTUc2KgjgIFHjjSSSGGFqMK3BnZwgRbXXfI7xILfgMnKBlw+xpCCL3dVrlWuHc6XZG7x5ucooYhtnnqIAxyTV6SWixqHQ32bPUfk27hhRZySYmdSeinghKeX2VcYq/VTaXlE67cOjJG+U3kPn+89mcGwp5LU6O2+q3UyA1iS3xl0mFjjXECTqg1qCk6NVXFyhYmbWJUjx9zTWP/jLcd/qfHVUD4mu11+5TZ9O8q1z6pAzX/jlOmyQueiGgwy2VeZ9v2lmZHIM4e8zDLPLDKD/2PmC43JiIUAAHjabdVV15RlAEbh2YBggd3drXO/89bYCPPZ3d0CioAoKnZ3d3d3YXd3x4E/wp+g+M32zPfkXjNrZj/PwTVrOmM6o8/fCzpF5/+ePzsdxjC2M7YzsTOJcSzCeCawKIuxOEuwJBOZxFIszTIs2/mL5VieFViRlViZVViV1VidNViTtVibdViX9VifDdiQjdiYTdiUzdicLdiSregSCnqUVNQ0tPTZmm3Ylu3Ynh3YkcnsxBSmMmCEndmFXdmN3dmDPdmLvdmHfdmP/TmAAzmIgzmEQzmMwzmCIzmKozmGYzmO4zmBEzmJaUxnBidzCjM5lVnMZg6nMZfTOYN5nMlZnM18zuFczuN8LuBCLuJiLuFSLuNyruBKruJqruFaruN6buBGbuJmbuFWbuN27uBO7uJu7uFe7uN+HuBBHuJhHuFRHuNxnuBJnuJpnuFZnuN5XuBFXuJlXuFVXmMBr/MGb/IWb/MO7/Ie7/MBH/IRH/MJn/IZn/MFX/IVX/MN3/Id3/MDP/ITP/MLv/Ibv/PH+Gkz58+ZngnzZs3odrtThzu5++8WC99w4xZuzy3dyq3dxm3dvjt5uMXIcKuRcYN5c2ePvqhGpoxu7WGNX2q6ox8eeImBlxh4iYGHDzx84OEDDx94+KCbrmsndmInpWsv9mIv9mKvsFfYK+wV9gp7hb3CXmGvsFfY69nr2evZ69nr2evZ69nr2evZ69kr7ZX2SnulvdJeaa+0V9or7ZX2KnuVvcpeZa+yV9mr7FX2KnuVvdpebae2U9up7dR2aju1ndpOY6fxXo29xl5jr7HX2GvsNfYae6291l5rr7XX2mvttfZae6291l7fXt9e317fXt9e317fXn/Yi+6j++g+wx/fwq3c2v3ve607vEf0H/1H/9F/9B/9R//Rf/Qf/Uf/0X/0H/1H/9F/9B/9R//Rf/Qf/Uf/0X/0H/1H/9F/9B/9R//Rf/Qf/Uf/0X/0H91H99F9dB/dR/fRfXQf3Uf30X10H92ntqf/6D/6j/6j/+g/+o/+o//oP/qP/qP/6D/6j/6j/+g/+o/+o//oP/qP/qP/6D/6j/6j/+g/+o/+o//oP/+579vpDzsL/z3+AcxdM0C4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAAVLmWK4AAA=="}
diff --git a/build_then_launch.sh b/build_then_launch.sh
index 41c0f8e7c..3105afcc5 100755
--- a/build_then_launch.sh
+++ b/build_then_launch.sh
@@ -1,7 +1,6 @@
#!/bin/bash
-file_x86="./it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/linux/gtk/x86/opt/eclipseArduino/eclipseArduinoIDE"
-file_x86_64="./it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/linux/gtk/x86_64/opt/eclipseArduino/eclipseArduinoIDE"
+file_x86_64="./io.sloeber.product/target/products/io.sloeber.product/linux/gtk/x86_64/Sloeber/sloeber-ide"
file=""
echo "Trying to build and then launch the Arduino Eclipse IDE"
@@ -14,7 +13,7 @@ if [[ $? -ne 0 ]] ; then
fi
#This is the actual build
-mvn verify
+mvn clean verify -DskipTests=true
if [[ $? -ne 0 ]] ; then
echo "Problem in build"
exit 1
@@ -23,11 +22,6 @@ fi
echo "Searching for the Eclipse executable (with our plugin pre-packaged) to launch"
#Find an executable if we made it successfully
-if [[ -x "$file_x86" ]]
-then
- #echo "File '$file_x86' is executable"
- file=$file_x86
-fi
if [[ -x "$file_x86_64" ]]
then
diff --git a/config.xml b/config.xml
deleted file mode 100755
index 81b18b85d..000000000
--- a/config.xml
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-
-
- false
-
-
-
- 10
- 10
- -1
- -1
-
-
-
- https://github.com/jantje/arduino-eclipse-plugin.git/
-
-
-
- 2
-
-
- https://jantje@github.com/jantje/arduino-eclipse-plugin.git
-
-
-
-
- */master
-
-
- false
-
-
-
- true
- false
- false
- false
- java 8
-
-
- H 2 * * *
-
-
- false
-
- com.github.brodykenrick.arduino-eclipse-plugin
- root
-
- clean verify -Pall,mars
- true
- false
- true
- true
- false
- false
- false
- true
- -1
- false
- false
- true
-
-
-
-
-
-
-
-
- #!/bin/bash
-changelog=${WORKSPACE}/../builds/${BUILD_ID}/changelog.xml
-content=`head -1 "${changelog}"`
-echo ${content}
-if [ "${content}" == "<log/>" ]; then
-echo No change
-exit 1
-fi
-if [ "${content}" == "" ]; then
-echo No change
-exit 2
-fi
-echo change
-exit 0
-
-
-
- FTP:
-
-
-
- ftp.baeyens.it
- false
-
-
-
- Eclipse*/WebContent/**
-
- Eclipse update site/WebContent
- false
- false
- false
- false
- false
- [, ]+
- false
-
-
- download/product
- *.tar.gz
-
-
- false
- false
- false
- false
- false
- [, ]+
- false
-
-
- nightly
- it.baeyens.arduino.updatesite/target/repository/
-
- it.baeyens.arduino.updatesite/target/repository
- false
- false
- false
- false
- false
- [, ]+
- false
-
-
- false
- false
-
-
- false
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
- #!/bin/ash
-rm *.tar.gz
-exit 0
-
-
-
-
- #!/bin/ash
-BUILD_TIMESTAMP=`date +'%Y-%m-%d_%H-%M-%S'`
-cd "${WORKSPACE}/it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/linux/gtk/x86/opt"
-tar -zcvf "${WORKSPACE}/linux32.${BUILD_TIMESTAMP}.tar.gz" eclipseArduino
-cd "${WORKSPACE}/it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/linux/gtk/x86_64/opt"
-tar -zcvf "${WORKSPACE}/linux64.${BUILD_TIMESTAMP}.tar.gz" eclipseArduino
-cd "${WORKSPACE}/it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/win32/win32/x86_64"
-tar -zcvf "${WORKSPACE}/win64.${BUILD_TIMESTAMP}.tar.gz" eclipseArduino
-cd "${WORKSPACE}/it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/win32/win32/x86"
-tar -zcvf "${WORKSPACE}/win32.${BUILD_TIMESTAMP}.tar.gz" eclipseArduino
-cd "${WORKSPACE}/it.baeyens.arduino.product/target/products/it.baeyens.arduino.product/macosx/cocoa/x86_64"
-tar -zcvf "${WORKSPACE}/mac64.${BUILD_TIMESTAMP}.tar.gz" eclipseArduino
-exit 0
-
-
-
-
-
- SUCCESS
- 0
- BLUE
- true
-
-
diff --git a/images_plugin_dev_setup/.project b/images_plugin_dev_setup/.project
new file mode 100644
index 000000000..102063bf3
--- /dev/null
+++ b/images_plugin_dev_setup/.project
@@ -0,0 +1,11 @@
+
+
+ images_plugin_dev_setup
+
+
+
+
+
+
+
+
diff --git a/images_plugin_dev_setup/.settings/org.eclipse.core.resources.prefs b/images_plugin_dev_setup/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..4824b8026
--- /dev/null
+++ b/images_plugin_dev_setup/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/images_plugin_dev_setup/SVG_Logo/eclipse_lg.svg b/images_plugin_dev_setup/SVG_Logo/eclipse_lg.svg
index ed880010d..e0f684728 100644
--- a/images_plugin_dev_setup/SVG_Logo/eclipse_lg.svg
+++ b/images_plugin_dev_setup/SVG_Logo/eclipse_lg.svg
@@ -17,7 +17,7 @@
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="eclipse_lg.svg"
- inkscape:export-filename="C:\Users\antonio.limori\Desktop\Logo plugin\Final\eclipse_lg.png"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\bitmap.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
+ id="filter5084-5"
+ x="-0.034618299"
+ width="1.0692366"
+ y="-0.037496582"
+ height="1.0749933">
+ stdDeviation="1.6856983"
+ id="feGaussianBlur5086-4" />
+
+
+
+
+ id="filter4358"
+ x="-0.027844512"
+ width="1.055689"
+ y="-0.043728958"
+ height="1.0874579">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4360" />
+ id="filter4362"
+ x="-0.031507938"
+ width="1.0630159"
+ y="-0.035083142"
+ height="1.0701663">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4364" />
+ id="filter4366"
+ x="-0.03095147"
+ width="1.0619029"
+ y="-0.035906981"
+ height="1.071814">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4368" />
+ id="filter4370"
+ x="-0.029764408"
+ width="1.0595288"
+ y="-0.038083586"
+ height="1.0761672">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4372" />
+ id="filter4374"
+ x="-0.031507938"
+ width="1.0630159"
+ y="-0.035083142"
+ height="1.0701663">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4376" />
+ id="filter4378"
+ x="-0.027844512"
+ width="1.055689"
+ y="-0.043728958"
+ height="1.0874579">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4380" />
+ id="filter4382"
+ x="-0.031507938"
+ width="1.0630159"
+ y="-0.035083142"
+ height="1.0701663">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4384" />
+ id="filter4386"
+ x="-0.027844512"
+ width="1.055689"
+ y="-0.043728958"
+ height="1.0874579">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4388" />
+ id="filter4390"
+ x="-0.031507938"
+ width="1.0630159"
+ y="-0.035083142"
+ height="1.0701663">
+ stdDeviation="6.2283623"
+ id="feGaussianBlur4392" />
-
-
-
-
+ style="color-interpolation-filters:sRGB"
+ id="filter4394"
+ x="-0.029101474"
+ width="1.0582029"
+ y="-0.039643746"
+ height="1.0792875">
+
+
image/svg+xml
-
+
@@ -257,124 +270,120 @@
height="377.5"
x="261.07147"
y="571.46936" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ transform="matrix(1.4322982,0,0,1.4322982,-1796.4318,-22.69913)" />
+
+
+
+ id="path5109"
+ d="m 1200.0067,273.45326 a 298,298 0 0 0 53.2118,284.96922 298,298 0 0 0 419.6523,38.72787 298,298 0 0 0 13.9041,-12.4129 322.04163,298 50.27264 0 1 -408.6171,-76.46044 322.04163,298 50.27264 0 1 -78.1511,-234.82375 z"
+ style="opacity:0.7;fill:#5a8dca;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4370)"
+ transform="matrix(1.4322982,0,0,1.4322982,-1856.8231,135.77449)" />
+ transform="matrix(1.4322982,0,0,1.4322982,-1856.8231,135.77449)" />
-
+ id="path5101"
+ d="m 1207.0465,166.55124 a 298,298 0 0 0 18.2401,289.32032 298,298 0 0 0 411.8522,89.36281 298,298 0 0 0 15.3075,-10.63405 322.04163,298 57.242151 0 1 -396.3199,-125.47753 322.04163,298 57.242151 0 1 -49.0799,-242.57155 z"
+ style="opacity:0.7;fill:#7aa3d4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4374)"
+ transform="matrix(1.4322982,0,0,1.4322982,-1856.8231,135.77449)" />
+ transform="matrix(1.4322982,0,0,1.4322982,-1856.8231,135.77449)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images_plugin_dev_setup/SVG_Logo/logo_16.svg b/images_plugin_dev_setup/SVG_Logo/logo_16.svg
index 6bfe3281e..a86dc2590 100644
--- a/images_plugin_dev_setup/SVG_Logo/logo_16.svg
+++ b/images_plugin_dev_setup/SVG_Logo/logo_16.svg
@@ -12,42 +12,41 @@
width="16"
height="16"
viewBox="0 0 16 16"
- id="svg2"
+ id="svg4413"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logo_16.svg"
- inkscape:export-filename="C:\Users\antonio.limori\Desktop\Logo plugin\Final\logo_16.png"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\logo_16.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
+
-
+ inkscape:snap-global="false">
+
+
+ id="metadata4418">
@@ -62,62 +61,29 @@
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
- transform="translate(100,-824.71438)">
-
-
-
-
-
-
-
-
+ transform="translate(0,-1036.3622)">
+
+
+
+
+
+
+
diff --git a/images_plugin_dev_setup/SVG_Logo/logo_256.svg b/images_plugin_dev_setup/SVG_Logo/logo_256.svg
index 156ae14e7..fe50d10bd 100644
--- a/images_plugin_dev_setup/SVG_Logo/logo_256.svg
+++ b/images_plugin_dev_setup/SVG_Logo/logo_256.svg
@@ -12,45 +12,43 @@
width="256"
height="256"
viewBox="0 0 256 256"
- id="svg4819"
+ id="svg4413"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logo_256.svg"
- inkscape:export-filename="C:\Users\antonio.limori\Desktop\Logo plugin\Final\logo_256.png"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\logo_256.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
+ id="defs4415" />
+ inkscape:window-maximized="1" />
+ id="metadata4418">
image/svg+xml
-
+
@@ -61,43 +59,26 @@
transform="translate(0,-796.36216)">
-
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fb8b00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 107.14948,805.43652 0,0.002 c -4.318,0.3788 -8.581836,1.04472 -12.769536,1.98242 -1.1842,5.9856 -1.930066,11.96128 -2.259766,17.89258 -3.4031,1.0326 -6.746872,2.29342 -10.013672,3.76172 -4.15,-4.2643 -8.636834,-8.30733 -13.427734,-12.10743 -3.77,1.9978 -7.420941,4.21899 -10.931641,6.64649 1.1942,6.0047 2.7447,11.87281 4.625,17.57031 -2.8363,2.2644 -5.550494,4.69287 -8.121094,7.26367 -5.4532,-2.5105 -11.116131,-4.7178 -16.957031,-6.5957 -2.8159,3.2103 -5.4476,6.57914 -7.875,10.08984 3.2265,5.2127 6.722597,10.16186 10.466797,14.81446 -1.8628,3.0896 -3.539413,6.27802 -5.007813,9.54492 -5.9451,-0.4105 -11.971281,-0.43234 -18.050781,-0.043 -1.4556,4.0167 -2.663962,8.12871 -3.601562,12.31641 4.91229,3.6093 10.01359,6.82715 15.27539,9.62305 -0.4833,3.5087 -0.716381,7.05257 -0.675781,10.60937 -5.6717,2.0357 -11.208084,4.53554 -16.583984,7.46484 0.3787,4.3179 1.046575,8.58174 1.984375,12.76954 5.98549,1.1843 11.961178,1.92801 17.892578,2.25781 1.0325,3.4032 2.291565,6.74862 3.759765,10.01562 -4.2644,4.1501 -8.307321,8.63498 -12.107421,13.42578 1.9978,3.7701 4.221137,7.42084 6.648437,10.93165 1.95962,-0.38983 3.896299,-0.83238 5.824219,-1.29883 l -0.675781,-3.00782 c -0.9903,-4.4234 -1.696857,-8.92974 -2.097657,-13.49804 l -0.318359,-3.63286 3.201172,-1.7461 c 4.5025,-2.4534 9.200022,-4.39772 13.919922,-6.26172 0.051,-1.3306 0.132653,-2.65621 0.251953,-3.97851 -4.3678,-2.4886 -8.704059,-5.05513 -12.818359,-8.07813 l -2.933594,-2.15234 0.794922,-3.55078 c 0.9905,-4.4234 2.264528,-8.7619 3.798828,-12.9961 l 1.242187,-3.42578 3.636719,-0.23633 c 5.0678,-0.3258 10.065728,-0.17548 15.048828,0.0371 0.5965,-1.1981 1.219888,-2.38128 1.867188,-3.55468 -3.0316,-3.9666 -6.023472,-7.9824 -8.701172,-12.3086 l -1.919922,-3.10156 2.076172,-3 c 2.55,-3.6881 5.311778,-7.22385 8.267578,-10.59375 l 2.410156,-2.75 3.480469,1.11914 c 4.8492,1.5591 9.485837,3.49537 14.085937,5.48047 0.9973,-0.9281 2.012022,-1.833 3.044922,-2.7207 -1.4536,-4.7931 -2.849297,-9.61838 -3.841797,-14.60938 l -0.714843,-3.58789 3.007812,-2.07812 c 3.6879,-2.55001 7.526188,-4.88483 11.492188,-6.98633 l 3.216796,-1.70508 2.84961,2.25976 c 3.9813,3.1579 7.60874,6.60244 11.17774,10.08204 1.2297,-0.4934 2.46739,-0.95859 3.71679,-1.39649 0.4143,-4.969 0.89772,-9.94856 1.88672,-14.94726 l 0.70117,-3.56055 3.54102,-0.79102 c 4.4234,-0.9905 8.9317,-1.69881 13.5,-2.09961 l 3.63086,-0.3164 1.74414,3.20117 c 2.4535,4.5024 4.40162,9.19621 6.26562,13.91602 1.3306,0.0511 2.65602,0.13655 3.97852,0.25585 2.4887,-4.368 5.05317,-8.70786 8.07617,-12.82226 l 2.1543,-2.92969 3.55078,0.79492 c 4.4234,0.9904 8.76375,2.26258 12.99805,3.79688 l 3.41015,1.23828 c 0.817,-2.18949 1.60282,-4.39884 2.32422,-6.64258 -3.2103,-2.8159 -6.58109,-5.4476 -10.0918,-7.875 -5.2126,3.2265 -10.16205,6.7227 -14.81445,10.4668 -3.0897,-1.8629 -6.27782,-3.53951 -9.54492,-5.00781 0.4101,-5.945 0.43247,-11.97109 0.043,-18.05079 -4.0167,-1.4555 -8.12891,-2.66396 -12.31641,-3.60156 -3.6093,4.9123 -6.8291,10.01349 -9.625,15.27539 -3.5086,-0.4834 -7.05247,-0.71628 -10.60937,-0.67578 -2.0357,-5.6717 -4.53154,-11.20818 -7.46094,-16.58398 l -0.002,0 z"
+ id="path14961-5"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+
-
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00979c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 133.92283,836.5437 c -4.3179,0.37881 -8.5798,1.04864 -12.7676,1.98632 -1.1842,5.98564 -1.93,11.95928 -2.2597,17.89063 -3.4032,1.03256 -6.7468,2.29342 -10.0137,3.76172 -4.1501,-4.2643 -8.6369,-8.30738 -13.427802,-12.10742 -3.77,1.99769 -7.4209,4.21913 -10.9316,6.64648 1.1942,6.00484 2.7427,11.87276 4.6231,17.57031 -2.8362,2.26424 -5.5484,4.69292 -8.1192,7.26367 -5.4532,-2.51056 -11.118,-4.71774 -16.95898,-6.5957 -2.81592,3.21027 -5.44764,6.58108 -7.875,10.0918 3.22637,5.21273 6.7246,10.16201 10.46876,14.81445 -1.86294,3.0896 -3.53952,6.27801 -5.00782,9.54492 -5.94498,-0.41058 -11.97301,-0.43334 -18.05273,-0.043 -1.45546,4.01653 -2.66193,8.12864 -3.59961,12.31641 4.91231,3.60929 10.01169,6.82705 15.27344,9.62305 -0.48337,3.50865 -0.71626,7.05261 -0.67578,10.60937 -5.67179,2.03563 -11.2081,4.53352 -16.58399,7.46289 0.37882,4.31793 1.04865,8.58177 1.98633,12.76954 5.98563,1.18426 11.95928,1.92804 17.89062,2.25781 1.03257,3.40314 2.29343,6.74871 3.76172,10.01562 -4.26429,4.15008 -8.30738,8.63692 -12.10742,13.42774 1.9977,3.77007 4.21913,7.42092 6.64648,10.9316 6.00485,-1.1941 11.87276,-2.7427 17.57028,-4.62301 2.2643,2.83621 4.693,5.54841 7.2637,8.1191 -2.5106,5.4532 -4.7177,11.1181 -6.5957,16.959 3.2103,2.8159 6.5811,5.4477 10.0918,7.875 5.2127,-3.2263 10.162,-6.7246 14.8145,-10.4687 3.089602,1.8629 6.278002,3.5395 9.544902,5.0078 -0.4106,5.945 -0.4334,11.973 -0.043,18.0527 4.0165,1.4555 8.1286,2.6619 12.3164,3.5996 3.6093,-4.9123 6.8271,-10.0117 9.6231,-15.2734 3.5086,0.4834 7.0526,0.7143 10.6093,0.6738 2.0357,5.6718 4.5336,11.2081 7.4629,16.584 4.318,-0.3788 8.5818,-1.0467 12.7696,-1.9844 1.1842,-5.9856 1.928,-11.9593 2.2578,-17.8906 3.4031,-1.0326 6.7487,-2.2934 10.0156,-3.7617 4.1501,4.2643 8.6369,8.3074 13.4277,12.1074 3.7701,-1.9977 7.421,-4.2191 10.9317,-6.6465 -1.1942,-6.0048 -2.7428,-11.8727 -4.6231,-17.5703 2.8362,-2.2642 5.5484,-4.6929 8.1192,-7.2637 5.4532,2.5106 11.118,4.7178 16.9589,6.5957 2.816,-3.2102 5.4477,-6.5811 7.875,-10.09179 -3.2263,-5.21269 -6.7245,-10.16197 -10.4687,-14.81442 1.8629,-3.08959 3.5395,-6.278 5.0078,-9.54492 5.945,0.41059 11.973,0.43334 18.0527,0.043 1.4555,-4.01652 2.662,-8.12864 3.5997,-12.3164 -4.9124,-3.60929 -10.0117,-6.829 -15.2735,-9.625 0.4834,-3.50865 0.7143,-7.05067 0.6738,-10.60743 5.6718,-2.03563 11.2081,-4.53352 16.584,-7.46289 -0.3788,-4.31792 -1.0467,-8.58176 -1.9843,-12.76953 -5.9857,-1.18426 -11.9593,-1.93 -17.8907,-2.25976 -1.0325,-3.40315 -2.2934,-6.74676 -3.7617,-10.01368 4.2643,-4.15007 8.3074,-8.63692 12.1074,-13.42773 -1.9977,-3.77008 -4.2191,-7.42093 -6.6465,-10.93164 -6.0048,1.19417 -11.8727,2.74273 -17.5703,4.62305 -2.2642,-2.8362 -4.6929,-5.54839 -7.2636,-8.11915 2.5105,-5.45318 4.7177,-11.11805 6.5957,-16.95898 -3.2103,-2.81592 -6.5811,-5.44765 -10.0918,-7.875 -5.2128,3.22637 -10.162,6.7246 -14.8145,10.46875 -3.0896,-1.86294 -6.278,-3.53952 -9.5449,-5.00781 0.4106,-5.94498 0.4333,-11.97302 0.043,-18.05274 -4.0166,-1.45545 -8.1287,-2.66193 -12.3164,-3.59961 -3.6093,4.91232 -6.829,10.0117 -9.625,15.27344 -3.5087,-0.48337 -7.0507,-0.71626 -10.6075,-0.67578 -2.0356,-5.67178 -4.5354,-11.2081 -7.4648,-16.58398 z m 7.4648,31.50976 a 71.862755,71.862755 0 0 1 71.8633,71.86328 71.862755,71.862755 0 0 1 -71.8633,71.86326 71.862755,71.862755 0 0 1 -71.863242,-71.86326 71.862755,71.862755 0 0 1 71.863242,-71.86328 z"
+ id="path14814-9" />
+ sodipodi:nodetypes="cccsscccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccccccccccccccccccccccscsscs" />
diff --git a/images_plugin_dev_setup/SVG_Logo/logo_32.svg b/images_plugin_dev_setup/SVG_Logo/logo_32.svg
index f9553e1f6..11d2cd2ff 100644
--- a/images_plugin_dev_setup/SVG_Logo/logo_32.svg
+++ b/images_plugin_dev_setup/SVG_Logo/logo_32.svg
@@ -12,13 +12,15 @@
width="32"
height="32"
viewBox="0 0 32 32"
- id="svg2"
+ id="svg4413"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logo_32.svg"
- inkscape:export-filename="C:\Users\antonio.limori\Desktop\Logo plugin\Final\logo_32.png"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\logo_32.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
+
-
+ inkscape:window-maximized="1">
+
+
+ id="metadata4418">
image/svg+xml
-
+
@@ -62,142 +60,33 @@
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
- transform="translate(100,-808.71438)">
-
-
-
+ transform="translate(0,-1020.3622)">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="g4137"
+ transform="matrix(0.12434135,0,0,0.12434135,0.08430708,921.42576)">
+
+
+
+
-
diff --git a/images_plugin_dev_setup/SVG_Logo/logo_48.svg b/images_plugin_dev_setup/SVG_Logo/logo_48.svg
index 8bb565b94..1d45fefad 100644
--- a/images_plugin_dev_setup/SVG_Logo/logo_48.svg
+++ b/images_plugin_dev_setup/SVG_Logo/logo_48.svg
@@ -12,13 +12,15 @@
width="48"
height="48"
viewBox="0 0 48 48"
- id="svg2"
+ id="svg4413"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="logo_48.svg"
- inkscape:export-filename="C:\Users\antonio.limori\Desktop\Logo plugin\Final\logo_48.png"
+ inkscape:export-filename="C:\Users\Marcelo\Desktop\logo_48.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
+
-
+ inkscape:window-maximized="1" />
+ id="metadata4418">
image/svg+xml
-
+
@@ -62,142 +56,33 @@
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
- transform="translate(100,-792.71438)">
-
-
-
+ transform="translate(0,-1004.3622)">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="g4137"
+ transform="matrix(0.19292585,0,0,0.19292585,-0.69450899,850.02885)">
+
+
+
+
-
diff --git a/images_plugin_dev_setup/SVG_Logo/readme.md b/images_plugin_dev_setup/SVG_Logo/readme.md
new file mode 100644
index 000000000..08c6c8c2b
--- /dev/null
+++ b/images_plugin_dev_setup/SVG_Logo/readme.md
@@ -0,0 +1,2 @@
+Edit the slpash.svg with inkscape (a opensource free sotware) https://inkscape.org/
+furhter instructions are in splach.svg itself
\ No newline at end of file
diff --git a/images_plugin_dev_setup/SVG_Logo/splash.svg b/images_plugin_dev_setup/SVG_Logo/splash.svg
new file mode 100644
index 000000000..d624f2ffa
--- /dev/null
+++ b/images_plugin_dev_setup/SVG_Logo/splash.svg
@@ -0,0 +1,2814 @@
+
+
+
+image/svg+xml 23 24 axw e axw e a asdf a xw e axw e asdfj eiansdf asdfj sdf 223 asdf 3 ad adj 0lkjk as0 asdnjf asdj034 as'f as asdf 55 mm de kljasdk sdsd sadf sdfsdf klñj3klñjasdkl dd U25 LM2901 U25 LM2901 +5V_LOGIC +10V R409 10K 1% 0.1W R407 10K 1% 0.1W R418 10K 1% 0.1W R405 12.7K 1% 0.1W +10V R403 10K 1% 0.1W R406 10K 1% 0.1W R404 20K 1% 0.1W R408 10K 1% 0.1W 4 5 6 7 1 2 +5V_LOGIC R410 10K 1% 0.1W C284 0.01uF 200V 4 5 U22 74VHC32 U25 LM2901 U25 LM2901 +5V_LOGIC +10V R409 10K 1% 0.1W R407 10K 1% 0.1W R418 10K 1% 0.1W R405 12.7K 1% 0.1W +10V R403 10K 1% 0.1W R406 10K 1% 0.1W R404 20K 1% 0.1W R408 10K 1% 0.1W 4 5 6 7 1 2 +5V_LOGIC R410 10K 1% 0.1W C284 0.01uF 200V 4 5 U22 74VHC32 int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500); } Boron 5.0.0 24bi Export using Then convert to bmp "Sloeber" font is Bariol regular with thick border. Version number font is Consolas. Nickname font is Arial.
diff --git a/images_plugin_dev_setup/Screenshot-Preferences 1.png b/images_plugin_dev_setup/Screenshot-Preferences1.png
similarity index 100%
rename from images_plugin_dev_setup/Screenshot-Preferences 1.png
rename to images_plugin_dev_setup/Screenshot-Preferences1.png
diff --git a/io.sloeber.autoBuild.test/.classpath b/io.sloeber.autoBuild.test/.classpath
new file mode 100644
index 000000000..1aa9eca95
--- /dev/null
+++ b/io.sloeber.autoBuild.test/.classpath
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/.gitignore b/io.sloeber.autoBuild.test/.gitignore
new file mode 100644
index 000000000..b5d3d71c5
--- /dev/null
+++ b/io.sloeber.autoBuild.test/.gitignore
@@ -0,0 +1,4 @@
+/*.log
+/bin/
+/.classpath
+/.project
diff --git a/io.sloeber.autoBuild.test/.project b/io.sloeber.autoBuild.test/.project
new file mode 100644
index 000000000..bd3a8f807
--- /dev/null
+++ b/io.sloeber.autoBuild.test/.project
@@ -0,0 +1,28 @@
+
+
+ io.sloeber.autoBuild.test
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/io.sloeber.autoBuild.test/.settings/org.eclipse.core.resources.prefs b/io.sloeber.autoBuild.test/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..99f26c020
--- /dev/null
+++ b/io.sloeber.autoBuild.test/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/io.sloeber.autoBuild.test/.settings/org.eclipse.core.runtime.prefs b/io.sloeber.autoBuild.test/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 000000000..5a0ad22d2
--- /dev/null
+++ b/io.sloeber.autoBuild.test/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/io.sloeber.autoBuild.test/.settings/org.eclipse.jdt.core.prefs b/io.sloeber.autoBuild.test/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..23fa13b17
--- /dev/null
+++ b/io.sloeber.autoBuild.test/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
+org.eclipse.jdt.core.compiler.compliance=21
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=21
diff --git a/io.sloeber.autoBuild.test/META-INF/MANIFEST.MF b/io.sloeber.autoBuild.test/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..4f2c8325f
--- /dev/null
+++ b/io.sloeber.autoBuild.test/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Test
+Bundle-SymbolicName: io.sloeber.autoBuild.test;singleton:=true
+Bundle-Version: 5.0.0.qualifier
+Require-Bundle: io.sloeber.autoBuild,
+ junit-jupiter-api;bundle-version="5.0.0",
+ junit-jupiter-params;bundle-version="5.0.0",
+ org.eclipse.core.resources,
+ org.eclipse.cdt.core;bundle-version="7.4.200",
+ org.eclipse.osgi,
+ org.eclipse.core.jobs,
+ org.eclipse.swt,
+ org.eclipse.core.runtime,
+ org.eclipse.cdt.core.native,
+ org.eclipse.equinox.registry,
+ org.eclipse.ui.workbench,
+ io.sloeber.autoBuild.ui,
+ junit-platform-suite-engine;bundle-version="1.10.2",
+ junit-platform-commons;bundle-version="1.10.2",
+ junit-platform-engine;bundle-version="1.10.2",
+ junit-platform-suite-api;bundle-version="1.10.2"
+Automatic-Module-Name: io.sloeber.autoBuild.test
+Bundle-RequiredExecutionEnvironment: JavaSE-21
diff --git a/io.sloeber.autoBuild.test/build.properties b/io.sloeber.autoBuild.test/build.properties
new file mode 100644
index 000000000..e9863e281
--- /dev/null
+++ b/io.sloeber.autoBuild.test/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/io.sloeber.autoBuild.test/launch/AutoBuildIssues.launch b/io.sloeber.autoBuild.test/launch/AutoBuildIssues.launch
new file mode 100644
index 000000000..070d03d80
--- /dev/null
+++ b/io.sloeber.autoBuild.test/launch/AutoBuildIssues.launch
@@ -0,0 +1,431 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/launch/AutoBuildRegression.launch b/io.sloeber.autoBuild.test/launch/AutoBuildRegression.launch
new file mode 100644
index 000000000..9c665353b
--- /dev/null
+++ b/io.sloeber.autoBuild.test/launch/AutoBuildRegression.launch
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/launch/AutoBuildRegression_linux_jantje.launch b/io.sloeber.autoBuild.test/launch/AutoBuildRegression_linux_jantje.launch
new file mode 100644
index 000000000..5679f78c0
--- /dev/null
+++ b/io.sloeber.autoBuild.test/launch/AutoBuildRegression_linux_jantje.launch
@@ -0,0 +1,308 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/launch/Autobuild AutoBuildCreateBasicProjects.launch b/io.sloeber.autoBuild.test/launch/Autobuild AutoBuildCreateBasicProjects.launch
new file mode 100644
index 000000000..a520a8a56
--- /dev/null
+++ b/io.sloeber.autoBuild.test/launch/Autobuild AutoBuildCreateBasicProjects.launch
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/launch/AutobuildAutoBuildCreateProject.launch b/io.sloeber.autoBuild.test/launch/AutobuildAutoBuildCreateProject.launch
new file mode 100644
index 000000000..004552770
--- /dev/null
+++ b/io.sloeber.autoBuild.test/launch/AutobuildAutoBuildCreateProject.launch
@@ -0,0 +1,437 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/plugin.xml b/io.sloeber.autoBuild.test/plugin.xml
new file mode 100644
index 000000000..0282d2eda
--- /dev/null
+++ b/io.sloeber.autoBuild.test/plugin.xml
@@ -0,0 +1,600 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/pom.xml b/io.sloeber.autoBuild.test/pom.xml
new file mode 100644
index 000000000..0e5c12f4f
--- /dev/null
+++ b/io.sloeber.autoBuild.test/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+
+ io.sloeber.arduino-eclipse-plugin
+ io.sloeber.parent
+ 5.0.0-SNAPSHOT
+ ../io.sloeber.parent
+
+
+ io.sloeber.autoBuild.test
+ eclipse-test-plugin
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.9.2
+ test
+
+
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-surefire-plugin
+ ${tycho.version}
+
+
+
+ org.eclipse.cdt.core.systemConsole
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/helpers/Defaults.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/helpers/Defaults.java
new file mode 100644
index 000000000..f04d7da67
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/helpers/Defaults.java
@@ -0,0 +1,28 @@
+package io.sloeber.autoBuild.helpers;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.Bundle;
+
+import io.sloeber.autoBuild.api.AutoBuildNewProjectCodeManager;
+import io.sloeber.autoBuild.api.ICodeProvider;
+import io.sloeber.autoBuild.integration.AutoBuildManager;
+import io.sloeber.autoBuild.schema.api.IProjectType;
+
+@SuppressWarnings("nls")
+public class Defaults {
+
+ static public final String defaultExtensionPointID = "io.sloeber.autoBuild.buildDefinitions";
+ static public final String defaultExtensionID = "io.sloeber.autoBuild";
+ static public final String defaultProjectTypeID = "io.sloeber.autoBuild.projectType.exe";
+ static public final IProjectType defaultProjectType= AutoBuildManager.getProjectType(defaultExtensionPointID, defaultExtensionID, defaultProjectTypeID, true);
+ static public final String defaultNatureID = CCProjectNature.CC_NATURE_ID;
+ static public final Bundle thisBundle = Platform.getBundle("io.sloeber.autoBuild.test"); //$NON-NLS-1$
+ public static final ICodeProvider c_exeCodeProvider = AutoBuildNewProjectCodeManager.getDefault().getCodeProvider("io.sloeber.autoBuild.templateCode.c.exe");
+ public static final ICodeProvider c_LibProvider = AutoBuildNewProjectCodeManager.getDefault().getCodeProvider("io.sloeber.autoBuild.templateCode.c.lib");
+ public static final ICodeProvider cpp_exeCodeProvider = AutoBuildNewProjectCodeManager.getDefault().getCodeProvider("io.sloeber.autoBuild.templateCode.cpp.exe");
+ public static final ICodeProvider cpp_LibProvider = AutoBuildNewProjectCodeManager.getDefault().getCodeProvider("io.sloeber.autoBuild.templateCode.cpp.lib");
+ public static final ICodeProvider compoundProvider = AutoBuildNewProjectCodeManager.getDefault().getCodeProvider("io.sloeber.autoBuild.templateCode.compound");
+
+
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/helpers/Shared.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/helpers/Shared.java
new file mode 100644
index 000000000..69c892ffc
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/helpers/Shared.java
@@ -0,0 +1,245 @@
+package io.sloeber.autoBuild.helpers;
+
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.ICModelMarker;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.jobs.IJobManager;
+import org.eclipse.core.runtime.jobs.Job;
+import org.osgi.framework.Bundle;
+
+import io.sloeber.autoBuild.api.AutoBuildProject;
+import io.sloeber.autoBuild.api.IAutoBuildConfigurationDescription;
+
+@SuppressWarnings("nls")
+public class Shared {
+ private static boolean deleteProjects = true;
+ private static boolean closeFailedProjects = false;
+ private static boolean closeProjects = true;
+
+ public static void setDeleteProjects(boolean deleteProjects) {
+ Shared.deleteProjects = deleteProjects;
+ }
+
+ public static void setCloseProjects(boolean close) {
+ Shared.closeProjects = close;
+ }
+
+ public static void setCloseFailedProjects(boolean closeFailedProjects) {
+ Shared.closeFailedProjects = closeFailedProjects;
+ }
+
+ public static boolean isCloseFailedProjects() {
+ return closeFailedProjects;
+ }
+
+ private static void doFail(IProject project, String error) {
+ if (closeFailedProjects) {
+ try {
+ project.close(null);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ fail(error);
+ }
+
+ public static void hasProjectBuildErrors(IProject project) throws CoreException {
+ IMarker[] markers = project.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
+ for (IMarker marker : markers) {
+ if (marker.getAttribute(IMarker.SEVERITY, IMarker.SEVERITY_INFO) == IMarker.SEVERITY_ERROR) {
+ doFail(project, "The project contains error");
+ }
+ }
+ }
+
+ public static void checkIfConfigurationBuildCorrectly(IProject project,
+ IAutoBuildConfigurationDescription autoBuild, Boolean shouldMakefileExists) {
+ IFolder buildRootFolder = autoBuild.getBuildFolder();
+ String projName = project.getName();
+
+ // check to see if the makefile is present or not
+ if (shouldMakefileExists != null) {
+ if (shouldMakefileExists.booleanValue() && (!buildRootFolder.getFile("makefile").exists())) {
+ doFail(project, "makefile " + buildRootFolder.getFile("makefile") + " should exist but does not ");
+ }
+ if ((!shouldMakefileExists.booleanValue()) && buildRootFolder.getFile("makefile").exists()) {
+ doFail(project, "makefile " + buildRootFolder.getFile("makefile") + " should not exist but does");
+ }
+ }
+
+ // check to see if any of the expected outputfiles exists
+ String[] validOutputs = { projName + ".elf", projName + ".bin", projName + ".hex", projName + ".exe",
+ "lib_" + projName + ".so", projName + ".so", "lib_" + projName + ".a", projName + ".dll",
+ "application.axf",projName };
+ for (String validOutput : validOutputs) {
+ if (buildRootFolder.getFile(validOutput).exists()) {
+ return;
+ }
+ }
+
+ doFail(project, "The build did not produce a file that is considered a targetfile in build folder "
+ + buildRootFolder.toString());
+ }
+
+ public static void waitForAllJobsToFinish() throws InterruptedException {
+ Thread.sleep(1000);
+ IJobManager jobMan = Job.getJobManager();
+ int counter = 0;
+ while ((!jobMan.isIdle()) && (counter++ < 120)) {
+ Thread.sleep(500);
+ // If you have to wait for counter it may mean you are
+ // runnning the test in the gui thread
+ }
+ // As nothing is running now we can start installing
+ }
+
+ public static IPath getTemplateFolder(String templateName) throws Exception {
+ Bundle bundle = Platform.getBundle("io.sloeber.tests");
+ Path path = new Path("src/templates/" + templateName);
+ URL fileURL = FileLocator.find(bundle, path, null);
+ URL resolvedFileURL = FileLocator.toFileURL(fileURL);
+ return new Path(resolvedFileURL.toURI().getPath());
+ }
+
+ public static IPath getprojectZip(String zipFileName) throws Exception {
+ Bundle bundle = Platform.getBundle("io.sloeber.tests");
+ Path path = new Path("src/projects/" + zipFileName);
+ URL fileURL = FileLocator.find(bundle, path, null);
+ URL resolvedFileURL = FileLocator.toFileURL(fileURL);
+ return new Path(resolvedFileURL.toURI().getPath());
+ }
+
+ public static void buildProjectUsingActivConfig(IProject iProject, String builderName) throws Exception {
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(iProject, true);
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+ cProjectDesc.setActiveConfiguration(curConfig);
+ CCorePlugin.getDefault().setProjectDescription(iProject, cProjectDesc);
+ build(iProject, builderName, null);
+ }
+ }
+
+ public static void buildAndVerifyProjectUsingActivConfig(IProject project, Boolean shouldMakefileExists)
+ throws Exception {
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(project, true);
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+ cProjectDesc.setActiveConfiguration(curConfig);
+ CCorePlugin.getDefault().setProjectDescription(project, cProjectDesc);
+ project.build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor());
+ verifyConfig(project, IAutoBuildConfigurationDescription.getConfig(curConfig), shouldMakefileExists);
+ }
+ }
+
+ /**
+ * clean all the configuration by looping over all the configurations and
+ * setting them active and then call a clean build
+ *
+ * @param iProject
+ * @throws CoreException
+ */
+ public static void cleanProject(IProject iProject) throws CoreException {
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(iProject, true);
+ // clean all configurations and verify clean has been done properly
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+// cProjectDesc.setActiveConfiguration(curConfig);
+// CCorePlugin.getDefault().setProjectDescription(iProject, cProjectDesc);
+
+ IAutoBuildConfigurationDescription autoConf = IAutoBuildConfigurationDescription.getConfig(curConfig);
+ cleanConfiguration(autoConf);
+ }
+ }
+
+ /**
+ * clean all the configuration by looping over all the configurations and
+ * setting them active and then call a clean build
+ *
+ * @param iProject
+ * @throws CoreException
+ */
+ public static void cleanConfiguration(IAutoBuildConfigurationDescription autoConf) throws CoreException {
+ IFolder buildRoot = autoConf.getBuildFolder();
+ IProject iProject = buildRoot.getProject();
+ int membersBeforeClean = buildRoot.members().length;
+
+ iProject.build(IncrementalProjectBuilder.CLEAN_BUILD, new NullProgressMonitor());
+ if (buildRoot.exists()) {
+ int membersAfterClean = buildRoot.members().length;
+ assertTrue( membersAfterClean <= membersBeforeClean,"clean did not remove files");
+ }
+ }
+
+ /**
+ * Convenience method to call BuildAndVerify for the active config of a project
+ * and a builder
+ *
+ * @param theTestProject The project to build
+ * @param builderName if null use the default builder else use the builder
+ * with the provided name
+ * @return true if build is successful otherwise false
+ * @throws Exception
+ */
+ public static void BuildAndVerifyActiveConfig(IProject theTestProject) throws Exception {
+ BuildAndVerifyActiveConfig(theTestProject, null, null);
+ }
+
+ public static void BuildAndVerifyActiveConfig(IProject theTestProject, String builderID,
+ Boolean shouldMakefileExists) throws Exception {
+ build(theTestProject, builderID, null);
+
+ verifyConfig(theTestProject, IAutoBuildConfigurationDescription.getActiveConfig(theTestProject, false),
+ shouldMakefileExists);
+
+ }
+
+ public static void build(IProject theTestProject, String builderID, String configs) throws Exception {
+ NullProgressMonitor monitor = new NullProgressMonitor();
+
+ waitForAllJobsToFinish();
+ if (builderID == null && configs == null) {
+ theTestProject.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
+ } else {
+ Map args = new HashMap<>();
+ if (builderID != null) {
+ args.put(AutoBuildProject.ARGS_BUILDER_KEY, builderID);
+ }
+ if (configs != null) {
+ args.put(AutoBuildProject.ARGS_CONFIGS_KEY, configs);
+ }
+ theTestProject.build(IncrementalProjectBuilder.FULL_BUILD, AutoBuildProject.COMMON_BUILDER_ID, args, monitor);
+ }
+ waitForAllJobsToFinish();
+ }
+
+ public static void verifyConfig(IProject theTestProject, IAutoBuildConfigurationDescription autoBuild,
+ Boolean shouldMakefileExists) throws Exception {
+
+ hasProjectBuildErrors(theTestProject);
+ checkIfConfigurationBuildCorrectly(theTestProject, autoBuild, shouldMakefileExists);
+
+ if (deleteProjects) {
+ theTestProject.delete(true, true, null);
+ } else {
+ if (closeProjects) {
+ theTestProject.close(null);
+ }
+ }
+ }
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildCreateBasicProjects.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildCreateBasicProjects.java
new file mode 100644
index 000000000..2d3c3a8b2
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildCreateBasicProjects.java
@@ -0,0 +1,250 @@
+package io.sloeber.autoBuild.regression;
+
+import static io.sloeber.autoBuild.helpers.Defaults.*;
+import static io.sloeber.autoBuild.helpers.api.AutoBuildConstants.*;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.stream.Stream;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.junit.jupiter.api.Assumptions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import io.sloeber.autoBuild.api.AutoBuildCommon;
+import io.sloeber.autoBuild.api.AutoBuildProject;
+import io.sloeber.autoBuild.api.IAutoBuildConfigurationDescription;
+import io.sloeber.autoBuild.api.ICodeProvider;
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.buildTools.api.IBuildToolsManager;
+import io.sloeber.autoBuild.helpers.Shared;
+import io.sloeber.autoBuild.integration.AutoBuildManager;
+import io.sloeber.autoBuild.schema.api.IProjectType;
+
+@SuppressWarnings({ "nls" })
+public class AutoBuildCreateBasicProjects {
+ static int testCounter = 1;
+ // below are test limiting options buildTypeActiveBuild=null and
+ private boolean buildTypeActiveBuild = true;
+ private boolean doTestDefaultBuilder = true;
+ private boolean doTestInternalBuilder = true;
+ private boolean doTestMakeBuilder = true;
+ static Set myBuildTools = IBuildToolsManager.getDefault().getAllInstalledBuildTools();
+
+ @BeforeAll
+ public static void beforeAll() throws CoreException {
+ Shared.setDeleteProjects(false);
+ Shared.setCloseProjects(false);
+ // turn off auto building to make sure autobuild does not start a build behind
+ // our backs
+ final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ static void buildAllConfigsAsActive(String builderID, String projectName, String extensionPointID,
+ String extensionID, String projectTypeID, String natureID, ICodeProvider codeProvider,
+ IBuildTools buildTools, Boolean shouldMakefileExists) throws Exception {
+
+ IProjectType projectType = AutoBuildManager.getProjectType(extensionPointID, extensionID, projectTypeID, true);
+ IProject testProject = AutoBuildProject.createProject(
+ String.format("%03d", Integer.valueOf(testCounter++)) + "_" + projectName, projectType, natureID,
+ codeProvider, buildTools, false, null);
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(testProject, true);
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+ IAutoBuildConfigurationDescription autConf=IAutoBuildConfigurationDescription.getConfig(curConfig);
+ autConf.setParallelizationNum(PARRALLEL_BUILD_OPTIMAL_JOBS);
+ autConf.setIsParallelBuild(true);
+ cProjectDesc.setActiveConfiguration(curConfig);
+ CCorePlugin.getDefault().setProjectDescription(testProject, cProjectDesc);
+ Shared.BuildAndVerifyActiveConfig(testProject, builderID, shouldMakefileExists);
+ }
+ endTest(testProject);
+ }
+
+ static void endTest(IProject project) throws CoreException {
+ project.delete(true, true, null);
+ }
+
+ static void buildAllConfigs(String builderName, String projectName, String extensionPointID, String extensionID,
+ String projectTypeID, String natureID, ICodeProvider codeProvider, IBuildTools buildTools,
+ Boolean shouldMakefileExists) throws Exception {
+
+ IProjectType projectType = AutoBuildManager.getProjectType(extensionPointID, extensionID, projectTypeID, true);
+ IProject testProject = AutoBuildProject.createProject(
+ String.format("%03d", Integer.valueOf(testCounter++)) + "_" + projectName, projectType, natureID,
+ codeProvider, buildTools, false, null);
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(testProject, true);
+ Set configs = new HashSet<>();
+
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+ configs.add(curConfig.getName());
+ }
+ Shared.build(testProject, builderName, AutoBuildProject.encode(configs));
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+
+ Shared.verifyConfig(testProject, IAutoBuildConfigurationDescription.getConfig(curConfig),
+ shouldMakefileExists);
+ }
+ endTest(testProject);
+ }
+
+ private void doBuilds(String builderID, String projectName, String extensionPointID, String extensionID,
+ String projectTypeID, String natureID, ICodeProvider codeProvider, IBuildTools buildTools,
+ Boolean shouldMakefileExists) throws Exception {
+ String shortProjectName = projectName;
+ if (projectName.length() > 41) {
+ shortProjectName = projectName.substring(0, 40);
+ }
+ if (buildTypeActiveBuild) {
+ buildAllConfigsAsActive(builderID, shortProjectName, extensionPointID, extensionID, projectTypeID, natureID,
+ codeProvider, buildTools, shouldMakefileExists);
+ }
+ if (!buildTypeActiveBuild) {
+ buildAllConfigs(builderID, "all_" + shortProjectName, extensionPointID, extensionID, projectTypeID,
+ natureID, codeProvider, buildTools, shouldMakefileExists);
+ }
+ //change the 2 ways of building all configs
+ buildTypeActiveBuild=!buildTypeActiveBuild;
+
+ }
+
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testDefaultBuilderSrc(String projectName, String extensionPointID, String extensionID, String projectTypeID,
+ String natureID, ICodeProvider codeProvider, IBuildTools buildTools) throws Exception {
+ if (doTestDefaultBuilder) {
+ doBuilds(null, projectName, extensionPointID, extensionID, projectTypeID, natureID, codeProvider,
+ buildTools, null);
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testInternaltBuilderSrc(String inProjectName, String extensionPointID, String extensionID, String projectTypeID,
+ String natureID, ICodeProvider codeProvider, IBuildTools buildTools) throws Exception {
+ if (doTestInternalBuilder) {
+ String projectName = "Internal_" + inProjectName;
+
+ doBuilds(AutoBuildProject.INTERNAL_BUILDER_ID, projectName, extensionPointID, extensionID, projectTypeID,
+ natureID, codeProvider, buildTools, Boolean.FALSE);
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testMakeBuilderSrc(String inProjectName, String extensionPointID, String extensionID, String projectTypeID,
+ String natureID, ICodeProvider codeProvider, IBuildTools buildTools) throws Exception {
+ if (doTestMakeBuilder) {
+ Assumptions.assumeFalse(buildTools.getProviderID().equals("io.sloeber.autoBuild.Path.BuildToolProvider"),"Ignoring as make is not assumed on the path") ;
+ String projectName = "make_" + inProjectName;
+ if (projectName.length() > 40) {
+ // somethimes the build fails due to to long filenames
+ // as the project name is part of the targetName
+ projectName = projectName.substring(0, 40);
+ }
+ doBuilds(AutoBuildProject.MAKE_BUILDER_ID, projectName, extensionPointID, extensionID, projectTypeID,
+ natureID, codeProvider, buildTools, Boolean.TRUE);
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testDefaultBuilderRoot(String projectName, String extensionPointID, String extensionID, String projectTypeID,
+ String natureID, ICodeProvider codeProvider, IBuildTools buildTools) throws Exception {
+ if (doTestDefaultBuilder) {
+ doBuilds(null, projectName, extensionPointID, extensionID, projectTypeID, natureID, codeProvider,
+ buildTools, null);
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testInternaltBuilderRoot(String inProjectName, String extensionPointID, String extensionID, String projectTypeID,
+ String natureID, ICodeProvider codeProvider, IBuildTools buildTools) throws Exception {
+ if (doTestInternalBuilder) {
+ String projectName = "Internal_" + inProjectName;
+
+ doBuilds(AutoBuildProject.INTERNAL_BUILDER_ID, projectName, extensionPointID, extensionID, projectTypeID,
+ natureID, codeProvider, buildTools, Boolean.FALSE);
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testMakeBuilderRoot(String inProjectName, String extensionPointID, String extensionID, String projectTypeID,
+ String natureID, ICodeProvider codeProvider, IBuildTools buildTools) throws Exception {
+ if (doTestMakeBuilder) {
+ Assumptions.assumeFalse(buildTools.getProviderID().equals("io.sloeber.autoBuild.Path.BuildToolProvider"),"Ignoring as make is not assumed on the path") ;
+ String projectName = "make_" + inProjectName;
+ if (projectName.length() > 40) {
+ // somethimes the build fails due to to long filenames
+ // as the project name is part of the targetName
+ projectName = projectName.substring(0, 40);
+ }
+ doBuilds(AutoBuildProject.MAKE_BUILDER_ID, projectName, extensionPointID, extensionID, projectTypeID,
+ natureID, codeProvider, buildTools, Boolean.TRUE);
+ }
+ }
+
+ static Stream projectCreationInfoProvider() {
+ String extensionPointID = "io.sloeber.autoBuild.buildDefinitions";
+ Map testProjectTypeIds = new HashMap<>();
+ testProjectTypeIds.put(PROJECT_TYPE_ID_COMPOUND_EXE, "io.sloeber.autoBuild");
+ testProjectTypeIds.put(PROJECT_TYPE_ID_EXE, "io.sloeber.autoBuild");
+ testProjectTypeIds.put(PROJECT_TYPE_ID_STATIC_LIB, "io.sloeber.autoBuild");
+ testProjectTypeIds.put(PROJECT_TYPE_ID_DYNAMIC_LIB, "io.sloeber.autoBuild");
+
+ List ret = new LinkedList<>();
+ for (Entry testProjectEntry : testProjectTypeIds.entrySet()) {
+ String extensionID = testProjectEntry.getValue();
+ String projectID = testProjectEntry.getKey();
+ IProjectType projectType = AutoBuildManager.getProjectType(extensionPointID, extensionID, projectID, true);
+ if (projectType == null) {
+ System.err.println("Skipping " + extensionID + " " + projectID);
+ continue;
+ }
+ ICodeProvider codeProvider_cpp = null;
+ switch (projectID) {
+ case PROJECT_TYPE_ID_EXE:
+ codeProvider_cpp = cpp_exeCodeProvider;
+ break;
+ case PROJECT_TYPE_ID_STATIC_LIB:
+ case PROJECT_TYPE_ID_DYNAMIC_LIB:
+ codeProvider_cpp = cpp_LibProvider;
+ break;
+ case PROJECT_TYPE_ID_COMPOUND_EXE:
+ codeProvider_cpp = compoundProvider;
+ break;
+ default:
+ codeProvider_cpp = cpp_exeCodeProvider;
+ }
+ for (IBuildTools curBuildTools : myBuildTools) {
+ if (curBuildTools.isProjectTypeSupported(projectType)) {
+ String projectName = AutoBuildCommon.MakeNameCompileSafe(projectType.getName() + "_" + extensionID
+ + "_" + curBuildTools.getProviderID() + "_" + curBuildTools.getSelectionID());
+ ret.add(Arguments.of(projectName, extensionPointID, extensionID, projectType.getId(),
+ CCProjectNature.CC_NATURE_ID, codeProvider_cpp, curBuildTools));
+ }
+ }
+ }
+ return ret.stream();
+ }
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildCreateProject.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildCreateProject.java
new file mode 100644
index 000000000..598b62a12
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildCreateProject.java
@@ -0,0 +1,107 @@
+package io.sloeber.autoBuild.regression;
+
+import static io.sloeber.autoBuild.helpers.Defaults.*;
+import static io.sloeber.autoBuild.helpers.api.AutoBuildConstants.*;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import io.sloeber.autoBuild.api.AutoBuildCommon;
+import io.sloeber.autoBuild.api.AutoBuildProject;
+import io.sloeber.autoBuild.api.ICodeProvider;
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.buildTools.api.IBuildToolsManager;
+import io.sloeber.autoBuild.helpers.Shared;
+import io.sloeber.autoBuild.integration.AutoBuildManager;
+import io.sloeber.autoBuild.schema.api.IProjectType;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.CProjectNature;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.core.resources.IProject;
+
+@SuppressWarnings("nls")
+class AutoBuildCreateProject {
+
+ @BeforeAll
+ public static void beforeAll() {
+ Shared.setDeleteProjects(false);
+ Shared.setCloseProjects(false);
+ }
+
+ @SuppressWarnings("static-method")
+ @ParameterizedTest
+ @MethodSource("projectCreationInfoProvider")
+ void testExample(String myProjectName, IProjectType projectType, IBuildTools buildTools,
+ String natureID, ICodeProvider codeProvider) throws Exception {
+
+ IProject testProject = AutoBuildProject.createProject(myProjectName, projectType, natureID, codeProvider, buildTools, false, null);
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(testProject, true);
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+ cProjectDesc.setActiveConfiguration(curConfig);
+ CCorePlugin.getDefault().setProjectDescription(testProject, cProjectDesc);
+ Shared.BuildAndVerifyActiveConfig(testProject);
+ }
+ }
+
+ static Stream projectCreationInfoProvider() {
+ int testCounter = 1;
+ List ret = new LinkedList<>();
+ for (String extensionPointID : AutoBuildManager.supportedExtensionPointIDs()) {
+ for (String extensionID : AutoBuildManager.getSupportedExtensionIDs(extensionPointID)) {
+ for (IProjectType projectType : AutoBuildManager.getProjectTypes(extensionPointID, extensionID)) {
+ if (projectType.isTest()) {
+ continue;
+ }
+ String projectID = projectType.getId();
+ IBuildTools buildTools = IBuildToolsManager.getDefault().getAnyInstalledBuildTools(projectType);
+ if(buildTools==null) {
+ continue;
+ }
+
+ ICodeProvider codeProvider_cpp = null;
+ ICodeProvider codeProvider_c = null;
+ switch (projectID) {
+ case PROJECT_TYPE_ID_EXE:
+ codeProvider_cpp = cpp_exeCodeProvider;
+ codeProvider_c = c_exeCodeProvider;
+ break;
+ case "io.sloeber.autoBuild.projectType.static.lib":
+ case PROJECT_TYPE_ID_DYNAMIC_LIB:
+ codeProvider_cpp = cpp_LibProvider;
+ codeProvider_c = c_LibProvider;
+ break;
+ case PROJECT_TYPE_ID_COMPOUND_EXE:
+ codeProvider_cpp = compoundProvider;
+ break;
+ default:
+ codeProvider_cpp = cpp_exeCodeProvider;
+ }
+ String projectName = AutoBuildCommon
+ .MakeNameCompileSafe(String.format("%03d", Integer.valueOf(testCounter)) + "_CPP_"
+ + projectType.getName() + "_" + extensionID);
+ testCounter++;
+ ret.add(Arguments.of(projectName, projectType, buildTools,
+ CCProjectNature.CC_NATURE_ID, codeProvider_cpp));
+ if (codeProvider_c != null) {
+ projectName = AutoBuildCommon
+ .MakeNameCompileSafe(String.format("%03d", Integer.valueOf(testCounter)) + "_C_"
+ + projectType.getName() + "_" + extensionID);
+ testCounter++;
+ ret.add(Arguments.of(projectName, projectType, buildTools,
+ CProjectNature.C_NATURE_ID, codeProvider_c));
+ }
+ }
+ }
+ }
+ return ret.stream();
+ }
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildIssues.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildIssues.java
new file mode 100644
index 000000000..7eefce812
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildIssues.java
@@ -0,0 +1,139 @@
+package io.sloeber.autoBuild.regression;
+
+import static io.sloeber.autoBuild.helpers.Defaults.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import io.sloeber.autoBuild.api.AutoBuildProject;
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.buildTools.api.IBuildToolsManager;
+import io.sloeber.autoBuild.helpers.Shared;
+
+@SuppressWarnings({ "nls", "static-method" })
+public class AutoBuildIssues {
+
+ @BeforeAll
+ public static void beforeAll() throws CoreException {
+ Shared.setDeleteProjects(false);
+ Shared.setCloseProjects(false);
+ // turn off auto building to make sure autobuild does not start a build behind our backs
+ final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ @Test
+ public void cxx_associates_with_c() {
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentType contentType = manager.getContentType("org.eclipse.cdt.core.cxxSource");
+ if (contentType.isAssociatedWith("test.c")) {
+ fail("org.eclipse.cdt.core.cxxSource should not associate with c files");
+
+ }
+ }
+
+ @Test
+ public void cxx_associates_with_cpp() {
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentType contentType = manager.getContentType("org.eclipse.cdt.core.cxxSource");
+ if (!contentType.isAssociatedWith("test.cpp")) {
+ fail("org.eclipse.cdt.core.cxxSource should associate with cpp files");
+
+ }
+ }
+
+ @Test
+ public void cxx_associates_with_C() {
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentType contentType = manager.getContentType("org.eclipse.cdt.core.cxxSource");
+ if (!contentType.isAssociatedWith("test.C")) {
+ fail("org.eclipse.cdt.core.cxxSource should associate with C files");
+
+ }
+ }
+
+ @Test
+ public void cxx_associates_with_CPP() {
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentType contentType = manager.getContentType("org.eclipse.cdt.core.cxxSource");
+ if (contentType.isAssociatedWith("test.CPP")) {
+ fail("org.eclipse.cdt.core.cxxSource should not associate with CPP files");
+
+ }
+ }
+
+ @Test
+ public void c_associates_with_C() {
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentType contentType = manager.getContentType("org.eclipse.cdt.core.cSource");
+ if (contentType.isAssociatedWith("test.C")) {
+ fail("org.eclipse.cdt.core.cxxSource should not associate with CPP files");
+
+ }
+ }
+
+ @Test
+ public void setDescriptionDoesNotSetDescription() throws Exception {
+ String projectName = "setDescription";
+ CoreModel coreModel = CoreModel.getDefault();
+
+ IBuildTools buildTools = IBuildToolsManager.getDefault().getAnyInstalledBuildTools(defaultProjectType);
+ IProject testProject = AutoBuildProject.createProject(projectName, defaultProjectType, defaultNatureID,cpp_exeCodeProvider,
+ buildTools, false, null);
+
+ ICProjectDescription cProjectDesc = CCorePlugin.getDefault().getProjectDescription(testProject, true);
+ for (ICConfigurationDescription curConfig : cProjectDesc.getConfigurations()) {
+ //Set the active configuration
+ cProjectDesc.setActiveConfiguration(curConfig);
+ coreModel.setProjectDescription(testProject, cProjectDesc);
+
+ //get the active configuration from the project
+ ICProjectDescription readProjectDescription = coreModel.getProjectDescription(testProject, false);
+ ICConfigurationDescription actualActiveConfig = readProjectDescription.getActiveConfiguration();
+ //Make sure the active config has been set
+ assertEquals("After project create", curConfig.getName(), actualActiveConfig.getName());
+
+ }
+
+ //open and close the project and try again
+ Thread.sleep(5000);
+ //close the project
+ testProject.close(new NullProgressMonitor());
+ //wait a while
+ Thread.sleep(5000);
+ //open the project
+ testProject.open(new NullProgressMonitor());
+
+ ICProjectDescription cProjectDescOpen = CCorePlugin.getDefault().getProjectDescription(testProject, true);
+ for (ICConfigurationDescription curConfig : cProjectDescOpen.getConfigurations()) {
+ //Set the active configuration
+ cProjectDescOpen.setActiveConfiguration(curConfig);
+ coreModel.setProjectDescription(testProject, cProjectDescOpen);
+
+ //get the active configuration from the project
+ ICProjectDescription readProjectDescription = coreModel.getProjectDescription(testProject, false);
+ ICConfigurationDescription actualActiveConfig = readProjectDescription.getActiveConfiguration();
+ //Make sure the active config has been set
+ assertEquals("After close open", curConfig.getName(), actualActiveConfig.getName());
+
+ }
+
+ }
+
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildRegression.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildRegression.java
new file mode 100644
index 000000000..8dba392f0
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/AutoBuildRegression.java
@@ -0,0 +1,410 @@
+package io.sloeber.autoBuild.regression;
+
+import static io.sloeber.autoBuild.helpers.Defaults.*;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.regex.Pattern;
+import java.util.stream.Stream;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+
+
+import io.sloeber.autoBuild.api.AutoBuildProject;
+import io.sloeber.autoBuild.api.IAutoBuildConfigurationDescription;
+import io.sloeber.autoBuild.api.IAutoBuildMakeRule;
+import io.sloeber.autoBuild.api.IAutoBuildMakeRules;
+import io.sloeber.autoBuild.api.ICodeProvider;
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.buildTools.api.IBuildToolsManager;
+import io.sloeber.autoBuild.extensionPoint.providers.AutoBuildMakeRules;
+import io.sloeber.autoBuild.helpers.Shared;
+import io.sloeber.autoBuild.integration.AutoBuildConfigurationDescription;
+import io.sloeber.autoBuild.integration.AutoBuildManager;
+import io.sloeber.autoBuild.schema.api.IBuilder;
+import io.sloeber.autoBuild.schema.api.IOption;
+import io.sloeber.autoBuild.schema.api.IProjectType;
+import io.sloeber.autoBuild.schema.api.ITool;
+
+@SuppressWarnings({ "static-method", "nls", "boxing" })
+public class AutoBuildRegression {
+ static private String extensionPointID = "io.sloeber.autoBuild.buildDefinitions";
+ static int testCounter = 1;
+
+
+ @BeforeAll
+ public static void beforeAll() throws CoreException {
+ Shared.setDeleteProjects(false);
+ Shared.setCloseProjects(false);
+ // turn off auto building to make sure autobuild does not start a build behind our backs
+ final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription workspaceDesc = workspace.getDescription();
+ workspaceDesc.setAutoBuilding(false);
+ workspace.setDescription(workspaceDesc);
+ }
+
+ /*
+ * Create a project build it
+ * clean it
+ * close it
+ * open it
+ * check wether the configuration is equal
+ * build it
+ *
+ */
+ @ParameterizedTest
+ @MethodSource("OpenCloseValueCmd")
+ public void createCloseOpenProject(String projectName,ICodeProvider codeProvider,String optionID,String optionValue) throws Exception {
+
+
+ IProjectType projectType= AutoBuildManager.getProjectType( extensionPointID, defaultExtensionID, defaultProjectTypeID, true);
+ IBuildTools buildTools = IBuildToolsManager.getDefault().getAnyInstalledBuildTools(projectType);
+ IProject testProject = AutoBuildProject.createProject(projectName, projectType, CCProjectNature.CC_NATURE_ID,
+ codeProvider, buildTools, false, null);
+ IAutoBuildConfigurationDescription beforeChange= IAutoBuildConfigurationDescription.getActiveConfig( testProject,false);
+ CoreModel coreModel = CoreModel.getDefault();
+ ICProjectDescription projectDescription = coreModel.getProjectDescription(testProject, true);
+ ICConfigurationDescription cdtConfig =projectDescription.getActiveConfiguration();
+ IAutoBuildConfigurationDescription origConfig= IAutoBuildConfigurationDescription.getConfig(cdtConfig);
+
+
+ ITool tool = origConfig.getProjectType().getToolChain().getToolFromOptionID(optionID);
+ IOption iOption = tool.getOption(optionID);
+ origConfig.setOptionValue(testProject, iOption, optionValue);
+ coreModel.setProjectDescription(testProject, projectDescription);
+
+
+ IAutoBuildConfigurationDescription beforeClose= IAutoBuildConfigurationDescription.getActiveConfig( testProject,false);
+ assertFalse(beforeClose.equals(beforeChange),"Changed configuration matches unchanged");
+
+ //Build all the configurations and verify proper building
+ Shared.BuildAndVerifyActiveConfig(testProject);
+ //clean all configurations and verify clean has been done properly
+ Shared.cleanProject(testProject);
+
+
+ //close the project
+ testProject.close(new NullProgressMonitor());
+ //wait a while
+ Thread.sleep(2000);
+ //open the project
+ testProject.open(new NullProgressMonitor());
+ IAutoBuildConfigurationDescription afterClose= IAutoBuildConfigurationDescription.getActiveConfig( testProject,false);
+ assertTrue(beforeClose.equals(afterClose),"loaded configuration does not match stored");
+ //Build all the configurations and verify proper building
+ Shared.BuildAndVerifyActiveConfig(testProject);
+ }
+
+ /*
+ * Create a project build it
+ * check whether there is a makefile
+ * if so set internal builder else set external builder
+ * clean it
+ * build
+ * check for makefile existence
+ * clean it
+ * close it
+ * open it
+ * build it
+ * check for makefile existence
+ *
+ */
+
+ @Test
+ public void setBuilder() throws Exception {
+ String projectName = "setBuilder";
+
+ IProjectType projectType= AutoBuildManager.getProjectType( extensionPointID, defaultExtensionID, defaultProjectTypeID, true);
+ IBuildTools buildTools = IBuildToolsManager.getDefault().getAnyInstalledBuildTools(projectType);
+ assertNotNull( buildTools,"no build tools found on the system");
+ IProject testProject = AutoBuildProject.createProject(projectName, projectType, CCProjectNature.CC_NATURE_ID,
+ cpp_exeCodeProvider, buildTools, false, null);
+
+ //Build the active configuration and verify proper building
+ Shared.BuildAndVerifyActiveConfig(testProject);
+
+ ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager();
+ ICProjectDescription projectDescription = mngr.getProjectDescription(testProject, true);
+ IAutoBuildConfigurationDescription activeConfig = IAutoBuildConfigurationDescription
+ .getActiveConfig(projectDescription);
+
+ IFile makeFile = activeConfig.getBuildFolder().getFile("makefile");
+ boolean hasMakefile = makeFile.exists();
+ IBuilder builder=null;
+ if (hasMakefile) {
+ builder=activeConfig.getBuilder(AutoBuildProject.INTERNAL_BUILDER_ID);
+ } else {
+ builder=activeConfig.getBuilder(AutoBuildProject.MAKE_BUILDER_ID);
+ }
+ activeConfig.setBuilder(builder);
+ //clean all configurations and verify clean has been done properly
+ Shared.cleanConfiguration(activeConfig);
+ //do the clean before the builderswitch otherwise the makefile in the buildroot will make the test fail
+ mngr.setProjectDescription(testProject, projectDescription, true, new NullProgressMonitor());
+
+ //Build all the configurations and verify proper building
+ Shared.BuildAndVerifyActiveConfig(testProject);
+
+ assertNotEquals( makeFile.exists(), hasMakefile,"Builder changes have not been taken into account");
+
+ //clean activeConfig and verify clean has been done properly
+ Shared.cleanConfiguration(activeConfig);
+ activeConfig.getBuildFolder().delete(true, new NullProgressMonitor());
+
+ assertFalse( makeFile.exists(),"Clean did not remove makefile");
+
+ //close the project
+ testProject.close(new NullProgressMonitor());
+ //wait a while
+ Thread.sleep(5000);
+ //open the project
+ testProject.open(new NullProgressMonitor());
+ //Build all the configurations and verify proper building
+ Shared.BuildAndVerifyActiveConfig(testProject);
+
+ assertNotEquals( makeFile.exists(), hasMakefile,"Builder changes have been lost in open close projects");
+ }
+
+ static String savePreviousCommand = null;
+ static String savePreviousOptionCommand = null;
+ static String savepreviousOptionID = null;
+
+ @ParameterizedTest
+ @MethodSource("OptionIDValueCmd")
+ void testOptions(String optionID, String optionValue, String commandContribution) throws CoreException {
+ //get the project; create it if nessesary
+ String projectName = "testOptionsProject";
+ IProject testProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ if (testProject == null || !testProject.exists()) {
+ IProjectType projectType= AutoBuildManager.getProjectType( extensionPointID, "io.sloeber.autoBuild.test", "io.sloeber.autoBuild.projectType.test.options", true);
+ IBuildTools buildTools = IBuildToolsManager.getDefault().getAnyInstalledBuildTools(projectType);
+ testProject = AutoBuildProject.createProject(projectName, projectType,
+ CCProjectNature.CC_NATURE_ID, cpp_exeCodeProvider, buildTools, false, null);
+ }
+
+ //get the project and autobuild configurations
+ CoreModel coreModel = CoreModel.getDefault();
+ ICProjectDescription projectDescription = coreModel.getProjectDescription(testProject, true);
+ AutoBuildConfigurationDescription autoConf = (AutoBuildConfigurationDescription) IAutoBuildConfigurationDescription
+ .getActiveConfig(projectDescription);
+
+ //get the tool and option
+ ITool tool = autoConf.getProjectType().getToolChain().getToolFromOptionID(optionID);
+ IOption iOption = tool.getOption(optionID);
+
+ //If the statics are null initialize them
+ if (savePreviousCommand == null) {
+ savePreviousCommand = getTheCompileCommand(autoConf, tool).trim();
+ savePreviousOptionCommand = savePreviousCommand;
+ savepreviousOptionID = optionID;
+ }
+
+ if (!savepreviousOptionID.equals(optionID)) {
+ savePreviousOptionCommand = savePreviousCommand;
+ savepreviousOptionID = optionID;
+ }
+
+ autoConf.setOptionValue(testProject, iOption, optionValue);
+ coreModel.setProjectDescription(testProject, projectDescription);
+
+ String CurrentCommand = getTheCompileCommand(autoConf, tool).trim();
+ String previousCommand = savePreviousOptionCommand;
+ savePreviousCommand = CurrentCommand;
+ if (commandContribution.isBlank()) {
+ if (previousCommand.equals(CurrentCommand) == false) {
+ getTheCompileCommand(autoConf, tool);
+ }
+ assertTrue(previousCommand.equals(CurrentCommand),
+ "option is not consistent " + CurrentCommand + " " + previousCommand);
+ } else {
+ String[] parts = CurrentCommand.split(Pattern.quote(" " + commandContribution + " "));
+ if (parts.length != 2) {
+ getTheCompileCommand(autoConf, tool);
+ }
+ assertTrue( parts.length == 2,"option contribution did not appear " + CurrentCommand);
+ assertTrue( parts.length < 3,"option contribution appeard multiple times in command " + CurrentCommand);
+ String reGlued = parts[0] + " " + parts[1];
+ if (!previousCommand.equals(reGlued)) {
+ fail("option is not consistent " + CurrentCommand + " " + previousCommand);
+ }
+ }
+
+ }
+
+ private String getTheCompileCommand(AutoBuildConfigurationDescription autoData, ITool iTool) throws CoreException {
+ IFolder buildRoot = autoData.getBuildFolder();
+
+ //Generate the make Rules
+ IAutoBuildMakeRules myMakeRules = new AutoBuildMakeRules(autoData);
+ for (IAutoBuildMakeRule curRule : myMakeRules) {
+ if (curRule.getTool().equals(iTool)) {
+ if (curRule.getTargetFiles().size() == 1) {
+ return curRule.getRecipes(buildRoot, autoData)[0];
+ }
+ }
+ }
+ return null;
+ }
+
+ static Stream OptionIDValueCmd() {
+ List ret = new LinkedList<>();
+ ret.add(Arguments.of("gnu.cpp.compiler.option.dialect.std", "gnu.cpp.compiler.dialect.default", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.dialect.std", "gnu.cpp.compiler.dialect.c++98", "-std=c++98"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.dialect.std", "gnu.cpp.compiler.dialect.c++11", "-std=c++0x"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.dialect.std", "gnu.cpp.compiler.dialect.c++1y", "-std=c++1y"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.dialect.std", "gnu.cpp.compiler.dialect.c++17", "-std=c++17"));
+
+ ret.add(Arguments.of("gnu.cpp.compiler.option.dialect.flags", "a flag", "a flag"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.preprocessor.nostdinc", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.preprocessor.nostdinc", "true", "-nostdinc"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.preprocessor.preprocess", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.preprocessor.preprocess", "true", "-E"));
+
+ ret.add(Arguments.of("gnu.cpp.compiler.option.preprocessor.def", "Define1;Define2", "-DDefine1 -DDefine2"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.preprocessor.undef", "UnDefine1;UnDefine2",
+ "-UUnDefine1 -UUnDefine2"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.include.paths", "c:\\includePath1;/root/includePath2",
+ "-Ic:\\includePath1 -I/root/includePath2"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.include.files", "c:\\includeFile1;/root/includeFile2",
+ "-includec:\\includeFile1 -include/root/includeFile2"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.optimization.level", "gnu.cpp.compiler.optimization.level.none",
+ "-O0"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.optimization.level",
+ "gnu.cpp.compiler.optimization.level.optimize", "-O1"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.optimization.level", "gnu.cpp.compiler.optimization.level.more",
+ "-O2"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.optimization.level", "gnu.cpp.compiler.optimization.level.most",
+ "-O3"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.optimization.level", "gnu.cpp.compiler.optimization.level.size",
+ "-Os"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.optimization.flags", "optimize flags", "optimize flags"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.level", "gnu.cpp.compiler.debugging.level.none", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.level", "gnu.cpp.compiler.debugging.level.minimal",
+ "-g1"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.level", "gnu.cpp.compiler.debugging.level.default",
+ "-g"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.level", "gnu.cpp.compiler.debugging.level.max", "-g3"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.other", "debug other", "debug other"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.prof", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.prof", "true", "-p"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.gprof", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.gprof", "true", "-pg"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.codecov", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.codecov", "true", "-ftest-coverage -fprofile-arcs"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitaddress", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitaddress", "true", "-fsanitize=address"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitpointers", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitpointers", "true",
+ "-fsanitize=pointer-compare -fsanitize=pointer-subtract"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitthread", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitthread", "true", "-fsanitize=thread"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitleak", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitleak", "true", "-fsanitize=leak"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitundef", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.debugging.sanitundef", "true", "-fsanitize=undefined"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.syntax", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.syntax", "true", "-fsyntax-only"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.pedantic", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.pedantic", "true", "-pedantic"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.pedantic.error", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.pedantic.error", "true", "-pedantic-errors"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.nowarn", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.nowarn", "true", "-w"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.allwarn", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.allwarn", "true", "-Wall"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.extrawarn", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.extrawarn", "true", "-Wextra"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.toerrors", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.toerrors", "true", "-Werror"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wconversion", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wconversion", "true", "-Wconversion"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wcastalign", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wcastalign", "true", "-Wcast-align"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wcastqual", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wcastqual", "true", "-Wcast-qual"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wctordtorprivacy", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wctordtorprivacy", "true", "-Wctor-dtor-privacy"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wdisabledopt", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wdisabledopt", "true", "-Wdisabled-optimization"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wlogicalop", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wlogicalop", "true", "-Wlogical-op"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wmissingdecl", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wmissingdecl", "true", "-Wmissing-declarations"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wmissingincdir", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wmissingincdir", "true", "-Wmissing-include-dirs"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wnoexccept", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wnoexccept", "true", "-Wnoexcept"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.woldstylecast", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.woldstylecast", "true", "-Wold-style-cast"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.woverloadedvirtual", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.woverloadedvirtual", "true", "-Woverloaded-virtual"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wredundantdecl", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wredundantdecl", "true", "-Wredundant-decls"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wshadow", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wshadow", "true", "-Wshadow"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wsignconv", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wsignconv", "true", "-Wsign-conversion"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wsignpromo", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wsignpromo", "true", "-Wsign-promo"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wstrictnullsent", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wstrictnullsent", "true", "-Wstrict-null-sentinel"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wswitchdef", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wswitchdef", "true", "-Wswitch-default"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wundef", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wundef", "true", "-Wundef"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.weffcpp", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.weffcpp", "true", "-Weffc++"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wfloatequal", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.warnings.wfloatequal", "true", "-Wfloat-equal"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.other.verbose", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.other.verbose", "true", "-v"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.other.pic", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.other.pic", "true", "-fPIC"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.misc.hardening", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.misc.hardening", "true",
+ "-fstack-protector-all -Wformat=2 -Wformat-security -Wstrict-overflow"));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.misc.randomization", "false", ""));
+ ret.add(Arguments.of("gnu.cpp.compiler.option.misc.randomization", "true", "-fPIE"));
+ // ret.add(Arguments.of("gddddddddddddddddnu", "true", ""));
+ // ret.add(Arguments.of("gddddddddddddddddnu", "false", "dddtddddddddddddd7"));
+ // ret.add(Arguments.of("gddddddddddddddddnu", "true", ""));
+ // ret.add(Arguments.of("gddddddddddddddddnu", "false", "dddtddddddddddddd7"));
+
+ return ret.stream();
+ }
+
+
+ static Stream OpenCloseValueCmd() {
+ ICodeProvider cpp_exeCodeProvider_inRoot=cpp_exeCodeProvider.createCopy();
+ ICodeProvider cpp_exeCodeProvider_inxxFolder=cpp_exeCodeProvider.createCopy();
+ ICodeProvider cpp_exeCodeProvider_srcFolder=cpp_exeCodeProvider.createCopy();
+ cpp_exeCodeProvider_inRoot.setCodeFolder(null);
+ cpp_exeCodeProvider_inxxFolder.setCodeFolder("xx");
+ cpp_exeCodeProvider_srcFolder.setCodeFolder("src");
+ List ret = new LinkedList<>();
+ ret.add(Arguments.of("createCloseOpenProjectRoot",cpp_exeCodeProvider_inRoot,"gnu.c.compiler.option.warnings.extrawarn", "true"));
+ ret.add(Arguments.of("createCloseOpenProjectXX",cpp_exeCodeProvider_inxxFolder,"gnu.cpp.compiler.option.other.pic", "true"));
+ ret.add(Arguments.of("createCloseOpenProjectSrc",cpp_exeCodeProvider_srcFolder,"gnu.cpp.compiler.option.other.verbose", "true"));
+
+ return ret.stream();
+ }
+
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/BuildTests.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/BuildTests.java
new file mode 100644
index 000000000..58385022a
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuild/regression/BuildTests.java
@@ -0,0 +1,14 @@
+package io.sloeber.autoBuild.regression;
+
+import org.junit.platform.suite.api.SelectClasses;
+
+import org.junit.platform.suite.api.Suite;
+import org.junit.platform.suite.api.SuiteDisplayName;
+
+
+@SuiteDisplayName("AutoBuild Nightly suite")
+@SelectClasses ({AutoBuildCreateBasicProjects.class,AutoBuildCreateProject.class,AutoBuildRegression.class})
+@Suite
+public class BuildTests {
+//nothing needs to be done here
+}
diff --git a/io.sloeber.autoBuild.test/src/io/sloeber/autoBuilld/jUnit/TestCommands.java b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuilld/jUnit/TestCommands.java
new file mode 100644
index 000000000..549354a11
--- /dev/null
+++ b/io.sloeber.autoBuild.test/src/io/sloeber/autoBuilld/jUnit/TestCommands.java
@@ -0,0 +1,37 @@
+package io.sloeber.autoBuilld.jUnit;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import io.sloeber.autoBuild.extensionPoint.providers.InternalBuildRunner;
+
+@SuppressWarnings({ "nls", "static-method" })
+public class TestCommands {
+
+ @ParameterizedTest
+ @MethodSource("windowsCommandSplitterData")
+ public void testWindowsCommandSplitter(String command, String[] args) {
+ String[] calcedArgs = InternalBuildRunner.argumentsToArrayWindowsStyle(command);
+ assertArrayEquals(args, calcedArgs);
+ }
+
+ public static Stream windowsCommandSplitterData() throws Exception {
+ List ret = new LinkedList<>();
+ ret.add(Arguments.of("cmd -a -b", new String[] { "cmd", "-a", "-b" }));
+ ret.add(Arguments.of("\"cmd\" '-a' \"-b\"", new String[] { "\"cmd\"", "-a", "\"-b\"" }));
+ ret.add(Arguments.of("cmd \"-a=f f\" -b", new String[] { "cmd", "\"-a=f f\"", "-b" }));
+ ret.add(Arguments.of("cmd '\"-a=f f\"' -b", new String[] { "cmd", "\"-a=f f\"", "-b" }));
+ ret.add(Arguments.of("cmd \"-a=\\\"f f\\\"\" -b", new String[] { "cmd", "\"-a=\\\"f f\\\"\"", "-b" }));
+ ret.add(Arguments.of("C:/MinGW64/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/bin/gcc -c -fmessage-length=0 -O3 -Wall -MMD -MP -MF\"src/libraries/c with space/cExtra.d\" -MT\"src/libraries/c with space/cExtra.o\" -o \"src/libraries/c with space/cExtra.o\" \"../../src/libraries/c with space/cExtra.c\" ", new String[] { "C:/MinGW64/x86_64-8.1.0-release-posix-seh-rt_v6-rev0/bin/gcc", "-c", "-fmessage-length=0", "-O3" ,"-Wall", "-MMD" ,"-MP", "-MF\"src/libraries/c with space/cExtra.d\"" ,"-MT\"src/libraries/c with space/cExtra.o\"" ,"-o" ,"\"src/libraries/c with space/cExtra.o\"" ,"\"../../src/libraries/c with space/cExtra.c\"" }));
+ return ret.stream();
+
+ }
+
+}
diff --git a/io.sloeber.autoBuild.test/templates/c_exe/cExtra.c b/io.sloeber.autoBuild.test/templates/c_exe/cExtra.c
new file mode 100644
index 000000000..75445d2fb
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_exe/cExtra.c
@@ -0,0 +1,3 @@
+#include "cExtra.h"
+void cExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/c_exe/cExtra.h b/io.sloeber.autoBuild.test/templates/c_exe/cExtra.h
new file mode 100644
index 000000000..f3b2654ca
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_exe/cExtra.h
@@ -0,0 +1,3 @@
+void cExtraMethod();
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/c_exe/cExtra2.c b/io.sloeber.autoBuild.test/templates/c_exe/cExtra2.c
new file mode 100644
index 000000000..a010cf81b
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_exe/cExtra2.c
@@ -0,0 +1,3 @@
+#include "cExtra2.h"
+void cppExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/c_exe/cExtra2.h b/io.sloeber.autoBuild.test/templates/c_exe/cExtra2.h
new file mode 100644
index 000000000..8b37bf826
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_exe/cExtra2.h
@@ -0,0 +1 @@
+void cppExtraMethod();
diff --git a/io.sloeber.autoBuild.test/templates/c_exe/main.c b/io.sloeber.autoBuild.test/templates/c_exe/main.c
new file mode 100644
index 000000000..89f24c8a1
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_exe/main.c
@@ -0,0 +1,7 @@
+#include "main.h"
+
+
+int main() {
+ cppExtraMethod();
+ cExtraMethod();
+}
diff --git a/io.sloeber.autoBuild.test/templates/c_exe/main.h b/io.sloeber.autoBuild.test/templates/c_exe/main.h
new file mode 100644
index 000000000..d09a9a1bd
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_exe/main.h
@@ -0,0 +1,2 @@
+#include "cExtra.h"
+#include "cExtra2.h"
diff --git a/io.sloeber.autoBuild.test/templates/c_lib/cExtra.c b/io.sloeber.autoBuild.test/templates/c_lib/cExtra.c
new file mode 100644
index 000000000..75445d2fb
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_lib/cExtra.c
@@ -0,0 +1,3 @@
+#include "cExtra.h"
+void cExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/c_lib/cExtra.h b/io.sloeber.autoBuild.test/templates/c_lib/cExtra.h
new file mode 100644
index 000000000..a598f9599
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_lib/cExtra.h
@@ -0,0 +1,4 @@
+
+void cExtraMethod();
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/c_lib/cExtra2.h b/io.sloeber.autoBuild.test/templates/c_lib/cExtra2.h
new file mode 100644
index 000000000..8b37bf826
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_lib/cExtra2.h
@@ -0,0 +1 @@
+void cppExtraMethod();
diff --git a/io.sloeber.autoBuild.test/templates/c_lib/cppExtra2.c b/io.sloeber.autoBuild.test/templates/c_lib/cppExtra2.c
new file mode 100644
index 000000000..a010cf81b
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/c_lib/cppExtra2.c
@@ -0,0 +1,3 @@
+#include "cExtra2.h"
+void cppExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/cExtra Exe.c b/io.sloeber.autoBuild.test/templates/compound/cExtra Exe.c
new file mode 100644
index 000000000..b754fd2d1
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/cExtra Exe.c
@@ -0,0 +1,3 @@
+#include "cExtra Exe.h"
+void cExtraExeMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/cExtra Exe.h b/io.sloeber.autoBuild.test/templates/compound/cExtra Exe.h
new file mode 100644
index 000000000..3e9dfe2a5
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/cExtra Exe.h
@@ -0,0 +1,11 @@
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void cExtraExeMethod();
+#ifdef __cplusplus
+}
+#endif
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/compound/cppExtraExe.cpp b/io.sloeber.autoBuild.test/templates/compound/cppExtraExe.cpp
new file mode 100644
index 000000000..e5c3098f0
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/cppExtraExe.cpp
@@ -0,0 +1,3 @@
+#include "cppExtraExe.h"
+void cppExtraExeMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/cppExtraExe.h b/io.sloeber.autoBuild.test/templates/compound/cppExtraExe.h
new file mode 100644
index 000000000..0d616f434
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/cppExtraExe.h
@@ -0,0 +1 @@
+void cppExtraExeMethod();
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/c.h b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/c.h
new file mode 100644
index 000000000..d09a9a1bd
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/c.h
@@ -0,0 +1,2 @@
+#include "cExtra.h"
+#include "cExtra2.h"
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra.c b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra.c
new file mode 100644
index 000000000..75445d2fb
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra.c
@@ -0,0 +1,3 @@
+#include "cExtra.h"
+void cExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra.h b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra.h
new file mode 100644
index 000000000..a46c5dcdf
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra.h
@@ -0,0 +1,11 @@
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void cExtraMethod();
+#ifdef __cplusplus
+}
+#endif
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra2.c b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra2.c
new file mode 100644
index 000000000..aefb18153
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra2.c
@@ -0,0 +1,3 @@
+#include "cExtra2.h"
+void cExtra2Method() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra2.h b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra2.h
new file mode 100644
index 000000000..bf4b7d4da
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/c with space/cExtra2.h
@@ -0,0 +1,11 @@
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void cExtra2Method();
+#ifdef __cplusplus
+}
+#endif
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp Extra.cpp b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp Extra.cpp
new file mode 100644
index 000000000..e1bf637d4
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp Extra.cpp
@@ -0,0 +1,3 @@
+#include "cpp Extra.h"
+void cppExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp Extra.h b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp Extra.h
new file mode 100644
index 000000000..8b37bf826
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp Extra.h
@@ -0,0 +1 @@
+void cppExtraMethod();
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp.h b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp.h
new file mode 100644
index 000000000..9f05c49de
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cpp.h
@@ -0,0 +1,2 @@
+#include "cpp Extra.h"
+#include "cppExtra2.h"
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cppExtra2.cpp b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cppExtra2.cpp
new file mode 100644
index 000000000..c415b58cd
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cppExtra2.cpp
@@ -0,0 +1,3 @@
+#include "cpp Extra.h"
+void cppExtra2Method() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cppExtra2.h b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cppExtra2.h
new file mode 100644
index 000000000..69f32f219
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/cppExtra2.h
@@ -0,0 +1 @@
+void cppExtra2Method();
diff --git a/it.baeyens.arduino.core/config/pre_processing_boards_default.txt b/io.sloeber.autoBuild.test/templates/compound/libraries/cpp/dynamic
similarity index 100%
rename from it.baeyens.arduino.core/config/pre_processing_boards_default.txt
rename to io.sloeber.autoBuild.test/templates/compound/libraries/cpp/dynamic
diff --git a/io.sloeber.autoBuild.test/templates/compound/main.cpp b/io.sloeber.autoBuild.test/templates/compound/main.cpp
new file mode 100644
index 000000000..72e655dfa
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/main.cpp
@@ -0,0 +1,10 @@
+#include "main.h"
+
+int main() {
+ cppExtraMethod();
+ cExtraMethod();
+ cppExtra2Method();
+ cExtra2Method();
+ cppExtraExeMethod();
+ cExtraExeMethod();
+}
diff --git a/io.sloeber.autoBuild.test/templates/compound/main.h b/io.sloeber.autoBuild.test/templates/compound/main.h
new file mode 100644
index 000000000..9c044bd4e
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/compound/main.h
@@ -0,0 +1,4 @@
+#include "libraries/cpp/cpp.h"
+#include "libraries/c with space/c.h"
+#include "cppExtraExe.h"
+#include "cExtra Exe.h"
diff --git a/io.sloeber.autoBuild.test/templates/exe/cExtra.c b/io.sloeber.autoBuild.test/templates/exe/cExtra.c
new file mode 100644
index 000000000..75445d2fb
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/exe/cExtra.c
@@ -0,0 +1,3 @@
+#include "cExtra.h"
+void cExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/exe/cExtra.h b/io.sloeber.autoBuild.test/templates/exe/cExtra.h
new file mode 100644
index 000000000..a46c5dcdf
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/exe/cExtra.h
@@ -0,0 +1,11 @@
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void cExtraMethod();
+#ifdef __cplusplus
+}
+#endif
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/exe/cppExtra.cpp b/io.sloeber.autoBuild.test/templates/exe/cppExtra.cpp
new file mode 100644
index 000000000..4943cc24a
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/exe/cppExtra.cpp
@@ -0,0 +1,3 @@
+#include "cppExtra.h"
+void cppExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/exe/cppExtra.h b/io.sloeber.autoBuild.test/templates/exe/cppExtra.h
new file mode 100644
index 000000000..8b37bf826
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/exe/cppExtra.h
@@ -0,0 +1 @@
+void cppExtraMethod();
diff --git a/io.sloeber.autoBuild.test/templates/exe/main.cpp b/io.sloeber.autoBuild.test/templates/exe/main.cpp
new file mode 100644
index 000000000..c760e1bc1
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/exe/main.cpp
@@ -0,0 +1,8 @@
+#include "main.h"
+#include "cppExtra.h"
+#include "cExtra.h"
+
+int main() {
+ cppExtraMethod();
+ cExtraMethod();
+}
diff --git a/it.baeyens.arduino.product/bin/empty.txt b/io.sloeber.autoBuild.test/templates/exe/main.h
similarity index 100%
rename from it.baeyens.arduino.product/bin/empty.txt
rename to io.sloeber.autoBuild.test/templates/exe/main.h
diff --git a/io.sloeber.autoBuild.test/templates/lib/cExtra.c b/io.sloeber.autoBuild.test/templates/lib/cExtra.c
new file mode 100644
index 000000000..75445d2fb
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/lib/cExtra.c
@@ -0,0 +1,3 @@
+#include "cExtra.h"
+void cExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/lib/cExtra.h b/io.sloeber.autoBuild.test/templates/lib/cExtra.h
new file mode 100644
index 000000000..a46c5dcdf
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/lib/cExtra.h
@@ -0,0 +1,11 @@
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+void cExtraMethod();
+#ifdef __cplusplus
+}
+#endif
+
+#pragma once
diff --git a/io.sloeber.autoBuild.test/templates/lib/cppExtra.cpp b/io.sloeber.autoBuild.test/templates/lib/cppExtra.cpp
new file mode 100644
index 000000000..4943cc24a
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/lib/cppExtra.cpp
@@ -0,0 +1,3 @@
+#include "cppExtra.h"
+void cppExtraMethod() {
+}
diff --git a/io.sloeber.autoBuild.test/templates/lib/cppExtra.h b/io.sloeber.autoBuild.test/templates/lib/cppExtra.h
new file mode 100644
index 000000000..8b37bf826
--- /dev/null
+++ b/io.sloeber.autoBuild.test/templates/lib/cppExtra.h
@@ -0,0 +1 @@
+void cppExtraMethod();
diff --git a/io.sloeber.autoBuild.ui/.classpath b/io.sloeber.autoBuild.ui/.classpath
new file mode 100644
index 000000000..35386b94b
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/.classpath
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.ui/.gitignore b/io.sloeber.autoBuild.ui/.gitignore
new file mode 100644
index 000000000..93806e405
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
diff --git a/io.sloeber.autoBuild.ui/.project b/io.sloeber.autoBuild.ui/.project
new file mode 100644
index 000000000..d50410c1e
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/.project
@@ -0,0 +1,28 @@
+
+
+ io.sloeber.autoBuild.ui
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/io.sloeber.autoBuild.ui/.settings/org.eclipse.core.resources.prefs b/io.sloeber.autoBuild.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..99f26c020
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/io.sloeber.autoBuild.ui/.settings/org.eclipse.core.runtime.prefs b/io.sloeber.autoBuild.ui/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 000000000..5a0ad22d2
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/io.sloeber.autoBuild.ui/.settings/org.eclipse.jdt.core.prefs b/io.sloeber.autoBuild.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..23fa13b17
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
+org.eclipse.jdt.core.compiler.compliance=21
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=21
diff --git a/io.sloeber.autoBuild.ui/META-INF/MANIFEST.MF b/io.sloeber.autoBuild.ui/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..60e7d1c63
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,53 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Sloeber auto build user interface
+Bundle-SymbolicName: io.sloeber.autoBuild.ui;singleton:=true
+Bundle-Version: 5.0.0.qualifier
+Require-Bundle: org.eclipse.tools.templates.ui,
+ org.eclipse.osgi,
+ org.eclipse.cdt.core;bundle-version="7.4.200",
+ org.eclipse.core.runtime;bundle-version="3.26.0",
+ org.eclipse.swt;bundle-version="3.121.0",
+ org.eclipse.jface;bundle-version="3.27.0",
+ org.eclipse.ui;bundle-version="3.201.100",
+ org.eclipse.ui.ide;bundle-version="3.19.100",
+ org.eclipse.tools.templates.freemarker;bundle-version="1.2.300",
+ org.eclipse.core.resources,
+ org.eclipse.cdt.ui,
+ org.eclipse.core.filesystem,
+ io.sloeber.autoBuild;bundle-version="4.4.1",
+ org.eclipse.tools.templates.core;bundle-version="2.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-21
+Bundle-Vendor: Sloeber.io
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: io.sloeber.autoBuild.ui.internal.Activator
+Automatic-Module-Name: io.sloeber.core
+Export-Package: io.sloeber.autoBuild.integrations;
+ uses:="org.eclipse.swt.graphics,
+ org.eclipse.swt.widgets,
+ org.eclipse.ui.dialogs,
+ org.eclipse.cdt.internal.ui.wizards,
+ org.eclipse.jface.dialogs,
+ org.eclipse.jface.wizard,
+ org.eclipse.jface.viewers,
+ org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.cdt.core.cdtvariables,
+ org.eclipse.cdt.ui.wizards,
+ org.eclipse.jface.resource,
+ org.eclipse.tools.templates.core,
+ org.eclipse.cdt.core.settings.model,
+ org.eclipse.core.resources,
+ org.eclipse.tools.templates.ui,
+ org.eclipse.ui.wizards.newresource",
+ io.sloeber.autoBuild.ui.internal;x-internal:=true,
+ io.sloeber.autoBuild.ui.pages;uses:="org.eclipse.cdt.ui.newui",
+ io.sloeber.autoBuild.ui.tabs;
+ uses:="io.sloeber.schema.api,
+ org.eclipse.cdt.ui.newui,
+ org.eclipse.swt.widgets,
+ org.eclipse.jface.preference,
+ org.eclipse.cdt.core.settings.model,
+ org.eclipse.core.resources,
+ io.sloeber.autoBuild.api,
+ org.eclipse.jface.viewers"
diff --git a/io.sloeber.autoBuild.ui/OSGI-INF/l10n/bundle.properties b/io.sloeber.autoBuild.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 000000000..2a30c41d0
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,121 @@
+page.c.build=C/C++ Build
+CDTVariablesProperty.name=Build Variables
+Environment=Environment
+Builder.settings=Builder Settings
+WBB.settings=Behaviour
+Refresh.policy=Refresh Policy
+EnvironmentTab.name = (Single) Environment
+CPropertyVarsTab.name = (Single) CDT Vars (macros)
+toolchain.settings=Tool parameter Settings
+ProjectSettingsTab.name=Project output Settings
+CDTProjectProperty.name=Tool chain Settings
+Tool.Manager.Tab=Build Tool Manager
+Project.settings.tooltip=Use this tab to change the project type of this configuration
+Tool.Manager.tooltip=Use this tab to change the tools used to build the project
+
+Tool.settings=Tool Settings
+Build.steps=Build Steps
+Binary.parsers=Binary Parsers
+Error.parsers=Error Parsers
+
+Team.name=Team
+
+
+category.build.name=C/C++ Build
+category.build.description= C/C++ Build Actions
+
+# The property pages
+MngBuildProp.name=C/C++ Build
+MngOtherProp.name= Error/Binary Parsers
+
+# The preference pages
+MakeBuildPref.name=Makefile Project
+MngBuildPref.name=Managed Build
+NewCDTWizardPref.name=New C/C++ Project Wizard
+varsPrefName=Build Variables
+envPrefName=Environment
+propSettingsPrefName=Property Pages Settings
+
+# The Resource Property page
+MngResourceProp.name=C/C++ Build
+
+# Build/clean commands and the corresponding menu items.
+command.buildFiles.label=Build Selected &File(s)
+command.buildFiles.name=Build Selected File(s)
+command.buildFiles.description=Rebuilds the selected source files
+command.cleanFiles.label=C&lean Selected File(s)
+command.cleanFiles.name=Clean Selected File(s)
+command.cleanFiles.description=Deletes build output files for the selected source files
+command.buildAllConfigurations.label=Build All
+command.buildAllConfigurations.name=Build All Configurations
+command.cleanAllConfigurations.label=Clean All
+command.cleanAllConfigurations.name=Clean All Configurations
+command.rebuildConfigurations.label=Build Selected...
+command.rebuildConfigurations.name=Build Selected Configurations
+
+# The Project Converter page
+command.convertTarget.label=Convert To...
+command.convertTarget.name=Convert To
+
+# New CDT project model - property pages names
+page.c.build=C/C++ Build
+PathSymbolsProperty.name=Paths and Symbols
+CDTExpPathSymbolsProperty.name=Export Settings
+CDTBuildProperty.name=Settings
+CDTToolchainProperty.name=Tool Chain Editor
+CDTToolchainProperty.keyword.toolchain1=toolchain
+CDTToolchainProperty.keyword.toolchain2=tool chain
+CDTVariablesProperty.name=Build Variables
+Discovery.options=Discovery Options
+Environment=Environment
+
+Build.System.Wizard=Build System Wizard
+Make.Project.Wizard=Make Project Wizard
+
+MBS.create.configuration=Create New Configuration
+
+WizardConvertMakeProject.name=Convert to a C/C++ Project (Adds C/C++ Nature)
+WizardConvertMakeProject.description=Convert to a C/C++ Project
+
+WizardMakeProjFromExisting.name=Existing Code as Makefile Project
+WizardMakeProjFromExisting.description=Create a new Makefile project in a directory containing existing code
+
+NewMakeFromExisting.name=Makefile Project with Existing Code
+
+Tool.settings=Tool Settings
+Build.steps=Build Steps
+Build.artifact=Build Artifact
+Builder.settings=Builder Settings
+WBB.settings=Behavior
+Refresh.policy=Refresh Policy
+Includes=Includes
+Includes.tooltip=Includes list
+IncludeFiles=Include Files
+IncludeFiles.tooltip=Include Files list
+Symbols=Symbols
+Symbols.tooltip=Macros list
+Libraries=Libraries
+Libraries.tooltip=Libraries list
+Library.paths=Library Paths
+References=References
+Source.location=Source Location
+Output.location=Output Location
+Binary.parsers=Binary Parsers
+Error.parsers=Error Parsers
+Data.hierarchy=Data Hierarchy
+Preferred.toolchains=Preferred Toolchains
+Wizard.defaults=Wizard Defaults
+PropertyPage.defaults=Property Page Settings
+MBSPerProjectProfile.name=Managed Build System - per project scanner info profile
+multicfg=Multiple Configurations Edit
+
+DiscoveryTab.name = (Single) Discovery Options
+CPropertyVarsTab.name = (Single) CDT Vars (macros)
+ToolChainEditTab.name = (Single) Tool chain edit
+EnvironmentTab.name = (Single) Environment
+
+# menu labels
+Configurations.menu=Build Configurations
+
+buildDefinitionsUI.ep.name = Build Definitions UI
+extension-point.name = Custom MBS New Wizard Pages
diff --git a/io.sloeber.autoBuild.ui/build.properties b/io.sloeber.autoBuild.ui/build.properties
new file mode 100644
index 000000000..b89543b23
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+ plugin.xml,\
+ plugin.properties,\
+ META-INF/,\
+ OSGI-INF/,\
+ OSGI-INF/l10n/bundle.properties,\
+ icons/
+jars.compile.order = .
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/action-buildconfig.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/action-buildconfig.gif
new file mode 100644
index 000000000..f0404659b
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/action-buildconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/action-deleteconfig.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/action-deleteconfig.gif
new file mode 100644
index 000000000..0883ade29
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/action-deleteconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/action-editconfig.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/action-editconfig.gif
new file mode 100644
index 000000000..179b657e2
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/action-editconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/action-newconfig.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/action-newconfig.gif
new file mode 100644
index 000000000..ea3c1377e
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/action-newconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/build_configs.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/build_configs.gif
new file mode 100644
index 000000000..4539ebd91
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/build_configs.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-category.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-category.gif
new file mode 100644
index 000000000..cd837b147
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-category.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-compiler.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-compiler.gif
new file mode 100644
index 000000000..906f442c4
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-compiler.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-debug.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-debug.gif
new file mode 100644
index 000000000..788601256
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-debug.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-librarian.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-librarian.gif
new file mode 100644
index 000000000..0e6ec9624
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-librarian.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-linker.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-linker.gif
new file mode 100644
index 000000000..34b228e7b
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-linker.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-preprocessor.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-preprocessor.gif
new file mode 100644
index 000000000..5bfadbc9c
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-preprocessor.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-profile.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-profile.gif
new file mode 100644
index 000000000..4539ebd91
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-profile.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-release.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-release.gif
new file mode 100644
index 000000000..439138bec
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-release.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/config-tool.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/config-tool.gif
new file mode 100644
index 000000000..4539ebd91
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/config-tool.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/list-add.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/list-add.gif
new file mode 100644
index 000000000..5ee82b45c
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/list-add.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/list-delete.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/list-delete.gif
new file mode 100644
index 000000000..5fd7e2d44
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/list-delete.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/list-edit.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/list-edit.gif
new file mode 100644
index 000000000..371897285
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/list-edit.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/list-movedown.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/list-movedown.gif
new file mode 100644
index 000000000..d2866389e
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/list-movedown.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/list-moveup.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/list-moveup.gif
new file mode 100644
index 000000000..f8440c816
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/list-moveup.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/newmngc_app.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/newmngc_app.gif
new file mode 100644
index 000000000..a8353f637
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/newmngc_app.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/newmngcc_app.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/newmngcc_app.gif
new file mode 100644
index 000000000..9ed7487c2
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/newmngcc_app.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/dlcl16/read_only.gif b/io.sloeber.autoBuild.ui/icons/dlcl16/read_only.gif
new file mode 100644
index 000000000..dde3cbd61
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/dlcl16/read_only.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/action-buildconfig.gif b/io.sloeber.autoBuild.ui/icons/elcl16/action-buildconfig.gif
new file mode 100644
index 000000000..c4c76d000
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/action-buildconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/action-deleteconfig.gif b/io.sloeber.autoBuild.ui/icons/elcl16/action-deleteconfig.gif
new file mode 100644
index 000000000..3986a4bc4
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/action-deleteconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/action-editconfig.gif b/io.sloeber.autoBuild.ui/icons/elcl16/action-editconfig.gif
new file mode 100644
index 000000000..cc28a3a42
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/action-editconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/action-newconfig.gif b/io.sloeber.autoBuild.ui/icons/elcl16/action-newconfig.gif
new file mode 100644
index 000000000..0ebc0dfe3
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/action-newconfig.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/build_configs.gif b/io.sloeber.autoBuild.ui/icons/elcl16/build_configs.gif
new file mode 100644
index 000000000..c984fba70
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/build_configs.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/built_in.gif b/io.sloeber.autoBuild.ui/icons/elcl16/built_in.gif
new file mode 100644
index 000000000..b51281b2a
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/built_in.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-category.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-category.gif
new file mode 100644
index 000000000..ee7c48524
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-category.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-compiler.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-compiler.gif
new file mode 100644
index 000000000..39ee59207
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-compiler.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-debug.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-debug.gif
new file mode 100644
index 000000000..aef2061e5
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-debug.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-librarian.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-librarian.gif
new file mode 100644
index 000000000..cb55e33b5
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-librarian.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-linker.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-linker.gif
new file mode 100644
index 000000000..fe5d5595c
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-linker.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-preprocessor.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-preprocessor.gif
new file mode 100644
index 000000000..cf62b63ae
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-preprocessor.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-profile.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-profile.gif
new file mode 100644
index 000000000..c984fba70
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-profile.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-release.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-release.gif
new file mode 100644
index 000000000..fa1765ec5
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-release.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/config-tool.gif b/io.sloeber.autoBuild.ui/icons/elcl16/config-tool.gif
new file mode 100644
index 000000000..c984fba70
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/config-tool.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/discovery.gif b/io.sloeber.autoBuild.ui/icons/elcl16/discovery.gif
new file mode 100644
index 000000000..ec6cca452
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/discovery.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/editable.gif b/io.sloeber.autoBuild.ui/icons/elcl16/editable.gif
new file mode 100644
index 000000000..c34076a12
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/editable.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/list-add.gif b/io.sloeber.autoBuild.ui/icons/elcl16/list-add.gif
new file mode 100644
index 000000000..45c0e6077
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/list-add.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/list-delete.gif b/io.sloeber.autoBuild.ui/icons/elcl16/list-delete.gif
new file mode 100644
index 000000000..af59a0b19
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/list-delete.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/list-edit.gif b/io.sloeber.autoBuild.ui/icons/elcl16/list-edit.gif
new file mode 100644
index 000000000..d1aa86cdf
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/list-edit.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/list-movedown.gif b/io.sloeber.autoBuild.ui/icons/elcl16/list-movedown.gif
new file mode 100644
index 000000000..572933eec
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/list-movedown.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/list-moveup.gif b/io.sloeber.autoBuild.ui/icons/elcl16/list-moveup.gif
new file mode 100644
index 000000000..768c5c171
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/list-moveup.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/newmngc_app.gif b/io.sloeber.autoBuild.ui/icons/elcl16/newmngc_app.gif
new file mode 100644
index 000000000..23b0284f8
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/newmngc_app.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/newmngcc_app.gif b/io.sloeber.autoBuild.ui/icons/elcl16/newmngcc_app.gif
new file mode 100644
index 000000000..4b39411da
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/newmngcc_app.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/read_only.gif b/io.sloeber.autoBuild.ui/icons/elcl16/read_only.gif
new file mode 100644
index 000000000..dde3cbd61
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/read_only.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/elcl16/refresh_nav.gif b/io.sloeber.autoBuild.ui/icons/elcl16/refresh_nav.gif
new file mode 100644
index 000000000..3ca04d06f
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/elcl16/refresh_nav.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/artifact.gif b/io.sloeber.autoBuild.ui/icons/obj16/artifact.gif
new file mode 100644
index 000000000..1273abb76
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/artifact.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/bin_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/bin_obj.gif
new file mode 100644
index 000000000..66225ec45
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/bin_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/build_settings.gif b/io.sloeber.autoBuild.ui/icons/obj16/build_settings.gif
new file mode 100644
index 000000000..8fddef69f
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/build_settings.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/convert-normal.gif b/io.sloeber.autoBuild.ui/icons/obj16/convert-normal.gif
new file mode 100644
index 000000000..0b693cb5f
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/convert-normal.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/define_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/define_obj.gif
new file mode 100644
index 000000000..87d583e1d
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/define_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/environment.gif b/io.sloeber.autoBuild.ui/icons/obj16/environment.gif
new file mode 100644
index 000000000..716df436f
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/environment.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/error_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/error_obj.gif
new file mode 100644
index 000000000..2cd37c254
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/error_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/fileFolder_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/fileFolder_obj.gif
new file mode 100644
index 000000000..2a3eb9190
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/fileFolder_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/file_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/file_obj.gif
new file mode 100644
index 000000000..9729c4273
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/file_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/filesystem.gif b/io.sloeber.autoBuild.ui/icons/obj16/filesystem.gif
new file mode 100644
index 000000000..13ce11b14
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/filesystem.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/fldr_lib_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/fldr_lib_obj.gif
new file mode 100644
index 000000000..db8e55b70
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/fldr_lib_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/fldr_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/fldr_obj.gif
new file mode 100644
index 000000000..03ee1dcb8
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/fldr_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/h_file_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/h_file_obj.gif
new file mode 100644
index 000000000..b902fca49
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/h_file_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/hfolder_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/hfolder_obj.gif
new file mode 100644
index 000000000..b98b81727
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/hfolder_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/hierarchy.gif b/io.sloeber.autoBuild.ui/icons/obj16/hierarchy.gif
new file mode 100644
index 000000000..17f927e9a
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/hierarchy.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/inspect_sys.gif b/io.sloeber.autoBuild.ui/icons/obj16/inspect_sys.gif
new file mode 100644
index 000000000..d68100a74
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/inspect_sys.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/lib_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/lib_obj.gif
new file mode 100644
index 000000000..cb55e33b5
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/lib_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/log_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/log_obj.gif
new file mode 100644
index 000000000..aebeab820
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/log_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/mbs.gif b/io.sloeber.autoBuild.ui/icons/obj16/mbs.gif
new file mode 100644
index 000000000..3406bb186
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/mbs.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/opentype.gif b/io.sloeber.autoBuild.ui/icons/obj16/opentype.gif
new file mode 100644
index 000000000..e687f54e6
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/opentype.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/output_folder_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/output_folder_obj.gif
new file mode 100644
index 000000000..07c410158
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/output_folder_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/search_ref_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/search_ref_obj.gif
new file mode 100644
index 000000000..f8f0ce5aa
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/search_ref_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/sroot_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/sroot_obj.gif
new file mode 100644
index 000000000..bacc22a65
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/sroot_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/steps.gif b/io.sloeber.autoBuild.ui/icons/obj16/steps.gif
new file mode 100644
index 000000000..68b3e5d90
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/steps.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/target_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/target_obj.gif
new file mode 100644
index 000000000..def312aa1
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/target_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/textfile_obj.gif b/io.sloeber.autoBuild.ui/icons/obj16/textfile_obj.gif
new file mode 100644
index 000000000..b226e41c5
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/textfile_obj.gif differ
diff --git a/io.sloeber.autoBuild.ui/icons/obj16/workspace.gif b/io.sloeber.autoBuild.ui/icons/obj16/workspace.gif
new file mode 100644
index 000000000..eb7b90c76
Binary files /dev/null and b/io.sloeber.autoBuild.ui/icons/obj16/workspace.gif differ
diff --git a/io.sloeber.autoBuild.ui/plugin.properties b/io.sloeber.autoBuild.ui/plugin.properties
new file mode 100644
index 000000000..a66316c1e
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/plugin.properties
@@ -0,0 +1,2 @@
+pluginName=AutoBuild Plugin user interface
+providerName=Jan Baeyens
diff --git a/io.sloeber.autoBuild.ui/plugin.xml b/io.sloeber.autoBuild.ui/plugin.xml
new file mode 100644
index 000000000..75a106c9b
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/plugin.xml
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+
+ AutoBuild: Create a C/C++ project for -libraries and/or executables- based on an automatically generated makefile (similar to managed build)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sloeber.autoBuild.ui/pom.xml b/io.sloeber.autoBuild.ui/pom.xml
new file mode 100644
index 000000000..c3e628ad5
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/pom.xml
@@ -0,0 +1,13 @@
+
+
+ 4.0.0
+
+ io.sloeber.arduino-eclipse-plugin
+ io.sloeber.parent
+ 5.0.0-SNAPSHOT
+ ../io.sloeber.parent
+
+
+ io.sloeber.autoBuild.ui
+ eclipse-plugin
+
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/ManagedBuilderUIImages.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/ManagedBuilderUIImages.java
new file mode 100644
index 000000000..0632e9fbd
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/ManagedBuilderUIImages.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2016 Rational Software Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.integrations;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Bundle of all images used by the C plugin.
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class ManagedBuilderUIImages {
+
+ // The plugin registry
+ private static ImageRegistry imageRegistry = new ImageRegistry();
+
+ // Subdirectory (under the package containing this class) where 16 color images are
+ private static URL iconBaseURL = null;
+ static {
+ iconBaseURL = Platform.getBundle("io.sloeber.autoBuild.ui").getEntry("icons/"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ private static final String NAME_PREFIX = "io.sloeber.autoBuild.ui."; //$NON-NLS-1$
+ private static final int NAME_PREFIX_LENGTH = NAME_PREFIX.length();
+
+ public static final String T_BUILD = "elcl16/"; //$NON-NLS-1$
+ // list icons dir
+ public static final String T_LIST = "elcl16/"; //$NON-NLS-1$
+ public static final String T_OBJ = "obj16/"; //$NON-NLS-1$
+
+ // For the managed build images
+ public static final String IMG_BUILD_CONFIG = NAME_PREFIX + "build_configs.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_CONFIG = createManaged(T_BUILD, IMG_BUILD_CONFIG);
+ public static final String IMG_BUILD_COMPILER = NAME_PREFIX + "config-compiler.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_COMPILER = createManaged(T_BUILD, IMG_BUILD_COMPILER);
+ public static final String IMG_BUILD_LINKER = NAME_PREFIX + "config-linker.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_LINKER = createManaged(T_BUILD, IMG_BUILD_LINKER);
+ public static final String IMG_BUILD_LIBRARIAN = NAME_PREFIX + "config-librarian.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_LIBRARIAN = createManaged(T_BUILD, IMG_BUILD_LIBRARIAN);
+ public static final String IMG_BUILD_COMMAND = NAME_PREFIX + "config-command.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_COMMAND = createManaged(T_BUILD, IMG_BUILD_COMMAND);
+ public static final String IMG_BUILD_PREPROCESSOR = NAME_PREFIX + "config-preprocessor.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_PREPROCESSOR = createManaged(T_BUILD, IMG_BUILD_PREPROCESSOR);
+ public static final String IMG_BUILD_TOOL = NAME_PREFIX + "config-tool.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_TOOL = createManaged(T_BUILD, IMG_BUILD_TOOL);
+ public static final String IMG_BUILD_CAT = NAME_PREFIX + "config-category.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILD_CAT = createManaged(T_BUILD, IMG_BUILD_CAT);
+
+ // new images
+ public static final String IMG_READ_ONLY = NAME_PREFIX + "read_only.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_READ_ONLY = createManaged(T_OBJ, IMG_READ_ONLY);
+ public static final String IMG_EDITABLE = NAME_PREFIX + "editable.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_EDITABLE = createManaged(T_OBJ, IMG_EDITABLE);
+ public static final String IMG_BUILT_IN = NAME_PREFIX + "built_in.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_BUILT_IN = createManaged(T_OBJ, IMG_BUILT_IN);
+
+ // refresh policy tab
+ /**
+ * @since 8.0
+ */
+ public static final String IMG_FILE_OBJ = NAME_PREFIX + "file_obj.gif"; //$NON-NLS-1$
+ /**
+ * @since 8.0
+ */
+ public static final ImageDescriptor DESC_FILE_OBJ = createManaged(T_OBJ, IMG_FILE_OBJ);
+ /**
+ * @since 8.0
+ */
+ public static final String IMG_TEXTFILE_OBJ = NAME_PREFIX + "textfile_obj.gif"; //$NON-NLS-1$
+ /**
+ * @since 8.0
+ */
+ public static final ImageDescriptor DESC_TEXTFILE_OBJ = createManaged(T_OBJ, IMG_TEXTFILE_OBJ);
+ /**
+ * @since 8.0
+ */
+ public static final String IMG_FILE_FOLDER_OBJ = NAME_PREFIX + "fileFolder_obj.gif"; //$NON-NLS-1$
+ /**
+ * @since 8.0
+ */
+ public static final ImageDescriptor DESC_FILE_FOLDER_OBJ = createManaged(T_OBJ, IMG_FILE_FOLDER_OBJ);
+
+ private static ImageDescriptor createManaged(String prefix, String name) {
+ return createManaged(imageRegistry, prefix, name);
+ }
+
+ private static ImageDescriptor createManaged(ImageRegistry registry, String prefix, String name) {
+ ImageDescriptor result = ImageDescriptor
+ .createFromURL(makeIconFileURL(prefix, name.substring(NAME_PREFIX_LENGTH)));
+ registry.put(name, result);
+ return result;
+ }
+
+ public static Image get(String key) {
+ return imageRegistry.get(key);
+ }
+
+ private static URL makeIconFileURL(String prefix, String name) {
+ StringBuilder buffer = new StringBuilder(prefix);
+ buffer.append(name);
+ try {
+ return new URL(iconBaseURL, buffer.toString());
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ // ManagedBuilderUIPlugin.log(e);
+ return null;
+ }
+ }
+
+ /**
+ * Helper method to access the image registry from the JavaPlugin class.
+ */
+ static ImageRegistry getImageRegistry() {
+ return imageRegistry;
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectBuildToolsPage.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectBuildToolsPage.java
new file mode 100644
index 000000000..3ee14ff1d
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectBuildToolsPage.java
@@ -0,0 +1,45 @@
+package io.sloeber.autoBuild.integrations;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.ui.internal.Messages;
+import io.sloeber.autoBuild.ui.tabs.BuildToolManagerTab;
+import io.sloeber.autoBuild.ui.tabs.DialogCompleteEvent;
+
+public class NewProjectBuildToolsPage extends WizardPage {
+
+
+ private BuildToolManagerTab myBuildToolsManagerTab;
+
+ protected NewProjectBuildToolsPage(String pageName) {
+ super(pageName);
+ myBuildToolsManagerTab =new BuildToolManagerTab();
+ setTitle(Messages.NewProjectBuildToolsPage_title);
+ setDescription(Messages.NewProjectBuildToolsPage_description);
+ setPageComplete(false);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite usercomp = new Composite(parent, SWT.NONE);
+ usercomp.setLayout(new GridLayout());
+ usercomp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+ setControl(usercomp);
+ myBuildToolsManagerTab.internalCreateControls(usercomp, new DialogCompleteEvent(){
+ @Override
+ public void completeEvent(boolean isComplete) {
+ setPageComplete(isComplete);
+ }
+ });
+ }
+
+ public IBuildTools getBuildTools() {
+ return myBuildToolsManagerTab.getSelecteddBuildTool();
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectCodeProviderPage.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectCodeProviderPage.java
new file mode 100644
index 000000000..d023478fd
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectCodeProviderPage.java
@@ -0,0 +1,154 @@
+package io.sloeber.autoBuild.integrations;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import io.sloeber.autoBuild.api.AutoBuildNewProjectCodeManager;
+import io.sloeber.autoBuild.api.ICodeProvider;
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+public class NewProjectCodeProviderPage extends WizardPage {
+ private static final String EMPTY=""; //$NON-NLS-1$
+ private Group myButtonComp;
+ private Button myNoCodeButton;
+ private List myToolProviderButtons = new ArrayList<>();
+ private AutoBuildNewProjectCodeManager codeManager = AutoBuildNewProjectCodeManager.getDefault();
+ private SelectionListener selectionListener;
+ private String mySelectedProjectTarget;
+ private String mySelectedNatureID;
+ private Composite myParent;
+ private ICodeProvider myCodeProvider = null;
+ private Label myDescriptionText;
+
+
+ @Override
+ public void setVisible(boolean visible) {
+ showCorrectCodeProviderButtons();
+ super.setVisible(visible);
+ }
+
+
+ protected NewProjectCodeProviderPage(String pageName) {
+ super(pageName);
+ setTitle(Messages.NewProjectCodeProviderPage_title);
+ setDescription(Messages.NewProjectCodeProviderPage_description);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ myParent=parent;
+ Group usercomp = new Group(parent, SWT.NONE);
+ setControl(usercomp);
+ // usercomp.setLayout(new RowLayout(SWT.VERTICAL));
+ GridLayout gridlayout = new GridLayout();
+ gridlayout.numColumns = 1;
+ gridlayout.marginHeight = 5;
+ usercomp.setLayout(gridlayout);
+
+ selectionListener = new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ setErrorMessage(null);
+ setPageComplete(true);
+ Button button = (Button) e.getSource();
+ ICodeProvider codeProvider = (ICodeProvider) button.getData();
+ String description = EMPTY;
+ if (codeProvider == null) {
+ if (button.equals(myNoCodeButton)) {
+ description = Messages.NewProjectCodeProviderPage_noFilesDescription;
+ }
+ } else {
+ description = codeProvider.getDescription();
+ myCodeProvider=codeProvider;
+ }
+ myDescriptionText.setText(description);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // not needed
+ }
+ };
+
+ myButtonComp = new Group(usercomp, SWT.NONE);
+ myButtonComp.setLayout(new RowLayout(SWT.VERTICAL));
+ GridData buttonGridData = new GridData(GridData.FILL_HORIZONTAL );
+ myButtonComp.setLayoutData(buttonGridData);
+
+ myNoCodeButton = new Button(myButtonComp, SWT.RADIO);
+ myNoCodeButton.setText(Messages.NewProjectCodeProviderPage_noFilesName);
+ myNoCodeButton.addSelectionListener(selectionListener);
+
+ GridData labelGridData = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
+ labelGridData.horizontalSpan = 2;
+ myDescriptionText = new Label(usercomp, SWT.LEAD | SWT.WRAP);
+ myDescriptionText.setLayoutData(labelGridData);
+
+ showCorrectCodeProviderButtons();
+
+ }
+
+ public ICodeProvider getCodeProvider() {
+ return myCodeProvider;
+ }
+
+ private void showCorrectCodeProviderButtons() {
+ IWizard wizard = getWizard();
+ if (wizard instanceof NewProjectWizard) {
+ NewProjectWizard newProjectWizard = (NewProjectWizard) wizard;
+ mySelectedProjectTarget = newProjectWizard.getSelectedBuildArtifactType();
+ mySelectedNatureID = newProjectWizard.getSelectedNatureID();
+ }
+ for (Button curButton : myToolProviderButtons) {
+ curButton.setText(EMPTY);
+ curButton.setVisible(false);
+ }
+ int curButtonCounter = 0;
+ //System.out.println("recalculating code on target "+mySelectedProjectTarget+" for nature "+mySelectedNatureID);
+ HashMap codeProviders = codeManager.getCodeProviders(mySelectedProjectTarget,
+ mySelectedNatureID);
+ boolean needsRedraw = false;
+ for (Entry curCodeProviderEntry : codeProviders.entrySet()) {
+
+ ICodeProvider codeProvider = curCodeProviderEntry.getValue();
+ String name = codeProvider.getName();
+ Button curButton;
+ if (myToolProviderButtons.size() > curButtonCounter) {
+ curButton = myToolProviderButtons.get(curButtonCounter);
+ curButtonCounter++;
+ } else {
+ curButton = new Button(myButtonComp, SWT.RADIO);
+ curButton.addSelectionListener(selectionListener);
+ myToolProviderButtons.add(curButton);
+ needsRedraw = true;
+ }
+ curButton.setText(name);
+ curButton.setData(codeProvider);
+ curButton.setVisible(true);
+ curButton.pack();
+
+ }
+ if (needsRedraw) {
+
+ myParent.pack(true);
+ myButtonComp.pack(true);
+ myParent.layout(true, true);
+ myParent.redraw();
+ }
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectNaturePage.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectNaturePage.java
new file mode 100644
index 000000000..382c255e2
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectNaturePage.java
@@ -0,0 +1,74 @@
+package io.sloeber.autoBuild.integrations;
+
+import org.eclipse.cdt.core.CCProjectNature;
+import org.eclipse.cdt.core.CProjectNature;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+public class NewProjectNaturePage extends WizardPage{
+ private String myNatureId=CCProjectNature.CC_NATURE_ID;
+
+ protected NewProjectNaturePage(String pageName) {
+ super(pageName);
+ setTitle(Messages.NewProjectNaturePage_SelectNaturesTitle);
+ setDescription(Messages.NewProjectNaturePage_SelectNaturesDescription);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ // Create a group to contain 2 radio (Male & Female)
+ Group natureGroup = new Group(parent, SWT.NONE);
+ natureGroup.setLayout(new RowLayout(SWT.VERTICAL));
+
+
+
+ Button cppNatureButton = new Button(natureGroup, SWT.RADIO);
+ cppNatureButton.setText(Messages.NewProjectNaturePage_CPPNature);
+ cppNatureButton.setSelection(true);
+ cppNatureButton.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ myNatureId=CCProjectNature.CC_NATURE_ID;
+
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ Button cNatureButton = new Button(natureGroup, SWT.RADIO);
+ cNatureButton.setText(Messages.NewProjectNaturePage_CNature);
+ cNatureButton.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ myNatureId=CProjectNature.C_NATURE_ID;
+
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+
+ setControl(natureGroup);
+ }
+
+ public String getNatureID() {
+ return myNatureId;
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectProjectTypePage.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectProjectTypePage.java
new file mode 100644
index 000000000..46d676057
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectProjectTypePage.java
@@ -0,0 +1,43 @@
+package io.sloeber.autoBuild.integrations;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+import io.sloeber.autoBuild.schema.api.IProjectType;
+import io.sloeber.autoBuild.ui.internal.Messages;
+import io.sloeber.autoBuild.ui.tabs.DialogCompleteEvent;
+import io.sloeber.autoBuild.ui.tabs.ProjectSettingsTab;
+
+public class NewProjectProjectTypePage extends WizardPage {
+ private ProjectSettingsTab myProjectSettingsTab;
+
+ protected NewProjectProjectTypePage(String pageName) {
+ super(pageName);
+ myProjectSettingsTab=new ProjectSettingsTab();
+ setTitle(Messages.NewProjectProjectTypePage_SelectProjectType);
+ setDescription(Messages.NewProjectProjectTypePage_SelectProjectTypeDescription);
+ setPageComplete(false);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite usercomp = new Composite(parent, SWT.NONE);
+ usercomp.setLayout(new GridLayout());
+ usercomp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+ setControl(usercomp);
+ myProjectSettingsTab.internalCreateControls(usercomp, new DialogCompleteEvent(){
+ @Override
+ public void completeEvent(boolean isComplete) {
+ setPageComplete(isComplete);
+ }
+ });
+ }
+
+
+ public IProjectType getProjectType() {
+ return myProjectSettingsTab.getProjectType();
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectSourceLocationPage.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectSourceLocationPage.java
new file mode 100644
index 000000000..6751fc34f
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectSourceLocationPage.java
@@ -0,0 +1,106 @@
+package io.sloeber.autoBuild.integrations;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Text;
+
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+public class NewProjectSourceLocationPage extends WizardPage {
+ Button RootFolderButton ;
+ Button srcFolderButton;
+ Button customFolderButton;
+ Text customFolderText;
+
+ protected NewProjectSourceLocationPage(String pageName) {
+ super(pageName);
+ setTitle(Messages.NewProjectSourceLocationPage_SelectLocation);
+ setDescription(Messages.NewProjectSourceLocationPage_SeperateSourceCodeFromTheRest);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+
+ Group usercomp = new Group(parent, SWT.NONE);
+ setControl(usercomp);
+ usercomp.setLayout(new RowLayout(SWT.VERTICAL));
+
+
+ SelectionListener selectionListener=new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ customFolderText.setEditable(false);
+ setErrorMessage(null);
+ setPageComplete(true);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ //not needed
+ }
+ };
+
+ RootFolderButton = new Button(usercomp, SWT.RADIO);
+ RootFolderButton.setText(Messages.NewProjectSourceLocationPage_PutCodeInRootOfProject);
+ RootFolderButton.addSelectionListener(selectionListener);
+
+ srcFolderButton = new Button(usercomp, SWT.RADIO);
+ srcFolderButton.setText(Messages.NewProjectSourceLocationPage_PutCodeInSrcFolder);
+ srcFolderButton.setSelection(true);
+ srcFolderButton.addSelectionListener(selectionListener);
+
+ customFolderButton = new Button(usercomp, SWT.RADIO);
+ customFolderButton.setText(Messages.NewProjectSourceLocationPage_PutCodeInSelectedFolder);
+ customFolderButton.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ customFolderText.setEditable(true);
+ if(customFolderText.getText().isBlank()) {
+ setErrorMessage(Messages.NewProjectSourceLocationPage_YouMustProvideText);
+ setPageComplete(false);
+ }
+ }
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ //not needed
+ }
+ });
+ customFolderText = new Text(usercomp, SWT.SINGLE);
+ customFolderText.setEditable(false);
+ customFolderText.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if(customFolderText.getText().isBlank()) {
+ setErrorMessage(Messages.NewProjectSourceLocationPage_YouMustProvideText);
+ setPageComplete(false);
+ }else {
+ setErrorMessage(null);
+ setPageComplete(true);
+ }
+ }
+ });
+ }
+
+
+ public String getSourceCodeLocation() {
+ if(RootFolderButton.getSelection()) {
+ return null;
+ }
+ if(srcFolderButton.getSelection()) {
+ return "src"; //$NON-NLS-1$
+ }
+ return customFolderText.getText();
+
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectWizard.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectWizard.java
new file mode 100644
index 000000000..6c35b0ce6
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewProjectWizard.java
@@ -0,0 +1,150 @@
+package io.sloeber.autoBuild.integrations;
+
+import static io.sloeber.autoBuild.ui.internal.Messages.*;
+
+import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.wizard.IWizardContainer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.tools.templates.core.IGenerator;
+import org.eclipse.tools.templates.ui.TemplateWizard;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+import org.osgi.framework.FrameworkUtil;
+
+import io.sloeber.autoBuild.api.AutoBuildProject;
+import io.sloeber.autoBuild.api.ICodeProvider;
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.integration.AutoBuildProjectGenerator;
+import io.sloeber.autoBuild.schema.api.IProjectType;
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+public class NewProjectWizard extends TemplateWizard {
+ private WizardNewProjectCreationPage myMainPage;
+ private NewProjectNaturePage myNaturePage;
+ private NewProjectBuildToolsPage myBuildToolsPage;
+ private NewProjectProjectTypePage myProjectTypePage;
+ private NewProjectSourceLocationPage mySourceLocationPage;
+ private NewProjectCodeProviderPage myCodeProviderPage;
+
+ @Override
+ public boolean performFinish() {
+ try {
+ String projectName = myMainPage.getProjectName();
+ URI projectURI=myMainPage.getLocationURI();
+ IProjectType iProjectType = myProjectTypePage.getProjectType();
+ String natureID = myNaturePage.getNatureID();
+ ICodeProvider codeProvider = myCodeProviderPage.getCodeProvider();
+ codeProvider.setCodeFolder(mySourceLocationPage.getSourceCodeLocation());
+ IBuildTools buildTools = myBuildToolsPage.getBuildTools();
+ getContainer().run(true, true, new WorkspaceModifyOperation() {
+ @Override
+ protected void execute(IProgressMonitor monitor)
+ throws CoreException, InvocationTargetException, InterruptedException {
+ SubMonitor sub = SubMonitor.convert(monitor, Messages.TemplateWizard_Generating, 1);
+
+ AutoBuildProject.createProject(projectName, projectURI,iProjectType, natureID, codeProvider,
+ buildTools, false, sub);
+ sub.done();
+ }
+
+ @Override
+ public ISchedulingRule getRule() {
+ return ResourcesPlugin.getWorkspace().getRoot();
+ }
+ });
+ } catch (Exception e) {
+ handle(e);
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void setContainer(IWizardContainer wizardContainer) {
+ super.setContainer(wizardContainer);
+ setWindowTitle(NewAutoMakeProjectWizard_WindowTitle);
+ }
+
+ @Override
+ public void addPages() {
+ myMainPage = new WizardNewProjectCreationPage(Messages.NewProjectWizard_BasicNewProjectPage) {
+ @Override
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+ createWorkingSetGroup((Composite) getControl(), getSelection(),
+ new String[] { "org.eclipse.ui.resourceWorkingSetPage" }); //$NON-NLS-1$
+ Dialog.applyDialogFont(getControl());
+ }
+ };
+ myMainPage.setTitle(NewAutoMakeProjectWizard_PageTitle);
+ myMainPage.setDescription(NewAutoMakeProjectWizard_Description);
+ myNaturePage = new NewProjectNaturePage(Messages.NewProjectWizard_SelectNaturePage);
+ myBuildToolsPage = new NewProjectBuildToolsPage(Messages.NewProjectWizard_BuildToolsPage);
+ myProjectTypePage = new NewProjectProjectTypePage(Messages.NewProjectWizard_ProjectTypePage);
+ mySourceLocationPage = new NewProjectSourceLocationPage(Messages.NewProjectWizard_CodeLocationPage);
+ myCodeProviderPage = new NewProjectCodeProviderPage(Messages.NewProjectWizard_CodeProviderPage);
+
+ addPage(myMainPage);
+ addPage(myNaturePage);
+ addPage(myProjectTypePage);
+ addPage(myCodeProviderPage);
+ addPage(myBuildToolsPage);
+ addPage(mySourceLocationPage);
+
+ }
+
+ @Override
+ protected IGenerator getGenerator() {
+ AutoBuildProjectGenerator generator = new AutoBuildProjectGenerator();
+ generator.setProjectName(myMainPage.getProjectName());
+ if (!myMainPage.useDefaults()) {
+ generator.setLocationURI(myMainPage.getLocationURI());
+ }
+ return generator;
+ }
+
+ private void handle(Throwable target) {
+ String message = Messages.TemplateWizard_CannotBeCreated;
+ log(message, target);
+ IStatus status;
+ if (target instanceof CoreException) {
+ status = ((CoreException) target).getStatus();
+ } else {
+ status = new Status(IStatus.ERROR, FrameworkUtil.getBundle(getClass()).getSymbolicName(),
+ Messages.TemplateWizard_InternalError, target);
+ }
+ ErrorDialog.openError(getShell(), Messages.TemplateWizard_ErrorCreating, message, status);
+ }
+
+ private void log(String message, Throwable e) {
+ ILog log = Platform.getLog(getClass());
+ log.log(new Status(IStatus.ERROR, log.getBundle().getSymbolicName(), message, e));
+ }
+
+ public String getSelectedBuildArtifactType() {
+ if ((myProjectTypePage == null) || (myProjectTypePage.getProjectType() == null)) {
+ return null;
+ }
+ return myProjectTypePage.getProjectType().getBuildArtifactType();
+ }
+
+ public String getSelectedNatureID() {
+ if (myNaturePage == null) {
+ return null;
+ }
+ return myNaturePage.getNatureID();
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewVarDialog.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewVarDialog.java
new file mode 100644
index 000000000..90f3f955b
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/NewVarDialog.java
@@ -0,0 +1,582 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2020 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ * Sergei Kovalchuk (NXP USA Inc)
+ *******************************************************************************/
+package io.sloeber.autoBuild.integrations;
+
+import java.text.Collator;
+import java.util.Arrays;
+import java.util.Comparator;
+
+import org.eclipse.cdt.core.cdtvariables.CdtVariable;
+import org.eclipse.cdt.core.cdtvariables.CdtVariableException;
+import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICMultiItemsHolder;
+import org.eclipse.cdt.utils.cdtvariables.CdtVariableResolver;
+import org.eclipse.cdt.utils.ui.controls.FileListControl;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import io.sloeber.autoBuild.schema.api.IOption;
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+/**
+ * the dialog used to create or edit the build macro
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class NewVarDialog extends Dialog {
+ private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+
+ // The title of the dialog.
+ private String fTitle;
+ // hold the macro being edited(in the case of the "edit" mode)
+ private ICdtVariable fEditedMacro;
+ //the resulting macro. Can be accessed only when the dialog is closed
+ private ICdtVariable fResultingMacro;
+
+ private boolean fTotalSizeCalculated;
+
+ private String fTypedName;
+ private int fTypedType = -1;
+ public boolean isForAllCfgs = false;
+
+ // Widgets
+ private Composite fContainer;
+ private CCombo fMacroNameEdit;
+ private Label fMacroValueLabel;
+ private Text fMacroValueEdit;
+ private Button fBrowseButton;
+ private Combo fTypeSelector;
+ private Composite fListEditorContainier;
+
+ private FileListControl fListEditor;
+ private ICConfigurationDescription cfgd;
+ private ICdtVariable[] vars;
+
+ public NewVarDialog(Shell parentShell, ICdtVariable editedMacro, ICConfigurationDescription _cfgd,
+ ICdtVariable[] _vars) {
+ super(parentShell);
+ cfgd = _cfgd;
+ if (editedMacro != null)
+ fTitle = Messages.NewBuildMacroDialog_label_title_edit;
+ else
+ fTitle = Messages.NewBuildMacroDialog_label_title_new;
+ fEditedMacro = editedMacro;
+ vars = _vars;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+ */
+ @Override
+ protected void configureShell(Shell shell) {
+ super.configureShell(shell);
+ if (fTitle != null)
+ shell.setText(fTitle);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Composite comp = new Composite(parent, SWT.NULL);
+ comp.setFont(parent.getFont());
+ comp.setLayout(new GridLayout(3, false));
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ comp.setLayoutData(gd);
+
+ fContainer = comp;
+
+ Label nameLabel = new Label(comp, SWT.LEFT);
+ nameLabel.setFont(comp.getFont());
+ nameLabel.setText(Messages.NewVarDialog_0);
+ nameLabel.setLayoutData(new GridData());
+
+ fMacroNameEdit = new CCombo(comp, SWT.BORDER);
+ fMacroNameEdit.setItems(getMacroNames());
+ fMacroNameEdit.setFont(comp.getFont());
+ gd = new GridData(); // don't use GridData.FILL_HORIZONTAL; see bugzilla 229793
+ gd.horizontalSpan = 2;
+ gd.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH + 50;
+ fMacroNameEdit.setLayoutData(gd);
+ fMacroNameEdit.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ handleMacroNameModified();
+ }
+ });
+ fMacroNameEdit.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleMacroNameSelection();
+ }
+ });
+
+ if (fEditedMacro == null && cfgd != null && !(cfgd instanceof ICMultiItemsHolder)) {
+ Button c_all = new Button(comp, SWT.CHECK);
+ c_all.setText(Messages.NewVarDialog_1);
+ gd = new GridData(GridData.BEGINNING);
+ gd.horizontalSpan = 3;
+ c_all.setLayoutData(gd);
+ c_all.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ isForAllCfgs = ((Button) e.widget).getSelection();
+ }
+ });
+ }
+
+ Label typeLabel = new Label(comp, SWT.LEFT);
+ typeLabel.setFont(comp.getFont());
+ typeLabel.setText(Messages.NewBuildMacroDialog_label_type);
+ gd = new GridData();
+ typeLabel.setLayoutData(gd);
+
+ fTypeSelector = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN | SWT.BORDER);
+ gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ gd.horizontalSpan = 2;
+ // gd.widthHint = 100;
+ fTypeSelector.setLayoutData(gd);
+ fTypeSelector.setItems(new String[] { Messages.NewBuildMacroDialog_label_type_text,
+ Messages.NewBuildMacroDialog_label_type_text_list, Messages.NewBuildMacroDialog_label_type_path_file,
+ Messages.NewBuildMacroDialog_label_type_path_file_list,
+ Messages.NewBuildMacroDialog_label_type_path_dir, Messages.NewBuildMacroDialog_label_type_path_dir_list,
+ Messages.NewBuildMacroDialog_label_type_path_any,
+ Messages.NewBuildMacroDialog_label_type_path_any_list });
+ setSelectedType(ICdtVariable.VALUE_TEXT);
+
+ fTypeSelector.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ handleTypeModified();
+ }
+ });
+
+ fMacroValueLabel = new Label(comp, SWT.LEFT);
+ fMacroValueLabel.setFont(comp.getFont());
+ fMacroValueLabel.setText(Messages.NewBuildMacroDialog_label_value);
+ gd = new GridData();
+ gd.horizontalSpan = 1;
+ fMacroValueLabel.setLayoutData(gd);
+
+ fMacroValueEdit = new Text(comp, SWT.SINGLE | SWT.BORDER);
+ fMacroValueEdit.setFont(comp.getFont());
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH + 100;
+ gd.horizontalSpan = 1;
+ fMacroValueEdit.setLayoutData(gd);
+ fMacroValueEdit.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ handleMacroValueModified();
+ }
+ });
+
+ fBrowseButton = new Button(comp, SWT.PUSH);
+ fBrowseButton.setFont(comp.getFont());
+ fBrowseButton.setText(Messages.NewBuildMacroDialog_label_browse);
+ fBrowseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ handleBrowseButtonPressed();
+ }
+ });
+
+ gd = new GridData();
+ gd.widthHint = IDialogConstants.BUTTON_WIDTH;
+ gd.horizontalSpan = 1;
+ fBrowseButton.setLayoutData(gd);
+
+ fListEditorContainier = new Composite(comp, 0);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 3;
+ fListEditorContainier.setLayoutData(gd);
+ fListEditorContainier.setLayout(new GridLayout());
+
+ fListEditor = new FileListControl(fListEditorContainier, Messages.NewBuildMacroDialog_label_list_title,
+ IOption.BROWSE_NONE);
+ /* Enable workspace support for list editor */
+ fListEditor.setWorkspaceSupport(true);
+
+ // TODO: getContextInfo
+ // fListEditor.setContext(fMacrosBlock.getContextInfo());
+
+ if (fEditedMacro != null) {
+ loadVar(fEditedMacro);
+ fMacroNameEdit.setEnabled(false);
+ }
+ return comp;
+ }
+
+ /*
+ * get the names to be displayed in the var Name combo.
+ */
+ private String[] getMacroNames() {
+ String names[] = null;
+ if (vars == null || vars.length == 0)
+ names = new String[0];
+ else {
+ names = new String[vars.length];
+ for (int i = 0; i < vars.length; i++)
+ names[i] = vars[i].getName();
+ final Collator collator = Collator.getInstance();
+ Arrays.sort(names, new Comparator() {
+ @Override
+ public int compare(final String a, final String b) {
+ final String strA = a.toUpperCase();
+ final String strB = b.toUpperCase();
+ return collator.compare(strA, strB);
+ }
+ });
+ }
+ return names;
+ }
+
+ private void handleBrowseButtonPressed() {
+ switch (getBrowseType(getSelectedType())) {
+ case IOption.BROWSE_FILE:
+ FileDialog fileDlg = new FileDialog(fBrowseButton.getShell());
+ String file = fileDlg.open();
+ if (file != null)
+ fMacroValueEdit.setText(file);
+ break;
+ case IOption.BROWSE_DIR:
+ DirectoryDialog dirDlg = new DirectoryDialog(fBrowseButton.getShell());
+ String dir = dirDlg.open();
+ if (dir != null)
+ fMacroValueEdit.setText(dir);
+ break;
+ default:
+ break;
+ }
+ }
+
+ private static int getBrowseType(int type) {
+ int browseType = IOption.BROWSE_NONE;
+ switch (type) {
+ case ICdtVariable.VALUE_PATH_FILE:
+ case ICdtVariable.VALUE_PATH_FILE_LIST:
+ browseType = IOption.BROWSE_FILE;
+ break;
+ case ICdtVariable.VALUE_PATH_DIR:
+ case ICdtVariable.VALUE_PATH_DIR_LIST:
+ browseType = IOption.BROWSE_DIR;
+ break;
+ case ICdtVariable.VALUE_PATH_ANY:
+ case ICdtVariable.VALUE_PATH_ANY_LIST:
+ break;
+ case ICdtVariable.VALUE_TEXT:
+ case ICdtVariable.VALUE_TEXT_LIST:
+ default:
+ }
+ return browseType;
+
+ }
+
+ /*
+ * called when the variable name is selected, loads all the dialog fields with the variable settings
+ */
+ private void handleMacroNameSelection() {
+ int index = fMacroNameEdit.getSelectionIndex();
+ if (index != -1)
+ loadVarSettings(fMacroNameEdit.getItem(index));
+ }
+
+ private void loadVarSettings(String name) {
+ ICdtVariable v = null;
+ for (int i = 0; i < vars.length; i++) {
+ if (vars[i].getName().equals(name)) {
+ v = vars[i];
+ break;
+ }
+ }
+ if (v != null)
+ loadVar(v);
+ else
+ loadVar(name, ICdtVariable.VALUE_TEXT, EMPTY_STRING);
+ }
+
+ private void loadVar(String name, int type, String value[]) {
+ setSelectedType(type);
+ setSelectedMacroName(notNull(name));
+ fListEditor.setList(value);
+ updateWidgetState();
+ }
+
+ private void loadVar(String name, int type, String value) {
+ setSelectedType(type);
+ setSelectedMacroName(notNull(name));
+ fMacroValueEdit.setText(notNull(value));
+ updateWidgetState();
+ }
+
+ /*
+ * loads all the dialog fields with the variable settings
+ */
+ private void loadVar(ICdtVariable var) {
+ try {
+ if (CdtVariableResolver.isStringListVariable(var.getValueType()))
+ loadVar(var.getName(), var.getValueType(), var.getStringListValue());
+ else
+ loadVar(var.getName(), var.getValueType(), var.getStringValue());
+ } catch (@SuppressWarnings("unused") CdtVariableException e) {
+ //ignore
+ }
+ }
+
+ /*
+ * returns an empty string in the case the string passed is null.
+ * otherwise returns the string passed
+ */
+ private static String notNull(String str) {
+ return str == null ? EMPTY_STRING : str;
+ }
+
+ /*
+ * returns the name typed in the dialog var name edit triming spaces
+ */
+ private String getSelectedVarName() {
+ return fMacroNameEdit.getText().trim();
+ }
+
+ /*
+ * sets the variable name to the dialog "variable name" edit control
+ */
+ private void setSelectedMacroName(String name) {
+ if (!macroNamesEqual(fMacroNameEdit.getText(), name)) {
+ fTypedName = name;
+ fMacroNameEdit.setText(notNull(name).trim());
+ }
+ }
+
+ private static boolean macroNamesEqual(String name1, String name2) {
+ return name1.trim().equals(name2.trim());
+ }
+
+ /*
+ * returns the selected type
+ */
+ private int getSelectedType() {
+ switch (fTypeSelector.getSelectionIndex()) {
+ case 1:
+ return ICdtVariable.VALUE_TEXT_LIST;
+ case 2:
+ return ICdtVariable.VALUE_PATH_FILE;
+ case 3:
+ return ICdtVariable.VALUE_PATH_FILE_LIST;
+ case 4:
+ return ICdtVariable.VALUE_PATH_DIR;
+ case 5:
+ return ICdtVariable.VALUE_PATH_DIR_LIST;
+ case 6:
+ return ICdtVariable.VALUE_PATH_ANY;
+ case 7:
+ return ICdtVariable.VALUE_PATH_ANY_LIST;
+ case 0:
+ default:
+ return ICdtVariable.VALUE_TEXT;
+ }
+ }
+
+ /*
+ * sets the selected type
+ */
+ private void setSelectedType(int type) {
+ switch (type) {
+ case ICdtVariable.VALUE_TEXT_LIST:
+ fTypeSelector.select(1);
+ break;
+ case ICdtVariable.VALUE_PATH_FILE:
+ fTypeSelector.select(2);
+ break;
+ case ICdtVariable.VALUE_PATH_FILE_LIST:
+ fTypeSelector.select(3);
+ break;
+ case ICdtVariable.VALUE_PATH_DIR:
+ fTypeSelector.select(4);
+ break;
+ case ICdtVariable.VALUE_PATH_DIR_LIST:
+ fTypeSelector.select(5);
+ break;
+ case ICdtVariable.VALUE_PATH_ANY:
+ fTypeSelector.select(6);
+ break;
+ case ICdtVariable.VALUE_PATH_ANY_LIST:
+ fTypeSelector.select(7);
+ break;
+ case ICdtVariable.VALUE_TEXT:
+ default:
+ fTypeSelector.select(0);
+ break;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+ String name = getSelectedVarName();
+ if (name != null || !EMPTY_STRING.equals(name)) {
+ int type = getSelectedType();
+ if (CdtVariableResolver.isStringListVariable(type))
+ fResultingMacro = new CdtVariable(name, type, getSelectedStringListValue());
+ else
+ fResultingMacro = new CdtVariable(name, type, getSelectedStringValue());
+ }
+
+ super.okPressed();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.Window#open()
+ */
+ @Override
+ public int open() {
+ fResultingMacro = null;
+ return super.open();
+ }
+
+ /*
+ * returns the macro value that should be stored in the resulting variable
+ */
+ private String getSelectedStringValue() {
+ return fMacroValueEdit.getText();
+ }
+
+ private String[] getSelectedStringListValue() {
+ return fListEditor.getItems();
+ }
+
+ /*
+ * this method should be called after the dialog is closed
+ * to obtain the created variable.
+ * if the variable was not created, e.g. because a user has pressed
+ * the cancel button this method returns null
+ */
+ public ICdtVariable getDefinedMacro() {
+ return fResultingMacro;
+ }
+
+ /*
+ * called when the variable name is modified
+ */
+ private void handleMacroNameModified() {
+ String name = getSelectedVarName();
+ if (fTypedName == null || !fTypedName.equals(name)) {
+ loadVarSettings(name);
+ }
+ }
+
+ private void handleMacroValueModified() {
+ //Nothing to do
+ }
+
+ /*
+ * called when the operation is modified
+ */
+ private void handleTypeModified() {
+ int type = getSelectedType();
+ if (fTypedType != -1 && fTypedType == type)
+ return;
+
+ fTypedType = type;
+
+ adjustLayout(type);
+ }
+
+ private void adjustLayout(int type) {
+ GridData listGd = (GridData) fListEditorContainier.getLayoutData();
+ GridData labelGd = (GridData) fMacroValueLabel.getLayoutData();
+ GridData editGd = (GridData) fMacroValueEdit.getLayoutData();
+ GridData browseGd = (GridData) fBrowseButton.getLayoutData();
+
+ if (CdtVariableResolver.isStringListVariable(type)) {
+ listGd.exclude = false;
+ labelGd.exclude = true;
+ editGd.exclude = true;
+ browseGd.exclude = true;
+ fListEditorContainier.setVisible(true);
+ fListEditor.setType(getBrowseType(type));
+ fMacroValueLabel.setVisible(false);
+ fMacroValueEdit.setVisible(false);
+ fBrowseButton.setVisible(false);
+ } else {
+ listGd.exclude = true;
+ labelGd.exclude = false;
+ editGd.exclude = false;
+ int editSpan;
+ fListEditorContainier.setVisible(false);
+ fMacroValueLabel.setVisible(true);
+ fMacroValueEdit.setVisible(true);
+ if (getBrowseType(type) != IOption.BROWSE_NONE) {
+ browseGd.exclude = false;
+ editSpan = 1;
+ fBrowseButton.setVisible(true);
+ } else {
+ browseGd.exclude = true;
+ editSpan = 2;
+ fBrowseButton.setVisible(false);
+ }
+ editGd.horizontalSpan = editSpan;
+ }
+ fContainer.layout(true, true);
+ }
+
+ /*
+ * updates the state of the dialog controls
+ */
+ private void updateWidgetState() {
+ if (!fTotalSizeCalculated)
+ return;
+ handleTypeModified();
+
+ Button b = getButton(IDialogConstants.OK_ID);
+ if (b != null) {
+ String name = getSelectedVarName();
+ b.setEnabled(!EMPTY_STRING.equals(name));
+ }
+ }
+
+ @Override
+ protected Point getInitialSize() {
+ Point size = super.getInitialSize();
+ fTotalSizeCalculated = true;
+ updateWidgetState();
+ return size;
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/ToolListLabelProvider.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/ToolListLabelProvider.java
new file mode 100644
index 000000000..ce5197983
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/integrations/ToolListLabelProvider.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2010 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.integrations;
+
+import java.net.URL;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.ResourceManager;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+
+import io.sloeber.autoBuild.schema.api.IOptionCategory;
+import io.sloeber.autoBuild.schema.api.ITool;
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class ToolListLabelProvider extends LabelProvider {
+ private final Image IMG_TOOL = ManagedBuilderUIImages.get(ManagedBuilderUIImages.IMG_BUILD_TOOL);
+ private final Image IMG_CAT = ManagedBuilderUIImages.get(ManagedBuilderUIImages.IMG_BUILD_CAT);
+
+ private ImageDescriptor descriptor = null;
+ private ResourceManager manager = null;
+
+ /* (non-Javadoc)
+ * Returns the Image associated with the icon information retrieved out of OptionCategory.
+ */
+ private Image getIconFromOptionCategory(URL url, Image defaultImage) {
+
+ Image img = defaultImage;
+
+ // Get the image from the URL.
+ if (url != null) {
+ descriptor = ImageDescriptor.createFromURL(url);
+ manager = JFaceResources.getResources(Display.getCurrent());
+ Assert.isNotNull(manager);
+ img = manager.createImageWithDefault(descriptor);
+ if (img == null) {
+ // Report error by displaying a warning message
+ System.err.println("Couldn't create image from URL \"" + url + "\", to display icon for Tool Options."); //$NON-NLS-1$ //$NON-NLS-2$
+ img = defaultImage;
+ }
+ }
+ return img;
+ }
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof IOptionCategory) {
+ IOptionCategory cat = (IOptionCategory) element;
+ return getIconFromOptionCategory(cat.getIconPath(), IMG_CAT);
+ }
+ if (element instanceof ITool) {
+ ITool tool = (ITool) element;
+ return getIconFromOptionCategory(tool.getIconPath(), IMG_TOOL);
+ }
+
+ throw unknownElement(element);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ILabelProvider#getText(Object)
+ */
+ @Override
+ public String getText(Object element) {
+ if (element instanceof IOptionCategory) {
+ IOptionCategory cat = (IOptionCategory) element;
+ return cat.getName();
+ }
+ if (element instanceof ITool) {
+ ITool tool = (ITool) element;
+ return tool.getName();// getUniqueRealName();
+ }
+
+ throw unknownElement(element);
+ }
+
+ private static RuntimeException unknownElement(Object element) {
+ return new RuntimeException(
+ NLS.bind(Messages.BuildPropertyPage_error_Unknown_tree_element, element.getClass().getName()));
+ }
+
+ /**
+ * Disposing any images that were allocated for it.
+ *
+ * @since 3.0
+ */
+ @Override
+ public void dispose() {
+ if (descriptor != null && manager != null) {
+ manager.destroy(descriptor);
+ }
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/Activator.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/Activator.java
new file mode 100644
index 000000000..26c1c0400
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/Activator.java
@@ -0,0 +1,36 @@
+package io.sloeber.autoBuild.ui.internal;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+ public static final String PLUGIN_ID = "io.sloeber.autoBuild.ui"; //$NON-NLS-1$
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ super.start(bundleContext);
+ Activator.plugin = this;
+
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ super.stop(bundleContext);
+ Activator.plugin = null;
+
+ }
+
+ public static String getId() {
+ return PLUGIN_ID;
+ }
+
+ public static Activator getPlugin() {
+ return plugin;
+ }
+
+ public static void log(Exception e) {
+ e.printStackTrace();
+
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/Messages.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/Messages.java
new file mode 100644
index 000000000..7c2d8c2fc
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/Messages.java
@@ -0,0 +1,363 @@
+package io.sloeber.autoBuild.ui.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "io.sloeber.autoBuild.ui.internal.messages"; //$NON-NLS-1$
+
+ public static String ShareConfigTitle ;
+ public static String NewAutoMakeProjectWizard_WindowTitle;
+ public static String NewAutoMakeProjectWizard_Description;
+ public static String NewAutoMakeProjectWizard_PageTitle;
+ public static String AbstractCWizard_0;
+ public static String AbstractPrefPage_0;
+ public static String ArtifactTab_0;
+ public static String ArtifactTab_1;
+ public static String ArtifactTab_2;
+ public static String ArtifactTab_3;
+ public static String BuildBehaviourTab_Build_arguments;
+ public static String BuildBehaviourTab_Use_custom_build_arguments;
+ public static String BuildBehaviourTab_Use_standard_build_arguments;
+ public static String BuilderSettingsTab_0;
+ public static String BuilderSettingsTab_1;
+ public static String BuilderSettingsTab_10;
+ public static String BuilderSettingsTab_EnableParallelBuild;
+ public static String BuilderSettingsTab_UseOptimalJobs;
+ public static String BuilderSettingsTab_UseUnlimitedJobs;
+ public static String BuilderSettingsTab_UseParallelJobs;
+ public static String BuilderSettingsTab_14;
+ public static String BuilderSettingsTab_workbench_build_type;
+ public static String BuilderSettingsTab_make_build_target;
+ public static String BuilderSettingsTab_auto_build;
+ public static String BuilderSettingsTab_18;
+ public static String BuilderSettingsTab_19;
+ public static String BuilderSettingsTab_20;
+ public static String BuilderSettingsTab_21;
+ public static String BuilderSettingsTab_22;
+ public static String BuilderSettingsTab_4;
+ public static String BuilderSettingsTab_5;
+ public static String BuilderSettingsTab_6;
+ public static String BuilderSettingsTab_7;
+ public static String BuilderSettingsTab_8;
+ public static String BuildBehaviourTab_Header;
+ public static String BuilderSettingsTab_Configure_Build_Arguments_In_the_Behavior_tab;
+ public static String BuildOptionSettingsUI_0;
+ public static String BuildPropertyPage_error_Unknown_tree_element;
+ public static String BuildStepsTab_0;
+ public static String BuildStepsTab_1;
+ public static String BuildStepsTab_2;
+ public static String BuildStepsTab_3;
+ public static String BuildStepsTab_4;
+ public static String BuildStepsTab_5;
+ public static String BuildStepsTab_6;
+ public static String BuildToolManagerTab_BuildTools;
+ public static String BuildToolManagerTab_EnvironmentVars;
+ public static String BuildToolManagerTab_MyID;
+ public static String BuildToolManagerTab_NoBuildToolSelected;
+ public static String BuildToolManagerTab_NoEnvironmentVarsProvided;
+ public static String BuildToolManagerTab_NoToolVarsProvided;
+ public static String BuildToolManagerTab_Path;
+ public static String BuildToolManagerTab_ProviderID;
+ public static String BuildToolManagerTab_readFromDisk;
+ public static String BuildToolManagerTab_refreshTheToolChains;
+ public static String BuildToolManagerTab_ToolFlavour;
+ public static String BuildToolManagerTab_ToolProviders;
+ public static String BuildToolManagerTab_ToolVars;
+ public static String BuildToolSettingsPage_alloptions;
+ public static String BuildToolSettingsPage_tool_advancedSettings;
+ public static String BuildToolSettingsPage_tool_command;
+ public static String BuildToolSettingsPage_tool_commandLinePattern;
+ public static String BuiltinSpecsDetectorOptionPage_AllocateConsole;
+ public static String BuiltinSpecsDetectorOptionPage_Browse;
+ public static String BuiltinSpecsDetectorOptionPage_ChooseFile;
+ public static String BuiltinSpecsDetectorOptionPage_CompilerSpecsCommand;
+ public static String CConfigWizardPage_0;
+ public static String CConfigWizardPage_1;
+ public static String CConfigWizardPage_10;
+ public static String CConfigWizardPage_11;
+ public static String CConfigWizardPage_12;
+ public static String CConfigWizardPage_13;
+ public static String CConfigWizardPage_4;
+ public static String CConfigWizardPage_5;
+ public static String CConfigWizardPage_6;
+ public static String CConfigWizardPage_7;
+ public static String CConfigWizardPage_8;
+ public static String CDTConfigWizardPage_0;
+ public static String CMainWizardPage_0;
+ public static String CMainWizardPage_1;
+ public static String CNewWizard_0;
+ public static String CPropertyVarsTab_0;
+ public static String CPropertyVarsTab_Description;
+ public static String CWizardHandler_0;
+ public static String CWizardHandler_1;
+ public static String CWizardHandler_2;
+ public static String CWizardHandler_3;
+ public static String CWizardHandler_4;
+ public static String CWizardHandler_5;
+ public static String CWizardHandler_6;
+ public static String DiscoveryTab_0;
+ public static String DiscoveryTab_1;
+ public static String DiscoveryTab_2;
+ public static String DiscoveryTab_3;
+ public static String DiscoveryTab_5;
+ public static String DiscoveryTab_6;
+ public static String DiscoveryTab_7;
+ public static String DiscoveryTab_8;
+ public static String DiscoveryTab_Clear;
+ public static String DiscoveryTab_ClearDisoveredEntries;
+ public static String DiscoveryTab_ClearEntries;
+ public static String DiscoveryTab_DiscoveredEntriesCleared;
+ public static String DiscoveryTab_ErrorClearingEntries;
+ public static String EnvironmentTab_15;
+ public static String EnvironmentTab_23;
+ public static String GCCBuildCommandParserOptionPage_CompilerPattern;
+ public static String GCCBuildCommandParserOptionPage_ContainerForDiscoveredEntries;
+ public static String GCCBuildCommandParserOptionPage_File;
+ public static String GCCBuildCommandParserOptionPage_Folder;
+ public static String GCCBuildCommandParserOptionPage_Project;
+ public static String GCCBuildCommandParserOptionPage_ResolvePaths;
+ public static String MacrosBlock_label_delete_all_confirm_message;
+ public static String MacrosBlock_label_delete_all_confirm_title;
+ public static String MacrosBlock_label_delete_confirm_message;
+ public static String MacrosBlock_label_delete_confirm_title;
+ public static String MacrosBlock_label_header_name;
+ public static String MacrosBlock_label_header_type;
+ public static String MacrosBlock_label_header_value;
+ public static String MacrosBlock_label_type_path_any_list;
+ public static String MacrosBlock_label_type_path_any;
+ public static String MacrosBlock_label_type_path_dir_list;
+ public static String MacrosBlock_label_type_path_dir;
+ public static String MacrosBlock_label_type_path_file_list;
+ public static String MacrosBlock_label_type_path_file;
+ public static String MacrosBlock_label_type_text_list;
+ public static String MacrosBlock_label_type_text;
+ public static String MacrosBlock_label_value_eclipse_dynamic;
+ public static String MBSCustomPageManager_error0;
+ public static String MBSCustomPageManager_error1;
+ public static String MBSCustomPageManager_error2;
+ public static String MBSCustomPageManager_error3;
+ public static String MBSCustomPageManager_error4;
+ public static String MBSCustomPageManager_error5;
+ public static String MBSCustomPageManager_error6;
+ public static String MBSProjectConfiguration_No_configuration_selected_for_project;
+ public static String MBSWizardHandler_0;
+ public static String NewBuildConfigurationDialog_0;
+ public static String NewBuildConfigurationDialog_1;
+ public static String NewBuildMacroDialog_label_browse;
+ public static String NewBuildMacroDialog_label_list_title;
+ public static String NewBuildMacroDialog_label_title_edit;
+ public static String NewBuildMacroDialog_label_title_new;
+ public static String NewBuildMacroDialog_label_type_path_any_list;
+ public static String NewBuildMacroDialog_label_type_path_any;
+ public static String NewBuildMacroDialog_label_type_path_dir_list;
+ public static String NewBuildMacroDialog_label_type_path_dir;
+ public static String NewBuildMacroDialog_label_type_path_file_list;
+ public static String NewBuildMacroDialog_label_type_path_file;
+ public static String NewBuildMacroDialog_label_type_text_list;
+ public static String NewBuildMacroDialog_label_type_text;
+ public static String NewBuildMacroDialog_label_type;
+ public static String NewBuildMacroDialog_label_value;
+ public static String NewCfgDialog_0;
+ public static String NewCfgDialog_1;
+ public static String NewCfgDialog_2;
+ public static String NewCfgDialog_3;
+ public static String NewCfgDialog_4;
+ public static String NewCfgDialog_5;
+ public static String NewConfiguration_error_caseName;
+ public static String NewConfiguration_error_duplicateName;
+ public static String NewConfiguration_error_invalidName;
+ public static String NewConfiguration_label_clone;
+ public static String NewConfiguration_label_copy;
+ public static String NewConfiguration_label_description;
+ public static String NewConfiguration_label_group;
+ public static String NewConfiguration_label_name;
+ public static String NewConfiguration_label_warning;
+ public static String NewMakeProjFromExisting_wizard_title;
+ public static String NewMakeProjFromExistingPage_show_only_supported;
+ public static String NewMakeProjFromExisting_1;
+ public static String NewMakeProjFromExistingPage_0;
+ public static String NewMakeProjFromExistingPage_1;
+ public static String NewMakeProjFromExistingPage_10;
+ public static String NewMakeProjFromExistingPage_11;
+ public static String NewMakeProjFromExistingPage_2;
+ public static String NewMakeProjFromExistingPage_3;
+ public static String NewMakeProjFromExistingPage_4;
+ public static String NewMakeProjFromExistingPage_5;
+ public static String NewMakeProjFromExistingPage_6;
+ public static String NewMakeProjFromExistingPage_7;
+ public static String NewMakeProjFromExistingPage_8;
+ public static String NewMakeProjFromExistingPage_9;
+ public static String NewMakeProjFromExistingPage_DirReadOnlyError;
+ public static String NewVarDialog_0;
+ public static String NewVarDialog_1;
+ public static String PreferredToolchainsTab_0;
+ public static String PreferredToolchainsTab_1;
+ public static String PreferredToolchainsTab_2;
+ public static String PreferredToolchainsTab_3;
+ public static String PrefPage_NewCDTWizard_0;
+ public static String PrefPage_PropertyPage_0;
+ public static String PropertyMultiCfgTab_10;
+ public static String PropertyMultiCfgTab_11;
+ public static String PropertyMultiCfgTab_3;
+ public static String PropertyMultiCfgTab_4;
+ public static String PropertyMultiCfgTab_6;
+ public static String PropertyMultiCfgTab_7;
+ public static String PropertyMultiCfgTab_8;
+ public static String PropertyMultiCfgTab_9;
+ public static String PropertyPageDefsTab_0;
+ public static String PropertyPageDefsTab_1;
+ public static String PropertyPageDefsTab_10;
+ public static String PropertyPageDefsTab_11;
+ public static String PropertyPageDefsTab_12;
+ public static String PropertyPageDefsTab_13;
+ public static String PropertyPageDefsTab_14;
+ public static String PropertyPageDefsTab_16;
+ public static String PropertyPageDefsTab_4;
+ public static String PropertyPageDefsTab_5;
+ public static String PropertyPageDefsTab_6;
+ public static String PropertyPageDefsTab_7;
+ public static String PropertyPageDefsTab_8;
+ public static String PropertyPageDefsTab_9;
+ public static String PropertyPageDefsTab_showIncludeFileTab;
+ public static String PropertyPageDefsTab_showProvidersTab;
+ public static String PropertyPageDefsTab_showScannerDiscoveryTab;
+ public static String RefreshPolicyExceptionDialog_addDialogLabel;
+ public static String RefreshPolicyExceptionDialog_AddExceptionInfoDialog_message;
+ public static String RefreshPolicyExceptionDialog_AddExceptionInfoDialog_title;
+ public static String RefreshPolicyExceptionDialog_editDialogLabel;
+ public static String RefreshPolicyExceptionDialog_exceptionPropertiesGroupLabel;
+ public static String RefreshPolicyExceptionDialog_exceptionTypeDropdownLabel;
+ public static String RefreshPolicyTab_addExceptionButtonLabel;
+ public static String RefreshPolicyTab_addResourceButtonLabel;
+ public static String RefreshPolicyTab_addResourceDialogDescription;
+ public static String RefreshPolicyTab_addResourceDialogTitle;
+ public static String RefreshPolicyTab_deleteButtonLabel;
+ public static String RefreshPolicyTab_deleteConfirmationDialog_question_exception;
+ public static String RefreshPolicyTab_deleteConfirmationDialog_question_resource;
+ public static String RefreshPolicyTab_deleteConfirmationDialog_title;
+ public static String RefreshPolicyTab_editExceptionButtonLabel;
+ public static String RefreshPolicyTab_exceptionsLabel;
+ public static String RefreshPolicyTab_resourcesGroupLabel;
+ public static String RefreshPolicyTab_tabLabel;
+ public static String ResourceCustomBuildStepBlock_label_applicability_rule_after;
+ public static String ResourceCustomBuildStepBlock_label_applicability_rule_before;
+ public static String ResourceCustomBuildStepBlock_label_applicability_rule_disable;
+ public static String ResourceCustomBuildStepBlock_label_applicability_rule_override;
+ public static String ResourceCustomBuildStepBlock_label_applicability;
+ public static String ScannerConfigOptionsDialog_scGroup_enabled_button;
+ public static String ScannerConfigOptionsDialog_scGroup_label;
+ public static String ScannerConfigOptionsDialog_scGroup_problemReporting_enabled_button;
+ public static String ScannerConfigOptionsDialog_scGroup_selectedProfile_combo;
+ public static String StdBuildWizard_0;
+ public static String StdProjectTypeHandler_0;
+ public static String StdProjectTypeHandler_2;
+ public static String StdProjectTypeHandler_3;
+ public static String ToolChainEditTab_0;
+ public static String ToolChainEditTab_1;
+ public static String ToolChainEditTab_10;
+ public static String ToolChainEditTab_11;
+ public static String ToolChainEditTab_12;
+ public static String ToolChainEditTab_13;
+ public static String ToolChainEditTab_14;
+ public static String ToolChainEditTab_15;
+ public static String ToolChainEditTab_16;
+ public static String ToolChainEditTab_17;
+ public static String ToolChainEditTab_2;
+ public static String ToolChainEditTab_3;
+ public static String ToolChainEditTab_4;
+ public static String ToolChainEditTab_5;
+ public static String ToolChainEditTab_6;
+ public static String ToolChainEditTab_7;
+ public static String ToolChainEditTab_8;
+ public static String ToolChainEditTab_9;
+ public static String ToolChainEditTab_OrphanedBuilder;
+ public static String ToolChainEditTab_OrphanedToolchain;
+ public static String ToolSelectionDialog_0;
+ public static String ToolSelectionDialog_1;
+ public static String ToolSelectionDialog_10;
+ public static String ToolSelectionDialog_11;
+ public static String ToolSelectionDialog_12;
+ public static String ToolSelectionDialog_13;
+ public static String ToolSelectionDialog_14;
+ public static String ToolSelectionDialog_15;
+ public static String ToolSelectionDialog_16;
+ public static String ToolSelectionDialog_2;
+ public static String ToolSelectionDialog_7;
+ public static String ToolSelectionDialog_8;
+ public static String ToolSelectionDialog_9;
+ public static String ToolSettingsTab_0;
+ public static String WizardDefaultsTab_0;
+ public static String WizardDefaultsTab_1;
+ public static String RefreshPolicyTab_resourcesTreeLabel;
+ public static String BuilderSettingsTab_23;
+ public static String BuilderSettingsTab_24;
+ public static String BuilderSettingsTab_25;
+ public static String BuilderSettingsTab_26;
+ public static String CDTCommonProjectWizard_creatingProject;
+ public static String CDTCommonProjectWizard_0;
+ public static String CDTCommonProjectWizard_1;
+ public static String NewModelProjectWizard_0;
+ public static String NewModelProjectWizard_1;
+ public static String CDTMainWizardPage_0;
+ public static String CDTMainWizardPage_1;
+ public static String CMainWizardPage_3;
+ public static String CMainWizardPage_5;
+ public static String CMainWizardPage_6;
+ public static String CDTMainWizardPage_DefaultProjectCategory;
+ public static String CDTMainWizardPage_DefaultProjectType;
+ public static String CMainWizardPage_10;
+ public static String CMainWizardPage_7;
+ public static String CMainWizardPage_DirReadOnlyError;
+ public static String NewModelProjectWizard_2;
+ public static String NewModelProjectWizard_3;
+ public static String CCProjectWizard_0;
+ public static String NewModelProjectWizard_4;
+ public static String NewModelProjectWizard_5;
+ public static String NewProjectWizard_BasicNewProjectPage;
+ public static String NewProjectWizard_BuildToolsPage;
+ public static String NewProjectWizard_CodeLocationPage;
+ public static String NewProjectWizard_CodeProviderPage;
+ public static String NewProjectWizard_ProjectTypePage;
+ public static String NewProjectWizard_SelectNaturePage;
+ public static String CProjectWizard_0;
+ public static String ProjectImportConfigurator_Checking;
+ public static String TemplateWizard_CannotBeCreated;
+ public static String TemplateWizard_ErrorCreating;
+ public static String TemplateWizard_FailedToOpen;
+ public static String TemplateWizard_Generating;
+ public static String TemplateWizard_InternalError;
+ public static String shareConfigButton;
+ public static String addExclusion;
+ public static String removeExclusion;
+ public static String ProvideExclusionKey ;
+ public static String extensionPointID;
+ public static String extensionID;
+ public static String projectType;
+ public static String configuration;
+ public static String NewProjectBuildToolsPage_description;
+ public static String NewProjectBuildToolsPage_title;
+ public static String NewProjectCodeProviderPage_description;
+ public static String NewProjectCodeProviderPage_noFilesDescription;
+ public static String NewProjectCodeProviderPage_noFilesName;
+ public static String NewProjectCodeProviderPage_title;
+ public static String NewProjectNaturePage_CNature;
+ public static String NewProjectNaturePage_CPPNature;
+ public static String NewProjectNaturePage_SelectNaturesDescription;
+ public static String NewProjectNaturePage_SelectNaturesTitle;
+ public static String NewProjectProjectTypePage_SelectProjectType;
+ public static String NewProjectProjectTypePage_SelectProjectTypeDescription;
+ public static String NewProjectSourceLocationPage_PutCodeInRootOfProject;
+ public static String NewProjectSourceLocationPage_PutCodeInSelectedFolder;
+ public static String NewProjectSourceLocationPage_PutCodeInSrcFolder;
+ public static String NewProjectSourceLocationPage_SelectLocation;
+ public static String NewProjectSourceLocationPage_SeperateSourceCodeFromTheRest;
+ public static String NewProjectSourceLocationPage_YouMustProvideText;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/messages.properties b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/messages.properties
new file mode 100644
index 000000000..b06d50dbb
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/internal/messages.properties
@@ -0,0 +1,395 @@
+###############################################################################
+# Copyright (c) 2002, 2010 Rational Software Corporation and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2_0
+# which accompanies this distribution, and is available at
+# https://www_eclipse_org/legal/epl-2_0/
+#
+# SPDX-License-Identifier: EPL-2_0
+#
+# Contributors:
+# IBM Rational Software - Initial API and implementation
+###############################################################################
+
+# Generated makefile builder messages
+NewAutoMakeProjectWizard_WindowTitle = Create project with automagically created makefile.
+NewAutoMakeProjectWizard_Description=Use this wizard to create a C/C++ project that can be build automagically
+NewAutoMakeProjectWizard_PageTitle=Project creation Wizard for autoBuild
+
+BuildBehaviourTab_Use_custom_build_arguments=Use custom build arguments
+BuildBehaviourTab_Use_standard_build_arguments=Use standard build arguments
+BuildBehaviourTab_Build_arguments=Build arguments:\u0020
+BuilderSettingsTab_0=Builder
+BuilderSettingsTab_1=Builder &type:
+BuilderSettingsTab_4=&Use default build command
+BuilderSettingsTab_5=Build &command:\u0020
+BuilderSettingsTab_6=Makefile generation
+BuilderSettingsTab_7=&Generate Makefiles automatically
+BuilderSettingsTab_8=&Expand Env. Variable Refs in Makefiles
+BuildBehaviourTab_Header=Build settings
+BuilderSettingsTab_10=Stop on first build error
+BuilderSettingsTab_EnableParallelBuild=Enable parallel build
+BuilderSettingsTab_UseOptimalJobs=Use optimal jobs ({0})
+BuilderSettingsTab_UseParallelJobs=Use parallel jobs:\u0020
+BuilderSettingsTab_UseUnlimitedJobs=Use unlimited jobs
+BuilderSettingsTab_14=Workbench Build Behavior
+BuilderSettingsTab_workbench_build_type=Workbench build type:
+BuilderSettingsTab_make_build_target=Make build target:
+BuilderSettingsTab_auto_build=Build on resource save (Auto build)
+BuilderSettingsTab_18=Note: See Workbench automatic build preference
+BuilderSettingsTab_19=Build (Incremental build)
+BuilderSettingsTab_20=Clean
+BuilderSettingsTab_21=Build location
+BuilderSettingsTab_22=Build &directory:
+BuilderSettingsTab_23=Confirm toolchain change
+BuilderSettingsTab_24=Changing toolchain will reset all tool settings to default values. Existing settings will be unrecoverable.
+BuilderSettingsTab_25=Continue
+BuilderSettingsTab_26=Cancel
+BuilderSettingsTab_Configure_Build_Arguments_In_the_Behavior_tab=Configure build arguments in the Behavior tab.
+BuildStepsTab_0=Command:
+BuildStepsTab_1=Description:
+BuildStepsTab_2=Pre-build steps
+BuildStepsTab_3=Post-build steps
+BuildStepsTab_4=Resource Custom Build Step
+BuildStepsTab_5=Additional input file name(s):
+BuildStepsTab_6=Output file name(s):
+ArtifactTab_0=Artifact Type:\u0020
+ArtifactTab_1=Artifact name:\u0020
+ArtifactTab_2=Artifact extension:\u0020
+ArtifactTab_3=Output prefix:
+CPropertyVarsTab_0=Show system variables
+CPropertyVarsTab_Description=Build Variables are IDE only variables, which can be used for string substitution when defining external builder configuration, such as environment variable value or command line parameter in form of ${VAR}, internal builder may use them directly.\u0020
+DiscoveryTab_0=Discovery profiles scope
+DiscoveryTab_1=Per Language
+DiscoveryTab_2=Configuration-wide
+DiscoveryTab_3=Unknown
+DiscoveryTab_5=Tools:
+DiscoveryTab_6=No profiles found
+DiscoveryTab_7=InfoContexts are different \!
+DiscoveryTab_8=Configuration:
+DiscoveryTab_Clear=Clear
+DiscoveryTab_ClearDisoveredEntries=Clear discovered entries now:
+DiscoveryTab_ClearEntries=Clear entries
+DiscoveryTab_DiscoveredEntriesCleared=Discovered entries cleared. Scanner discovery will re-aquire the settings when run (normally during the build).
+DiscoveryTab_ErrorClearingEntries=Error clearing entries:\u0020
+ToolSelectionDialog_0=Select tools
+ToolSelectionDialog_1=Available tools
+ToolSelectionDialog_2=Used tools
+ToolSelectionDialog_7=Tool conflict:
+ToolSelectionDialog_8=Tool does not support managed build \!\u0020
+ToolSelectionDialog_9=Props not defined \!\u0020
+ToolSelectionDialog_10=Props not supported \!\u0020
+ToolSelectionDialog_11=Req. props not supported \!\u0020
+ToolSelectionDialog_12=Add tool -->
+ToolSelectionDialog_13=<-- Remove tool
+ToolSelectionDialog_14=<<- Replace ->>
+ToolSelectionDialog_15=Allow all changes
+ToolSelectionDialog_16=This tool can replace\u0020
+ToolChainEditTab_0=Display compatible toolchains only
+ToolChainEditTab_1=Current toolchain:
+ToolChainEditTab_10=builder
+ToolChainEditTab_11=configuration
+ToolChainEditTab_12=file info
+ToolChainEditTab_13=folder info
+ToolChainEditTab_14=tool
+ToolChainEditTab_15=Error \#
+ToolChainEditTab_16=:
+ToolChainEditTab_17=\n
+ToolChainEditTab_2=Current builder:
+ToolChainEditTab_3=Used tools
+ToolChainEditTab_4=Select Tools...
+ToolChainEditTab_5=Select tool
+ToolChainEditTab_6=-- NO TOOL --
+ToolChainEditTab_7=incompatibility with\u0020
+ToolChainEditTab_8=source extension conflict with\u0020
+ToolChainEditTab_9=toolchain
+ToolChainEditTab_OrphanedBuilder=Orphaned builder {0} ({1})
+ToolChainEditTab_OrphanedToolchain=Orphaned toolchain {0} ({1})
+NewVarDialog_0=Variable name:
+NewVarDialog_1=Apply to all configurations
+NewCfgDialog_0=Existing configuration
+NewCfgDialog_1=Default configuration
+NewBuildConfigurationDialog_0=Cannot create config
+NewBuildConfigurationDialog_1=>>
+PrefPage_NewCDTWizard_0=Settings will be applied to new projects created with the C/C++ project creation wizards
+WizardDefaultsTab_0=Show only supported toolchains, by default
+WizardDefaultsTab_1=Group old-style toolchains to folder
+PreferredToolchainsTab_0=Preferred toolchain will be selected by default in Wizard
+PreferredToolchainsTab_1=Make toolchain(s) preferred
+PreferredToolchainsTab_2=Make toolchain(s) not preferred
+PreferredToolchainsTab_3=Preferred toolchain(s):\u0020
+ToolSettingsTab_0=Hover over an option to display its tooltip
+BuildOptionSettingsUI_0=No tooltip is available for this option
+ScannerConfigOptionsDialog_scGroup_enabled_button=Automate discovery of paths and symbols
+ScannerConfigOptionsDialog_scGroup_label=Automated discovery of paths and symbols
+ScannerConfigOptionsDialog_scGroup_problemReporting_enabled_button=Report path detection problems
+ScannerConfigOptionsDialog_scGroup_selectedProfile_combo=Discovery profile:
+StdProjectTypeHandler_0=-- Other Toolchain --
+StdProjectTypeHandler_2=Default
+StdProjectTypeHandler_3=creation Make project: IBuilder is null
+CNewWizard_0=Others
+CWizardHandler_0=Toolchains:
+CWizardHandler_1=A Toolchain is a set of tools\n
+CWizardHandler_2=(compiler, linker, assembler)\n
+CWizardHandler_3=intended to build your project.\n
+CWizardHandler_4=Additional tools, like a debugger,\n
+CWizardHandler_5=can be associated with a toolchain.
+CWizardHandler_6=Cannot create managed project with NULL configuration
+StdBuildWizard_0=Makefile project
+MBSWizardHandler_0=At least one toolchain should be selected
+CMainWizardPage_1=Show project types and toolchains only if they are supported on the platform
+AbstractCWizard_0=Empty Project
+
+NewMakeProjFromExisting_wizard_title=New Project
+NewMakeProjFromExistingPage_show_only_supported=Show only available toolchains that support this platform
+NewMakeProjFromExisting_1=Importing Existing Code
+NewMakeProjFromExistingPage_0=Import Existing Code
+NewMakeProjFromExistingPage_1=Import Existing Code
+NewMakeProjFromExistingPage_10=Toolchain for Indexer Settings
+NewMakeProjFromExistingPage_11=
+NewMakeProjFromExistingPage_2=Create a new Makefile project from existing code in that same directory
+NewMakeProjFromExistingPage_3=Project Name
+NewMakeProjFromExistingPage_4=Project already exists
+NewMakeProjFromExistingPage_5=Existing Code Location
+NewMakeProjFromExistingPage_6=Browse...
+NewMakeProjFromExistingPage_7=Select root directory of existing code
+NewMakeProjFromExistingPage_8=Not a valid directory
+NewMakeProjFromExistingPage_9=Languages
+NewMakeProjFromExistingPage_DirReadOnlyError=Directory is read-only
+
+
+# ----------- Configuration Selection Page -----------
+BuildPropertyPage_error_Unknown_tree_element=Unknown type of element in tree of type {0}
+
+# ----------- Managed Build Custom Wizard Page Manager Error Strings -----------
+MBSCustomPageManager_error0=Unknown element type\u0020
+MBSCustomPageManager_error1=\ for extension point\u0020
+MBSCustomPageManager_error2=Unknown child element type\u0020
+MBSCustomPageManager_error3=\ for wizardPage element in extension point\u0020
+MBSCustomPageManager_error4=Missing projectType ID
+MBSCustomPageManager_error5=Missing toolchain ID
+MBSCustomPageManager_error6=Missing nature ID
+MBSProjectConfiguration_No_configuration_selected_for_project=No configuration selected for project "{0}".
+
+# ----------- Macros Block -----------
+MacrosBlock_label_header_name=Name
+MacrosBlock_label_header_type=Type
+MacrosBlock_label_header_value=Value
+MacrosBlock_label_delete_confirm_title=Build Variable Deletion Confirmation
+MacrosBlock_label_delete_confirm_message=Are you sure you want to delete the selected user Build Variable(s)?\u0020
+MacrosBlock_label_delete_all_confirm_title=Build Variables Deletion Confirmation
+MacrosBlock_label_delete_all_confirm_message=Are you sure you want to delete all user Build Variables?
+MacrosBlock_label_value_eclipse_dynamic=
+MacrosBlock_label_type_text=String
+MacrosBlock_label_type_text_list=String List
+MacrosBlock_label_type_path_file=File
+MacrosBlock_label_type_path_dir=Directory
+MacrosBlock_label_type_path_file_list=File List
+MacrosBlock_label_type_path_dir_list=Directory List
+MacrosBlock_label_type_path_any=Path
+MacrosBlock_label_type_path_any_list=Path List
+
+# ----------- New Build Macro Dialog -----------
+NewBuildMacroDialog_label_value=Value:
+NewBuildMacroDialog_label_type=Type:
+NewBuildMacroDialog_label_type_text=String
+NewBuildMacroDialog_label_type_text_list=String List
+NewBuildMacroDialog_label_type_path_file=File
+NewBuildMacroDialog_label_type_path_dir=Directory
+NewBuildMacroDialog_label_type_path_file_list=File List
+NewBuildMacroDialog_label_type_path_dir_list=Directory List
+NewBuildMacroDialog_label_type_path_any=Path
+NewBuildMacroDialog_label_type_path_any_list=Path List
+NewBuildMacroDialog_label_browse=Browse
+NewBuildMacroDialog_label_title_new=Define a New Build Variable
+NewBuildMacroDialog_label_title_edit=Edit Existing Build Variable
+NewBuildMacroDialog_label_list_title=Value of Build Variable
+
+# ----------- Refresh Policy Tab and Exception Dialog -----------
+RefreshPolicyExceptionDialog_addDialogLabel=Add Exception
+RefreshPolicyExceptionDialog_AddExceptionInfoDialog_message=Exceptions of all available exception types already exist for the selection. Please edit the existing exclusions instead.
+RefreshPolicyExceptionDialog_AddExceptionInfoDialog_title=Cannot Add Exception
+RefreshPolicyExceptionDialog_editDialogLabel=Edit Exception
+RefreshPolicyExceptionDialog_exceptionPropertiesGroupLabel=Exception Properties
+RefreshPolicyExceptionDialog_exceptionTypeDropdownLabel=Exception Type:
+RefreshPolicyTab_addExceptionButtonLabel=Add Exception...
+RefreshPolicyTab_addResourceButtonLabel=Add Resource...
+RefreshPolicyTab_addResourceDialogDescription=Select a resource to refresh:
+RefreshPolicyTab_addResourceDialogTitle=Resource Selection
+RefreshPolicyTab_deleteButtonLabel=Delete...
+RefreshPolicyTab_deleteConfirmationDialog_question_exception=You are removing an exception that has nested exceptions. Removing this exception will remove all nested exceptions. Do you want to continue?
+RefreshPolicyTab_deleteConfirmationDialog_question_resource=You are removing a resource that has exceptions. Removing this resource will also remove all associated exceptions. Do you want to continue?
+RefreshPolicyTab_deleteConfirmationDialog_title=Delete
+RefreshPolicyTab_editExceptionButtonLabel=Edit Exception...
+RefreshPolicyTab_exceptionsLabel=Exceptions
+RefreshPolicyTab_resourcesGroupLabel=Resources
+RefreshPolicyTab_tabLabel=The following resources will be refreshed after the project is built (external builder only):
+RefreshPolicyTab_resourcesTreeLabel=Resources that will be refreshed after the project is built
+
+# ----------- Resource Custom Build Step Block -----------
+ResourceCustomBuildStepBlock_label_applicability=Custom Build Step Applicability
+ResourceCustomBuildStepBlock_label_applicability_rule_before=Apply Custom Build Step Before Other Tools
+ResourceCustomBuildStepBlock_label_applicability_rule_after=Apply Custom Build Step After Other Tools
+ResourceCustomBuildStepBlock_label_applicability_rule_override=Apply Custom Build Step Overriding Other Tools
+ResourceCustomBuildStepBlock_label_applicability_rule_disable=Disable Custom Build Step
+
+# ----------- New Configuration -----------
+NewConfiguration_label_name=Name:
+NewConfiguration_label_description=Description:
+NewConfiguration_label_group=Copy settings from
+NewConfiguration_label_copy=Default configuration:
+NewConfiguration_label_clone=Existing configuration:
+NewConfiguration_label_warning=Note: The configuration name will be used as a directory name in the file system. Please ensure that it is valid for your platform.\u0020
+NewConfiguration_error_duplicateName=A configuration named "{0}" already exists.
+NewConfiguration_error_caseName=A configuration name that differs only in case to "{0}" exists.
+NewConfiguration_error_invalidName=Special characters are not allowed in the name.
+
+# ----------- Build Tool Settings -----------
+BuildToolManagerTab_BuildTools=Build tools
+BuildToolManagerTab_EnvironmentVars=Environment Vars:
+BuildToolManagerTab_MyID=my ID
+BuildToolManagerTab_NoEnvironmentVarsProvided=No environment Vars provided
+BuildToolManagerTab_NoToolVarsProvided=No Tool Vars provided
+BuildToolManagerTab_Path=Path
+BuildToolManagerTab_ProviderID=provider ID
+BuildToolManagerTab_readFromDisk=Reread from disk
+BuildToolManagerTab_refreshTheToolChains=Refresh the toolchains
+BuildToolManagerTab_ToolFlavour=Tool flavour
+BuildToolManagerTab_ToolProviders=Tool providers
+BuildToolManagerTab_ToolVars=Tool Vars:
+BuildToolSettingsPage_alloptions=All options:
+BuildToolSettingsPage_tool_command=Command:
+BuildToolSettingsPage_tool_commandLinePattern=Command\nline pattern:
+BuildToolSettingsPage_tool_advancedSettings=Expert settings:
+
+PropertyMultiCfgTab_10=Add/remove/change affected elements, do not touch others
+PropertyMultiCfgTab_11=Replace existing string lists with string list shown to user
+PropertyMultiCfgTab_3=String List Display Mode
+PropertyMultiCfgTab_4=Define how string lists from different configurations should be combined for display when lists are not equal:
+PropertyMultiCfgTab_6=Show common elements (conjunction)
+PropertyMultiCfgTab_7=Show all elements except doubles (disjunction)
+PropertyMultiCfgTab_8=String List Write Mode
+PropertyMultiCfgTab_9=Define how to save changes in string lists for different configurations:
+PropertyPageDefsTab_0=Show "Manage Configurations..." button
+PropertyPageDefsTab_1=Display "Data Hierarchy" tab on Paths and Symbols page
+PropertyPageDefsTab_10=Display "Export Settings" page
+PropertyPageDefsTab_11=Save Property Dialog Bounds
+PropertyPageDefsTab_12=Save size and position
+PropertyPageDefsTab_13=Save size only
+PropertyPageDefsTab_14=Do not save at all
+PropertyPageDefsTab_16=Display tool option tips of "Tool Settings" tab at fixed location
+PropertyPageDefsTab_4=Display "Tool Chain Editor" page
+PropertyPageDefsTab_5=Discovery Profiles Naming Rule
+PropertyPageDefsTab_6=Show disc. page names if they are unique. Else names + profile IDs.
+PropertyPageDefsTab_7=Show disc. page names if they are unique. Else show profile IDs.
+PropertyPageDefsTab_8=Always show names + profile IDs
+PropertyPageDefsTab_9=Always show profile IDs only
+PropertyPageDefsTab_showIncludeFileTab=Display "Include Files" tab on Paths and Symbols page
+PropertyPageDefsTab_showProvidersTab=Display "Preprocessor Include Paths" page
+PropertyPageDefsTab_showScannerDiscoveryTab=Display "Discovery Options" page
+
+AbstractPrefPage_0=\ Preference settings will be applied to new projects \n only when there were no toolchains selected.
+EnvironmentTab_15=Current String List DISPLAY mode. Double-click to change
+EnvironmentTab_23=Current String List WRITE mode. Double-click to change
+PrefPage_PropertyPage_0=These settings will affect behavior of C/C++ property pages
+
+CConfigWizardPage_0=Select Configurations
+CConfigWizardPage_1=Select platforms and configurations you wish to deploy on
+CConfigWizardPage_4=Project type:
+CConfigWizardPage_5=Toolchains:
+CConfigWizardPage_6=Configurations:\u0020
+CConfigWizardPage_7=Select all
+CConfigWizardPage_8=Deselect all
+CConfigWizardPage_10=At least one configuration should be available. Project cannot be created.
+CConfigWizardPage_11=At least one configuration should be selected. Please check needed configurations.
+CConfigWizardPage_12=Use "Advanced settings" button to edit project's properties.\n\nAdditional configurations can be added after project creation.\nUse "Manage configurations" buttons either on toolbar or on property pages.\u0020
+CConfigWizardPage_13=Advanced settings...
+CMainWizardPage_0=Project type:
+CDTConfigWizardPage_0=Select configurations
+
+NewCfgDialog_2=Cannot create new configuration
+NewCfgDialog_3=-- not selected --
+NewCfgDialog_4=Import from projects
+NewCfgDialog_5=Import predefined
+
+# Language Settings Providers
+BuiltinSpecsDetectorOptionPage_AllocateConsole=Allocate console in the Console View
+BuiltinSpecsDetectorOptionPage_Browse=Browse...
+BuiltinSpecsDetectorOptionPage_ChooseFile=Choose file
+BuiltinSpecsDetectorOptionPage_CompilerSpecsCommand=Command to get compiler specs:
+GCCBuildCommandParserOptionPage_CompilerPattern=Compiler command pattern:
+GCCBuildCommandParserOptionPage_ContainerForDiscoveredEntries=Container to keep discovered entries
+GCCBuildCommandParserOptionPage_File=File (use when settings vary for different files)
+GCCBuildCommandParserOptionPage_Folder=Folder (use when settings are the same for all files in each folder)
+GCCBuildCommandParserOptionPage_Project=Project (use when settings are the same for all files in the project)
+GCCBuildCommandParserOptionPage_ResolvePaths=Use heuristics to resolve paths
+
+
+CDTCommonProjectWizard_creatingProject = CDTCommonProjectWizard_creatingProject
+CDTCommonProjectWizard_0 = CDTCommonProjectWizard_0
+CDTCommonProjectWizard_1 = CDTCommonProjectWizard_1
+NewModelProjectWizard_0 = NewModelProjectWizard_0
+NewModelProjectWizard_1 = NewModelProjectWizard_1
+CMainWizardPage_0 = CMainWizardPage_0
+CMainWizardPage_1 = CMainWizardPage_1
+CDTMainWizardPage_0 = CDTMainWizardPage_0
+CDTMainWizardPage_1 = Project category is selected. Expand the category and select a concrete project type.
+CMainWizardPage_3 = CMainWizardPage_3
+CMainWizardPage_5 = CMainWizardPage_5
+CMainWizardPage_6 = CMainWizardPage_6
+CDTMainWizardPage_DefaultProjectCategory = Executable
+CDTMainWizardPage_DefaultProjectType = Empty Project
+CMainWizardPage_10 = Show project types and toolchains only if they are supported on the platform
+CMainWizardPage_7 = CMainWizardPage_7
+CMainWizardPage_DirReadOnlyError = CMainWizardPage_DirReadOnlyError
+NewModelProjectWizard_2 = C++ Project
+NewModelProjectWizard_3 = Create C++ project of selected type
+CCProjectWizard_0 = Add CC Project Nature
+NewModelProjectWizard_4 = NewModelProjectWizard_4
+NewModelProjectWizard_5 = NewModelProjectWizard_5
+NewProjectWizard_BasicNewProjectPage=basicNewProjectPage
+NewProjectWizard_BuildToolsPage=Build tools Page
+NewProjectWizard_CodeLocationPage=code location page
+NewProjectWizard_CodeProviderPage=code provider page
+NewProjectWizard_ProjectTypePage=Select project type page
+NewProjectWizard_SelectNaturePage=Select Nature Page
+CProjectWizard_0 = CProjectWizard_0
+
+
+ProjectImportConfigurator_Checking=Checking: {0}
+TemplateWizard_CannotBeCreated=Project cannot be created
+TemplateWizard_ErrorCreating=Error Creating Project
+TemplateWizard_FailedToOpen=Failed to open editor
+TemplateWizard_Generating=Generating
+TemplateWizard_InternalError=Internal Error:
+
+shareConfigButton=Share configuration
+ShareConfigTitle=Share settings
+addExclusion=Add Exclusion
+removeExclusion=Delete Exclusion
+ProvideExclusionKey=Provide the exclusion key
+extensionPointID=Extension point ID
+extensionID=Extension ID
+projectType=Project type
+configuration=Configuration
+
+NewProjectBuildToolsPage_description=CDT needs tools (like a compiler) to build your projects. If no tools are found install a tool stack and press: refresh the toolchains
+NewProjectBuildToolsPage_title=Select the tools that will be used to build your project.
+NewProjectCodeProviderPage_description=This is just a conveniance to get you started quicker.
+NewProjectCodeProviderPage_noFilesDescription=Create a project without files.
+NewProjectCodeProviderPage_noFilesName=Empty project
+NewProjectCodeProviderPage_title=select the source code you want to be in the project to start from.
+NewProjectNaturePage_CNature=My project must only handle C files
+NewProjectNaturePage_CPPNature=My project may contain both C and C++ files
+NewProjectNaturePage_SelectNaturesDescription=Select wether you want to only have C files in your project or a mix of C and cpp files
+NewProjectNaturePage_SelectNaturesTitle=Only C or C and CPP files?
+NewProjectProjectTypePage_SelectProjectType=select the type of project you want
+NewProjectProjectTypePage_SelectProjectTypeDescription=The type of project decides on what the target of the project is and how it will be build.
+NewProjectSourceLocationPage_PutCodeInRootOfProject=Put Code in the root of the project
+NewProjectSourceLocationPage_PutCodeInSelectedFolder=put code in a custom folder
+NewProjectSourceLocationPage_PutCodeInSrcFolder=put code in the src folder
+NewProjectSourceLocationPage_SelectLocation=select the location of the source code in the project.
+NewProjectSourceLocationPage_SeperateSourceCodeFromTheRest=You can seperate the source code from the rest of the project content by putting it in a source folder.
+NewProjectSourceLocationPage_YouMustProvideText=You must provide a text in the text field that matches a valid folder name
+BuildToolManagerTab_NoBuildToolSelected=No build tool Selected
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_BuildSettings.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_BuildSettings.java
new file mode 100644
index 000000000..fcf0b2bab
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_BuildSettings.java
@@ -0,0 +1,10 @@
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+public class Page_BuildSettings extends AbstractPage {
+ @Override
+ protected boolean isSingle() {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Environment.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Environment.java
new file mode 100644
index 000000000..03fc5c5ba
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Environment.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class Page_Environment extends AbstractPage {
+ @Override
+ protected boolean isSingle() {
+ return true;
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_PathAndSymb.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_PathAndSymb.java
new file mode 100644
index 000000000..8cebe1351
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_PathAndSymb.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+/**
+ * The class have the same functionality as superclass.
+ * The only need to create it is distinguishing tabs.
+ *
+ */
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class Page_PathAndSymb extends AbstractPage {
+
+ @Override
+ protected boolean isSingle() {
+ return false;
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_ProjectSettings.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_ProjectSettings.java
new file mode 100644
index 000000000..87f3e2d93
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_ProjectSettings.java
@@ -0,0 +1,10 @@
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+public class Page_ProjectSettings extends AbstractPage {
+ @Override
+ protected boolean isSingle() {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Team.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Team.java
new file mode 100644
index 000000000..b6fb18c93
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Team.java
@@ -0,0 +1,12 @@
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+public class Page_Team extends AbstractPage {
+
+ @Override
+ protected boolean isSingle() {
+ return true;
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Variables.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Variables.java
new file mode 100644
index 000000000..255284d19
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_Variables.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class Page_Variables extends AbstractPage {
+ @Override
+ protected boolean isSingle() {
+ return true;
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_head_build.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_head_build.java
new file mode 100644
index 000000000..996eb4e56
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/pages/Page_head_build.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.pages;
+
+import org.eclipse.cdt.ui.newui.AbstractPage;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class Page_head_build extends AbstractPage {
+ @Override
+ protected boolean isSingle() {
+ return false;
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/AbstractAutoBuildPropertyTab.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/AbstractAutoBuildPropertyTab.java
new file mode 100644
index 000000000..74eecb8e2
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/AbstractAutoBuildPropertyTab.java
@@ -0,0 +1,40 @@
+package io.sloeber.autoBuild.ui.tabs;
+
+import io.sloeber.autoBuild.api.IAutoBuildConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICResourceDescription;
+import org.eclipse.cdt.ui.newui.AbstractCPropertyTab;
+import org.eclipse.swt.widgets.Shell;
+
+public abstract class AbstractAutoBuildPropertyTab extends AbstractCPropertyTab {
+
+ //Map myAutoConfDescMap = new HashMap<>();
+ IAutoBuildConfigurationDescription myAutoConfDesc = null;
+
+ @Override
+ public void updateData(ICResourceDescription cfgd) {
+ if (cfgd != null) {
+ myAutoConfDesc = IAutoBuildConfigurationDescription.getConfig(cfgd.getConfiguration());
+ }
+ if (page.isMultiCfg()) {
+ setAllVisible(false, null);
+ } else {
+ setAllVisible(true, null);
+ }
+
+ updateButtons();
+ }
+
+ @Override
+ public void performApply(ICResourceDescription src, ICResourceDescription dst) {
+ //JABA this method is forced to override but is not used
+ }
+
+ @Override
+ public boolean canSupportMultiCfg() {
+ return false;
+ }
+
+ protected Shell getShell() {
+ return usercomp.getShell();
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildBehaviourTab.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildBehaviourTab.java
new file mode 100644
index 000000000..bde41140e
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildBehaviourTab.java
@@ -0,0 +1,448 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2012 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ * IBM Corporation
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.tabs;
+
+import static io.sloeber.autoBuild.helpers.api.AutoBuildConstants.*;
+
+import java.text.MessageFormat;
+
+import org.eclipse.cdt.core.settings.model.ICResourceDescription;
+import org.eclipse.cdt.ui.newui.AbstractCPropertyTab;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Text;
+import io.sloeber.autoBuild.api.IBuildRunner;
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class BuildBehaviourTab extends AbstractAutoBuildPropertyTab {
+
+ private class BuildTargetCombo {
+ Button myCheckBoxButton;
+ Text myEntryField;
+ Button myVariablesButton;
+
+ BuildTargetCombo(Composite g4, String groupLabel, SelectionAdapter checkListener, ModifyListener textListener) {
+ Font font = g4.getFont();
+ myCheckBoxButton = new Button(g4, SWT.CHECK);
+ myCheckBoxButton.setText(groupLabel);
+ myCheckBoxButton.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1));
+ myCheckBoxButton.setFont(font);
+ myCheckBoxButton.addSelectionListener(checkListener);
+
+ myEntryField = new Text(g4, SWT.SINGLE | SWT.BORDER);
+ myEntryField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ myEntryField.setFont(font);
+ myEntryField.addModifyListener(textListener);
+
+ GridData gd = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
+ gd.minimumWidth = BUTTON_WIDTH;
+ myVariablesButton = new Button(g4, SWT.PUSH);
+ myVariablesButton.setText(VARIABLESBUTTON_NAME);
+ myVariablesButton.setLayoutData(gd);
+ myVariablesButton.setFont(font);
+ myVariablesButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ String x = AbstractCPropertyTab.getVariableDialog(getShell(),
+ myAutoConfDesc.getCdtConfigurationDescription());
+ if (x != null)
+ myEntryField.insert(x);
+ }
+ });
+ }
+
+ public void setEnabled(boolean check, boolean entry) {
+ myCheckBoxButton.setEnabled(check);
+ myEntryField.setEnabled(check && entry);
+ myVariablesButton.setEnabled(check && entry);
+ }
+ }
+
+ private static final int SPINNER_MAX_VALUE = 10000;
+ private static final int SPINNER_MIN_VALUE = 2;
+
+ private Button myUseStandardBuildArgumentsButton;
+ private Button myUseCustomBuildArgumentsButton;
+ private Text myBuildArgumentsText;
+ private Button myStopOnErrorButton;
+ private Button myUseParallelBuildButton;
+
+ private Button myParalOpt_OptimalButton;
+ private Button myParalOpt_SpecificButton;
+ private Button myParalOpt_UnlimitedButton;
+ private Spinner myParalOpt_NumberSpinner;
+
+ private BuildTargetCombo myAutoBuildCombo;
+ private BuildTargetCombo myIncreBuildCombo;
+ private BuildTargetCombo myCleanBuildCombo;
+ private Button myBuildArgumentsVarButton;
+
+ @Override
+ public void createControls(Composite parent) {
+ super.createControls(parent);
+ usercomp.setLayout(new GridLayout(1, false));
+ Font font = usercomp.getFont();
+
+ // Build setting group
+ Group grp_buildSettings = setupGroup(usercomp, Messages.BuildBehaviourTab_Header, 2, GridData.FILL_HORIZONTAL);
+ GridLayout gl = new GridLayout(2, true);
+ gl.verticalSpacing = 0;
+ gl.marginWidth = 0;
+ grp_buildSettings.setLayout(gl);
+
+ myUseStandardBuildArgumentsButton = new Button(grp_buildSettings, SWT.RADIO);
+ myUseStandardBuildArgumentsButton.setText(Messages.BuildBehaviourTab_Use_standard_build_arguments);
+ setupControl(myUseStandardBuildArgumentsButton, 3, GridData.BEGINNING);
+ myUseStandardBuildArgumentsButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setUseStandardBuildArguments(true);
+ updateButtons();
+ }
+ });
+
+ Composite c1 = new Composite(grp_buildSettings, SWT.NONE);
+ setupControl(c1, 1, GridData.FILL_BOTH);
+ GridData gd = (GridData) c1.getLayoutData();
+ gd.verticalSpan = 2;
+ gd.verticalIndent = 0;
+ c1.setLayoutData(gd);
+ gl = new GridLayout(1, false);
+ c1.setLayout(gl);
+
+ // myStopOnErrorButton = setupCheck(c1, Messages.BuilderSettingsTab_10, 1, GridData.BEGINNING);
+ // ((GridData) (myStopOnErrorButton.getLayoutData())).horizontalIndent = 15;
+ myStopOnErrorButton = new Button(c1, SWT.CHECK);
+ myStopOnErrorButton.setText(Messages.BuilderSettingsTab_10);
+ gd = new GridData(SWT.LEFT);
+ gd.horizontalSpan = 1;
+ gd.horizontalIndent = 15;
+ myStopOnErrorButton.setLayoutData(gd);
+ myStopOnErrorButton.setFont(font);
+ myStopOnErrorButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setStopOnFirstBuildError(myStopOnErrorButton.getSelection());
+ }
+ });
+
+ Composite c2 = new Composite(grp_buildSettings, SWT.NONE);
+ setupControl(c2, 1, GridData.FILL_BOTH);
+ gl = new GridLayout(1, false);
+ c2.setLayout(gl);
+
+ myUseParallelBuildButton = new Button(c2, SWT.CHECK);
+ myUseParallelBuildButton.setText(Messages.BuilderSettingsTab_EnableParallelBuild);
+ setupControl(myUseParallelBuildButton, 1, GridData.BEGINNING);
+ myUseParallelBuildButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setIsParallelBuild(myUseParallelBuildButton.getSelection());
+ updateButtons();
+ }
+ });
+
+ Composite c3 = new Composite(grp_buildSettings, SWT.NONE);
+ setupControl(c3, 1, GridData.FILL_BOTH);
+ gl = new GridLayout(2, false);
+ gl.verticalSpacing = 0;
+ gl.marginWidth = 0;
+ gl.marginHeight = 0;
+ c3.setLayout(gl);
+
+ //text will be replaced during update data
+ Integer one = Integer.valueOf(1);
+ myParalOpt_OptimalButton = new Button(c3, SWT.RADIO);
+ myParalOpt_OptimalButton.setText(MessageFormat.format(Messages.BuilderSettingsTab_UseOptimalJobs, one));
+ setupControl(myParalOpt_OptimalButton, 2, GridData.BEGINNING);
+ ((GridData) (myParalOpt_OptimalButton.getLayoutData())).horizontalIndent = 15;
+ myParalOpt_OptimalButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (myParalOpt_OptimalButton.getSelection()) {
+ myAutoConfDesc.setParallelizationNum(PARRALLEL_BUILD_OPTIMAL_JOBS);
+ updateButtons();
+ }
+ }
+ });
+
+ myParalOpt_SpecificButton = new Button(c3, SWT.RADIO);
+ myParalOpt_SpecificButton.setText(Messages.BuilderSettingsTab_UseParallelJobs);
+ setupControl(myParalOpt_SpecificButton, 1, GridData.BEGINNING);
+ ((GridData) (myParalOpt_SpecificButton.getLayoutData())).horizontalIndent = 15;
+ myParalOpt_SpecificButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (myParalOpt_SpecificButton.getSelection()) {
+ myAutoConfDesc.setParallelizationNum(myParalOpt_NumberSpinner.getSelection());
+ updateButtons();
+ }
+ }
+ });
+
+ myParalOpt_NumberSpinner = new Spinner(c3, SWT.BORDER);
+ setupControl(myParalOpt_NumberSpinner, 1, GridData.BEGINNING);
+ myParalOpt_NumberSpinner.setValues(SPINNER_MIN_VALUE, SPINNER_MIN_VALUE, SPINNER_MAX_VALUE, 0, 1, 10);
+ myParalOpt_NumberSpinner.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ myAutoConfDesc.setParallelizationNum(myParalOpt_NumberSpinner.getSelection());
+ updateButtons();
+ }
+ });
+ myParalOpt_NumberSpinner.getAccessible().addAccessibleListener(new AccessibleAdapter() {
+ @Override
+ public void getName(AccessibleEvent e) {
+ e.result = Messages.BuilderSettingsTab_UseParallelJobs;
+ }
+ });
+ myParalOpt_NumberSpinner.setToolTipText(Messages.BuilderSettingsTab_UseParallelJobs);
+
+ myParalOpt_UnlimitedButton = new Button(c3, SWT.RADIO);
+ myParalOpt_UnlimitedButton.setText(Messages.BuilderSettingsTab_UseUnlimitedJobs);
+ setupControl(myParalOpt_UnlimitedButton, 2, GridData.BEGINNING);
+ ((GridData) (myParalOpt_UnlimitedButton.getLayoutData())).horizontalIndent = 15;
+ myParalOpt_UnlimitedButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (myParalOpt_UnlimitedButton.getSelection()) {
+ myAutoConfDesc.setParallelizationNum(PARRALLEL_BUILD_UNLIMITED_JOBS);
+ updateButtons();
+ }
+ }
+ });
+
+ myUseCustomBuildArgumentsButton = new Button(grp_buildSettings, SWT.RADIO);
+ myUseCustomBuildArgumentsButton.setText(Messages.BuildBehaviourTab_Use_custom_build_arguments);
+ setupControl(myUseCustomBuildArgumentsButton, 3, GridData.BEGINNING);
+ myUseCustomBuildArgumentsButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setUseStandardBuildArguments(false);
+ updateButtons();
+ }
+ });
+
+ Composite c0 = setupComposite(grp_buildSettings, 3, GridData.FILL_BOTH);
+ setupControl(c0, 2, GridData.FILL_BOTH);
+ setupLabel(c0, Messages.BuildBehaviourTab_Build_arguments, 1, GridData.BEGINNING);
+ //myBuildArgumentsText = setupBlock(c0, myUseCustomBuildArgumentsButton);
+ myBuildArgumentsText = setupText(c0, 1, GridData.FILL_HORIZONTAL);
+ myBuildArgumentsVarButton = setupButton(c0, VARIABLESBUTTON_NAME, 1, GridData.END);
+ myBuildArgumentsVarButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ String x = AbstractCPropertyTab.getVariableDialog(getShell(),
+ myAutoConfDesc.getCdtConfigurationDescription());
+ if (x != null)
+ myBuildArgumentsText.insert(x);
+ }
+ });
+
+ myBuildArgumentsText.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ String arguments = myBuildArgumentsText.getText().trim();
+ myAutoConfDesc.setCustomBuildArguments(arguments);
+ }
+ });
+
+ Group g4 = setupGroup(usercomp, Messages.BuilderSettingsTab_14, 3, GridData.FILL_HORIZONTAL);
+
+ Label l = new Label(g4, SWT.NONE);
+ l.setText(Messages.BuilderSettingsTab_workbench_build_type);
+ l.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, 1));
+ l.setFont(font);
+
+ l = new Label(g4, SWT.NONE);
+ l.setText(Messages.BuilderSettingsTab_make_build_target);
+ l.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 2, 1));
+ l.setFont(font);
+
+ myAutoBuildCombo = new BuildTargetCombo(g4, Messages.BuilderSettingsTab_auto_build, new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setAutoBuildEnabled(myAutoBuildCombo.myCheckBoxButton.getSelection());
+ updateButtons();
+ }
+ }, new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ myAutoConfDesc.setAutoMakeTarget(myAutoBuildCombo.myEntryField.getText());
+ }
+ });
+
+ myIncreBuildCombo = new BuildTargetCombo(g4, Messages.BuilderSettingsTab_19, new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setIncrementalBuildEnable(myIncreBuildCombo.myCheckBoxButton.getSelection());
+ updateButtons();
+ }
+ }, new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ myAutoConfDesc.setIncrementalMakeTarget(myIncreBuildCombo.myEntryField.getText());
+ }
+ });
+
+ myCleanBuildCombo = new BuildTargetCombo(g4, Messages.BuilderSettingsTab_20, new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ myAutoConfDesc.setCleanBuildEnable(myCleanBuildCombo.myCheckBoxButton.getSelection());
+ updateButtons();
+ }
+ }, new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ myAutoConfDesc.setCleanMakeTarget(myCleanBuildCombo.myEntryField.getText());
+ }
+ });
+
+ }
+
+ private void updateDisplayedData() {
+ int parallelType = myAutoConfDesc.getParallelizationNum(false);
+ int parallelnum = myAutoConfDesc.getParallelizationNum(true);
+ int optimalNum = myAutoConfDesc.getOptimalParallelJobNum();
+ myParalOpt_OptimalButton.setText(MessageFormat.format(Messages.BuilderSettingsTab_UseOptimalJobs, Integer.valueOf(optimalNum)));
+ switch (parallelType) {
+ case PARRALLEL_BUILD_UNLIMITED_JOBS:
+ myParalOpt_NumberSpinner.setSelection(optimalNum);
+ myParalOpt_UnlimitedButton.setSelection(true);
+ break;
+ case PARRALLEL_BUILD_OPTIMAL_JOBS:
+ myParalOpt_NumberSpinner.setSelection(optimalNum);
+ myParalOpt_OptimalButton.setSelection(true);
+ break;
+ default:
+ myParalOpt_NumberSpinner.setSelection(parallelnum);
+ myParalOpt_SpecificButton.setSelection(true);
+ }
+
+ myUseParallelBuildButton.setSelection(myAutoConfDesc.isParallelBuild());
+ setTriSelection(myUseStandardBuildArgumentsButton, myAutoConfDesc.useStandardBuildArguments());
+ setTriSelection(myUseCustomBuildArgumentsButton, !myAutoConfDesc.useStandardBuildArguments());
+ setTriSelection(myStopOnErrorButton, myAutoConfDesc.stopOnFirstBuildError());
+ myBuildArgumentsText.setText(myAutoConfDesc.getCustomBuildArguments());
+
+ myAutoBuildCombo.myCheckBoxButton.setSelection(myAutoConfDesc.isAutoBuildEnabled());
+ myIncreBuildCombo.myCheckBoxButton.setSelection(myAutoConfDesc.isIncrementalBuildEnabled());
+ myCleanBuildCombo.myCheckBoxButton.setSelection(myAutoConfDesc.isCleanBuildEnabled());
+
+ myAutoBuildCombo.myEntryField.setText(myAutoConfDesc.getAutoMakeTarget());
+ myIncreBuildCombo.myEntryField.setText(myAutoConfDesc.getIncrementalMakeTarget());
+ myCleanBuildCombo.myEntryField.setText(myAutoConfDesc.getCleanMakeTarget());
+
+ //On this page we can enable the fields based on buildrunner in this call
+ //as this page does not allow changing the build runner
+ IBuildRunner runner = myAutoConfDesc.getBuilder().getBuildRunner();
+ myUseStandardBuildArgumentsButton.setEnabled(runner.supportsCustomCommand());
+ myUseCustomBuildArgumentsButton.setEnabled(runner.supportsCustomCommand());
+ myStopOnErrorButton.setEnabled(runner.supportsStopOnError());
+
+ }
+
+ @Override
+ public void updateData(ICResourceDescription cfgd) {
+ super.updateData(cfgd);
+ updateDisplayedData();
+ }
+
+ /**
+ * sets widgets states
+ */
+ @Override
+ protected void updateButtons() {
+ IBuildRunner runner = myAutoConfDesc.getBuilder().getBuildRunner();
+ boolean isMake = runner.supportsMakeFiles();
+ if (myAutoConfDesc.useStandardBuildArguments()) {
+ myStopOnErrorButton.setEnabled(runner.supportsStopOnError());
+ myBuildArgumentsText.setEnabled(false);
+ myBuildArgumentsVarButton.setEnabled(false);
+ updateParallelBlock();
+ } else {
+ myStopOnErrorButton.setEnabled(false);
+ myBuildArgumentsText.setEnabled(runner.supportsCustomCommand());
+ myBuildArgumentsVarButton.setEnabled(runner.supportsCustomCommand());
+
+ myUseParallelBuildButton.setEnabled(false);
+ myParalOpt_OptimalButton.setEnabled(false);
+ myParalOpt_SpecificButton.setEnabled(false);
+ myParalOpt_UnlimitedButton.setEnabled(false);
+ }
+ myAutoBuildCombo.setEnabled(runner.supportsAutoBuild(), myAutoConfDesc.isAutoBuildEnabled() && isMake);
+ myIncreBuildCombo.setEnabled(runner.supportsIncrementalBuild(),
+ myAutoConfDesc.isIncrementalBuildEnabled() && isMake);
+ myCleanBuildCombo.setEnabled(runner.supportsCleanBuild(), myAutoConfDesc.isCleanBuildEnabled() && isMake);
+
+ }
+
+ private void updateParallelBlock() {
+ IBuildRunner buildRunner = myAutoConfDesc.getBuilder().getBuildRunner();
+
+ boolean isParallelSupported = buildRunner.supportsParallelBuild();
+ boolean isParallelOn = myAutoConfDesc.isParallelBuild();
+
+ myUseParallelBuildButton.setEnabled(isParallelSupported);
+
+ if (!isParallelSupported) {
+ return;
+ }
+
+ myParalOpt_OptimalButton.setEnabled(isParallelOn);
+ myParalOpt_SpecificButton.setEnabled(isParallelOn);
+ myParalOpt_UnlimitedButton.setEnabled(isParallelOn);
+
+ myParalOpt_NumberSpinner.setEnabled(myAutoConfDesc.getParallelizationNum(false) >= 0);
+ }
+
+ // This page can be displayed for project only
+ @Override
+ public boolean canBeVisible() {
+ return page.isForProject() || page.isForPrefs();
+ }
+
+ @Override
+ protected void performDefaults() {
+
+ // if (icfg instanceof IMultiConfiguration) {
+ // IConfiguration[] cfs = (IConfiguration[]) ((IMultiConfiguration) icfg).getItems();
+ // for (int i = 0; i < cfs.length; i++) {
+ // IAutoBuildConfigurationDescription b = cfs[i].getEditableBuilder();
+ // copyBuilders(b.getSuperClass(), b);
+ // }
+ // } else
+ // copyBuilders(bldr.getSuperClass(), bldr);
+ // updateData(getResDesc());
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildOptionComboFieldEditor.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildOptionComboFieldEditor.java
new file mode 100644
index 000000000..f6d2847ad
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildOptionComboFieldEditor.java
@@ -0,0 +1,282 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2016 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Rational Software - Initial API and implementation
+ * ARM Ltd. - basic tooltip support
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.tabs;
+
+import static io.sloeber.autoBuild.helpers.api.AutoBuildConstants.*;
+
+import java.util.LinkedList;
+import java.util.List;
+import org.eclipse.cdt.utils.ui.controls.ControlFactory;
+import org.eclipse.jface.preference.FieldEditor;
+import org.eclipse.osgi.util.TextProcessor;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.PlatformUI;
+
+import io.sloeber.autoBuild.schema.api.IOption;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class BuildOptionComboFieldEditor extends FieldEditor {
+
+ // Widgets and bookeeping variables
+ private Combo optionSelector;
+ private IOption myOption;
+ private String selected;
+ private String myDefaultValue;
+
+ /**
+ * @param name
+ * @param label
+ * @param option
+ * @param sel
+ * @param parent
+ */
+ public BuildOptionComboFieldEditor(String name, String label, IOption option, String sel, String defaultValue,
+ Composite parent) {
+ init(name, label);
+ myOption = option;
+ selected = sel;
+ myDefaultValue = defaultValue;
+ createControl(parent);
+ }
+
+ /**
+ * @param name
+ * @param label
+ * @param tooltip
+ * @param contextId
+ * @param option
+ * @param sel
+ * @param parent
+ */
+ public BuildOptionComboFieldEditor(String name, String label, String tooltip, String contextId, IOption option,
+ String sel, String defaultValue, Composite parent) {
+ this(name, label, option, sel, defaultValue, parent);
+ setToolTip(tooltip);
+ if (!contextId.isEmpty())
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(optionSelector, contextId);
+ }
+
+ /**
+ * Sets the field editor's tool tip text to the argument, which
+ * may be null indicating that no tool tip text should be shown.
+ *
+ * @param string
+ * the new tool tip text (or null)
+ *
+ * @exception SWTException
+ *
+ * ERROR_WIDGET_DISPOSED - if the field editor has been
+ * disposed
+ * ERROR_THREAD_INVALID_ACCESS - if not called from the
+ * thread that created the field editor
+ *
+ */
+ public void setToolTip(String tooltip) {
+ optionSelector.setToolTipText(tooltip);
+ getLabelControl().setToolTipText(tooltip);
+ }
+
+ /**
+ * Returns the field editor's tool tip text, or null if it has
+ * not been set.
+ *
+ * @return the field editor's tool tip text
+ *
+ * @exception SWTException
+ *
+ * ERROR_WIDGET_DISPOSED - if the field editor has been
+ * disposed
+ * ERROR_THREAD_INVALID_ACCESS - if not called from the
+ * thread that created the field editor
+ *
+ */
+ public String getToolTipText() {
+ return optionSelector.getToolTipText();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int)
+ */
+ @Override
+ protected void adjustForNumColumns(int numColumns) {
+ // For now grab the excess space
+ GridData gd = (GridData) optionSelector.getLayoutData();
+ gd.horizontalSpan = numColumns - 1;
+ gd.grabExcessHorizontalSpace = true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int)
+ */
+ @Override
+ protected void doFillIntoGrid(Composite parent, int numColumns) {
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = numColumns;
+ parent.setLayoutData(gd);
+
+ // Add the label
+ Label label = getLabelControl(parent);
+ GridData labelData = new GridData();
+ labelData.horizontalSpan = 1;
+ labelData.grabExcessHorizontalSpace = false;
+ label.setLayoutData(labelData);
+
+ // Now add the combo selector
+ optionSelector = ControlFactory.createSelectCombo(parent, getOptions(), selected);
+ GridData selectorData = (GridData) optionSelector.getLayoutData();
+ selectorData.horizontalSpan = numColumns - 1;
+ selectorData.grabExcessHorizontalSpace = true;
+ optionSelector.setLayoutData(selectorData);
+ optionSelector.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent evt) {
+ String oldValue = selected;
+ int index = optionSelector.getSelectionIndex();
+ selected = index == -1 ? "" : optionSelector.getItem(index); //$NON-NLS-1$
+ setPresentsDefaultValue(false);
+ fireValueChanged(VALUE, oldValue, selected);
+ }
+ });
+ }
+
+ /**
+ * Get all applicable values for this enumerated Option, But display
+ * only the enumerated values that are valid (static set of enumerated values
+ * defined
+ * in the plugin.xml file) in the UI Combobox. This refrains the user from
+ * selecting an
+ * invalid value and avoids issuing an error message.
+ *
+ * @return
+ */
+ private String[] getOptions() {
+
+ List enumValidList = new LinkedList<>();
+ enumValidList.add(EMPTY_STRING);//Default is blank
+ for (String curEnumID : myOption.getEnumIDs()) {
+ if (curEnumID.isBlank()) {
+ continue;
+ }
+ enumValidList.add(TextProcessor.process(myOption.getEnumName(curEnumID)));
+ }
+ return enumValidList.toArray(new String[enumValidList.size()]);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditor#doLoad()
+ */
+ @Override
+ protected void doLoad() {
+
+ // set all the options to option selector
+ optionSelector.removeAll();
+ optionSelector.setItems(getOptions());
+
+ selected = myOption.getEnumName(myDefaultValue);
+
+ // Set the index of selection in the combo box
+ int index = optionSelector.indexOf(selected);
+ optionSelector.select(index >= 0 ? index : 0);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault()
+ */
+ @Override
+ protected void doLoadDefault() {
+ doLoad();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditor#doStore()
+ */
+ @Override
+ protected void doStore() {
+ // Save the selected item in the store
+ int index = optionSelector.getSelectionIndex();
+ selected = index == -1 ? "" : optionSelector.getItem(index); //$NON-NLS-1$
+ getPreferenceStore().setValue(getPreferenceName(), selected);
+ }
+
+ public String getSelection() {
+ return selected;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls()
+ */
+ @Override
+ public int getNumberOfControls() {
+ // There is just the label from the parent and the combo
+ return 2;
+ }
+
+ /**
+ * Returns this field editor's text control.
+ *
+ * @return the text control, or null
if no
+ * text field is created yet
+ */
+ protected Combo getComboControl() {
+ return optionSelector;
+ }
+
+ /**
+ * Returns this field editor's text control.
+ *
+ * @return the text control, or null
if no
+ * text field is created yet
+ */
+ public Combo getComboControl(Composite parent) {
+ checkParent(optionSelector, parent);
+ return optionSelector;
+ }
+
+ /**
+ * Set whether or not the controls in the field editor
+ * are enabled.
+ *
+ * @param enabled
+ * The enabled state.
+ * @param parent
+ * The parent of the controls in the group.
+ * Used to create the controls if required.
+ */
+ @Override
+ public void setEnabled(boolean enabled, Composite parent) {
+ getLabelControl(parent).setEnabled(enabled);
+ optionSelector.setEnabled(enabled);
+ }
+
+ public String getSelectionAsID() {
+ int index = optionSelector.getSelectionIndex();
+ if (index == -1) {
+ return null;
+ }
+ String curEnumName = optionSelector.getItem(index);
+ return myOption.getEnumIDFromName(curEnumName);
+
+ }
+
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildStepsTab.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildStepsTab.java
new file mode 100644
index 000000000..88484e092
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildStepsTab.java
@@ -0,0 +1,493 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2016 Intel Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ *******************************************************************************/
+package io.sloeber.autoBuild.ui.tabs;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.cdt.core.settings.model.ICResourceDescription;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+/**
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+public class BuildStepsTab extends AbstractAutoBuildPropertyTab {
+ private Combo preCmd;
+ private Combo preDes;
+ private Combo postCmd;
+ private Combo postDes;
+ private boolean myAreWeUpdating = true;
+ // private ITool tool;
+
+ private static final String label1 = Messages.BuildStepsTab_0;
+ private static final String label2 = Messages.BuildStepsTab_1;
+ // private static final String PATH_SEPERATOR = ";"; //$NON-NLS-1$
+ // private static final String rcbsToolId = "org.eclipse.cdt.managedbuilder.ui.rcbs"; //$NON-NLS-1$
+ // private static final String rcbsToolName = "Resource Custom Build Step"; //$NON-NLS-1$
+ // private static final String rcbsToolInputTypeId = "org.eclipse.cdt.managedbuilder.ui.rcbs.inputtype"; //$NON-NLS-1$
+ // private static final String rcbsToolInputTypeName = "Resource Custom Build Step Input Type"; //$NON-NLS-1$
+ // private static final String rcbsToolOutputTypeId = "org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype"; //$NON-NLS-1$
+ // private static final String rcbsToolOutputTypeName = "Resource Custom Build Step Output Type"; //$NON-NLS-1$
+
+ // private enum FIELD {
+ // PRECMD, PREANN, PSTCMD, PSTANN
+ // }
+ //
+ // private Set set1 = new TreeSet<>();
+ // private Set set2 = new TreeSet<>();
+ // private Set set3 = new TreeSet<>();
+ // private Set set4 = new TreeSet<>();
+ private static final String EMPTY_STRING = new String();
+
+ // private static final String[] rcbsApplicabilityRules = {
+ // Messages.ResourceCustomBuildStepBlock_label_applicability_rule_override,
+ // // ManagedBuilderMessages_getResourceString("ResourceCustomBuildStepBlock_label_applicability_rule_before"),
+ // // ManagedBuilderMessages_getResourceString("ResourceCustomBuildStepBlock_label_applicability_rule_after"),
+ // Messages.ResourceCustomBuildStepBlock_label_applicability_rule_disable, };
+
+ @Override
+ public void createControls(Composite parent) {
+ super.createControls(parent);
+ usercomp.setLayout(new GridLayout(1, false));
+
+ if (page.isForProject())
+ createForProject();
+ else
+ createForFile();
+ }
+
+ /**
+ *
+ */
+ private void createForProject() {
+ Group g1 = setupGroup(usercomp, Messages.BuildStepsTab_2, 1, GridData.FILL_HORIZONTAL);
+ setupLabel(g1, label1, 1, GridData.BEGINNING);
+ preCmd = setCombo(g1);
+
+ setupLabel(g1, label2, 1, GridData.BEGINNING);
+ preDes = setCombo(g1);
+
+ Group g2 = setupGroup(usercomp, Messages.BuildStepsTab_3, 1, GridData.FILL_HORIZONTAL);
+ setupLabel(g2, label1, 1, GridData.BEGINNING);
+ postCmd = setCombo(g2);
+
+ setupLabel(g2, label2, 1, GridData.BEGINNING);
+ postDes = setCombo(g2);
+
+ updateComboItems();
+
+ //Add the listeners
+ preCmd.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if (myAreWeUpdating) {
+ return;
+ }
+ myAutoConfDesc.setPrebuildStep(preCmd.getText());
+ }
+ });
+
+ preDes.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if (myAreWeUpdating) {
+ return;
+ }
+ myAutoConfDesc.setPreBuildAnouncement(preDes.getText());
+ }
+ });
+
+ postCmd.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if (myAreWeUpdating) {
+ return;
+ }
+ myAutoConfDesc.setPostbuildStep(postCmd.getText());
+ }
+ });
+
+ postCmd.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if (myAreWeUpdating) {
+ return;
+ }
+ myAutoConfDesc.setPostbuildStep(postCmd.getText());
+ }
+ });
+
+ postDes.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ if (myAreWeUpdating) {
+ return;
+ }
+ myAutoConfDesc.setPostBuildAnouncement(postDes.getText());
+ }
+ });
+ }
+
+ /**
+ *
+ */
+ private void createForFile() {
+ // Group g1 = setupGroup(usercomp, Messages.BuildStepsTab_4, 1, GridData.FILL_HORIZONTAL);
+ // setupLabel(g1, Messages.ResourceCustomBuildStepBlock_label_applicability, 1, GridData.BEGINNING);
+ //
+ // combo = new Combo(g1, SWT.READ_ONLY | SWT.DROP_DOWN | SWT.BORDER);
+ // combo.setItems(rcbsApplicabilityRules);
+ // combo.addSelectionListener(new SelectionAdapter() {
+ // @Override
+ // public void widgetSelected(SelectionEvent e) {
+ // rcfg.setRcbsApplicability(sel2app(combo.getSelectionIndex()));
+ // }
+ // });
+ //
+ // setupLabel(g1, Messages.BuildStepsTab_5, 1, GridData.BEGINNING);
+ // preCmd = setCombo(g1, FIELD.PRECMD, set1);
+ // preCmd.addModifyListener(new ModifyListener() {
+ // @Override
+ // public void modifyText(ModifyEvent e) {
+ // if (canModify && tool != null) {
+ // IInputType[] ein = tool.getInputTypes();
+ // if (ein != null && ein.length > 0) {
+ // IAdditionalInput[] add = ein[0].getAdditionalInputs();
+ // if (add != null && add.length > 0) {
+ // add[0].setPaths(preCmd.getText());
+ // }
+ // }
+ // }
+ // }
+ // });
+ //
+ // setupLabel(g1, Messages.BuildStepsTab_6, 1, GridData.BEGINNING);
+ // preDes = setCombo(g1, FIELD.PREANN, set2);
+ // preDes.addModifyListener(new ModifyListener() {
+ // @Override
+ // public void modifyText(ModifyEvent e) {
+ // if (canModify && tool != null) {
+ // IOutputType[] out = tool.getOutputTypes();
+ // if (valid(out))
+ // out[0].setOutputNames(preDes.getText());
+ // }
+ // }
+ // });
+ //
+ // setupLabel(g1, label1, 1, GridData.BEGINNING);
+ // postCmd = setCombo(g1, FIELD.PSTCMD, set3);
+ // postCmd.addModifyListener(new ModifyListener() {
+ // @Override
+ // public void modifyText(ModifyEvent e) {
+ // if (canModify && tool != null)
+ // tool.setToolCommand(postCmd.getText());
+ // }
+ // });
+ //
+ // setupLabel(g1, label2, 1, GridData.BEGINNING);
+ // postDes = setCombo(g1, FIELD.PSTANN, set4);
+ // postDes.addModifyListener(new ModifyListener() {
+ // @Override
+ // public void modifyText(ModifyEvent e) {
+ // if (canModify && tool != null)
+ // tool.setAnnouncement(postDes.getText());
+ // }
+ // });
+ }
+
+ @Override
+ public void updateData(ICResourceDescription cfgd) {
+ super.updateData(cfgd);
+ myAreWeUpdating = true;
+ update();
+ myAreWeUpdating = false;
+
+ }
+
+ private void update() {
+
+ updateComboItems();
+
+ if (page.isForProject()) {
+ preCmd.setText(myAutoConfDesc.getPrebuildStep());
+ preDes.setText(myAutoConfDesc.getPreBuildAnouncement());
+ postCmd.setText(myAutoConfDesc.getPostbuildStep());
+ postDes.setText(myAutoConfDesc.getPostBuildAnouncement());
+ } else {
+ // rcfg = (IFileInfo) getResCfg(cfgdescr);
+ // combo.select(app2sel(rcfg.getRcbsApplicability()));
+ // tool = getRcbsTool(rcfg);
+ //
+ // if (tool != null) {
+ // preCmd.setText(getInputTypes(tool));
+ // preDes.setText(getOutputNames(tool));
+ // postCmd.setText(tool.getToolCommand());
+ // postDes.setText(tool.getAnnouncement());
+ // } else {
+ // preCmd.setText(EMPTY_STR);
+ // preDes.setText(EMPTY_STR);
+ // postCmd.setText(EMPTY_STR);
+ // postDes.setText(EMPTY_STR);
+ // }
+ }
+ }
+
+ // private String getInputTypes(ITool t) {
+ // String s = EMPTY_STR;
+ // IInputType[] tmp = t.getInputTypes();
+ // if (tmp != null && tmp.length > 0) {
+ // IAdditionalInput[] add = tmp[0].getAdditionalInputs();
+ // if (add != null && add.length > 0)
+ // s = createList(add[0].getPaths());
+ // }
+ // return s;
+ // }
+
+ // private String getOutputNames(ITool t) {
+ // String s = EMPTY_STR;
+ // IOutputType[] tmp2 = t.getOutputTypes();
+ // if (tmp2 != null && tmp2.length > 0)
+ // s = createList(tmp2[0].getOutputNames());
+ // return s;
+ // }
+
+ // private ITool getRcbsTool(IFileInfo rcConfig) {
+ // ITool rcbsTools[] = getRcbsTools(rcConfig);
+ // ITool rcbsTool = null;
+ //
+ // if (rcbsTools != null)
+ // rcbsTool = rcbsTools[0];
+ // else {
+ // rcbsTool = rcConfig.createTool(null, rcbsToolId + "." + ManagedBuildManager.getRandomNumber(), rcbsToolName, //$NON-NLS-1$
+ // false);
+ // rcbsTool.setCustomBuildStep(true);
+ // IInputType rcbsToolInputType = rcbsTool.createInputType(null,
+ // rcbsToolInputTypeId + "." + ManagedBuildManager.getRandomNumber(), rcbsToolInputTypeName, false); //$NON-NLS-1$
+ // IAdditionalInput rcbsToolInputTypeAdditionalInput = rcbsToolInputType.createAdditionalInput(""); //$NON-NLS-1$
+ // rcbsToolInputTypeAdditionalInput.setKind(IAdditionalInput.KIND_ADDITIONAL_INPUT_DEPENDENCY);
+ // rcbsTool.createOutputType(null, rcbsToolOutputTypeId + "." + ManagedBuildManager.getRandomNumber(), //$NON-NLS-1$
+ // rcbsToolOutputTypeName, false);
+ // }
+ // return rcbsTool;
+ // }
+
+ // private ITool[] getRcbsTools(IResourceInfo rcConfig) {
+ // List list = new ArrayList<>();
+ // ITool tools[] = rcConfig.getTools();
+ //
+ // for (int i = 0; i < tools.length; i++) {
+ // ITool tool = tools[i];
+ // if (tool.getCustomBuildStep() && !tool.isExtensionElement()) {
+ // list.add(tool);
+ // }
+ // }
+ // if (list.size() != 0) {
+ // return list.toArray(new ITool[list.size()]);
+ // }
+ // return null;
+ // }
+
+ // private String createList(String[] items) {
+ // if (items == null)
+ // return ""; //$NON-NLS-1$
+ //
+ // StringBuilder path = new StringBuilder(EMPTY_STR);
+ //
+ // for (int i = 0; i < items.length; i++) {
+ // path.append(items[i]);
+ // if (i < (items.length - 1)) {
+ // path.append(PATH_SEPERATOR);
+ // }
+ // }
+ // return path.toString();
+ // }
+
+ // @Override
+ // public void performApply(ICResourceDescription src, ICResourceDescription dst) {
+ // if (page.isForProject()) {
+ // IConfiguration cfg1 = getCfg(src.getConfiguration());
+ // IConfiguration cfg2 = getCfg(dst.getConfiguration());
+ // cfg2.setPrebuildStep(cfg1.getPrebuildStep());
+ // cfg2.setPreannouncebuildStep(cfg1.getPreannouncebuildStep());
+ // cfg2.setPostbuildStep(cfg1.getPostbuildStep());
+ // cfg2.setPostannouncebuildStep(cfg1.getPostannouncebuildStep());
+ // } else {
+ // if (page.isMultiCfg()) {
+ // ICResourceDescription[] ris1 = (ICResourceDescription[]) ((ICMultiResourceDescription) src).getItems();
+ // ICResourceDescription[] ris2 = (ICResourceDescription[]) ((ICMultiResourceDescription) dst).getItems();
+ // for (int i = 0; i < ris1.length; i++)
+ // applyToFile(ris1[i], ris2[i]);
+ // } else
+ // applyToFile(src, dst);
+ // }
+ // }
+
+ // private void applyToFile(ICResourceDescription src, ICResourceDescription dst) {
+ // IFileInfo rcfg1 = (IFileInfo) getResCfg(src);
+ // IFileInfo rcfg2 = (IFileInfo) getResCfg(dst);
+ // rcfg2.setRcbsApplicability(rcfg1.getRcbsApplicability());
+ // ITool tool1 = getRcbsTool(rcfg1);
+ // ITool tool2 = getRcbsTool(rcfg2);
+ // IInputType[] ein1 = tool1.getInputTypes();
+ // IInputType[] ein2 = tool2.getInputTypes();
+ // if (valid(ein1) && valid(ein2)) {
+ // IAdditionalInput[] add1 = ein1[0].getAdditionalInputs();
+ // IAdditionalInput[] add2 = ein2[0].getAdditionalInputs();
+ // if (valid(add1) && valid(add2)) {
+ // // if (add1 != null && add2 != null && add1.length > 0 && add2.length > 0) {
+ // add2[0].setPaths(createList(add1[0].getPaths()));
+ // }
+ // }
+ // IOutputType[] tmp1 = tool1.getOutputTypes();
+ // IOutputType[] tmp2 = tool2.getOutputTypes();
+ // // if (tmp1 != null && tmp2 != null && tmp1.length > 0 && tmp2.length > 0) {
+ // if (valid(tmp1) && valid(tmp2)) {
+ // tmp2[0].setOutputNames(createList(tmp1[0].getOutputNames()));
+ // }
+ // tool2.setToolCommand(tool1.getToolCommand());
+ // tool2.setAnnouncement(tool1.getAnnouncement());
+ // }
+
+ // private int sel2app(int index) {
+ // String sel = combo.getItem(index);
+ // if (Messages.ResourceCustomBuildStepBlock_label_applicability_rule_override.equals(sel)) {
+ // return IResourceConfiguration.KIND_APPLY_RCBS_TOOL_AS_OVERRIDE;
+ // } else if (Messages.ResourceCustomBuildStepBlock_label_applicability_rule_after.equals(sel)) {
+ // return IResourceConfiguration.KIND_APPLY_RCBS_TOOL_AFTER;
+ // } else if (Messages.ResourceCustomBuildStepBlock_label_applicability_rule_before.equals(sel)) {
+ // return IResourceConfiguration.KIND_APPLY_RCBS_TOOL_BEFORE;
+ // }
+ // return IResourceConfiguration.KIND_DISABLE_RCBS_TOOL;
+ // }
+
+ // private boolean valid(Object[] arr) {
+ // return (arr != null && arr.length > 0);
+ // }
+
+ // private int app2sel(int val) {
+ // switch (val) {
+ // case IResourceConfiguration.KIND_APPLY_RCBS_TOOL_AFTER:
+ // return combo.indexOf(Messages.ResourceCustomBuildStepBlock_label_applicability_rule_after);
+ // case IResourceConfiguration.KIND_APPLY_RCBS_TOOL_BEFORE:
+ // return combo.indexOf(Messages.ResourceCustomBuildStepBlock_label_applicability_rule_before);
+ // case IResourceConfiguration.KIND_DISABLE_RCBS_TOOL:
+ // return combo.indexOf(Messages.ResourceCustomBuildStepBlock_label_applicability_rule_disable);
+ // case IResourceConfiguration.KIND_APPLY_RCBS_TOOL_AS_OVERRIDE:
+ // default:
+ // return combo.indexOf(Messages.ResourceCustomBuildStepBlock_label_applicability_rule_override);
+ // }
+ // }
+
+ // This page can be displayed for managed project only
+ // @Override
+ // public boolean canBeVisible() {
+ // if (page.isForProject() || page.isForFile()) {
+ // if (page.isMultiCfg()) {
+ // ICMultiItemsHolder mih = (ICMultiItemsHolder) getCfg();
+ // IConfiguration[] cfs = (IConfiguration[]) mih.getItems();
+ // for (int i = 0; i < cfs.length; i++) {
+ // if (cfs[i].getBuilder().isManagedBuildOn())
+ // return true;
+ // }
+ // return false;
+ // } else
+ // return getCfg().getBuilder().isManagedBuildOn();
+ // } else
+ // return false;
+ // }
+
+ @Override
+ protected void performDefaults() {
+ if (page.isForProject()) {
+ myAutoConfDesc.setPrebuildStep(EMPTY_STRING);
+ myAutoConfDesc.setPreBuildAnouncement(EMPTY_STRING);
+ myAutoConfDesc.setPostbuildStep(EMPTY_STRING);
+ myAutoConfDesc.setPostBuildAnouncement(EMPTY_STRING);
+ } else {
+ // rcfg.setRcbsApplicability(IResourceConfiguration.KIND_DISABLE_RCBS_TOOL);
+ // ITool tool = getRcbsTool(rcfg);
+ // IInputType[] ein = tool.getInputTypes();
+ // if (valid(ein)) {
+ // IAdditionalInput[] add = ein[0].getAdditionalInputs();
+ // if (valid(add))
+ // add[0].setPaths(null);
+ // }
+ // IOutputType[] tmp = tool.getOutputTypes();
+ // if (valid(tmp))
+ // tmp[0].setOutputNames(null);
+ // tool.setToolCommand(null);
+ // tool.setAnnouncement(null);
+ }
+ update();
+ }
+
+ @Override
+ protected void updateButtons() {
+ // Do nothing. No buttons to update.
+ }
+
+ private Combo setCombo(Composite c) {
+ Combo combo = new Combo(c, SWT.BORDER);
+ setupControl(combo, 1, GridData.FILL_HORIZONTAL);
+
+ combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ return combo;
+ }
+
+ private void updateComboItems() {
+ if (myAutoConfDesc == null) {
+ return;
+ }
+ Set getPrebuildStepSet = new HashSet<>();
+ Set getPreannouncebuildStepSet = new HashSet<>();
+ Set getPostbuildStepSet = new HashSet<>();
+ Set getPostannouncebuildStepSet = new HashSet<>();
+
+ if (page.isForProject()) {
+ // for (IAutoBuildConfigurationDescription cf : myAutoConfDescMap.values()) {
+ getPrebuildStepSet.add(myAutoConfDesc.getPrebuildStep());
+ getPreannouncebuildStepSet.add(myAutoConfDesc.getPreBuildAnouncement());
+ getPostbuildStepSet.add(myAutoConfDesc.getPostbuildStep());
+ getPostannouncebuildStepSet.add(myAutoConfDesc.getPostBuildAnouncement());
+ // }
+ }
+
+ if (getPrebuildStepSet.size() > 0) {
+ preCmd.removeAll();
+ preCmd.setItems(getPrebuildStepSet.toArray(new String[getPrebuildStepSet.size()]));
+ }
+ if (getPreannouncebuildStepSet.size() > 0) {
+ preDes.removeAll();
+ preDes.setItems(getPreannouncebuildStepSet.toArray(new String[getPreannouncebuildStepSet.size()]));
+ }
+ if (getPostbuildStepSet.size() > 0) {
+ postCmd.removeAll();
+ postCmd.setItems(getPostbuildStepSet.toArray(new String[getPostbuildStepSet.size()]));
+ }
+ if (getPostannouncebuildStepSet.size() > 0) {
+ postDes.removeAll();
+ postDes.setItems(getPostannouncebuildStepSet.toArray(new String[getPostannouncebuildStepSet.size()]));
+ }
+ }
+}
diff --git a/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildToolManagerTab.java b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildToolManagerTab.java
new file mode 100644
index 000000000..b06929b58
--- /dev/null
+++ b/io.sloeber.autoBuild.ui/src/io/sloeber/autoBuild/ui/tabs/BuildToolManagerTab.java
@@ -0,0 +1,230 @@
+package io.sloeber.autoBuild.ui.tabs;
+
+import java.util.Map.Entry;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import io.sloeber.autoBuild.buildTools.api.IBuildTools;
+import io.sloeber.autoBuild.buildTools.api.IBuildToolsManager;
+import io.sloeber.autoBuild.buildTools.api.IBuildToolsProvider;
+import io.sloeber.autoBuild.ui.internal.Messages;
+
+public class BuildToolManagerTab extends AbstractAutoBuildPropertyTab {
+ private static final String NEWLINE = "\n"; //$NON-NLS-1$
+ private static final String EQUAL = "="; //$NON-NLS-1$
+ private IBuildToolsManager buildToolManager = IBuildToolsManager.getDefault();
+ private boolean myIsUpdating = true;
+ private Combo myToolProviderCombo;
+ private Combo myBuildToolCombo;
+ private String myToolProviderName;
+ private Label myLabel;
+ private Button myRefreshButton;
+ DialogCompleteEvent myParentListener=null;
+
+ public BuildToolManagerTab() {
+ // nothing to do here
+ }
+
+ /**
+ *
+ * @param comp the composite to add the controls
+ * @param parentListener if not null the parent that needs to be notified if the page is
+ */
+ public void internalCreateControls(Composite comp,DialogCompleteEvent parentListener) {
+ myParentListener=parentListener;
+ int comboStyle = SWT.LEAD | SWT.READ_ONLY | SWT.DROP_DOWN | SWT.BORDER;
+ int labelSyle = SWT.LEAD;
+ int buttonStyle=SWT.LEAD|SWT.PUSH;
+ GridData controlGridData = new GridData(GridData.FILL_HORIZONTAL);
+ controlGridData.horizontalSpan = 1;
+
+ GridLayout gridlayout = new GridLayout();
+ gridlayout.numColumns = 2;
+ gridlayout.marginHeight = 5;
+ comp.setLayout(gridlayout);
+
+ Label label = new Label(comp, labelSyle);
+ label.setText(Messages.BuildToolManagerTab_readFromDisk);
+ myRefreshButton=new Button(comp, buttonStyle);
+ myRefreshButton.setText(Messages.BuildToolManagerTab_refreshTheToolChains);
+
+
+ label = new Label(comp, labelSyle);
+ label.setText(Messages.BuildToolManagerTab_ToolProviders);
+ myToolProviderCombo = new Combo(comp, comboStyle);
+
+ label = new Label(comp, labelSyle);
+ label.setText(Messages.BuildToolManagerTab_BuildTools);
+ myBuildToolCombo = new Combo(comp, comboStyle);
+
+ GridData labelGridData = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
+ labelGridData.horizontalSpan = 2;
+ myLabel = new Label(comp, SWT.LEAD | SWT.WRAP);
+ myLabel.setLayoutData(labelGridData);
+
+ myToolProviderCombo.setLayoutData(controlGridData);
+ myBuildToolCombo.setLayoutData(controlGridData);
+
+ for (IBuildToolsProvider buildToolProvider : buildToolManager.GetToolProviders(true)) {
+ myToolProviderCombo.add(buildToolProvider.getName());
+ }
+
+ myToolProviderCombo.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (myIsUpdating) {
+ return;
+ }
+ updateBuildToolsCombo();
+ }
+
+ });
+ myBuildToolCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ if (myIsUpdating) {
+ return;
+ }
+ IBuildTools buildTools=getSelecteddBuildTool();
+ if(buildTools!=null &&myAutoConfDesc!=null) {
+ myAutoConfDesc.setBuildTools(buildTools);
+ setLabelText();
+ }
+ if(myParentListener!=null) {
+ myParentListener.completeEvent(buildTools!=null);
+ }
+ }
+ });
+
+ myRefreshButton.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ buildToolManager.refreshToolchains();
+ String selected =myToolProviderCombo.getText();
+ myToolProviderCombo.removeAll();
+ for (IBuildToolsProvider buildToolProvider : buildToolManager.GetToolProviders(true)) {
+ myToolProviderCombo.add(buildToolProvider.getName());
+ }
+ myToolProviderCombo.setText(selected);
+
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ myIsUpdating = false;
+ if(myParentListener!=null) {
+ myToolProviderCombo.select(0);
+ updateBuildToolsCombo();
+ myParentListener.completeEvent(getSelecteddBuildTool()!=null);
+ }
+
+ }
+ @Override
+ public void createControls(Composite par) {
+ super.createControls(par);
+ internalCreateControls(usercomp,null);
+ }
+
+ @Override
+ protected void performDefaults() {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void updateBuildToolsCombo() {
+ myToolProviderName = myToolProviderCombo.getText();
+ IBuildToolsProvider toolProvider = buildToolManager.GetToolProviderByName(myToolProviderName);
+ myBuildToolCombo.removeAll();
+ if (toolProvider != null && toolProvider.getAllInstalledBuildTools()!=null) {
+ for (IBuildTools buildTools : toolProvider.getAllInstalledBuildTools()) {
+ myBuildToolCombo.add(buildTools.getSelectionID());
+ myBuildToolCombo.setData(buildTools.getSelectionID(), buildTools);
+ }
+ }
+ myBuildToolCombo.select(0);
+ IBuildTools buildTools = getSelecteddBuildTool();
+ if(buildTools!=null &&myAutoConfDesc!=null) {
+ myAutoConfDesc.setBuildTools(buildTools);
+ }
+ if(myParentListener!=null) {
+ myParentListener.completeEvent(buildTools!=null);
+ }
+ setLabelText();
+ }
+
+ private void setLabelText() {
+ IBuildTools buildTools=getSelecteddBuildTool();
+ if (buildTools == null) {
+ myLabel.setText(Messages.BuildToolManagerTab_NoBuildToolSelected);
+ return;
+ }
+ String description = Messages.BuildToolManagerTab_ProviderID + buildTools.getProviderID() + NEWLINE;
+ description = description + Messages.BuildToolManagerTab_MyID + buildTools.getSelectionID() + NEWLINE;
+ description = description + Messages.BuildToolManagerTab_Path + buildTools.getToolLocation() + NEWLINE;
+ description = description + Messages.BuildToolManagerTab_ToolFlavour + buildTools.getToolFlavour().toString() + NEWLINE;
+ if (buildTools.getToolVariables() == null) {
+ description = description + NEWLINE + Messages.BuildToolManagerTab_NoToolVarsProvided + NEWLINE;
+ } else {
+ description = description + NEWLINE + Messages.BuildToolManagerTab_ToolVars + NEWLINE;
+ for (Entry